Testing Data Migrations in Rails

When working on a Rails project, you will inevitably need to move data around in your database. Some join table value will need to be moved into its own table or what have you. When approaching these kinds of migrations, there are two major complications: future-proofing and testing. In this post, let’s walk through an example migration.
Read more on Testing Data Migrations in Rails…

Embedding Ember in Existing Apps

My current project, an online student assessment tool, involves adding features to a Rails app built in the 2011/2012 Rails 3 era. The app was also built using Backbone.js, a custom templating language, and raw JSON responses. It was developed using good development and design practices (such as TDD, SRP, etc.), but many of these technologies have been superseded by modern frameworks such as Ember.js or Angular. Active development on this project was not going to be easy or fun.
Read more on Embedding Ember in Existing Apps…

Native HTML Apps with Xamarin

At the tail end of last year, my team was working on an Ember.js app. That would usually be pretty normal, but in this case, it was an Ember app running in Cordova utilizing massive amounts of offline support. We needed to support Android and iOS. Offline support meant downloading most of our users’ data, processing it, and storing it—all while keeping the UI responsive using the single Javascript thread. As the project progressed, it became clear that this tech stack was not going to hold up.

Read more on Native HTML Apps with Xamarin…

Learning from Game Dev: Entity, Component, Systems

All the game developers that I’ve spoken with (hobby or pro) tell me, “Making games is entirely different from making generic software.” While I agree with that statement, there are definitely nuggets to mine from the world of game development.

The pattern of using Entity Component Systems (ECS) is one such nugget. ECS is a method of processing game state in a flexible and extensible way. It has a heavy focus on Data-Oriented Design, composition over inheritance, and separation of data from logic. Read more on Learning from Game Dev: Entity, Component, Systems…

Managing Multiple BLE Devices in iOS

With the onset of the Internet of Things, Bluetooth Low Energy (BLE) has become a popular choice for connecting interesting new devices to the smart phones we all carry in our pockets.

In dealing with BLE on iOS devices, I’ve had great success with iBeacons and single devices. However, when dealing with multiple BLE devices in iOS, things get tricky. Read more on Managing Multiple BLE Devices in iOS…

Atomic Teach and Learn: Now at Hope College

In my early days at Atomic, before Teach and Learn became a Core Atomic Value, its practice was already in full swing. My first months were spent having vim commands barked at me from Dave Crosby while trying to figure out how to build good software. I was very much on the learning side of Teach and Learn.

Nowadays, more than a dozen years later, I’m tipping the scales in the other direction: I’ve started teaching this fall at Hope College.
Read more on Atomic Teach and Learn: Now at Hope College…

Building an Infinite Procedurally-Generated World

I had a lot of fun writing my last blog post: All Work & No Play – Taking Time to Code for Fun. In it I talked about writing fun code that keeps you interested in programming and keeps you creative. I used the example of writing a 2D procedurally-generated, infinite world. In this post, I am going to explain details of how that example works.

Read more on Building an Infinite Procedurally-Generated World…