Knowing When Your Ember App is Done Loading

I recently worked on a PDF export feature for our Ember.js web app. There’s some interesting plumbing involving Active Job and PDFKit, but today’s story is about the interaction of wkhtmltopdf with Ember apps.

wkhtmltopdf is a headless browser that, given a URL, spits out a PDF. The problem we encountered is that wkhtmltopdf didn’t recognize when our Ember app was done loading, and thus at a good point to save the PDF.
Read more on Knowing When Your Ember App is Done Loading…

Side-Load Like a Pro with Ember-RESTless

Side-loading is an efficient way for a developer to pull multiple pieces of relevant JSON data (i.e. data for multiple model types) from a single HTTP request in a client-server implementation. Rather than requiring a client to make multiple requests to fetch the full set of relevant data, side-loading automatically sends all relevant data back from the server. Read more on Side-Load Like a Pro with Ember-RESTless…

10 Steps for Ramping into Ember.js Quickly

Ember.js is (perhaps wrongly) notorious for having a steep learning curve. I’ve heard experienced web developers complain it’s complex and difficult to learn.

At Atomic Object, we have used it successfully on many projects, and I’ve put together 10 steps to help other developers explore the Wonderful World of Ember. These tips are aimed at experienced web developers–especially those with Rails or JavaScript framework experience–but I think they can be useful for anyone who is approaching Ember for the first time.
Read more on 10 Steps for Ramping into Ember.js Quickly…

5 Steps to Getting Started with Embedded Programing

I’ve been getting asked the question, “So how would I get started with embedded development?” more and more often lately.

This is actually a really tricky question. It’s not like, “How would I get started with Haskell?” or “How would I get started with Rust?” Embedded development is such a weird and diverse thing that it’s almost like asking, “How do I get started with programming?” except in an alternate universe where 128k is still a lot of RAM. I’m not sure where to even begin.

Read more on 5 Steps to Getting Started with Embedded Programing…

Continuous Validation for Mobile User Interfaces in iOS

Laying out the user interface of a mobile app (or any app for that matter) is not a simple process. As visual designs get more complex and the number of devices and screen sizes grow, the work of a mobile developer grows more challenging.

Many developers choose to leverage open source tools to help with layout or image rendering. Because those libraries evolve over time, updating to new versions can cause unexpected changes to the look and behavior of the app. That puts the burden on developers to continuously monitor their work for problems that may emerge in the UI. Read more on Continuous Validation for Mobile User Interfaces in iOS…

Objection Turns 4, Gets 1,000th Follower

Objection is a dependency injection framework for Objective-C that I wrote in one day 2011 while working on an iOS project. It’s funny how a combination of frustration with existing tools and inspiration can create something of value for your company and the wider development community.

Objection turned 4 years old this year and has just recently exceed 1,000 watchers on GitHub. I never thought that Objection would to continue to grow in popularity and be updated regularly through its 4 year tenure, but I am glad it did. Read more on Objection Turns 4, Gets 1,000th Follower…

Unorthodox Ember Data Models: A Resource By Any Other Identifier

Ember Data has strong opinions on how it wants you to structure your data and your API, which are essentially collapsed into one by its default paradigm. If you are using ActiveModelSerializer, the path of least resistance is to have your DS.Model classes essentially mirror your ActiveRecord classes, to the point where I feel like an Ember Data app is often doing SQL over AJAX.

Read more on Unorthodox Ember Data Models: A Resource By Any Other Identifier…

DNS Record History – A Tool for Restoring DNS Records

People who work in IT Operations know that “Everything is a DNS Problem.” Recently, a client experienced an issue where the MX records for their domain were inadvertently changed, which resulted in e-mail not being delivered. Unfortunately there was no DNS history—no record existed of what the MX records had been. The DNS entries had been set up years ago, and no one knew exactly how the system had been configured. This necessitated an investigation and analysis to determine what the records should be.

Read more on DNS Record History – A Tool for Restoring DNS Records…

Unsubscribing from an RxJava Observable Mid-Stream

Imagine a scenario where you need to create an Observable sequence that will acquire a resource, do some processing, and release the resource when unsubscribed from. An example of something like this might be an Observable that acquires a lock and releases it when unsubscribed from. That “lock” signal could be merged with a second signal that does some work that should only be done after the lock has been acquired.

Read more on Unsubscribing from an RxJava Observable Mid-Stream…

Creating Charts with Rickshaw.js

I was recently introduced to Rickshaw, an open source JavaScript charting framework built on top of D3.js. Rickshaw specializes in creating timeseries graphs.

When recently integrating Rickshaw into a project, I ran into a few hurdles that weren’t terribly well documented or explained online. In this post I’ll provide an overview of Rickshaw and go into some detail on how several of the Rickshaw add-ons work, so you can tweak your graph to look just the way you want. Code for all of the below examples can be found in this Github repository.

Read more on Creating Charts with Rickshaw.js…