Scratchpad meets Vala

Scratchpad 0.3.0 is out.

I am very happy with this release, it is a lot faster and a much better codebase. Basically everything has been cleaned up a little. I will now try to release bugfixes more often and focus on getting the project interface done. Changes since 0.2:

New Features:
- Complete port/rewrite to Vala, Scratchpad now runs (flys) natively!
- Tag-based replace mechanism.
- Use GUniqueApp for single instance behaviour, so startup notification
and focus stealing should work better now.

Removed Features:
- No more GnomeVFS, waiting for GVFS!
- Revisions. Wasn’t happy with them, to be reconsidered.
- Autosave and save options. Now defaults to save on focus out (saving
your laptop batteries).
- Tools menu.

Bugfixes:
- It’s practically a rewrite, so all bugs should be brand new!
- Icon sucks less.

Known Problems:
- Font changes won’t take effect immediately.

Tag-based Replacing

I have never been happy with replace dialogs in text editors, so when I was about to re-implement this feature in Scratchpad for Vala, I decided to try something different. Instead of going to a dialog, you replace text by first “tagging” some parts of text and then entering the replace string. Aside from getting rid of one annoying dialog, this approach is also more flexible (you can add and remove tags at will) and reassuring (you never have to guess what will happen). Aside from tagging the current selection (ctrl+t), you can also tag all recent search results (shift+ctrl+f) or tag a selection and jump to the next occurance in one step (ctrl+g). I’ve made a short screencast to demonstrate this:

Tag-based Replacing Screencast

This was the last missing feature I wanted to implement after the port to Vala, so you can expect a release of the native Scratchpad version any day now. It’s mighty fast. :-)

Made in Switzerland

I’ve recently stumbled across two very interesting but not (yet) well known projects:

Vala

Vala is a “compiler for the GObject type system”. The great thing about it is that it provides a modern, C#-like language but does not require the overhead of a virtual machine or interpreter. Of course you can also use libraries created with Vala from other programs created with C or any of the bindings, which makes it a possible choice for platform development.

Despite being a very young project it already works extremely well and the developers are very responsive. I am very excited about this project because it has the potential to make low-level GNOME development a lot less scary for newcomers and more productive for everyone. I am already porting Scratchpad to Vala, which means that the next release will likely be completely native and as fast and lightweight as it looks. :-)

Paldo

Paldo is a relatively new distribution created by the same two swiss students who created Vala. Like Ubuntu it is GNOME centric, follows the “just-works” philosophy and usually provides only one application per task. Unlike Ubuntu it does not make any changes to upstream when possible and is a lot more simplistic. The package manager (Upkg) is running on Mono and serves binaries by default, while essentially being source based. Package specifications are as simple as one could imagine, so adding your own custom packages is a piece of cake. It basically just involves writing down the commands required for compilation and installation and (optionally) listing some deps. Even listing the deps is simple, because Paldo keeps packages together (so headers are always installed for example) and does not use dependency version numbers (other than interface version which is part of the package name of course). So far it appears very developer-friendly to me, so I would recommend it to advanced users looking for a simple and lightweight GNOME-centric distribution that just works.

Chessmonk goes Cairo

I rewrote the board view widget to get rid of the dependency on GnomeCanvas, now it only uses GtkDrawingArea and Cairo. In the process I “cleaned up” the animation code by making it automatically figure out all required animations between two positions and added piece fading and (optional) coordinates for good measure. Here is a little screencast showing it in action, of course being a gif it is not of high quality:
Board Widget Screencast