Photo by Pablo García Saldaña

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.


Users of my Ember application tend to have long running sessions. My team and I also prefer to release code often. Those releases usually come with corresponding backend changes. While we spend a lot of time making sure those releases are backwards compatible, it would be nice to have some assurance the old Ember builds are no longer in use after a reasonable amount of time.

Note that this isn’t specifically…

offline AF

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).

Before Getting Started

In order to track my progress, I made extensive use of the open-source project, Lighthouse. There’s a handy chrome extension available here.

For those unfamiliar, Lighthouse will audit your site and give you a score over five categories:

  • Progressive Web Application
  • Performance
  • Accessibility
  • Best Practices
  • SEO

Scores range from 0 (worst) to 100 (best) and very often it…

The percolations are imminent.

I didn’t choose the mug life, the mug life chose me.

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.

How Coffeebot Works

Coffeebot monitors your drip coffee maker’s electrical current. More specifically, it monitors how long it takes a capacitor to discharge while the coffee maker is drawing current. Fortunately, drip coffee makers draw electrical current in three distinct phases: idle, brewing and heating.

The coffeebot watches for the brewing phase. When it identifies the coffee maker as brewing, it sends a…

End result — A dope looking JavaScript powered beer dispensing piece of madness.

As mentioned in the overview, there are lots of ways to go about this build. For example, do a Google search for keezer, coffin keezer or kegerator, you’ll see what I mean.

Getting Started

I did a lot of research around different builds. I ultimately liked this rustic looking kegerator build by Drew McDowell. There’s also a similar design in the comments of that blog post from a guy named Alex, which you can find here. The faux cement look was a little above my comfort level, but what I really liked was the wood look and the industrial style draft towers.

The Skeleton

End result — A dope looking JavaScript powered beer dispensing piece of madness.

As mentioned in the overview, there were a lot of ways I could have went about this build. For example:

I felt these projects either were too complicated for what I wanted to do or didn’t meet my objectives, etc. I also wanted to take the time to learn some new things along the way.


I have a physical device (the freezer) in the real world collecting some data. I want to be able to see that data when I’m away from the actual freezer, so via my phone, computer, etc. The freezer data was likely…

End result — A dope looking JavaScript powered beer dispensing piece of madness.

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.

I wanted to keg my own beer since I started brewing 7 years ago, mostly because bottling beer is the worst. The initial plan was to build a collar-style keezer. But then I remembered I’m a software engineer, I like building things and I love a flimsy pretext to interject technology.

Project Goals

  • Know how much beer I have left in a keg
  • Monitor the temperature of the fridge
  • Look like a piece of furniture rather than an appliance

Just To Say 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?

In addition to context, meaning can often be hard to convey across languages. Because of cultural differences, not every word or sentence is a one-to-one swap. …

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.

What Makes a Good Test

There are three core components:

1. Easy to Reason

Tests must be easy to understand. While code quality is important for developers to understand, tests often communicate a business requirement or decision which is often more important.

2. Specificity

Tests should be very granular. Being specific is a great way of creating a manifest of all of the pathways, states and other vagaries that may not be immediately obvious.

3. Speed

Tests must be fast. The faster the test…

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.


There are two primary goals that I wanted to achieve:

Swap Themes Quickly

Rather than have code change colors, fonts, etc. on the fly, it makes a lot more sense to already have those styles pre-defined in CSS.

Be Extensible

When exposed as an Ember Addon, our implementation should allow for 3rd parties to add their own themes easily.

How It Works

This implementation assumes a few things:

The bulk…

Hey, you make apps, right?

Ugh, yeah, sure, I make apps.

I have an awesome idea, want to hear it?

Not particularly, but sure.

What if there was Uber for <insert something ridiculous here>, plus drones, for your phone…also internet of things!

Sorry, I spaced out there for a second. So I just Googled your idea, turns out there’s already 3–4 competing products. Why don’t you use one of those?

Bro, drones! Also my UI will be better.

Sure it will. What’s the current market like? Do you have a business plan? How are you going to market your idea…

Jon Pitcherella

Great developer. Home brewer and metal head. Writer of haiku.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store