Performance Analysis with ETW: Event Tracing for Windows

Event Tracing for Windows (ETW) has been around for a while now, but many (if not most) developers have never used it. I’ve primarily used it for performance tracing, and it’s flexible enough to be used for logging regular application events as well. Read more on Performance Analysis with ETW: Event Tracing for Windows…

Generating Rust Bindings for Embedded Libraries

As I talked about in my last post, Embedded Rust Right Now!, you can call C functions directly from Rust without much difficulty. However, you normally still need to provide Rust types and prototypes for the corresponding C types and functions you want to use. This can be a time-consuming and error-prone process.

Fortunately there is a tool call rust-bindgen that can generate bindings automatically directly from C header files! It’s a little trickier when you’re cross compiling to target embedded systems, but you just need to pass some extra clang flags to bindgen. Read more on Generating Rust Bindings for Embedded Libraries…

Improving Ember-CLI Testing with Sinon.js

Dialog i grön by Holger.Ellgaard

When I first started developing single page web apps using Ember-CLI, I was very impressed with the testing tools they provide out of the box. However, after I spent more time in an Ember-based tech stack, I found myself wanting a better way to mock objects and write expectations.

In this blog post I’ll explain how an Ember developer using Ember-CLI can install and use the popular testing testing tool Sinon.js to write better tests and ensure a more correct Ember app. Read more on Improving Ember-CLI Testing with Sinon.js…

Rapid Prototypes for Devices with Raspberry Pi

Since joining Atomic, I’ve worked on quite a few web projects, where rapid prototypes are common and quite easy to produce. Unfortunately, not all domains we deal in have such luxuries.

My latest project is a lightweight embedded linux device with a GUI and physical buttons. In such a stack, it can be hard to get rapid feedback cycles on your UI and UX. To try and alleviate this problem, I came up with a method for scripting interaction with rapid prototypes using a display attached to a Raspberry Pi. Read more on Rapid Prototypes for Devices with Raspberry Pi…

Turn Any iOS Task into a Background Task with ReactiveCocoa’s RACSignal

If an app performs a task that needs to complete even if the app is moved to the background, iOS provides a way to request a little more time to complete the task. You just need to let iOS know when you’ve started the task and when it has ended. If the app is moved to the background while the task is still in progress, iOS will allow the app to keep running (up to 3 minutes in iOS 7 and 8) to try to give the task a chance to complete.

Read more on Turn Any iOS Task into a Background Task with ReactiveCocoa’s RACSignal…

Testing Asynchronous Behavior in JavaScript with Selenium

Full stack browser testing of web applications is awesome. It validates that your application works end-to-end and allows you to check actual user workflows. For the last year and a half, I’ve been using Selenium to test a JavaScript web application we’re developing using Backbone.js.

Unfortunately, web apps that use JavaScript a lot can be challenging to test with Selenium. Read more on Testing Asynchronous Behavior in JavaScript with Selenium…

Taking Control of Logging in Clojure

Clojure inherits some interesting tradeoffs as a result of being built atop the Java Virtual Machine. One upside is the availability of many full-featured and mature Java libraries. But one downside is the need to survey the historical as well as technical landscape of your available choices.

Unsurprisingly, when it came time to add proper logging to my project, I had to make sense of the several available Java logging libraries. Here’s what I found. Read more on Taking Control of Logging in Clojure…

Fixing UI Elements that Float Away

While testing our iOS app, my team found a puzzling bug—repeatedly clicking some of the buttons on the main dashboard caused the whole row of buttons to gradually drift up or down, even off the bottom of the screen. It didn’t always move, but once it started moving, it tended to keep sliding in the same direction.

Read more on Fixing UI Elements that Float Away…

Bi-directional Data Bindings in ReactiveCocoa with RACChannel

ReactiveCocoa is a functional-reactive framework for Objective-C that can be leveraged to manage the flow of data within an application. The API provides tools that enable the composition of complex streams that chain data sources to data consumers. Typically, data travels down these streams in one direction—from source to consumer—but on occasion, it’s necessary to have data travel in both directions. This is where the RACChannel feature can be used. Read more on Bi-directional Data Bindings in ReactiveCocoa with RACChannel…

What “Semantic” Markup Really Means

I’ve found that trying to write semantic markup has helped me write cleaner HTML. It’s been a useful guideline, but it hasn’t been perfect, and I’ve sometimes struggled with how to model things well. Recently at the March SoftwareGR event, I heard Jonathan Snook relay an example that I found very insightful. Read more on What “Semantic” Markup Really Means…