Introducing Genie - the smart programming language



I have just created a nice cool new language which is now incorporated into latest Vala svn. This means that with the latest Vala compiler, you can now program in a language similar to Boo and Python for those that dont like Java/C# syntax.

The syntax of Genie is designed to be clean, clear and concise. In some ways its cleaner than Python and is certainly a lot more concise than C#/Java.

Genie of course has all the advantages of Vala and you can seamlessly use Vala code and bindings with it too just like a CLR.

And unlike most other modern languages, there is of course absolutely no slow, bloat laden VM either as it compiles into GObject C code.

Here's a GTK sample which uses the Vala GTK bindings to whet your appetite:


[indent=4]
/* GTK+ Genie Sample Code - compile with valac --pkg gtk+-2.0 genie-gtk.gs */
uses 
    Gtk
    
init 
    Gtk.init (ref args)
    var test = new TestWindow ()
    test.show_all ()
    Gtk.main ();


class TestWindow : Window

    init
        title = "Test Window"
        default_height = 250
        default_width = 250
        window_position = WindowPosition.CENTER
    
        destroy += Gtk.main_quit
        
        var button = new Button.with_label ("Click Me")
        
        button.clicked += def (btn)
            title = "Hello World"
            btn.label = "Hello World"
        
        add (button)
        


To compile :
1) save above source to a file called genie-gtk.gs
2) valac --pkg gtk+-2.0 genie-gtk.gs

run the generated executable:
./genie-gtk


Some notes about the syntax:

1) It uses tab indentation for blocks (like python but only tabs and not spaces are allowed)
2) By default everything is public. To mark stuff as private either use underscore as first character in name of enitity or use the private keyword modifier
3) Genie supports everything vala supports including closures (see button.clicked above), properties, events (aka signals), delegates and other cool stuff

more to follow as I need time to document the language...

Update updated gtk sample above + added more documentation of language here

Tracker 0.6.6


Hot on the heels of 0.6.5, I've rolled out another release of tracker

Download

0.6.5 and 0.6.6 now make indexing a really smooth and relatively bug free experience.

Our most important feature is the new smart pause feature in the applet which can automatically pause the tracker daemon whenever the user presses a key or moves the mouse during heavy indexing merging. This makes indexing completely non-intrusive when computer is in use by user and no slowdowns should be evident at all. Default setting is to auto pause the merge state only which provides a nice balance between index speed and non-intrusiveness (can be set to pause all indexing if desired or turned off for maximum index speed).

Another great and currently unique feature of tracker is the ability to temporarily blacklist files that change frequently and index them much later on (or on next restart of tracker). This prevents needlessly indexing downloads and torrents which have not been fully downloaded yet. Coupled with the already intelligent pausing that tracker has whenever it detects other applications writing to disk (IE when compiling source code) and you have the best non-intrusive indexing on the market as well as one of the fastest.

One really annoying issue with tracker doing an extremely cpu heavy sqlite corruption scan on startup whenever it was not shutdown cleanly (depending on your db size this could last up to 30 minutes at 100% cpu and on battery too!) has now been removed. Its one area of SQLite that really sucks and needs to be optimised before we use it again. We have instead made sure tracker always shuts down smoothly and cleanly to do away with the need for the costly precautionary scan (which is not really required in any event).

We have also fixed a few other annoying issues with the applet - we have removed most of the messages and we have replaced the applet's popup with a tooltip which now displays status and progress.

And finally Im pleased to say (having spent the bulk of our time on this) all the significant bugs which surfaced in gutsy have now pretty much been fixed.

I would also like to thank Sun And Nokia for supplying a load of paid developers to work on tracker too - its almost an embarrassment of riches as I have to find work for them but its a lovely problem to have :)

(and we will need them for the next major tracker version but more on that later...)

Murders & Executions

Theres been a lot of merges and acquisitions going on lately with Sun and Nokia. However the one that really caught my eye was Microsoft's attempt to snap up yahoo.

With Microsoft gaining an excellent ability to shoot itself in the foot with Vista, I must say I am all for this deal for the following reasons:

1) At $42 Billion, it will wipe away its $19 billion cash reserves and throw it into the red

2) Yahoo is a fading star and has only one valuable asset Flick/r

