We're hiring!

We're actively seeking developers and designers for our Detroit & Ann Arbor locations.

Developer Tools

I Hate #regions

As software consultants, we work in many environments. Most of the time we are working in our own environment on a brand new project, but sometimes we work with a team of client developers on existing software. In the later case, we have to be mindful of their coding standards. One practice that drives me nuts is code organized into #regions.

What’s Wrong with Regions?

Microsoft introduced #regions to help organize big files in to understandable chunks. In my opinion, if your code can be broken up into regions, then it can be refactored into smaller files. I try to write my classes with single responsibility in mind, where a class has a single responsibility. Therefore regions are not required to organize the code into responsibilities.

Regions are also used to separate private, public, and protected variables, properties, and functions. This is where I see them used most often. If your class is small enough, there is no need to organize them into regions. Read more on I Hate #regions…

Posted in Developer Tools | Tagged , | 3 Comments

Cool and Easy HTML with Emmet

emmet-logoAmaze your friends and write HTML faster with this one cool trick!

But seriously, native HTML is repetitive and annoying to write. Emmet provides an intuitive and sleek alternative. It’s widely supported, and its simplest features can be adopted no problem on day one of using it. Plus — it feels great to use, and it just looks cool.

Emmet, formerly known as Zen Coding (developed by Sergey Chikuyonok), is a super cool shorthand tool for writing native HTML code. There are plugins in most editors (including Sublime Text, Visual Studio, Eclipse, IntelliJ, and Brackets), so there’s no reason not to use it. Read more on Cool and Easy HTML with Emmet…

Posted in Developer Tools | Tagged , , | Leave a comment

Increasing Pivotal Tracker Usability with Shorter IDs

Pivotal TrackerWe’re using Pivotal Tracker to manage the backlog on my current project. I initially really appreciated the simplicity of the way Tracker presents stories just by their human-readable name. But as the project progressed, there came a point where there were so many stories that it started to become difficult to find stories quickly.

One of the clients made a mention in passing about how they wished they had a short story ID like they had seen in previous projects. Having previously worked with JIRA’s project-unique issue-ID system, I realized how much easier it would be to make quick reference to existing stories, and started looking for a solution. Read more on Increasing Pivotal Tracker Usability with Shorter IDs…

Posted in Developer Tools | Tagged | Leave a comment

Xcode Efficiency Tips: Keyboard Shortcuts


Although other IDEs exist, Apple’s Xcode remains the most popular choice for development of iOS applications. At Atomic, we highly value efficiency, so it’s important for a developer working in Xcode to familiarize themselves with at least some of the most useful keyboard shortcuts. To that end, this blog post will cover some of the keyboard shortcuts and resources I find myself using the most. Read more on Xcode Efficiency Tips: Keyboard Shortcuts…

Posted in Developer Tools | Tagged , | Leave a comment

Editing the Future – Light Table, and Atom, and Then What?

Github recently announced their project to create their own programming editor called Atom. (Nice logo! *wink*) If you haven’t seen it, here’s a great hands-on post showing off its features.

In 2012, Chris Granger announced a project called Light Table, which I think was a recent mile marker on the same road as Atom.

Here’s some of what Light Table shares with Github’s Atom:

  • Both offer a web-based programming platform targeting customizability (Atom, LightTable).
  • Both leverage modern languages to implement the editor itself (Atom, LightTable).
  • Both envision open-source communities of 3rd party plugins (Atom, Light Table).

So if these two recent programming environment projects are points on a line, where does that line point? Read more on Editing the Future – Light Table, and Atom, and Then What?…

Posted in Developer Tools | Tagged , | 2 Comments

Affordable CAN Bus Tools that Won’t Break the Bank

The CAN bus is a simplistic, cheap, and robust interface that’s widely used for communications between microcontrollers but is a viable and cost-effective communications network for systems that are physically wired together. Vector Informatik GmbH has long dominated the space of CAN bus development/analysis tools, but the hardware and software offerings they provide are extremely pricey. This leads to organizations fighting over these tools, because they cannot justify the cost involved to allow all developers and testers to have the setup they require to get their work done.

In this post, I will be presenting some alternatives to the Vector suite that likely provide all of the necessary capabilities your teams require, but at a fraction of the price. Read more on Affordable CAN Bus Tools that Won’t Break the Bank…

Posted in Developer Tools | Tagged | 1 Comment

Script Away your Annoyances: Employing Automator in a Pinch

I’ve written previously about the importance of scripting away your annoyances. Occasionally I run into an annoyance that I can’t easily script – perhaps the application isn’t scriptable (because it’s GUI only), or because the means of scripting it is beyond my reach at the moment (I’m rarely in the mood to battle Applescript for more than 5 minutes).


A tool I like to turn to is OS X’s Automator. It comes on every Mac and, while not capable of everything, it is capable of clicking through a bunch of annoying menus. Here are two use cases for Automator.

Read more on Script Away your Annoyances: Employing Automator in a Pinch…

Posted in Developer Tools | Leave a comment

Adventures in Pair Programming – 2 Devs, 3 Computers


For the last several months I’ve been pair programming every day, working with another developer on a Windows application. Both of us usually use Macs, so we’ve adopted a company Windows laptop to do the work, and as we’ve experimented with our pairing tools, we’ve learned a bit about how tools affect getting the job done.

Alternating Mac & Windows, Dvorak & Qwerty

When we started on the project, my pairing partner and I sat with our Macs in front of us and the Windows laptop in between, pushing the PC back and forth depending on who was driving. The keyboard and trackpad were unfamiliar, and despite weeks of using them, we still only tolerated them, frequently sighing at clicks we didn’t mean to make and keys we didn’t mean to hit.

Read more on Adventures in Pair Programming – 2 Devs, 3 Computers…

Posted in Developer Tools | Tagged | Leave a comment

Moving Unpushed Changes to a New Branch with Mercurial

So you’ve been studiously committing your changes early and often only to discover that, for whatever reason, you really wished you’d been committing your changes to a different branch. Now what do you do? Is there a way we can just move unpushed changes onto a new branch? Actually, Yes!

1. Make a Backup

First of all, in order to do this we’re going to need to use the mercurial rebase extension to essentially re-write (unpushed) commit history. Rebasing is one of the few mercurial commands that can irreversibly destroy changes. Fortunately, we can easily create a convenient backup by just creating a local clone of the repository.

Make sure you don’t have any uncommitted local changes, and then do:

hg clone path/to/original path/to/backup/

Now that we have a good backup, lets get started. Read more on Moving Unpushed Changes to a New Branch with Mercurial…

Posted in Developer Tools | Tagged | Leave a comment

Refreshing Team Provisioning Profiles in Xcode 5

Last week I updated my laptop to Mavericks and Xcode 5. I had been waiting to do it pending resolution of a bug in pre-release versions of Xcode that was causing massive layout problems in my app. The fix finally came in the Xcode 5.0.1 release, so I installed it and provisioned a new iPad Air for development. But before I could build and install my app for this device, I had to add it to my team provisioning profile, which is “Managed by Xcode”. That process is a little different in this version, so I thought others might benefit from a simple guide.
Read more on Refreshing Team Provisioning Profiles in Xcode 5…

Posted in Developer Tools | Tagged | 1 Comment