Monthly Archives: July 2009

Firefox Personas

Does anybody reading this remember Hotbar for IE 5 and 6? Remember how it came with dozens and dozens of adware and spyware apps. For anyone who doesn’t remember this was back when Bonzi Buddy spoke to us to distract you from the fact he was tracking everything you did online. When anybody who was somebody had a Geocities pages and was ‘programming’ in HTML. When marquees scrolled past and all Javascript did was make flashy pictures follow your cursor around. Yes that’s right I’m talking about the Web 1.0 days.

Firefox Persona LogoPersonas for Firefox does essentially what Hotbar did for IE, except it doesn’t pollute your PC with all sorts of nefarious software. This comparison isn’t quite fair though. Personas has drawn on the experiences of Web 2.0 to provide a simpler immersive themed atmosphere.

A Persona is an extremely simple way to theme your browser. There are five parts that make up a Firefox Persona. The header image is shown behind the menu bar, the navigation toolbar, the bookmarks toolbar and any other toolbars you have up the top. You set it as a 3000x200pixel image. The footer (a 3000x100px image) is shown behind the status bar and if show the search bar. You also set a text colour and an accent colour for any text that will be shown in front of your backgrounds. Finally you set a name for your theme as you upload it to Mozilla.

The best thing Personas has over themes is that you don’t have to restart Firefox in order to apply them. This leads to some especially neat features, for example while browsing for a new persona for your browser when you mouse over a persona it gets applied as a preview. This means effectively when you are looking for themes you get to see exactly what they’ll looks like before you pick them. You can get Personas from Mozilla labs, or at its dedicated website. Also see Mozilla’s blog post about Personas.

Random Thought: The Linux kernel must have a bad heart, every time it panics it dies.

SystemTap

SystemTap is the Linux analogy to Solaris DTrace and is similar to the strace command, only much much more powerful. It effectively lets you set breakpoints in the kernel to monitor what your applications are doing. For example if I was worried that some application I’d written was polling way too often, I could ask SystemTap to output the number of times my application calls poll() or select().

To use SystemTap first you write a simple script, or borrow one from someone else. On a Fedora system you’ll fine some sample scripts in /usr/share/doc/systemtap-0.9.8/examples provided you have SystemTap installed. You then run the stap; command. The stap command immediately begins parsing the scipt looking for any tapsets that your script uses and if it does it includes them. It then converts your script into C code and compiles it into a kernel module. This kernel module is inserted into the running kernel and stap attaches to it. The kernel module stays in the kernel until it is cancelled by the user, it reaches an exit function or it encounters too many errors.

While SystemTap can be used to simply dump loads of data about what an application is doing in kernel space that is not its purpose. SystemTap scripts are able to drill down, extract, process and format the data its gathering. For example if you were trying to find out what files a process was writing to your disks could just output every single write call and print it out, or you could keep the statistics and every ten seconds print the top ten files written to. SystemTap is designed to help you filter out all the noise and monitor only what you want to monitor.

The simple way to get started with SystemTap is to download the Beginners guide or the Tutorial. On Fedora systems when you install SystemTap you’ll find the tutorial at /usr/share/doc/systemtap-0.9.8/tutorial.pdf. SystemTap skills are handy for system administrators and developers, so if you fit into those categories I’d highly recommend you check it out.

Random Thought: Where does /dev/zero come from and where does /dev/null go? What happens if you pipe /dev/zero to /dev/null?

The New Google Reader

This morning Google announced some new features for Google Reader. These features make Reader feel like a social networking website. I think Google is taking an interesting approach to social networking. They’re refitting all their existing products to include social features. It still feels a little separate though. There isn’t a feel of congruency across all the applications.

You can now decide who sees your shared items, and who can comment on them. I don’t see this as a feature I’d likely use as everything I share is already on the web and if I block people from seeing it on my shared items then they can just find it elsewhere. I have a feeling that Google did this to fight off the hordes of people yelling loudly about privacy lately.

Google Reader now displays information from your profile and a link to your fully profile at the top of your shared items page. What you can store on your Google Profile appears akin to what you can store on other social networking sites. A link to your profile is kind of a different approach to social networking. Sites likRSS Feed Icone Facebook and MySpace focus on your profile and links to other features. Google’s approach seems to be to add social features to all their applications and link that to a profile. This approach seems to me to be the best way to muscle in on the social networking scene.

Google Reader now includes a button to ‘like’ a post. This is the most controversial features as it adds an extra line to the post and takes up a fair bit of screen real estate. I don’t notice it taking up too much space, that could either be due to the fact I’m used to having a small screen on my laptop and on my desktop my monitor is big enough for me to not notice. I think the idea is great, you can easily find people who like the same things you do and follow them. The only issue i have with it right now is that everyone is clicking like on everything and there are way too many people to sort through to find somebody with similar interests.

