Los Angeles Dodgers – 2015

Early in the year, I applied for a position labeled “Senior Developer” for the Dodgers. The job description talked about front-end web work. I applied, although my strength was more in the back end.

And forgot about it.

Several months later, somebody working for the Dodgers analysis contacted me:

My name is *REDACTED* with the Los Angeles Dodgers Research & Development department. I am following up with you regarding your application for the Senior Developer position that we currently have open. We have looked over your application and would like to arrange a preliminary interview via Skype sometime next week.

Could you let me know dates and times of day when it would work for you to schedule this interview, hopefully this week or early next week? Most afternoons are good for me PST; I will follow up with you and confirm slot and Skype details later once we have a set time.

Be prepared to discuss your pertinent technical experience, background in baseball, and what you can bring to the Dodgers front office.

I look forward to speaking with you,

Coming off of my interview process with the Kansas City Royals a few months earlier, I was stoked, although my enthusiasm was tempered by the fact that I would probably have to move my family back to California. So we set something up.

I surrounded my interview area with baseball encyclopedias, Bill James abstracts, and drink cups from my big stadium tour trip of 1994. I was ready to talk.

The interview lasted 10 minutes. I think that they were disappointed by both lack of web front-end technology and lack of work with another baseball team.

Oh, well. I did write a letter back to the person:

Thanks for talking with me yesterday. I just had some thoughts about the position I would like to share with you after thinking about our talk yesterday.

I get the impression right now is that with no developers, there is a lot of data sitting around in different places and different accounts, with no unifying structure, no data normalization, and of course, no front end to access it all. I could be wrong about that, but that certainly seems to be what is happening here. You probably have Game Day, Stat Cast, and Pitch FX data piling up every day, and you almost certainly have proprietary data being generated by your analysts, 3rd parties you have hired, and your scouting staff.

Some of the problems with this kind of system:

  • Matching one player in one system to the same player in another system is non-trivial. Most vendors probably use player IDs from MLB, but not all do.
  • Adding data for new players entering the system (new players drafted/coming up/signed) means coming up with new playerr IDs, bios, etc.
  • Automation for populating such a system does not exist.
  • Any time data in the system needs updating somebody has to go update some data by hand. This could be as crude as editing an Excel spreadsheet.
  • There is no agreed upon standard for how reports should look, or how you search for things
  • There is no way to see data from disparate sources for the same player or set of players.

If I am right, then what you really need is an architect of your entire data system. This person would be in charge of the whole system. They would be responsible for:

  • Develop an automated system for acquiring data real time.
  • Develop a storage system and unified schema for all of the data sources.
  • Develop a front end design for how data is presented and searched.
  • Develop a front end implementation for the design for whatever end-user systems are necessary.

This person would either do the work or hire 2-3 people to help out. I assert that I can be that architect/project lead/software development manager. I think you need that overall strategic person more that you need a front-end developer right now.

I know that this is a strong statement, but I don’t feel that I adequately expressed myself yesterday.

Whatever you decided to do and however you do decide to proceed, I wish you and the Dodgers luck, even if you don’t decide to move forward with me.


No surprise that I never heard back. The Dodgers seem to be doing OK without me; they appeared in five straight post-seasons since this interview so far…


3M – 2015

A recruiter called me. She told me that she had found my profile on LinkedIn, and had an opportunity that she thought I was uniquely qualified for.

She was recruiting for a company that needed experienced C programmers. I said,

“Did you say C?”


“While it is still the language I am most familiar with, I haven’t programmed in C in earnest in at least 15 years…”

“Well, it is hard to find people who have this experience.”

“Whatever is the software if it is written in C?”

“It’s a system that has both server components in Java, and embedded Linux parts in C.”

Huh. She then told me that it was 3M, which, at the time, was the closest tech employer to my house. Which was cool.

3M left. Then the holding company declared bankruptcy, and the county was going to have a foreclosure auction. That was halted by a judge. And then somebody painted half of the buildings. It’s an empty, creepy place now.

So I said, “OK, but I’m not cheap.”. She then had me connect to a Google doc and answer some screening questions. Some of them were very basic (“On a Linux command line what is a command you could use to copy a file?”), some of them were technical C questions (“C programming question: How would you set (set to 1)  bit 7 in an 8 bit byte?”), which I could do, and then others were networking questions (“In TCP/IP what are the names of the 4 layers?”), for which I had nothing.

Seemed to be good enough, though, so we scheduled an interview.

Turns out the group developed a system that 3M sold around the world to do electronic toll collection on roads.

It’s actually a pretty cool system

