In the Trenches with Tomster, Upgrading Ember.js & Ember Data

I was fortunate again this year to be selected as a speaker for dev.Objective() conference in Minneapolis, MN.

A few months after I started working with Ember.js & Ember Data at my new job last June we began a project to upgrade both. There were parts that were a breeze and others that were quite tricky. This talk walks you through some of the challenges we faced and how we solved them as well as how we began to prepare for the Ember 2.x architectural shift. Hopefully this talk will help save you some time when you decide to upgrade your Ember web application.

Here are my slides:

In The Trenches With Tomster, Upgrading Ember.js & Ember Data

I also gave this talk recently at Milwaukee JS, a meetup I help co-organize.

Here is a video of that talk:

How To: use an insecure registry with Docker and OS X

The Docker Toolbox assumes SSL (https) to connect to a registry. However, if the certificate is signed by an unknown authority it will fail with this error: certificate signed by unknown authority. Putting my company’s internal certs in the cert store that Docker uses should fix this, however, many attempts to do so were unsuccessful. There just isn’t any clear documentation on how to do this for OS X (El Capitan v10.11.2) that I could find.

As a workaround you can specify that Docker should use an insecure registry with a flag. In an earlier version of Docker where Boot2Docker was used, I ended up finding I could run the following command to use an insecure registry (yes, I know this is dangerous but it’s an internal registry and not accessible to the outside world).

boot2docker ssh "echo $'EXTRA_ARGS=\"--insecure-registry myinternaldockerregistry.org\"' | sudo tee -a /var/lib/boot2docker/profile && sudo /etc/init.d/docker restart"

With updates to Docker for OS X this no longer worked. Again I couldn’t find any clear documentation on how to get certs to work with docker nor how to use an insecure registry. Finally I figured out that this works:

docker-machine ssh default "echo $'EXTRA_ARGS=\"--insecure-registry myinternaldockerregistry.org\"' | sudo tee -a /var/lib/boot2docker/profile && sudo /etc/init.d/docker restart"

Hope this helps someone else. If anyone knows how to get Docker to recognize internal certs please do share.

Refactoring Large Web Applications with Backbone.js

I was fortunate in May of 2015 to have been selected to give a talk at dev.Objective() conference in Minneapolis, MN. It was my first time speaking at a conference and it was a really positive one. Everyone was nice and supportive.

I spoke about my experience working on a large traditional style web application with a large team of developers and how I helped to turn the JavaScript from jQuery spaghetti code into organized, modular, testable code with the help of Backbone.js, Jasmine, RequireJS, and eventually Browserify.

Here are my slides from the talk:

Refactoring Large Web Applications with Backbone.js

Jasmine with Custom Templates

For one of the sites I work on, SiteCatalyst (Adobe Analytics) is used to gather metrics. This library needs to be included inside the <body>. This was problematic when I wanted to use grunt-contrib-jasmine to run my Jasmine unit tests headlessly with PhantomJS & Grunt (aka from the command line) since by default it generates a spec runner with all referenced JS in the <head>.

That’s when I read about using Jasmine Templates. This seemed like the solution but the documentation and getting to a working solution wasn’t super straight forward.

I wanted to be able to pass in some variables to reference a minified version of the Adobe Analytics JavaScript (AppMeasurement.min-x.x.x.js) and a non-minified version (AppMeasurement-x.x.x.js) to run unit tests before and after the minification. So for the jasmine task in my Gruntfile.js I had to specify a template module (JavaScript) to execute and then the module would specify the .tmpl (HTML Template).

The trickiest part in all of this was remembering to put ./tests/ instead of tests/ as the path to load the template module so it loaded from the current working directory.

Here is what my code ended up looking like:

Grunt Configuration

Template

Runner Template

Sublime Text, SFTP, and Media Temple

I spent entirely too much time sorting through everything I needed to do to get the SFTP plugin for Sublime Text 3 working with my hosting (Media Temple). Here are some quick notes to hopefully save someone else the hassle.

  1. Set the server admin password (how-to)
  2. Enable SSH (how-to)
  3. Install Sublime SFTP to Sublime Text 3 (how-to)
  4. Follow instructions that will generate the sftp-config.json (how-to)
  5. Then for Media Temple I modified the following in sftp-config.json

“type”: “sftp”,
“host”: “yourAccessDomain“,
“user”: “yourDomain”,
“password”: “yourServerAdminPassword”,
“port”: “22”,
“remote_path”: “/home/yourSiteNumber/users/.home/domains/yourDomain/html”,
“ftp_passive_mode”: true,