A resume can only say so much. I thought I should make available a longer form story of my career.

Before Career

It all started with a Commodore64. I grew up in a very small town, like 250 people small. We weren't very well off but I was able to get a computer for Christmas one year. When I wasn't doing typical country stuff like shooting frogs with bb-guns or riding our bikes out to a swimming hole I was messing around on my Commodore64. I taught myself basic. I wish I could say I was more of a prodigy on it, I didn't write any games but I did stay up late figuring things out and writing code. I sent a very small article for the Hints and Tips section of Compute's Gazette in July 1986. It was published, I remember getting a check for like $40.

In high-school I completely dropped computers. I was a ding-a-ling, I didn't have much discipline other than for lifting weights. After high-school I enlisted in the Marines. I was primarily trained as an infantry rifleman with additional weapons, urban combat and terrorism training. My role job was to guard weapons at the now defunct NAS Alameda. If you have ever seen Myth Busters and they are doing stunts on a big landing strip, it's a few hundred yards from where I worked, across the bay from San Francisco. After that I went on to a Light Armored Infantry unit stationed in 29 Palms, California. I went to Somalia for 4 months, it was hot.

When I left the Marines the plan was for me to get a degree in Law Enforcement. That's the obvious choice when you've been a rifleman and security guard for 4 years. My draw towards computers was re-kindled and when I thought I might be able to get through the required math I decided to get a degree in computer science.

Since I was at a community college the first programming class was in COBOL. It was fun, it gave me an appreciation for good old fashioned flow-charts. Then I took a class in Pascal. After getting all my general education classes out of the way I went on to Bradley University in Peoria, Illinois.

Affina

I found a job as an inbound electronics tech-support phone operator while I was in school. While working on the phones I saw an internal job posting for a COBOL programmer so I applied. I didn't have a degree or anything but I was hired. So yeah, writing reports in COBOL, Job Control Language, walking across the street to pick up a stack of green-bar to see how well your job ran.

I can't say I ever want to work on COBOL again but one thing that did stick with me was getting good test data for the work you are about to do. When you have to walk across the parking lot to see if your job ran well then it makes sense to be deliberate about testing.

Serendipitously, Uche Ogbuji landed at the company I was at in Peoria, IL. I was able to get assigned to some efforts he was leading up. One of my first assignments was turn a big proprietary knowledge-base into standard HTML and JavaScript. Being a CS student I thought to grab C but Uche was a fan of Python and he encouraged me to look into it. It turned out to be a great tool for the job. I was able to use Python for other tasks and put together some internal CGI web-based tools on the company intranet using Python.

I was pulled into a big data-warehousing effort as well. I was mostly involved in extracting usable data from existing DB2 schemas. I have seen truly shocking ways that you can design a database. That experience is probably one reason why I really like a well designed, normalized database.

ASD Interactive

I was acquainted with someone that worked at Caterpillar and he said I should look into the Java programming language. I did, I like learning and that's what I did on my own. With that I was able to apply at a local company that was doing e-commerce using Java. It was all very new, we also used a lot of IBM tools like DB2 and the IBM application server. I remember writing JDBC code in my JSPs.

It was also the early days of JavaScript. We were a little consulting shop and at one point I had to take a call from a client that wanted to know why some customers couldn't complete their transaction. It turned out that there was JavaScript code that didn't work well across browsers. It wasn't a fun call and it's probably why I have largely avoided JavaScript until very recently.

Level3

I graduated with a bachelor's degree in computer science. While still in Illinois I saw a job posting from Level3 in Broomfield, CO looking for Python. I liked programming in Python so I applied. I flew out to Colorado and my resume was diverted to a team that was in need of a Java programmer. So I was on a team that did J2EE on Netscape Application Server as well as BEA WebLogic.

I was finally in a situation where there were a lot of brilliant people around to learn from. After the crash of 2001 and 9/11 there were continual rounds of layoffs but I avoided the axe either by being good at what I did or just under-paid.

At some points while at Level3 I worked over 20 days straight including weekends. Another time I wrote code for over 24 hours to prepare for a demo. I also saw a good performer let go on a Monday after she worked the whole weekend. That lessened my appetite to work a lot more than 40 hours a week other than for specific crunch-times.

Avaya

