The Beauty of Javascript Composition

I’ve been heavily into functional programming with Javascript for quite some time now. Every new line of code I write takes advantage of ES6’s shorthand syntax and functional programming techniques. When updating existing code, I’ll generally use the opportunity to refactor it to a more functional style. But perhaps the greatest benefit is function composition, the process of combining two or more functions to produce a new function.

Function composition lets us combine multiple functions into steps that transform our data as it flows through them. It’s like an assembly line where each step alters the data in some way. Technically you don’t need to use functional code to create a composable function, but when you do, the result is clean, elegant, easily reasoned, and beautiful code.

Continue Reading…

Hack, Refactor, Repeat


I’ve been writing a lot of code lately. And I mean A LOT. Between AlertMe, some side projects, and an open source project I’m working on, I’ve been pumping out a ton of code. Luckily, it’s mostly been using the same programming language (except AlertMe’s Symfony app), so I’ve been able to really focus on producing some solid output. The problem comes down to my constant struggle between perfectionism and actually shipping something. In this post I’ll discuss some strategies to ship code faster, without compromising quality.

Continue Reading…

My new gig: Chief Technology Officer at AlertMe

Tomorrow I officially join the AlertMe team as their Chief Technology Officer. I’ve known about this company for quite some time, and I always loved the core concept. I’ve been helping them out here and there over the last few months, and I look forward to joining the team, just in time for BETA launch.


What is AlertMe?

AlertMe helps publishers connect directly with their readers, in ways they never could before. It allows the reader to raise a hand to say: “Keep me updated on a story that matters to me… don’t make me hunt it down, or hope to randomly stumble upon it.” This helps creates loyal, regular readers, that return to the publisher’s site when new information is published.

Continue Reading…

Building team consensus when creating products

As a product owner you have to make a lot of decisions. The only way to make good decisions is to gather information from your team members and other stakeholders. What you’ll quickly find is that not everyone is going to agree with each other, which means your decision isn’t going to sit well with some people. Here is how to deal with that situation: choose what is really important to you, then pick your battles.

Continue Reading…

Guide your users to increase retention rates

Quite some time ago, when Friendster was still a thing, the founder released a statement saying that they found having five friends was critical to keeping a user active. This meant that if a new user was unable to make at least five connections, the likelihood of them sticking around for more than the first week was dramatically reduced. What Friendster did was integrate a “Find your Facebook Friends” flow as part of their onboarding experience. Users were encouraged to use their Facebook login to sign in and then the system would find other Facebook friends using Friendster. The app would ask if they wanted to make theses same connections in Friendster. This was an easy way for them to reach that five person threshold that made user retention so successful.

Continue Reading…

Minimize the user interface to maximize engagement

When interacting with a product, there are very few things that need to be done on a regular basis. For example, it’s not often that you need to change your name on Facebook, or update your bio on Twitter. When you’re using Instagram, it is unlikely that you need to change your settings once a week so that your phone doesn’t use cellular data to upload photos. Many times product people think about ALL the things that a user MIGHT want to do in their app, and then clutter the UI with as many features as they can. This is a terrible idea because it makes the app much harder to use.

Continue Reading…

How I got my second customer

As I wrote in How I Got My First Customer, the key was having confidence and putting myself out there. I had what I had, no more no less, and I went for it. Now that I had my first customer, getting my next customer was a lot easier. Now I had a success under my belt. Now I had a client testimonial. Now it was just a matter of finding the right next client.

My first “real” customer was a small furniture store. They didn’t have a website when I first approached them, and they were willing to give me a chance. I worked hard for that customer. I spent more time that I budgeted. I stayed in constant communication. I made sure to over-deliver. In doing so, I created a very happy customer and an advocate for my company. This not only gave me another project to put in my portfolio, but it gave me a valuable human reference from a real business owner. This was key to getting my second customer.

Continue Reading…

Test Driven Development

There are a lot of methodologies available for development. I’ve done everything from Agile to Waterfall, either iterating as we go, or planning a really large project all the way through upfront. I’ve found pros and cons to all the different methodologies, but in the end, I prefer to take an iterative approach. The problem with iterating quickly, or as Mark Zuckerberg would say, “Move fast and break something”, is that you do, in fact, break things. In smaller codebases this might not be that big of a deal, but when dealing with larger scale production systems, breaking something is simply not tolerable. A good solution I’ve found is to implement a “Test First” development methodology where you building unit testing first, and then write the code to pass the tests.

Continue Reading…

How your kid’s school project can teach you to be passionate about your work

As a dad with daughters (or sons), one of your primary responsibilities is to help them with school projects. Putting stereotypes aside, or attempting to cause outrage with my 1950’s assumptions, at least in my house (and many others that I know of), mom acts as the project manager. Scheduling time for your child to work on her project. Making sure that she has gone to the library and searched the web for the proper research materials. Helping them write the report and typing it up on the computer. Then comes you, the dad. You come armed with your tools, scrap building materials, and your unrelenting desire to build something cool.

Continue Reading…

How I got my first customer

I started my first web development business back in 1998, and like most new ventures, I didn’t start with any customers. I was in college at the time when I started, so my first few websites resulted in free food from the snackbar and some free flyers printed by the campus copy shop. But I wasn’t making any money yet.

The next time I was home at the end of that semester, I knew that if I wanted to make this thing work, that I needed to get paid. So I created a little one page document that outlined what I did, put together a small portfolio of those horrible looking sites I had basically done for free (including one I did as a class project and another I did for a professor) and I started driving around my hometown. I had no idea what I wanted to say and no idea what type of “customer” I was looking for. And for reference, back in 1998, websites were not top of mind for your average small business.

Continue Reading…