Install this theme
Decisions are worse when getting the answer to a question about your product requires that you lose track of what you asked or why it’s important.
Andrew S. Morrison at Etsy’s Engineering Blog
Much of the tension in product development and interface design comes from trying to balance the obvious, the easy, and the possible. Figuring out which things go in which bucket is critical to fully understanding how to make something useful.
Don’t just go through the motions. Don’t accept dogma. Look for ways that you might be wrong, don’t look for ways to prove you’re right. Think. Express your thoughts with as much precision and care as you can muster.
Words to work by from John Gruber
JavaScript Framework, Revisited

I wrote a post Last July about what I wanted from a JavaScript framework, and what was missing from the current options. We’ve been using Backbone.js for a project since last October, and it meets nearly all of my core needs. We’ve added some more tools in and around it to fill in the holes. Let’s take a look at my list of wants:

  • ✓ jQuery-friendly
  • ✓ Written for JavaScript
  • ✓ Written for the Browser
  • ✗ Environments
  • ✓ Routing
  • ✓ Smart Views
  • ✓* Templates
  • ✓ Models
  • ✗ Console Tools
  • ✓ Conventions
  • ✗ Integration

Let’s look at the missing ones:

Environments:
I made this happen for myself. It’s really not a very complex requirement, and not very hard to implement. I simply added an env key to the global app namespace, whose value gets written by the Rails app in our main app template. Here’s the code.

window.supermtter = {
	env : '<%=Rails.env %>',
}

Assume supermatter is the namespace of our UI app. Now supermatter.env is set to our Rails env.

Templates:
There isn’t actually templating built in the Backbone.js, but the required library Underscore.js incudes basic templating support. In our current project, we decided to go with Handelbars.js, which I would probably not recommend.

Console Tools:
In retrospect, this isn’t that big of a deal. It would be nice, but isn’t a deal breaker at all.

Integration:
Backbone.js doesn’t really help with this at all, but a tool called Jammit (also by DocumentCloud, the company behind Backbone) certainly does. Our config for Jammit is written such that we really never have to think about including a file. Anything added to specific directories and/or matching filename patterns is included automatically. Here’s a snippet of our assets.yml:

views:
    - public/app/views/ui.*.js
    - public/app/views/*.js

With that, most of our needs are met! I’ll do a post sometime later detailing our app structure and how we use backbone. One takeaway so far: Backbone really is just that. It provides the backbone of a complex UI app, but you’re left to build out the rest of the skeleton yourself.

Web Based Accounting Software, Revisited

Back in June, I wrote a post about our search for web based accounting software. To recap: there wasn’t a best choice, so we decided to play with several better choices to see what fit. We also specifically expressed a desire to avoid Quickbooks.

After several months of trying the various tools and finding a CPA, we decided to go with Quickbooks Online. Ultimately, I would have preferred to support the little guy. However, the price point was competitive with a more advanced feature set, and our CPA was more comfortable with it. And, since we’re not doing most of the work, we can avoid the less than stellar user experience.

Here’s a story. There once was an architect who chose a location, drew up blueprints, hired a contractor, and then built a grand house, top to bottom. Then he painted it. Decorated it. Furnished it. And finally, when everything was completely done, showed it to the client - for the very first time.

“Here, I built you a house. I hope you like it.”

Can you imagine anyone working that way - building something from concept to finished product, actually launching it, before ever speaking to the person it’s intended for?

Mark Hurst

(Source: goodexperience.com)

To give a damn is a personal calling, not a job description.
James Victore

Be productive.

Be fantastically clever when necessary.

Speak truth to power.

Hit your dates.

Don’t ship crap.

 Michael Lopp (of Rands in Repose) from the teaser site for Being Geek
How we use GitHub for code reviews

GitHub has a really great feature in commit comments that is perfect for a small, loose team like ours to do code reviews. We can look at a given commit and provide comments on a line or the commit as a whole. The committer gets notified, and conversation continues.

Let me explain a bit more about our review process. We’re a small team without much hierarchy, so we don’t have specific rules or guidelines about how a review should function. Basically, when we’re ready for someone else on the team to look at our code, we send them a message with a reference (like a GitHub link) to the relevant code. It’s more like “hey look what I did!”

To make that process a bit more streamlined, we’ve built a little tool called reviewth.is. It acts as an endpoint for a Post-Receive Hook from GitHub that parses every commit message. If it sees a #reviewthis hashtag, it’ll take every GitHub username (signified by @username) or email address and send a nice email with all of the important information.

So, our process has gone from:

  • finish really great bit of code
  • commit and push
  • grab the commit URL from GitHub
  • write an email to the right team member(s) asking to take a look
  • code gets reviewed, commented on, and maybe updated

To:

  • finish a really great bit of code
  • commit and push (with a slightly revised message)
  • code gets reviewed, commented on, and maybe updated

Minus 2 steps! Awesome! Feel free to use our hosted version at http://reviewth.is/. We’ve also open sourced the code, so you can fork it and roll your own.