Archive for the ‘iPhone’ Category

“Sherlocked!”

Wednesday, March 18th, 2009

This Tuesday I sat in my seat and watched Apple announce what would become iPhone OS 3.0, by the end of the presentation Handshake was dead. What events lead me down this road? They were long and very unexpected. Two years ago if you told me that I would have been part of all this I would have just written you off.

How It Started

When the iPhone SDK first became available it felt as though anything was now possible and everything was suddenly exciting. I was still wet behind the ears having just finished Trivial. Ian and I had recently meet at the local CocoaHeads Gathering and we were looking for a project to work on together.

Ian already had a good chunk of the network back end written for another project that never saw the light of day, but I will let him tell that story. We wanted a project that would be fast, easy, and enjoyable for the iPhone. I think the most important thing was seeing if we could work together as a team. Very quickly we came up with the idea of a contact sharing App, as there was a tremendous need and no solutions at the time on the iPhone.

Birth of Handshake

I was tasked with writing the client while Ian would write the back end. I immediately set to work getting a UI up and running so we could start testing things. Handshake was supposed to be a short project with one very simple goal, send contacts from one device to another. Unfortunately it wasn’t that simple, it never is.

Every time we took a step forward it felt like we took two back. The network had to be fast, stable and able to work on unstable cell networks. This kept Ian very busy and left me to fight with the client.

In the beginning my primary focus was the number of button clicks needed to be able to send your card. By the 1.0 ship we were able to get it down to two clicks, one to say you wanted to send your card, and one to select who it was to be sent to. Interfacing with vCards is not as easy as it sounds on the iPhone, especially back in the early days when the SDK was much less complete. Ian wrote an SMS share feature to make it easy for new people to get Handshake. It turned into an App that could have and probably should have been 3 or 4 separate apps.

Sending pictures was one of those afterthought kind of things. The home screen looked empty with just two buttons on it. We really wanted to be able to send calendar events but just couldn’t access that data anyway we tried. I was surprised weeks later to learn that pictures turned out to be a huge hit.

The Awkward Years

I’ve never really publicly talked about this before but Handshake 1.0.0 had a serious bug that was completely my fault. When the app was first run it tried to figure out who the user was. Handshake does this with some fancy code that scrapes through your entire address book trying to piece together information about you. This process took a bit too long, sometimes and would make the iPhone think that it locked up while launching, causing the iPhone to exit the App. This was caused by an extra call in the loop that was redundant and took a long time to execute. Handshake worked fine for address books with only a few hundred people in them. This didn’t get picked up in initial testing because we didn’t have huge address books. Who does have huge address books though? The media, thats who. Despite this Handshake was very warmly received by blogs and other news sources.

The power of Handshake was that it would work over 3G, Wifi or Edge in any circumstance, and across any network. It would automatically find people standing next to you and would even work with one bar of Edge (although slowly). To this day no other third party iPhone developer has really gotten this to work that I have heard about. With peer to peer networking in OS 3.0 I doubt anyone will try to tackle this again.

Growing Up

Handshake was huge (especially in Sweden). The problem was we never really had a way to make money on Handshake. We had an ad supported version and a premium version for $2.99 that was ad free. There was no way we could have been successful at all if we charged for the app since both the sender and receiver needed to have it installed. No one wanted to say: “I’ll send you business card, but you have to pay 99¢ first”. We saw decent premium sales, but they really only covered development and server cost.

The ad supported model just wasn’t working well for us. Handshake was one of those Apps that everyone installed, but only ran once a month for 15 seconds, it was not great place for ads to be. We launched with Ad-Mob and made some money the first few days, but it was causing crashes for some of our users, so we decided to pull it. We then tried to roll our own ad network, with some success and that is what you will see in the latest version of Handshake. We used it mostly for advertising our other software, but also had some success selling ad spots.

We added new features like email sharing and global user searching over time, but mostly we planned Handshake 2.0. We needed to add some premium features to be able to sell it. We had our foot in the door with tons of users in over 150 countries, now we needed a way to make money from it. Sending photos lead us down the path of sending files, without the photo feature we might of never seen that next step.

