Sharing life and geek notes from Philadelphia.

Main menu

Monthly Archives: February 2013

With the sale of ProfitTrain complete, my schedule has room for a new project. There’s a handful of ideas I’m working through, but, before I jump into one, I think that now is a great opportunity to catch up with some business books I’ve had on my radar.

The Lean Startup, written by Eric Ries, is a book I first received from New Relic through some promotion. Sadly, I wasn’t in much of a reading phase at the time, but with a secondary recommendation the other day, I decided to go ahead and start reading.

First, the book defines an entrepreneur as:

an organization dedicated to creating something new under conditions of extreme uncertainty.

Using this definition, Eric explains that you can find entrepreneurs everywhere, from the typical garage startup to a division inside a larger corporation that’s been told to start a new initiative or project.

Some might say that we live in a golden age of entrepreneurship, but, while the overall number of new startups is increasing, success continues to be a real challenge. Lots of startups are failing because of elements that can actually be avoided. The Lean Startup is a movement that challenges entrepreneurs to work less on instinct on more on measurement in order to quickly learn what it takes to build a sustainable business.

Too often product ideas will come to a team and they’ll enter a long development cycle, only to find out that they’ve spent all their money and built something they can’t sell or that nobody wants. The Lean Startup encourages building “Minimum Viable Products” which will help start a real feedback loop with customers as soon as possible. Only by working with real customers can you truly learn.

Learning is an important, if not the most important, aspect for the Lean Startup movement. It should be at the center of how you spend all your time. If you are working on something that is not going to help you learn about customer behavior or evaluate a company risk, it’s probably just waste.

The heartbeat of a Lean Startup is the feedback loop, named “Build-Measure-Learn.” In practice, your actual feedback loop might look something like this:

Figure out what you want to learn about your customers.

Figure out how you’ll measure it.

Build it into the product.

Deploy it to the customers.

Measure customer behavior.

Use these measurements and metrics to define future work and pivots.

Repeat.

The feedback loop should be as small as possible.

When it comes to metrics, Lean Startup does warn against “vanity metrics” — these might be reports or charts that look good at first glance but don’t really represent whether your business is really growing. Consider an app that gets 1,000 downloads per day but also has a bounce rate of 80%. What if that remaining 20% decays over time to leave you with only a handful of active users. Showing a “Total Downloads” chart might make the team feel nice inside, but does this represent the real growth rate of the product? What you need to track will vary per business model, but the recommendation to be wary of “vanity metrics” is true for all.

There is more advice in the book, including some suggestions on using “Five Whys” to help find root causes of problems, along with a reminder than no system is perfect for everyone. That said, I really took a liking to the ideas of Lean Startup. I’m currently reading a nice followup book, Running Lean, which has a collection of real world approaches to applying Lean Startup to a business or product prospect.

Regardless of what my next project may be, I’m definitely interested in applying The Lean Startup to see how it works out.

Rather that use the Mac App Store and re-download Xcode each time I need to install it on a new Mac, I take advantage of developer downloads directory and grab the Xcode DMG file so I can put on my USB disk and move around from Mac to Mac and avoid the duplicate downloads.

Xcode however no longer includes the documentation, so the first thing that happens after you launch is a 1.3 GB download for the docs.

Apple, please consider adding a download with a snapshot of the documentation in place. Maybe even a LAN sync option so it could grab the docs from my desktop (or my co-workers) instead of saturating my internet connection all the time.

Unbelievable that Old Biff could’ve chosen that particular date. It could mean that that point in time inherently contains some sort of cosmic significance, almost as if it were the temporal junction point of the entire space-time continuum. On the other hand, it could just be an amazing coincidence.

For me, the last few weeks sure do feel like a “temporal junction point” of sorts. Lots of stuff is going on and I feel like I’ll look back at January/February 2013 and see dozens of paths that my life could have taken. I’ve already posted about my general return to work after a bit of burnout and now I can share something else.

I have sold my first commercial product, ProfitTrain to another developer. Official info can be found on my company blog. While I am sad to let ProfitTrain go, I am also happy because, over the last year or so, I haven’t been able to give the product the attention it warrants. The ProfitTrain users deserve better.

Other developments are, well, still developing. I’ll share more when the time is right. I can say that, while I won’t be out of the woods for a few more weeks, I’m feeling very positive about the upcoming year and am doing a good job of maintaining work/life balance despite the recent stress.

When it comes to TV, you can usually catch me watching a mix of local sports. On the weekends, it might be some This Old House or Gordon Ramsey.

