Flexure: A Lightweight Model Framework for Ember.js

Ember Data is ambitious and does a lot of heavy lifting for you, which requires that it makes some big assumptions. It assumes you need an identity map, object relationship management, dirty state tracking, and that your interaction with your server is primarily or entirely CRUD operations.

I recently worked on a project where these assumptions didn’t fit, and I was in a tough spot. While Ember Data has a handful of alternatives, they all share these assumptions. I had to choose: I could use Ember Data and fight it along the way, or I could roll without it at the cost of spending time implementing or copying functionality that Ember Data provides for free. Read more on Flexure: A Lightweight Model Framework for Ember.js…

Using Ember CLI with PhoneGap’s CLI Tools

For a recent project, a client wanted a mobile phone application that would work across both iOS and Android. As someone with more experience with web development than either iOS or Android, turning to Adobe’s PhoneGap seemed a fairly obvious path. I would be able to leverage more of my existing skill set, and could use awesome tools like Ember.js.

I started digging through some getting started guides for PhoneGap and quickly realized that the default platform and build management tooling (cordova-cli) had no support for any sort of asset processing. Read more on Using Ember CLI with PhoneGap’s CLI Tools…

Trying out Rust – Packages, Upgrades, & Security

I’ve been getting started learning the Rust language, and thought I’d share some my initial take-aways.

I’m an embedded developer, and most of the code I write for work is in C. As I’ve mentioned before, I’m particularly interested in Rust as it’s a systems language that might one day be a suitable replacement for C/C++ in my everyday work. Read more on Trying out Rust – Packages, Upgrades, & Security…

Exploring iOS Core Bluetooth: Read Requests

Apple’s Core Bluetooth Progamming Guide does a good job of explaining how to use Core Bluetooth in an iOS app. And there are countless blog post tutorials that walk through scanning for peripherals, connecting, discovering services and characteristics, and reading/writing values. These resources were great for getting started, but eventually I ran into some questions that I couldn’t answer. Read more on Exploring iOS Core Bluetooth: Read Requests…

Test-Driven Infrastructure (TDI)

Atomic really has a passion for writing high quality code and for testing. While our internal server infrastructure has often been maintained in a semi-automated fashion, it has traditionally lagged far behind our development practices in terms of code quality, testing, and continuous integration.

Over the past year, however, Mike English and I have been working to revamp much of our server infrastructure using the Chef configuration management tool. Our goal has become to build a Test-Driven Infrastructure (TDI) in which we first write tests to model and validate the code that we later produce to configure and manage our servers and applications. Read more on Test-Driven Infrastructure (TDI)…

Unwind Segues in iOS Storyboards

Introduced in 2012 with iOS 6, Unwind Segues give you a way to “unwind” the navigation stack and specify a destination to go back to. The first time you use them, they can be confusing. In fact there’s no other UI feature of iOS development that has caused more discussion in our office than Unwind Segues. In this post, I’ll help you understand the fundamentals.

Ever since I noticed the strange “Exit” outlet show up in Xcode, I’ve wondered what it did. Most people probably did what I did the first time they saw it. I Ctrl-draged from a button to the “Exit” outlet and nothing happened. This is the beginning of the confusion for new developers. How do I get the “Exit” outlet to do anything?

Read more on Unwind Segues in iOS Storyboards…

Accessing a .NET Virtual Machine Application from a Host Machine

I’ve recently been working on a .NET web application. We are mainly a Mac-based development shop at Atomic, so I’m working on this application in a virtual machine. My weapons of choice are VMWare Fusion and Visual Studio 2012 (not much of a choice), but that is neither here nor there.

Our application uses the Helvetica Neue font family. This font comes pre-packaged with Mac, but isn’t included in Windows. So, in order to effectively design and preview our application, I needed to make it available from my host machine. Here is how I did that.

Read more on Accessing a .NET Virtual Machine Application from a Host Machine…

What You Should Already Know about JavaScript Scope

If you are a novice JavaScript programmer, or if you’ve been messing around with JQuery to pull off a few animations on your website, chances are you’re missing a few vital chunks of knowledge about JavaScript.

One of the most important concepts is how scope binds to “this”.

For this post, I’m going to assume you have a decent understanding of JavaScript’s basic syntax/objects and general terminology when discussing scope (block vs. function scope, this keyword, lexical vs. dynamic scoping). Read more on What You Should Already Know about JavaScript Scope…