A Small “Patch” for Scuttle

Yesterday I realized, that our internal office installation of Scuttle (SF project page) suffered a minor bug: it kept on sorting all bookmarks by date, but in ascending order, i.e. the oldest bookmark was displayed first.

After doing some research, I quickly found out that this seems to be a “bug” (well the devs say it isn’t but one can argue…) of MySQL, caused by an optimization of a SELECT DISTINCT queries.

So I patched services/bookmarkservice.php and removed the DISTINCT keyword in the SQL-query of getBookmarks() (line 249, version 0.7.2).

Up to now, I did not experience any duplicate lines caused by this. I think, I’m going to report this minor issue upstream.

Update: hmm, ups, when searching, you will most certainly get duplicate results… I’ll check in the evening.

Update 2: Ok, so I wrote a litte more extensive patch, by wrapping the original SELECT DISTINCT statement as a subselect and ordering the result as such. This now really works. The patch for 0.7.2 can be downloaded here. You have to apply it to services/bookmarkservice.php.

Update 3: Ok, I somehow managed to delete the patch file. I am sorry. I will look if I can find it in any of the old backups, but I am not too convinced about this.

KDE-Style Window-Movement on Windows

One of the minor features I admire most in the common X11-Window-Manager implementations on Linux is the fact that you can move and resize Windows easily without first moving the mouse to a special location of the particular window: Dragging your mouse while holding Alt+(Left-Mouse-Button) will move the window, holding Alt+(Right-Mouse-Button) will resize the window on its nearest edge.

I always missed this little feature when working on Windows. Today I found a script for AutoHotkey, which is a free (GPL) scripting environment for hotkeys. After installing AutoHotkey, simply download and launch the script by double-clicking it and now you’ll have the same behaviour for window movement and resizing as under KDE. Really cool!

AutoHotkey can do a lot more, unfortunately I have not yet had time to try out more.

Scuttle: Your Own Server-Side Bookmarks the del.icio.us’ Way

I have been using del.icio.us since I first heard about it (by reading an announcement of its acquirement by Yahoo!) and I have to confess I was taken by the approach. The only thing I didn’t like was the fact that I didn’t have my bookmarks and the service under control.

Thanks to a note by Erik I found out about Scuttle, an open source clone of del.icio.us which everyone can host on his/her own server. (Please note: scuttle.org only offers their public bookmarking service, the software can only be located at their SourceForge page.) Scuttle is written in PHP and requires MySQL as database backend.

Scuttle offers most of the features of del.icio.us and can even import your bookmarks from there. Some minor usability-issues still arise, but I can live with them. Their API is compatible to del.icio.us so most external del.icio.us applications will work with Scuttle, as long as the tools allow you to specify the URL of the service. Additionally, Scuttle provides three levels of visibility for your bookmarks: public bookmarks, shared with your watchlist (= your friends/colleagues), and private bookmarks.

I installed Scuttle at my company and everyone is busy using it and is happy to now having a central place to store their bookmarks. Del.icio.us was no option for us because all bookmarks are public there.

I can strongly recommend using this software to everyone who wants to have a centralized way for storing their bookmarks without giving away all controls over their bookmarks.

NewsForge has published a nice review of the software.

Increasing Performance of VMWare Virtual Machines on External Devices

By default, VMware Workstation 5.x use a memory mapped file for backing the RAM of the simulated machines. This eases the pressure on the system’s page file. If you host the virtual machine on an external drive, however, this can become a bottle neck, especially if the external device is slow (e.g. USB 1.1, flash, etc.).

As described in this VMware Knowledge Base Article, you can turn of VMWare’s behaviour to use a memory mapped file and force it to use the system’s paging mechanism instead. To do so, you just have to add


to your virtual machine’s configuration file (.vmx).

Opera for Free

Opera is now available for free, ads and registration have been removed.

Just gave it a quick try, and I have to say, I like it 😉 I think, Firefox is going to have to co-exist with Opera on my HDD.

Update: According to Heise.de (German), Opera has been downloaded over 1 million times within only two days, more than any previous (ad-enabled) version.

Gnus & IMAP: a superb combination

Gnus, a (X)Emacs based news- and mailclient has been my favorite newsreader for some years now. I used to use it for NNTP based usenet reading only and I really liked it for several reasons:

  • adaptive scoring, it just raised the score of articles I read and lowered the ones I didn’t read
  • flexible and configurable
  • works within X11 and also on a shell
  • available for both, Linux and Windows

