Soundtrack of my 2017


Music played a big part of my life in 2017. Well it does most years, but it felt more impactful (I had no idea that impactful isn’t a real word but I’m keeping it) this year when compared to others. Not only are there new album releases from my favorite bands, but I also got to see some bands live for the first, and sadly also last, time. The other thing that “impacted” my music appreciation this year was finally falling into the vinyl record trap I knew would snare me hard. I’m not an obsessive audiophile but I do appreciate listening to music loud, and the format is a perfect fit for my home listening habits.

This year I made my first mix tapes in over a decade for an ex-partner to share with her my favorite music, and I really enjoyed the process. So while reflecting on 2017 this past year I decided to make a Spotify playlist of my favorite music from the year. The playlist is embedded below or open it directly on Spotify. I also made a YouTube playlist for those without Spotify and put that below.

Scroll below and click CONTINUE READING to read some reasoning behind my selections.

Click CONTINUE READING to read some reasoning behind my selections.

Continue reading

2017: All’s Well That Ends


“The weight of the world doesn’t hurt my back like it used to. You could say the pain reminds me I’m alive.”
– Sun in My Eyes by Lucky Boys Confusion

What. A. Year. It seemed that almost everyday the headlines were less than ideal. Stories ranged from our man-child President’s tweeting us to the brink of war, talks of treason at the highest level of our government, the largest mass shooting in US history, multiple hurricanes that devastated our states and territories, not to mention wildfires that won’t stop burning. The news was “bad” almost every day, many days I woke up wanting to simply go back to sleep after reading the news.

Outside the daily news my personal struggles were not great either, and bad news always seemed to come when I hit a new high. I had a job that was no longer creatively fulfilling, almost lost my cats to a poison, plus I suffered from a broken heart and back. My back injury was so serious I lived and worked from floor of my living room for almost a month while healing. All of the above is why I felt that the quote above was so fitting and it is easily my favorite song of 2017.

Despite the negatives, the more I think about this past year the more I feel that I’ll look back on this year and only see the points of bright light in the sea of darkness.

For instance, this year of politics has been fairly disappointing and even scary at times. But now I see people everywhere banding together and volunteering to resist some things our government is trying to do by giving the people a louder voice. I got the itch to do the same and earlier this year I helped out the 5 Calls project by assisting in the development of their iOS app. Personally I never have felt more proud of a tool I worked on because it gives people a louder voice. The team has a lot of great plans for 2018 and I can’t wait to dive in and help out more.

This fall I also found a new job that I love, making iOS apps for ParkWhiz. Just before the holiday we shipped a massive new redesign of the app that I am very proud of. It was remarkable given our team size how much we got done in a short amount of time. Plus now our customers have an even better experience to make parking easier. This project also sets us up for a great starting place for 2018 and I can’t wait to get back to work after the holiday break.

I can’t forget to mention the brightest moment of 2017, which also simultaneously was the darkest moment for about 2.5 minutes. Of course I’m speaking about the August 2017 total solar eclipse. My friend and I ventured down to Carbondale’s Southern Illinois University to witness this first in my lifetime opportunity and I don’t regret it one bit. Seeing the glistening totality, even though a bit of a cloud, while the entire 360 degrees of horizon around was a sunset was an irreplaceable experience. I am already charting out plans for the next North American total solar eclipse in 2024.

So all in all I feel I am closing the book on 2017 on an optimistic note and thusly believe I will look back on this year positively. I have already laid out some big goals for myself in 2018. Those goals include writing and building more things in my spare time as a way to exercise my creativity as I explained in my earlier post yesterday. My first big project for 2018 is to finish updating an old iOS game of mine.

… but I am sure glad this year is over.

Lets try this writing thing again…


I used to love writing but don’t do it often anymore, and am now way out of practice. There was an itch that I had most of this year about sharing my thoughts and feelings, but I just could not scratch it.

Recently inspiration hit in the form of a quote I read from Dave Grohl in Rolling Stone on the creation of Concrete and Gold (one of my favorite albums of 2017):

“I don’t think I was inspired at first, I just felt like I was creatively atrophied and had to start to exercise in order to wake the muscle up.”

