Speed v2 & Heads-Up-Display

A review on the Australian App Store by user 'willnick' sparked my imagination:
Can you please add the feature to reverse the display so you can leave it on the dash and use the reflection in the windscreen as a "heads up" style display. Then it would become the perfect addition to the car.
You know… that's not half bad. I had planned to have this feature hit as a surprise with 2.0, but it's Christmas, so what the hell! Here's a sneak peek: In testing it's proved very legible and usable, and silently floats on the windscreen without being distracting. I'm currently thinking about different ways to make other subtle HUD-style mirrored applications for people who use their iPhone in the car, so watch this space! If you have any good requests, feel free to comment on this post.

On Speed, Development & Design

Speed was an app that was developed in an amazingly short time, mainly as a learning experience for creating an app and distributing it on the App Store. It wasn’t the first app I’d created at all, but it was my first foray into official distribution. I’d looked around the Location APIs for the iPhone system and had quickly realised that one could create a simple speedometer application using the GPS data. In fact, I had found an unpublished API in iPhoneOS 2.0 that made it even simpler! CLLocation had a hidden property called ‘speed’ that could tell you the instantaneous speed that the GPS receiver registered when a location was found. I originally planned to only write the app up for my own use, but then I started hearing reports of applications using unpublished APIs being accepted into the App Store. I was intrigued, as this was clearly against the guidelines. I figured I might as well submit Speed; worst case scenario is they remove this unpublished API and I had to calculate the speed myself from the location data (no biggie at all, I had written a fallback method in the application should that occur so that the user wouldn’t be affected). [sidenote -- One thing I hadn’t counted on was Apple actually making the CLLocation.speed property a public API (which they did in iPhoneOS 2.2), BUT there was one major problem. They’d broken it! Even though the API was now officially available for use, it actually gives completely out-of-whack values for the speed (a rough 1/3.616 of the actual speed). This is the reason Speed was broken for a while on 2.2, but I pushed out a 1.0.5 update to try and fix that (absolutely) obscure bug. So, it just goes to show, if you use unpublished API and even if you write a fallback mechanism in case said API goes away, Apple will still find a way to make your app break =)] Since Speed was so simple to code (merely a few lines at the beginning!) I spent more of my time working on the UI and icon. I’d decided I wanted some sort of dial on the main screen that would display the speed in a large font, so I set to work! I normally do all of my own artwork (asides for Adam Betts’ incredible art for the upcoming Lights Off - yes it’s still coming!), so I launched myself into Photoshop and made a convincing-looking dial in a few minutes. Shortly after collaborating with Adam I was browsing his website and came across an awesome wallpaper that had a stitched leather look; I tested it out and found it made a lovely-looking dashboard background to my dial, so Adam let me use it and, with that, my UI was ‘complete’. I laboured over the application icon a bit more, and didn’t actually finalize the design until version 1.0.1 of the application. Originally I attempted to use the leather image, which seemed nice in theory but soon proved to look awful on the iPhone home screen. It was the needle that influenced the design going forward, and I played around with different layouts until I finally decided upon the centered black dial. The third icon from the left is what shipped with Speed 1.0, but I wasn’t happy with it and, looking around at the Apple icons for inspiration, I finally settled on the final icon as you see it here. I’m very proud of my icon, and, in fact, so are Apple it seems! It has appeared in an O2 UK print advert and is currently shown on http://www.apple.com/iphone/ in the main graphic on that page, and there are other big things a-comin’ but I don’t think I’m allowed tell you yet! [sidenote -- Icon rule #1: never use Apple’s built-in gloss if you want to stand out Icon rule #2: consider subtle texturing to your icon’s background; “Filter” -> “Add Noise” (monochromatic) in Photoshop leaves you with a rather pretty grain effect Icon rule #3: keep it simple, stupid!] All-in-all, I’m very happy with how Speed turned out, and I can’t wait to reveal the actual Speed 2.0 to you all in the new year! I'm really thankful for all the great feedback from users, and I do listen! Please mail me or comment on this blog to actually get me to see your feedback, as it's impossible to go checking the feedback on thirty different iTunes Stores.

Lights Off - Android

Spent a spare hour or two wrestling with learning Java, but eventually got Lights Off up and running (minus the animations so far) on Android, fully playable.

We'll see where this takes me when I get my actual G1. =)

Just one pixel!

Just had a major breakthrough with a stupid API on iPhone. You see, if you set an image on a UIButton, and then rotate said button, you end up with a nasty jagged edge along the top only! This had been bothering me ever since Stack 1.0, and I'd never thought to investigate. The actual problem is the clipping rect used by the system is sharp and aliased. However, if you move your images down just a single pixel in Y, you fix it! An albeit verbose way of setting an image to a button, I used: As a result, I now have smooth icons =) NB: Jailbreak developers: For the record, do *not* use the [UIImage drawAtPoint:] API, it leaves garbage at the side of the image. Use the official drawAtPoint:blendMode:alpha: and you'll be alright. This is officially my favourite new feature in Stack v2.1.

