We're hiring!

We're actively seeking developers for our new Detroit location. Learn more

A Checklist for Great Feature Requirements

Checklist Feature Requirements

My long-time girlfriend works as a Business Analyst for an IT company that does agile development. Recently, she asked me what I (as an engineer) look for in an ideal requirements document for a feature.

This hit home for me because I have seen plenty of poorly-defined features on projects I’ve worked on. Poor requirements usually lead to slower development times and features that are more likely to need rework. As an engineer, I have enough work to do in figuring out the best way to architect and implement a feature without having to frequently halt my work and chase down vague or incomplete requirements.

I did a lot of thinking and came up with a pretty comprehensive checklist of things I’d like to see in every feature request/user story/programming task. Read more on A Checklist for Great Feature Requirements…

Posted in Project & Team Management | Tagged , | Leave a comment

Maintaining a Unified Culture at a Consultancy


When you think of tech companies with great cultures, your mind probably jumps to the usual suspects — Google, Facebook, or some swanky new Silicon Valley startup. It’s easy to see why (whether it’s a mini-city of a campus or a small, tight-knit group looking to change the world together) these companies have a lot that makes them unique and appealing. But Atomic has a great culture too.

Keeping such a strong, awesome culture at a consultancy can be a challenge, though. Most Atoms are working on different projects for different client companies. On top of that, each company we work with is (to some degree) asserting its culture onto its associated Atoms. This is great in many ways, because it gives us perspective into different ways of doing things and can give us an influx of new ideas. But the challenging part is keeping our culture unified when we are all subjected to such a diverse range of environments.

So what do we do as Atoms to keep our identity and strong culture alive with each other? The answer is a lot of things. Read more on Maintaining a Unified Culture at a Consultancy…

Posted in Business Practices | Leave a comment

Testing & Tooling in EmberJS

Like many other Atoms, I’ve recently been doing some work with EmberJS. Ember is an awesome web development toolkit with some really killer features. One of my favorite parts of Ember is how easy it is to test. The framework comes bundled with a system testing framework, and its object model makes unit testing a breeze. Combine all that with a great test runner that has CI integration, and you have a really awesome testing ecosystem for your new app.

System Testing with Ember Testing and QUnit

EmberJS comes bundles with a great system testing framework called ember-testing. This framework allows you to make high-level assertions regarding your applications’ state, mostly by querying and interacting with the DOM through JQuery in a black box fashion. Since the tests are pure JavaScript however, we also get direct access to our running application if needed for testing.

Read more on Testing & Tooling in EmberJS…

Posted in Web Apps | Tagged , , , , , , , | 4 Comments

Handling Forms with Marionette.js

Marionette.js is an extension library for Backbone.js that offers many improvements and conveniences to cover common use cases for Backbone. On a recent project, I helped build a large single page application using Marionette.

One thing that Marionette lacks out of the box is a convenient way to manage form lifecycles, including validating and submitting forms with minimal overhead. To address this, I created a generic FormView class that extends Marionette’s ItemView and works with the backbone-validation plugin.

Without further ado, here is the Marionette FormView class I created: Read more on Handling Forms with Marionette.js…

Posted in Web Apps | Tagged | Leave a comment

The Value of Code Review – Why, When, & How


During my most recent project, we made extensive use of formal code reviews. This process drastically increased the quality of code in the project, reduced the ramp-up time of new devs on the project, and facilitated knowledge sharing across the entire team. I also found that it didn’t cause an excessive hit on developer productivity for our project. Read more on The Value of Code Review – Why, When, & How…

Posted in Development Practices | Tagged | Comments closed

A Comparison of Remote Pairing Tools – Skype vs. Wemux vs. Chrome Remote Desktop

Since starting at Atomic, I’ve had to use remote pairing on several occasions to work with developers who were not co-located with me. I wanted to give an overview of some of the different tools I’ve used for remote pairing and what I like/don’t like about them.

Read more on A Comparison of Remote Pairing Tools – Skype vs. Wemux vs. Chrome Remote Desktop…

Posted in Developer Tools | Tagged , | Comments closed

Tracking Down Disk Usage on the Command Line

When I bought my Macbook a few months ago, one of the hardware choices I made was to get a 128GB solid state drive with it. While I love the performance of my SSD, its small size has given me some problems when trying to manage my disk usage.

Disk Overload

A few days ago, I opened the activity monitor and was shocked to see that my machine was reporting less than 4 Gigabytes of free space left on my disk! The worst part was that I had absolutely no idea what was taking up all of that space. Was it all the downloads I had saved from Chrome? My music library?

Read more on Tracking Down Disk Usage on the Command Line…

Posted in Extracurricular Activities | Tagged , , | Comments closed

Getting Scala with Akka Actors Working on Android

I recently spent some time trying out Scala on Android, with good results. One of the things I wanted to get working on the Android platform was the Akka actor library, unfortunately this was not exactly a simple affair.

Read more on Getting Scala with Akka Actors Working on Android…

Posted in Android | Tagged | Comments closed

Build a Rich JavaScript Front End with Grunt

I recently started doing a lot more standalone JavaScript front end development, often using CoffeeScript, less, jade, or other modern web stack components. Compiling assets like these is pretty much a solved problem when they are being delivered from a server side web stack like Rails, but I found myself in need of a JavaScript-based solution for statically compiling, serving, and testing my code.

I first looked into simple solutions involving node Cakefiles and static site generators like wintersmith, but I found these solutions lacked the power and flexibility I needed. At this point, through an obscure comment in a Google Talk thread about wintersmith, I heard my first reference to Grunt. Read more on Build a Rich JavaScript Front End with Grunt…

Posted in Web Apps | Tagged , | Comments closed

Learning to Type


One of my biggest struggles as a developer is probably something a lot of people, particularly software professionals, take for granted. I don’t know how to touch type. Growing up, I was never enrolled in any type of keyboarding class in grade school. I was also never more than a casual computer user until the end of my first year of college, which gave me plenty of time to form bad habits.

The worst part is that, even though I was always aware of my problems with typing in the back of my mind, I was never aware of how impactful of a problem it was until I began to work full time at Atomic. While I can type marginally quickly (~30 WPM) using my practiced hunting and pecking, pair programming has revealed that I have a handicap compared to my fellow developers when it comes to being able to quickly put out code, and it’s embarrassing. I have also noticed that on particularly long days, especially when I am working by myself, I have begun to develop headaches from the frequency with which my eyes continually dart between my screen and keyboard.

Read more on Learning to Type…

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