Not so long time ago, when I started to play more actively with Gentoo on my home box, I realized for the first time in my Internet-life that mailinglists could be a good supplemental for my usenet feeds and for information retrieval, especially the gentoo-user list. I’ve had always gone around mailinglists because I didn’t find them as appealing and comfortable as newsgroups and I didn’t like the idea of my mailbox being filled with hundreds of postings, mixing with my ordinary mail. Since I got my own mailserver for hosting my domain, I finally figured out that I could easily get around this problem with server-side SIEVE scripts; i.e. server-side mail filtering that sorts all incoming messages of a given mailing list in a certain IMAP folder.

Now, I’ve read several times that Gnus works well with IMAP so I thought I’d give it a try. Let’s say I didn’t regret it. Gnus handles an IMAP backend quite as well as an NNTP backend, in fact, despite some minor differences in handling the expiration of posts there is no difference for me if I am reading my local NNTP mirror maintained with leafenode or if I am reading a mailinglist stored on an IMAP folder. All powerful scoring features I adore so much in Gnus just work on the IMAP feed as well, opening a new world of information retrieval as well.

I keep Gnus running most of the time within a screen backed shell on my server, allowing me access to NNTP and mailinglists from quite everywhere I can/want to log into my box. This is some sort of freedom I really like very much and makes Gnus really a good choice for me.

I already can here Pine-fans and mutt-fans arguing that pine/mutt/whatever handles the job as well as Gnus. Well, that sort of religious discussion never was interesting to me and I can just say: yes, I believe you. But after 4 years of continiously tweaking my Gnus configuration, it just got “perfect” for me. I mean, it does exactly what I want it to do, fitting my needs and tastes. Maybe hardly anyone else could work with my configuration, but that is one of the points I like about Gnus: it’s configurable to hell… 🙂

I think I am going to publish some parts of my .gnus config file as maybe some parts may be interesting. I confess, I have hardly any Lisp-knowlege, so most parts of the file are just taken from the documentation or from other websites. But maybe there are some parts someone else wants to see as well 🙂 And getting a working configuration as a starting point could be the way for some people to try out Gnus as well.

Update (2005-06-14)
As requested in the comments, my .gnus is now available for download. I obfuscated some server entries, please look out for any .invalid domain and replace it with your domain or namespace before using this file.

One Keyboard, One Mouse — Multiple PCs: synergy2

I commonly work on a desk with two or more computers, each having its own monitor, keyboard and mouse. It often got confusing which mouse and which keyboard to use when.

To be my saviour, Erik (see his blog as well) has pointed out a software called synergy2 to me, a software that emulates a KM-switch (Keyboard-Mouse-Switch) across multiple plattforms. The user simply configures the arrangement of the monitors on his desk (M1 is left of M2, M2 is above M3, …) and the mouse can be moved from computer A to computer B. Keyboard input follows the mouse in this case.

Still, every computer needs its own monitor, but I now have one single keyboard and one single mouse to handle them all. To be honest, after using this software for two weeks now, I can’t imaging working without it any more.

synergy2 claims to work with heterogenious Microsoft Windows 95/98/ME/2000/XP/2003, Mac OS X 10.2+, and any Unix X Server 11r4+ with XTEST extension.

Besides the really nice fact that one needs only one keyboard/mouse any more there are two additional goodies in using this software:

  • synergy2 (if configured to do so) synchronized the content of the clipboard among the clients. This really comes in handy if you are using one PC for research on the web and another one to work.
  • A nice feature is to synchronize the screen savers on the various computers so that all screen savers turn on at once and none turns on while you are working on another computer.

synergy2 works quite simply by defining a server (the computer with the real keyboard and mouse) and attaching clients to this server. The protocol used is unencrypted so be sure to use it only within trusted networks. You could however tunnel it over ssh to have an encrypted channel.

During my two weeks of experience in heavily using this software I only found some minor bugs/itches in using it: sometimes when coming back from screen saver on a client computer running Windows XP Prof with an XP-greeting screen and activated password after screensavers, the virtual keyboard is stuck with a simulated key, resulting in not being able to enter the correct password. As this is my notebook I could always fix the problem by pressing Ctrl+Alt+Del manually on the notebook’s native keyboard. Another way to get around this without using a native keyboard is to unlock the server screen and tell the synergy2-server to “Force Reconnect”. Unfortunately in the latter case the reconnect process takes several seconds before the slave screens can be re-entered with the mouse.

So, if you are using several PCs on the same desk at the same time, each with its own monitor, you should definitely give synergy2 a try. I’m quite sure, it will revolutionize your everyday’s work just as it did in my case.