Skip to content

{ Author Archives }

Web Worker-assisted Email Visualizations using Vega

tl;dr: glodastrophe, the experimental entirely-client-side JS desktop-ish email app now supports Vega-based visualizations in addition to new support infrastructure for extension-y things and creating derived views based on the search/filter infrastructure. Two of the dreams of Mozilla Messaging were: Shareable email workflows (credit to :davida).  If you could figure out how to set up your […]


An email conversation summary visualization

We’ve been overhauling the Firefox OS Gaia Email app and its back-end to understand email conversations.  I also created a react.js-based desktop-ish development UI, glodastrophe, that consumes the same back-end. My first attempt at summaries for glodastrophe was the following: The back-end derives a conversation summary object from all of the messages that make up […]


Talk Script: Firefox OS Email Performance Strategies

Last week I gave a talk at the Philly Tech Week 2015 Dev Day organized by the delightful people at on some of the tricks/strategies we use in the Firefox OS Gaia Email app.  Note that the credit for implementing most of these techniques goes to the owner of the Email app’s front-end, James […]


webpd: a Polymer-based web UI for the beets music library manager

beets is the extensible music database tool every programmer with a music collection has dreamed of writing.  At its simplest it’s a clever tagger that can normalize your music against the MusicBrainz database and then store the results in a searchable SQLite database.  But with plugins it can fetch album art, use the Discogs music […]

Tagged , , , ,

monitoring gaia travis build status using webmail LED notifiers

For Firefox OS the Gaia UI currently uses Travis CI to run a series of test jobs in parallel for each pull request.  While Travis has a neat ember.js-based live-updating web UI, I usually find myself either staring at my build watching it go nowhere or forgetting about it entirely.  The latter is usually what […]

Tagged , ,

about:nosy can now show CPU usage using jsprobes

Refresher: about:nosy was introduced one week ago as a way to see the memory usage of your tabs and extensions (that live in compartments).  It sorta looked like this: Except those (green) bars on the right are new.  The ones on the left, they show memory.  The ones on the right, they show CPU usage.  […]

Tagged , , ,

about:nosy is about:memory with charts, helps you lay blame more easily

about:memory and the memory reporter infrastructure that powers it are amazing.  They provide an explicit hierarchy that breaks down the memory use in the system to the subsystems and increasingly the causes of allocation.  about:memory looks like this (if you stand a few feet back from your monitor and take off your glasses): If you […]

Tagged , ,

The joy of integrated logging and log viewing with fancy logs

The deuxdrop messaging experiment‘s current incarnation exists as an (under development) Jetpack that runs in Firefox.  I am still trying to shake out functionality to be driven by the UI rather than headless unit tests.  While firebug has been a great help, another boon has been the logging framework and log viewing framework developed for […]

Tagged , ,

overview ownership/communication graphs for rich execution logs

My last blog post covered the fancy pants logging being used for the deuxdrop project.  To summarize: we have loggers they are organized by ownership hierarchy they provide sufficient metadata that we can reconstruct the loggers that were talking to each other This can result in a lot of loggers.  If you look at the […]

Tagged ,

new adventures in rich (execution) logs for debugging and program understanding

Understanding what is going on inside software can be very hard, even for the developers most familiar with the software.  During my time working on Thunderbird I used a variety of techniques to try and peer inside: printf/dump/console.log, debuggers, execution analysis (dtrace, chronicle recorder, with object diffs, on timelines), logging (log4j style, with  timelines, with […]

Tagged ,