We got 2.0 mostly written including a file browser, which I will be showing in an upcoming post. We just needed a good way to get the files on the iPhone. We looked at every option available, web apps, desktop clients, and network sharing. We settled on WebDav, the problem was Handshake wasn’t making enough to live on and we did this full time. We were working on projects that had proven income potential. We would not have the time to write it ourselves, so we contracted it out to a friend to write. It would have to work flawlessly with Windows, Mac and Linux to be usable.

The WebDav server was never finished and we kept pushing it to the back burner to work on other things like Trivial, Transactions, Cocktails, Changes, etc.

We always knew that Handshake had a limited life and was expecting it to appear in Apple’s software sooner or later, after all we were filling an important niche. We were limited by the SDK and hardware access, something would have to change to take it much further. Apple was the only one that could take it to that next step.

Death and Cooping

The last few months it feels like we have barely thought about Handshake. The support load has been minimal despite the ever increasing user base. We have been busy working on Transactions. Handshake was slowly turning into a word I would use when introducing myself to other developers, “Hello, I’m Kyle Richter, I wrote Handshake”. Don’t get me wrong I always cared about Handshake, it put me on the indie map, but I think I knew its time was passing.

As I sat there and watched Apple first announce peer to peer networking in the iPhone OS 3.0 I was worried, more about our business reselling the Handshake back end then Handshake itself, and I instantly started to work through the task needed to switch Handshake onto the new system.

Ian was sitting next to me and I had sensed for a long time he was looking for the reason to move past Handshake onto new projects, I think this was the message he was waiting for. Even as I thought of ways to adapt and save Handshake I could tell it was dying. Once Apple announced MMS and email with attachments I knew Handshake was EOL. I was upset for a few minutes but the more I thought about it the better I felt.

Being “Sherlocked” is one of the highest honors an indie Mac developer can receive in my opinion. Apple saw the niche we filled, saw how we were doing it, and that people wanted it filled. They implemented it and they gave it to everyone instead of our limited user base. In the end we created Handshake to fill a need for ourselves and the journey has come full circle and now everyone can use it. I can’t think of a better way for Handshake to ride off into the sunset.

[Handshake] Should be a built-in iPhone feature.” – John Gruber.

And now it is.

Handshake will remain available in the App store and free until iPhone 3.0 is available to the public, at which point we will see what we want to do with it.

Transactions

Sunday, March 15th, 2009

Transactions is a new iPhone App that I wrote with Ian Baird for accepting credit cards on the go. This is the second App that we have released jointly, the first being Handshake.

Transactions was a really interesting project despite some difficult hurdles. I ended up rewriting the entire user interface no less then 3 times including 11 revisions along the way. We put a lot of effort into the UI in order to make it simple enough for any retail clerk to master in minutes but powerful enough to handle the complex nature of payment processing. In the end I am very happy with how it turned out.

img-0005.jpg.jpeg

We also have a couple of firsts on the iPhone technologies with Transactions. We had a major problem of easily entering login credentials for PayPal™ and Authorize.net™. Ian developed a tool for solving this problem that we called the Credentials Tool, it allows you to copy and paste your account information into a website and have an email sent to your iPhone that will automatically configure the App. Founded on this same technology we allow you to transfer settings from Transactions Lite to Transactions.

Transactions Lite allows anyone to try out Transactions with no risk, it does have a limit of 2 Transactions per 12 hours though. Transactions sells for $29.99 and is available in the US App Store. International versions will be available as soon as possible.

Detecting the iPhone User’s Name

Wednesday, February 11th, 2009

There have been a lot of questions about how to detect the name of the user on the iPhone. I thought I would take some time today to walk everyone through the process.

One of the challenges a lot of developers have been facing is that there is no -(ABPerson *)me method on the iPhone. On a mobile device it is especially helpful to know who is using the device.

Initially looking at the challenge I spent a couple of days digging around the iPhone to see if it had any record of a “Me” address. I spent a lot of time in Mac’s AddressBook application using Changes to see if the cards were somehow tagged with a “Me” reference that could later be read on the iPhone. Sadly this was a no-go. The iPhone strips all this information out of the contacts before syncing them to the device.

