I started programming during middle school in 2002. There was a relatively below-average course there teaching basic HTML. The class was supposed to be using DreamWeaver, but I couldn't stand it. There wasn't enough control over the way the code came out, and the pages looked wrong. So I switched to UltraEdit and wrote by hand.
This should have been my first hint that something was wrong.
Time is a fickle thing, and one thing led to another. I'm not entirely sure what came next, but by trying to piece together the past decade I've reconstructed some of the bigger turning points in my progression.
First, in high school they had a wonderful CS course. I took it twice. It was supposed to be a four-year course, but the teacher told me that after I took the AP (college) exam at the end of my second year that there wasn't anything more for me. That course used Java, which I continued with until college.
In college I took a J2EE course, and figured out that Java wasn't the path for me. I had previously messed around with several other languages. C++, Digital Mars D, and others, plus something called Objective-C that a good friend had been encouraging me to get into.
Then this thing called the iPhone happened.
I had a buddy who bought an iPhone while I was still in high school. It was a nice phone, but I didn't particularly appreciate it. The touch interface was curious, but I didn't see what was so special. Little did I know that it would consume the next few years of my life! Apple released the first iPhone SDK (remember when it was iPhone OS, not iOS?) Suddenly anyone who had even sneezed in the presence of Xcode was a valuable commodity. And suddenly the iPhone became this wonderful pandora's box of possibilities because I could put code on it. Suddenly the iPhone became more than just another, more expensive phone. It became a toy.
I took my first paying job for iPhone app development, as an intern at a small dev shop in California. We wrote a few apps, had a lot of fun, and wrote a lot of code. The following summer I took another paid internship writing iOS apps. It was good money, and I loved the work. Something about being able to finally create something that other people could use and appreciate was simply exciting.
Then my life was FamilySearch. I took a two-year volunteer position for the non-profit, and that's where everything and the kitchen sink came out. I was tasked with API development, iOS and mobilization investigation, and a lot of Rails work. It was the exact opposite of where my skill set was headed, but you know the thing about diversification? It never hurts.
A lot has changed since 2002. I'm typing this in MacVim, using a HAML-engine to generate actual HTML. All this is baked through a static-site generator called Middleman, a Sprockets-based tool written in Ruby. But you don't particularly care about that, now do you? It was a different set of tools and requirements from what I'd trained myself for, but I learned it quickly and made valuable contributions to the team.
The takeaway is that I'm obsessive about this stuff, and I've been doing it for a long time. There's two essential kinds of coders: people who view it as a job, and people who view it as a way of life. I breathe code, for better or for worse. I see solutions to problems in my sleep and in the shower. Being away from my dev tools is irritating to me! I'm a programmer, it's part of how I think and it's part of who I am.
But the story isn't done yet. Page last updated 1 октябрь 2012 г.
Feel free to contact me about anything. I prefer email communications, but anything goes.
I do not use Twitter, Facebook, Google+, or any other social network. Please do not expect to find me on one. If you do, you've probably found a different Chris Miller. I knew a Chris E. Miller who was in the Digital Mars D programming community, for instance. There's a lot of us, so keep that little factoid in mind.
I bring a very particular set of skills to the table. Most are centered around optimization and native code, though I have expertise in higher-level scripting languages, as well as SQL. This makes me a very technologically dynamic individual, able to work on almost any part of any technology stack. The following are my strongest languages/platforms, though this is by no means a comprehensive list!
I've been programming iOS since the first SDK, and without any misrepresentation I can say that I'm pretty good at it. Take a gander at my portfolio or read some of the entries on my personal blog. My code lives in shipping apps right now, which is I think the strongest indicator of what I can do.
There are, in regards to C++, two kinds of programmers: those who avoid it, and those who are always trying to find some project that fits the right profile for C++ to be the right tool for the job. I like C++. I think it's a fascinating language, and I relish the opportunities (rare though they are) to work with it. I'm always looking for more opportunities to use this excellent and challenging language!
- Assembler (x86)
I have experience with x86 using MASM, though I never had the opportunity to break into NASM. I think assembler is a great way of optimizing parts of programs that have been proven to be a bottleneck (and no amount of refactoring can cure it otherwise). Personally, I think assembler programming is fun. You might not agree, but to each his own.
I'm also aware of particular performance implications that come with the lower-level knowledge you get from assembler (how to avoid jumps, SIMD optimization, vectorization, etc.). Please understand that I'm versed in it, but because of the rarity of this kind of work, I can't prattle compile-able code off the top of my head.
- Ruby [on Rails]
After several years on the platform now, I'm at the point where I'm no longer dangerous - indeed, quite an asset! I started with a strong MVC-understanding. I've used that springboard to develop skills in writing tests (rspec is my favorite) and focusing on writing better code instead of just more of it. Yes, I'm to the point of focusing on correctness rather than just shipping something that works.
I'm well-versed in non-Rails things, too. Sinatra, Rake, Thor, Middleman, Jekyll, Ruhoh, and others are all familiar stomping grounds for me. This site, in fact, is generated by Middleman, a tool for baking static websites. I tend to blog about Ruby a lot, so you might be interested in my personal blog as well.
I work with development teams to build fast, high-quality, maintainable products. I do not accept solo-development requests (ie. "can u build me this iphone app plz"). I do not broker better prices with past or present employers.
If you're an employer, know that I have a list of demands. These will be met:
- I expect to be given real work assignments that will add meaningful value to the product.
- I demand the opportunity to build software that surprises, delights, and inspires customers.
- I expect that it will not be easy. I want challenges. I want to build tough code for tough problems. Anything lesser is a target for automation.
My past platforms of development have been predominantly Mac and iOS. I'm not picky. I've been coding long enough to know that I can succeed on any platform with any toolset. Do not think for a second that I'm scared of your platform or your toolchain.
If you're still reading, you'll want to know this boring minutiae as well:
- I work on a 1099 form unless you're a full-time employer
- I am no longer offering internship rates
- I'm still in the San Francisco Bay Area
- I'm willing to relocate
Please use the email provided in the contact section, or telephone me. Thanks for your interest!