Mozilla Webdev’s Beer and Tell: October 19, 2012

Mike Cooper

Every month Mozilla Webdevs gather around the video conference screen to hold a series of lightning talks and demos of cool things we have worked on in the last month. The October 2012 Beer and Tell has happened, so lets blog it!

We have lots of cool projects in store for you. As our local fez wearing Potch put it:

This week on Beer And Tell: lonnen keeps pull requests stable but not his laptop, groovecoder teaches us all to do the Electric Slide together, jlongster reinvents the wheel and somehow makes it rounder, ubernostrum goes looking for trouble, peterbe takes it offline, andym clocks you in the nose, brianloveswords cares about the environment, wenzel spies on his Pis, davida gives us all mad ups, and jsocol shows us all what he can C.

Continue reading for a summary of the presentations, or jump to the bottom and watch the recording of our video call yourself and see the demos for yourself.

Leeeeeeeeroyyy Jennkinnnssss!

lonnen decided that running tests by hand when reviewing code was far too tedious, so he looked around for a solution to run our continuous integration tools before merging the code, instead of after. Travis-CI does this, but Mozilla has a Jenkins server we use, so using that would be preferable. lonnen found a bot, leeroy, that will monitor Github for pull requests, and use Github’s status API to update pull requests with the results of Jenkin’s tests of building and style guide lines.

Learn more in the blog post lonnen wrote about it.

Deck.js: Remote control and Sandstone style

groovecoder used Deck.js Remote recently to do a presentation. It is a neat system that uses websockets to advance slides on every viewer when the presenter goes on. groovecoder made some improvements to the existing library, such as making all links open in a new window, integrating Mozilla’s Sandstone theme, and asynchronous loading of iframes. He even packed it all nicely into a boiler plate repo for your convenience.

jlongster’s reaction to Jekyll

jlongster decided that waiting 10 seconds for Jekyll to regenerate while he was working on his blog was like working in the dark ages. So he stayed up until 4am to write a Node.js blogging engine. No wait, come back! This isn’t just another custom blog software a code wrote to procrastinate writing blog posts.

jlongster implemented a live markdown editor for posts and Persona based login. Anyone can edit a page, and if they don’t have permissions to ship it, an admin will get an email with a diff of the change. It is backed by Redis and is really quick. Pretty slick! Check out Node Blog Thing on Github.

Django Lint

ubernostrum was tired of manually checking for known problems during Django upgrades. So he did what any programmer worth his salt would do, and automated it. He wrote a linting engine that will read by files line by line and call out to extensible callbacks to look for problems. So far he is looking for problematic Django imports and working on the Django 1.4 release notes.

Testing is always welcome, and contributors are encouraged. Check it out on Github.

django-jingo-offline-compressor

Trying saying that ten times fast. peterbe chimes in with a quick update on his efforts to integrate offline compression, Django, django-compressor, and Jingo (a library that enables Jinja templates on Django). When peterbe stated, django-compressor can generate nice bundles of CSS and JS, and it supported offline compression, but only for Django templates, not Jinja. Jinja templates could be used, but could only be bundled at request time, not deploy time. Since we like us some Jinja, and doing things at request time is lame, peterbe worked to bring all the things together.

django-jingo-offline-compressor is on Github and working towards being production ready, and testing is appreciated.

django-statsd nose plugin

andym uses statsd to record performance metrics in applications, but there wasn’t a good way to see these metrics when running tests, to spot regressions quicker. So he wrote a nose plugin to show this data when running tests too. You need to already have statsd timings built into your app, but you should be doing that already so you have pretty graphs to look at. Check out his blog post for more details.

Habitat

brianloveswords knows that when you run an app on Heroku, you are strongly encouraged to grab all your settings from environment variables, not files. Getting this data is a little icky in Node.js, so he wrote a little library for dealing with environment variables in all their forms in a clean way. Enter, Habitat.

Oh, and apparently Brian’s nick is meant as “Brian Loves Words”. I prefer the alternative “Brian Love Swords”. It’s more exciting that way.

Pi-Cam

wenzel got a Raspberry Pi recently, and decided to use it for some home surveillance. It would be weird if the camera was always on, and just anyone could look at it, so he wrote up a simple web app that turned the camera on and off, and only allowed certain Persona authenticated users access. A little less creepy, and a lot more awesome.

Uptime

davida decided to fix the lack of notification on some of our staging and development sites recently. Our normal monitoring system is way overkill, so something lighter was needed. He found a service called Uptime which fit the bill, but didn’t support authentication. So he hacked in Persona authentication and put it up on Mozilla Labs. Anyone with a mozilla.org or mozilla.com email can log in with Persona and set up services to monitor, and anyone can see the stats gathered. Check it out!.

The Best Data Structure

jsocol shows us a great data structure he is working on. It’s target goal is to store lots of words efficiently for auto-complete. Inspired by a trie, modeled after a DAG (my two personal favorite data structures), and he calls his library YoDAWG. It is written in C for memory compactness, and already has Python bindings! What’s not to love?

Thanks for tuning in, and see you next month!

The Video