Featured in the Irish Times - Part 2!

Managed to get a proper scanned copy of the article so you can see it as intended, and I also managed to take a one-in-a-million shot with my iPhone on the bus home - neat! (As you can see, the article was pretty big)

Featured in the Irish Times

The Irish Times (our national newspaper) have a well-written article about me in today's edition, with a great photograph. =)

Announcing The Lights Off Website!

Now that development is finally drawing to a close, I've coded up the website for Lights Off based on Adam Betts' designs. I hope you like it! I'm very proud as to how this project has turned out, website and all, and I can't wait 'till you can all go and check out Lights Off on the App Store. I encourage everyone to spread the word, tell everyone you can! =) UPDATE: The mobile version of the site is now live!

Using Dynamic Library Injection with the iPhone Simulator [REDUX]

Previously I had blogged about developing dynamic libraries / SpringBoard plugins using the iPhone Simulator included with the SDK.

Unfortunately, starting with iPhone OS 2.2, the old method of using a shell script to bootstrap SpringBoard no longer works. While the long-way-round gdb method is still usable, I decided that I'd have to find a way to make my plugins work again.

I devised a simple 'Foundation Tool' to bootstrap as before, in place of my previous shell script. The code is available here.

I'm not sure what the issue is, whether it was an intentional obfuscation or not (I'm watching you Apple!), but I can confirm that this new method works fine.

Simply edit the source file linked above, compile it, rename your original SpringBoard binary to something else ("SpringBoard_b" in the example) and save your newly compiled bootstrapper in place of the original SpringBoard binary.

Now when you launch iPhone Simulator, it should insert your library as before, so you can get your quick development turn around time back.

The Story Behind Lights Off & SameGame

One day mid-July I was chatting with a good developer friend of mine, and he mentioned he'd quickly whipped up the engine for a SameGame clone, and that he wanted to work with me on it. I was interested, I'd never heard of SameGame before, and wondered how he wrote the tile-based engine. I made some quick graphics in Photoshop and set to work making his engine look like an iPhone application. We worked on it for a couple weeks together, but eventually he lost interest due to other pressures and work-related issues, so I was allowed do what I wanted with the code. I played around, rewrote bits, and kept it exercised! In the meanwhile, I sorely missed the old 'Lights Off' from the days before the App Store when iPhone was still a new platform. Lucas (the original programmer) had been hired by Apple, and I figured that would be the end of it; no more development. Inspired, I looked back at the SameGame engine and realized that I could adapt this and make a new version of Lights Off! Within hours I had made a demonstrable semi-working clone of the original, so I e-mailed Lucas and Adam Betts (the original artist) about it, with a copy of the app. Lucas, unfortunately, wasn't too interested, but Adam was really excited about working on my version, a 'V2' as it were. Adam worked with me for months creating artwork for the game, while I laboured at the code. Eventually, I reached a point where the original engine wouldn't cut it, and I rewrote it all using Core Animation layers. Adam came back with some awesome-looking mockups, with a rich settings UI with a custom-looking Tab Bar. Concept Art: I had no idea how easy it would be to make it a reality, or even if it was possible within the SDK guidelines, but I promised myself I'd get as close as I could. Both of us had University get in the way, and the months rolled by without me getting anywhere near a release, writing and rewriting everything over and over as I learned new tricks and tried to optimize performance. I managed to write up Speed in a day or so, mainly to test the App Store procedures and figure out how everything worked so that I would be better prepared for the release of Lights Off. As Speed grew popular, and I submitted my contracts to allow me to sell items on the Store, I realized that I still had SameGame lying dormant on my hard disk. Realizing my mistake, I submitted SameGame to the store to see how it fared (SameGame is currently making up 13.6% of my revenue). Now, finally, an embarrassing 175 days after I started coding Lights Off, I have called time on the first release and submitted it to the App Store. I did have to shelve some features until the next update (or else I never would have finished it), but I'm confident it's a great game as-is. That it will get even better in the very near future is immaterial. Lights Off will be available in all territories for the low price of $1.99 (€1.59 or £1.19) as soon as Apple approve it, and requires iPhone OS 2.2. Thanks to everyone who's been waiting, especially Adam, and I hope you like it! P.S. SameGame is going to get a massive upgrade very soon incorporating the new engine from Lights Off and some killer additions. I can't wait to show you!

