Archive

Archive for the ‘XBlaze’ Category

Xblaze for Adium 1.1.5

January 4th, 2012 Jasarien No comments

Hi guys,

I’m not dead. Yet.

A quick update for Xblaze for Adium. I just recompiled with the latest Adium source so it should work once more. Nothing else new, really.

Go grab it: https://xblaze.co.uk/blog/download/

Categories: Programming, Releases, XBlaze Tags:

Xblaze For Mac OS X 1.1.2

February 19th, 2010 Jasarien 2 comments

Just a quick bug fix. 1.1.2 fixes an issue that would cause friends that were both a friend and a clan member to fall out of the Xfire group when a new friend was added.

Categories: Releases, XBlaze Tags: ,

Xblaze for Mac OS X 1.1.1

February 11th, 2010 Jasarien No comments

Just posted up Xblaze for Mac 1.1.1.

  • Fixes the issue where friends of friends would be moved to the offline group when they stop playing instead of removed from the list.
  • Fixes the issue where offline clan members were nowhere to be seen. Offline clan members can be found in the offline group now.

Go grab it from the XBlaze for Mac OS X page.

Categories: Releases, XBlaze Tags:

Let The Releases Flow!

February 1st, 2010 Jasarien No comments

Hot on the heels of Xblaze iPhone 1.1 is Xblaze for Mac 1.1.

That’s right folks, again, I promised you that I would merge the changes I made to the Xblaze iPhone source back into the Mac version. That is now done and you can download Xblaze for Mac with clan support and less crashes than ever!

Head on over to the Xblaze for Mac OS X page and hit up the download link!

Why Push Notifications Are Unlikely To Be Added

January 25th, 2010 Jasarien 3 comments

One of the biggest features requested so far has been Push Notification support for Xblaze iPhone. The premise:

When a user quits the app, instead of being logged out of Xfire right then, the user would stay logged in and receive push notifications when new messages arrive.

There are a few problems with implementing this feature, some technical, some legal.

First the technical limitations.

Some people may not fully understand how push notifications work. So here’s a quick overview.

Simplified APNS Diagram

Simplified Apple Push Noficiation Service Diagram

There are 5 major components:

  1. The provider (In this case, Xfire)
  2. The notification (The new message)
  3. Apple’s Push Notification Service
  4. The user’s unique iPhone
  5. The Client Application (Xblaze)

For push notifications to work, the provider needs to know about the iPhone, and it’s UDID (Unique Device Identifier). Without knowing the UDID of the iPhone, there’s no way to get a notification from the server to the iPhone. If the Xfire could know your iPhones UDID, it would be able to create a notification and ‘push’ it to your device. But there is no way for Xfire to know your iPhone’s UDID.

So, the first technical difficulty is that there is absolutely no way to get Xfire to generate a push notification from its root server or no way to get it from the sercver to your iPhone. They’re not going to implement it, and we don’t have any access or control to make one ourselves. To get around this, we could set up a relay server that would maintain the Xfire Session and communicate between the Xfire server and the Client, and register the iPhone for push notifications (using its UDID).

Something like this (I don’t have time to make a pretty diagram):

Xblaze Sends UDID to relay server,
Relay Server receives message from Xfire,
Relay Server forwards message to Xblaze via push notification.

Unfortunately it’s not quite as simple as just setting up the relay server and carrying on. The relay server would require that all of the communication between Xblaze and Xfire go through this server. That includes logging in, sending/receiving messages, adding friends, retrieving game info, etc.,  etc.

It would be a massive undertaking and would probably require writing a complete implementation of the Xfire server itself so that it could proxy everything that the Xfire server does.

Once again, this is very unlikely to occur as the entire Xfire protocol is still yet to be documented, which large chunks still being undefined. In order to implement the entire server, we’d need to know exactly how everything worked…

Then, after spending the huge amount of time it would take to write and test the server, there’s the logistics of finding somewhere to host it, pay for it, maintain the health of the server, not to mention the cost of the server hardware. Also the server would have to be able to cope with accommodating thousands of Xfire users. This is not something that can be lightly thrown around as a “nice to have” feature.

