archived posts

while i enjoy writing, i haven’t prioritized it in years. until i get back to writing, here is a collection of blog posts written between 2013 and 2018.

Adding a new build notification to an Ember application

Continuous deployment of your Ember app is great; users with stale builds isn’t as great. Let’s take a look at building a new build notification using a service worker.

Progressive Ember

A walk through the real effort to transition an enterprise level Ember application to a progressive web application.

A Step by Step Jekyll Blog to Progressive Web App Guide

In recent years, web technologies have started to catch up to mobile devices in terms of offering a first-class mobile experience. Here’s a step by step guide in the effort required to migrate my personal website to a progressive web application (PWA).


The coffee situation in a crowded office can be difficult. If you don’t get the jump on a fresh pot of coffee, you might miss out entirely. Enter coffeebot.

Danger Brewing: The JavaScript Powered Kegerator

This is a story about a completely unnecessary, over-engineered appliance that dispenses beer, has its own web application and reports data in real-time.

Localization Is Hard. Here's How We Solved It

Localization is hard because language is hard. What makes localization especially challenging is that words and sentences can’t be approached in a vacuum by a translator. The more context you can provide, the better. For example, imagine a label on a web page that just read: High. If you’re the translator looking at the word, are we trying to convey height? Some sort of drug state?

Write Better Ember Tests

If you’re not testing your code, well, you’ve got some nerve. For the rest of us rational people, let’s look at some basic tips for writing better Ember tests.

Ember Theming

Theming a web application typically involves swapping out stylesheets or moving CSS classes around. But what if you have a single page application? It’s a little tricky, but EmberJS and SASS make it incredibly easy.

Nobody is Going to Steal Your Dumb Idea

Hey, you make apps, right?

Ugh, yeah, sure, I make apps.

Ember: Get More Done

Ember often gets lost amidst talks of other frameworks and tools like Angular, React, etc. and I think that’s incredibly unfortunate. Because of Ember, I’m the most productive I have been in years and building some of the best software I have ever written. It’s not that Ember is fundamentally better than other frameworks (but it is…), it’s that Ember makes decisions for me, it makes my workflow far less complicated, levels the playing field and gives me more time to spend building awesome software.

Code Quality Matters

Maintaining software, especially when you are not the original author, is the worst. How many times have you looked at brutal code and your first thought was, “Why don’t I just re-write this?” Of course, this thought is detrimental to your time, your perception of a codebase and potentially to your team. Here are some tips to maintain code quality over time.

Put Some Fiber in Your Dump

First, if you’re a software developer and not writing tests, please either start immediately or quit your job forever.

Building a Software Product: Lessons Learned

I spent a good portion of my spare time over the last few years working on a side project. For this particular project I formed an LLC, opened a bank account, existed on multiple social media platforms, had both an iOS and Android app and so forth. Now I can’t wait to shut it all down.

Ember and Firebase: Go Where Eagles Dare

At a recent EmberJS Philly meetup, Brendan O’Hara (@BrendanOHara) gave a great overview of Ember and Firebase (via EmberFire).

Recruiting Developers: Your Pitch Is Bad And You Should Feel Bad

Recruiters have a tough job, especially when it comes to placing software developers. I would also imagine any sales/commission based job is a difficult one, because it’s simply a skill that I’m just bad at. Having said that, recruiting software developers has become a miserable experience for all parties involved.

Why Ember is the Cat's Pajamas

If you have recently blinked, it’s likely that you have missed the plethora of web development tools, frameworks, etc. There is one in particular that has my full attention however, Ember.

Using meta theme-color for a Quick Win

For websites and web applications, a minor detail that often goes overlooked is the use of the “theme-color” meta attribute.

Development Battle - Android vs. iOS

For the better part of 6 years, I have soley been an Android advocate, ignoring iOS at whatever cost. In the last few years, I have been working on a side project (formerly that I thought would benefit from being on both platforms. Over the next series of posts, I’m going to compare and contrast my experience building the same application on both platforms.

Setting Up Email with Postfix, Dovecot and MySQL

I had recently set up a Linode (which is awesome by the way) to handle the incoming and outgoing mail of a domain of mine. Linode actually has very good instructions on the subject, which can be found here.

Codeception Acceptance Tests - Using Multiple Databases

Codeception is a great PHP testing framework and I would highly recommend it to anyone that needs functional, unit or acceptance testing, even if your application isn’t PHP based. Not only does it give you a lot out of the box, but it’s very modular and extensible.

Google Glass First Impressions

My interest in Google Glass was mostly for development, given its radically different experience and very interesting potential use cases. I was also very interested in the device from a societal standpoint in the sense that Glass is so new, people aren’t fully aware of them yet like they are with mobile phones.

Mobile Caching Strategy

Caching in a mobile application serves two important purposes and a good caching strategy should cover both:

Building a MEAN Pi

If JavaScript isn’t your thing, turn back now because we’re going to be implementing the MEAN stack on a Raspberry Pi. The MEAN stack (MongoDB, Express, AngularJS and NodeJS) is a web stack based entirely in JavaScript.

Google Plus ListView Animation

The Google Plus app for Android has a nice ListView animation when scrolling down in a list, ListView items slide up into place. This transition only happens on list items you haven’t viewed yet and only in the scroll down direction, not in the scroll up direction.

Android ListView Optimization

When building a ListView in Android, 9 times out of 10 it’s likely that you’re using a custom Adapter to bind data to your list. By introducing the ViewHolder pattern into your Adapter, you can increase the performance of your ListView substantially.

Android Overdraw Optimization

Overdraw is painting a pixel more than once and it’s very easy to overlook when building an Android application.

Ubuntu 64 bit and Juniper VPN

I’ve got 99 problems and installing the Juniper VPN in Ubuntu is all of them. If you have ever had that thought, then you’re in the right spot.