As you know, O2 shut down their legacy MMS service following a newly discovered security hole and I have had to adapt O2mms to work with the new service… why has it taken so long I hear you ask?
Well first the non-techie explanation;
I’ve taken advantage of the O2 downtime to re-write the O2mms app from the ground up to improve performance and expand it’s capabilities with a view to it becoming a native application… and it’ll be back this week!
The new modular design makes it easier to provide more features in the future - including video support and (hopefully) automatic MMS to eMail.
I could have restored the original service quicker - but with the new version so close, it seemed pointless to waste time hacking the old one to make it work
Now the technical one;
The old application used the excellent iUI library to allow pages to be loaded asynchronously but the underlying application was split between 4 or 5 files, all of which opened connections to the O2 servers every time a message was requested.
The application has been re-written from the ground up and now uses the extremely lightweight JSON protocol to communicate with the client-side app running on your iPhone - the end result is that the application is far faster. This JSON API will also allow other applications (think native!) to communicate with my service.
Additionally caching of messages has been implemented, preventing the need to make multiple calls to O2’s servers within a single session - improving performance for all users and reducing the chances of O2 becoming annoyed at the increasing use of my app!
The new modular design makes it easier to provide more features in the future which will include handling multiple formats (not just JPEG/GIF) and also the potential to integrate with other protocols (think IMAP)
Thanks to all my users for their continued support and patience.
MobileMe is an excellent service, but has been criticised by a few for not implementing true ‘push’ functionality when you make changes on your mac … e.g. if you add a new appointment in iCal, it could take up to 15 mins to update your MobileMe account (and therefore your iPhone)
The following is a (not particularly ideal, just a quick hack) bash script that provides a quick workaround and allows my phone to stay up to date almost instantly
#!/bin/bash
OLD=`ls -laR ~/Library/Calendars/ | md5`;
while [ 1 == 1 ]; do
COMPARE=`ls -laR ~/Library/Calendars/ | md5`;
if [ $OLD != $COMPARE ]; then
/System/Library/PrivateFrameworks/DotMacSyncManager.framework/Resources/dotmacsyncclient --sync com.apple.DotMacSync --entitynames com.apple.calendars.Attendee,com.apple.calendars.AudioAlarm,com.apple.calendars.CalDAVAccount,com.apple.calendars.Calendar,com.apple.calendars.CalendarOrder,com.apple.calendars.DisplayAlarm,com.apple.calendars.Event,com.apple.calendars.MailAlarm,com.apple.calendars.Organizer,com.apple.calendars.Recurrence,com.apple.calendars.Task,com.apple.contacts.CalendarURI,com.apple.ical.calendars.DotMacPublisher,com.apple.ical.calendars.Invitation,com.apple.ical.calendars.Node,com.apple.ical.calendars.ProcAlarm,com.apple.ical.calendars.RootNode,com.apple.ical.calendars.TaskOrder,com.apple.ical.calendars.URLPublisher;
OLD=$COMPARE;
fi;
sleep 10;
done
Edit: let me stress this is FAR from ideal, calling the md5 function every 10 seconds has to be one of the daftest ways to implement this but it *does* work and for the use i needed it for the additional load is irrelevant

