Engineering posts
  • Huboard and the NoDB model

    Say what you will about the pros and cons of NoSQL databases. I believe there’s a time and a place for NoSQL databases like Mongo, relational databases like Postgres and SQL Server, and key-value stores like Redis.

    But, at the end of the day, SQL vs NoSQL is a back end debate. For the modern web application with a javascript front end, the RESTful API interface obscures the back end implementation entirely. You might use rails with postgres, node.js with mongo, go with redis…as we all remember from The Big Lebowski, “It don’t matter to Jesus!”

  • The virtues of long-running tests

    It is a good thing our test suite isn’t instantaneous. Because when tests pass, it is hard not moving on to the next task. But while tests are running, I have nothing to do with my time except comment code.

  • Debounce your reactive programming bindings

    We built Striker as a javascript implementation of reactive programming. We did this because the nature of reactive programming is that one user update often causes a ripple effect.

  • Ghetto debugging YUI/Sprockets errors

    I certainly imagine someone smarter than I am knowing a better solution to this, but we just had a particularly hairy debug with YUI and Sprockets on Rails 3.2.13.

  • Implementing pageguide.js with backbone

    Pageguide.js is a pretty sweet little library. It is dead simple to get rolling, and it provides a great framework for stepping through various aspects of a page.

  • Technical debt cry-babies

    Each of us engineers is responsible for managing technical debt. Fact.

    If we lived in a magical vacuum where we could build mythical “perfect code” without any concern for shipping to users or spending money, then maybe we wouldn’t have to worry about technical debt. At least, only if we didn’t have to work on code together. Because even in such a magical world, one engineer’s perfect code is invariably another’s technical debt, if only because we all prefer to tackle problems differently.

  • Refactoring view hierarchies in Backbone

    Doubtless, my favorite part of coding is refactoring.

  • Knowledge Base Driven Development

    I want to build on README Driven Development, a fantastic post by Github’s Tom Preston Warner. In it, Tom makes the case for starting the engineering process with the very document later used to explain your project to other engineers (presuming your project is software and your target audience is engineers).

    It’s brilliant because rather than starting with the code itself (woof) or the tests themselves (better), starting with the interface to your audience forces you to work backward from the user to the product to the code.

  • Group by and sum with Mongo

    Deprecated: This post is now made obsolete by the very capable MongoDB Aggregation Framework. I love when a post becomes obsolete, but at least we have the past to look back on…

  • Slaying the static site dragon: Jekyll, S3, CloudFront, dnsimple

    Deprecated: This post is now made obsolete by outstanding advances in Octopress and setup for Github Pages . I love when a post becomes obsolete, but at least we have the past to look back on…

Projects (work in progress)
  • RESTful-ETL

    RESTful ETL is an extract, transform, and load (ETL) library that interprets classic Kimball Method data warehouse and ETL patterns with the modern asynchronous, non-blocking advantages of node.js.

    Designed for applications small enough that bulk loading is not required, the library relies on RESTful API interfaces for data sources, destinations, and its own operation.

    Note: We’re very early on with this project. There’s nothing in it that’s viable, as we’re porting functionality from a ruby library we wrote that is currently live in production. This rebuild will allow us to do all sorts of cool things that weren’t possible in the original library.

  • Tactile

    Soon to be open-sourced (I hope)!

    Tactile is a javascript charting library using D3. It is designed to be highly interactive.

    There are lots of js charting libraries emerging these days, and many of them are calling themselves “interactive,” but few are actually interactive. Sure, if you update underlying data using an external UI control, and the chart is properly bound to that underlying data, the chart will re-render and thusly be “interactive.”

    But even better is a library that allows the user to interact with the chart directly:

    • Drag columns, lines, or other chart series elements to update data
    • Manage data updates through agnostic callbacks
    • Drag the chart body to scroll laterally or — optionally — vertically
    • Drag the axes to scale them
    • Double-click the chart body to zoom in, and shift-double-click to zoom out

    This library achieves these goals and more, providing a platform for a truly rich user experience.

  • Activecell

    Activecell is my current project. We have a backbone front end client with a rails back end that will likely soon be ported to node.js.

    The project is not open source, as it represents the proprietary code base we use to drive our business!

