Archive for the ‘Life’ 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.

Totus Copy

Tuesday, May 27th, 2008

lookingglass.jpg

Early this morning I released Totus Copy.  Totus Copy is a utility that was born out of necessity.  As some of you may know, I work as an Apple Certified Technician. I see a lot of failing and plain out dead hard drives in my line of work. I also spend a lot of time painfully pulling data off failing hard drives. 

Once we get a hard drive showing in the bus, there is still a lot of work left to do. OS X doesn’t have what is referred to as resumable copying.  What this means is that if a file fails in the middle of a copy, the entire copy will fail. This is all well and good for normal use, but for copying data where you expect 20% or more of it to fail, it is a total pain in the butt. You can spend many hours locked in front of a system.

What Totus Copy does is solve this critical problem. If a file fails, Totus Copy will attempt to retrieve as much data as possible.  It will then move onto the next file and continue the process.  Many technicians know the pain of going directory-by-directory trying to salvage as much data as possible. Totus Copy makes this a problem of the past. 

While writing and field-testing Totus Copy over the last several months, an impressive feature set was developed that makes this software a very practical and powerful data recovery tool.  It has the ability to skip over invisible files or applications and you can set it to target specific directories or files of a certain type. It will never transfer a bundle or a directory rather it recreates them. Totus Copy will never give up and has been known to grab working copies of files that other data recovery tools left behind. 

Totus Copy will unquestionably save data that would otherwise been lost.

Looking Glass 2.0 Released

Tuesday, April 22nd, 2008

Late last night I uploaded the finial version of Looking Glass 2.0. It has been a busy couple of weeks while I tried to tie everything together mostly so I didn’t have to think about it anymore. We did hit a slight bump but quickly tossed out 2.0.1 to fix issues with 10.4. Oddly enough Apple made some sharp changes to system preferences between Tiger and Leopard and since Looking Glass was a complete rewrite I missed them. My bad guys.


So it wasn’t my smoothest release yet but not too many people ended up downloading a malfunctioning version, and it only effected Tiger machines. Already I have a list of features to add to the next version that is slowly growing. I am happily going to take a break for at least a couple of weeks from Looking Glass and work on a new project that I have been toying around with. 

Incase you were wondering about my to-do list on the new version:
• Automatic update downloading and installing, instead of forcing the user to install the update will install and relaunch itself. 
• Better interface handling for 10.5 and 10.4 changes, my fix in 2.0.1 wasn’t as clean as I would like it and I would like to fix this a little better in the future. The solution I used called for a slightly odd looking 10.5 interface.
• Automatic reporting of failed webcams so we can better maintain the list. 
• Sorting tables, right now the database is in alphabetical order but when the application downloads it the order gets scrambled, I need to add code to properly sort the tables. 
• Include the daemon and launcher in the bundle for the prefpane, this will eliminate the need for a third party installer and kind of simplify the whole install process. 

Of course these features are barely in the planning stage and what makes it to release versions may vary greatly then what is posted here but I like to keep a running list.