Well the iPhone 3G is here, as is version 2.0 of the iPhone firmware in the hands of the masses.
At the moment my popular O2MMS application is still a web-app with no immediate plans to bring it to the app store until it can offer something that the web app currently cant (sending MMS for instance!)
However, I was looking forward to improving the web application with a number of features that Apple have touted as being great for web developers in the new iPhone - namely fullscreen mode (which allows the app to run without the safari navigation and address bar - making it feel far more like a native app) and client-side storage (which theoretically would allow the app to store your MMS messages so they could be viewed without a network connection)
Unfortunately, Apple have not included this functionality in the currently shipping version of iPhone OS 2.0
Really annoying that Apple have promoted the way of making fullscreen apps, then not actually put it in the firmware!!
<meta name="apple-touch-fullscreen"
content="YES (but it might as well say no for now)" />
I was asked recently by someone to investigate the security offered by obfuscation scripts such as the one at http://www.rightscripts.com/phpencode (also available as a paid-for download)
Obviously anything which relies on PHP itself to ‘encode’ the script, must have the means of decryption built into the script - if it doesn’t then it wouldn’t run.
Around 5 lines of code later, and you have this … http://www.iross.net/phpdecode … a simple proof of concept which reverses the code generated by http://www.rightscripts.com/phpencode (and one or two other sites that work in a similar way)
So is there any way to really secure your PHP code? Yes, systems such as IonCube or the ByteCode encoder which require a ‘loader’ to be installed on the server are substantially more secure as the code is compiled rather than just obfuscated - these provide a secure option
Of course, all my own freelance web development clients get the source code without any sort of obfuscation - since they have paid for it!
It’s been almost three months since the O2 MMS iPhone application moved to donation-ware.
I must say the outcome has slightly restored my faith in the shareware model
As of now there are 2,015 registered users of which 470 have donated, a 23% conversion rate.
The O2 MMS application has handled an incredible 12,700 MMS messages since launch
I gather anonymous statistics only (and obviously don’t go reading peoples MMS messages!) but one thing that I did implement out of curiosity was a checksum to see how many images were identical (e.g. forwarded MMS messages) - interestingly one image has recurred over 73 times around Christmas. Sadly, unless someone sends it to *me* i’ll never know what it was
Before anyone’s concerned that this actually compares their photos - it doesnt! - The checksum is based on MD5 so it is impossible to reconstruct original images from the 32 character string it generates, it’s just very unlikely that two images could generate the same checksum so it’s good for random facts like that 
- February 12th, 2007
- 2:08 pm
Ever since blogger upgraded, their new RSS format “broke” FeedWordPress which I use regularly. (At first I thought it was just me but no, others have noticed it)
It would pull in titles and dates from the blogger.com blog but not any actual content (which isn’t tremendously useful). The fix is relatively simple but does involve modifying a PHP file in your wordpress installation.
Edit the file /wp-content/plugins/feedwordpress.php in your favourite text editor and scroll to around line 1,987 (it’s a big file) and add the following bit of code in there;
elseif (isset($item['atom_content'])) :
$content = $item['atom_content'];
So that section of the file should now look like this;
# Identify content and sanitize it.
# ---------------------------------
if (isset($item['xhtml']['body'])) :
$content = $item['xhtml']['body'];
elseif (isset($item['xhtml']['div'])) :
$content = $item['xhtml']['div'];
elseif (isset($item['atom_content'])) :
$content = $item['atom_content'];
elseif (isset($item['content']['encoded']) and $item['content']['encoded']):
$content = $item['content']['encoded'];
else:
$content = $item['description'];
endif;
That’s it. Should work fine now, although you will need to re-run update-feeds.
Hope this helps someone out there.
- January 2nd, 2006
- 6:40 am
It becomes mildly worrying when you start finding articles you wrote appearing on other websites (irritating when these other websites intersperse your article with adverts) but it seems that these sites cloning my content without my permission have become an asset.
Most of the original articles I wrote in 2004 on iRoss.net regarding such things as Caching and Innovative uses for libgd etc, are all available on other websites.
I plan to slowly try and retrieve these over the coming months and reformat them for this site as it’s clear that a number of people have got some use from them, I’d rather they read them from here - straight from the horse’s mouth as it were.
- November 14th, 2005
- 3:50 am

“Most websites are designed to be looked at on computer screens, and when printed either don’t fit properly on the page, are cluttered with adverts, navigation or just otherwise don’t look right.
We realise that the information on our site may at times be helpful on paper, especially when comparing prices or specifications. That’s why every page on that JustMac website is designed to print perfectly, without you having to do anything.”
An extract from the Guide to the new JustMac site which I have recently rebuilt.
Many people print webpages, this can be seen by the “printable version” links that appear everywhere these days on everything from tutorials and news sites to individual’s blogs. There is clearly a demand for nicely formatted printed pages.
There’s a far easier way of doing this however. Find out at Pretty In Print - CSS Styles for Printing
- November 14th, 2005
- 3:45 am
Shameless self promotion again, the new JustMac website is now live at http://www.justmac.co.uk/ with all sorts of nice bells and whistles. You might also like to have a look at what’s in the works for future versions of the site.
Again, anyone who has any useful feedback or comments PLEASE eMail me 
- November 2nd, 2005
- 8:24 pm

Despite vowing NOT to do it again because I freely admit I’m not that great at it, it would appear I’m building websites again for some odd reason. Admittedly this one’s for the shop so it doesnt count, anyway a nice small PNG preview image is available to your right (click it, it gets bigger - like everything else around here really) that hopefully doesnt give too much away so if it doesnt end up looking like that it doesnt matter too much…
Anyone who wants to help beta test / bug find on this - please let me know, ta 