I have been working on a computer since 1982 when my father brought home an Apple ][+. It was a new world and I spent many long hours exploring how to control the system. At first, I wrote programs in Basic. I then went on to explore machine language (anyone remember call -151). My dad bought a language card that boosted the system from 48KB up to 64KB. Now I was able to explore Integer Basic. Later he added a second disk drive and I could then play around in Pascal. Yes, you could work with Pascal with just the language card but you’d be constantly flipping disks when you’d go to compile so 2 disk drives made it much easier. I wrote a program that would quiz me on Latin vocabulary. I wrote another one that my dad used for looking at stock market data in a variety of ways. Dad picked up a dot matrix printer (Epson, I think) and I also typed in papers for my mom’s classes for her B.S. and M.S. degrees as well as some of her work related documents (my first computer related job for real money).
As an undergrad studying Russian I didn’t do much with computers other than word processing and playing around with fonts. My roommates were comp-sci majors so I had some interaction with computers but not as much as before. As a graduate student in Slavic Linguistics, I took a course on programming for teaching foreign languages. The final project was a HyperCard stack intended to help students learn the Russian language using a new methodology called “Basic Sounds”. The Prof in charge of Russian language teaching at the time, Natalia Pervukhina, liked the idea and made the stack available to all students of Russian.
When I began the study of Slavic languages, it was all a big puzzle. As I continued to study more and more of the pieces began to fit together. At the end, much of the puzzle was solved or at least I knew enough to know where to look if I had any questions. So, I set foot on the “outside” world. At this time a friend of mine (Joe) was working for Wolfram Research. Joe got me an interview for a position in Academic Sales. I guess they liked be well enough to hire me. I soon found out that sales was not for me. I found and bought a used NeXT Computer and learned as much about Wolfram’s Mathematica as I could. I then moved from sales to technical support. It was here where the insignificant information I had about computers grew and grew.
In the early ’90s, the WWW was still in its infancy and was no way near as ubiquitous as it is today. Email was pretty popular, especially with those who would buy/use Mathematica, so the technical support team did answer questions via email. However, many of the questions came in by phone or fax. Since Mathematica ran on over 15 different computer platforms, that meant that we had to be able to switch gears quickly from call to call. When you picked up the phone you never knew whether the question would be about a Windows 3.1 video driver issue, or a Mac OS 8 memory issue, or a (name your flavor of) Unix issue (maybe even an X11 problem – you wouldn’t believe how many people had no idea what $DISPLAY is for or how to use xhost). It could have been about a single machine or about a large heterogeneous network of machines at a university.
The people who worked at Wolfram were some of the smartest in the world. I was surrounded by people who held Ph.D.s in mathematics, physics, and economics. The head of the Tech Support department has a Ph.D. in physics. I was very lucky that he was also very willing to answer questions no matter how simple. I remember being totally blown away by how he showed me how computers deal with negative numbers. The thought had never occurred to me that a system that deals in 0s and 1s would have to somehow understand the concept of negative numbers.
I got married in the summer of 1996. That winter my wife and I went to visit her sister in Arizona. Her sister’s husband worked for Shamrock Foods. He said that they are hiring and asked if I’d like to interview. What the heck. So I did. They must have liked what they saw because we had only a few weeks to pack up and move so that I could start in February of 1997. They hired me (at twice the pay) to fix their web site. You see, a contracting firm had been working on it for a year and they still had no site. I got the first version of their site up and played a small part in getting their systems ready for the Y2K problems. In all I worked there for a year until I got a better offer from a contract firm. For the next few years I hopped from job to job riding the crazy dot-com wave each job more interesting and more lucrative than the previous.
In 2002 I was working for a dot-com startup called Pure Carbon (nee Intralect). After Wolfram Research the job with Pure Carbon was probably the most enjoyable job of my career. I was working from home, I was learning a great deal, the people were very smart and everyone got along. Sure there were arguments but it wasn’t so much because of ego as it was a very strong desire to make the product the best it could be. I was in the last group to be laid off. It wasn’t until a few months later that I was hired by NT Media (who later merged with Village Voice to become Village Voice Media).
Working at NT Media/Village Voice Media was a good job. I liked the product they produced. I liked the idea of being “alternative media”. I loved that they were using mostly Open Source solutions. So I stuck around for several years. Toward the end, that friend who had gotten me a foot in the door at Wolfram Research had moved to Arizona and I ended up getting him an interview here (he got hired and is still working there). One of the challenges we had was that before I started, each solution was accomplished in a different way. Whoever was working on the solution decided, “Hey, I’d like to learn python today.” So that solution was written in python. The next might be written in Visual Basic. The next in C. And so on. The CIO worked hard with the developers to define the core languages. We settled on Java and PHP. The CIO came from a Microsoft background and I think he liked the idea of using at least something that was “industry standard” and so Java made the list. I guess he had also read somewhere that PHP was a solid system and that there was a large pool of PHP developers to pick from so PHP made the list.
Around 2004 we moved from Arizona back to the Mid-West to be closer to family. NT Media/Village Voice Media was very cool about this move. There is a paper in St. Louis that NT Media/Village Voice Media owns (Riverfront Times). They said I could continue to work for corporate from STL and just work out of the RFT offices. After a few months, they agreed that I could work from home. Excellent.
As time went by, more and more PHP was used and less and less Java. Not that I’m for one over the other but let’s face it, PHP isn’t all that challenging of a language. Spend a few weeks with it and you’ve pretty much nailed it. Besides, while PHP can be used for more than web programming, it wasn’t being used for much here. Also there wasn’t really anything all that unusual that made the job challenging. I simply became bored. I knew it. The CIO and Business Analyst knew it. So we had a talk about it. We all agreed that we’d search for something within the company that would pique my interest but if nothing came up perhaps it was time for me to move on. When I left there were no hard feelings. I was up front with them about my boredom and I understood they could not change course just because I lost interest. I left there at the end of 2006.
In January of 2007 I began working for the consulting firm, Sogeti USA. I am a consultant to Monsanto, Inc. This was another position where I had had the opportunity to learn a great deal. Monsanto has a very well organized IT department. I’ve never worked for a company with a more organized IT shop. They have done something I don’t think many IT shops have been able to do. Through numbers they have proven to the business that IT matters. They have proven with numbers that short iterations and testing saves time and money. The IT department has convinced the upper management to back all testing. All developers must go through a Test First/Driven Design course. They have a test department and write out test plans.
When I first started it was a complete 180 from what I was used to. I went from being relatively ok with little or no testing to testing than I had ever seen in my life. I went from writing tests AFTER the code was “complete”, if any tests were written at all, to writing the test first. I am now uncomfortable if I start to do something and I don’t have a test for it. I mean, even if I’m planning on adding something a simple as a condition to check whether a parameter passed to a method is null, it’s a struggle to do so without creating a test first.
I won’t lie. It was rough. This test-first thing went against everything that I had been doing for the past 15 years. Old habits, you know. But I have to say if I have to refactor a class or even a method, having tests to demonstrate that my change didn’t screw up the existing functionality is a lot less stressful.
I am currently employed at Announce Media. Now this place is what I call a challenge. It’s a techie’s dream. I am the Technical Lead of the Decision Analytics and Core Services group. Basically we’re the back end group. We make it easier for everyone else in the company to make sense of huge data sets (millions of rows). The Decision Analytics part involves data importing, processing, and reporting. The Core Services part provides the means for accessing the data in a quick and efficient manner. We’re using SCRUM (or at least a variant of SCRUM) to help manage projects and expectations.
In March 2010 I switched to the Search & Content team. We primarily work with Apache SOLR. In the last couple of months we’ve started using Apache Hadoop and Map/Reduce to process large amounts of data and generating SOLR indexes from those data. I figured out how we can create SOLR indexes in the challenging world of hadoop’s distributed architecture. It’s a fascinating process. I’ve recently taken on development of our ontology project. The ontology is specific to our business and now contains nearly 30,000 nodes (in addition to synonyms, typos, and facets). We’ve put the ontology to use in both the indexing process as well as the search process. In the near future ontology will play a larger role in more of our company’s projects.