Soviet Canuckistan

posts from the left coast

Crappy Tab 10.1? -> AOKP

[[ Disclaimer!! Do this at your own risk! I am not responsible, here be dragons, etc… ]]

If you have a Samsung Galaxy Tab 10.1 laying around the house ( and I suspect a large number of Mozillians do! ), you probably don’t use it for much. The OS is dated and not well supported by most apps, and the performance is awful.

I just flashed mine with a newer Android 4-based ROM called AOPK ( Android Open Kang Project, dunno? ) that not only updates and simplifies the OS, but also allows you a lot of control over the performance.

Here’s a peek at the desktop ( with some stuff moved around of course… )

Here’s the meaty part, the custom ROM control lets you overclock the cpu as high as 1400MHZ!

I toyed with 1400 but things got sketchy. 1200MHZ seems to be the sweet spot, and between that and a slimmer, more modern Android version the ‘ol Tab 10.1 actually feels pretty snappy? The important things work, from my point of view anyway: Netflix, Kindle, Elder Signs Omens, Hipmunk.

Some links if you want to look into this:

Also, I needed a windows install to use Odin to initially install the Clockworkmod recovery kernel. Once I got there, I switched to using File Expert to host an ftp server on the tablet in order to transfer files from my Mac, and CWM itself to make backups and flash ROMs. There are probably cooler ways to do this ( ROM Manager, etc )?


I’ve been threatening to do this for months, this is my blog running using Octopress, written in markdown and served as static files and served at potentially breathtaking speeds, specially compared to Drupal. Honestly, the hardest bits were an afternoon of swearing and futzing with my ruby environment a few weeks ago so I could get Jekyll ( and the Drupal migration stuff ) working properly. I think the content migration went well, and I’m too lazy to do much more than a cursory check.

This ain’t pretty, or even particularly fast ( yet ), but the posts are all here albeit at different urls and I put in a few sensible redirects:

  • the url PMO uses redirects properly, so PMO users should see this
  • all domains on this box that aren’t already configured somehow in Nginx redirect to the main page.
  • www. -> the bare url, because I’m minimalist like that.

I’m not doing anything super-cool like hosting this in github or dropbox, I am still running a Linode machine because, hell, i like to mess around with redis, python and the like still even though i don’t really get paid to code anymore.

I’m pretty pleased with the system & workflow, especially the code highlighting:

Good Ol’ FizzBuzz
function fzbz(n) {
  for (var i = n - 1; i >= 0; i--) {
      (function() {
          var s = '';
          if (i % 3 === 0) s += 'Fizz';
          if (i % 5 === 0) s += 'Buzz';
          if (s.length === 0) s = i;

…back in the day I literally lost weeks to getting good code highlighting working reliably on Drupal with Geshi. This was so easy in comparison it makes me want to buy a fixie.

If I get some time on planes & whatnot over the next few weeks I’ll do some additional work like:

  • shed the default theme. I think I’m to old and crufty to go for something as fancy as Irakli’s, but I’d like to have something a bit more, er, unique.
  • improve the performance, I really liked this writeup of techniques for really drilling into static file server perf.
  • comments using disqus, I suppose.

New Server

TL;DR: my linode got hacked somehow so I moved this blog to a new server.*

Last week I got a notice from the helpful folks at Linode informing me that my machine was trying to brute-force other machines on their network. Essentially, this is what I get for having a weak password on one of the accounts ( the attacker never got root access ) and running sshd on port 22.

For a variety of reasons, I didn’t get around to completely paving the old box until today. I just changed the sshd port, changed all the passwords once that was done, checked out a few things on the box, and left it. Last night I built a new linode, copied essential site data over and got everything running. About a half an hour ago I flipped ip addresses between the two machines, and that’s why you just got a bunch of old blog posts in your rss reader.

Sorry! It’s literally been the kind of week where getting my server hacked by some bored russian teenager is just a minor distraction.

Launching Multiple Firefox Profiles on OS X Using Applescript

David asked me the other day to blog about my applescript hack for launching different Firefox profiles in separate processes. I consider this to be, at best, a hack, but it’s a pretty productive hack, so here we go!

Step 1: create a new profile:

/Applications/ -ProfileManager

Just click on ‘Create Profile’, name the profile ( say, Firebug, for no particular reason ), and click ok. Make sure when you get back to the ProfileManager you select ‘default’ again:

Firefox will instead select the new profile, which is not what we want.

Step 2: create the applescript

Open the applescript editor and paste in this code:

( Update : Peter Cramer was nice enough to send me a patch for this script that solves the focus problem. )

do shell script "/Applications/ -jsconsole -P Nightly &> /dev/null &"

delay 2

tell application "System Events" to keystroke tab using {command down, shift down}

You’ll note, this isn’t really much applescript, what we’re really doing is just shelling out to fire up and supply the correct argument for -P.

Step 3: create the .app bundle

In the applescript editor, select Edit / Save As and select ‘Application’ under the ‘File format’ drop list. This will create a .app bundle that acts just like any other OS X application. In particular, the name you gave it is nicely indexed by Spotlight, so you can launch it by triggering Spotlight ( or butler, or Quicksilver? ) and typing some fragment of the filename:

You should now be able to launch Aurora ( or whichever channel you pref ) running a specific profile by double-clicking on this .app. This isn’t how I use it though, instead I tend to launch the .app via Spotlight:

Caveat: the one problem with this technique is that Firefox is launched dead-last in the applications list, so you will need to manually switch to it. It’s slightly annoying, but I theorize that it is no less annoying than having to learn enough Applescript to work around it. I did look into this for a bit the other night with no luck. Patches / suggestions welcome! ( See note above regarding a workaround for the focus issue. )

HOWTO: Mobile Data Access in Berlin, Germany

I’m in Berlin this week to attend this weekend’s MozCamp EU; because I’m a dork I really really like having some sort of local data network access, in particular for using google maps on my unlocked Android phone. Having mobile data access has completely changed how I travel, I’m much more likely to just really explore a place than I would without access to google maps. So here’s my process for getting cheap mobile data in Berlin:

  1. took the U6 -> S line trains to Alexanderplatz to get to the Alexa Mall (, see map below )
  2. went to Media Markt ( think German Best Buy ), bought a 10 euro SIM card
  3. back at the Tryp hotel where I’m staying, I registered online with to activate the sim. There is no English localization of the site and my German is terrible so I had a second window open to google translate to get through it.
  4. in order for the data plan to really start, I had to set my Android phone to ‘data roaming’ mode.

This will get you a flat rate of 500MB of data, plus relatively cheap text and calling! Sadly, you do need to jump online to register the sim, this is definitely less convenient than what I got last month in London, where they sell flat-rate data sims from vending machines at Heathrow.

Alexa / Media Markt:

View Larger Map

FSOSS Rocked!

This past week/end I was fortunate to be able to attend Seneca College’s awesome annual Free Software & Open Source Symposium ( FSOSS for short ). This year marked ten years of FSOSS, and I was really impressed with the diversity of talks presented, as well as the irrepressible energy of the Seneca students participating and volunteering. I’d like to thank all of the students and staff for putting in the time to produce a great event; I know how gruelling this can be but it was totally worth it!

On Friday I arrived early and met up with fellow Mozillian Armen Zambrano to set up and man the Mozilla table:

See all that swag on the table? It was gone quite quickly, especially the hacky sacks. Armen and I were at the table all day talking to students and attendees, engaging with them on questions ranging from Thunderbird UX and rapid release schedules to Mozilla’s various student-focused programs such as internships, recent-grad positions and Student Reps. Rarely was it quiet:

On Saturday we decided not to man the table - because we were out of swag! Also, Armen and I were both speaking in the morning. For Armen’s perspective, please check out his blog post here:

At 10AM I gave a talk to about 30 people introducing them to the SDK and it’s various features. If you’re curious the slides are here:

FSOSS volunteers recorded the talk, so hopefully I’ll get a copy back to hook up with my slides using popcorn.js. As well, the demos included in the talk will only work if you are running Firefox 7+ and have installed this helper add-on:

There were a number of other talks by Mozillians:

On Saturday afternoon Ehsan, Lawrence and I helped facilitate a Mozilla-focused BOF session during the ‘unconference’ section of the schedule. The conference was interesting and free-wheeling, covering such topics as #OWS, rapid release, enterprise support and how Mozilla works with Linux distributions.

The thing that impressed me the most about FSOSS was learning more from the Seneca students & faculty about their programs; I wish more educational institutions would follow their lead and get their students working on open source.

The Death of Share on Google Reader: An Opportunity?

E.D. Kain over at Forbes write a succinct piece on the utility of Google Reader:

Not in the sense that people in Reader are anti-social so much as the point is to harbor a small enclave of carefully selected people and create a safe-haven of sorts where that “carefully constructed human curated” list of shares and insights can flourish. In Reader, you don’t go after as many friends as possible. You certainly don’t see anyone from high school. Nobody shares photos of their kids. The discussions that do blossom are almost always very smart and focused. It’s the internet if the world were a more prefect place.

This neatly sums up my own ( very heavy ) use of Reader with a very short list of people who I use as filters for the wider world. We few merry nerds share constantly and are enriched by each other’s subscriptions; we forget conveniently that all this time spent clicking and sharing further deepens Google’s understanding of our online lives. Now they want to pull all that into Google+, which all of us are on but none of us actually use.

The thing is, we are probably smart enough to build our own, and I’m pretty sure we aren’t alone. If I was going to re-do Reader as a project for my own particular purposes, it would be very simple:

  • import opml
  • bookmarklets or browser extensions to handle new subscriptions
  • share and comment
  • some sort of ‘friend’ discovery using twitter, which I choose because all of the people I share posts with on Reader, I also follow on twitter. In fact, this could just be a twitter list you create, assuming the twitter api provides access to those sorts of things.
  • self-hosted. This doesn’t need to be internet scale. In fact, it could be unhosted, and an Open Web App.

Speaking at FSOSS @ Seneca College Next Week!

A Raspberry Pi Alpha board

I’m excited to head out to Toronto ( what my mother refers to fondly as ’the big smoke’ ) next week to give a talk on developing add-ons with the Add-on SDK at Seneca College’s Free Software and Oopen Source Symposium. Looking over the schedule of talks I am amazed at the diversity of talks; it is refreshing be able to attend a single event and attend sessions on such diverse subjects as:

I am also pleased that Mozilla has a strong presence at FSOSS this year; not only are we sponsoring but there are talks on Popcorn.js and Mozilla release management, and I am planning to organize a Mozilla BOF for Saturday afternoon.

On Kindle, Reamde and the Data-only Travelling Experience.

The other day I was in England for, like, 48 hours for work. My fellow traveller Dietrich and I spent some time the afternoon we arrived tromping around Islington. While in England I was running on a data-only 3G ‘iPad’ sim card from 3 Wireless, which as it turns out is splendidly fast and convenient. in particular because we bought the sim cards from a vending machine at the airport. Neither of us cared particularly about making calls or sending sms, but data was incredibly useful and as we walked up Clerkenwell we were frequently in danger of hitting light poles or cabs as we stared intently at google maps on our phones, tracking down coffee breakfast or whisky.

As we walked, conversation drifted to books, the place-names we were seeing around us and in particular, Neal Stephenson’s epic, brilliant and daunting Baroque Cycle. The novels spend an enormous amount of time in London and environs, and we were keenly aware that were walking through these same places we’d only previously read about.

Dietrich off-handedly mentioned Reamde, Stephenson’s new book, which I hadn’t seen on the shelves yet but had heard good things on the twitters about, and this stuck in my head that I should check it out.

The next day was Amazon Kindle Fire release day and that morning as I was waiting in the hotel lobby shifting through all of that news I saw another mention of Reamde. On impulse I grabbed my phone, opened kindle, searched for the book and clicked one single time to buy it. About 30 seconds the first page opened on the screen and I started reading. This wasn’t so much a discovery or an ah-hah moment, just a reminder that, given the right situation I can instantly acquire any number of digital content almost anywhere, as long as I have data.

Flash forward to today, Boris blogged about turning the corner on ebook buying with a link to Reamde at the top. Like him, my interest in ebooks began with my iPhone, and in particular a trip to Asia my wife and I took in which we whiled away many an hour reading ebooks on our iPhones while on planes, trains, buses, cars, etc. I’ve never thought reading books was a great experience on a computer, but mobile devices are fantastic for it. I read more, in more places. The realization I had is that, wherever I travel ( and with the new gig, I’m travelling a fair bit ) all I really need is data to get around ( and an unlocked 3G-capable GSM device ). Having data is key, in fact. traditional phone service is not.

Yup, that’s the back of my neck.

Last weekend Dietrich, Matteo and I were fortunate enough to be able to tack a trip to Berlin on to the end of out trip to Merry Old London to attend I’ve been to many conferences ( and even helped produce a few? ) and was totally impressed by JSConf, on a number of levels:

  • Room for rockstars and local speakers ( some speakers of course fall into both groups ). The main room at JSConf was very large, to the extent that it would freak me out doing a talk there. It was good to see that the upstairs room was both cozier and the talks more diverse than the main room.
  • Levity! The conference opened with a charming girl named Mandy singing Brendan Eich a hilarious song. Mid-afternoon on day 1 there was a coding competition where the loser for each question had to drink booze mixed by robots.
  • Proper caffeination thanks to Espresso Ambulanz, a key success factor for the North Americans fighting off both jet lag and the ill effects of the party the night before.
  • Fantastic illustrations. I wasn’t able to get all of them, but here are a few.

The weekend for me was a mixture of attending talks, talking to people about Firefox, demoing mobile nightly builds, helping Olle install a Nightly build on his Galaxy S, and fielding all sorts of SDK questions from how to use Websockets, to AMO review queue gripes. That doesn’t necessarily sound like loads of fun, but it was, and it was a great reminder of how awesome community-driven events like this can be.

The single greatest moment for me happened during Christian Heillmann’s talk on Sunday where right at the end, he showed the packed house some demos of upcoming features in Firefox’s dev tools. I’m not exaggerating when I say that people were blown away. The crowd reaction was huge!