I moved on to Avaya for a change of pace. It was another great group of people. We took initiative in terms of technology and process, we did great things. The work we did wasn't incredibly fun, we wrote software to integrate IBM groupware and communications software with the Avaya PBX to do things like initiate phone calls.

From Avaya I learned that you can nail the software, win the battle but lose the war. To achieve the goals that were laid out for us we had to step on some toes. This turned out to be bad enough that everyone on the team scattered soon after our project was done.

OpenLogic

I'm a fan of open-source technology so I thought it'd be great to work at OpenLogic. The company's premise was to help their customers safely use open-source tools and libraries. At first I helped normalize open-source software into packages that could be distributed with their tooling. I also did Java web application development using JSF, SOAP and Hibernate. I don't like JSF, I never want to work with it again.

Other than a few amazing people, frankly it was an odd little culture. It was acceptable for your IDE to be full of red squiggly errors. At one point in a private conversation with the CIO I respectfully suggested that the existing architecture needed to be scrapped. A few weeks later I was laid off. He was mainly responsible for the existing architecture. I feel I owe my employer the truth, delivered respectfully and possibly in private conversations. In the past when I have kept quiet I have come to regret it.

Dash Carrier Services

A friend introduced me to Dash Carrier Services. I was there for about three and a half years. They had recently acquired another company and they wanted to replace the .NET stack with something they could build on. I came on as the sole engineer for what would become a lot of greenfield work. We eventually built up a team of about six people through hiring and acquisitions. The CEO was Justin Nelson, I've never seen so much technical ability, business acumen, intelligence and guts in a single person. We also brought on Johnny Wey, if you're in Denver you probably know that guy can crank at writing software, highly capable folks.

I've never been so proud of the work I've done than when I worked at Dash, it was a feeling of being alive and in control. On a scrappy budget, in a startup environment we routed origination, termination and 911 calls among other phone (VoIP) services. Say 911 call routing and scrappy budget in the same sentence and you might understand that towards the end it was stressful.

Time Warner Cable

Some former co-workers that I highly respect were at TWC and I joined them. Time Warner Cable set up an office in downtown Denver. The idea was to be something of a startup inside of a legacy cable company.

Initially we worked on the first streaming cable application for the iPad. We built edge services in Java so the iPad knew that you were a valid user, what channels you could watch and so on. To do this we talked to a variety of back-end systems that used different variations of ReST and SOAP as needed. The goal was to come up with simple APIs so that the code running on devices could be more simple and abstracted from our back-office complexities. Time Warner Cable won a Philo T. Farnsworth Award for our efforts.

As Time Warner Cable expanded IP video we continued to do more work on that. Through organizational changes some of us eventually morphed into working on our customer-facing portals. Existing portals were in ColdFusion, we ported them to Grails. At about the same time our team decided to embrace Scala for our back-end middleware tier that talked to about a dozen other systems to come up with an API the portals could use.

Scala was fun but the danger is that you can write code that is hard to maintain. I wouldn't mind working with it again but I would have to know that the team is dedicated to writing pragmatic software. Scala code has a feeling of being tight. I apply those concepts to Java8 and Groovy. I think I'm a better Java developer for having done Scala.

I went on to work on 2 Groovy / Grails applications that allow Time Warner Cable customers to pay their bills. I also worked with a Java8 and PostgreSQL to create a system to store customer events.

Where I'm At

I've been in the JVM space for almost 20 years. I was an early adopter of Java8, I like doing a little functional programming inside of easy to understand Java. I can do Groovy and Grails code but I'll add types to most everything I instantiate. I like the IDE and compiler keeping me honest. Although I'm sure I could pick it back up I'd have a hard time positioning myself as a Scala programmer even though I did it for a few years.

On teams I can be something of a void filler. For example if process is figured out then it's something I don't care about. If it's a problem then I'm interested and trying to get it figured out. I'm typically the guy willing to ask questions, my desire to understand things outweighs my concern for looking stupid. I'm also the guy that wants to draw pictures to hash out design or a problem. I'm not much of a control freak but honestly I draw pictures better and in a way that brings out the important points to understand.

I also have a blog post on my experience with Strengths Finder and how it's mostly accurate.

I've been a remote worker for 3 years. I acknowledge that there's nothing better than people standing at a whiteboard when it comes to communication. But I think I'm good at working remotely. If at all possible I'd like to continue doing that.