Dec 2014
Write Less JavaScript
How many lines of JavaScript code were used to create the following interface? At Mystery Science, we recently released this feature to capture feedback after a teacher has taught a lesson. There are four possible screens or states: Prompt (did you teach?) Rating (stars) Comments (open-ended feedback) Done Each state...
Nov 2014
Calculated Attribute Pattern for Ruby Models
Sometimes in a Rails application a model has attributes whose values need to be computed. For example, at Mystery Science, we have a Viewing model that is created when a lesson has been viewed. This model is associated with actions that a teacher took with a lesson (e.g., playing a...
Aug 2014
CSS Spinners
Spinners are really easy to implement with animated GIFs. However, they don’t look great when overlayed on top of another image because GIFs only support index transparency. If they’re on a solid background, you can match colors and they’ll look fine. Services like ajaxload.info make it easy to generate the...
May 2014
Here and Now
The here and the now are compelling destinations. People want to feel like they’re part of what’s happening now. They want to feel like now is happening where they are. Stripe Checkout features animations to communicate what the product is doing. They’re subtle but the product feels incomplete without them....
Nov 2013
Momentum
Startups move fast. They’re young, loud, and disruptive—a room full of excited twenty-somethings willing to burn the midnight oil to get a release out the door. Startups are enticing playgrounds with more Apple hardware and beer on tap than you can handle. When you’re tired, don’t go home. Stay. There’s...
Aug 2013
Canary
The last product I built, Sqoot, had a lot of moving parts. We had three databases, a search server, an API, website, and a deal importing system. It’s a marvel that it worked at all! The truth is that it went down pretty frequently. Sadly, our customers were often the...
Apr 2013
Getting Close to Your Customers
Nov 2012
Play Strength, a Rdio Feature Concept
Music can make or break a party. And picking good music to play is hard. I think it should be easy. Here, I take a closer look at creating a great setlist with Rdio. I start with some back story about why I started thinking about this problem and why...
Nov 2012
Create Great Technical Interviews
A technical interview or screening is a crucial part of reviewing a candidate for an engineering position. It’s usually the second step in the review process and is a prerequisite to an in-person interview. Here are some lessons I’ve learned in the last few years of taking and giving a...
Oct 2012
Snappy Dashboards with Redis
It seems that almost every application I’ve worked on has some sort of dashboard component. It’s not usually the first feature but it often becomes the most useful. But dashboards are hard to build. They break resource-oriented design patterns and often rely on complicated one-off SQL queries. Dashboards also usually...
May 2012
Track Expenses in Google Docs via SMS
Tracking expenses is a pain in the butt. At Sqoot, we use Google Docs for almost everything, including expenses, but entering anything on the go is cumbersome. Today, I got frusted and decided to take an hour and hack something together. I wanted to be able to text something like...
Feb 2012
Five Ways to Evaluate New Ideas
It took six years for the novelty of building stuff to wear off. I’ve worked on huge failing corporate projects, cool weekend hacks, and successful startups. At a certain point, you’ve proved to yourself that you can build it. Now, what you’re building matters. So how do you become selective...
Oct 2011
Serving Different Robots.txt Using Rack
While doing an SEO audit for the daily deal API I’m working on, the subject of the robots.txt came up. In addition to our production environment (what you and everyone else see), we also use an “edge” environment. It’s a place we can push the latest and greatest changes and...
Oct 2011
Make a 60 Sec Video Pitch in 500 Photos, $2 and 1 Day
Often the hardest part of building a product is explaining it to people. If it seems complicated, most people just move along. A popular way to grab people’s attention is with a short video. They come in a bunch of flavors but the popular ones include 2D & 3D animations,...
Apr 2011
Building an App to Monitor Your App
Keeping a web application up and running usually requires lots of moving parts. Since these parts are all codependent, when the whole app goes down, the immediate question is: what broke? I want to share with you the solution we came up with at Sqoot. Let’s dive right into the...
Mar 2011
Tests Pass. You Fail.
Shit breaks. It’d be so much cooler if things just worked the way we expected, but they don’t. For better or worse, we live in a world where everything eventually fails. And software is definitely not an exception. So we write tests. If 1 + 1 should be 2, we...
Sep 2010
Managing Styles with Sass on Heroku
I’ve generally found stylesheets to be the messiest part of any website. And I’m not surprised: Cross browser support means kludgy code Functionality usually takes the drivers seat to well thought out styles It’s someone else’s job But organizing styles doesn’t have to be a mess and here’s one strategy...
Sep 2010
The Four Hour Sprint
If you want to talk about themes that have dominated the last year of my life, “agile” has got to be one of the most popular. It seems that everyone wants to be agile, and there’s a lot of debate about what that means, if anything. Agile software development is...
Feb 2010
School's Out Forever
Growing up, I was told that the most important ingredient for my future was an education. Do your homework, study hard and the road ahead will lead to a satisfying career and financial security. That was the promise, anyway. But as it turns out, in the kitchen of education, I...
Feb 2010
Getting It: What Makes a Great Software Engineer
Introduction I’ve been writing code for a while now and for about the last 2 years there’s been a nagging question in the back of my head: What makes a great software engineer? Call them “rockstars”, “ninjas”, “submarine pilots” or any other catchy title you’d like. They exist, and they’re...
Jan 2010
Integrating Twitter Authentication with Rails
I’m working on a project called Piggy Back, a simple service where friends can keep track of debts between one another. To encourage user registration, I’m lowering the barriers, allowing users to sign up their Twitter and Facebook accounts. I’d like share with you how I got this functionality into...
Jan 2010
Instantly Losing a Customer
A while ago, I wrote a post about great customer service, where it’s coming from and where to find more of it. Today, I’d like to take a look in the other direction and talk about the biggest mistake a business can make: losing a customer. I’ve used 1-800-flowers.com for...
Dec 2009
The Big Bang Rewrite (Part 3): Authentication, Authorization, and Tests
One of the biggest deficiencies in the old application was being able to lock down access to the site based on users. Originally, there were two special users, Admin and Guest. The former had complete control, the later had none. Anyone else was a normal user and had the same...
Dec 2009
The Big Bang Rewrite (Part 2): API First
As I discussed in my previous post, rebuilding Fave was motivated entirely by the desire for better data. The core focus was not rapid front facing development, but almost entirely back end work. In essence, we started with our API. One of the features Rails boasts as an application framework...
Dec 2009
The Big Bang Rewrite (Part 1): First Ask Why
When it comes to building something, be it a building, a car, or software, there are always imperfections. The first iteration is usually something simple, but eventually as features are added and requirements made more complex, the system starts to become bloated. Even with great agility and the most stubborn...
Nov 2009
Rebuilding a Brand. Avand.
Once again, it’s been months since my last post. I’ve been taking some good and some bad classes at DePaul for the last 10 weeks and as a result haven’t really had much time to invest in myself. Even Piggy Back has taken the back burner. The one personal priority...
Jul 2009
The Race to a Beta Launch: The Trials and Tribulations of Piggy Back
I haven’t posted in a while, and here’s why: Piggy Back;. If you follow me on Twitter, or are friends with me on Facebook, you’ve probably seen the updates crawling by. Piggy Back is a web site that helps users manage debts between each other. It was inspired while I was...
Jun 2009
Outstanding Customer Service and Where It's Coming From
For best results, read while on hold with your favorite ISP. Is anyone else seeing what’s happening here? I’m not sure where it’s coming from, but companies are becoming obsessed with excellent customer service. I witnessed it a little here and a little there at first, but then, after reading...
Jun 2009
The New York Subway System. Holy Crap.
I was recently in New York to visit a friend. Flew into La Guardia and called him up to tell him I was taking public transportation into Manhattan. He sounded puzzled but I didn’t really feel like spending $60.00 getting to West Village. Plus, there’s something to be said for...
May 2009
Adventures with Ad Delivery in Rails
It’s always hard to find the line between buy vs. build - or as it’s known in the open-source world, buy vs. “borrow.” I find this to be more true in Rails than in any other application framework. You want authentication, you got it; you need paging, done. Before you...
Jan 2009
Data Driven Development (DDD)
In the world of software, methodologies rule. It isn’t about the code, it’s all about the process. And when it comes to processes, there’s a lot to choose from; developers have a habit of over thinking this stuff. So as one, I figured I’d throw in my two cents, too. Test...
Dec 2008
In-n-Out Burger: Consistency, Animal Style
I recently took a trip out to California and had my first dinning experience with In-n-Out Burger. I really reveled in the experience, because they’ve really nailed, what in my mind, makes a great product. Immediately In-n-Out Burger’s menu jumped out at me. In my day to day operations I’m often tasked with conveying...
Nov 2008
CSS Tricks (2 of 2): Using Rails to Manage Styles
For the second half of my CSS “tips n’ tricks” tutorial, I’d like to take some time and discuss how Rails can help manage stylesheets. As you start out any Rails application, there are some huge conventions you follow within the ‘app’ folder. I think these conventions make it much...
Sep 2008
CSS Tricks (1 of 2): First, Get Down with the OOP
##Introduction## I recently stumbled upon an interesting web design blog that featured an article about some CSS “essentials” and commonly used CSS code snippets. I read it with a great amount of interest and found that I had a few tricks and tips up my sleeve that I’d like to...
Sep 2008
People and Process
Over the last couple of days I’ve come to an astounding realization. While I had always considered that the culture of a company - its people and practices - made a difference in its day-to-day operations, the scope had eluded me. This month’s issue of Inc. magazine featured an article about a...
Sep 2008
Bravo 37Signals for Phasing out IE 6!
It’s been a long time coming… Too much time has gone by with developers forced to limit their imaginations, creativity and ability to support the rusty weight of IE 6. But most websites have been afraid to stick their neck out. So, kudos to you, 37Signals, for doing your part...
Aug 2008
Enigmo: A Shower of Entropy
Since I got my iPhone 3G, I’ve downloaded, that is paid, for exactly 3 games. The best - by a long shot - is Enigmo, from Pangea Software. For those of you who don’t know it, it’s basically a puzzle game where you have a certain set of tools on...
Jul 2008
Computer 1, Andy 0 and I Couldn't Be Happier
In my own time, I’ve been dabbling with some pretty hardcore machine learning. Trying to answer the question of how a computer can create a relationship between two things, blocks of text in this case. Turns out with a few matrix transpositions, single value decompositions, cosine similiarities, latent semantic index,...
Jul 2008
target="_blank" Convention
I’ve been building websites for a while now, and each time I do it, I run into a couple areas where I sit back in my chair for a second, scratch my head, and ponder conventions. One great thing about Ruby on Rails is the way it enforces convention in...
Jun 2008
Deploying a Site via DNS - "That was Easy!"
I launched a site today for Northpoint Horizons, and it was seriously one of the simplest deployments I’ve ever experienced. We’ve been working on the site for months on the future (now current) production server. We’ve used it for the client to review the site, to perform testing, everything you’d...
May 2008
AJAX Form Validation for Rails
Last Saturday at the Chicago Ruby User Group I gave a short presentation on Rails and AJAX. For part of the presentation I decided to solve a problem that’s haunted me as a web developer for some time – form validation. Here’s the dilemma: You start with server side validation,...
Apr 2008
Peeling Up
I’m not sure when exactly it happened, but drop shadows and rounded corners struck the web with a vengeance. Then it was the reflections. It seems like those persnickety designers are looking for anyway to make our lives as developers harder. But they have a fairly noble goal, anyway -...
Mar 2008
Skepticism Happens {Here}
I attended Microsoft’s 2008 Product Launch Event, Heroes Happen {Here}, today and I think my suspicions have been officially confirmed. My interest in Microsoft products has been waning as of late. Nevertheless, attending a Microsoft launch event is a good reason to get free schwag, and they do a decent...
Mar 2008
Best Tool for the Job
The religious wars go on. Microsoft vs. the rest of the world, it seems. On and on, ad infinitum. But does it ever really matter? Is there definitively a platform of choice? Or more to the point, is that question even valid? Can there be a definite? As Jeff Atwood...
Feb 2008
A Look Back at Windows Mobile 6.0 and ActiveSync
While I was walking home from work today, checking my email on my iPhone, something very strange occurred to me. Once upon a time, I was a Windows Mobile junkie. Not just a standard user but an all out fan boy. I would talk to whoever was willing to listen...
Jul 2007
Introduction to this Blog
Throughout my life, I’ve always had a knack for design. As a kid, I grew up in a house surrounded by fine art and lots of art classes. In my teens, I spent my Saturdays at the Museum of Fine Arts in Boston. However, along the way, I also feel...