Dave said he was “creatively atrophied” and that explained so well what I was feeling. Unsure of my writing skills being rusty, I started writing more privately, and I enjoyed it. So after a lot of reflection on myself and my desires I have decided to start again for 2018. My rule will be to post at least one blog post a month.

I wanted to get up and running fast so I moved over to a hosted WordPress blog for its flexibility over my old Tumblr blog, of which you can find here in the archive.

So what will I be writing about? I think the best answer is: anything. I wanted to be able to talk about anything that fascinates me without having to stick to a theme. So you could see posts about software development, cooking, technology, history of Chicago, video games, cats or even some random works of fiction.

In addition to writing more, I am trying to build some new personal habits in my personal life, and may write about them if I find anything useful as well.

So stay tuned, as there will be more to come.

Making an iOS Powered MAME Arcade Machine


One of the “perks” of being an iPhone application developer has always been an excellent excuse to upgrade to the latest and greatest iPhone. As I write this on Friday I am actually waiting for my iPhone 5 to be delivered. Getting every device is useful and almost a requirement in order to test your applications on it.

But what you do with these devices as time goes on and they become increasingly obsolete? Some people sell them, others hand them down to family, but I typically keep them around for testing as well as nostalgia. They have come in handy over the years for various different things as well, like when I used them for time lapse cameras for the big Chicago snow storm of 2011. But they start to pile up and collect now after five years.

Yes… I may have a problem

Early this year I bought a new CRT monitor for my dedicated Mortal Kombat 2 arcade machine. It needed to be done because of bad burn in, and arcade CRTs are becoming increasingly rarer by the day. The monitor I bought is a Tri-mode monitor that not only supports the standard arcade resolutions (CGA and EGA) but it also supports VGA and comes with a standard VGA connector and adapter for JAMMA pins as well. This got me thinking, maybe I’ll build a MAME machine instead of running all the hardware required to run the five games switchable that I run in it today.

So, when starting to plan the MAME machine my initial plans were to use an older Mac Mini. But when I was putting together what turned out to be a pretty extensive parts list, I got to thinking: “Why can’t I just repurpose an old iOS device for this?”

It turns out, I can and I did…

How did I do it, you may ask? Here’s a breakdown of what I did if you too want to try to do the same with your arcade cabinet.


Here is a list of parts you’ll need and some price estimates.

Basically if you have an arcade cabinet with a monitor that’ll display VGA+ signals and an old iPhone like I did, then you can likely do this project for as little as $100.


I decided the optimal way to connect the video is to use the Apple iPad VGA adapter which works with any device with an A4 or higher processor. So that means I can use an iPhone 4, iPhone 4S, any iPad and the newest iPod Touch models. You can also use the Apple HDMI cable if your monitor has an HDMI input.

Choose Your Destiny

The video is the most important part, because without it you can’t do the rest of it. So before I did anything I built a simple app to test video modes on my arcade monitor. I found it returns that it supports more resolutions beyond VGA, but in fact it doesn’t. But it successfully works at 640×480 as I found in my testing.

It’s Resolution Baby

For my purposes this solution is more than adequate. A proper MAME setup can also get to the lower CGA or EGA resolutions, but for my monitor being analog it’s best to keep it on one resolution so this is not ideal and still looks great to me.


As far as controls go, this was the one I thought about the most. There are a few options, but even less for non jailbroken iOS devices. So I settled on going with the iCade method of making the iOS software think it’s a Bluetooth keyboard. I did this by… using an iCade.

iCade – The key to this project

I owned an iCade from the first day they were available, it makes for a great iPad stand and also a fun way to play some classic games which are making their way to the platform more and more. But I didn’t want to open it up and ruin it. So I searched online to see what the wiring system looked like, and I was pleasantly surprised to see it uses standard arcade control cherry switches. Which meant, transplanting it’s guts into my arcade machine would be fairly easy.

I opted to buy a second iCade to use for this, because I’d like to make it a permanent fixture in my home. I found one used on eBay for $40 shipped and jumped on it. I’ve also seen others go for as low as $20 at times as well.

So once I got it home I began to pull it apart to take what I needed to transplant to make the iCade work with my existing arcade control panel. Below are a few photos, it’s fairly straight forward and took a matter of minutes so I wont waste words explaining how to take it apart. Keep in mind I did find you’d need a security torx bit to get it open, but these are fairly commonly found at hardware stores now.

