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.