Most of my online creative work has been personal output that isn’t directly tied to work.
I take a fair number of photographs and periodically post the ones I like most to Flickr, but that’s an artistic outlet. I could have been a professional photographer had I dedicated myself to that, but I don’t love it enough to do it day in and day out.
I post to twitter. Sometimes that’s technology related, but most of it is just random thoughts and responses to other people’s comments on twitter.
I write on my blog. Sometimes that’s technology related, but mostly when it is, it’s about technology policy, or the impact of technology on society. Usually, it’s something about privacy, or security, or online tracking, or politics, or lead in toys, or education. Often, it’s just something about food or cooking (another thing I think I’m very good at, but don’t love enough to do for a living).
Work has remained mostly work, with the people I’m working with. I write about technical things on mailing lists, but those are generally not public, and I’d like to share more.
So here we go. I think it took a long time to get to this point because I have a hard time defining what it is I actually do.
On a day to day basis, I have my hands in everything needed to build and run a web application, from the ground up. With the exception of making it look pretty, I could do most of it by myself if I had to, though I prefer to work in teams. Often, I find myself doing aspects of:
- requirements analysis
- technical specifications
- business process integration
- listening, distilling, and drawing detailed informational diagrams
- systems design and technical architecture
- project management
- development in a number of different languages, and learning new languages if needed
- caching system design and implementation
- user interface design / user interaction design
- general application performance and scaling engineering
- api / network protocol design
- data modeling
- database implementation, tuning, and maintenance
- server hardware installation, tuning, and maintenance
- server OS installation, tuning, and maintenance
- backup and backup strategies
- load balancing / routing configuration
- testing and deployment mechanisms
- setting up some piece of packaged software that I didn’t write
- developing and carrying out QA plans
- probably a whole bunch of other stuff I’m forgetting at the moment
I don’t have a single name for all of that, but I’m open to suggestions.
My ideal job is about 40% coding and data modeling, 10% solving weird optimization problems, and 50% designing intricate-yet-elegant processes for both user-facing and machine-facing problems. I strongly prefer ruby to other languages because of its staggering elegance, but I’m comfortable working in other languages when they have strengths that ruby currently lacks.
I primarily use Linux (Gentoo if possible) and BSD for server environments, and I’ve completely moved my desktop/laptop workspace over to OSX as of 2008.
That’s the work stuff I’m going to talk about here.