I had four technical sessions, 3 about C programming, and one about shell scripting. I had a really good time; the engineers that I talked to were happy to talk to somebody who knew C. Some highlights:

  • They asked me to do some kind of low-level bit manipulation combined with math operations. I asked them, “Can I assume that this is a 2’s complement machine? Because I am really rusty with 1’s complement.”
  • They asked me to write a shell script to traverse a directory hierarchy and do something with matching files (let’s say files that end with .o) I wrote:
find . -name \*.o -exec my_operation '{}' \;


which means, “Starting in the current directory, find every file ending in .o. For all matches, execute the my_operation command using the resulting file name. And that’s the end of this command.”
They said, “OK, Mr. Smartypants, do it without the find command, which uses way too much memory for our devices.” I told them I did not know bash/sh/zsh that well; I usually used python or ruby when I needed to do something that complex. I guessed at some kind of syntax, but I know it wasn’t right. We had a good laugh over that.

They then showed me their lab, where they had cameras, and toy cars, and all kinds of cool toys. Their recruiter drove me around campus, where they had an electronic tollbooth setup for testing purposes.

A good, fun day.

A couple of days later, the recruiter called and said that they wanted to hire me. When she had talked to me before, she had asked what I was currently making. I told her about my salary.

Now, she was offering more than that, but there were a few problems.

  1. 3M rarely hired permanent employees when they started at 3M. They would be contract, W2 employees of another company, with the hope of being converted to permanent after a year. This usually meant:
    1. Hourly work
    2. No holidays or PTO paid
    3. Inferior (or no) medical insurance for several months
    4. Delayed participation in a 401(k) plan.
  2. They had not asked me about secondary compensation, and Mozilla’s bonus program was pretty generous. So their offer was short of what I was used to making from a total compensation standpoint. It was a mistake not to tell her upfront, but I just forgot.

They actually went pretty far to try to get me. They raised the salary as high as they said they could. They offered full medical, full 401(k), and 3 weeks paid PTO. It was flattering.

However, I could not afford the pay cut. When I told the recruiter that, she got very angry. She said things like, “You really screwed me!” and “You’ll never work in this town again!”

I would have had fun working there, at least until 3M closed the place a couple of years later. But that recruiter was not somebody I want to deal with again.



Retail Me Not – 2015

Got this email from a recruiter:

We’re growing our Engineering team and I thought you’d be a great person to speak with. Would you be interested in hearing about new opportunities?
Let me know if that’s of interest to you or brings to mind anyone who might be good for me to speak with, I’d be glad to sync up on the phone and discuss further at your convenience. I’ve also included our link so you can check out the company. Thanks!

That’s funny. The guy that fired me from Lombardi was VP of Engineering at Retail Me Not.
I emailed back:

Your VP of Engineering fired me from Lombardi. I don’t think I would be good fit. You are welcome to submit my resume, but I doubt he would bite.

I got this response:

I spoke with him and he agreed that he didn’t think it would be a good match. He had positive things to say about you but didn’t see a fit between your experience and what we’re ideally looking for.

Let’s definitely stay in touch. I’d love to reconnect when we have something come up that is a better match.

He had positive things to say about me? That’s actually nice. I was happy with that.

As for staying in touch, I am still (kinda) waiting…

Oh, and that VP was let go after a couple of more years. I don’t wish him ill, but I am sure he landed on his feet anyway.


Apple – 2015

apple maps
This image is from later than 2015, but you get the idea.

I randomly got a message one day on LinkedIn:

Want to re-join Apple 🙂 ?

We have some awesome challenges ahead in Apple Maps and I’m looking for key talent to join my organization – when I went through my connections on LinkedIn I found your profile – and you look like a potentially great fit.

Maps is a big data problem that is dynamically changing underneath a service and client architecture delivered across multiple platforms. Its a fantastic challenge. My team is looking for great engineering leaders who are interested in building intelligent automated systems to help streamline the content delivery process.

The organization is growing rapidly so there is a lot of opportunity for growth and a chance to play with all sorts of interesting technology with the smartest people on the planet.

If you are interested please shoot me an email and we can set some time up to talk and I will rope in my recruiting team.


Apple Maps had had a very rough introduction. Somebody who I worked with on the Mac OS X Program Team had been promoted to VP of Software, and he was let go after Maps had so many problems. That was 2-3 years earlier, but I had heard through the podcasts I listened to about the industry that Apple was doing a lot of hiring in this area.

So when, this Apple manager reached out to me, I listened. I still missed Apple. I did not miss California, but this opportunity sounded fantastic.

It just so happened that I was going to be a work trip to CA the next week anyway. After some back and forth, we setup a time to talk.

