Apple – 2012

I was browsing the jobs at Apple, and they actually had a technical position posted for Austin! Unbelievable!

It was for a position entitled “iCloud QA Engineer”. This appeared to be a technical position, focused on QA for Apple’s iCloud offering.

Excerpts from the job description:

Extensive experience with testing or troubleshooting Mac OS X software
Hands-on experience with iOS testing
Impressive knowledge of file or data synchronization
– Proven bug detection and regression skills
– Strong hands-on experience with mobile devices and web applications
– Solid understanding of standard web technologies (Javascript, HTML, CSS)
– Thorough knowledge of Mac OS X, Apple mobile products, and Windows platforms
– Comfortable and adaptable in a high-paced environment
– Creative thinker and problem solver
– Ability to investigate and debug difficult problems
– Strong analytical and debugging skills
– Excellent verbal and written communication skills
– Experience with data integrity change and comparison schemes
– Dedication to user-focused design & high quality technology
– Strong commitment to technical quality assurance as a key part of the development cycle
– Willingness to work cross-functionally with other teams to make all products and deployments seamless for our customers
Desired skills:
* Experience or knowledge of Mac OS X and Windows operating systems
* Experience or knowledge of the iCloud suite of applications.
* Experience with iOS or other mobile device platform application testing.
* A solid knowledge of Java, JavaScript, SQL, Unix shell scripting
* Experience working with Web technologies, including HTML/CSS
* Technical knowledge of the HTTP protocol, Headers and proxies.
* Familiarity of the Apple Push Notification Service
Other skills:
* Ability to write scripts/tools on Windows
* Experience or knowledge of Windows debugging and automation tools
* Comfortable with Unix and shell scripting
* Experience with automation, scripting, PHP, SQL, Perl, or Python
– BSCS or equivalent work experience.
– Strong written and verbal communication skills.
– Automation and/or scripting experience.
– Experience using the UNIX command line.
– White box and black box testing experience.
– Attention to detail and an unwillingness to settle for a product that is just “good enough.”

I had most of these qualifications. This was encouraging! A little weak on the “Technical knowledge of the HTTP protocol, Headers and proxies”, but otherwise solid.

And it was Austin! So I applied.

And then, I asked one of my former coworkers if he could recommend me. He responded that at that time, he and his sister were dealing with moving their mother into assisted living, and he did not have time.

But another friend did recommend me.

So, after some talking to the hiring manager, I finally had a set of interviews. The first half was at Apple’s Riata Trace campus, and the second half were all phone calls from Cupertino. I had an hour between, so I went home to take them.

They asked me how to test one of their apps. I started with installation, and then new user experience, and then I picked a feature and started tearing it apart…

That was the first interview. The second was much the same. I went home.

I started answering the phone calls. The next-to-last interview was key. The fellow asked me to figure out what kind of authentication this test website needed by just using the UNIX curl command.

I still would have trouble doing that now after working in web programming for several years. It was a specific “thing” that the fellow expected, and I could tell because I did not know the magic “trick” he was looking for, that he was not going to recommend me.

This is not a great way to interview people. Expecting people to have the exact skill set needed or the know exactly what you know is a bad interview experience both for the perpetually-disappointed interviewer and the frustrated interviewee.

Almost two weeks later, an Apple HR person sent me this:

It appears that it is very close between and an internal candidate. I should have a decision by tomorrow.

And then four days later (not “tomorrow”), I got this:

I wanted to thank you for taking the time to meet with the team. While the hiring manager feels you have a great skill set he feels that is not quite what he looking for for this position. He does feel that you are a strong candidate and that you are a fit for Apple. I will share your resume with all of the software recruiters and keep you on the Hot Sheet for future consideration.

And I think it all came down to the very specific trick I could not do. How incredibly frustrating.

Advertisements

Noesis – 2012

I saw a job posting on door64.com for QA Operations Engineer. I sent a cover letter to the contact listed:

I am contacting you about the job posting entitled QA Operations Engineer on Door64.com. I have recent experience in this line of work. Specifically:

– I have 20+ years of experience in software development, integration and eating.
– I am familiar with SVN, CVS, Bitkeeper, Perforce and git.
– I have experience not only maintaining a Jenkins instance, but extending it with a custom plugin.
– I have much experience with shell, Perl, Tcl, ruby…
– I have developed large, complex process flows.
– I have experience with Amazon Web Services.
– I have experience with multiple SQL systems, including MySQL, MS SQL, and postgresql.
– I have a BA in Computer Science from Rice University.

Please consider me for your position. There is no place to post a resume on this automated form; feel free to contact me so I can send it to you.

Yes, I had 20+ years of eating software. Oops.

I was asked to send my resume to the hiring manager. The response started, “I am thrilled to see your resume for this position. You have many of the skills that we are seeking…” and “You would be working with me where we are responsible for QA, Manual/Automated Test, Build/Deploy, Continuous Integration , Managing Amazon Web Services infrastructure and other odds and ends.”

After I talked with the hiring manager on the phone, I got an email from the “EVP of Products”:

[Hiring Manager] told me that you guys had a good conversation today regarding our opening at Noesis.  I thought I would reach out to you and see if we could meet for a coffee so I could give you a little more background on what we are trying to do here at Noesis and how you might be able to help us.  Let me know if you have any availability.

Noesis was a company that helped building management get infrastructure in place to finance things like HVAC, or furniture buildout, or many other services and goods that an office might need.

We met at the Starbucks on Anderson near Mopac, and talked about what they needed. They were trying to get serious about quality, and needed somebody to oversee test direction on their full stack.

That meeting seemed to go well; the EVP was not a hands-on guy, but evidently I knew enough to pass his sniff test. The hiring manager then had me come in for a day of interviews.

None of them were technical challenges or puzzles; they were all about management and strategy. I had good conversations, and I felt pretty good.

One week later, I had not heard anything, so I sent a note asking if there had been any resolution on the position. I got back this:

This email was actually typed up when I received yours.

I am sorry to say that you were not selected for this position.   Your experience and skills will surely be put to good use somewhere, but we have decided to try out some offshore resources for automation and focus on the DevOPS in Q4/Q1.   I did get the following today, maybe you could pursue this.  It looks pretty interesting and is located in NW Austin somewhere.  I will forward the actual email so you have the full email reply address.

Thanks again for coming in.

Yep, rather than hiring a new manager, they completely changed direction. That’s a familiar story.

Besides, I wouldn’t want to work for a company where my management chain all used two spaces after a period. That’s just nuts.

More on the follow up later, though. It turned out to be quite interesting…

Texas Instruments – 2012

Screen Shot 2019-07-29 at 13.49.51

 

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.

 

TimCom Geo – 2012

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.

Thanks!

(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.”

“OK”

“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.”

“OK”

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.”

“And to you.”

 

 

Going Free Lance? – 2012

Despite the trouble I had getting paid for my work for Rock Systems/Airborne Media Group, I really enjoyed being an independent contractor.

  1. I could set my own hours.
  2. I could still work at home in general.
  3. Any travel I incurred would be paid for by the client.
  4. I could work on a wide variety of projects, therefore learning a lot.
  5. There was a lot of free-lance work in Austin.
  6. The money was really good, at least when I got paid.

Downsides:

  1. Self-employment tax
  2. Less of a guarantee of continuous work. This mattered because of the mortgage, etc.
  3. Always having to hustle for more work.
  4. 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.

Huh.

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.

 

Airborne Media Group – 2012

Screen Shot 2019-07-16 at 22.57.47

 

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.”

“Sounds good.”


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.

As for Airborne Media Group:

https://businessbankruptcies.com/cases/airborne-media-group-inc

Rock Systems – 2012

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.

audioair
Well, it’s colorful.

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.

Cool.

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.

IMG_0356 (1)
About 20 minutes outside of 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.