Then even if someone did spend all the time, effort and money on writing this hypothetical relay server, they wouldn’t be allowed to use it anyway, which brings me on to the legality of this issue.

The Xfire Terms and Conditions specifically state (Emphasis mine):

You may not authorize any third party to access or use the Service on your behalf using any automated process such as a robot (or ‘bot’), a spider or periodic caching of information stored by the Service on your behalf, without a separate written agreement with Xfire.

It is against Xfire’s Terms and Conditions to implement such a server, and it would breach your agreement with Xfire if you used a service that relayed your connection.

Xblaze and other 3rd party Xfire clients are already treading a very fine line in terms of legality, because they’re only made possible by reverse engineering the Xfire protocol. If at any moment Xfire decided that they wanted to pursue the issue of reverse engineering, they could send a cease and desist order to all 3rd party Xfire clients, and make them stop working – or they could change the protocol and lock everyone out.

If Xblaze received a C&D order from Xfire, I would have no choice but to comply, as I am technically in breach of the Terms and Conditions, as is every other 3rd party Xfire client developer.

I’m hoping it will never come to that though, but I don’t think implementing any kind of push notification support is feasible. Possible: maybe, feasible: not right now.

To Clarify A Few Points About Jailbreaking iPhones

January 23rd, 2010 Jasarien No comments

I’ve received a few emails asking why apps crash more often on Jailbroken iPhones. So I’ve collected my thoughts and written down a number of reasons why Jailbreaking is a pretty bad idea.

  • Jailbreaking Allows Background Apps
    • Extra strain on the CPU
    • Extra drain on the battery
    • Heavy consumption of available RAM
    • Usage of your data connections (this might incur costs that you’re not aware of if you’re not on an unlimited data plan)
    • It’s impossible to know what the background apps are doing, if they request more resources and can’t get them because Xblaze is using the available RAM, maybe they’re written to kill other apps and take the memory for itself? No-one knows, except the developer of that app, and since Apple don’t approve these apps, they could be doing exactly that.

This reason alone is suspect enough to be a big cause of concern for people running Jailbroken iPhones. People forget that the iPhone is a mobile device, because it is so capable. It’s important to remember that the iPhone does have a very small amount of RAM compared to laptops and other computers. The iPhone was not designed to run many apps at the same time – this is why Apple restrict it to one 3rd part app at any time. They didn’t do it just to annoy people…

If there are several apps consuming vast amounts of RAM already running on the device (this include ssh servers, themes for springboard, notification apps, etc) then what hope does a legitimate app such as Xblaze have of surviving? Those not familiar with the iPhone SDK and how the iPhone works, may not know that the iPhone OS will kill an app if the device starts to run low on memory. Non official apps may be able to be coded in ways that ignore these warnings, forcing the OS to kill the legitimate apps that can’t ignore these warnings.

The result is that Xblaze will simply quit if there are low memory conditions on the iPhone it is running on, and since Xblaze only consumes a mere 4MB of RAM while running, the jailbroken iPhone would have to be using almost all the RAM before Xblaze is even started, which is actually quite likely considering some jailbroken apps such as themes that are rich in graphics and sounds.

  • Modified Frameworks
    • Changes the expected behaviour of the iPhone so that a legitimate app will crash while trying to access a function or class that has been modified by anyone but Apple.
    • May cause the app to not even launch if the required APIs aren’t available at launch time.

When writing an iPhone app, a developer is given a set of Frameworks which allow them to access the iPhone’s functionalities, user interfaces, etc. Think of them as hand grips on a climbing wall. You need them to hold onto to be able to reach the top. If you tried to grab as hand grip and it wasn’t there, you’d fall. This is exactly the kind of thing that can happen to an application that relies on a framework being in the state that it was originally in when released by Apple. Changing these frameworks simply breaks any app that requires them. And once again, since it’s impossible to know which frameworks have been changed or how they’ve been changed, developers simply can’t program their app to work in that environment.

  • Inter-Process Access
    • Jailbreaking an iPhone removes all restrictions. One app may be able to access the insides of another app.