And I had a blast talking to him. We talked about front-end challenges (app vs. browser; ios vs. android), and we talked about the large amount of backend hardware necessary. We talked about getting map data from a vendor vs. collecting it organically. We both left the meeting amped up, and I was looking forward to hearing from him.

And the day after, I did:

Thanks a lot for your time and your insights – very appreciated. I was excited, but unfortunately we have decided to go a different direction with this position.

Initially, I thought that perhaps he had talked to somebody on campus about me and heard something he did not like, but that’s my own paranoia and imposter syndrome showing.

“We have decided to go a different direction” is code for “we were going to hire a manager from outside, but my bosses decided to re-org the department instead”. It looks like they decided to buy some tech to cover the gaps soon after I talked to this guy. So I was right; they no longer needed another manager because they bought a company.



Kansas City Royals – 2014

Your 2014 American League Champions!


I have talked about my interest in working in baseball throughout this blog (like Project Scoresheet – 1989). There is a website called TeamWork Online that is a place where the vast majority of teams in baseball post all of their jobs. I have an alert for jobs I might be interested in.

The Royals had just been to their first World Series in 19 years, and right after that, I got notified that they had a job opening called “Systems Architect/Deverloper, Baseball Analytics – Kansas City Royals (Kansas City, MO)“. The job listing talked about maintaining internal websites, working on databases, capturing statistics real time, etc. Right up my alley!

I was fairly happy at Mozilla, but, really, baseball!

This time, I got a response:

Thank you for completing the teamwork application. Just to give you a little background, the position we are looking to fill in the past was in charge of everything from managing our data imports to developing web/mobile applications for wider us through the organization. Our existing architecture mostly uses MySQL and Ruby on Rails, and we are looking for the new hire to take over a great deal of code a varying stages of completion along with moving forward into new areas. As this position will for the short term at least be our only dedicated developer they will work with autonomy in this area in terms of how they choose to execute projects. Based on your resume it looks like you are proficient in those technologies and many more, does our specific opportunity or are you more comfortable starting from scratch and/or working with a team of developers?

Our goal is to fill the position ASAP to get ready for next season but we will continue our search as long as necessary to find the right candidate. Because the baseball season is long and the commitment by employees significant the personality fit is as important as the skill-set in our search. As for next steps in our interview process we would like to see an example of work product if possible. A web app you have developed that is accessible publically would be great (or access to relevant code on GitHub). If not we can send along a self-contained project to accomplish the same. Thanks very much for your time and interest.

I could hardly believe it when I read this. I was doing a little happy dance inside. This sounded great!

I replied:

Thanks for getting back to me so promptly.

I am comfortable however things need to proceed. My vision is working alone on the code while developing a long-term strategy for where the system needs to be. Once the strategy is articulated, I can then build a team to build the new or overhauled system.

As for an example of my coding, you are going to have to send me a self-contained project. The only part of this entire stack that I really have little experience on is building the actual web apps. My development experience is with client-side or standalone app development. The rest of my experience is with the rest of project development – building of systems, deployment of web apps, testing, managing the product cycle, building teams, etc.. I hope this is not a hurdle, but I hope I can prove my ability to learn quickly by completing your self-contained project.

Let me know; I am looking forward to us talking more. Thanks!

We then talked on the phone for a while. He told me he was going to send me a task to do, a programming test. I told him the truth; we were travelling for the Thanksgiving holiday. And then, I had to go to Portland for Mozilla’s All Hands Meeting for another week, so it was going to be a while before I could tackle the problem.

And then I came back from Portland with the Mozflu, and I was laid out for several more days.

I finally got started on the project. It had sample anonymized data from PitchFX, a system which tracks every pitch. I was told I needed to present this data in an interesting way using Ruby-on-Rails, which I did not know at all.

I bought an online course and spent a few hours reading and playing with sample code, and the I wrote something which presented a histogram of average velocities of a given pitcher for the first 10 pitches, the next 10, etc.

I was quick and dirty and it was ugly, but I had something to turn in.

A couple of days later, the manager called me. He told me that they had narrowed it down to two. They liked my general experience a lot, but that the other candidate had more direct experience with Ruby-on-Rails, so they were going to go with him.

Still, I almost got a job in baseball!

It was hard to be disappointed.

Evernote – 2014

If you have to sync with Windows or Android, it’s still a great product. Highly recommended.


The second Wednesday after I started at Mozilla, while I was still in the Bay Area for orientation and training, I got this note:

