A few weeks before the surprise layoff at Coverity, I had lunch with a good friend who came to town. (I talked about him before when I talked about Sound Candy earlier). He was doing both hardware and software for a friend of his in Durango, CO, and mentioned several times that they were having trouble with the IOS application development team.
When I was told on Monday that my last day was Friday, I called him. He said:
YOU MUST CALL JOHN IMMEDIATELY. HE NEEDS YOU. GET IN TOUCH TODAY!
(That’s the way he talks. His friends call him ALLCAPS).
I called John, and we talked. He wanted to hire a consultant to evaluate the code quality of their IOS application. They were doing OK with their Android app; there were plenty of Android developers in Durango, CO, where this effort was going. But they were having major problems with the IOS app. He wanted a resume, and he wanted my going rate.
I had a version of my resume sitting around, and he seemed happy with it, but then I had to figure out what kind of money to ask for. After consulting with ALLCAPS, I came up with a number that seemed really high to me, but John bit on it. A few scanned signatures later, and I was hired. He had to go get me credentials for their source code repository.
I wasn’t ready for this. Coverity was taking back all of its hardware, and that left me with my Mac Pro. Except I did not have a monitor because mine had died and I was using Coverity’s. Plus, I knew I was going to have to go to Durango at least once; I had to have a laptop.
I bought a last 2011 13″ Mac Book Pro, and 3rd party RAM and hard drive upgrades (remember when you could do those?). I brought the laptop home from the Apple store. The upgrades arrived the next day, and got everything installed, and then got the source code. I was officially on the clock.
Now, the only IOS work I had done had been on the side (see Rice University – 2012), but I had done some Cocoa programming at Apple. I at least knew enough about memory management to immediately find problems.
I went through every file of code, line-by-line, and documented around 200 defects, most of them memory related. The developer(s) who worked on this had no earthly idea how memory managedment worked in the Objective C runtime.
I had to learn Objective C 2.0 on the fly, but that wasn’t hard. The app was pretty simple.
I also found out the corporate story. Rock Systems was a contractor; I was a sub-contractor. The parent company was Airborne Media Group, and the app was called AudioAir.
Here’s the pitch for the product.
Let’s say you go into a sports bar, say in Austin on a Saturday evening when the Longhorns game is on the big TV. The announcers are blaring. But you want to watch the Florida State game on one of the other TVs. You can’t here the sound.
So, you download AudioAir, login to the bar’s wifi, and tune in that station, and you can here the audio for that channel!
Actually, as ideas go, it’s not bad.
What it actually looked like:
- The customer would have a PC that connected to Airborne’s servers, for account info.
- Airborne had custom hardware boxes, built by Rock Systems (with the help of ALLCAPS), which took composite video, and stereo audio, encoded it, and streamed it over the venue’s WiFi.
- The Android or IOS app would decode the audio and play it back. It would also show ads for the venue on the screen, including some of which might be interactive.
The initial contract went for three weeks. I got the analysis done and a report written the first two, and then I flew out to Durango.
Durango is amazing. Beautiful town in the Colorado Rockies. I stayed at this amazing hotel called the General Palmer. John took me out in the country, driving to Silverton. I had a lot of fun there.
We also got down to business. People from Rock Systems, Airborne Media, and another company called E7 Systems (which took care of releasing builds) all crowded around while I showed defect after defect. It took about 2 hours.
After I did that, everybody wanted to talk to me. Well, except the IOS developer. Found out he was a junior Java developer who thought he could handle it. He was removed from the project, but he still got to work on other software. Whatever…
That night, at dinner, the executives from Airborne asked me to sit at their table while they attempted to ply me with glasses of red wine (one was enough at 9000 feet), probing me about my background.
The next day, John asked if I wanted to extend my contract, and do feature work on the product. I said sure, but we should do the cleanups I recommended first, and get that version onto the App Store.
So I went home and continued working. I submitted my first invoice. And that’s when things started getting fishy.
John called and said that he could pay about 50% of my invoice, but Airborne hadn’t paid him yet, so that’s all he could do for now. He would catch up when he got paid.
Well, it was better than nothing. My severance from Coverty had been eaten into by buying a laptop and a monitor, so this was not ideal.
I shrugged it off, and continued working.
They wanted me to work on the Program Guide they had. Both TimeWarner Cable and DirecTV had RESTful apis running on web servers built in to their boxes. This meant that a programmer could download program guide information, and do what they wanted to with it. Most of the work doing this for TimeWarner had already been done, but not for DirecTV.
Fortunately for me, I had DirecTV at home, so I could develop this at the house. It did involve setting up a customer site at my house; the prospective customers we had in Austin did not yet have a working setup, and even if they did, I would not have program guide access at those sites. Besides, programming in sports bars is not good for concentration.
I had another network in the house, with a PC to talk to Airborne, one of the transmitter devices, ehternet cables everywhere, multiple TVs and DirectTV boxes in my office, etc. Was chaotic and fun.
Over the next month, I basically finished the feature. And I submitted my next invoice.
John called me. He told me stop working on this. Airborne still hadn’t paid him. He could give me another small payment, but he was paying me from other contracts. Until further notice, Rock Systems was not doing anymore work for Airborne Media.
I asked if there was other work I could do, and he told me that he had some Linux work, but he could not pay me nearly as much because the skills were not in as high a demand as IOS work.
As for ALLCAPS, he called me and apologized. I did not hold this against him, certainly. This was just the start of a very strange rest of 2012.