I don’t remember how the recruiter from Texas Instruments got my number, but he called me, and we talked.
They had a development team in Dallas which was working on educational apps for Android and IOS, and the manager had just left, and they were looking to backfill the position.
Dallas is not my favorite place. Pretty much at all. However, I really needed a job, and it wasn’t California, so I proceeded.
He put me in touch with the hiring manager. She and I had a good conversation about software engineering, management, QA, release processes, and Agile. After 45 minutes of this we decided to setup a set of phone screens with people in the current development team to save me a trip to Dallas, and if that went well, I would go up there to meet the management team in person.
The phone screens went well. I talked to four people, two of which were fluent in IOS, one in Android, and one was QA. Of course, I could only talk in general principals with the Android developer, but it still went well. These were the last days of being interviewed without whiteboards. I had a feeling I might have to do that if I survived this round and had to go to Dallas.
So, I was told that they would make a decision about how they were going to proceed in a couple of days, by Friday that week.
On Monday, I sent out an email. And then on Tuesday. I stopped then, because I figured that they were not going to proceed with me.
On the following Friday, the hiring manager called me. She told me that TI had just sold these apps to a business in Korea, so the position was cancelled. I asked what was going to happen to the existing development team, and she said that it had not been decided.
It’s amazing how often major change happens with a team when the manager leaves. It often forces management to decide if the product is actually worth the business investment. Makes it hard to get jobs as a manager from the outside. And I did feel sorry for the team; they were probably out of a job. But I’m glad I did not move to Dallas for a team that was disbanded over time. That would have sucked.
A recruiter called me after I started spamming job sites with my updated resume. He wanted to know if I would be interested in an automation position for a defense contractor. I asked if it required a security clearance, and he indicated that it would. I said sure, but I knew it took a while for these things, since one of my good friends does investigation work for security clearance. I asked about what I would be doing before the clearance came, and he said to worry about that when it came time for an offer.
He hooked me up with the hiring manager, and we talked on the phone. They were doing imaging solutions for the Navy, which is all he could tell me. He asked the right questions about my background, and indicated he would be in touch.
The recruiter then sent me a homework problem to work on as part of the application process:
Write a program or script that will find all the files beneath a specified directory in which a serial number is found in more than one file. A serial number is in the format of two capital letters, one dash, and 4 digits. For example AB-1234.
At a minimum, the output will be a list of files.
If file1 contains “AB-1234”, file2 contains “ZZ-9999”, file3 contains “AB-1234”, file4 contains “AB-9999”, and file5 contains “ZZ-9999”, then the output would include all files except file4 since it does not match any other files.
You may use references to look up syntax, but please write the code yourself. There are many ways to solve this. Please explain your solution and the choices you made to get there.
I asked what the preferred language or environment was. They said Perl, so I wrote a Perl script to do the work. Took about 3 hours. I wrote back:
I am enclosing my program.
I tested it my creating the test case described with the example. I also made sure it worked with unicode characters.
I can come up with many other test cases, as well as a perl script to generate them and run the program to test it. However, I am out of time for today. If your client wants me to do that, I can have that tomorrow.
I am also enclosing my updated resume.
(Just love it when I see typos seven years later. “I tested it my creating…”)
Anyway, after a couple of days the hiring manager called me back, and we talked.
“Well, your program basically worked, although it got the sorting backwards. That wasn’t specified very well, though.”
“We also had trouble getting it to work. We had to create a virtual machine and install a new enough Perl plus the modules for Unicode to work. But we did not specify a perl version nor acceptable packages, so that’s on us also.”
He started talking about what next steps were, but honestly, he sounded tense, and uneasy, and not very excited. When he stopped, I piped up:
“Listen. Just listening to you talk about this, I don’t get the impression you are looking forward to continuing the interviewing process. You seem reluctant with every word you are saying. Am I right to say that you really would just not rather continue the process, but you are doing it because I met the letter of your hiring process?”
He paused a long time.
“I would say that that is an accurate assessment.”
I said, “Then let’s stop. If you are not excited about moving forward with hiring me, you won’t be excited about having me around, particularly while waiting for my clearance to come through. Let’s not waste each other’s time here. No hard feelings.”
He said, thoughtfully, “You are perceptive. I was not looking forward to this. Very well, we won’t move forward. Good luck to you.”
Despite the trouble I had getting paid for my work for Rock Systems/Airborne Media Group, I really enjoyed being an independent contractor.
I could set my own hours.
I could still work at home in general.
Any travel I incurred would be paid for by the client.
I could work on a wide variety of projects, therefore learning a lot.
There was a lot of free-lance work in Austin.
The money was really good, at least when I got paid.
Less of a guarantee of continuous work. This mattered because of the mortgage, etc.
Always having to hustle for more work.
Paying my own health insurance.
It was coming up on the end of my current contract. And it was coming up on the date I would have to make my first payment for COBRA to continue my coverage from Coverity.
I could continue to do free-lance, and use COBRA for 18 months, but at that point, I would have to get insurance for me and my family from somewhere.
I also have a professional hobby. I am a part-time musician. I am a member of the American Federation of Musicians. Now, there aren’t too many actual benefits for the musician’s union. I did get two incredible lucrative gigs when I lived in the Bay Area. They more than made up for 18 years of union dues. That had not happened in Austin.
But they supposedly have some kind of health insurance. So I applied.
Turns out it’s not actually a group plan. It’s an individual plan with a hefty discount. I filled out the application for me and my family online.
The next day, a representative from the company called me, and told me that my family was all approved, but I was turned down because of my weight.
I asked her what my weight needed to be, and she told me, but then she said that I could not apply for 2 years. And all of the other companies would ask me if I had been turned down in the previous two years, and if I said yes, they would turn me down also (which, of course, would reset the two year clock).
I asked if there was any way at all I could get health insurance. She told me that I had to go 6 months without insurance, and then I could apply for the Texas High Risk Pool insurance. The premiums were several thousand a month, and the deductibles were very high, and the policy did not cover that much.
So. I had COBRA for 18 months. After that, I was out of luck, even if I somehow lost 50+ pounds.
That’s when my free-lancing career came to a stop, at least as a full-time, long-term strategy.
So, when I accepted the contract for Rock Systems, I was informed that I was a subcontractor, and Airborne Media Group was the main company that Rock Systems was contracting for.
Airborne Media Group was based in Durango, CO. They had designed this system so that one could choose audio from several TVs in a venue like a sports bar and play it back through the headphones on a smart phone. They had one full-fledged customer, a casino operated by the Ute tribe, and they had several others that they were trying to sell.
Rock Systems hired me because the existing IOS app they had was in trouble. It was behind on features and crashed all of the time. I prepared a quality report on the IOS code.
When I flew out to Durango, and presented my findings, I met the CEO and one of the vice-presidents of Airborne. They told that they had been impressed with my work, and quizzed me on my background. They also mentioned that after my contract was up, perhaps I could talk to them about some work?
My boss at Rock Systems was pretty furious; it was bad business to recruit subcontractors out from under contractors. Nevertheless, he admitted that he did not know how long I would have on the contract. He asked me to stay on for another six-eight weeks to work on features for the app; past that, he did not know.
Two to three weeks after I started to work on the new features, the vice-president said that he was coming to Austin, and he wanted me to meet him. He wanted to talk to me about joining them as VP of Software, opening an office in Austin, and hiring a development team of full-time engineers. He asked me if I could spend a whole day with him. I said OK. He also asked if I knew any commercial real estate agents in town. I said I would ask my residential agent, who had been working in this town for 20 years.
I met him at lunch downtown at what people call a “breastaurant”, i.e., the wait staff wore short shorts, pushup bras, and tight tee-shirts, with shiny stockings. It was on 6th Street, the main party street downtown, although in the middle of a weekday, it was just another busy street. During this magnificent meal, he told me that he had had the idea of the AudioAir app running his own bar. He owned the bar caddy-corner from the hotel I had stayed at. He had a couple of entrepreneur buddies, and they had started the company. The decided to contract everything out until they were sure of the proof of concept, but now, they were securing their first round of venture.
Not only would the app play audio back, but the screen could be used for venue-specific ads, and eventually, for bar games and the like. Perhaps a point-of-sale system for the venue?
He wanted to build a software engineering office, and he was not impressed with developers in Durango. Silicon Valley was too expensive, so he wanted to do this in Austin, which he had visited many times.
“How would you setup an office?”, he asked me.
I told him that I would want a staff of 3-4 engineers, 1 each specializing in IOS and Android, and 1 front-end and 1 back-end web engineer, or maybe one full-stack. The site would have TVs all around, and visitors could listen via the app to any of the TVs playing. The TVs would be full of sports. For development purposes, we would need both Time Warner and DirecTV service in the building.
He seemed to like that answer. From there, we walked over to the Bank of America building on 6th Street to meet the real estate agent. Showed us a nice office, but mentioned that it might be tough to get a dish put on the roof. I mentioned that we might have to bolt one next on the wall next to south-facing window, and he said he would talk to management.
The VP and I then parted ways, and he told me he would be in touch.
Meanwhile, I wasn’t getting paid. Rock Systems wasn’t getting paid, so they were having trouble paying me.
And evidently, my boss at Rock Systems was already angry at Airborne, and hit the roof when he found out how far along my discussions with Airborne had gone. There was a lot of angry email flowing, with lots of excuses about having trouble securing funding and the like.
I kept my head down on the coding. Eventually, the first version of the app with my changes in it was released on the App Store, my first published app.
Right after July 4, I got a phone call from the VP.
“Airborne Media Group would like to make you an offer of employment.”
“I am interested. However, until I am paid in full what is owed me, we have nothing to talk about.”
“Oh. How much are you owed?”
I told him to the last penny.
“Yeah, I could see where that would be a problem. Let me see what I can do. We’ll take care of this, and then we can talk some more.”
I never talked to him personally again. The CEO contacted me in email, acting surprised that “Rock Systems would go so far as to withhold payment from you because of a dispute with us”. I told him that Rock Systems hadn’t been paid either, and it sounded like the financial situation of Airborne was pretty dire. Until that was fixed, I was not interested in working for them.
About a week later, Rock Systems told me to stop working on this contract. They eventually paid me, bit it took a while.
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.