Android Dev Phone 1

As no doubt many of you have seen, Google have released a developer version of the HTC G1 phone available to all Android developers completely unlocked and allowing unsigned firmware. I tried to order one this morning, but Ireland isn't a supported shipping country. What gives! Luckily Dallas Brown was kind enough to order one for me, so hopefully I'll get my Android Dev Hat on really soon! I gotta say, I am *really* looking forward to it.

Doom / TV-Out / Nostalgia =)

I had been watching Erica Sadun's awesome TV-Out work on the iPhone with great interest, and in my testing I decided I should have some fun. So, without further ado, here's Doom running with TV-Out enabled on an authentic monochrome Apple II monitor (yes, this is what passes for 'fun' around me). I have no idea if/when actual working TV-Out will be added to the public Doom build, but I'll see what we can come up with! -S

Speed Featured in O2-UK Print Ad

I woke up this morning to find a message in my inbox telling me one of my app icons was in the newspaper! After an afternoon of searching, I found it in The Metro on page 6. It's there, just to the left of the SMS icon on the home screen =) What tickles me is that my icon has greater prominence than Twinkle, which is one of the tiniest. Boo-yah! (I should *really* get Speed fixed for iPhone 2.2) Update: O2 have added a scan of the ad to their Flickr pool.

DOOM hits the iPhone

Zodttd and I officially declare DOOM for iPhone to be released! From zodttd.com:
Doom on the iPhone and iPod Touch, while still a work in progress, is shaping up well. It supports the retail/commercial WAD (game data) files for Doom 1 and Doom 2, assuming you provide them. Constructive feedback is greatly welcome. More detailed instructions and videos of it in action coming soon! Meanwhile, hop on Cydia and grab the "Doom" package in the "Games" section!
I've been working hard on this since March and have recently been graced in having Zodttd help out in getting the audio and final details ready for the release. We'll keep at it, so if you have any feedback feel free to contact either of us directly. -S

How to enable Emoji systemwide

As an addendum to my last post, I decided to figure out how to enable Emoji systemwide. My findings were first posted on Twitter, but I'm putting them here for persistence. You need to edit the file /User/Library/Preferences/com.apple.Preferences.plist on the device -> whether you use a jailbreak to achieve this or merely some iTunes backup editor is up to you. Add the following boolean key as 'true': KeyboardEmojiEverywhere 
Then merely go to the Keyboards section of the Settings app, hit Japanese, and turn on Emoji. Will work for any text field/view in the OS, including on websites, AND including the titles of items on SpringBoard (e.g. if you save a bookmark to the home screen).
Have fun!

Emoji in iPhone 2.2

In iPhoneOS 2.2 Apple added a feature for Japanese devices called 'Emoji' -> basically unicode smilies that can be used in SMS. The only catch is it's soft-locked to those using Softbank as a carrier. Doh! Well, if you as a developer just wanna try out the Emoji keyboard and see what they look like, try this in your code (you must already have a keyboard visible or it wont work):
UIView *_emojiKB =[[NSClassFromString(@"UIKeyboardLayoutEmoji") alloc] initWithFrame:[[NSClassFromString(@"UIKeyboard") activeKeyboard] bounds]]; [[NSClassFromString(@"UIKeyboard") activeKeyboard] addSubview:_emojiKB];


Just last night I checked out the OpeniBoot project to see how it was getting along (OpeniBoot is an open-source bootloader for iPhone whose goal is to replace the Apple-made 'iBoot' as the first thing the device boots; this will allow the booting of custom OSes like Linux in the future).
After toying around for a bit setting up the cross-compiler and hacking at the sources to build properly for me, I managed to get it running. Major props to planetbeing for his awesome work on this.
But, the default boot menu I didn't like ;-) I decided to one-up it, so this is what I came up with. If you want the source to my edit (only), it's attached here.

TC - a new Twitter application for iPhone and MacOS

Announcing TC, the ultra-simple Twitter client, inspired by Tapulous' Twinkle, for Mac and iPhone. iPhone version coming soon to an App Store near you!

Preliminary Sales Data for App Store Month 1

