Ruby on Rails Platform Engineer
Hi, I'm Mike Nelson.
I'm a Ruby developer focused mostly on Rails. I currently live just outside of San Francisco but grew up in Southern Maine. I'm married, have a daughter, work at TaskRabbit, and really enjoy what I do. I'm actively developing open source solutions focused mostly on scalability and architecture.
Skill Sets and Core Methodologies
I'm passionate about the progression of technology and standards on the web. My tendency is to get familiar with a technology in it's infancy and let it iterate a version or two before using on a production site. By doing this I'm not on the "bleeding edge" and it increases speed of development due to the googlability of solutions.
My core skill set can be bundled into:
Ruby on Rails
- Rails 2 / 3
- HTML5 / CSS3
- Haml / Sass
- Ruby 1.8 / 1.9
- Sublime / Textmate
- RVM / rbenv
I develop all rails apps with a few core concepts:
Many people claim to understand DRY but their code doesn't reflect it. DRY concepts are meant to take place at all levels of the Rails stack. Whether it's modular model design, proper helper usage, decorators and presenters, multi-app solutions, or even mailer simplicity DRY is always on my mind.
I write modular code based on behaviors making it more navigable, developer friendly, and usually simpler.
This is one I have to be careful about overusing. I love abstract and reusable code; the key is to know when and where it's truly useful.
Business / Codebase Balance
As an engineer I'd love to write cleaner, faster, and cooler code all day long - as an entrepreneur I understand when quick and dirty is the better solution.
Scalability and Maintainability
I support iterative development but I understand that thinking ahead and building in the appropriate infrastucture at the ground level will pay for itself over the following months.
The web is no longer made of pages and quirky utilities, it's made of people, opinions, personalities, and apps focused on the improvement of one's life. At the core of any product, respect and understanding of the customer's needs and desires is essential. It's my belief that developers need to fully understand their customers (and interact with them) to build a quality product.
Know Your Customer
Everyone involved in the engineering of a product needs to know their customer. A product that scratches your own back is a huge plus.
Listen to the Customer
Customers can be annoying. They complain about things that most of us wouldn't even think of. It doesn't matter. If you build a product that breeds confusion, you need to change it.
Work Well With Others
Having respect and patience with your coworkers is essential. I love teaching and learning from the people I work with. I enjoy working in pairs or in groups to come up with a killer solution.
Have a Personal Life
I firmly believe that you can work too much on a single product. Stepping back and having a personal life at the end of the day improves the quality of your work during the day (or night) and many times allows you to understand your customer's needs better.
Projects: Products and Experiences
TaskRabbit is an online and mobile marketplace that allows folks to live a smarter and more fulfilling life by once again relying on their neighbors. TaskRabbit is about solving an age-old problem: there is never enough time in the day to do everything you need to do. At TaskRabbit, we harness the power of the community to get things done - forming a virtual neighborhood.
In December of 2011 SkillSlate, in which I was CTO, was acquired by TaskRabbit. I became part of the engineering team and look forward to building an amazing and useful product.
- In progress :)
SkillSlate is an auction site for local services that crowdsources the best people to apply for any job you need done.
I began working with SkillSlate in November of 2010 and quickly became an integral part of the team. With over a million dollars in funding we pivoted the company in February from a business directory to a consumer-centric request-based service. Active development continues...
- If at first you don't succeed, try again.
- Surround yourself with smart people.
- In the world of startups, quick and dirty may just be the best solution.
- Working on a product can be fun.
- Impacting customer's lives makes all the hard work worth it.
AccelGolf is an app for golfers which allows detailed tracking of one's gameplay. By tracking each stroke you ever take via the iPhone, Android, or Blackberry applications, AccelGolf is able to generate comprehensive gameplay statistics and even determine your tendencies.
I came across AccelGolf while I was completing my Mechanical Engineering degree at the University of Southern Maine. I built the first Blackberry application from scratch, accounting for AccelGolf's first 35,000 members. After the completion of the blackberry app, I began working solely with Ruby on Rails. AccelGolf was part of the Boston TechStars program in 2009 and ended up raising nearly $600,000.
- Money doesn't solve your problems.
- Passionate customers are irreplaceable.
- Mobile is here to stay.
- TechStars or similar incubators are amazing.
- Don't miss out on learning opportunities.
- Try to work on a product that scratches your own back.
- Work well with others, or else.
World Aid Now is a 501c3 nonprofit organization that provides relief to natural disaster victims. Thanks to a group of private donors that cover all operating costs, 100% of public donations go directly towards helping those in need.
I was approached by World Aid Now in 2010 to help start a web presence for their brand. After creating their first site, World Aid Now was able to be a help with the Pakistan floods of 2010 by providing funding to over twenty families for new homes. I currently serve on WAN's board and am in the process of building a new site to assist in future relief efforts.
- It doesn't take much to help a lot of people.
- Volunteer work is rewarding.
- Don't be short sighted, think big.
- Be happy to work with designers, their job is pretty hard.
Projects: Open Source
Makara allows your Rails applications to use read-write splitting to share the load across multiple database servers. At TaskRabbit our DB load was dramitically reduced after switching to makara from other splitters.
Storehouse provides a rack middleware which provides access to a centralized cache store. The cache store is up to you, we've used Redis and Riak in production environments without issue. Storehouse aims to be a lightweight and simple middleware which relies solely on simple configuration files and is completely unaware of app frameworks.
Playbook provides the groundwork needed to build a well-performing dry API in your rack app. It handles versioning, throttling, error handling, dynamic controller instantiation, and documentation for your api.
DV8 provides a cache layer around ActiveRecord. It provides a way for objects found by their primary key (or slug) to be cached in Rails.cache. It speeds up your *many associations by querying for just the ids and looking up the objects in memory.
References and Referrals
Sky Mayhew www.skymayhew.com
I met Sky at AccelGolf and have continued working with him on contract jobs as well as some fun stuff. Sky works hard to make his clients happy, many times going the extra mile to ensure things like browser compatibility and good SEO presence.
Fred Yates www.fyates.com
Fred is the best designer I've worked with. He's quick, inspiring, and knows what he's talking about. I've worked with Fred in both AccelGolf and SkillSlate. He has a keen eye for web apps and it shines through in his designs. If you use any of Thoughtbot's products you've probably interacted with one of Fred's designs. Hire him - seriously, he's good.
Brian Rothenberg www.brianrothenberg.com
Brian is one of the founders at SkillSlate. He formerly worked with Yahoo! Real Estate as a product manager and led in traffic acquisition efforts. Brian grew SEO traffic by over 2,900% while at Yahoo!. At SkillSlate Brian utilized his SEO background to infiltrate New York's services web traffic. He also plays a vital role in product development and execution.