iCade Inside Out

Standard Quick Disconnects

No Quick Disconnects, Easily Resolved

iCade’s PCB

PCB plus wiring ready to go

Here is the end result of the iCade transplanted into my arcade control panel.

One downfall with using an iCade is that it’s a one player only device. So my two player capable arcade machine is not being used optimally, no going head to head in Mortal Kombat and no teaming up together in The Simpsons Arcade Game. I am going to look into building a custom Bluetooth controller using an Arduino, or similar, that would work similarly to the iCade but also support two or more players.


At first I wasn’t going to do anything for audio. My iPad 3 which I was initially using in the process was quite loud enough that it was as loud as the arcade machine. But when I moved back to the iPhone 4 which will likely be the sole device I use for this, I found it’s speaker quite limiting.

The arcade cabinet is only mono so only had two connections for one speaker to hook up to the iPhone. So I grabbed a few spare headphone and RCA cables I had around, did some cutting and then hooked on two alligator clips which I use to connect to the speaker. Here’s the finished cable.

Made cable long to reach the cabinet speaker wire in the back

It’s all rather simple, if you can hook up arcade controls you can also hook up a speaker.


Power is one of the things that is really an unique to this setup. An iPhone device has very little drain compared to a desktop computer or even the five arcade PCBs that took two PC power supplies to run that had in there. Also the iCade runs off of two AA batteries as well, or an optional power brick. The way I set it all up today actually has no direct power draw from the wall at all. I ripped out the iCade’s battery compartment to keep things simple for now.

Couldn’t find my Dremel, so I used a drill.

The only major issue I have right now is that the VGA adapter blocks the power connector of the iPhone. So when I’m not playing, I keep the iPhone plugged into power. In my testing, iMAME can run for about 2.5 hours on my iPhone 4 without interruption so this is adequate for my purposes but not ideal.

Carefully chosen case for matching red trim

In the future I’ll be researching a way to keep the iPhone powered without blocking the VGA port. Apple’s own HDMI output solved this issue, so it’s possible, but I need to build or hack the existing cable to solve this problem.


As I said earlier, no jailbreaking is required for my solution. But for others this may be difficult without jailbreaking. The MAME project, and by extension the iMAME4All projects by Seleuco, are all open source so any developer can build them with little work and without jailbreaking.

iOS developers are best to start with lesbird’s iMAME for Xcode, much easier to get up and running from there. I have notice some performance problems with my builds, and I’m looking into that and readying the project for iOS 6. I will likely be releasing that update on this Github project sometime soon now that iOS 6 has been released.

Also if you are not a developer and happened to download the iMAME that was availble on the AppStore like I did, then you don’t need to jailbreak your device. Otherwise if you are jailbroken, both iMAME4All and newer iMAME4iOS are available on Cydia.

It’s important to note that the MAME4All that iMAME4All is based off of a source fork of MAME that is around 10 years old now. It’s done like this because it runs things much faster on older hardware, but suffers because of a lack of compatibility and accuracy. But for most games, it works perfectly fine. Seleuco also ported a newer source build of MAME into the iMAME4iOS project. It needs much beefier hardware to run the games, but has a much greater compatibility. I’ll likely be moving to this build in the future.



I’m also not 100% happy with how iMAME works with the arcade cabinet and the iCade, and this is something I am looking forward to improving since it is open source. I haven’t had the time yet but I have a few ideas. One idea I had is to make a whole new interface, here is a mockup below:

Besides some software, power and possible control enhancements I’ve been wanting to do, there was another idea that was sprung from this project. What if you were to take a third party console arcade stick, toss in an iCade and an iPhone dock. Then using AirPlay Mirroring or the HDMI adapter, you could then turn that arcade stick into a portable arcade machine that hooks up to any modern TV. Why settle for playing these games on your iPad with an iCade, when you can hook it up to your 55" HDTV in your living room?

Now to find some spare time to make a proof of concept of this idea. Lucky for me this is another project where I have all the parts required to see it through.

If you have any questions you can contact me via email or Tumblr’s “Ask me a question” via the links on the right side of the page. I’ll try to get to them in a timely manner to get you on your way.

Words Play: Reflections on Game Center’s Turn Based APIs