These aren't the official numbers yet by any means, but this is the sales data for the first 28 since I started selling on iTunes. Speed has been available for 28 days, SameGame 21, and Nuker has only been up a single day so far; total sales for each app are shown on chart: Both Speed 2.0 and an updated SameGame are getting closer to release, and I think they will offer things to please many more users. Nuker also has an upgrade path which should see it steadily improved over the next few months, so keep grabbing the apps from iTunes and show your support! Lights Off is my next major target, and I've been very slow as regards progress on it, but it's squarely in my iron sight for now and I'll try and get it finished as soon as possible. Forget what you know about the original, the new game will have some nice improvements and extras while still keeping as lean as possible. Watch this space! Those following me on Twitter will have also been subjected to many in-development screenshots of two more iPhone applications which will hopefully see the light of day soon. Both, (a Twitter client and a Tumblr client), are very simple, single-function apps like the rest of my range. SameGame's 99c sale will be ending in four days, sometime next Thursday (GMT) so if you were thinking about getting it, now is the time to do it. SameGame has *many* new things coming along the pipeline as free updates, even if it looks a little bare right now, and its regular price will be $2.99. Hope you're all enjoying, and thanks for your custom! -S

Nuker hits the App Store

Well folks, it spent many moons in review, but Nuker has finally been approved for the App Store! Go grab it now for only 99¢/79c/59p/1.19AUD, and tell your friends! In the pipeline for next update: Windows 3.x, 95, NT 3.x and NT 4.0 support. (App Store Link)

A Twitter Client

So last night I came to the realization that I didn't like *any* of the Twitter clients for Mac OS X, but instead of accepting the 'grin and bear it' mentality, I decided to write my own. "What would an ideal Twitter client be for me", I wondered. I shortly realized that I already had one, on my iPhone! Twinkle is what I've been using for the past few months, and I absolutely love the minimal but pretty UI it had. If I was going to go ahead and make a desktop client, I wanted it to look similar to Twinkle. An hour later, and I had this all up and running using Matt Gemmell's MGTwitterEngine: Sure, not bad for a first start, but not yet what I wanted. I had decided to use the WebKit rendering engine for the app's UI, as it allowed really quick layout and design with maximum extensibility. But I soon knew I wanted more than the default WebKit gives, so I investigated the WebKit nightlies mainly for their gradient support. Very soon, I had an app with an embedded nightly WebKit (after a big of install_name_tool hacking!), and extended the design until it looked like this: As expected, links and usernames are clickable and will open up in Safari; using HTML, CSS and JavaScript I'm able to make some very nice effects and I use the WebScriptObject methods to allow my WebKit-rendered UI to interact fully with the application code, allowing the user to click on any tweet to start an @reply to said tweet. What I have to sort out next is direct messaging, and image uploading support (uploading directly to TwitPic from the app). Anyway, that's just a quick glimpse as to what I'm working on; I haven't decided whether I will release this or not yet, but I've had a significant number of requests, so I'll look into it. Until then, pretty pictures will have to do! =]

MacBook Pro: Development Platform Update

My new MBP finally arrived yesterday evening, so here are some of the usual 'brand new' pictures of it =) This is my new development platform, moving from MacBook Air, and I'm very excited about the OpenCL and graphics possibilities it will open me to in Snow Leopard development. More pics on Flickr, click any of the images to jump. -S

Using Dynamic Library Injection with the iPhone Simulator

UPDATE: This method no longer works for iPhone OS SDK 2.2 - please see my new article for an updated method. Many developers who are not targeting the App Store are developing extensions or plugins to SpringBoard, the iPhone's shell, using a piece of software called MobileSubstrate which simplifies the loading of your own code into SpringBoard. But, for development and debugging purposes, this takes valuable time as each time you build your plugin you have to delete the old version from the phone, sign your plugin, push the new version to the phone, and restart SpringBoard. All these steps take a little time off your life, but if you have access to the iPhone Simulator included with the SDK things are a bit easier! You can set up automatic loading of your dynamic library by replacing the SpringBoard binary with a shell script and passing the DYLD_INSERT_LIBRARIES option to the original SpringBoard with the path to your library, or if you want a quick once-off test, you can use gdb as below: • Run the iPhone Simulator • Get the PID of the running SpringBoard • Use gdb to attach to said PID • Use the following gdb commands to load your code
     call (int)dlopen("/path/to/MyPlugin.dylib", 2)
Your code should now inject itself into SpringBoard on the iPhone Simulator so you can test on the desktop, take screenshots, check for leaks, or merely stress test your application against the different builds of the iPhone OS (the Simulator allows version switching on the fly). For me, I find this very useful (I use the DYLD_INSERT_LIBRARIES method) so that I can iterate very quickly when developing Stack. You can also get the console output from SpringBoard by launching the iPhone Simulator from Terminal, so for debugging it's very important. Hope this post may be of some use. -S

Puzzllotto Non-US Version?

An interesting rumor floated its way to me today regarding Puzzllotto…

I'm told United Lemur are gearing up a version of Puzzllotto for sale outside the US in the next few days, which won't have the monetary prize because of legal reasons. Similarly, the name will be "Lemur Puzzle" (no lotto this time!).