3) Yahoo and its products are built with open source (PHP and FreeBSD). Microsoft will obviously waste years converting it to use inferior propriety technology

4) Microsoft will still have no worthwhile internet content business with which to challenge its competitors

5) Every attempt by microsoft to expand away from Windows and office has been a failure

6) Microsoft suffers from a chronic lack of innovation, bureaucracy and inability to compete with more nimble competitors like Google.

Note to US/EU - please dont block this deal - let microsoft implode!

File system notifications without watches


One of the most eagerly anticipated kernel features that desktop search and VFS authors have been crying out for is full recursive watching of the entire file system - something which is not practical with inotify especially with filesystems containing many thousands of directories.

I read on KDE planet that this has been communicated to kernel devs but hey why reinvent the wheel as a technology called fschange has been around for a while now which pretty much meets the bill as far as the kernel side of things goes. The only snag is it exists only as a patch to the kernel and so needs constant updating as new kernels are released

I would love it if some kernel hacker can get this into the mainline kernel and I am prepared to write a user space root daemon which will use the dbus system bus to send out recursive notifications for it (only root can read the output at /proc/fschange and the daemon must make sure any client has necessary read permission to preserve confidentiality).

The daemon I plan to write for it will also log all changes at the directory level to an sqlite database with the timestamp as primary key for fast date based lookups and delete any data older than 30 days to prevent db growing large. That way an indexer merely has to ask for all file change events from a certain timestamp as well as subscribe to a simple dbus based file notification and tell it what directories it wants to watch recursively.

The benefits of this will be virtually instant startup times for indexers and no grinding of the disk recursively seeking out folders to watch and checking their mtime values for changes (not to mention the memory and resource usage of watches in the kernel). Also it will make it more viable to index the entire filesystem and keep it up to date (and do away with the likes of periodic runs of update-db too).

Mudslinging

Any chance you guys on planet gnome can move all the electioneering mudslinging to the foundation-list mailing list?

After all thats where it belongs considering all the candidates up for election are interrogated there and all voters (foundation members) are subscribed to that list

We all like a good flame war but its so much easier to follow on a mailing list rather than having to transcend a myriad of blog posts and their comments!

Microsoft empire to expand via OLPC?


Having read about the unfortunate mandriva/classmate deal which Microsoft managed to hijack to its advantage, its pretty clear what their strategy will be as regards the bigger fish - OLPC

Microsoft certainly has deep pockets and will willingly pay to make sure governments around the world put windows on any OLPC deals that they purchase. But is there anything we can do to stop it?

It can of course be stopped by making it a condition of sale that only an open source OS can be used (at least for the government - maybe allow the end user to change it if they so wish) and I would urge the OLPC board to implement this ASAP. Failure to do so could have disastrous consequences and as such outweighs any question of morality or ethics about such a move. IMO its the lessor of two evils to restrict OS choice in this case to prevent monopoly abuse via corruption.

I had been tempted by the recent OLPC offer to give 1 get 1 but until I see such a clause that prevents change of OS I am holding back and I would urge others that dont want to see it hijacked by Microsoft to back away from it too.

Its unfortunate these days that Microsoft destroys all competition and will happily exploit any freedom we give it to continue its unfair, illegal and anti-competitive behaviour but we will never win unless we fight like they do. And you can bet if Microsoft was behind OLPC that is exactly what it would do - force all of them to use its software. As distasteful as it may sound to some people we need to start taking a leaf out of their book to level the playing field and we will easily beat them as long as the field remains level.

So please, OLPC board, safeguard the rest of the world from the Microsoft monopoly and add that clause!

Pandora's Box...


has just been opened

Microsoft is doing another SCO but this time with patents as it gets a patent troll staffed by former microsoft execs to launch a patent assault on Red Hat and Novell.

Of course MS is funding this - no sane company would ever sue open source companies as the massive pain for very little gain would not make business sense

SCO for instance incurred the wrath of the community so much that it received death threats and had to employ bodyguards as well as being fought to the death in court.

On no account must Red Hat or Novell cave in and pay their bogus claims as it will land a killer blow in the propaganda/FUD war being waged by MS. I hope a common fund will be set aside to combat all future claims that will further deter patent aggression as protagonists will know their claims will be fought all the way to the bitter end

