my programming story [01/14/2008 13:36:39]
I never set out to be a programmer. I just did it for fun, and eventually figured out people would pay me for it. :)
I'd been exposed to programming in school as far back as 2nd grade. I taught myself GW-BASIC on the machines in middle school. My parents bought me a 386 for my 13th birthday, and I later talked them into buying me a copy of Turbo Pascal. After that, I always had some new game or command-line utility I was working on.
After my freshman year in college (where I took assembly and C++), my dad got me a summer internship where he worked. I did QA for a new windows app they were building. The QA manager was a computer scientist, though, and very big on automated testing. I spent the summer writing automated test suites in Visual Test (basically VBScript). That was the first time I ever collaborated with another programmer, and between QA and the main developers, I learned a lot about writing clear code - picking good variable names, code layout, etc.
Eventually I moved to Atlanta and took a job doing IT support for a small medical practice. I did their network stuff, and built a few websites for them (picking up perl in the process). They had this really clunky practice management software with an Access database for the backend. It was incredibly slow, and the ladies in collections were always complaining that they had to pull up three or four different screens just to make one phone call. So I designed a new report for them that had all their calls for the day with all the information they needed for each call, and they could just go down the list.
The company that made this software was local, and I got to know them pretty well, and eventually I went to work for them. It was my first "real" programming job, but it was a startup and didn't pay very well, and they were always sending me around the country to do training sessions. I wasn't very happy there, and I really wanted to work on the web, so eventually I jumped ship.
I spent the next few years at Abel Solutions, Inc, a small Microsoft-based consulting shop. We did a lot of work with Fortune 500 companies, state governments, and big NGOs like CARE. It was fun to go in and see how these places worked and then design tools to help them streamline their operations. The owner (Kevin Abel) became something of a role model for me. He taught me a lot about professionalism and business in general. Eventually I left to start my own company, but have kept in touch and gone back a few times to work on projects at ASI.
My first company never quite got off the ground. I was teaching my friend Zach to program, and together we wrote this little PHP shopping cart for a small vitamin distributor. After that shipped, Zach and I decided to go into the shopping cart business. I rewrote the app in python (which I had recently learned), and he found a few other small stores willing to pay for customized websites. We probably broke even, but never quite got around to launching the service.
At some point, I realized that while we had some neat software, we didn't have any sort of infrastructure in place. We didn't know anything about billing clients or even running our own servers. Meanwhile, I had a site that was getting a lot of traffic at the time (linkwatcher.com, the first ever blog aggregator) and so I signed up with a data center to get my own server. I figured I could sell some hosting accounts to my friends to cover the cost of the server, and give myself a little prototype business to learn about billing and managing accounts.
Unfortunately for the shopping cart startup, the hosting business took off. It's been my full time job for most of the past seven years. Although the shopping cart software is no longer maintained, I've been developing a web framework based on that codebase ever since. It now powers my control panel, billing system, and various other utilities around my company. I've also done extensive programming work on the server admin side. I have a large collection of management scripts, as well as a fairly complex monitoring system that can detect and repair common problems that creep up in a shared hosting environment.
While cornerhost pays the bills, it has also given me a lot of free time to work on other projects that interest me. Some of these include:
- spent a couple months working in an eXtreme Programming Java shop
- lead a volunteer team in the first pyweek game development challenge, producing a 2d game engine based on vector graphics and real physics. We didn't quite have time to finish the game. :)
- lead the development of a python compiler for parrot, the generic virtual machine for dynamic languages (currently stalled)
- experimented with a technique for outline-based narrative programming. (You can see a prototype at http://javascriptgamer.com/brickslayer/trail/ )
- dabbled in many obscure and up-and-coming programming languages, including haskell, ruby, squeak, d, c#, prolog, lisp, and (soon) erlang.
Currently, much of my workload involves answering support email. I would really like to be more of a manager in this area, so I can spend more of my time programming and marketing. The reason I'm looking for outside work is to cut my dependence on the hosting paycheck, so I can free up that corporate money to hire help with support.