I can't of course verify all this, but if it's true then the race is on! Will the U.S. be the first to complete the game? Or does the rest of the world have a fighting chance, even with America's head-start?

I think it will be very interesting to see what happens…


Android 1.0 Source Release + Notes

Just pulled and compiled the Android 1.0 source and have it running in the emulator; took just over an hour to compile here for the entire system (minus WebKit - see below), and I can't imagine any OS compiling that fast =) WebKit is as of now timing out when you go and try to download the source. If you really want to compile Android without WebKit, here's how (you should have already followed the steps on the project site to set up the code):
• "repo sync" until it complains about not being able to download WebKit
• Edit your _androiddir_/.repo/manifest.xml and find the 'webkit' part. Remove from to for WebKit, and save.
• "repo sync" (everything should download)
• Run 'make' when all the code is unpacked. This will compile everything and make the disk images to run in the emulator from the Android 1.0 SDK.
• IMPORTANT: Run your EXISTING 1.0 SDK (the one downloaded from the project site), and use adb to pull out /system/lib/libwebcore.so (adb pull /system/lib/libwebcore.so ~/libwebcore.so)
• Copy your _androiddir_/out/target/product/generic/*.img to the location of the Android SDK disk images (_sdkdir_/tools/lib/images) - backup the SDK images first!
• IMPORTANT: Run the SDK emulator now and it should auto-load your compiled disk images. Now use "adb remount"  then "adb push ~/libwebcore.so /system/lib/libwebcore.so"
• Your compiled Android 1.0 should now boot to the desktop
(You will need to perform the remount & push every time you run the emulator, for reference)

TextGuru 1.1 Preview

I'm going to be all naughty here and show off some of the awesome improvements in TextGuru 1.1 (which has yet to be announced). • Proper file/folder management • Quick file sharing • A full FTP client • Web file downloading TextGuru is a truly powerful app, and expect to see more cool features soon! Keep an eye on http://brancipater.com/.


Well as of now I have a lot of projects going on! I am readying Speed 2.0 for the App Store, finishing Lights Off, coding up Stack 2.0.1, designing something special for TextGuru, and have submitted two more applications to the App Store! There's hardly time to breathe with all this, but even so I'm taking on new projects - something top secret right now, so can't talk about it =) Also, need to schedule some proper time with Zodttd to finally finish Doom and release it (Cydia). I'll have more info in the coming weeks as things slot into place, but until then, if you want to help out you can buy Speed on the App Store for a mere 99c! Thanks to everyone putting up with me -S

Speed v2.0

Speed v2.0 is coming to the App Store for $1.99 and will be much improved, with a top-secret new UI and awesome features. If you liked the original, you'll be blown away by 2.0. As a special promotion, I'm offering the current version of Speed for 99¢ to assist funding the future versions, but if you buy now for 99¢ then you'll receive all future versions at no extra charge! All existing users need not apply =) Also I'm making sure Speed is more accurate than ever, and the screenshot below (not showing the top secret UI) is there to prove it; all units will offer at least one place of decimals, and there's an average speed function too.

United Lemur and Puzzllotto

Mike Lee launched United Lemur today with a special event and live webcast; there are many awesome facets to this company so please check out the site at http://www.unitedlemur.org. Their first application for iPhone is a lickably gorgeous game called Puzzllotto: "The ancients spoke of an eighth continent—a dark, forbidding place, with forests so thick the eye strains to see other than green. The night air was filled with the anguished cries of the damned, while large, amber-hued eyes stared menacingly from the inscrutable canopy. Morning broke on sleepless night, revealing a hastily scattered camp site. As the shore receded over the horizon, the relief of narrow escape gave way to gnawing curiosity. What mysteries, what treasure, were the ghosts guarding so jealously? Puzzllotto transports you to this enigmatic world, inviting exploration and discovery, in the spirit of great puzzle games like Zork and Myst. Greet a friendly lemur while pondering the graceful, fluttering arcs of giant butterflies, but beware the wily Fosa! Make your way through the jungle, beautifully rendered by artist David Lanham (Iconfactory). Immerse yourself in the multilayered soundscape, recorded on location in Madagascar by Dr. Douglas Quin (Spore). Only when you are one with the island will it reveal its secrets." It looks great, so I suggest you check out http://www.puzzllotto.com/.

Stack v2.0.1 Positioning

Some power users have requested the ability to position the Stack as they like, and in 2.0.1 I intend to give you that option. As it stands, I haven't decided whether it will be a GUI-configurable option, but I will certainly allow the positioning to be edited in the Stack preferences file (/User/Library/Preferences/com.steventroughtonsmith.stack.plist). Hope this will please those whom were asking!

HowTo: Reset your Stack Icons to Default

Have had a few e-mails from people saying they have icons in their Stack that they cannot remove; fear not o loyal users! You can easily reset the Stack entries list to the default by deleting the file at: /User/Library/Preferences/com.steventroughtonsmith.stack.entries.plist This can be useful if you've ended up with some empty, blank white icons in Stack. -S

Stack v2.0.1 Display Style Preference

Yes people, I do listen =)

Rendering into a UIImage

Ok, since this is a very useful piece of code for myself, I'm going to share it with you all. In Cocoa on the desktop, you can draw whatever you like into an NSImage very easily:
[myImage lockFocus]; // draw [myImage unlockFocus];
However, coming to Cocoa Touch on iPhone, without searching around a bit you won't find a way to do this. Well, thanks to Sam Steele (of Last.fm infamy), here's a code snippet which will do the exact same thing for you! Yes it's all in the docs, but takes a bit of looking to find.
UIGraphicsBeginImageContext(CGMakeSize(64.0f, 64.0f)); /* Put any sort of drawing code here */ [anImage drawAtPoint:CGPointZero]; [aView drawRect:CGRectMake(0.0f, 0.0f, 64.0f, 64.0f)]; UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();
Hopefully this will help some budding iPhone developers out there.

