Sorry about the server outage · 2012-11-23 14:20 by Wladimir Palant
Following the Adblock Plus 2.2 release yesterday our server became pretty much unreachable. This was the result of the new typo correction feature downloading its database. Unfortunately, while I was very focused on ensuring that this feature has the necessary quality I entirely forgot what this one server request per user would mean for our old server which cannot really handle much load. A new server with much more resources is handling this now but that change still took a day to propagate. Sorry about that, again a lesson learned.
Typo correction feature in Adblock Plus · 2012-11-21 16:40 by Wladimir Palant
Lots of Adblock Plus users were complaining about unintentionally landing on web pages that tried to use their mistake by either showing ads to them or even by installing malware. We heard you and thought up a way to fix that. A few months ago we took over the development of the URL Fixer extension and made some substantial improvements. Now this functionality is ready for prime time and has been added to Adblock Plus 2.2.
Translating Adblock Plus: Dumping Babelzilla for Crowdin · 2012-11-09 13:40 by Wladimir Palant
Removing Do-Not-Track support from Adblock Plus · 2012-10-27 01:10 by Wladimir Palant
I still believe that the Do-Not-Track proposal is the most promising idea to let users opt out of tracking, it offers some value even to the people using Adblock Plus with the EasyPrivacy filter list. The proposal gained a lot of traction already and will continue to gain speed. Adblock Plus was one of the first implementors, and yet I decided that this feature is no longer worth keeping.
Modularization in a restartless extension · 2012-07-12 17:21 by Wladimir Palant
A simple restartless extension can probably keep all its code in the
bootstrap.js file. However, it gets crowded there very soon. Plus there is some code that is really only boilerplate and should probably kept separate from your actual code.
bootstrap.js file or add cleanup code each time you load a module. I find neither approach very compelling.
Why you should make your next add-on restartless · 2012-07-12 14:18 by Wladimir Palant
Note: This article is not about extensions based on the Add-on SDK (Jetpack). You don’t have to use the SDK to create a restartless extension. Just wanted to point this out explicitly to avoid confusion.
An extension that will install without requiring a Firefox restart? This was a nightmare to develop not too long ago. Fortunately, things changed and the last showstopper bug was fixed in Firefox 8. Effort to create a restartless (or bootstrapped as it is called officially) extension is acceptable now. In fact, I have converted all my extensions and removed support for classic non-restartless extensions from my build tools — I am certain that I am not going back.
Where did the Adblock Plus unit tests go? · 2012-06-23 17:13 by Wladimir Palant
You probably asked yourself already what happened to the Adblock Plus unit tests. What? You didn’t? You don’t even know what unit tests are? Oops… Sorry about having bothered you. I guess nobody is reading past this point but I just have to explain it nevertheless.
Closed my LinkedIn account · 2012-06-08 16:30 by Wladimir Palant
Preventing background tabs from wasting your computer's resources · 2012-05-12 13:27 by Wladimir Palant
Taras recently blogged on how websites manage to ruin Firefox performance by continuing to do something even though their tab is no longer active — they keep updating the view that you cannot see. He wondered whether it would be possible to suspend these tabs from an extension. I looked into this and there is a way to suspend all timeouts for a tab — something that an extension could use. Getting the details right wasn’t quite trivial but I think that my extension gets it right now: Suspend background tabs. Enjoy!
Using asynchronous file I/O in Gecko · 2012-04-05 20:38 by Wladimir Palant
I’ve finally decided to start using asynchronous file I/O in Adblock Plus (probably about time). I didn’t expect this to be too complicated, mostly messy because of all the callbacks. Well, I was mistaken. I will write down what I figured out, this might help somebody.