When we at Stand Alone set out to create Words Play we wanted to create a word game with a better user experience than what was out there on iOS already. We wanted it to be faster, more responsive and tailored to iOS as well. Then we added unique features to set us apart like word lookup, turn history, pass and play, achievements and AI play. We felt we could make what we felt was a great well rounded turn by turn word game, and I think we got pretty close to that goal with our latest update that came out this past week where we added a multiplayer chat feature as well as cleaning up the application UX a bit.

Another advantage of being on iOS was Words Play could take advantage of iOS 5’s newest Game Center Turn by Turn APIs. Using these APIs it affords us a game that could be run without needing to run a costly server infrastructure to handle the matchmaking and turn by turn handling. The turn by turn API and its backing server architecture is a nice benefit Apple provides developers of their platform that most other platforms do not even begin to offer. Running a server can be difficult and very costly, and we were happy to see Apple attempt to fill this need with a popular genre of games that run on their platform.

While we continued building the app and getting more intimate with the new Turn Based APIs we found it all very lacking. We feel now that it needs some work to really become a full on replacement for running your own services. From strange usability issues, lack of server data analysis tools, or just plain odd architecture decisions. Below you will find a list of our top issues (with linked bug reports) that we discovered over the past six months as well as a brief description on how that impacted our design. If these issues were to be solved it would dramatically improve Game Center for the better.

The purpose of me bringing up these issues is not to bitch and complain, but to inform other developers and hopefully get some attention to these issues. I actually see the value and potential in Game Center and I want to see Apple improve it. I’d love to see it become a killer-feature for the platform instead of what it is today. So we’re hoping that Apple will make strides to improve these issues in both iOS 6 and the upcoming Mac OS Mountain Lion which brings the Mac Game Center support.

Bug: Game Center turn based games can’t programmatically invite
rdar://11144951OpenRadar Link
This is a big one, we find it amazing that inviting or rematching players is not supported still. The API to do it is all there, just doesn’t work at all. There are numerous complaints about this on the Apple Developer Forums and my radar is far from the first, yet the problem still exists and that’s really disappointing. So instead of a simple one button press for a rematch the user is forced to perform just shy of 10 taps to setup a rematch. See the image flow below, this could be much better as the bottom half of the image shows.

Enhancement Request: Fix the Game Center Turn Based menu flow
rdar://11144972OpenRadar Link
This is a bit related to the previous bug, but still feel both points are important. The overall flow and design of the Game Center screens is hard to use for users. It’s so hard that we’re currently exploring having adding a first timer tutorial on how to use the menus, and that’s not right. Apple can do better.

Enhancement Request: Allow Filter/Sort for Game Center Turn Based Friend Invite List
rdar://11144995OpenRadar Link
Once you get to the list of Game Center friends to invite to a game you are presented with a list of all your friends with no clear indication if they have the game you are also playing. The list should be sorted or allow straight filtered out if they don’t have the game you want to play them in.

Enhancement Request: Game Center Turn Based Notifications should show as game in use
rdar://11145004OpenRadar Link
This is almost a bug and an enhancement request, it’s a fine line really. When you get turn based notifications they come across as from Game Center, not the game you are playing, but if you have Game Center turned off in Notification Center then you wont get these notifications at all. We see this a lot with players not sure why they aren’t being told it’s their turn if Words Play is enabled in Notification Center.

Bug: Game Center reporting incorrect dates in lastTurnDate
rdar://10660917OpenRadar Link
This one is really unfortunate. We found this bug a while ago, and it still isn’t fixed. Basically in the turn data that Game Center sends back and forth between users there is a lastTurnDate. This date is being set by the DEVICE not the server. So because we can’t trust this date to be accurate, because users can change their devices dates, it’s pretty much useless when comparing if a turn is new or not.

Enhancement Request: Game Center Turn Based Analysis Tool
rdar://11145026OpenRadar Link
When debugging game issues with customers it’d be super handy to check the server to see what data a user’s game is passing back and forth. There is no way to do this since Apple owns the servers, but they could provide us an interface to that turn data. We’d love them if they created that tool for us!