Stack v2.0.1 Initial Work

Have done some initial work on the next revision of Stack, so here's a shot to show you what's different. • It now supports dynamic icons (i.e. Calendar) • Smoothed out fan animation • Moved settings icon and improved hit detection

The NDA Rescinded: A Joyous Day

Can't say much more than this =)

Stack v2.0.0 : The Aftermath

Stack 2.0 went up on Cydia yesterday and has been a phenomenal success, racking up thousands of downloads so far. The reaction has been almost completely positive, though there have been two reports of people wrecking their setup and needing to restore because they used Poof and/or Categories and somehow they managed to crash it bringing the system down. For all intents and purposes, while 16,998 out of 17,000 downloaders seem to have had no issues, I'll have to issue a caution against using Stack, Poof and Categories together until more information has been gleaned. Regarding the future, and updates! Stack v2.0.1 • Last minute before release I had to disable the adding of WebClip icons to Stack as it was something I hadn't thought about when designing the system, and my faithful testers had come up against issues. What I forgot to do was add a block against non-fully-downloaded applications from the App Store, so until I have a fix out please don't drag any icons but application icons to Stack. • I do plan on having the stack display more customizable, for the many users who prefer to not have a stack of icons in their Button Bar. I'll figure something out in this regard. • I intend also to add a little more visual contrast to the fan view in Stack, as currently it can get confusing. Most likely I will add a shadow of some sort to differentiate the floating icons from the other icons in SpringBoard. Stack v2.0.2 and beyond • Regarding future releases, I know many of you are looking for 5-icon-dock support, and that is something I cannot promise at this point in time. I'm working on it, but it's not going to be happening anytime soon. • I do plan on making dragging items out of Stack a little more user-friendly, so that you won't do it by accident. • Hopefully I'll be able to add the rearrangement of items in Stack, and support for more than sixteen icons. • In the far future I hope to make Stack a fully independent SpringBoard icon, which can be dragged and wiggled to your heart's content and will act just like any other icon in SpringBoard. That will finally fix the overlapping issue. • I do *not* plan on making Stack remove icons from SpringBoard. That's not a safe thing to do, and there's no fallback if you uninstall Stack. If you really wish to hide your icons, I recommend using Poof by BigBoss, as it seems to work well.

Lego Mac!

Since some people like this sort of thing, here's my Lego® Mac (built from an 800MHz Titanium PowerBook G4). The screen was snapped off its hinges, so I took it apart. I wish I had access to some sort of plastic molding plant, because I'd make an awesome tablet out of this with some nice curves! Please excuse the messy desk =)

Lights Off Ported to Cappuccino!

So I decided to check out Cappuccino now that it's released, and to get the swing of it I thought I might as well port the Lights Off code to it as a semi-promotion before the App Store release of Lights Off. Of course, I haven't included the rest of the game, themes, features, but the core game is there and playable! Cappuccino was a dream to work with, I could literally port the Cocoa Touch code in a couple hours - and I have ZERO Javascript experience! In fact, it worked out so well that the 280 North / Cappuccino team have blogged about it! Check it out on their site. If you're interested in checking out a web development framework and are a Cocoa developer, by all means check out Cappuccino and Objective-J. You will be pleasantly surprised.

Adobe: Announcing Photoshop CS4

It's done, and I think you'll really like this release. I've been using it for the past 8 months and it really is brilliant, even if the new UI has taken a little getting used to; however the old UI is still available from the menu so don't fret! The canvas is drawn using OpenGL and takes full advantage of the GPU.

