Building great products is hard. Let's get better at it.

The Joy

Apple announced many improvements during their WWDC keynote this year. The greatest improvement, though, was not a feature or bug fix. It wasn't an updated OS nor was it a new phone. The greatest improvement in the WWDC keynote was the closing video highlighting upstart developers talking about their first

Be Your Team's Resource

Programmers are a curious bunch. I mean this literally: we are curious by nature. That is a good thing given how rapidly the tech world evolves. That curiosity keeps our skills relevant for our companies and clients. This curiosity is on display anytime a group of programmers go to lunch

Making Privacy Consumable

As engineers we tend to be bad at simplifying topics for lay folks. Yes, we've talked about this before. But when it comes to the data security conversation, i think we have hit a new low. I say this because of the disconnect between the tech sector and the public

Be The Better Rails Developer

Rails has been very prominent in web development the last 5-7 years, and for good reason. It is relatively easy to learn and its abstractions make it easy to build features quickly. An unfortunate side effect of this has been that Rails developers have learned web development through Rails. This

Brave Developers

Cautious developers keep the software world turning. They are careful, detail-oriented and inject fewer bugs than the others. This post is not about them. This will be about the brave coders. They are the foolish risk takers. They can each point to a system they have managed to completely break

4 Steps To Make Your Interviews Suck Less

Tech interviews should be fun. They're not. They feel like interrogations. Worse, many of the questions asked in them amount to simple ego stroking and share little about the depth of a candidate's abilities. Tech interviews suck. What do we need to learn In an interview, we have a few

Code for You; Release for Them

When i code in my spare time, i build side projects that interest me. I code for me. This is a habit shared by my generally kickass business partner Adim. Over the years, we have built a number of products that could provide real value to people. But they dont.

A Memory Like Cast Iron Pans

You don't wash cast iron pans. There are a few reasons for this. The most important reason is that food cooked in a cast iron pan adds character to it. It starts to shape the flavor of what you will cook in the pan later on. What is remarkable about

Dear Managers

Managers, Your job is not to manage people. You read that right. Your job, like every other employee's job, is to improve the 4 factors critical to long term business success. Your job is to manage those factors. Not the people on your team. The four factors of success In

Understanding Regular Expressions 4: Lookarounds

Lookarounds, like regular expressions in general, are too often avoided. Why? We avoid them because we don't understand them. The time has come. The Lookarounds There are 4 types lookarounds. They are categorized in two ways: direction (ahead and behind) and positivity (positive and negative). Combined, there are a total

Good Problems to Have

Some scale problems should go unsolved. No. Most scale problems should go unsolved. "To your pitchforks!", you shout. "Burn the heretic!" Hear me out. The thing is, most scale problems aren't problems at all. They are "problems". "Problems" are issues that will

Avoiding Phantom Code

Phantoms, ghouls, spectres; semi-transparent demons and star antagonists of your horror story du jour. So much of their frightfulness stems from their intangible nature. People see them and know they exist, but to put your finger on one seems all but impossible. Thus is the problem with phantom code. It

Build a Buy Button First

Most of my past projects are bad at collecting money. Some are literally incapable of it. Of all the mistakes i've made as an engineer, i list this among the worst. Gone are the days when e-commerce was a complicated and concerning development. Now, websites with basic integrations can securely

Refrigerator Code

The late George Carlin once joked about the foolishness of human ingenuity. He said that, in the past, humans built houses to shield themselves from the cold. A warm enclosure inside of the cold outdoors. But then our food was too warm, so we built a refrigerator. A cold enclosure

Technology: Signal vs. Noise

Software is vast and growing. It seems like every week a new editor, library, framework, or language is released. I've written before about the value of learning things that are unnecessary, but with so much material, how do we find the unnecessary amidst the unrelated and unhelpful. How can we

p() vs. puts() vs. print() in Rails

Use p. Rails has three printing methods, two are common, one is less so. print prints the string (to_s) version of what is passed to it. puts works like print but adds a newline \n. p prints the .inspect version of what is passed to it, along with the

Learn the Unnecessary Things

The world's best programmers share exactly one thing in common: a passion. That passion is not for code. The passion is for creation. We are addicted to creation, whether it's solutions, websites or software. For most of us, technologies we do not require to create are, themselves, unnecessary. But sometimes

Software is a House

Software is a house. An intranet is a gated community and a proof of concept is nothing but a model home. To software people, these analogies are novel. To non-technical clients, they can be the difference between confusion and clarity. We have all been frustrated by the communication gap between

Understanding Regular Expressions 2: Groups and Captures

In the first post of this series, we looked at the basic building blocks of regular expressions: the characters and quantities. The next major building blocks are groupings and captures. Both features are based off the parenthesis, and can be used to great effect. Groupings Groups allow a regular expression

Editor as Artbush

Editors are tools. Rarely, however, do we consider our abilities with an editor as part of coding mastery. In traditional canvas art, we can see the painter's mastery of their tools in their works. Often times, how artists use their brushes and knives become a defining feature of their art.

Even Fibonacci Numbers

A second introductory problem, this time introducing integer sequences reliant on previous values. The problem The Fibonacci sequence is an integer sequence obtained by adding the previous two terms. For the purposes of the euler problem, we are told the first 10 items in this sequence will be: 1, 2,

Counting Rectangles

A geometric counting problem based strongly on a single mathematical pattern. My solution ended up needing some arbitrary loop limits, which tends to suggest a lapse in understanding. The completed script finished in 2.1 seconds without optimizations. As the joys of Project Euler are in the struggle and completion,