Update, 2014-06-30:

I'm very happy to announce that I accepted a full-time offer from Keen IO, so my consulting business is indefinitely postponed. I'll leave this page here for nostalgia's sake though ;)

Philosophy

I want to build awesome software to do cool stuff and make the world better. Freelancing allows me to experience a variety of problems, constantly learn new technologies, and connect with the pioneers of the bleeding edge. All of the most exciting stuff happens on the frontier.

As a freelancer, my reputation is my most valuable asset, so my goal is for every client I work with to feel like they got way more than they paid for. But even beyond the economic incentives, I believe deeply in the concept of "pride in craftsmanship." If I'm not proud of what I'm building, then what's the point?

I have long adhered to a philosophy of "monotonic improvement," meaning continually striving to get better at everything I do. Especially in today's world, if you're not learning then you're becoming obsolete. I encourage anyone I work with to tell me about any ways that I might be able to improve, whether technical or otherwise.

Services

For details on the services I can offer, see the sections below.

End-to-end Project Development

You have a project designed, and now you "just need to write the code." I will work with you to make sure that all of the requirements are clearly defined, and then build a solution from scratch. I follow an iterative development process (something like Scrum, but modified based on experience) and will keep a high-bandwidth communication channel open. My priority is delivering a finished product that not only exceeds your expectations, but is also durable once I'm gone. This means high code quality with extensive comments and, if necessary, supporting architectural documentation.

Note: Aesthetic design is not my strong suit. If your project has visual components (such as a website or mobile app) then you should already have a design and/or a designer. Trust me, this is for your own good.

Consulting

If you already have existing code, I may still be able to help you. Here are some of the consulting services I can provide:

  • Architecture review/planning
  • Security review (including threat modeling, penetration testing, fuzzing, etc.)
  • Performance troubleshooting
  • Improving (or creating) automated test infrastructure
  • Building management or compatibility tools
  • Debugging (you only pay if/when I successfully root cause your issue)
  • Updating, modernizing, porting, or just plain understanding old code

Depending on the specifics of your project, I may or may not be qualified to add enough value to justify my rate. My promise is that if you describe your needs, I will give you an honest opinion of whether or not I'm the right person for the job. As I explained above, client satisfaction is my highest priority, so I'd rather turn down a project than leave someone feeling like they wasted their money.

Mentoring

Do you or someone in your organization just need some help getting up to speed on a new technology or skill? If it's something I'm good at, I'm happy to teach as much as I can. This can also be included with end-to-end projects or consulting, to help transition my work to a new owner once I wrap up.

Travel

I'm based in Seattle and prefer to do most of my work from here, but arrangements can be made for site visits as appropriate.

Technologies

I am not a purist when it comes to technologies: use the tool that's right for your situation. That said, I naturally have more exposure to some technologies than others. The lists below are intended to give prospective clients a quick sense of my skill set, but are by no means exhaustive. If you are curious about my experience with a particular technology (whether or not it's shown here), just ask!

Tier 1

Technologies which I have used extensively and can comfortably dive into on little notice:

  • Java
  • Android
  • Ruby
  • C/C++
  • AWS (including S3, EC2, DynamoDB)

Note: I'm happy to operate in either Windows or Linux (including OS X) shops. I'll also work with whatever project/code management tools you prefer, or provide my own if necessary. I will be very happy if I can use Git :)

Tier 2

Technologies with which I have some experience (i.e., I can probably handle most non-expert-level work in these spaces, but I don't want to over-promise):

  • Ruby on Rails
  • Clojure
  • JavaScript
  • CSS/SCSS
  • C#
  • SQL
  • Hadoop
  • Machine Learning (in particular, interesting applications thereof)

Note: Projects involving these technologies may be eligible for a discounted rate, and/or may require some (non-billed) "refresher" study time before I start.

Tier 3

Technologies with which I am just familiar enough to know that I'd like to learn more:

  • Go
  • Python
  • PHP (including Drupal, Joomla, or Wordpress)
  • iOS
  • Analytics and SEO
  • Just about anything in the cloud performance space: Storm, Spark, Redis, Memcache, etc.

Note: Projects involving these technologies are likely eligible for a significant discount, but will probably require at least a few weeks of (non-billed) study time before I start. I love deep-diving new technologies, and as always, I will not take on any project unless I'm confident that I can do it well (including following industry best practices and being aware of relevant trends).

Social Impact

While earning a livelihood is part of why I build software, I'm also passionate about leveraging my skills to make a difference in the world. If your project has a positive social impact, or is otherwise aligned with causes I care about, I may be able to offer a significant discount on my baseline hourly rate. Please contact me for details.