Stack v2 is DONE!

Well, the day has finally arrived; Stack v2.0 has been completed and is almost ready for release. Stack is one of my oldest, and undoubtedly most successful, iPhone endeavours and is one I'm particularly proud of. I bought an iPod touch the day they were launched back in '07, and as soon as I could I began developing software for it. Looking at the design back then, the Button Bar (or Dock) on the iPod touch looked similar to that in Mac OS X 'Leopard' , and near instantly the idea popped into my head: why not recreate 'Stacks' on iPhone OS? I played around with it in my head, as I knew it would be pretty simple to pull off visually as all 'Stacks' did was translate an icon in y and rotate it - dead simple to do with CoreAnimation. Pretty soon I had a demo version up and running and it looked great! Complexity soon set in. I had to create a seperate application to manage the settings of Stack (singular, as there currently is only one Stack onscreen at a time ;-) ), and Stack itself originally modified the Button Bar icon list and placed a blank icon behind where the Stack should be. On top of that, Stack had to run on launch as an application displaying above SpringBoard. Former users might recall that adding items to Stack was a messy, convoluted process involving XML editing and restarting the Stack application. Similarly, the original had reported issues of being unable to install, and I never developed it past iPhone OS 1.1.2, leaving many users stuck. Then came the iPhone SDK, and iPhone OS 2.0, and it was exalted. But, for Stack, it meant DOOM. iPhone OS 2.0 prevents any application from running above SpringBoard and drawing a UI to the screen, and any such attempts equalled a nasty crash. For a long time I thought Stack was dead, undoable for 2.0. For a long time, I was wrong =). Dynamic Library Injection was its saviour. Basically, it means that the Stack code could be *injected* into Springboard, and actually run as part of SpringBoard. Thanks go to Nate True without whom I wouldn't have figured this all out. But wait, there's more! Since I was now part of SpringBoard, I had full access to add everything I had dreamed about adding to Stack v1 but never found a way to. With a bit of ingenuity, I was able to detect the dragging of SpringBoard icons and dynamically add items to Stack with but drag & drop. I was also able to pick up on WinterBoard themes, the #1 requested feature before v2. To seal the deal, I added the ability to drag-remove any item in Stack, replete with the familiar Mac 'poof' animation; a puff of smoke. Where before Stack was a complex, power-user tool to set up and manage, it is now a user-friendly, drop-dead simple tool. I couldn't be happier with the results, and I'm proud to announce that it will be freely available next week from Ste Packaging in Cydia. A big thanks to all whom have e-mailed me over the past months, and I hope you all enjoy Stack v2! -S

Lights Off + Animations

Got the old animations implemented, using the same sequences as the original. Still have things to fix up first, but it's looking good. Thanks go to Craig Hockenberry [and Lucas Newman] for sharing the old code.

Nuker v2.0 source posted to GoogleCode

The latest source for Nuker has been posted to the GoogleCode project site, if you fancy checking it out do so. It should build for the iPhone Simulator with the public iPhone SDK, and for device for those so inclined.

Most beautiful Apple product ever

Jony Ive must be a really proud man right now. The new iPod is only matched in its beauty by its OS, which has been heavily tweaked and made more gorgeous than ever. Spoken menus are a welcome addition, as is the lightning-fast (iPhone-speed) CoverFlow implementation. But exteriorly iPod nano in it's silver/black incarnation is incredible; curved glass screen, black top and bottom, really responsive click-wheel, and a vibrant display. Now all I need is for some kind soul to donate me the brand new iPod touch for development work =D

iPhone Development is fun

Asides from developer backlash at Apple for draconian regulations and anti-competitive tactics, and a certain NDA, developing for iPhone is quite a lot of fun. Looking back at all the stuff I've worked on and/or contributed to recently: • Doom for iPhone • TextGuru (with Pater and Francis of Brancipater software) • NES for iPhone (with NerveGas / Jonathan Zdziarski) • Gameboy for iPhone (with Zodttd) • SNES for iPhone (with Zodttd) • An iPhone VNC Server (with Saurik / Jay Freeman) • My own creations : Speed, Nuker, Lights Off, SameGame • Rewrote Stack completely for iPhone 2.0 • Testing and UI design for Last.fm (with c99koder / Sam Steele) • Redesigning and other stuff for Sam Steele's other secret upcoming apps ;-) • img3decrypt - a modified tool based on the pwnagetool sources to decrypt img3 files I find myself having great fun and getting to know the most amazing people in developer circles, and big names I look up to myself. So, amidst all this App Store drama, I have to say thank you to Apple. Thanks for making a platform that inspires me.

Speed -> Future! (Please comment on this post)