This is an interesting approach for Google, but i believe it will pay off. Google is creating a social network that isn’t about having friends or getting the most views. Google’s social network is about people similar to you and things you like.

Random thought: Punishment in real life: You perform an illegal operation and you go to jail, Punishment in computing: You perform an illegal operation and you get killed.

The Truth Will Shock and Amaze You!

Pick the correct headline:

  • Meteorologists Determine That Hell Has Frozen Over
  • Scientists Genetically Engineer a Pig Capable of Flight
  • Microsoft Releases 20,000 Lines of GPL code to the Linux Kernel

if you know the subject matter of this blog, or read what category this post is in then you’ve most likely figured it out already. Its true, Microsoft today offered a total of 20,000 lines of code. The code, containing three device drivers related to virtualisation, has been submitted for inclusion into the kernel.

This is hard for some people to understand, indeed some Linux users are so entrenched in their hate of Microsoft that they are calling this as a bad thing. I don’t think people should be dismissing this so quickly. While Microsoft hasn’t been entirely friendly towards Linux in the past, this represent a substantial shift in their behaviour. Its things like this and the Community Promise that gives me hope of a world where Windows and Linux can coexist.

Random Thought: They say: β€œLinux is only free if your time is worthless.” and I say “Windows is only free if your money is worthless”

Edit (23/07/2009): Infoworld has a good writeup about Red Hat’s reaction to the news.

The Windows Registry vs Gconf

I often hear people attacking GNOME and Linux because of the claim that they’ve emulated the Windows Registry in Gconf. While this looks to be true at first glance, looking a bit deeper reveals many differences that make the two into completely separate entities. Both GConf and the Registry have their own advantages and drawbacks.

Windows Registry

The Windows Registry was added in Windows 95 to replace .INI files that Windows 3.1 applications would often use. These .INI files would be littered all over the filesystem in whatever location their application decided to put them. .INI files were easy to edit. Requiring only a text editor they could be edited in both DOS and Windows. The Registry was created to keep all the system settings in one place. Before it was released the APIs were made public so that any application could store its data along with all the system data in one common place.

This seemed like a great idea. No longer did you have to go searching to look for the settings for any particular application. Simply open up Registry Editor browse to your applications keys and edit away, unless you accidentally hit some system setting. Because system settings are stored right next to application settings changes to the Windows Registry could render the system unable to boot. This is why you see all those disclaimers on any tutorials involving the Windows Registry.

The Windows Registry is stored in a binary form. This makes it quick to load but limits its flexibility. After a Windows system fails to boot it will ask you if you want to boot with the last known good settings. This basically uses a backup of the Registry made at the last boot-up, where the settings are known to be correct. Not attempt to edit it can be made without a graphical environment and your only option is to roll back to a backup.

GNOME Gconf

On the surface Gconf appears to emulate the Windows Registry. Both gconf-editor and the Windows Registry Editor look very similar, and indeed operate in practically the same way. They’re both a collection of keys and values in a tree form. They also hold some similar settings such as keys to hold the desktop wallpaper location.

Gconf differs significantly to the Windows Registry though. You’ll notice that there are no settings in gconf to configure swapping, tune the filesystems, or configure routing. Gconf doesn’t hold any system settings, it stores only settings related to the desktop environment. You won’t find anything in there to help you configure device drivers or render your system unbootable.

The backing data store for Gconf in XML, which allows editing (though I’ll admit its somewhat difficult) with any text editor, command line or graphical. In the event of you making a change that stops your desktop environment from starting you’ll still be able to boot into a command line mode and attempt to fix the problem. It is also easier to identify when searching for it in a crashed filesystem.

Comparison

Both gconf and windows registry both represent their data in a tree based structure containing keys and values. This is where the similarities end. Gconf does not store system settings, editing it will not destroy your Linux machine. Gconf has a clearly defined scope, and is not meant to encompass every possible setting the computer may need. Gconf is easier to edit and repair, because of its XML format.

I refuse to debate which one is better because they are designed to perform some very different tasks. I do however think that the windows registry would benefit from an XML (or other text backend). Similarly Gconf could benefit from an automatic rollback/checkpointing mechanism.

Edit: Jeff Atwood (one of my favorite blog authors) recently wrote a post about the Windows Registry. Find it at http://www.codinghorror.com/blog/archives/000939.html.

Random Thought: Imagine for a second that transferring zeros over the internet was free and only the ones cost money. Now think of a compression algorithm (or an inflation mechanism rather) that increases the ratio of zeros to ones and makes data cheaper to transfer. Now imagine how you would perform error correction/detection with this protocol.