websocketd – a UNIX Utility for Turning a Script/Utility into a Chart/Animation

websocketd may be my new favorite UNIX utility. It’s extremely useful for taking the ugly output from a script or utility and turning it into a chart or animation, or even adding a nice interactive UI. And it does it all without changing any code or adding any dependencies to your script or utility. Read more on websocketd – a UNIX Utility for Turning a Script/Utility into a Chart/Animation…

Why (and How) Developers Should Care about Design [Video]

Design is essential to software product development, and developers have a crucial role to play in good software design.

Atomic’s path to understanding what design does (and all the various activities covered by that seemingly simple word) began when our company was a few years old. We were turning out great code, and we were predictble with time and budget, but we’d started to notice that:

Read more on Why (and How) Developers Should Care about Design [Video]…

Running Tests from MacVim in iTerm2 Version 3

Way back in 2011, I wrote a blog post showing how to Run Tests from MacVim via Terminal.app or iTerm.app. I’ve been using that setup for years without a problem, but when iTerm2 Version 3 was released, it stopped working. I’ve updated the AppleScript and am posting it here for anyone who wants to run tests in iTerm2 (Version 3) while writing code in Vim.

Read more on Running Tests from MacVim in iTerm2 Version 3…

React Testing – Jest or Mocha?

Every React project is a little different. This can make choosing the right testing setup difficult.

Both Jest and Mocha seem to be popular within the React community. There are tons of folks using Jest, though others seem to prefer Mocha (for example, the Enzyme docs and examples use Mocha). So which one should you choose, and does it even matter?
Read more on React Testing – Jest or Mocha?…

run_me: Smart Selection of Command Line Tasks by File

Test-driven development (TDD) involves running automated tests. A lot. If you have a function with five tests, you might easily invoke your test runner 50 or even 100 times before all tests are passing. Any action we take that often is a natural candidate for automation. Read more on run_me: Smart Selection of Command Line Tasks by File…

Four Steps To Maintaining a Clean Git History

Git is a very important tool. Not only does it keep a history of a project, but Git also makes it easy for a team to collaborate in a codebase. Although it’s such an important tool, it’s often under-utilized and on occasion, even neglected.

A clean Git history is easy to understand and tells a story about the project. It’s evident when features were added and how they were implemented. I’ve come to cherish a clean Git history on a project. The good news is, it’s not very difficult to keep this history clean. Read more on Four Steps To Maintaining a Clean Git History…

How to Programmatically Remove a Cell From a Static UITableView

There are two different ways to add cells to a UITableView.

The first is by using dynamic prototype cells in your table view. For a dynamic table view, you programmatically arrange the cells and sections of the table view by implementing the UITableViewDataSource protocol in code. Using this method, you can display a variable number of cells and sections at runtime. Read more on How to Programmatically Remove a Cell From a Static UITableView…

KPI Monitoring with Fabric.io

Until recently, all of the application monitoring solutions that I had seen suffered from one major pitfall or another. Either they were too difficult and time-consuming to set up, or they had convoluted and byzantine reporting mechanisms. After becoming disillusioned with Firebase, our team recently switched one client over to Fabric.io, and we’ve been extremely happy with the results.
Read more on KPI Monitoring with Fabric.io…

How I Learned to Love (or at Least Like) Pair Programming

Some people are naturally inclined to pair. Not me. My brain is all over the place when I code, so it’s difficult to focus energy on solving the problem at hand while explaining my reasoning and approaches to my pair.

This thing is, pair programming is a highly-regarded and widely-practiced convention here at Atomic. When I started here, I had never paired before. And I was quite surprised to see both how effective it was for others, and how difficult it was for me.
Read more on How I Learned to Love (or at Least Like) Pair Programming…