While I won't post any teaser screenshots yet, I can give you a peek at what is coming in the next version of Speed on the App Store: • Max Speed • Average Speed • Altitude • GPS Co-ordinates That's just so far! But I want to hear from you; leave here in the comments the feature or features you really really want to see in Speed, and I'll see what I can do about adding them to the free application. With your input, hopefully Speed can become the most useful free speedometer on the store. -S

Doom + iControlPad?

I've been looking into the iControlPad for quite a while, and I'm really hoping to get a developer kit so I can start adding control pad support to Doom and other projects. If you haven't seen this yet - they're working on a frame that you set your iPhone/iPod into and it provides the standard gaming controls: a D Pad, shoulder buttons, start/select, and A, B, X, Y buttons. For serious gaming on the iPhone such controls are going to be truly awesome as we go forward, and I encourage everyone to support the iControlPad effort. The prototypes are coming along very nicely, and the renderings show a quality product. I honestly can't wait to get my coding on!


I'm unpredictable when I'm bored. Last night I spent diving around the depths of a jailbroken iPod and getting the iPod's hardware crypto engine to spit me out decrypt keys so I could investigate the iPhone OS 2.x RAM disks and firmware. Bold, perhaps. But useful as a developer as you can see exactly where everything is in the system and what it can do or not, and class-dump is a useful ally if you're making yourself some internal applications that don't adhere to the SDK license. So don't kill me for being curious =) That led me to this simple little project : http://code.google.com/p/img3decrypt/ It does nothing except decrypt a given encrypted img3 file with an IV and a Key you pass into it. You have to know the IV and Key for each img3 file, which is something I can't help you with. I did also create a version of the tool that works against unencrypted img3 files (i.e. the 2.0 betas), but there's no need for me to release it. Was just a one line change in the source. img3decrypt is based upon 'imagetool.c' in the xpwn source code, and is literally a drop-in replacement (it won't compile by itself, you need the xpwn source). Today I took the time to investigate the MobileTerminal source code, and with some clevery hackery I managed to port it to the iPhone SDK / Simulator, as seen below. Not very useful, I admit. But it's still sweet to see running =)

All In A Day's Work

Today I worked pretty hard on getting Stack running as it should, and I'm pretty happy with the results. You can drag icons from SpringBoard onto the Stack, you can launch applications from Stack, and you can drag items out of Stack to remove them from it, complete with the 'poof' animation familiar to Mac users. Stack also supports WinterBoard theming, so it will pick up your current theme's icons with no extra hassle. The rest of my day was spent poking around other iPhone projects. I managed to get Zodttd's iPhoneSNES emulator up and running through the SDK, before I found out that it has no input support yet, so all I can do is watch the intro movie of Final Fantasy 6 (that's III for you American folks). A quick bitching session at Jonathan Zdziarski (NerveGas) in IRC about the blurriness of graphics in his NES emulator sent me into code fixing mode - luckily the first and single line I added: A - removed the interpolation (blurriness), and B - massively sped up the emulation! (For those of you wondering, it was a simple [CALayer setMagnificationFilter:0] call I added, after [rightly] assuming it sounded like it would work) The updated version is available now from Cydia from what I can tell. For now, boredom sets in…

Stack for 2.0

Looks like Stack will be coming to 2.0 [jailbroken] after all =) Consider this a teaser…

Android Nuker

With the release of the new Android SDK I decided to test it out, and port my Nuker application to it just to see if I could manage it. Developer wise, the SDK has a long way to go before it's anywhere near as graceful as the iPhone SDK, and of course you can't reuse any C code you might have in your other projects, only Java. That makes things awkward, but not insurmountable. So after a brief session in IRC this is what I came up with: When you compare to the iPhone version, the major difference is the lack of on-screen keyboard in Android; a hardware keyboard seems to be required.

"An interview with the creators of of Doom for iPhone"