Management posts
  • Zocdoc shows us how to “disrupt” the right way.

    It’s Tuesday afternoon. I had an appointment for Thursday that I made a few weeks ago for a new primary care physician. They cancelled on me, as doctors sometimes do.

  • Truecar leads the horseless carriage to water

    A few years ago, my wife and I leased a car. The path to getting that car was miserable, and I hesitate to name the dealership only because it’s just as miserable everywhere. The negotiating, the inventory, the pushy sales guy. It’s awful. Everyone hates it. But…

  • The Activecell Method for business planning

    I have had the good fortune of working in a consulting capacity over the past decade with businesses in nearly every industry, including pharmaceuticals and healthcare delivery, manufacturing, automotive, distribution and warehousing, financial services, the public sector (state, federal, and international), software/tech, consumer goods, energy…you name it.

  • Startup power tool: oDesk

    I’ve heard droves of people scoff at working with offshore developers. There are those who will have nothing to do with it, and there are those who say, “Sure, but not for our core product. It’s too important to outsource.” (or whatever.)

    I am here to tell you that bringing a Polish Rails developer, a Russian mathematician, or an Argentinian designer onto your team is not the same thing as shopping out your product to a team of yahoos and passing the responsibility onto them.

    As we look to ramp up our spend on oDesk to $20k per month I can officially say that oDesk has been a power tool for us, and I thought I would share a couple of the key lessons I have learned along the way.

  • 2 hours and $87 sure beats 3 weeks and $1,377

    Last year I was in a fit when I received a bill from my now former accountants. It would seem when we agreed to do our end of year corporate tax return for a fixed rate of $2,500 they neglected to mention 1099 preparation was not included. I had spent 2-3 weeks screwing around with them to get it done, and I was handed a billed for $1,376.56. I thought I was getting punked.

    This year, the same activities took around 2 hours and cost me only $87.

  • “You were an English major?!”

    I can’t tell you how many people still recoil in shock when they hear that I — a software engineer — have a non-technical undergrad background and, of all things, an English degree.

    So let’s set the record straight once and for all.

  • Evaluating Your Customer Acquisition Cost

    Quick question: Do you know what your customer acquisition cost for 2012 is going to look like? Have you monitored and evaluated that cost throughout the year? Are your shifting your eyes side to side wondering, “Huh? Customer acquisition cost?

  • A Tale of Two Financings


    Profitably just closed $1.1M, and I think I am feeling every emotion at once. While the rest of the team is ready to go out and celebrate (and has earned it!), I feel like I could use a nap, a hug, a good cry, and then perhaps a Manhattan or two.

Talks and docs
  • Make it work: oDesk eBook
  • Entrepreneurship sucks
  • The path to entrepreneurship
  • Assembled Capital Keynote
  • Launch at DEMO
Press mentions, interviews, etc.
  • WSJ: ‘Get Me a Hair Appointment and Empty My Inbox’
  • Inc: Great Entrepreneurs on the Companies They Love
  • CFO: Imagine There’s No Excel
  • WSJ: Have a Baby; Start a Business?
  • Inc: Master Your Financials—No Excel Required
  • TheNextWeb: Launching a new product offering? Check out Profitably
  • oDesk: The Way You Work
  • Entrepreneur: Five Simple Tips to Make Co-Working Work for Your Business
  • Inc: Profitably Does the Math for Your Business Plan
  • BusinessInsider: Startup Spotlight
  • Crains: An entrepreneur helps other owners turn a profit
  • AmEx Open: 3 Ways To Find Top Talent For Your Startup
  • TechCrunchTV: Founder Office Hours with Chris Dixon and Josh Kopelman
  • Fortune: Shouting into the unfunded abyss
  • Scobleizer: Who are your profitable customers? Profitably will show you