I hope the execs in Novell wake up and smell the coffee - being microsoft's poodle will not stop them stabbing you in the back. MS is the common enemy of all open source and we will kill them - I dont care if MS improves its behaviour in the future for I and others will do everything in our power to destroy them and their crappy appalling technology and standards.

Let it be in no doubt that Microsoft must die and every one must do their duty to smash their monopoly. For their empire is built on sand and their own users have nothing but apathy for them. The only thing that props them up is their over engineered bloated crap thats designed to enforce vendor lock-in but with an increasing desire by governments and other agencies to use open standards, MS is effectively living on borrowed time - but on no account must we give them more time.

We must not allow MS to abuse FOSS to further their own interests and thats why Im also fully with Sun controlling OpenOffice so long as they stop OpenXML filters getting in.

Same old Microsoft



I have been watching the Odf vs OpenXML drama with some trepidation and wondering where the catch was with microsoft's apparent support for open standards.

I simply dont have the time to read the monstrously verbose OpenXml spec so I'm very grateful someone else has done the hard work and exposed the patent bombshells, the flaws, the omissions and the whole semi-propropriety nature of it (undisclosed blobs). The article in question can be found here and everyone who cares about open standards should read it.

What is most worrisome is the fact that no one other than Mirosoft could ever implement it in full. This means that open source software would never be used by companies who are risk adverse for office docs (the same reason said companies will not use OpenOffice for their doc/xls files as it cannot guarantee to read or open them 100% even though it currently does an excellent job)

Of course Micrsosft has been exploiting risk adverse enterprises for ages by spreading patent FUD against Linux and open source as it seems to be the only effective startegy they have. (its sadly an approach that works far too often as well). Nothing has changed...

The injection of patents into practically all microsoft standards is also the prime reason to avoid them especially now as it seems that smoke and mirrors are being used to hide them at first glance in the hope of snaring the unwary. Its quite cunning yes but then a leopard cant change its spots can it? Sigh - nothing has changed...

I agree whole heartedly that open standards must be vendor neutral and be controlled by representable committees and must never be in the exclusive hands of a callous convicted monopolist. Remember the Halloween memos where MS laid out their strategy of hampering OSS by creating new standards that they could not adopt or use? It seems nothing has changed...

As with any corporation, if the people at the top are evil (or utterly ruthless, selfish, psychotic and power mad if you object to the word evil) then so is the corporation. Again nothing has changed...

Heavy Disk I/O and Gutsy/recent kernels


Upgraded to gutsy last night to check reported performance problems with tracker.

The difference in performance of tracker on Feisty and Gutsy is absolutely startling.

On Feisty tracker is very quick at indexing and does not slow down desktop responsiveness at all but Gutsy is the complete opposite and is barely usable (indexing appears to take forever and desktop pauses are all over the place - it totally sucks at disk I/O)

Its quite alarming cause I dont want tracker to be blamed for this. I checked trackerd with nice and ionice so theres no problem there

the good news is its not just tracker or gutsy that triggers this behaviour on recent kernels:

from http://bbs.archlinux.org/viewtopic.php?id=35200 :

"Same sort of issues here, any heavy disk io (ie. pacman) completely cripples desktop responsiveness.
Only noticed after upgrade to 2.6.22"

some workarounds posted here:

http://readlist.com/lists/gentoo.org/gentoo-user/18/94155.html

I need to get onto the gutsy kernel guys to fix this pronto!

Vala == Voila!


Another great technology called Vala is also getting the recognition it deserves.

I had been keeping a close eye on Vala since day one and to be honest not a lot of people were paying attention to this fantastic project. I was glad I met Juergbi at Guadec as I hoped to change that situation.

I nagged him to do a talk on Vala at Guadec and sure enough the word spread amongst the devs and now lots of them are digging it

I nagged him the other day to add Duck Typing to vala so Dbus method calls could be done like interface.method (just like python) and he has delivered (Duck Typing is also cool for doing Window.Widget instead of doing glade_xml_get_widget for UIs)

so pls check out Vala and if you find something is missing or want a cool feature goto #vala on gimpnet and nag Juergbi!

We desperately need stuff like Vala in our platform and as a way to rapidly create desktop apps (without the need of a big sucky VM!) and I have high hopes for it.

Go Vala and big thank you to Jurg!