I don’t tend to get into the episodic TV shows when they are actually released. I’d much prefer to watch these in bunches. Back in the day, it would be West Wing one DVD at a time but now, with Netflix and other streaming services, it is dangerously easy to lose a whole Saturday streaming one episode after another. Of my recent Netflix binges, two shows have been extremely enjoyable…

Peep Show is a British comedy shot in first person POV with lots of internal character narration. The show itself is about two flatmates. Mark is a financially secure, but awkward and socially inept middle-aged man, with a pessimistic and cynical attitude. Jeremy, aka “Jez”, is an unemployed would-be musician who recently moved in with Mark after breaking up with his girlfriend. Jeremy has a more positive, laid-back approach to life and, while he is better with the girls, he isn’t nearly as good as he thinks he is.

The comedy is cringe-inducing and hilarious. While some of the plot lines in the later seasons are predictable, there is still a ton on enjoyment in seeing how the characters of Mark and Jez find their way through everything. You’ll know whether this is your kind of show after a few episodes, but do give the POV perspective some time to get used to. I really enjoyed Peep Show and may even give it a second pass in time.

Note: As I write this, I don’t see it listed for Netflix streaming anymore although Hulu might be a working option.

The other show is far more well-known and that is Breaking Bad. My cousins have been on me to watch this show for years and I finally gave in. Breaking Bad is great TV.

Breaking Bad opens with the main character Walter White, an overqualified high school chemistry teacher who is diagnosed with terminal lung cancer. To help provide for his family, he partners with former student and drug dealer Jesse to cook and sell methamphetamine. In time, shit hits the fan in multiple ways that result in entertainment for us. The writing is great, the acting is great and even the cinematography is great.

There are 5 seasons in total of Breaking Bad. Seasons 1 through 4 are on Netflix and the first half of season 5 premiered on AMC in 2012. The last half will premier in the summer of 2013.

Hope you enjoyed the recommendations. If you have any for me, let me know via email or twitter.

Over the last three weeks, I’ve been slowly picking up Ember.js while helping some colleagues with a project. It’s pretty interesting tech and I’d like to share some early thoughts.

What is Ember?

To be frank, I don’t think the Ember homepage does a very good job of explaining Ember. It features terms like “less code” and “developer ergonomics,” which are too much like “marketing speak” for me.

How I view Ember. Normally with a web app, you (as a user) will go page to page, sometimes viewing data and then sometimes editing data with forms. That’s what I’ll call a form-based web app. Sometimes you might want a bit of AJAX in these form-based web apps and, to get that, you’ll typically grab a DOM element and manually shove in a bunch of jQuery when needed, including direct commands and event callbacks. This process can work, but the more AJAX and client side stuff you add, the messier you can make things.

Then there is a class of web apps which work as one-page apps, where all interaction and DOM changes happen on the fly, without moving from page to page. Data is sent to and requested from the server in the background. Think of how Gmail and Trello work.

For me, Ember.js is all about giving you the toolchain to provide those types of dynamic, one-page web app experiences. Ember.js is a full stack, client-side, JavaScript-based MVC framework. The main objects you’ll work with client-side in the browser include:

Routers, which match the requested URL to controllers. They also ensure that the client URL is updated to allow the user to bookmark the different states of your app.

Models, to define your business nouns and store/retrieve user data.

Controllers, which handle actions and pass model data to the views.

Views to connect user events like clicks and taps to controller actions.

Templates to describe the HTML on screen.

Some Notable Features

Bindings

If you’ve done AJAX work before, you might recognize that knowing what to update in the DOM can be a nightmare as the app state changes on a given page. Ember is particularly good at dealing with this, and as you build your HTML templates, the substitution hashes like {{ name }} for a person’s name not only are substituted for the real value on the first render, but everything is always kept up-to-date with an internal bindings system. This, combined with calculated attributes, really takes a lot of stress off the developer, in terms of keeping the app state in sync with the UI state.

Persistence

For actually persisting the data, there is the ember-data project which will let you connect and map your client-side Ember models to REST endpoints. If you are using Rails, there are a bunch of gems that can really help to simplify this while providing all the serialization and API endpoints you’ll need. For more info, see this article.

Sharp Edges

As of this writing, Ember itself is version 1.0.0-pre-4 and ember-data is officially considered alpha quality. There is an upcoming Ember Camp, which hopes to see continued progress towards an official 1.0 release. Keep an eye on the Ember blog for more info. I do believe things have settled down to a point where there is value for people who want to get started with Ember and get their hands dirty. As to “production ready” — well, that will greatly depend on the needs of your application and your comfort with working around some sharp edges.