Back in May I was approached by Jonny Evans, a reporter for Cnet, who was interested in questioning us on our port of Doom to the original jailbroken iPhones. Stephen White (of iPhoneNES fame, among other things) and I were maintaining the open-source project on Googlecode, with SW being the original porter of Doom, back when there was no control system implemented and it was only a proof of concept. He did the meat of the 'porting', whereas I took over when he got bored. Of course, nearly all of SW's work needed to be rewritten and redesigned for 2.0, and I moved to the latest iDoom code (1.3 as of this writing) which has given our Doom port a solid foundation for the future. The following were our responses to Jonny's questions:
Q: How has the iPhone inspired developers? ST-S: The iPhone runs OS X. It's a full UNIX system in your pocket, with brilliant Objective-C frameworks that make coding beautiful AND powerful applications a dawdle. It takes a lot of the same APIs that developers know and love on Mac OS X and allows them to build applications for a mobile device with minimal re-learning. Not only that but it has the multi-touch technology only a year ago we were watching "futuristic" YouTube videos about (e.g. Jeff Han's demos). A lot of Windows developers I've talked to have either learnt Objective-C and Cocoa Touch, or expressed an interest in doing so, just to see what they can do on iPhone, which also means that those same people are now able to program for Mac OS X without too much effort. SW: It's interesting to me for a couple of reasons. The first is I am forced to throw out a lot of what I already know as it's not applicable on the platform. Where I might've used a menu before, I can't. Where I might've made a window that necessitated a 30" LCD to display everything, I can't. In a lot of respects, it's going back to square one in thinking of how I would design an application -- and that is a nice mental challenge that I appreciate. However despite having to throw out a lot of my knowledge, the iPhone provides so much ease for the developers in terms of it's APIs it's a pleasure to work with. And then there is the input methods. Thinking of how multi touch can be best used, or a way to utilize the accelerometers... It provides great challenges, and great rewards. Q: Tell us about the port - why did you decide to do it? ST-S: Looking at the hardware specs, I knew iPhone would be able to play a simple game like Doom no problem as it was open-source and already ran on the click-wheel iPod running Linux. I knew a very talented developer called SWhite with whom I work on Mac projects, and as he'd just bought himself an iPhone and was working with the unofficial tool-chain I jokingly told him he had one week to port Doom to iPhone, and all it had to do was run; he didn't have to implement controls. One week later, he proudly linked me to his Doom port home page - http://iphonedoom.googlecode.com/. It remained difficult to work upon due to problems with the unofficial compiler toolchain I had set up (causing non-working versions of the game) but with the release of Apple's SDK it was trivial to get Doom running on iPhone 2.0. Q: How many people have downloaded the port so far? ST-S: The first build of Doom hit near 15,000 downloads on the project site alone, even without a way to control the game. Once controller input had been included (thanks to a contributer on the project wiki) that version received  over 25,000 downloads. For a project so unfinished and barely playable, that's an awful lot of people testing it out. It's quite possible that there are many more downloads than reported, but for now we only concentrate on Google's project stats. Q: What do you see as the future for iPhone development? ST-S: I hope to see Apple opening their SDK a little more than it is currently, allowing a little more access to parts of the system necessary to create specialized applications for enterprises and such. Our current port of Doom would currently be rejected by Apple if we were to submit it to the iTunes App Store because we use certain APIs for accelerated drawing that are marked as "private". Before submission, we will have to rewrite portions of it to only use documented APIs; most probably moving to OpenGL/ES for the video output. SW: I'd imagine a number of people will transition over to the SDK, either to make it easier to reach the masses, or to try and cash in (so to speak, don't mean that in a "you sold out" manner, but just the ability to easily collect money). Q: With the iPhone SDK, can you foresee Jailbroken phones and apps losing importance? ST-S: Yes, certainly, but it will take some time, as Apple only allow access to a handful of the APIs on the iPhone to an official developer through the SDK. Some applications need more direct access to the underlying iPhone OS, for example command-line access to the system (always useful to those who know a UNIX shell), or AppleShare/Samba servers for copying files to/from iPhone over the network from PC or Mac. Until iPhone ships unlocked there will still be people needing to Jailbreak the phone to save themselves from some of the miserable tariffs offered by the official operators. SW: I'd still see jailbroken phones being around, obviously... people are going to want to sim unlock, or run apps that Apple won't distribute through the app store, etc. Q: How popular do you think iPhone will become? ST-S: iPhone marries Apple's popular image and brand excellence with the most powerful and fun to use operating system on mobile devices. The possibility of having Apple's latest iPod also do all your phone and internet in one place is going to be very attractive. Everyone who plays with one wants one, and that alone puts it far ahead of any of the Windows Mobile devices or Nokia smartphones on the market. Here in Ireland, official sales have been slow, merely because anyone who wanted an iPhone had already procured one from the U.S. before the Irish launch. I'm afraid Apple might only see the numbers and assume that the Irish aren't interested - however that is far from the case. The only problem thus far are the tariffs, once we have a fully unlocked iPhone available sales will skyrocket. SW: It's hard for me to say. I live minutes from Apple, I see iPhones all the time =)

My Favourite iPhone Icons

I took a few mins to snap up a list of the only icons on the App Store that I like. Note that for most of these they're getting very high ratings as well, so it stands to reason that a good icon implies you have a good and thoughtful app design which will endear users to your app.

Speed in Six Days

Just a quick update, total downloads are ~36,000. It's going good! And there's yet another update just waiting for Apple to post it =)

Lights Off 2.0 UI Preview

Well, gotta counteract all the buzz from Speed by showcasing what's coming next, so here's a quick snapshot of Lights Off and what to expect. We're keeping the finer points close to our chests, but I hope you like it so far. =) -S