<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>development on Oxymoronical</title>
    <link>https://www.oxymoronical.com/blog/tag/development/</link>
    <description>Recent content in development on Oxymoronical</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 09 Feb 2026 18:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.oxymoronical.com/blog/tag/development/feed/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Can&#39;t you do this faster with AI?</title>
      <link>https://www.oxymoronical.com/blog/2026/01/cant-you-do-this-faster-with-ai/</link>
      <pubDate>Mon, 09 Feb 2026 18:00:00 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2026/01/cant-you-do-this-faster-with-ai/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m hearing this question asked a lot lately. Both within Mozilla and from others in the industry. You come up with a plan for implementing some feature, put your best estimate on how long it will take to implement, and then you get push back from folks several levels removed from the project along the lines of &lt;em&gt;&amp;ldquo;Wouldn&amp;rsquo;t this be faster if you used AI?&amp;rdquo;&lt;/em&gt;, or &lt;em&gt;&amp;ldquo;Can&amp;rsquo;t Claude Code do most of this?&amp;rdquo;&lt;/em&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making a case sensitive directory on Windows and macOS</title>
      <link>https://www.oxymoronical.com/blog/2025/06/making-a-case-sensitive-directory/</link>
      <pubDate>Thu, 05 Jun 2025 08:53:00 +0100</pubDate>
      <guid>https://www.oxymoronical.com/blog/2025/06/making-a-case-sensitive-directory/</guid>
      <description>&lt;p&gt;Now that Firefox has &lt;a href=&#34;https://github.com/mozilla-firefox/firefox&#34;&gt;switched to git&lt;/a&gt; as its canonical source code repository a number of us have been longing for all the nice features that Mercurial used to provide that are much more awkward with git. So many of us have been experimenting with &lt;a href=&#34;https://jj-vcs.github.io/jj/latest/&#34;&gt;Jujutsu&lt;/a&gt; which provides a lot of what is missing. It&amp;rsquo;s pretty good, I recommend giving it a go if you are also forced to use git!&lt;/p&gt;&#xA;&lt;p&gt;But it has &lt;a href=&#34;https://github.com/jj-vcs/jj/issues/1737&#34;&gt;an annoying bug&lt;/a&gt;. If you&amp;rsquo;re on a case insensitive filesystem (the default on macOS and Windows) and a change renames a file in a way that only changes the case of the filename then Jujutsu gets confused. I think what&amp;rsquo;s going on is when it tries to apply the change it tells the OS to rename the file and then the OS sees that the filename is the &amp;ldquo;same&amp;rdquo; and does nothing. Subsequently Jujutsu constantly thinks there is a change because the filename on disk doesn&amp;rsquo;t exactly match what it expects and everything gets messy. The workaround is to manually rename those files to the correct names but that is annoying. I don&amp;rsquo;t know if Mozilla are particularly bad at this but the two examples in the issue are us and another just landed recently 😂.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Some thoughts on coding with AI</title>
      <link>https://www.oxymoronical.com/blog/2025/05/thoughts-on-coding-with-ai/</link>
      <pubDate>Sat, 24 May 2025 20:17:00 +0100</pubDate>
      <guid>https://www.oxymoronical.com/blog/2025/05/thoughts-on-coding-with-ai/</guid>
      <description>&lt;p&gt;As you probably know AI tools are here and expectations range from &amp;ldquo;This is going to destroy the environment and make everyone unemployed&amp;rdquo; to &amp;ldquo;This is going to usher in a golden age freeing humanity from drudgery&amp;rdquo;. The reality is of course somewhere between the two and I don&amp;rsquo;t think we&amp;rsquo;re really going to know exactly where for many years.&lt;/p&gt;&#xA;&lt;p&gt;I believe strongly in learning and understanding the tools available to us so that we can make pragmatic choices about what tools to use when. So for quite a while I&amp;rsquo;ve made various attempts to try using AI for coding. Most of my attempts have involved going to ChatGPT and asking it to write some code for me or answer questions about API specs. And it&amp;rsquo;s never been a great experience. Generally the code it generated wouldn&amp;rsquo;t work and it would confidently lie about what specs required. Clearly some people find this useful but I&amp;rsquo;ve never quite found out why yet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tests don&#39;t replace Code Review</title>
      <link>https://www.oxymoronical.com/blog/2024/05/tests-dont-replace-code-review/</link>
      <pubDate>Wed, 01 May 2024 23:02:00 +0100</pubDate>
      <guid>https://www.oxymoronical.com/blog/2024/05/tests-dont-replace-code-review/</guid>
      <description>&lt;p&gt;I frequently see a bold claim come up in tech circles. That as a team you&amp;rsquo;re wasting time by doing code reviews. You should instead rely on automated tests to catch bugs. This surprises me because I can&amp;rsquo;t imagine anyone thinking that such a blanket statement is true. But then most of the time this is brought up in places like Twitter where nuance is impossible and engagement farming is rife. Still it got me thinking about why I think code review is important even if you have amazing tests.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using VS Code for merges in Mercurial</title>
      <link>https://www.oxymoronical.com/blog/2022/09/using-vs-code-for-merges-in-mercurial/</link>
      <pubDate>Tue, 06 Sep 2022 17:33:53 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2022/09/using-vs-code-for-merges-in-mercurial/</guid>
      <description>&lt;p&gt;I’ve always struggled to find a graphical merge tool that I can actually understand and up until now I have just been using merge markers along with a handy Mercurial command to open all conflicted files in VS Code, my editor of preference.&lt;/p&gt;&#xA;&lt;p&gt;Well it turns out that since version 1.69 VS Code now has built in support for acting as a merge tool and after trying it out I actually found it to be useful! Given that they (and the rest of the world) tend to focus on Git I couldn’t find explicit instructions for setting it up for Mercurial so here is how you do it. Add the following to your &lt;code&gt;~/.hgrc&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Announcing LocalNS</title>
      <link>https://www.oxymoronical.com/blog/2022/05/announcing-localns/</link>
      <pubDate>Mon, 02 May 2022 20:07:21 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2022/05/announcing-localns/</guid>
      <description>&lt;p&gt;I mess around with a bunch of different projects in my spare time but it’s been a long time since I’ve thought one was worth tidying up into an actual release. Maybe it will be useful to you?&lt;/p&gt;&#xA;&lt;p&gt;The problem I faced was that I had a whole bunch of services that I installed on my network, some in docker, some as standalone servers, some behind a &lt;a href=&#34;https://traefik.io/traefik/&#34;&gt;Traefik&lt;/a&gt; proxy. In the docker case I was using &lt;a href=&#34;https://docs.docker.com/network/macvlan/&#34;&gt;macvlan&lt;/a&gt; networking so each service had its own IP address accessible to the entire network. Once I learned how to do all that it became trivial to spin up a new local service, say &lt;a href=&#34;https://www.influxdata.com/products/influxdb-overview/&#34;&gt;InfluxDB&lt;/a&gt; or &lt;a href=&#34;https://grafana.com/&#34;&gt;Grafana&lt;/a&gt; with a couple of lines in a docker-compose file.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating HTML content with a fixed aspect ratio without the padding trick</title>
      <link>https://www.oxymoronical.com/blog/2019/10/creating-html-content-with-a-fixed-aspect-ratio-without-the-padding-trick/</link>
      <pubDate>Wed, 30 Oct 2019 10:01:09 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2019/10/creating-html-content-with-a-fixed-aspect-ratio-without-the-padding-trick/</guid>
      <description>&lt;p&gt;It seems to be a common problem, you want to display some content on the web with a certain aspect ratio but you don’t know the size you will be displaying at. How do you do this? CSS doesn’t really have the tools to do the job well currently (there are &lt;a href=&#34;https://jonathankingston.github.io/logical-sizing-properties/&#34;&gt;proposals&lt;/a&gt;). In my case I want to display a video and associated controls as large as possible inside a space that I don’t know the size of. The size of the video also varies depending on the one being displayed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A simple command to open all files with merge conflicts</title>
      <link>https://www.oxymoronical.com/blog/2019/10/a-simple-command-to-open-all-files-with-merge-conflicts/</link>
      <pubDate>Wed, 09 Oct 2019 10:28:19 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2019/10/a-simple-command-to-open-all-files-with-merge-conflicts/</guid>
      <description>&lt;p&gt;When I get merge conflicts in a rebase I found it irritating to open up the problem files in my editor, I couldn’t find anything past copying and pasting the file path or locating it in the source tree. So I wrote a simple &lt;code&gt;hg&lt;/code&gt; command to open all the unresolved files into my editor. Maybe this is useful to you too?&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[alias]&#xA;unresolved = !$HG resolve -l &amp;#34;set:unresolved()&amp;#34; -T &amp;#34;{reporoot}/{path}\0&amp;#34; | xargs -0 $EDITOR&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Please watch your character encodings</title>
      <link>https://www.oxymoronical.com/blog/2019/07/Please-watch-your-character-encodings/</link>
      <pubDate>Wed, 10 Jul 2019 13:38:01 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2019/07/Please-watch-your-character-encodings/</guid>
      <description>&lt;p&gt;I started writing this as a newsgroup post for one of Mozilla’s mailing lists, but it turned out to be too long and since this part was mainly aimed at folks who either didn’t know about or wanted a quick refresher on character encodings I decided to blog it instead. Please let me know if there are errors in here, I am by no means an expert on this stuff either and I do get caught out sometimes!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Welcoming a new Firefox/Toolkit peer</title>
      <link>https://www.oxymoronical.com/blog/2019/02/Welcoming-a-new-FirefoxToolkit-peer/</link>
      <pubDate>Wed, 13 Feb 2019 12:49:39 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2019/02/Welcoming-a-new-FirefoxToolkit-peer/</guid>
      <description>&lt;p&gt;Please join me in welcoming Bianca Danforth to the set of peers blessed with reviewing patches to Firefox and Toolkit. She’s been doing great work making testing experiment extensions easy and so it’s time for her to level-up.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Taming Phabricator</title>
      <link>https://www.oxymoronical.com/blog/2018/06/Taming-Phabricator/</link>
      <pubDate>Tue, 19 Jun 2018 10:31:08 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2018/06/Taming-Phabricator/</guid>
      <description>&lt;p&gt;So Mozilla is going all-in on Phabricator and Differential as a code review tool. I have mixed feelings on this, not least because it’s support for patch series is more manual than I’d like. But since this is the choice Mozilla has made I might as well start to get used to it. One of the first things you see when you log into Phabricator is a default view full of information.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Searchfox in VS Code</title>
      <link>https://www.oxymoronical.com/blog/2018/06/Searchfox-in-VS-Code/</link>
      <pubDate>Thu, 07 Jun 2018 12:21:13 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2018/06/Searchfox-in-VS-Code/</guid>
      <description>&lt;p&gt;I spend most of my time developing flipping back and forth between &lt;a href=&#34;https://code.visualstudio.com/&#34;&gt;VS Code&lt;/a&gt; and &lt;a href=&#34;https://searchfox.org/&#34;&gt;Searchfox&lt;/a&gt;. VS Code is a great editor but it has nowhere near the speed needed to do searches over the entire tree, at least on my machine. Searchfox on the other hand is pretty fast. But there’s something missing. I usually want to search Searchfox for something I found in the code. Then I want to get the file I found in Searchfox open in my editor.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Even more new peers</title>
      <link>https://www.oxymoronical.com/blog/2017/09/Even-more-new-peers/</link>
      <pubDate>Wed, 20 Sep 2017 10:33:08 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2017/09/Even-more-new-peers/</guid>
      <description>&lt;p&gt;Please welcome the latest new peers to Firefox and Toolkit:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Johann Hofmann&lt;/li&gt;&#xA;&lt;li&gt;Nihanth Subramanya&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;As you might gather I’ve been updating the peer list a lot lately trying to catch up with reality. If there is anyone I’m missing then please let me know!&lt;/p&gt;</description>
    </item>
    <item>
      <title>How do you become a Firefox peer? The answer may surprise you!</title>
      <link>https://www.oxymoronical.com/blog/2017/09/How-do-you-become-a-Firefox-peer-The-answer-may-surprise-you/</link>
      <pubDate>Wed, 13 Sep 2017 11:02:42 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2017/09/How-do-you-become-a-Firefox-peer-The-answer-may-surprise-you/</guid>
      <description>&lt;p&gt;So you want to know how someone becomes a peer? Surprisingly the answer is pretty unclear. There is no formal process for peer status, at least for Firefox and Toolkit. I haven’t spotted one for other modules either. What has generally happened in the past is that from time to time someone will come along and say, “Oh hey, shouldn’t X be a peer by now?” to which I will say “Uhhh maybe! Let me go talk to some of the other peers that they have worked with”. After that magic happens and I go and update the stupid wiki pages, write a blog post and mail the new peers to congratulate them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New Firefox and Toolkit module peers</title>
      <link>https://www.oxymoronical.com/blog/2017/09/New-Firefox-and-Toolkit-module-peers/</link>
      <pubDate>Tue, 12 Sep 2017 14:44:03 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2017/09/New-Firefox-and-Toolkit-module-peers/</guid>
      <description>&lt;p&gt;Please join me in welcoming another set of brave souls willing to help shepherd new code into Firefox and Toolkit:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Luke Chang&lt;/li&gt;&#xA;&lt;li&gt;Ricky Chien&lt;/li&gt;&#xA;&lt;li&gt;Luca Greco&lt;/li&gt;&#xA;&lt;li&gt;Kate Hudson&lt;/li&gt;&#xA;&lt;li&gt;Tomislav Jovanovic&lt;/li&gt;&#xA;&lt;li&gt;Ray Lin&lt;/li&gt;&#xA;&lt;li&gt;Fischer Liu&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;While going through this round of peer updates I’ve realised that it isn’t terribly clear how people become peers. I intend to rectify that in a coming &lt;a href=&#34;https://www.oxymoronical.com/blog/2017/09/How-do-you-become-a-Firefox-peer-The-answer-may-surprise-you&#34;&gt;blog post&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New Firefox and Toolkit module peers in Taipei!</title>
      <link>https://www.oxymoronical.com/blog/2017/08/New-Firefox-and-Toolkit-module-peers-in-Taipei/</link>
      <pubDate>Wed, 09 Aug 2017 16:05:13 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2017/08/New-Firefox-and-Toolkit-module-peers-in-Taipei/</guid>
      <description>&lt;p&gt;Please join me in welcoming three new peers to the Firefox and Toolkit modules. All of them are based in Taipei and I believe that they are our first such peers which is very exciting as it means we now have more global coverage.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Tim Guan-tin Chien&lt;/li&gt;&#xA;&lt;li&gt;KM Lee Rex&lt;/li&gt;&#xA;&lt;li&gt;Fred Lin&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I’ve &lt;a href=&#34;https://www.oxymoronical.com/blog/2016/06/New-Firefox-reviewers&#34;&gt;blogged before about the things I expect&lt;/a&gt; from the peers and while I try to keep the lists up to date myself please feel free to point out folks you think may have been passed over.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Thoughts on the module system</title>
      <link>https://www.oxymoronical.com/blog/2017/07/Thoughts-on-the-module-system/</link>
      <pubDate>Thu, 13 Jul 2017 15:06:04 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2017/07/Thoughts-on-the-module-system/</guid>
      <description>&lt;p&gt;For a long long time Mozilla has governed its code (and a few other things) as a series of modules. Each module covers an area of code in the source and has an owner and a list of peers, folks that are knowledgeable about that module. The &lt;a href=&#34;https://wiki.mozilla.org/Modules&#34;&gt;full list of modules&lt;/a&gt; is public. In the early days the module system was everything. Module owners had almost complete freedom to evolve their module as they saw fit including choosing what features to implement and what bugs to fix. The folks who served as owners and peers came from diverse areas too. They weren’t just Mozilla employees, many were outside contributors.&lt;/p&gt;</description>
    </item>
    <item>
      <title>More new Firefox/Toolkit peers</title>
      <link>https://www.oxymoronical.com/blog/2017/02/More-new-FirefoxToolkit-peers/</link>
      <pubDate>Thu, 23 Feb 2017 09:51:28 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2017/02/More-new-FirefoxToolkit-peers/</guid>
      <description>&lt;p&gt;A few things are happening which means there are a bunch of new Firefox/Toolkit peers to announce.&lt;/p&gt;&#xA;&lt;p&gt;First since I’m now owner of both Firefox and Toolkit I’ve decided it doesn’t make much sense to have separate lists of peers. Either I trust people to review or I don’t so I’m merging the lists of peers for these modules. Practically since Toolkit already included all of the Firefox peers this just means that the following folks are now Firefox peers in addition to already being Toolkit peers:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Welcome to a new Firefox/Toolkit peer, Shane Caraveo</title>
      <link>https://www.oxymoronical.com/blog/2017/02/Welcome-to-a-new-FirefoxToolkit-peer-Shane-Caraveo/</link>
      <pubDate>Tue, 21 Feb 2017 09:49:38 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2017/02/Welcome-to-a-new-FirefoxToolkit-peer-Shane-Caraveo/</guid>
      <description>&lt;p&gt;It’s that time again when I get to announce a new Firefox/Toolkit peer. Shane has been involved with Mozilla for longer than I can remember and recently he has been doing fine work on webextensions including the new sidebar API. As usual we probably should have made Shane a peer sooner so this is a case of better late than never.&lt;/p&gt;&#xA;&lt;p&gt;I took a moment to tell Shane what I expect of all my peers:&lt;/p&gt;</description>
    </item>
    <item>
      <title>hgchanges is down, probably for good</title>
      <link>https://www.oxymoronical.com/blog/2017/02/hgchanges-is-down-probably-for-good/</link>
      <pubDate>Mon, 06 Feb 2017 14:01:35 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2017/02/hgchanges-is-down-probably-for-good/</guid>
      <description>&lt;p&gt;My little tool to help folks track when changes are made to files or directories in Mozilla’s mercurial repositories has gone down again. This time an influx of some 8000 changesets from the servo project are causing the script that does the updating to fail so I’ve turned off updating. I no longer have any time to work on this tool so I’ve also taken it offline and don’t really have any intention to bring it back up again. Sorry to the few people that this inconveniences. Please go lobby the engineering productivity folks if you still need a tool like this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>On Firefox module ownership</title>
      <link>https://www.oxymoronical.com/blog/2016/12/On-Firefox-module-ownership/</link>
      <pubDate>Wed, 14 Dec 2016 16:15:24 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2016/12/On-Firefox-module-ownership/</guid>
      <description>&lt;p&gt;It has been over eleven years since I first wrote a patch for Firefox. It was reviewed by the then-Firefox module owner, Mike Connor. If you had told me then that at some point in the future &lt;em&gt;I&lt;/em&gt; was going to be the module owner I probably would have laughed at you. I didn’t know at the time how much Mozilla would shape my life. Yet yesterday Dave Camp handed over the reigns to me and here we are.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A new owner for the add-ons manager</title>
      <link>https://www.oxymoronical.com/blog/2016/08/A-new-owner-for-the-add-ons-manager/</link>
      <pubDate>Mon, 15 Aug 2016 16:29:33 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2016/08/A-new-owner-for-the-add-ons-manager/</guid>
      <description>&lt;p&gt;I’ve been acting as the owner for the add-ons manager for the past little while and while I have always cared a lot about the add-ons space it is time to formerly pass over the torch. So I was pleased that &lt;a href=&#34;http://rhelmer.org/blog/&#34;&gt;Rob Helmer&lt;/a&gt; was willing to take it over from me.&lt;/p&gt;&#xA;&lt;p&gt;Rob has been doing some exceptional work on making system add-ons (used as part of the go faster project) more robust and easier for Mozilla to use. He’s also been thinking lot about improvements we can make to the add-ons manager code to make it more friendly to approach.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Improving the performance of the add-ons manager with asynchronous file I/O</title>
      <link>https://www.oxymoronical.com/blog/2016/01/Improving-the-performance-of-the-add-ons-manager-with-asynchronous-file-IO/</link>
      <pubDate>Wed, 27 Jan 2016 12:35:25 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2016/01/Improving-the-performance-of-the-add-ons-manager-with-asynchronous-file-IO/</guid>
      <description>&lt;p&gt;The add-ons manager has a dirty secret. It uses an awful lot of synchronous file I/O. This is the kind of I/O that blocks the main thread and can cause Firefox to be janky. I’m told that that is a technical term. Asynchronous file I/O is much nicer, it means you can let the rest of the app continue to function while you wait for the I/O operation to complete. I rewrote much of the current code from scratch for Firefox 4.0 and even back then we were trying to switch to asynchronous file I/O wherever possible. But still I used mostly synchronous file I/O.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linting for Mozilla JavaScript code</title>
      <link>https://www.oxymoronical.com/blog/2015/12/Linting-for-Mozilla-JavaScript-code/</link>
      <pubDate>Fri, 18 Dec 2015 11:27:07 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2015/12/Linting-for-Mozilla-JavaScript-code/</guid>
      <description>&lt;p&gt;One of the projects I’ve been really excited about recently is getting ESLint working for a lot of our JavaScript code. If you haven’t come across ESLint or linters in general before they are automated tools that scan your code and warn you about syntax errors. They can usually also be set up with a set of rules to enforce code styles and warn about potential bad practices. The devtools and Hello folks have been using eslint for a while already and Gijs asked why we weren’t doing this more generally. This struck a chord with me and a few others and so we’ve been spending some time over the past few weeks getting our in-tree support for ESLint to work more generally and fixing issues with browser and toolkit JavaScript code in particular to make them lintable.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Running ESLint on commit</title>
      <link>https://www.oxymoronical.com/blog/2015/12/Running-ESLint-on-commit/</link>
      <pubDate>Fri, 18 Dec 2015 11:24:23 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2015/12/Running-ESLint-on-commit/</guid>
      <description>&lt;p&gt;ESLint becomes the most useful when you get warnings before even trying to land or get your code reviewed. You can add support to your code editor but not all editors support this so I’ve written a mercurial extension which gives you warnings any time you commit code that fails lint checks. It uses the same rules we run elsewhere. It doesn’t abort the commit, that would be annoying if you’re working on a feature branch but gives you a heads up about what needs to be fixed and where.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Delivering Firefox features faster</title>
      <link>https://www.oxymoronical.com/blog/2015/10/Delivering-Firefox-features-faster/</link>
      <pubDate>Mon, 05 Oct 2015 11:20:28 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2015/10/Delivering-Firefox-features-faster/</guid>
      <description>&lt;p&gt;Over time Mozilla has been trying to reduce the amount of time between developing a feature and getting it into a user’s hands. Some time ago we would do around one feature release of Firefox every year, more recently we’ve moved to doing one feature release every six weeks. But it still takes at least 12 weeks for a feature to get to users. In some cases we can speed that up by landing new things directly on the beta/aurora branches but the more we do this the harder it is for release managers to track the risk of shipping a given release.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making communicating with chrome from in-content pages easy</title>
      <link>https://www.oxymoronical.com/blog/2015/03/Making-communicating-with-chrome-from-in-content-pages-easy/</link>
      <pubDate>Mon, 23 Mar 2015 08:34:24 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2015/03/Making-communicating-with-chrome-from-in-content-pages-easy/</guid>
      <description>&lt;p&gt;As Firefox increasingly switches to support running in multiple processes we’ve been finding common problems. Where we can we are designing nice APIs to make solving them easy. One problem is that we often want to run in-content pages like about:newtab and about:home in the child process without privileges making it safer and less likely to bring down Firefox in the event of a crash. These pages still need to get information from and pass information to the main process though, so we have had to come up with ways to handle that. Often we use custom code in a frame script acting as a middle-man, using things like DOM events to listen for requests from the in-content page and then messaging to the main process.&lt;/p&gt;</description>
    </item>
    <item>
      <title>hgchanges is back up</title>
      <link>https://www.oxymoronical.com/blog/2015/01/hgchanges-is-be-back-up/</link>
      <pubDate>Thu, 29 Jan 2015 10:33:05 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2015/01/hgchanges-is-be-back-up/</guid>
      <description>&lt;p&gt;The offending changeset that broke &lt;a href=&#34;https://www.oxymoronical.com/blog/2015/01/hgchanges-is-down-for-now&#34;&gt;hgchanges yesterday &lt;/a&gt;turns out to be a merge from an ancient branch to current tip. That makes the diff insanely huge which is why things like hgweb were tripping over it. Kwierso point out that just ignoring those changesets would solve the problem. It’s not ideal but since in this case they aren’t useful changesets I’ve gone ahead and done that and so hgchanges is now updating again.&lt;/p&gt;</description>
    </item>
    <item>
      <title>hgchanges is down for now</title>
      <link>https://www.oxymoronical.com/blog/2015/01/hgchanges-is-down-for-now/</link>
      <pubDate>Wed, 28 Jan 2015 21:23:31 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2015/01/hgchanges-is-down-for-now/</guid>
      <description>&lt;p&gt;My &lt;a href=&#34;http://hgchanges.fractalbrew.com/&#34;&gt;handy tool&lt;/a&gt; for tracking changes to directories in the mozilla mercurial repositories is going to be broken for a little while. Unfortunately a &lt;a href=&#34;https://hg.mozilla.org/mozilla-central/rev/8991b10184de994b6ba38edd81a73856c8c3d595&#34;&gt;particular changeset&lt;/a&gt; seems to be breaking things in ways I don’t have the time to fix right now. Specifically trying to download the &lt;a href=&#34;https://hg.mozilla.org/mozilla-central/raw-rev/4f2a8114211d:8991b10184de&#34;&gt;raw patch&lt;/a&gt; for the changeset is causing hgweb to timeout. Short of finding time to debug and fix the problem my only solution is to wait until that patch is old enough that it no longer attempts to index it. That could take a week or so.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Welcome to the new Toolkit peers - Paolo, Matt, Jared and Irving</title>
      <link>https://www.oxymoronical.com/blog/2014/04/Welcome-to-the-new-Toolkit-peers-Paolo-Matt-Jared-and-Irving/</link>
      <pubDate>Tue, 15 Apr 2014 13:38:01 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2014/04/Welcome-to-the-new-Toolkit-peers-Paolo-Matt-Jared-and-Irving/</guid>
      <description>&lt;p&gt;Slightly belated in some cases but I’d like to formally welcome four new &lt;a href=&#34;https://wiki.mozilla.org/Modules/Toolkit&#34;&gt;toolkit peers&lt;/a&gt;. Paolo Amadini, Matthew Noorenberghe, Jared Wein and Irving Reid have all shown themselves to be well capable of reviewing patches in any of the toolkit code. Paolo, Matt and Jared actually got added a few months ago but apparently I failed to make an announcement at the time. Irving was added just last week. Please congratulate them all and don’t go too hard on their review queues!&lt;/p&gt;</description>
    </item>
    <item>
      <title>An update for hgchanges</title>
      <link>https://www.oxymoronical.com/blog/2014/03/An-update-for-hgchanges/</link>
      <pubDate>Thu, 13 Mar 2014 15:47:18 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2014/03/An-update-for-hgchanges/</guid>
      <description>&lt;p&gt;Nearly a year ago I showed off the first version of my webapp for displaying &lt;a href=&#34;https://www.oxymoronical.com/blog/2013/04/Get-notifications-about-changes-to-any-directory-in-mercurial&#34;&gt;recent changes in mercurial repositories&lt;/a&gt;. I’ve heard directly from a number of people that use it but it’s had a few problems that I’ve spent some of my spare time trying to solve. I’m now pleased to say that a new version is up and running. I’m not sure it’s accurate to call this a rewrite since it was entirely incremental but when I look back over of the code changes there really isn’t much that wasn’t touched in some way or other. So what’s new? For you, a person using the site absolutely nothing! So what on earth have I been doing rewriting the code?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Developer Tools meet-up in Portland</title>
      <link>https://www.oxymoronical.com/blog/2014/03/Developer-Tools-meet-up-in-Portland/</link>
      <pubDate>Wed, 05 Mar 2014 14:33:06 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2014/03/Developer-Tools-meet-up-in-Portland/</guid>
      <description>&lt;p&gt;Two weeks ago the developer tools teams and a few others met in the Portland office for a very successful week of discussions and hacking. The first day was about setting the stage for the week and working out what everyone was going to work on. Dave Camp kicked us off with a review of the last six months in developer tools and talked about what is going to be important for us to focus on in 2014. We then had a little more in-depth information from each of the teams. After lunch a set of lightning talks went over some projects and ideas that people had been working on recently.&lt;/p&gt;</description>
    </item>
    <item>
      <title>An editable box model view in the devtools</title>
      <link>https://www.oxymoronical.com/blog/2014/02/An-editable-box-model-view-in-the-devtools/</link>
      <pubDate>Fri, 21 Feb 2014 15:07:24 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2014/02/An-editable-box-model-view-in-the-devtools/</guid>
      <description>&lt;p&gt;This week the whole devtools group has been sequestered in Mozilla’s Portland office having one of our regular meet-ups. As always it’s been a fantastically productive week with lots of demos to show for it. I’ll be writing a longer write-up later but I wanted to post about what I played with over the week.&lt;/p&gt;&#xA;&lt;p&gt;My wife does the odd bit of web development on the side. For a long time she was a loyal Firebug user and a while ago I asked her what she thought of Firefox’s built in devtools. She quickly pointed out a couple of features that Firebug had that Firefox did not. As I was leaving for this week I mentioned I’d be with the devtools group and she asked whether her features had been fixed yet. It turns out that &lt;a href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=918716&#34;&gt;colour swatches&lt;/a&gt; had been but the box model &lt;a href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=850336&#34;&gt;still wasn’t editable&lt;/a&gt;. So I figured I could earn myself some brownie points by hacking on that this week.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Firefox now ships with the add-on SDK</title>
      <link>https://www.oxymoronical.com/blog/2013/05/Firefox-now-ships-with-the-add-on-SDK/</link>
      <pubDate>Wed, 15 May 2013 15:31:59 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2013/05/Firefox-now-ships-with-the-add-on-SDK/</guid>
      <description>&lt;p&gt;It’s been a long ride but we can finally say it. This week Firefox 21 shipped and it includes the add-on SDK modules.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;shipped.jpg&#34;&gt;&lt;img src=&#34;https://www.oxymoronical.com/blog/2013/05/Firefox-now-ships-with-the-add-on-SDK/shipped.jpg&#34; style=&#34;width: 343px&#34; alt=&#34;We took all the Jetpack APIs and we shipped them in Firefox!&#34; title=&#34;We took all the Jetpack APIs and we shipped them in Firefox!&#34;&gt;&#xA;  &lt;/a&gt;What does this mean? Well for users it means two important things:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Smaller add-ons. Since they no longer need to ship the APIs themselves add-ons only have to include the unique code that makes them special. That’s something like a 65% file-size saving for the most popular SDK based add-ons, probably more for simpler add-ons.&lt;/li&gt;&#xA;&lt;li&gt;Add-ons will stay compatible with Firefox for longer. We can evolve the modules in Firefox that add-ons use so that most of the time when changes happen to Firefox the modules seamlessly shift to keep working. There are still some cases where that might be impossible (when a core feature is dropped from Firefox for example) but hopefully those should be rare.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;To take advantage of these benefits add-ons have to be repacked with a recent version of the SDK. We’re &lt;a href=&#34;https://groups.google.com/d/msg/mozilla-labs-jetpack/-nxopO-_gVI/MxZHoOv0ddIJ&#34;&gt;working on a plan&lt;/a&gt; to do that automatically for existing add-ons where possible but developers who want to get the benefits right now can just repack their add-ons themselves using SDK 1.14 and using &lt;code&gt;cfx xpi --strip-sdk&lt;/code&gt;, or using the next release of the SDK, 1.15 which will do that by default.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Get notifications about changes to any directory in mercurial</title>
      <link>https://www.oxymoronical.com/blog/2013/04/Get-notifications-about-changes-to-any-directory-in-mercurial/</link>
      <pubDate>Fri, 05 Apr 2013 14:36:32 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2013/04/Get-notifications-about-changes-to-any-directory-in-mercurial/</guid>
      <description>&lt;p&gt;Back in the old days when we used CVS of all things for our version control we had a wonderful tool called &lt;a href=&#34;http://bonsai.mozilla.org/&#34;&gt;bonsai&lt;/a&gt; to help query the repository for changes. You could list changes on a per directory basis if you needed which was great for keeping an eye on certain chunks of code. I recall there being a way of getting an RSS feed from it and I used it when I was the module owner of the extension manager to see what changes were landed that I hadn’t noticed in bugs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hacking on Tilt</title>
      <link>https://www.oxymoronical.com/blog/2013/03/hacking-on-tilt/</link>
      <pubDate>Mon, 18 Mar 2013 18:38:42 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2013/03/hacking-on-tilt/</guid>
      <description>&lt;p&gt;Tilt, or 3D view as it is known in Firefox, is an awesome visual tool that really lets you see the structure of a webpage. It shows you just how deep your tag hierarchy goes which might give signs of your page being too complex or even help you spot errors in your markup that you wouldn’t otherwise notice. But what if it could do more? What if there were different ways to visualise the same page? What if even web developers could create their own visualisations?&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Add-on SDK is now in Firefox</title>
      <link>https://www.oxymoronical.com/blog/2013/02/The-Add-on-SDK-is-now-in-Firefox/</link>
      <pubDate>Fri, 01 Feb 2013 22:06:43 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2013/02/The-Add-on-SDK-is-now-in-Firefox/</guid>
      <description>&lt;p&gt;We’re now a big step closer to shipping the SDK APIs with Firefox and other apps, we’ve uplifted the SDK code from our git repository to &lt;code&gt;mozilla-inbound&lt;/code&gt; and assuming it sticks we will be on the trains for releasing. We’ll be doing weekly uplifts to keep the code in &lt;code&gt;mozilla-central&lt;/code&gt; current.&lt;/p&gt;&#xA;&lt;h2 id=&#34;whats-changed&#34;&gt;What’s changed?&lt;/h2&gt;&#xA;&lt;p&gt;Not a lot yet. Existing add-ons and add-ons built with the current version of the SDK still use their own versions of the APIs from their XPIs. Add-ons built with the next version of the SDK may start to try to use the APIs in Firefox in preference to those shipped with the XPI and then a future version will only use those in Firefox. We’re also talking about the possibility of making Firefox override the APIs in any SDK based add-on and use the shipped ones automatically so the add-on author wouldn’t need to do anything.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making Git play nice on Windows</title>
      <link>https://www.oxymoronical.com/blog/2012/12/Making-Git-play-nice-on-Windows/</link>
      <pubDate>Fri, 28 Dec 2012 17:57:13 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2012/12/Making-Git-play-nice-on-Windows/</guid>
      <description>&lt;p&gt;A while ago now I switched to Windows on my primary development machine. It’s pretty frustrating particularly when it comes to command line support but &lt;a href=&#34;https://wiki.mozilla.org/MozillaBuild&#34;&gt;MozillaBuild&lt;/a&gt; goes a long way to giving me a more comfortable environment. One thing that took a long time to get working right though was full colour support from both mercurial and git. Git in particular is a problem because it uses a custom version of MSYS which seems to conflict with the stock MSYS in MozillaBuild leaving things broken if you don’t set it up just right. Since I just switched to a new machine I thought it would be useful to record how I got it working, perhaps more for my benefit than anything else, but perhaps others will find it useful too.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Let&#39;s just put it in Toolkit!</title>
      <link>https://www.oxymoronical.com/blog/2012/11/Lets-just-put-it-in-Toolkit/</link>
      <pubDate>Fri, 23 Nov 2012 23:41:56 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2012/11/Lets-just-put-it-in-Toolkit/</guid>
      <description>&lt;p&gt;Toolkit is fast turning into the dumping ground of mozilla-central. Once upon a time the idea was simple. Any code that could be usefully shared across multiple applications (and in particular code that wasn’t large enough to deserve a module of its own) would end up in Toolkit. The rules were pretty simple, any code in there should work for any application that wants to use it. This didn’t always work exactly according to plan but we did our best to fix Seamonkey and Thunderbird incompatibilities as they came along.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What is an API?</title>
      <link>https://www.oxymoronical.com/blog/2012/11/What-is-an-API/</link>
      <pubDate>Fri, 23 Nov 2012 19:27:02 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2012/11/What-is-an-API/</guid>
      <description>&lt;p&gt;I recently posted in the newsgroups about a &lt;a href=&#34;https://groups.google.com/d/topic/mozilla.dev.platform/fZV-DYnqQEc/discussion&#34;&gt;concern over super-review&lt;/a&gt;. In some cases patches that seem to meet the policy aren’t getting super-reviewed. Part of the problem here is that the policy is a little ambiguous. It says that any API or pseudo-API requires super-review but depending on how you read that section it could mean any patch that changes the signature of a JS function is classed as an API. We need to be smarter than that. Here is a straw-man proposal for defining what is an API:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simple image filters with getUserMedia</title>
      <link>https://www.oxymoronical.com/blog/2012/10/Simple-image-filters-with-getUserMedia/</link>
      <pubDate>Mon, 22 Oct 2012 17:44:37 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2012/10/Simple-image-filters-with-getUserMedia/</guid>
      <description>&lt;p&gt;I forgot to blog about this last week, but &lt;a href=&#34;https://blog.mozilla.org/dolske/2012/10/21/image-enhancement-gum/&#34;&gt;Justin&lt;/a&gt; made me remember. The WebRTC getUserMedia API is available on the Nightly and Aurora channels of Firefox right now and Tim has done a couple of &lt;a href=&#34;http://timtaubert.de/blog/2012/10/building-a-live-green-screen-with-getusermedia-and-mediastreams/&#34;&gt;great&lt;/a&gt; &lt;a href=&#34;http://timtaubert.de/blog/2012/10/getusermedia-part-2-building-an-eyetoy-like-mini-game/&#34;&gt;demos&lt;/a&gt; of using JavaScript to process the media stream. That got me interested and after a little playing around I remembered learning the basics of convolution image filters so I thought I’d give it a try. The &lt;a href=&#34;https://www.oxymoronical.com/experiments/convolution/&#34;&gt;result is a sorta ugly-looking UI&lt;/a&gt; that lets you build your own image filters to apply to the video coming off your webcam. There are a few pre-defined filter matrices there to get you started and it’s interesting to see what effects you can get. Remember that you need to enable &lt;em&gt;media.navigator.enabled&lt;/em&gt; in about:config to make it work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Managing changes is the key to a project&#39;s success</title>
      <link>https://www.oxymoronical.com/blog/2012/05/Managing-changes-is-the-key-to-a-projects-success/</link>
      <pubDate>Wed, 30 May 2012 07:43:15 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2012/05/Managing-changes-is-the-key-to-a-projects-success/</guid>
      <description>&lt;p&gt;TomTom made an &lt;a href=&#34;http://www.tomtom.com/en_gb/licensing/newsletter/201205/didyouknow/&#34;&gt;interesting claim recently&lt;/a&gt;. Their summary is “&lt;em&gt;when it comes to automotive-grade mapping, open source has some quite serious limitations, falling short on the levels of accuracy and reliability required for safe navigation&lt;/em&gt;”&lt;/p&gt;&#xA;&lt;p&gt;This is a bold claim and they talk about recent studies that back them up. Unfortunately none of them are referenced but it’s pretty clear from the text of the article that all they are doing is comparing the accuracy of TomTom maps with existing open source maps. So they’re just generalising, this doesn’t prove a limitation with the open source process itself of course, just perhaps of a particular instance of it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How Crashplan breaks xpcshell tests on Windows</title>
      <link>https://www.oxymoronical.com/blog/2011/11/how-crashplan-breaks-xpcshell-tests-on-windows/</link>
      <pubDate>Wed, 23 Nov 2011 20:15:52 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2011/11/how-crashplan-breaks-xpcshell-tests-on-windows/</guid>
      <description>&lt;p&gt;I recently switched to a Windows laptop and have been going through the usual teething pains related. One thing that confused me though was that when I was running xpcshell tests on my new machine they would frequently fail with access denied errors. I’ve seen this sort of thing before so I know some service was monitoring files and opening them after they had changed, when this happens they can’t be deleted or edited until the service closes them again and often tests open, close and delete files so fast that there isn’t time for that to happen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>WebApp Tabs, version control and GitHub</title>
      <link>https://www.oxymoronical.com/blog/2011/11/WebApp-Tabs-version-control-and-GitHub/</link>
      <pubDate>Mon, 07 Nov 2011 00:59:28 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2011/11/WebApp-Tabs-version-control-and-GitHub/</guid>
      <description>&lt;p&gt;The extension I’ve been working on in my spare time for the past couple of weeks is now available as a first (hopefully not too buggy) release. It lets you open WebApps in Thunderbird, properly handling loading new links into Firefox and making all features like spellchecking work in Thunderbird (most other extensions I found didn’t do this). You can read more about the actual extension at its &lt;a href=&#34;http://www.fractalbrew.com/labs/webapp-tabs/&#34; title=&#34;WebApp Tabs for Thunderbird&#34;&gt;homepage&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Overlays without overlays in restartless add-ons</title>
      <link>https://www.oxymoronical.com/blog/2011/10/Overlays-without-overlays-in-restartless-add-ons/</link>
      <pubDate>Mon, 31 Oct 2011 01:43:46 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2011/10/Overlays-without-overlays-in-restartless-add-ons/</guid>
      <description>&lt;p&gt;Perhaps the most common way of making changes to Firefox with an extension has always been using the overlay. For a window’s UI you can make changes to the underlying XUL document, add script elements to be executed in the context of the normal window’s code and add new stylesheets to the window to change how the UI looks.&lt;/p&gt;&#xA;&lt;p&gt;Restartless add-ons change this around completely, the normal overlay and style-overlay mechanisms just aren’t available to restartless add-ons and this is likely to remain true for a while, these methods don’t clean up after themselves when the add-on is uninstalled.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adding add-on preferences to the Add-ons Manager</title>
      <link>https://www.oxymoronical.com/blog/2011/07/Adding-add-on-preferences-to-the-Add-ons-Manager/</link>
      <pubDate>Thu, 07 Jul 2011 19:06:32 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2011/07/Adding-add-on-preferences-to-the-Add-ons-Manager/</guid>
      <description>&lt;p&gt;For some time now Firefox for mobile has had this nice feature where add-ons could embed their preferences right into the list of add-ons, no need to open a whole a new window like add-ons for desktop have to. During the development of Firefox 4 we were a little jealous of what the mobile team had done and so we drew up some ideas for how the same functionality would look on desktop. We didn’t get time to implement them then but I’m excited that someone from the community stepped up and implemented it for us. Not just that but he made the code shared between mobile and desktop, added some new option types and made it work fine for restartless add-ons which are unable to register their own chrome.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unloading JS modules</title>
      <link>https://www.oxymoronical.com/blog/2011/07/Unloading-JS-modules/</link>
      <pubDate>Thu, 07 Jul 2011 18:26:44 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2011/07/Unloading-JS-modules/</guid>
      <description>&lt;p&gt;One of the problems with writing a restartless add-on is that you have to be careful about undoing anything your add-on does when it is told to shutdown. This means that right now some features of the platform can’t be used as we have no way to undo them. Recently I made this list a little shorter by making it possible to unload JS modules loaded with &lt;code&gt;Components.utils.import()&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Just call &lt;code&gt;Components.utils.unload(uri)&lt;/code&gt; and the module loaded from that URI will be unloaded. Take care when you do this because something might still have references into it which will stop working. Firefox also caches the module’s code for fast loading the next time around. The add-ons manager clears this cache when your add-on is updated or uninstalled so you mostly don’t have to worry about it but if you do something strange like unload a module, manually alter the file and then import it again you won’t get the latest code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why do Firefox updates break add-ons?</title>
      <link>https://www.oxymoronical.com/blog/2011/06/Why-do-Firefox-updates-break-add-ons/</link>
      <pubDate>Sat, 25 Jun 2011 00:25:22 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2011/06/Why-do-Firefox-updates-break-add-ons/</guid>
      <description>&lt;p&gt;Our success in switching to the new rapid release cycle for Firefox has stirred up lots of excitement in the community and I wouldn’t be surprised if that intensifies when we ship the next update to Firefox in 8 weeks time. People keep pointing out that everytime we update Firefox we break add-ons so surely faster releases means add-ons will get broken faster. Many people don’t really understand why Firefox updates should break add-ons anyway so here is my attempt at an explanation and how maybe rapid releases aren’t such a bad thing after all.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating custom add-on types just got easier</title>
      <link>https://www.oxymoronical.com/blog/2011/05/Creating-custom-add-on-types-just-got-easier/</link>
      <pubDate>Wed, 25 May 2011 19:01:53 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2011/05/Creating-custom-add-on-types-just-got-easier/</guid>
      <description>&lt;p&gt;One of the nice features that we added to the add-ons manager in Firefox 4 was support for custom add-on types that could be treated the same way as the built-in types, even showing up in the same UI if you did a little work. I &lt;a href=&#34;https://www.oxymoronical.com/blog/2010/07/How-to-extend-the-new-Add-ons-Manager&#34; title=&#34;How to extend the new Add-ons Manager (or how I built a simple greasemonkey clone in an evening)&#34;&gt;blogged a basic example&lt;/a&gt; of how to do this and I know since then Greasemonkey and Stylish have been using the support.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to disable extension compatibility checking on Nightly builds of Firefox</title>
      <link>https://www.oxymoronical.com/blog/2011/05/How-to-disable-extension-compatibility-checking-on-Nightly-builds-of-Firefox/</link>
      <pubDate>Tue, 24 May 2011 22:26:58 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2011/05/How-to-disable-extension-compatibility-checking-on-Nightly-builds-of-Firefox/</guid>
      <description>&lt;p&gt;A long long time ago (I can still remember…) we &lt;a href=&#34;https://www.oxymoronical.com/blog/2009/11/Changing-the-checkCompatibility-preference&#34; title=&#34;Changing the checkCompatibility preference&#34;&gt;changed the preference&lt;/a&gt; you use to disable compatibility checking for extensions. We still aim for users to instead use tools like the Add-on Compatibility Reporter to handle this (especially since we are going to start crowdsourcing data from it), but for developers who don’t want to install that but still want to use extensions on their nightly builds the new rapid release model would mean setting a new preference every 6 weeks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What&#39;s next for the Add-ons Manager?</title>
      <link>https://www.oxymoronical.com/blog/2011/03/Whats-next-for-the-Add-ons-Manager/</link>
      <pubDate>Tue, 08 Mar 2011 22:52:14 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2011/03/Whats-next-for-the-Add-ons-Manager/</guid>
      <description>&lt;p&gt;Firefox 4 is just around the corner and it’s great to look back over just how far the Add-ons Manager has come since Firefox 3.6. In fact if you want to see the full history look at my earlier post that shows its &lt;a href=&#34;https://www.oxymoronical.com/blog/2010/07/History-of-the-Add-ons-Manager&#34; title=&#34;History of the Add-ons Manager&#34;&gt;evolution since Phoenix 0.2&lt;/a&gt;. We set out with some pretty lofty goals for Firefox 4 and I’m pretty excited at just how many of them we achieved. I hope everyone appreciates the hard work that &lt;a href=&#34;http://theunfocused.net/&#34;&gt;Blair&lt;/a&gt;, &lt;a href=&#34;http://jboriss.wordpress.com/&#34;&gt;Boriss&lt;/a&gt;, &lt;a href=&#34;http://blog.fligtar.com/&#34;&gt;Justin&lt;/a&gt;, &lt;a href=&#34;http://www.hskupin.info/&#34;&gt;Henrik&lt;/a&gt;, Ben, myself and all the others put in to get us to where we are today.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Playing with windows in restartless (bootstrapped) extensions</title>
      <link>https://www.oxymoronical.com/blog/2011/01/Playing-with-windows-in-restartless-bootstrapped-extensions/</link>
      <pubDate>Wed, 19 Jan 2011 20:14:27 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2011/01/Playing-with-windows-in-restartless-bootstrapped-extensions/</guid>
      <description>&lt;p&gt;Lots of people seem to be &lt;a href=&#34;http://starkravingfinkle.org/blog/2011/01/bootstrap-jones-adventures-in-restartless-add-ons/&#34;&gt;playing&lt;/a&gt; with the new support for restartless extensions (also known as bootstrapped extensions) coming in Firefox 4. Nothing could make me happier really. I’m not sure I can remember ever helping implement something which is will hopefully turn out to be a game changer for extension development in the future. The technical details of restartless extensions are &lt;a href=&#34;https://developer.mozilla.org/en/Extensions/Bootstrapped_extensions&#34;&gt;talked about&lt;/a&gt; in a &lt;a href=&#34;https://www.oxymoronical.com/blog/2010/07/How-to-extend-the-new-Add-ons-Manager&#34;&gt;few places&lt;/a&gt; but one thing that is missing is what I think is probably going to be the most common code pattern in these extensions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Firefox 4 and the Add-ons Manager at Add-on-Con</title>
      <link>https://www.oxymoronical.com/blog/2010/12/Firefox-4-and-the-Add-ons-Manager-at-Add-on-Con/</link>
      <pubDate>Fri, 10 Dec 2010 04:52:05 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/12/Firefox-4-and-the-Add-ons-Manager-at-Add-on-Con/</guid>
      <description>&lt;p&gt;As I &lt;a href=&#34;https://www.oxymoronical.com/blog/2010/12/Add-on-Con-is-here&#34;&gt;mentioned before&lt;/a&gt; I was part of a presentation at Add-on-Con this year. Myself, &lt;a href=&#34;http://jboriss.wordpress.com/&#34;&gt;Boriss&lt;/a&gt; and &lt;a href=&#34;http://blog.fligtar.com/&#34;&gt;Justin&lt;/a&gt; talked about the new UI changes in Firefox 4 and about the main changes to the add-ons manager. If you’re particularly interested the &lt;a href=&#34;Firefox_4_Add_ons.pdf&#34;&gt;slides are available here&lt;/a&gt; though I guess slides are often just tiny snippets of info from the actual session so if anything catches your eye you’ll need to get in touch and ask us about it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Add-on-Con is here!</title>
      <link>https://www.oxymoronical.com/blog/2010/12/Add-on-Con-is-here/</link>
      <pubDate>Fri, 03 Dec 2010 22:32:06 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/12/Add-on-Con-is-here/</guid>
      <description>&lt;p&gt;Next week is &lt;a href=&#34;http://addoncon.com/&#34;&gt;Add-on-Con 2010&lt;/a&gt; and if you do any work in the add-ons space then you’re probably going to want to take a look at what is going on and hopefully sign up to attend. There are two days this year, one for some training and then the traditional day for keynotes and business/development tracks. I’ll be there for all of the main day and while I don’t think I am going to make the training day I should be there in the evening for the &lt;a href=&#34;http://www.meetup.com/addons/calendar/15494798/&#34;&gt;Mozilla party&lt;/a&gt;, be sure to sign up.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Minor change coming to the interface amIWebInstallListener in Firefox 4.0 beta 8</title>
      <link>https://www.oxymoronical.com/blog/2010/11/Minor-change-coming-to-the-interface-amIWebInstallListener-in-Firefox-40-beta-8/</link>
      <pubDate>Thu, 25 Nov 2010 00:27:48 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/11/Minor-change-coming-to-the-interface-amIWebInstallListener-in-Firefox-40-beta-8/</guid>
      <description>&lt;p&gt;We’re past API freeze so any API changes should be getting announced and communicated. In this case the change is tiny and unlikely to affect anyone. Have you heard of the interface amIWebInstallListener? If not then you can probably ignore this.&lt;/p&gt;&#xA;&lt;p&gt;If you’re interested it is effectively what the add-ons manager backend code uses to communicate messages about webpage initiated add-on installations. An add-on or application might provide its own implementation if it wanted to provide its own UI for installs. Or an add-on might call it to get the normal UI to show up for some other cases but this is pretty rare.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PreFox is now available for testing</title>
      <link>https://www.oxymoronical.com/blog/2010/09/PreFox-is-now-available-for-testing/</link>
      <pubDate>Sun, 19 Sep 2010 04:30:02 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/09/PreFox-is-now-available-for-testing/</guid>
      <description>&lt;p&gt;I’ve finally been able to make some early alpha builds of PreFox, which is clearly a rather unoriginal name for Firefox running on the Palm Pre, available for testing. You can read more and find the builds at the &lt;a href=&#34;http://bit.ly/dvmGJM&#34;&gt;release announcement&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;This has been a long time coming, made that much longer by Sprint delaying the release of webOS 1.4.5 and of course Firefox 4 blockers eating into my spare time, I’m hopeful that now both builds and the source code are available some people will start to help out with getting it to be a viable alternative to the default webOS browser. Lots of the remaining work is stuff that is really outside my skill-set.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Don&#39;t miss an exciting opportunity to shape the future of Firefox 4!</title>
      <link>https://www.oxymoronical.com/blog/2010/09/Dont-miss-an-exciting-opportunity-to-shape-the-future-of-Firefox-4/</link>
      <pubDate>Wed, 01 Sep 2010 23:31:11 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/09/Dont-miss-an-exciting-opportunity-to-shape-the-future-of-Firefox-4/</guid>
      <description>&lt;p&gt;You might have heard of this web-browser. It’s called Firefox. You may have also heard that a new version is due out soon. As my part in its development I have helped completely reshape the way the add-ons manager looks. The good news is that the large bits of the changes are pretty much done, pretty much all that is left is a bunch of UI tweaks and some small behaviour changes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to extend the new Add-ons Manager (or how I built a simple greasemonkey clone in an evening)</title>
      <link>https://www.oxymoronical.com/blog/2010/07/How-to-extend-the-new-Add-ons-Manager/</link>
      <pubDate>Fri, 09 Jul 2010 22:30:56 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/07/How-to-extend-the-new-Add-ons-Manager/</guid>
      <description>&lt;p&gt;One of the goals of the new add-ons manager API was to create something that was itself extensible. A couple of times in the past we’ve had to add new types of add-ons to the UI like Plugins and Personas. In both cases squeezing them into the UI was something of a kludge involving a bunch of custom code for each case. We already have a number of new types of add-ons that we want to add, things like search plugins which are currently managed by their own custom UI.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Multiple breaking changes are coming for components in extensions</title>
      <link>https://www.oxymoronical.com/blog/2010/06/Multiple-breaking-changes-are-coming-for-components-in-extensions/</link>
      <pubDate>Mon, 14 Jun 2010 23:45:50 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/06/Multiple-breaking-changes-are-coming-for-components-in-extensions/</guid>
      <description>&lt;p&gt;Are you an extension or application developer? Have you written any XPCOM components, JS, binary or otherwise? If not you can probably ignore the rest of this post, unless you are interested anyway.&lt;/p&gt;&#xA;&lt;p&gt;If you do then you might be interested to hear that your components are probably going to break in an upcoming Firefox nightly, maybe as early as next week. I’m going to blog specific examples on the changes you need to make once we have better documentation up and builds to test against, for now it is just important for you to know that the changes are coming.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Documenting the new Add-ons Manager</title>
      <link>https://www.oxymoronical.com/blog/2010/06/Documenting-the-new-Add-ons-Manager/</link>
      <pubDate>Fri, 04 Jun 2010 16:35:24 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/06/Documenting-the-new-Add-ons-Manager/</guid>
      <description>&lt;p&gt;I’ve spent some time this week transferring all the API documentation for the new add-ons manager from the Mozilla wiki to the Mozilla Developer Network. This should now be the place to go for the &lt;a href=&#34;https://developer.mozilla.org/en/Addons/Add-on_Manager&#34;&gt;definitive info&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Right now it is pretty dry, for the most part just pure API info with no examples. Before I started working more on that side of things I wanted to ask what kind of examples people might like to see documented?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Support for dropping XPI files into the extension install locations might be going away</title>
      <link>https://www.oxymoronical.com/blog/2010/05/Support-for-dropping-XPI-files-into-the-extension-install-locations/</link>
      <pubDate>Thu, 27 May 2010 23:22:05 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/05/Support-for-dropping-XPI-files-into-the-extension-install-locations/</guid>
      <description>&lt;p&gt;For some time now Firefox has supported a way of installing extensions that involves simply copying the extension’s XPI file into one of the &lt;a href=&#34;https://developer.mozilla.org/En/Installing_extensions&#34;&gt;extension install locations&lt;/a&gt;. The next time Firefox runs it would pop up the install dialog for the extension and allow the user to choose whether to install it or not.&lt;/p&gt;&#xA;&lt;p&gt;I don’t know how many people use this feature and while the code to do it (at least for the profile folder) isn’t terribly complex, it is additional code that may not be necessary. Right now the new add-ons manager doesn’t support it and I’ve heard only a couple of people comment on its absence but nightly testers are by no means representational so I’m asking a little more widely whether people have a real need for keeping this working in Firefox 4?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Where is the updated Nightly Tester Tools?</title>
      <link>https://www.oxymoronical.com/blog/2010/05/Where-is-the-updated-Nightly-Tester-Tools/</link>
      <pubDate>Mon, 17 May 2010 02:39:00 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/05/Where-is-the-updated-Nightly-Tester-Tools/</guid>
      <description>&lt;p&gt;Many of you nightly testers may have noticed that Nightly Tester Tools’ compatibility override feature doesn’t work with the new add-ons manager and may be wondering when I’m planning to issue an update to fix that. The more astute of you may have noticed that there hasn’t actually been a real code update to Nightly Tester Tools in 2 years, barring a couple of simple app compatibility fixes. Those with a sharp memory will remember that I said &lt;a href=&#34;https://www.oxymoronical.com/blog/2008/08/Throwing-in-the-Towel&#34;&gt;just under 2 years ago&lt;/a&gt; that I was ceasing work on my extensions in my spare time. I suggested that Nightly Tester Tools might still receive the odd update but obviously that hasn’t happened and the truth is that I can’t see it happening anytime soon. I’m too busy with that whole real life thing to even be able to work on projects I do enjoy, let alone maintain old stuff that no longer really interests me.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Add-ons manager re-landed</title>
      <link>https://www.oxymoronical.com/blog/2010/05/Add-ons-manager-re-landed/</link>
      <pubDate>Mon, 10 May 2010 23:36:46 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/05/Add-ons-manager-re-landed/</guid>
      <description>&lt;p&gt;A little sort of coincidental performance regression forced us to back out the new add-ons manager last week. It has now been re-landed with added bug fixes and should be in tomorrow’s nightly.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The new add-ons manager is here</title>
      <link>https://www.oxymoronical.com/blog/2010/04/The-new-add-ons-manager-is-here/</link>
      <pubDate>Thu, 29 Apr 2010 19:34:24 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/04/The-new-add-ons-manager-is-here/</guid>
      <description>&lt;p&gt;Finally, after far too much time, the new add-ons manager is about to land in trunk nightlies. I am putting together the final patches to land now. The bit most people will see is the new UI so I guess I’ll steal &lt;a href=&#34;http://jboriss.wordpress.com/2010/04/01/add-ons-manager-redesign-update/&#34;&gt;Boriss’&lt;/a&gt; image for you to look at here with the same caveats. What you see on trunk over the next few days is just the initial steps to switching to a redesigned UI and (more importantly from my point of view) a totally new extension manager backend that will make it easier for us to improve and build upon in the future. The changes are so large that it is important to get more people testing it now while it still looks fairly unpolished so we can pick up problems that we’ve missed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Myths and mysconceptions about Firefox on the Palm Pre</title>
      <link>https://www.oxymoronical.com/blog/2010/04/Myths-and-mysconceptions-about-Firefox-on-the-Palm-Pre/</link>
      <pubDate>Wed, 21 Apr 2010 18:09:49 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/04/Myths-and-mysconceptions-about-Firefox-on-the-Palm-Pre/</guid>
      <description>&lt;p&gt;Since I posted &lt;a href=&#34;https://www.oxymoronical.com/blog/2010/04/Firefox-running-on-the-Palm-Pre-mostly&#34;&gt;last week&lt;/a&gt; about how I was experimenting with running Firefox on my Palm Pre a number of tech news sites, large and small, picked it up and posted their own take on it. Some of the sites (and some of the readers of those sites) made some fairly odd statements about my work. This is probably because to the uninitiated (and many of the initiated in fact) the internals of Firefox are something of a mystery. I also suspect I made a couple of poor choices of words which led to some misunderstandings so I’d like to try to clarify a couple of points that might make it easier to understand what is going on.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Firefox running on the Palm Pre (mostly)</title>
      <link>https://www.oxymoronical.com/blog/2010/04/Firefox-running-on-the-Palm-Pre-mostly/</link>
      <pubDate>Mon, 12 Apr 2010 23:02:56 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/04/Firefox-running-on-the-Palm-Pre-mostly/</guid>
      <description>&lt;p&gt;One of the first things I did when I moved to the U.S. was to get myself a smartphone, and that phone was the Palm Pre. I’ve always thought it was way ahead of its competition in terms of the potential of its potential capabilities and platform. Sadly I think it is let down some by build quality and hardware issues, but I still love it as a phone and really hope that if Palm get bought they’ll continue work on it and develop a better 2nd gen version.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How do restartless add-ons work?</title>
      <link>https://www.oxymoronical.com/blog/2010/04/How-do-restartless-add-ons-work/</link>
      <pubDate>Mon, 12 Apr 2010 21:41:48 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/04/How-do-restartless-add-ons-work/</guid>
      <description>&lt;p&gt;I &lt;a href=&#34;https://www.oxymoronical.com/blog/2010/03/Look-Ma-no-restarts&#34;&gt;blogged a short time ago&lt;/a&gt; about how we’re adding support for a new form of add-on to Firefox that can install and uninstall without needing to restart the application. Since then I’ve been finalizing a specification for how the platform will load these add-ons, trying to keep it simple but still give developers everything they commonly need. The &lt;a href=&#34;https://wiki.mozilla.org/Extension_Manager:Bootstrapped_Extensions&#34;&gt;planned specification is now available&lt;/a&gt; and if developers have comments then I’d like to hear them. Currently there isn’t a version of Firefox that implements it but that should change in the next day or so when I make the changes to the add-ons manager project branch and very soon when it all lands on trunk.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How we&#39;re breaking some extensions in the near future</title>
      <link>https://www.oxymoronical.com/blog/2010/03/How-were-breaking-some-extensions-in-the-near-future/</link>
      <pubDate>Fri, 19 Mar 2010 22:09:31 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/03/How-were-breaking-some-extensions-in-the-near-future/</guid>
      <description>&lt;p&gt;You may have read some reports about how we’re re-implementing the bulk of the extension manager in Firefox. It’s been a long running project (something like a year since I first really started planning how to do it). Things are finally started to come together and all being well we are likely to look at landing the first pieces of this on the trunk nightlies in as little as a weeks time. I’ll be up front, this isn’t going to be a perfect landing. There may be some thing that are missing and other bits where the user experience isn’t as perfect as it will be finally. Of course there may also be bugs we have to rush to fix. Despite all this we feel that we’re about at the point where exposing it to the hands of thousands of nightly testers is the best way forward. Your eyes spot things that we miss, even things that may seem obvious to you and you’re vital to us getting these sorts of features polished and really just how they should be before they get released to the world at large in a Firefox release.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Look Ma, no restarts!</title>
      <link>https://www.oxymoronical.com/blog/2010/03/Look-Ma-no-restarts/</link>
      <pubDate>Sun, 14 Mar 2010 22:05:11 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/03/Look-Ma-no-restarts/</guid>
      <description>&lt;figure&gt;&#xA;    &lt;a href=&#34;mac_screenshot.png&#34;&gt;&lt;img src=&#34;https://www.oxymoronical.com/blog/2010/03/Look-Ma-no-restarts/mac_screenshot.png&#34; srcset=&#34;https://www.oxymoronical.com/blog/2010/03/Look-Ma-no-restarts/mac_screenshot_hu_5fbc55e9100f8f00.png, https://www.oxymoronical.com/blog/2010/03/Look-Ma-no-restarts/mac_screenshot.png 2x&#34; style=&#34;width: 600px&#34; alt=&#34;An extension installed without restarting Firefox&#34;&gt;&#xA;    &lt;/a&gt;&lt;figcaption&gt;Look Ma, no restart!&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;This is a screenshot of some of my latest (and most exciting) work on my project to rewrite the extension manager. I’ve just implemented support for a special kind of extension that can install (and uninstall, and enable, disable, upgrade and anything else you can think of) without the user needing to restart Firefox. This is of course to allow add-ons developed on the Jetpack platform to install without restarts but the feature is going to be available to any extension author, there are just some restrictions to how these extensions work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simplifying</title>
      <link>https://www.oxymoronical.com/blog/2010/03/Simplifying/</link>
      <pubDate>Sat, 13 Mar 2010 02:29:49 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/03/Simplifying/</guid>
      <description>&lt;p&gt;The big project that I have been working on for quite some time now is a complete change to the architecture of the add-ons manager backend. It’s a big scary prospect since (IMHO) the code is pretty crucial to the success of Firefox and many other Mozilla based applications. Without extensions I don’t think we’d be where we are today, in fact it was because of extensions that I got involved in the project in the first place.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Broken executables in extensions in Firefox 3.6</title>
      <link>https://www.oxymoronical.com/blog/2010/01/Broken-executables-in-extensions-in-Firefox-36/</link>
      <pubDate>Fri, 22 Jan 2010 18:09:41 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/01/Broken-executables-in-extensions-in-Firefox-36/</guid>
      <description>&lt;p&gt;If you are an extension developer and include executable files in your XPI package (binary or shell scripts) then you may be seeing problems in Firefox 3.6.&lt;/p&gt;&#xA;&lt;p&gt;Back between Firefox 3.6 beta and Firefox 3.6 RC we took a small fix to the extension manager that changed how we extract the files from the XPI package. The fix involved adjusting how we accessed files to avoid hitting problems with certain anti-virus tools that would occasionally lock files in the middle of extraction making us fail to install the add-on. A side effect to this fix leaves us setting file permissions on the extracted files in a slightly different way to previously. This side effect means that the executable permission is getting stripped from all extracted files. If you try to execute these files with &lt;code&gt;nsIProcess&lt;/code&gt; it will likely fail.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Throwing xpcom docs out into the wild</title>
      <link>https://www.oxymoronical.com/blog/2010/01/Throwing-xpcom-docs-out-into-the-wild/</link>
      <pubDate>Tue, 19 Jan 2010 19:50:41 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/01/Throwing-xpcom-docs-out-into-the-wild/</guid>
      <description>&lt;p&gt;It’s been quite some time since I last worked on my prototype &lt;a href=&#34;https://www.oxymoronical.com/experiments/xpcomref/&#34;&gt;XPCOM component/interface viewer&lt;/a&gt; and I have to face facts, it’s likely to be quite some time till I do again. I haven’t even had time to update it with the data from the latest 1.9.2 and trunk interfaces. Since I’m not likely to go anywhere else with this I’d love for someone else who thinks it is worthwhile to pick it up and run with it. I’ve just done a final commit adding a &lt;a href=&#34;http://hg.oxymoronical.com/projects/ApiSlurp/file/tip/README&#34;&gt;README&lt;/a&gt; on how to use the code (though I’m sure it is lacking in key ways so be prepared to have to experiment a bit) and the full source is available in my &lt;a href=&#34;http://hg.oxymoronical.com/projects/ApiSlurp/&#34;&gt;hg repository&lt;/a&gt;. The code is MPL tri-licensed so you should just be able to fork and go do your own thing. I should be able to answer any questions and would love to see it get finished and really usable somewhere.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Do we need extension dependencies?</title>
      <link>https://www.oxymoronical.com/blog/2010/01/Do-we-need-extension-dependencies/</link>
      <pubDate>Thu, 07 Jan 2010 18:50:42 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2010/01/Do-we-need-extension-dependencies/</guid>
      <description>&lt;p&gt;Ever since Firefox 2 we have vaguely supported a form of extension dependency. That is marking an extension as requiring particular versions of another extension.&lt;/p&gt;&#xA;&lt;p&gt;The support is currently very limited and when a user tries to use an add-on that depends on something they don’t have they are pretty much left in the cold. While we tell them it requires something we don’t tell that what it requires or give them any easy way to download and install it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Changing the checkCompatibility preference</title>
      <link>https://www.oxymoronical.com/blog/2009/11/Changing-the-checkCompatibility-preference/</link>
      <pubDate>Fri, 06 Nov 2009 21:31:18 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/11/Changing-the-checkCompatibility-preference/</guid>
      <description>&lt;p&gt;Back in the mists of time I wrote some code to make nightly testers’ lives easier by giving them a simple preference to flip if they wanted to be able to install and use incompatible extensions. It’s been more than three years since then and the use of this preference has grown beyond its original use. It is now something recommended to regular users everywhere from forums to comments in news articles as a way to use their extensions in the new major Firefox releases.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Lightweight themes UI landed</title>
      <link>https://www.oxymoronical.com/blog/2009/09/Lightweight-themes-UI-landed/</link>
      <pubDate>Fri, 18 Sep 2009 22:11:27 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/09/Lightweight-themes-UI-landed/</guid>
      <description>&lt;p&gt;As part of the ongoing work to bring basic support for lightweight themes (based on the ideas from the &lt;a href=&#34;http://www.getpersonas.com/&#34;&gt;Personas&lt;/a&gt; extension) into Firefox 3.6 I’ve today landed the main UI parts that allow users to see and select between lightweight themes they have used recently. Dão &lt;a href=&#34;http://design-noir.de/log/2009/09/basic-support-for-lightweight-theming-landed/&#34;&gt;landed most of the backend&lt;/a&gt; last week but we’re still waiting on the support for &lt;a href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=511771&#34;&gt;installing new lightweight themes&lt;/a&gt; before this feature will be truly usable in the development builds. For the time being here is a shot of what the UI looks like in the add-ons manager after you have used some lightweight themes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Third-party extension installation status</title>
      <link>https://www.oxymoronical.com/blog/2009/09/Third-party-extension-installation-status/</link>
      <pubDate>Sat, 12 Sep 2009 16:04:05 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/09/Third-party-extension-installation-status/</guid>
      <description>&lt;p&gt;I have been remiss in not posting a status update about this in two weeks, but that is mostly because we have unfortunately had to slow down work on this feature. The problem is that a string freeze became necessary for all toolkit code (the code shared with the Firefox mobile browser and where this feature would have lived). Unfortunately this all came up over a small period when I was travelling long distances and having to take time out to satisfy immigration authorities that I wasn’t a terrorist intent on bringing down the U.S. government.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Third-party add-on notification progress, the lite edition</title>
      <link>https://www.oxymoronical.com/blog/2009/08/Third-party-add-on-notification-progress-the-lite-edition/</link>
      <pubDate>Fri, 28 Aug 2009 23:36:12 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/08/Third-party-add-on-notification-progress-the-lite-edition/</guid>
      <description>&lt;p&gt;This week has been the Firefox work week where almost all of the team, including me, made our way to Mountain View. This pretty much means that you spend the entire week in meetings since when you’re remote it can be hard to keep in sync on everything. Of course this means that the amount of coding is pretty low for the week so there isn’t a great deal of progress to report here.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Progress on notifying users about third-party add-ons</title>
      <link>https://www.oxymoronical.com/blog/2009/08/Progress-on-notifying-users-about-third-party-add-ons/</link>
      <pubDate>Fri, 21 Aug 2009 18:28:41 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/08/Progress-on-notifying-users-about-third-party-add-ons/</guid>
      <description>&lt;p&gt;This is a weekly status update on the feature to notify users about add-ons that third-party installers have added to Firefox. You can read more about it in last weeks &lt;a href=&#34;https://www.oxymoronical.com/blog/2009/08/Notifying-users-about-third-party-add-ons&#34;&gt;blog post&lt;/a&gt; or on the &lt;a href=&#34;https://wiki.mozilla.org/Firefox/Projects/System_Extension_Notification&#34;&gt;project wiki&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;status&#34;&gt;Status&lt;/h3&gt;&#xA;&lt;p&gt;There has been little progress this week mostly due to waiting to see whether the &lt;a href=&#34;https://wiki.mozilla.org/Firefox/Projects/Doorhanger_notifications&#34;&gt;doorhanger notifications UI&lt;/a&gt; was going to arrive in time for Firefox 3.6. It looks like it isn’t so instead we are discussing using an in-content page to describe the add-ons that have been installed and allowing users to disable them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Notifying users about third-party add-ons</title>
      <link>https://www.oxymoronical.com/blog/2009/08/Notifying-users-about-third-party-add-ons/</link>
      <pubDate>Fri, 14 Aug 2009 21:48:52 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/08/Notifying-users-about-third-party-add-ons/</guid>
      <description>&lt;p&gt;You may have noticed many of the Firefox team starting to blog progress reports on Fridays. This is a part of our new plan to clearly define the &lt;a href=&#34;https://wiki.mozilla.org/Firefox/Projects&#34;&gt;main projects&lt;/a&gt; we are all working on and communicate a much as possible about them rather than just having users surprised to see them turn up in nightlies. So here is my report for this week:&lt;/p&gt;&#xA;&lt;p&gt;I’ve been working on improving the level of information and control we give users over add-ons installed by other applications on the system (think Skype, Java, AV tools etc.). The work for this is being tracked in &lt;a href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=476430&#34;&gt;bug 476430&lt;/a&gt; and on the &lt;a href=&#34;https://wiki.mozilla.org/Firefox/Projects/System_Extension_Notification&#34;&gt;project wiki&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bumper XULRunner release day!</title>
      <link>https://www.oxymoronical.com/blog/2009/07/Bumper-XULRunner-release-day/</link>
      <pubDate>Wed, 22 Jul 2009 18:42:41 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/07/Bumper-XULRunner-release-day/</guid>
      <description>&lt;p&gt;Thanks to the hard work of Nick Thomas and Lukas Blakk, today I can announce the availability of two new official releases of the XULRunner runtime and &lt;a href=&#34;https://developer.mozilla.org/en/Gecko_SDK&#34;&gt;SDKs&lt;/a&gt;. &lt;a href=&#34;https://developer.mozilla.org/en/XULRunner_1.9_Release_Notes&#34;&gt;XULRunner 1.9.0.12&lt;/a&gt; is a maintenance release for the 1.9.0 branch (the code that matches Firefox 3.0.x). &lt;a href=&#34;https://developer.mozilla.org/En/XULRunner_1.9.1_Release_Notes&#34;&gt;XULRunner 1.9.1&lt;/a&gt; is the first official release of XULRunner on the 1.9.1 branch (which matches the code in Firefox 3.5.x). Unfortunately we’re not quite at the point of shipping XULRunner releases at the same time as Firefox 3.5.x releases, but we should have a 1.9.1.1 release soon.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Where is XULRunner 1.9.1?</title>
      <link>https://www.oxymoronical.com/blog/2009/07/Where-is-XULRunner-191/</link>
      <pubDate>Wed, 08 Jul 2009 19:49:04 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/07/Where-is-XULRunner-191/</guid>
      <description>&lt;p&gt;A question I have been hearing quite a bit on IRC since Firefox 3.5 was released. We don’t quite have the build automation set up to do XULRunner 1.9.1 releases at the same time as Firefox yet, but Nick has been awesome and manually spun some release candidates. These should be pretty much good to go but it would be useful if anyone interested could try them out and report on any serious problems they see. Either just comment here or file a bug and mark it blocking &lt;a href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=502915&#34;&gt;bug 502915&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Moar xpcom docs!</title>
      <link>https://www.oxymoronical.com/blog/2009/07/Moar-xpcom-docs/</link>
      <pubDate>Sun, 05 Jul 2009 17:57:03 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/07/Moar-xpcom-docs/</guid>
      <description>&lt;p&gt;While many of you were out blowing things up over the weekend I spent a few days varying between getting quite a bit done and banging my head against my desk in frustration.&lt;/p&gt;&#xA;&lt;p&gt;First I updated the &lt;a href=&#34;https://www.oxymoronical.com/experiments/apidocs/&#34;&gt;XPCOM interface lists&lt;/a&gt; that I have been working on with the final release version of Gecko 1.9.0. A few people had asked me for it but I had hit upon the problem that I had lost some of the arcane scripts that I was using to gather the data and so I had to rebuild them first. I have dropped information about the beta versions of 1.9.1 now, just because it was less work that way, if people desperately want them back then I can probably do it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Farewell contents.rdf</title>
      <link>https://www.oxymoronical.com/blog/2009/06/Farewell-contentsrdf/</link>
      <pubDate>Thu, 11 Jun 2009 13:09:17 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/06/Farewell-contentsrdf/</guid>
      <description>&lt;p&gt;This is mainly of interest to add-on and application developers and I should stress from the outset that this is talking about changes in Gecko 1.9.2 which will first be released in whatever version of Firefox comes in 6-12 months time. Firefox 3.5 is unaffected by this change.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-was-it&#34;&gt;What was it?&lt;/h2&gt;&#xA;&lt;p&gt;Contents.rdf was the old way of performing &lt;a href=&#34;https://developer.mozilla.org/En/Chrome_Registration&#34;&gt;chrome registration&lt;/a&gt; for add-ons. It was replaced by chrome.manifest back in the mists of time in Gecko 1.8 and Firefox 1.5 (back in 2005 as it happens). We’ve continued to support reading contents.rdf for those developers who hadn’t had the chance to make the switch but after 4 years it seems time to remove that support and clean up the code that dealt with it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Improving the add-on install experience</title>
      <link>https://www.oxymoronical.com/blog/2009/06/Improving-the-addon-install-experience/</link>
      <pubDate>Wed, 03 Jun 2009 09:44:13 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/06/Improving-the-addon-install-experience/</guid>
      <description>&lt;p&gt;Add-on developers face a bit of a challenge when it comes to helping users get the most out of their add-ons. Even once you are past the first hurdle and have got a user to install the add-on, you then need to help them get up and running quickly after Firefox has restarted. Presented with just the blank Firefox window it can be difficult for a user to know where to go next. Many add-on developers have taken to including a first-run experience to give the user some help. Display a webpage with some instructions or open a wizard to start setting up. As this practice started it was generally acceptable. Few add-ons actually did anything so it was helpful. These days though many add-ons are doing it, no doubt with more to come. It is starting to be an annoyance in some cases. Others have already &lt;a href=&#34;http://blog.fligtar.com/2008/10/16/responsible-first-run-usage/&#34;&gt;been discussing&lt;/a&gt; ways that we can improve this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why change is hard</title>
      <link>https://www.oxymoronical.com/blog/2009/05/Why-change-is-hard/</link>
      <pubDate>Mon, 11 May 2009 10:56:21 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/05/Why-change-is-hard/</guid>
      <description>&lt;p&gt;This is really not the ideal set of interactions between the extension manager and its related components. Unfortunately changing it is going to be hard.&lt;/p&gt;&#xA;&lt;figure&gt;&#xA;    &lt;a href=&#34;reality.png&#34;&gt;&lt;img src=&#34;https://www.oxymoronical.com/blog/2009/05/Why-change-is-hard/reality.png&#34; style=&#34;width: 504px&#34; alt=&#34;Extension manager inter-dependencies&#34;&gt;&#xA;    &lt;/a&gt;&lt;figcaption&gt;interdependencies&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Unfortunately adding any new features is also pretty hard until at least some of these dependencies are broken.&lt;/p&gt;</description>
    </item>
    <item>
      <title>XULRunner 1.9.2a1pre builds also available</title>
      <link>https://www.oxymoronical.com/blog/2009/03/XULRunner-192a1pre-builds-also-available/</link>
      <pubDate>Sat, 28 Mar 2009 01:23:34 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/03/XULRunner-192a1pre-builds-also-available/</guid>
      <description>&lt;p&gt;Just as I’ve made some &lt;a href=&#34;https://www.oxymoronical.com/blog/2009/03/XULRunner-191b3-builds-get-them-while-theyre-hot&#34;&gt;1.9.1b3 builds&lt;/a&gt; I’ve spun some builds based on the latest trunk. Feel free to use these to see how things are shaping up with the bleeding edge Mozilla code. Obviously it is pre-alpha so not for productions.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Windows &lt;a href=&#34;https://people.mozilla.com/~dtownsend/builds/xulrunner/1.9.2a1pre/xulrunner-1.9.2a1pre.en-US.win32.zip&#34;&gt;runtime&lt;/a&gt; &lt;a href=&#34;https://people.mozilla.com/~dtownsend/builds/xulrunner/1.9.2a1pre/xulrunner-1.9.2a1pre.en-US.win32.sdk.zip&#34;&gt;sdk&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Linux &lt;a href=&#34;https://people.mozilla.com/~dtownsend/builds/xulrunner/1.9.2a1pre/xulrunner-1.9.2a1pre.en-US.linux-i686.tar.bz2&#34;&gt;runtime&lt;/a&gt; &lt;a href=&#34;https://people.mozilla.com/~dtownsend/builds/xulrunner/1.9.2a1pre/xulrunner-1.9.2a1pre.en-US.linux-i686.sdk.tar.bz2&#34;&gt;sdk&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Mac OSX &lt;a href=&#34;https://people.mozilla.com/~dtownsend/builds/xulrunner/1.9.2a1pre/xulrunner-1.9.2a1pre.en-US.mac-pkg.dmg&#34;&gt;universal runtime&lt;/a&gt; &lt;a href=&#34;https://people.mozilla.com/~dtownsend/builds/xulrunner/1.9.2a1pre/xulrunner-1.9.2a1pre.en-US.mac-i386.sdk.tar.bz2&#34;&gt;i386 sdk&lt;/a&gt; &lt;a href=&#34;https://people.mozilla.com/~dtownsend/builds/xulrunner/1.9.2a1pre/xulrunner-1.9.2a1pre.en-US.mac-powerpc.sdk.tar.bz2&#34;&gt;ppc sdk&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>XULRunner 1.9.1b3 builds, get them while they&#39;re hot</title>
      <link>https://www.oxymoronical.com/blog/2009/03/XULRunner-191b3-builds-get-them-while-theyre-hot/</link>
      <pubDate>Fri, 27 Mar 2009 18:20:49 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/03/XULRunner-191b3-builds-get-them-while-theyre-hot/</guid>
      <description>&lt;p&gt;In the process of switching from CVS to Mercurial (and behind the scenes Tinderbox to Buildbot), quite a lot of Mozilla’s build and release systems have had to be updated. Sadly one of the casualties that has yet to be resuscitated are nightly builds of XULRunner on the 1.9.1 branch and trunk. Catlee is now doing some &lt;a href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=445191&#34;&gt;excellent work&lt;/a&gt; to get these up and running, but until that gets going here are some semi-official builds using the code matching Firefox 3.1b3. I say semi-official, they were built on regular build slaves using the standard configuration, but just done by hand. I also haven’t tested all of them yet so let me know if you hit any issues, they might be good indicators of issues we’ll see with the nightlies.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing the background update checks</title>
      <link>https://www.oxymoronical.com/blog/2009/03/Testing-the-background-update-checks/</link>
      <pubDate>Thu, 19 Mar 2009 13:02:36 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/03/Testing-the-background-update-checks/</guid>
      <description>&lt;p&gt;Firefox does a fair number of things in the background to help keep things up to date. This includes checking for updates to Firefox itself, checking for updates to add-ons you have installed and checking for updates to a blocklist that disables known unstable add-ons. Normally it does these things quite happily, but for developers and QA, trying to verify that these background tasks are doing what they are supposed to can be annoying. After all who wants to leave Firefox running for a day just to see if it finds a new update?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Brussels bound</title>
      <link>https://www.oxymoronical.com/blog/2009/02/Brussels-bound/</link>
      <pubDate>Wed, 04 Feb 2009 11:12:57 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/02/Brussels-bound/</guid>
      <description>&lt;p&gt;This weekend is &lt;a href=&#34;http://fosdem.org/2009/&#34;&gt;FOSDEM 2009&lt;/a&gt; and I’m actually managing to attend this year. It’s kind of weird, I keep doing all this travelling to the states yet I end up having to miss all the awesome stuff that goes on in Europe for various reasons (often because I am all travelled out from the states). But I’m going to be at FOSDEM even if it kills me, which considering the snow on the roads and serious travelling I have over the next few months is a possibility. Thankfully the jetlag from Europe is a lot easier to recover from.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated Interface lists</title>
      <link>https://www.oxymoronical.com/blog/2009/01/Updated-Interface-lists/</link>
      <pubDate>Thu, 29 Jan 2009 17:27:08 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/01/Updated-Interface-lists/</guid>
      <description>&lt;p&gt;I’ve generated a new database for my interface listing webapp so you can now see the current state of the 1.9.1b3pre and 1.9.2a1pre platforms. So for all you extension developers getting ready for the Firefox 3.1b3 release maybe you want to see what has changed &lt;a href=&#34;https://www.oxymoronical.com/experiments/apidocs/compare/platform/1.9.1b3pre/1.9.1b2&#34;&gt;since 3.1b2&lt;/a&gt;? Or &lt;a href=&#34;https://www.oxymoronical.com/experiments/apidocs/compare/platform/1.9.1b3pre/1.9.0.0&#34;&gt;since 3.0&lt;/a&gt;?&lt;/p&gt;&#xA;&lt;p&gt;There are still more things I want to do with this web-app, but right now my time is being spent elsewhere so for now I’ll just keep it up to date with the beta releases. Once 3.1 final is released I’ll likely remove all the beta versions since they probably won’t be necessary then.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Zooming along, hopefully as fast as before</title>
      <link>https://www.oxymoronical.com/blog/2009/01/Zooming-along-hopefully-as-fast-as-before/</link>
      <pubDate>Wed, 14 Jan 2009 19:43:14 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2009/01/Zooming-along-hopefully-as-fast-as-before/</guid>
      <description>&lt;p&gt;I’ve just landed a fix to &lt;a href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=386835&#34;&gt;a bug&lt;/a&gt; that has irritated me ever since page zoom started getting remembered for sites. It fixes a real problem you find if you both use zoom a fair bit, and load pages in background tabs. When you finally decide to look at that tab there is this little pause (or long pause if the page is large) and sometimes a visual jump as it re-zooms the content. It also changes where the page is scrolled to which is very irritating if you have just clicked a link to a specific line in some source code for example.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What is the most useful way to present interface lists?</title>
      <link>https://www.oxymoronical.com/blog/2008/12/What-is-the-most-useful-way-to-present-interface-lists/</link>
      <pubDate>Mon, 01 Dec 2008 22:30:51 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2008/12/What-is-the-most-useful-way-to-present-interface-lists/</guid>
      <description>&lt;p&gt;I’ve just rolled out a small update to the &lt;a href=&#34;https://www.oxymoronical.com/experiments/apidocs/&#34;&gt;interface cross reference&lt;/a&gt;, nothing major, just fixing a few bugs and I’ve put up what looks like the final set of interfaces for 1.9.1b2.&lt;/p&gt;&#xA;&lt;p&gt;I’ve now figured out the best way to gather the interface lists and so the cross reference now includes all interfaces used in all 3 major platforms of Firefox. It is relatively simple for me to add the interfaces for other applications now but this got me thinking about what kind of uses people are making of this and how the multi-OS, multi-app interfaces should be presented. A few ideas came to mind:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Improving the API references</title>
      <link>https://www.oxymoronical.com/blog/2008/11/Improving-the-API-references/</link>
      <pubDate>Sun, 16 Nov 2008 13:21:01 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2008/11/Improving-the-API-references/</guid>
      <description>&lt;p&gt;I forgot to add to my &lt;a href=&#34;https://www.oxymoronical.com/blog/2008/11/API-reference-updates&#34;&gt;last post&lt;/a&gt; some information about what I currently had in mind to improve about the &lt;a href=&#34;https://www.oxymoronical.com/experiments/apidocs/&#34;&gt;API reference&lt;/a&gt; I’ve been working on. Any further suggestions people have are very welcome, but here is the current few ideas I have.&lt;/p&gt;&#xA;&lt;p&gt;Currently it only indexes Firefox and Gecko interfaces, in fact it only indexes those used by an OSX build of Firefox. It would be nice to be able to index interfaces for all the main applications and for all the platforms. There are a couple of issues with this. Firstly I’d want the UI to work so people viewing it could select what set of interfaces they wanted to see. Secondly actually building the lists of interfaces for each application and OS is going to be pretty tricky I think. So far I’ve resorted to building Firefox then looking in dist/idl. This works but it is time consuming. Possibly I might be able to come up with some clever nonsense to make the build system only compile idls but we’ll see.&lt;/p&gt;</description>
    </item>
    <item>
      <title>API reference updates</title>
      <link>https://www.oxymoronical.com/blog/2008/11/API-reference-updates/</link>
      <pubDate>Sat, 15 Nov 2008 20:29:20 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2008/11/API-reference-updates/</guid>
      <description>&lt;p&gt;Since my &lt;a href=&#34;https://www.oxymoronical.com/blog/2008/10/Finding-API-Changes&#34;&gt;first announcement&lt;/a&gt; about my little &lt;a href=&#34;https://www.oxymoronical.com/experiments/apidocs/&#34;&gt;api reference tool&lt;/a&gt; I’ve slowly been working on updates to make it more useful and easier to navigate around. I’ve now gone and pushed the latest version live. A few of the new features:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The main and platform lists of interfaces are split by the module where the interface lives.&lt;/li&gt;&#xA;&lt;li&gt;Interface lists have a quick filter box, type in it to filter the list quickly.&lt;/li&gt;&#xA;&lt;li&gt;Any interfaces used as return types or parameters are now links to get you straight to the information about them.&lt;/li&gt;&#xA;&lt;li&gt;Full IDL support so it now lists all the special attributes and for the uninitiated they have tooltips that explain what they mean.&lt;/li&gt;&#xA;&lt;li&gt;You can now list all usage of an interface by other interfaces.&lt;/li&gt;&#xA;&lt;li&gt;Constants are ordered the same as in the source IDL since they tend to make more sense that way.&lt;/li&gt;&#xA;&lt;li&gt;Includes direct links to the source IDL file.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I’ve also updated the database with the latest APIs in 1.9.1b2pre and as soon as 1.9.1b2 is frozen I’ll update it again just to be sure it has the latest versions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Planning for the future</title>
      <link>https://www.oxymoronical.com/blog/2008/10/Planning-for-the-future/</link>
      <pubDate>Tue, 28 Oct 2008 16:24:26 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2008/10/Planning-for-the-future/</guid>
      <description>&lt;p&gt;For some time now I’ve been &lt;a href=&#34;https://www.oxymoronical.com/blog/2008/04/Whats-the-Future-for-Add-ons-Management&#34;&gt;throwing&lt;/a&gt; &lt;a href=&#34;https://www.oxymoronical.com/blog/2008/08/Add-ons-Manager-session-notes&#34;&gt;around&lt;/a&gt; ideas for new features that we may want for the add-ons manager. After lots of thought and trying to take on board comments from anyone that would pipe up I decided it was high time to put together an actual plan for what features I have decided should be pursued and what order to start tackling them.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://wiki.mozilla.org/Extension_Manager:Future_Work&#34;&gt;The roadmap&lt;/a&gt; itself should be pretty self explanatory, just remember that nothing is ever set in stone. I’ll try to keep it updated as things change, features seem less important or new items are added. But for now this is how I see the add-ons manager evolving over the course of about the next year or so, which may be the next two versions after Firefox 3.1.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Finding API Changes</title>
      <link>https://www.oxymoronical.com/blog/2008/10/Finding-API-Changes/</link>
      <pubDate>Fri, 24 Oct 2008 20:07:51 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2008/10/Finding-API-Changes/</guid>
      <description>&lt;p&gt;I started a small discussion on the newsgroups the other day wondering about the numbers of API changes that had landed on trunk since 1.9.0. It was a short discussion, maybe partly because all I had to go on were the vague metrics that mercurial could give me. It also evolved a little into a discussion of how add-on developers we’re meant to find out about API changes. It’s true that as developers we are getting better at trying to announce our changes as much as possible, but inevitably we miss some, and if you don’t track the announcements what then?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Frustration</title>
      <link>https://www.oxymoronical.com/blog/2008/10/frustration/</link>
      <pubDate>Tue, 21 Oct 2008 18:07:02 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2008/10/frustration/</guid>
      <description>&lt;p&gt;For a while now I’ve been in a bit of a rut. I knew I was there I just hadn’t quite got the motivation to pull myself out of it. It wasn’t such a bad place to be, but the difference of being just ok with the way things are going and being exactly where you want to be and with the people you want to be with is a pretty large one. I’ve been exceptionally lucky that over the last few months a bunch of things have happened that will help take me to where I want to go and start some new and exciting changes in my life.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why 2 SDKs are better than 1</title>
      <link>https://www.oxymoronical.com/blog/2008/04/Why-2-SDKs-are-better-than-1/</link>
      <pubDate>Thu, 10 Apr 2008 19:30:42 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2008/04/Why-2-SDKs-are-better-than-1/</guid>
      <description>&lt;p&gt;In the past the Gecko SDK was somewhat limited. You could compile against it, but only if you were using frozen components, of which there are exceptionally few. You can build an application with only them, but I’d be startled if any moderately complicated app or extension gets by with only them. Thankfully this has changed for 1.9 and the new style SDK contains all interfaces and headers, frozen and unfrozen. This gives you access to lots more, though has the minor disadvantage that you have to keep an eye on what you are using as it could break in the future.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mac Intel Gecko SDK</title>
      <link>https://www.oxymoronical.com/blog/2007/05/Mac-Intel-Gecko-SDK/</link>
      <pubDate>Sun, 13 May 2007 22:38:37 +0000</pubDate>
      <guid>https://www.oxymoronical.com/blog/2007/05/Mac-Intel-Gecko-SDK/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Mozilla now produce &lt;a href=&#34;https://developer.mozilla.org/en/Gecko_SDK&#34;&gt;intel gecko SDK&lt;/a&gt;s so there is no need to use the version I have put here, I’ll leave it for posterity though.&lt;/p&gt;&#xA;&lt;p&gt;It’s currently a bit of a pain building xpcom components in intel macs. The only officially available sdk is ppc only. Until Mozilla come up with an official version, here is an intel build of it for those that want it: &lt;a href=&#34;https://www.oxymoronical.com/files/gecko-sdk-mac-intel-1.8.1.3.zip&#34;&gt;gecko-sdk-mac-intel-1.8.1.3.zip&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;As the name suggests it’s built against Gecko 1.8.1.3. To the best of my knowledge it’s right but please don’t bug me if you can’t get your component to work with it unless you’re pretty positive that it’s the sdk that’s wrong.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