If any malicious apps decide to snoop around the memory space of a legitimate app, anything could happen, ranging from the app crashing, due to memory corruption, to having something like your password and personal details stolen… Is that something you’re willing to risk? All restrictions are removed on a jailbroken iPhone – if you’re checking your online banking through Safari, what is stopping any malicious app from stealing your account details and forwarding them on to identity thieves? Are you happy with the possibility that your xfire password may not be safe when running Xblaze on a jailbroken iPhone, because there’s nothing I can do to protect it if it is. On a legitimate iPhone, Xblaze stores your password, encrypted using an SHA1 encryption algorithm, safely inside the iPhone’s Keychain (the same way passwords are stored safely on Mac OS X). The keychain can be accessed freely by any application when running on a jailbroken iPhone… Consider it carefully.

Unfortunately, due to the shady nature of jailbreaking iPhone devices, it is impossible to say whether any of this is 100% accurate, but I know I’d rather err on the side of safety, stability and security when it comes to my personal data, my entertainment and my overall mobile experience…

The truth to the question “Why does jailbreaking cause more crashes than normal?” is that I simply don’t know. If I knew, I’d be able to prevent it…

Categories: Programming, XBlaze Tags: , , , jailbreak, ,

Xblaze 1.0.3

November 8th, 2009 Jasarien 5 comments

Xblaze 1.0.3 is available on the download page. Go grab it.

New in this version:

  • Fixed a bug that prevented Xblaze from connecting when Adium starts if you check the “Connect when Adium opens” option.
  • Fixed an issue where Friends of Friends were randomly bring shown in the contact list. Current solution is to not show any friends of friends at all. A friends of friends solution will be worked out in a later release.

Xblaze 1.0.2

November 7th, 2009 Jasarien 6 comments

Hey guys. Another late night, 04:57am right now…

Xblaze 1.0.2 has just been uploaded and is ready for download.

New in this version:

  • Contact list has been optimised – should build and update much faster than previously.
  • Server info is now shown if available in the tooltip for contacts.

Also, I have fixed the issue in the forums that prevented people from posting new topics, so remember, if you have any issues, e-mail me or post in the forum and I’ll get back to you.

Categories: XBlaze Tags:

Xblaze 1.0.1

November 7th, 2009 Jasarien No comments

Hey guys, just a heads up that Xblaze 1.0.1 is up on the downloads page. Go grab it!

  • Xblaze will now show typing notifications when your friends are typing, and send typing notifications to your friends when you are typing.
  • Plugged a few minor memory leaks

Burning The Midnight Oil

November 6th, 2009 Jasarien No comments

It’s 5:08am. I’ve just committed the typing notifications code to SVN. Sleeeepy.

I’ll release an update tomorrow at some point that will include the typing notifications support.

The incoming typing notes, (those that tell you who’s typing), were simple. A few short lines of code and they were working. But the outgoing typing notes, (those that tell your friends when you’re typing), were a lot more involved. The MacFire library didn’t have a packet to represent a typing notification, so I had to write one before writing the logic to send it.

I also learned something a little odd about the way Xfire handles typing notifications. According to all the documentation I’ve read about the Xfire protocol, the typing notification packet is the same packet that contains messages and message acknowledgments. The difference between these packets is the data structure within, their IDs are all the same. With that said, the typing notification packet contains a field aptly named ‘typing’ which represents an integer.
The documentation says this is treated like a boolean, 1 for typing, 0 for not typing. So my initial inclination was to send the packet with a 1 when a user is typing, and then again with a 0 when they finish typing.
I was wrong. This caused the typing notification to keep being displayed even after a message was sent. My only guess is that Xfire (for Windows) ignores this boolean value, and just assumes that any typing note packet that arrives means that the user is typing… Either that, or the field isn’t intended to be used as a boolean. We shall most likely never know.

Good night.