Tuesday, March 29, 2011

Amazon Cloud Storage and S3

Today, Amazon announced their new Cloud Drive service. With that they are offering 5GB of free storage forever. Amazon has been for a while offering 5GB of their S3 storage service for free for 12 months.

These have to be the same on the back end don't they? So, wouldn't the better deal be to get the Cloud Drive? I think that the top end of S3 is probably better than Cloud Drive but for a small organization like us, it's a lot of space. We currently have about 3GB on dropbox that we use for backup and sharing.

Friday, March 25, 2011

Taking the XCode 4 Plunge Again

We have a few days between coding jobs and a new version of XCode 4 has been released, so we are downloading the 4.0.1 version and planning to reinstall today. It's times like this that we would like to have more than one computer at work. The show stopper for us before had been that some of our XCode 3.x projects would not open without crashing XCode 4.

Wednesday, March 16, 2011

Making Screencasts for iPad

Making screen casts is not as easy as one might hope. We are using the SimFinger project from github and that is helping a lot, but our scripts aren't great and though we always knew we had a face for radio, it's the voice that's key. Perhaps instead of thin and reedy our voice sounds calming?

Here is the playlist so far. We decided that instead of one, long video it would be better to make lots of short videos. We thought about online tutorial, but can't quite see how it would fit into the app itself.

Monday, March 14, 2011

Meta Thoughts on MTN

No technical notes here. Just us thinking about what we think about this app and some of the marketing and business challenges we think lie ahead.

What is Making Us Nervous
We are not a Massage Therapist. This app came out of an unsatisfying few sessions with a therapist who could not remember from one month to the next what our preferences were or where we were injured. We thought that if she just had some way to take five seconds and jot down a few things so that she could pretend to remember us next time we would be happier customers and her tips would have been bigger. So, we are nervous because it is possible that we just had a bad therapist and the market for this app is tiny. We are nervous that Massage Therapy isn't classified as medicine for a lot of regulations, but it might be something where people are uncomfortable using the iPad to keep client data. We are nervous that the American Massage Therapy Association only has about 60,000 members.

Where We Want to Go Now
The camera on the iPad 2 and the possible release of Duke Nukem Forever really spurred us to finish this thing and get it out there. We think that if a massage therapist can take photographs of client intake forms she would find that really valuable. We think that integration with the iPad calendar so that appointments would pop up session data in the app is important. As Massage Therapy moves more into the arena of being covered by insurance and regulated by states, we think the ability to spit out reports of client visits and therapy regimens in a state's requested format could be the bees knees. We think that having a small group of therapists be able to share client information (within a practice for example) or having the session data sync with an iPhone or desktop application to help run the business.

If we implement all of those features, we think this will be a robust and valuable tool for the Massage Therapy profession.

Where We Don't Want to Go
We don't want to replace Quicken or Billings, or QuickBooks. We don't want to deal with salesforce integration. We want the start to finish interaction with this app to be 5 minutes. Some quick notes about a client after a session or a quick review of trends before starting a session.

Who is This For
We find it helpful to envision the core customer when writing software. You can make decisions better and you can think through use cases. During the development of this application our core customer was Ginger. She is a middle-career massage therapist who sometimes works out of a studio but also does in home visits. She carries her big, green massage table on one shoulder and she has a duffle bag of linens and creams on the other. The town where Ginger works has a number of seasonal residents, so there are people in her practice that she might see only three times a year. There is no way to really advertise to these people since they are not local so word of mouth from current clients is her best way. Since she started using the app, Ginger has been doing a good job of sending follow up emails to clients a long with a little note based on some snippet of their conversation that she had recorded after the session. These emails just happen to have her contact information so that they have it for their reference. Ginger processes client intake forms and generates SOAP notes after her initial meetings with a client but often has to leave them at the office when she makes her calls (that duffle is almost stuffed full already). Though she checks her iPad when the client is scheduling their appointment, she always takes the few minutes between when she first greets a client and when she starts the session, Ginger checks her iPad again to go over their records. She really likes that she can flip through all of their past sessions and see what areas need special attention. Ginger likes to use the different colored stones in the app to signify different kinds of issues. She uses the orange stones to denote surprise areas that the client didn't realize were issues but which caused them to really yelp when she worked them. Ginger also keeps notes in the app about whether a client is chatty or quiet and what kind of music they like. As she's cleaning up Ginger makes a few notes in the iPad or might even schedule the next session with the client.

Massage Therapists Notebook: Lots of Firsts for Us

The App Store image for the app.
At the risk of jinxing the app approval process we wanted to get some of our thoughts down while we are still on the post-submission-adreniline high, before reality sets in.
Some Firsts

  • This is our first iPad application for ourselves
  • This is the first (non-contract) app we've written that is specifically for bringing revenue to the firm
  • This is our first large Core Data integration
  • This is the first time we've spent more than 20 hours strictly on "polish".

Tools We Used

What We Learned
Read the Apple Documentation. In general, especially if one of the system apps does it, the iOS SDK has lots and lots of functionality. At the beginning of this project we relied only on Google searching and stackoverflow.com to get over each hump or past each block. However, by the end, we would take one or two hours each day to read through one of the Apple guides. Very often, we discovered a built in piece of code or SDK function that let us go back an rip out whole methods, or even views.

Use a bug tracker or at least a timer. We feel like our productivity shot through the roof after we implemented FogBugz. Being able to write down all of the tasks and then being able to close them out was so satisfying. Also, having FogBugz record how much time we spent on each ticket was a real eye opener as to how bad we are at time estimations.

Use Version Control. Sometimes we went down a rabbit hole and couldn't get out for weeks. Initially we just used the XCode snapshot feature. This made us hesitant to ever roll back because we would have to roll back the whole project. Once we started using Mercurial and could roll back each file as well as see the differences, we did much better. Additionally, near the end, we were tired and prone to typos. Being able to see in the version control that we had accidentally deleted an extra line or semi colon kept us from going completely insane.

Just ship something. Honestly, the substantive changes we have made between what was submitted to Apple today and what we had on our hard drive last Summer are not that great. The code is cleaner, we are a better programmer now, and there is much more polish. However, the functions are largely unchanged. We could have shipped this a long time ago and then iterated with actual user feedback.

Downgrading XCode

OS X BSODphoto © 2007 Manu Contreras | more info (via: Wylio)
With the release of XCode 4 into the App Store, we thought it was finally safe to put it on our primary development machine. Sadly, after 3 days and many crashes, we are taking it off. It's cool and all, but there are some projects that it works with fine and others that it just won't run for long with out crashing....and crashing.

We're reinstalled a few times and done all of the tips and tricks recommended after our Google searching. Things had gotten better but certain client projects still just crashed and crashed and crashed.

All of our client code is in Kiln or github so we will be able to reconstruct. It's just that losing the hours of productivity isn't billable.

We are trying the nuclear option for XCode 4 of typing
sudo /Developer/Library/uninstall-devtools --mode=all
. If that doesn't work, it's back to XCode 3.2 for a while.