We're hiring!

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

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

Don’t Fear the Standards – They’re There for a Reason

When I started working on my first embedded project at Atomic, I was given just two pieces of advice regarding C programming:

  1. Read the K&R C book.
  2. Turn to the C technical standard for language questions.

The second one struck me as an odd proposition at the time, as I had never before cracked open a language spec.

My impression of language specifications and formal documents in general was that they were for a chosen few, and not generally useful day-to-day. This turns out to be almost completely untrue. Since the standards documents lay out the rules which the people implementing the standard must follow, they often provide one of the very best references for how things behave in the real world. They also must be clear enough to follow, and detail the corner cases that introductory blog posts always seem to leave out.

Surely enough, I quickly found myself skimming through the C99 specs for everything from finding out what the ‘register’ keyword actually does (hint: nothing to do with register allocation) to the exact behavior of designated initializers for structs. The spec isn’t always the clearest, and takes some time to read, but importantly it’s almost always right. Read more on Don’t Fear the Standards – They’re There for a Reason…

Posted in Development Techniques | Leave a comment

Faster MacOS Drive Images with SuperDuper, SSHFS, and Netcat

I recently found myself needing to make a really thorough system image of my MacBook when my Mac OS install picked up some subtle corruption that was causing some really crazy suspend/resume bugs. I chose to make full system images with SuperDuper!, since it has proven itself quite capable in these matters in the past.

I already had Netatalk set up on my trusty personal file server, so I set up a gigabit ethernet connection with jumbo packets, mounted an AFP share on my mac, and started a backup to a new sparse bundle. “Slow” does not even begin to describe for how painfully sluggish the speeds reported by SuperDuper! were, at less than 8MB/sec. Over 18 hours were estimated to complete the backup. Since I need to work on my laptop at least 8 hours a day, this was unacceptable. Thankfully, I found a faster way. Read more on Faster MacOS Drive Images with SuperDuper, SSHFS, and Netcat…

Posted in Extracurricular Activities | Tagged | Leave a comment

A Primer on Esoteric Programming Languages

There are a few programming languages like Ruby and JavaScript I use day to day that just get work done. There are others that are wonderfully expressive like Scala and Clojure, but which I find few opportunities to use.

This post is not about any of those programming languages. This post is about more esoteric languages — ones that I will never use for practical purposes.

These are languages that exist not to get work done, but to have fun. If you ask yourself “Why?” you are probably missing the point. The question is more often, “Why Not?” Read more on A Primer on Esoteric Programming Languages…

Posted in Extracurricular Activities | 2 Comments

Ember.js Date Pickers – It’s Easy!

Ember.js can be an extremely polarizing framework. If the stars align, you can accomplish astonishing volumes of work in a short period. When you start exploring the boundaries of what’s known practice, sometimes you can get buried under a mountain of yaks that need shaving.

The application I’m currently working on has quite a few form pages. This has lead me to look some of the tougher problems in Ember like radio boxes and modal dialogs. While I’ve had exceptionally poor luck trying to get radio buttons working properly and am not unsatisfied with my current solution for modals, I had a really awesome experience adding a calendar date-picker widget with Ember.

Read more on Ember.js Date Pickers – It’s Easy!…

Posted in Web Apps | Tagged | 5 Comments

Resources for Getting Started with Ember.js

Ember.js is an intriguing framework, but I have occasionally been frustrated trying to find the proper way to accomplish a task. With Ember.js evolving at such a rapid pace, it’s not uncommon for information written only months ago to be completely out of date. To that end, I’ve assembled some of the more helpful sources of information I’ve discovered.


Ember Homepage
Contains definitively up-to-date information about the API and at least some basic guidance about how it should be used in the Guides.

Read more on Resources for Getting Started with Ember.js…

Posted in Web Apps | Tagged | Comments closed

ARM Cortex-M Toolchain – The Easy Way

A couple of months back, I wrote about setting up a full toolchain for targeting the STM32F4 on Mac OS. While those instructions will still work, I’ve since found a much easier way of getting the same toolchain set up. As an added bonus, these instructions will work for Mac, Windows, or Linux.

ARM packages an entire GNU/GCC toolchain for their Cortex-M and Cortex-R processors, and makes it available on launchpad. These releases are also used as the basis for the compiler of at least one major IDE. The toolchain includes newlib, gdb, binutils, and gcc.
Read more on ARM Cortex-M Toolchain – The Easy Way…

Posted in Embedded Systems | Comments closed

Aliasing Serial Baud Rates in FTDI Drivers for Mac OS X

For a recent project, I needed to interface my computer to an embedded device over a RS-422 connection at 3.2Mbaud. Since this is a nonstandard serial rate, I set out to find a way to configure a relatively cheap USB UART bridge that supported communications at this speed.

FTDI makes a chip called the FT4232 that has four separate UART interfaces and supports baud rates from 3MBaud to 12MBaud using some extended clock settings. These extended baud rates are readily available with FTDI’s D2XX drivers, but I wanted to retain the ability to use a standard serial programming API to communicate with the hardware. As such, I was left with the task of aliasing some other standard baud rate to 3.2MBaud in the virtual com port drivers.
Read more on Aliasing Serial Baud Rates in FTDI Drivers for Mac OS X…

Posted in Embedded Systems | Tagged | Comments closed

Replicator 2 Teething Issues

MakerBot Replicator 2

Recently, a group of people at AO collectively bought a MakerBot Replicator 2. The printer has been going pretty steadily, but not without the teething problems expected in an early-adopter technology.

Poor Extruder Block Design

Makerbot’s stock extruder for the Replicator 2 uses a round delrin plunger mounted on the end of a screw to pinch the filment against the stepper motor’s hobbed wheel to push filament. Delrin has a low enough coefficient of friction that this works great so long as your filament is a constant diameter. In our printing, we’ve found that our extruder occasionaly still skips steps, leaving gaps in the extruded filament.

Read more on Replicator 2 Teething Issues…

Posted in Extracurricular Activities | Tagged | Comments closed

Getting Accustomed to Embedded Development

I have a bachelor’s degree with majors in both Computer Science and Computer Engineering, and have a pretty solid base of theory for programming at pretty much any level of computing. Most of my professional experience to date has been working on either desktop software or web applications. As such, I relished an opportunity that came up recently to switch gears and work with Atomic Embedded on the firmware for a project.

There has been quite a learning curve. This is the first time I’ve built a system of considerable size in C. Match the intricacies of C with the challenges of static memory management (thou shall not use malloc), a complex problem domain, and what are apparently normal issues with hardware quirks, and I’ve had to learn fast to keep up. Thankfully, that’s exactly why I signed up at Atomic Object.

Read more on Getting Accustomed to Embedded Development…

Posted in Growing as Makers | Tagged , | Comments closed
Google Circle
Join my Circle on Google+