Older blog entries for noda (starting at number 29)

Wow, it looks like I'm on the Top 250 Bug Closers list. I still find it awesome to see my name in GNOME-related credits.

Of course, crispin, chpe and marco -- the three biggest voices on #epiphany -- are all among the top 15. xan and spark kicked my ass, too. But I'm not complainin' :).

Spent about 8 hours on one bug... but the end result is that Epiphany supports Python extensions. Including the Python Console extension.

It rocks so much it's hard to put into words.

When people's cell phones ring, I usually am not phased too much, since mine could do the same at any time.

However, today my phone rang just one time too many. After hanging up, I decided it was the last time. My phone, which by then had achieved an uptime longer than my web server's (which has 114 days), is now off. And it's going to stay that way for a while.

It's simple, really: I dread the phone. Every time I get a call I just look at the call display and shudder. Why bother? I'm going to enjoy a nice, peaceful birthday and then I'll just pick up all the encouraging messages from my voice mail in a day or two.

Whew, right on the heels of Epiphany 1.5.1 (with Christian and my new Extensions Manager Extension -- lets you load/unload extensions on the fly!) comes Evolution's Plugin Manager Plugin. Coincidence? Maybe. But I'm tempted to strive for some UI consistency among them.

First of all, the naming scheme is different. We use "extension" because "plugin" is already used for Flash & co., and because Mozilla uses "extension" (for the same reason, no doubt). I guess that makes us screwed from Step 1.

After that, I noticed in Evolution that the name, id and path are displayed alongside the extension. We on #epiphany figured that was unnecessary detail.

Lastly, the plugin information is displayed on the same window as the treeview. I coded the extensions manager to show plugin information on double-click. I don't know which is better, but we should certainly put information on the bottom of the treeview instead of the side.

And in case anybody actually reads my blog: you must realize that Epiphany is now great. The extensions manager work has been truly fantastic and we have some great extensions to complement it (sidebar, error viewer, mouse gestures, ...).

Not only that, but all our extensions can be loaded or unloaded at any time. We enforce this by simply not allowing extensions to work any other way ;). This presents problems with some aspects of Mozilla: the sidebar extension has had some problems, and my adblock extension simply will not load or unload properly while Epiphany is running. In my opinion it's better to fix these problems where they exist instead of working around them with a "deferred load/unload" solution.

Evolution 1.6 will be great. I really hope it'll become default browser on Ubuntu or Fedora Core 3: while it doesn't have the same publicity as Firefox, it really does cater to these distributions' target users better than Firefox does.

I wrote a Quit extension for Epiphany. Took me all of maybe 45 minutes.

I'm planning on updating the "Writing Epiphany Extensions" guide. There have been a few nice changes in the Epiphany source code which should be reflected in the guide: slots for attach/detach of tabs, XML extension descriptions, and toolbar buttons spring to mind.

Along the same line, I think I'll create a new script similar to my (little-known) copy-template script. It'll create a new standalone Epiphany extension -- just add code! (The copy-template script creates a new subdirectory in epiphany-extensions/extensions -- great for *us* but I imagine a large part of the guide's target demographic doesn't care).

Birthday coming up. How fucking depressing.

Whee. There's now an Adblock extension for Epiphany. Simply takes a list of patterns (* and ? recognized, with g_pattern_match()) in a single text file, and prevents Mozilla from ever downloading the files. Works splendidly.

Possible enhancements: FAM monitoring of the file, to update blocks on-the-fly; a UI to edit blocks (I'm tempted to just make it open the text file); regular expressions support from libegg; UI enhancements ("block ads from [host]..." on right-click)...

However, as useful as Firefox's AdBlock extension is, it's a perfect example of utter bloatware. I don't want to go down that path; so besides FAM, I'm not sure if I want to put anything else in.

But I ought to port it back to Epiphany 1.4, so I can actually use it before another 6 months go by.

I shoulda coded that extension ages ago. 4-5 hours of work... I'm getting good at extension-writing! There's still improvement to be done on the system itself though.

I started porting Galeon's "Page Info" dialog to an Epiphany extension. Crispin (the Great Galeon Hacker) helped me understand a couple of details, and Christian (the Great Epiphany Hacker) persuaded me to make the "General" tab look nicer.

I used to hate Glade (its UI is pretty lousy), but I think I'm getting used to it now.

Anyway, Christian restructured it after I'd ported over "General" and "Images". Then I added "Links". So the extension has 3 of 5 tabs now. Not bad for about 10 man-hours of work.

The Page Info extension will most likely be in epiphany-extensions 1.4.0, which will be released in sync with Epiphany 1.4.0. Rockin'.

Even cooler, though, is the patch I've got which lets you load/unload extensions as Epiphany is running. There's no UI frontend (it uses GConf) and I coded it way too late for 1.4.0. But it's gonna be great: in 1.6.0, the user can specify which extensions to load. Now... if only Marco would review it!

If you hear this beep, I am alive.


20 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!