Android, Firefox OS, Mozilla, Reenact

Reenact Now Available for Android

I’ve increased the audience for Reenact (an app for reenacting photos) by 100,000% by porting it from Firefox OS to Android.


It took me about ten evenings to go from “I don’t even know what language Android apps are written in” to submitting the .apk to the Google PlayTM store. I’d like to thank Stack Overflow, the Android developer docs, and Android Studio’s autocomplete.

Reenact for Android, like Reenact for Firefox OS, is open-source; the complete source for both apps is available on GitHub. Also like the Firefox OS app, Reenact for Android is free and ad-free. Just think: if even just 10% of all 1 billion Android users install Reenact, I’d have $0!

In addition to making Reenact available on Android, I’ve launched, a home for the app. If you try out Reenact, send your photo to to get it included in the photo gallery on

You can install Reenact on Google Play or directly from Try it out and let me know how it works on your device!

Firefox OS, Life, Mozilla, Reenact

A visual refresh for Reenact

After I released Reenact (an app for reenacting photos) last week, Joen Asmussen graciously offered to provide some professional design guidance. I could never say no to design help, and in almost no time at all, Joen put together a new look for Reenact. I love it, and it has given me extra motivation to get working on Reenact for Android.

This new look is now live on the Firefox Marketplace and will hopefully be making an appearance on other platforms soon. Thanks, Joen!






Firefox OS, JavaScript, Mozilla, Open Source, Programming, Software, Web Applications

Introducing Reenact: an app for reenacting photos

Here’s an idea that I’ve been thinking about for a long time: a camera app for your phone that helps you reenact old photos, like those seen in Ze Frank’s “Young Me Now Me” project. For example, this picture that my wife took with her brother, sister, and childhood friend:


Reenacting photographs from your youth, taking pregnancy belly progression pictures, saving a daily selfie to show off your beard growth: all of these are situations where you want to match angles and positions with an old photo. A specialized camera app could be of considerable assistance, so I’ve developed one for Firefox OS. It’s called Reenact.

The app’s opening screen is simply a launchpad for choosing your original photo.


The photo picker in this case is handled by any apps that have registered themselves as able to provide a photo, so these screens come from whichever app the user chooses to use for browsing their photos.



The camera screen of the app begins by showing the original photo at full opacity.


The photo then will continually fade out and back in, allowing you to match up your current pose to the old photo.


Take your shot and then compare the two photos before saving. The thumbs-up icon saves the shot, or you can go back and try again.


Reenact can either save your new photo as its own file or create a side-by-side composite of the original and new photos.


And finally, you get a choice to either share this photo or reenact another shot.




If you’re running Firefox OS 2.5 or later, you can install Reenact from the Firefox OS Marketplace, and the source is available on GitHub. I used Firefox OS as a proving ground for the concept, but now that I’ve seen that the idea works, I’ll be investigating writing Android and iOS versions as well.

What do you think? Let me know in the comments.

AutoAuth, Comment Snob, Feed Sidebar, Links Like This, Mozilla, Mozilla Add-ons, Mozilla Firefox, OPML Support, RSS Ticker, YouTube Comment Snob

My Future of Developing Firefox Add-ons

Mozilla announced today that add-ons that depend on XUL, XPCOM, or XBL will be deprecated and subsequently incompatible with future versions of Firefox:

Consequently, we have decided to deprecate add-ons that depend on XUL, XPCOM, and XBL. We don’t have a specific timeline for deprecation, but most likely it will take place within 12 to 18 months from now. We are announcing the change now so that developers can prepare and offer feedback.

In response to this announcement, I’ve taken the step of discontinuing all of my Firefox add-ons. They all depend on XUL or XPCOM, so there’s no sense in developing them for the next year only to see them become non-functional. AutoAuth, Comment Snob, Feed Sidebar, Links Like This, OPML Support, RSS Ticker, and Tab History Redux should be considered unsupported as of now. (If for any reason, you’d like to take over development of any of them, e-mail me.)

While I don’t like Mozilla’s decision (and I don’t think it’s the best thing for the future of Firefox), I understand it; there’s a lot of innovation that could happen in Web browser technology that is stifled because of a decade-old add-on model. I only hope that the strides a lighter-weight Firefox can make will outweigh the loss of the thousands of add-ons that made it as popular as it is today.

Google,, Mozilla

Implementing Mozilla Persona on