I have been asked to remove this entry from my blog. Sorry.

For my friends at Apple rdar://problem/6579406

Special thanks to Daniel Jalkut for turning me onto MarsEdit this is my first post using it.

Trivial 2.0 in Closed Beta

Saturday, January 10th, 2009

As Trivial moves into closed beta this week. Those who didn’t get a chance to get in the beta group I thought I would share just some of the new features that did make it into 2.0. Some of these features may change before release but they are almost certainly going to be included. 

• Interface themes, a lot of people really liked the old look and a lot of people really hated it. There was no way to satisfy  all my users with just one layout. Trivial 2.0 adds 5 built in themes at launch. New themes will be added as time progresses.

• Multiplayer gaming, play against another user across any network Wifi, Edge, 3g or even across different cell carriers. Find users automatically near you or search for users around the world. 

• Artificial intelligence, play against your iPhone/Touch with 4 different levels of skill. 

• Resumable games, I understand that iPhone users want to play for a couple minutes at a time. Trivial 2.0 allows for resumable games and crash protection. Play for as long as you want and when you come back your game will be right there for you. If your iPhone crashes or loses power the game will restore right to where you left off. 

• In game high scores, while Trivial has always had networked high scores they were only available on the Trivial website. 2.0 brings these scores right into the game for you. 

• Questions will no longer repeat between games. Trivial 2.0 will exhaust the question supply before repeating them.

• A new game mode, Timeless! Timeless mode lets you play on your schedule, no pressure to answer questions against a clock, take as long as you want. Timeless mode even has its own soundtrack which is much more mellow and peaceful then the rest of the music. 

• Plus many many more features, enhancements, and bug fixes!

Trivial 2.0 will ship when its complete, but its getting close.

Trivial 2.0 Progress

Tuesday, January 6th, 2009

 

I have been very busy the last few months working on Handshake. However I have recently found some time to work on the next version of Trivial. I am really trying to get this update out to everyone before I get sucked back into other projects.

As promised the next version of Trivial will bring true head to head gaming over any network. It also is a complete rewrite from the ground up. Dozens of new features have been added and I am very pleased with the progress. I am hoping I can finish implementing new features this week and move it into beta. 

Here are some sneak peak pictures of what is coming!

iPhone Paranoia

Wednesday, July 30th, 2008

For the last couple of months I have been working on getting some iPhone software out into the world. I have put in very long hours and have neglected a great deal of sleep to do so. The good news is our games are finished. While it is still too early to disclose exactly the nature of what I am releasing I can say that I will be submitting a set of 3 games to the App Store for Apple’s approval. I hope to have everything submitted by Monday the 4th, a bit later then I hoped but I want to make sure everything is working right the first time. Rumor has it that there is up to a 4 week delay for application approval which freaks me out a bit since it will be a painful month of watching and waiting. Hopefully I get lucky and get in quicker. 

The paranoia comes from the fact that we currently have no competitors on the iPhone, not one. It is not like the software we have designed is especially original. It has just been a strangely overlooked market. Which also means that I have no comparison for how to price the software. Every day when I wake up a look on the App Store in utter fear that someone else has beaten us to the market. We have been very lucky so far since like I said it is not a complex idea, and I personally believe it has a very large market. 

So through all these months of NDA and secrecy we are just about ready to finish the first official iPhone experiment here at Dragon Forged and I am very excited. I have picked a price point which I believe is very fair to our users, in fact my original price point was significantly higher when the project was started. 

We still have a lot of loose ends to tie up before we can go live, the race is not over by a long shot. Granted the engine is done and the code is all but finalized. Our music is completed and working well, our graphics are inserted and all known bugs have been crushed. We are still waiting on our icon designer to finish up our 3 icons and most importantly one of our content providers (this will make more sense when I release more app details) is still finishing up the finial stages of his work. Our content provider has assured us everything would be done by “this weekend” and my original time frame for the icon designer was by this upcoming sunday. So pending any disasters, which wouldn’t shock me, you should see Dragon Forged in the App Store sometime in August.