Enhancement Request: Game Center should be able to Find Social Network Friends
rdar://11145019OpenRadar Link
Let people who have linked Twitter find their Twitter friends on Game Center. And if Apple ever adds Facebook support to the OS, allow Facebook as well. Customers don’t understand why our game doesn’t do this because we can’t do this with Game Center as it stands today.

Enhancement Request: Game Center Message/Chat Functionality
rdar://11145031OpenRadar Link
Communicating between Game Center users doesn’t exist, but on most game platforms (Xbox Live, PlayStation Network, Steam, etc) there is a way to send your friends messages. This would be great feature to be built into Game Center as well and I’m sure almost all games would rather run this off of Apple’s infrastructure instead of rolling their own, and this would help spread Game Center adoption across games even more so than Turn by Turn.

McCarron’s iOS 5 Feature Wishlist


With today’s official announcement of iOS 5 being unveiled next week at WWDC I figured it was time to write up my wishlist for iOS 5 features that I had been noting for the last few months. Due to it’s size I decided to break down the list into two categories: what I want as an iOS user and what I want as an iOS developer. I don’t expect a lot of the ideas to actually make it into iOS 5, but this is more of what I would finally like to see.

iOS Developer In Me Wants:

  • Garbage Collection — With iOS 5 rumored not to be available on the 3GS and WebKit getting heap compaction support I don’t think it’s too far fetched to see iOS 5 finally gaining garage collection with iOS 5. Is it required? No but it’d be a nice thing to have from a developer standpoint.
  • OpenCL — Like Garbage Collection I expect OpenCL to eventually come to iOS. Since the SGX543 in the Apple A5 processor is rumored to support OpenCL, I think to unlock it’s potential with iOS 5 is pretty much a given at this point.
  • Cloud Sync of user data — There is almost nothing known about iCloud at this point, but from a developer standpoint I’d love to see the ability to sync user Application data like saved games, preferences, etc. much like Valve’s Steam Cloud feature. As a user I’d also love this as I frequently switch between multiple devices around my house, and in some cases I’d love data thats on one device to be on all of them.
  • Widgets — I think it’s time we see Apple’s implentation of Widgets on iOS which was rumored to have been even planned as far back as iPhone OS 1.0. Simple HTML only apps running on the latest WebKit enhancements would be very fast and slick on iOS. There have been lots of great examples have been popping up over the past few weeks, and I think this implementation by Color Monkey is one of the best I’ve seen with the ability to mix them in with the App icons and Groups.
  • Easier App Ratings — I think it’s clear that users need an easier way for users to discover how to rate an app. Right now many apps spam the users with requests to review their apps. I think an easy to use and find interface would make this so much easier for users to discover. Either a “Purchased” tab in the AppStore that shows their ratings on the apps or an “Info Button” or “Star” button when you are moving app icons around in addition to the delete button would be helpful for users. I did place this under developer because it’s an issue I see as a developer, not as much as a user. Without positive reviews our apps don’t do as well.
  • iTunes Apps showing as purchased in AppStore — Like the previous one, this is a major annoyance as an app developer we see with users confused about the process of installing an app they already purchased. They think it’s “US” trying to recharge them the price of the app. Apple addressed this on the iPad AppStore so maybe this change will come to the iPhone as well?
  • Dock and Charge “Screensaver” Apps — I would love to be able to select an auto-launching screensaver like app for when I dock or charge my iOS device. Maybe even give the user control to tell to define certain apps per specific docks or locations.
  • Background Downloading — I love how great the iOS multi-tasking works today, but I would love to see support for Apps to be able to do a bit more in the background than they do today, but still controlled tightly by the OS. Like download my latest podcasts, RSS feeds, sync to iCloud, etc without having to launch the app. So that way when I go to use it I don’t have to wait for data to download or sync up. I hit this annoyance often with my Podcast apps, I launch it before a walk and end up having to wait before the podcast I want to listen to is ready.
  • Write access to the iTunes Library — I think it’s time to allow apps to write as well as read from the iTunes Library. This way you can have access to all your podcasts no matter what application you want to try, you could in theory buy music from Apps like say an Amazon MP3 store app, or even create and save Ringtones directly on the device. Right now to add music you need to actually use a computer with iTunes to manage this, and I don’t see why the device and apps can’t do this.
  • Apple TV AppStore — I think we are getting this, but the question remains in my mind to what the controller would be. I’d love to see a bluetooth NES style joypad/remote for an A5 powered AppleTV. This would be an instant market for many iOS game developers if they could re-write their existing iOS games to play on the AppleTV with ease, and it would also begin to pit Apple against the home console market too with a $99 console.
  • Apple’s own TestFlight — TestFlight is nice, but it’s not as perfect as it could be without access to certain things only Apple has. I would love to see Apple revamp the entire testing system for iOS that basically builds out their own TestFlight system. With that it could also finally remove the 100 device limit and maybe make that a 100 user limit and have it tied to Apple IDs instead of UDIDs. The popularity of TestFlight should be showing to Apple that we want a streamlined testing system.
  • iPad’s 2X Mode use Retina graphics — I personally was surprised this wasn’t turned on for the iPad 2, and I would hope that iOS 5 brings this to the iPad 2. I don’t think the iPad 1 could handle the memory requirements of such a feature, but the iPad 2 could.
  • Improved Game Center sandbox support — This is another developer annoyance. The whole process is annoying right now that once a Sandboxed app starts up it screws up all non-sandboxed Apps causing a mess of steps required to get onto the non-Sandbox Game Center.