I came across your profile today and was very impressed with your background and projects!  I’m not sure if you’re familiar with Evernote, but our goal is to help the world remember everything, communicate effectively, and get things done. We’re now nearing 100 million users worldwide!
We currently have a Mac OS opportunity available and your background looks like a great match! To tell you a bit more, our core team will always stay small (we say no larger than you’d invite to your house for dinner), but at Evernote, a lot of our initiatives are cross-platform so we often have other engineers cycle on and off as needed for various bits of functionality. We currently have a lot of these initiatives going so there are probably another 8-10 engineers in our codebase right now located around the US, Germany, and Switzerland. Our Design and QA also sit right next to us. We’re like a big family.
With regards to our projects, we are in the midst of a complete redesign of our existing Evernote Mac application. It will include sweeping architectural changes that will allow us to take advantage of more recent OS X technologies as well as share more code with our other Evernote clients. Our goal is to produce a much more light-weight client that feels quick, responsive and modern.
If this sounds interesting to you, please let me know a good time to chat further!

Argh! Where were they 3 weeks earlier? Or better yet, two months earlier?

I responded that I had just started a new job, and that I wasn’t interested in moving to the Bay Area anyway, and they responded:

Thanks for getting back to me! We are open to remote work for this role if the skill set is suiting for what we are looking for. I don’t want to waste your time so please let me know if you are wanting to learn more and I will definitely set up some time for you. However, congrats on your new role with Mozilla!
Looking forward to hearing back!

Now I was in a quandary.

I took the job at Mozilla for three reasons.

  1. I needed to work, and it was the only offer I had. It was a QA job, and I had been hoping to be rid of QA forever, but what can you do?
  2. One of my best friends recommended me, one of my favorite managers was the VP, and another acquaintance was a former coworker of mine, all from Cygnus.
  3. It was work on open-source, which I had missed since leaving Cygnus/Red Hat.

So, I knew nobody at Evernote. It was certainly not open source.

But, I loved the product and used it. It would have meant staying as a software developer, rather than being in QA. And, I could have worked remotely.

I should have interviewed. I was already in CA; they and I could have got the interview process to work. And then, if I got an offer, considered it on its merits. If I accepted an offer, it would have meant telling 3 friends that their recommendations and interviewing were a big waste of time.

So I said no.


  • I loved Evernote, but their pricing started being pretty high. And then Apple introduced Notes with iCloud syncing. Since I did not have to sync my notes with Android or Windows anyway, I ditched Evernote at that point. It’s a shame when Apple Sherlocks you.
  • You have to take care of yourself. Disappointing my friends was the primary reason I did not interview. I will never know if that position would have worked out, but I knew it was in development which is what I wanted. I should have taken care of myself; true friends would have understood.



Google Again – 2014

On my third day on the job at Mozilla, I got an email from Google (see Google – 2014 and War of Attrition – 2014 for my previous encounter with them in 2014):

I came across your background from a previous application and I’d like to know if you’re open to exploring roles at Google again. If you are, I’d be happy to set up a time to speak with you about roles in the Software Engineering department. Let me know a good day and time for us to chat privately, best contact number and I’ll set something up at your convenience.

Also, if you could forward me a copy of your resume. Thanks and I look forward to hearing from you!

I replied:

David, thanks for contacting me. I just interviewed at Google in February, and was not extended an offer. I just started a job at Mozilla this week. Not only that, but Mozilla is allowing me to work at home in Austin. I am not likely to want to move to the Bay Area.

That being said, I am open to talking to you. I am available at 9:00 tomorrow if you want to call me. I am in town this week training at Mozilla.

I don’t think you would convince me to move at this point.

He did call, and we talked. Turns out, Google had two separate files on me, so he did not know that I had talked to them in the previous few weeks. He promised to consolidate those files. He was still willing to start the process if I wanted to interview again. I still really wanted to get back in to software development instead of QA, but there were several strikes against it:

  • I would have to move to California again, instead of working at home.
  • One of my best friends started me on this job. One of the best managers I had worked with was now my grandboss. I had another friend in the same department. I would have screwed all of them somewhat if I had left after only a few weeks/months.
  • I just did not feel right about interviewing for another job the first week on a new job.

So I said, No Thank You.

That being said, I already saw problems at Mozilla.

  • There had been a CEO controversy that sprang up between the time I accepted the job and the time I had shown up. My first day was the first day of the new, second-choice CEO.
  • The Desktop browser division, of which I was now a part, was not being funded anymore; we were on maintenance mode. All of the energy and money was going towards Firefox OS, a new mobile phone OS designed to go onto phones in developing countries. Walt Mossberg has an excellent history of this process.
  • There was no energy in the people in the office. Everybody was depressed. There was a feeling of despair in the air.

So, on the 3rd day, I knew something wasn’t great about Mozilla. Which is a shame, since I was so excited to be in open source again.