When I first launched as a Google Chrome extension translation platform four years ago, I used Google OpenID to authenticate users, because:

a) I didn’t want people to have to create a new username and password.


b) It made sense that Chrome extension authors and translators would already have Google accounts.

Years passed, and Google announced that they’re shutting down their OpenID support. I spent three hours following their instructions for upgrading the replacement system (“Google+ Enterprise Connect+” or something like that), and not surprisingly, it was time wasted. The instructions didn’t match up with the UIs of the pages they were referencing, so it was an exercise in futility. I’ve noticed this to be typical of Google’s developer-facing offerings.

I made the decision to drop Google and switch to Mozilla’s Persona authentication system. Persona is like those “Sign in with Twitter/Facebook/Google” buttons, except instead of being tied to a social network, it’s tied to an email address — something everyone has. My site never has access to your password, and you don’t have to remember yet another username.

In stark contrast to my experience with Google’s new auth system, Persona took less than an hour to implement. Forty-five minutes passed from when I read the first line of documentation to the first time I successfully logged in to via Persona.


If you originally signed in to with your GMail address, you won’t notice much of a difference, since Persona automatically uses Google’s newest authentication system anyway.

Mozilla does so many things to enhance the Open Web, and Persona is no exception. Developers: use it. Users: enjoy it.

Browser Add-ons, Mozilla, Mozilla Firefox, RSS, RSS Ticker

Major RSS Ticker Update Coming: What You Need to Know

RSS Ticker has been an alternative to Web-based feed readers since 2006, displaying feed updates directly in users’ browsers. It hasn’t seen significant change in a while, but some of the internal Firefox code used by RSS Ticker has changed enough that in order for it to remain functional in Firefox 22, its entire architecture would have to change. That’s a lot of work.

RSS Ticker

I didn’t want to abandon RSS Ticker’s users (especially with the shutdown of Google Reader imminent, already leaving one less feed reading option), but I also couldn’t dedicate the time to completely rewrite the add-on and keep all of its features. So here’s what I’ve done:

RSS Ticker has been completely rewritten. This has given me the opportunity to use the knowledge I’ve gained in the last seven years of programming to improve the overall design of the ticker and to restructure the code to play nicely with the new Firefox APIs.

What hasn’t changed? RSS Ticker will still scroll your feeds in your browser. You can still choose to put it at the top or bottom of your Firefox window. You can still exclude specific feeds. You can mark as read, mark feeds as read, open in tabs, open all in tabs, etc. You can temporarily disable the ticker. You can change the ticker speed, smoothness, and direction. You can hide the ticker automatically when it’s empty.

What has changed? In order to continue supporting RSS Ticker, I’ve had to drop a number of features. Here are some things you can no longer do with RSS Ticker:

  • Manually refresh the feeds.
  • Specify how often the feeds should refresh.
  • Randomize the order of the ticker items
  • Limit the number of items per feed
  • Display items that have already been read
  • Show unread items in bold
  • Manually limit the width of ticker items
  • Customize the context menu

I know some of you liked and used these features. I’m sorry I had to remove them, but it was the choice between removing them or abandoning the add-on altogether.

A few features haven’t been removed, but they have been changed (a.k.a. “improved”):

1. All of the remaining options (six of them, down from a total of 37) are displayed inline in RSS Ticker’s section of the Add-ons Manager.

RSS Ticker Options

2. If you want to temporarily disable the ticker, just uncheck it in the View > Toolbars menu.

Disable RSS Ticker

3. To remove a feed from the ticker (but not from your bookmarks), right-click on it in the Bookmarks Manager and uncheck “Show in RSS Ticker.”

Show a feed in RSS Ticker

This new version will be available in a couple of weeks after some more testing, but if you’d like to test it early, leave your e-mail address in a comment or ping me at and I’ll send you a copy.

Browser Add-ons, Mozilla, Mozilla Firefox, OPML Support, Programming

OPML Support updated for Firefox 20

I’ve just published an update to my OPML Support Firefox extension for the first time in three years. The extension previously added an OPML button to the toolbar in the Bookmarks Manager, but as of Firefox 20, the button disappears because of a change to the way that the Bookmarks Manager’s toolbar is assembled. Version 3 of OPML Support moves the Import OPML and Export OPML options into the existing Backup/Import button’s menu.


Thanks to the OPML Support users who alerted me to the problem via email and in the comments here, since I don’t often have occasion to check whether my buttons are disappearing.