iOS User in me Wants:

  • Better Notifications System — This is the big and major annoyance with all users of iOS. There is not a day when I return to my phone where I have to close 4-6 alerts before I can actually use my iPhone. I am interested to see how Apple solves this, as currently the only mobile OS with decent notifications is HP’s WebOS. With a radical rethinking I think Apple could really make this perfectly usable again.
  • Notification silent periods — With a revamp of the Notifications systems I’d love a silent period to set so that I wont get Words with Friends or Carcassone sounds after midnight. Twitter has this feature and I use it to make sure DMs don’t text me at late hours.
  • Useful Lockscreen — Right now the Lockscreen is pretty bare, I think along with a revamp of the Notifications system I would love to see the ability to see stuff like my Mail, Calendar, Notifications, etc on my Lockscreen. Even if it’s just a counter or as complex as widget support I think this screen could use some new life. With Apple’s continued improvement of cameras in the iPhone it’s become clear that many users want a quick way to launch and use the Camera app. They could create a Lockscreen button if desired, it would make the camera infinitely more usable with this support.
  • Safari Upload Images/Data — One major cripple iOS has is no way to upload files to web services. Say I wanted to upload a new avatar on Facebook or upload a Word Doc to my employers webservice, you can’t do this at all on iOS. I would love to see Safari have access to the Photo Library and Documents Library when a file uploading form is hit.
  • Custom SMS Tones — In a later iOS 4 release Apple finally added more preset SMS tones for users, but I think it’s time to allow Ringtones for SMS tones as well. If you have ever been around a group of people with iPhones when someone gets an SMS you’ll see why this is needed when everyone reaches for their iPhone to check if it was them who got the text message.
  • Device updates without iTunes — Need I say more? Well maybe I should spell it out, with this feature users would be more likely to upgrade to the latest OS. I know many users who don’t even know an update is out because they rarely sync their devices to iTunes on their computer anymore.
  • Quick Search AppStore — One thing that always surprised me, is there is no link to quickly Search for an App in the AppStore via the Springboard search feature. This just makes sense for Apple to implement and may drive app purchases more often.
  • Facetime over 3G — FaceTime over WiFi only seemed more like an AT&T restriction, but I have a feeling we’ll see it open to carriers who want to allow it over 3G by sending down an updated Carrier File much like Tethering support. By allowing carriers to selectively support it may actually force AT&T’s hand in allowing it.
  • Multiple User Accounts for iPad — I don’t see this needed on the iPhone, but as many iPad users can agree that having multiple user accounts on the iPad would be awesome as the devices are often shared between many users in one household. It shouldn’t be too hard for Apple to do this, maybe it’ll be worked into a newer Lockscreen?

I don’t assume we’ll get even half of these, but I’d really like to see a few of them. I also know Apple has much better ideas than the developer community does, so I expect quite a few surprises next week at WWDC.

As far as the upcoming iCloud service from Apple that was also confirmed today. I’m thinking this will be a re-named and re-worked MobileMe system. It would be ideal for Apple to also offer this for free as well, at least for basic functionality. iCloud can really add value to the iOS and Mac platforms that doesn’t exist today. Especially if it’s as slick as many are expecting it to be it may be a huge feature win for the platforms.