Stack v2.1 Released & General Warning

STE kindly released Stack 2.1 today, and it should be available in Cydia to all. Do remember that the preferences are now found inside Settings.app. WARNING: I have been told that having 'Extended Preferences' installed will prevent the Stack settings from showing up in the Settings application. Simply disable that in Winterboard and you'll be alright. NB: When changing the position preference, currently you have to tap the Stack (to open/close it) before it will move to the new location. This was a last minute thing due to some SpringBoard bugs, and I hope to have an update after next week that will fix it and add some more new features. Cheers S UPDATE: For those with problems after uninstalling Extended Preferences, do try deleting the /User/Library/Preferences/com.steventroughtonsmith.stack.* files to start afresh with Stack.

On Icon Design

A lot of iPhone developers seem to think that an app's icon should be a scaled down image or highly detailed graphic of some sort, possibly taken from their desktop app. I, albeit having little design sense, think that's the wrong approach. To me, an icon is about representing what your application does in the fewest amount of shapes. Some developers in the store must think the same way I do, as I've found some of the best apps have the simplest icons. For example, the Speed icon consists of three shapes -> a roundrect, a circle and a round-bottomed-triangle (excuse my terminology). Even in black and white you can see how it resembles a dashboard speedometer. I'm not saying that my icon is good (I let Apple do that for me), but it's better than a lot of the crud. Another great icon is that of Things, the to-do list / project management application. It again uses roughly three shapes -> the roundrect, an inner square (or roundrect, depending on how you look at it) and the tick mark. I admit, for some applications it becomes very hard to define in terms of shapes, but it's hard to deny that the simpler icons look best. I'd like to see more application developers thinking about their icon instead of slapping something together and saying "that'll do". There are over ten thousand applications, and a mere handful with icons that don't suck. I'd really like to see that change as iPhone development matures.

Speed featured at MacWorld SF '09

Got linked to an image on AppleInsider showing my Speed icon on a 30ft billboard at the Apple booth at MWSF! Somebody at Apple sure likes my icon! A similar image is on www.apple.com/iphone

Encyclopedia for iPhone

Patrick Collison has asked me to join him in his iPhone development work, namely 'Encyclopedia', the offline Wikipedia application. It's early days yet, but I'm looking forward to working together. Watch this space!

Stack v2.1

I've sent Stack v2.1 off to Shaun (STE) for packaging and release, so we'll see it available on Cydia soon, assuming it passes his testing. I've updated the Stack project website, but here are the new features: • Adjustable Stack Position (bottom right / center are currently the only options, more coming soon!) • Uninstalled apps are now handled properly (no white icons left in the Stack!) • Smoother Fan Animation • Aliased (jagged) edges on icons are now smooth • Calendar icon now displays properly, and updates in line with the current date • Settings are available in Settings.app • Icon hit-rects have been improved, meaning it's a lot easier to tap items at the top of the Stack Now, there are a few features I'd been working on that I've pulled from this release: • Shadow behind the Stack - it's coming soon, but I had some last minute issues • Dynamic positioning - yes, you'll be able to move the Stack anywhere in the Button Bar that you like! Soon! • Display Option, Single Icon or Cascaded Icons - I had it mostly coded, but in the interest of time I've pulled it from this release My New Year's Resolution is to manage my projects better, and this means more updates! As I finish the features, I will push the updates to you through Cydia. Hopefully no more long waits! So, Happy New Year everyone, and keep at me for updates! I get distracted easily =)