Nemo 0.2.2 released

I made a new release of Nemo 0.2.2 today. It has some nice memory usage improvements and indexing fixes. Plus day view got pagination so that it can handle large number of files on a single day (like an svn update) gracefully. Upgrading is highly recommended.

March 25, 2008

Lolcats in your media center

I wrote that in about 3 hours thanks to the wonderful support in MMS for writing scripts in python.

March 15, 2008

The problem with static typing in programming languages

I remember reading in Paul Grahams excellent hackers and painters book, about how he liked the language he worked in to be dynamically typed as it provided him with more flexibility. The first time I read it I was still very much entrenched in the bondage and discipline language C++, and as so I found the statement wrong, but at the same time interesting. There had to be some deeper insight into this. A couple of years later, which would be the present day it just dawned on me that the biggest problem with statically typed languages are not the typing, you can get used to that. Its rather the fact that it becomes very hard to refactor the code afterwards. And worse, it shifts the burden of figuring out the right data structures and the right types to the beginning of the coding process instead of afterwards. Thus going directly against the good programming practice of writing for clarity first and only rewriting code if it has been deemed inefficient by a profiler. ...

March 5, 2008

How to stop wordpress spam

We had trouble on the Nemo blog because some stinky casino spam overlord had found our nice little blog. Luckily the spam started of slow so I had a change to try different solutions to fight the problem. I went trough updating wordpress, to update Peter’s Custom Anti-Spam, to installing akismet, to try reCAPTCHA before I found the perfect solution WP hashcash. None of the other techniques got 100% of the spam. The wordpress plugin uses the clever hashcash technique (first proposed to fight email spam) implemented in javascript, to force a poster to pay a small amout of cpu time for each post. Supposedly though, the biggest effect just from requiring the client to have javascript installed in order to post ;-)

February 27, 2008

Improving latency while keeping your sanity

We had this problem in Nemo 0.2.0 that it would use quite a lot of cpu while it was indexing. I kind of knew this could happen but hoped that a transaction optimization to the database could improve the performance enough to make this problem irrelevant. Sadly it did not. The indexing code works by running an event loop in a single thread and then having two queues, one for tasks that needs to be completed fast and one for background tasks. Each of the queues are basically just a list of function pointers that is popped when a new task need to run. ...

February 15, 2008

Nemo 0.2.1 released

Did the release of nemo 0.2.1 today. The release is the result of a large amount of massaging of the nemo code to use less cpu and memory (a garbage collector suddently makes these interlinked in a new one is not usually familiar with when coming from a language like C++). Then some profiling and massaging of GTK# which is sadly still not 100% ready for prime time. And finally some poking at mono code for which I’m not ready with a patch yet (tomorrow it will be), but I’ve improved the performance of the inotify backend of the filesystemwatcher by quite a bit especially when watching a large number of directories.

February 15, 2008

mms 1.1.0 rc2 released

I’m pleased to announce a new release candidate of mms 1.1.0. Biggest improvements are a weather plugin, vsync in opengl, better lyrics support besides of course a large amount of bug fixes. The number of changes since rc1 has been quite high, on avarage 2.71 commit every day thanks to all the wonderful contributions.

February 7, 2008

Iimplement brain damage

Had this annoying bug today where something that seemed perfectly resonable just didn’t work. After much investigation it appears that once again brain damage from Java has managed to over into C#. The problem is illustrated with the following code (You can ignore the Tuple for now): public struct Tuple < TFirst,TSecond > { public TFirst first; public TSecond second; public Tuple(TFirst first, TSecond second) { this.first = first; this.second = second; } } [...] Tuple < int,string > t = new Tuple < int,string >(1, "1"); Tuple < int,string > t2 = new Tuple < int,string >(2, "2"); List < tuple < int,string > > lt = new List < tuple < int,string > >(); lt.Add(t); lt.Add(t2); List < tuple < int,string > > lt2 = new List < tuple < int,string > >(); lt2.Add(t); lt2.Add(t2); System.Console.WriteLine("eq {0}, == {1}", lt.Equals(lt2), lt == lt2); Which gives the following result: ...

February 5, 2008

Nemo 0.2.0 released

Long time since I’ve blogged about Nemo. Since the initial release a little over a month ago we have had two major releases, the first one a bugfix release to fix some of the defects reported and the 0.2 release which adds support for beagle through Xesam and lots of other nice enhancements like pagination on the search results popup and better indexing performance. The software is still fresh but I consider this to be the first release that I would feel comfortable recommending to a stranger :-)

January 10, 2008

Has IMDbs rating system lost its touch with reality

I used to view the IMDb voting system as one of the greatest examples of why the wisdom of crowds is often much more in touch with reality than a panel of experts but lately some “b-movies” have been getting excellent initial scores. First it was Snakes on a Plane that started above 8.0 but now is at 6.5, and then we have AvP2 which apparently started at above 7.5 but now is below 6. The following comment on IMDb more or less summed up my feelings: ...

January 6, 2008