iOS Wireless App Distribution Talk


Tonight I am giving a talk on iOS Wireless App Distribution at Chicago Cocoaheads. If you missed it or want to follow along you can download the Keynote file.

Here is a list of links referenced in my talk:

As part of my talk I created a new PHP script that I am calling Manifest Destiny. It automates a step of the process by creating the required manifest property list files on your server. In addition to that it also gives a customizable HTML listing for devices to install said ipa files from their iOS devices. This is currently available as a Gist over on Github.

In the future I may branch it out to be it’s own project, as I have lots of ideas on how to make things better for my workflow. Also let me know via the link on the left if you port it to Ruby or any other server side languages, and I’ll include a link to it.

Three Years of iPhone Development


Three years ago I released my first iPhone application to the public, here is the story of how I got started.

Before I started dabbling in native iPhone development, I had started making iPhone games using web technologies. I had made a really simple web-based iPhone Blackjack game using AJAX, a few JavaScript frameworks and PHP. It was at one point going to be part of an online “Kombat Kasino” for my Mortal Kombat fansite The Realm of Mortal Kombat. But the web interface for the game just wasn’t cutting it for me. It didn’t feel right on the iPhone touch screen. It was then that a friend made a comment that stuck with me: “why doesn’t the game react to gestures like a real casino?” I figured it was perfect time to make it do just that using the recently released iPhone development toolchain.

My first steps in development were to draw an image onto the screen. I then had to figure out how to move them and respond to touching the screen. All this was being new to the platform and the language, I learned many things the hard way. Remember, this was all before Apple allowed us to write apps for the device. We only had framework header files and some shared Mac documentation. The OS that the iPhone was running on then was also far from ready for third party developers as it was an amalgamation of the new UIKit Framework and beta version of OS X Leopard. For instance CoreAnimation was still called Layer Kit. At that point I hadn’t done development for the Mac either, so both Cocoa and Objective-C was all foreign to me. Learning to do all this was the most rewarding programming I had ever done in my life. After a weeks or so of tinkering, I had a tech demo of playing cards moving around the screen randomly. It was cool, but it wasn’t a game.

It wasn’t until Lights Off! for the iPhone was released that I was fully inspired me to make this tech demo into a real game. Every evening for about two weeks I spent countless hours after work at coffee shops, book stores and my home office just trying to get the game into a playable shape. After lots of work and learning I eventually released the first alpha build of the game on August 28th, 2007 at just after midnight. I posted it up on my website and a few other places, and went to sleep.

Screenshot of iBlackjack Alpha 1

The release day was also the same day I was supposed to attend to the iPhone Tech Talks in Chicago. I was pretty tired when I arrived at the Tech Talks because of how late I was up. But the funny part was the entire day was dedicated to Apple developers showing showing us how to make web-apps for the iPhone, and by that time I had a native game. I eventually gathered enough guts to show the game to an evangelist there. He couldn’t tell me anything to help me out, but he pointed me to a great Chicago developer community CAWUG that I should connect with. He also told me more about the great C4 conference that Jonathan Rentzsch had held just a few weeks earlier. These resources I wouldn’t have discovered easily on my own especially when I was so heads down in development.

All versions of my game went on to get a combined total of close to a half million downloads via over the next few months. At one point it even got featured on G4’s Attack of the Show in September of 2007 during a segment about third party applications:

From that point on iPhone development was a very exciting ride. In early 2008 I was hired away from my corporate day job to create iPhone apps full time for mobileAge. For them I have produced a bunch of great applications, and even more in the pipe. iBlackjack eventually was renamed Blackjack 21 and released on the first day the iTunes AppStore.

Blackjack 21 Screenshot

It honestly doesn’t feel like it’s been three years, as it’s been such a roller coaster ride watching the iPhone platform evolve. Since becoming an iPhone developer I have become friends with many fellow developers throughout this great community. There is lots of daily inspiration from the other great people also working on Apple’s platforms. I can’t begin to think what I would be doing if I didn’t take this career path, but I guarantee it wouldn’t have been as much fun as this journey has been.