About GNOME · Download · Users · Art & Themes · Developers · Foundation · Contact

July 05, 2008

Mandriva 2008 Spring Flash key, GUADEC edition

For those fortunate people who are attending GUADEC this year, you'll get a nice 4GB USB key featuring Mandriva Linux 2008 Spring Flash, in a special GUADEC edition, with your favorite GNOME 2.22 desktop on it :


Compared to last year Guadec key, it is now possible to use the key to install a new system with Mandriva Linux, just like you would do with a Live CD.

Currently, keys are being processed by Turkish customs at Istanbul, so I don't know yet if they'll be available for Guadec opening on Monday but if not, they should be available during the week. Guadec team will tell everybody when they get theirs hands on them.

However, we discovered (after sending keys to production, of course :( a small bug which will prevent this new install system to work properly (only Guadec keys are concerned, not standard Mandriva 2008 Spring Flash key). To fix your key and be able to use the installer, just follow this procedure :
  • download this initrd file 
  • if you are downloading the file from a running Mandriva Flash system, copy it to  /live/media/.boot/usb directory and restart Mandriva Flash system. 
  • if you have just mounted the key on any other system, copy downloaded file to the mounted key, in .boot/usb directory.
  • Here you are, you can now use Live Install feature any time you want.
Even if you don't plan to use the USB Guadec key immediatly (or if you want to give to somebody else, etc..), I strongly advise people to do the procedure so they have a fixed key which can be use whenever they want.

We also found a gdm crash when you boot the key for the first time, after filling configuration steps : you go back to text login, instead of getting autologin. If this happens, as root, just run : service dm restart. You can get the same issue the first time you'll boot a system installed with the key. It appear to be system dependent (it doesn't crash on all systems), probably a race condition where gdm doesn't always like to be told to reload his configuration.

Of course, if you have any problem with your Mandriva USB Guadec key, just grab me in GUADEC venue, I'll be attending the entire conference.

Enjoy !

added del.icio.us support to whoisi

I added support for del.icio.us to whoisi this evening. Let me know if you see problems.

Update: There are still server throttling issues so sometimes adding del.icio.us urls doesn’t work. Still working on making the polling stuff smarter about that.

Some cool programmer software

Here are some more software programs for Linux that you may find useful. I used most of them at my last place of work.

  • Coverity Prevent is a non-free static analysis tool for C and C++ similar to lint and Sparse, which has a pretty good signal-to-noise ratio. It checks and catches many programming errors, along with the the occasional false positives. It's a good tool to have around if your company can afford it. Sparse is also useful with a lot of C programs.
  • If you are a Git user, msmtp is something that you can use as a helper to git-send-email which lets you send email through a SMTP server that only does TLS.
  • If you are an Emacs user working with projects in C and C++, you probably already know of the wonderful (and non-free) Xrefactory, a source code navigation and refactoring tool. I had looked for something which came close to IntelliSense and Visual Assist X on Linux, and Xrefactory is it. The commercial version is much better than the $free version if you're gonna try it. The program's maintainer has expressed a willingness to release the $free version under a free software license if someone wants to package it for Debian. Also, Cscope with the xcscope.el module is also pretty decent, but it won't navigate in scope the way Xrefactory will.
  • Wireshark rules! You already know that if you are a network programmer, but even the web browsing user can get a lot of bang from it. For example, you have this Flash object on a website that downloads some data (.flv?) from the web server. You want to know what URL it's accessing for it. Or you want to get at a URL (to download it using curl) that is constructed by JavaScript and works only when the web browser also sends several cookies along. You can find out all this information by doing a packet capture using Wireshark and parsing what you've captured. Wireshark breaks the packets up into protocol specific layers with plenty of annotations. EFF has an article on how you can detect packet spoofing by ISPs, using Wireshark. Wireshark does suffer from slow parsing issues if you're working with multi-million-frame captures. Its filter expression syntax is also pretty basic. Implementing indexing of pcap files will probably help it with the speed issue. Scapy is another useful tool that lets you interactively construct and deconstruct packets.

another whoisi theme

Garrett LaSage put together a user theme for whoisi.com. He’s got a link to the screenshots on his blog. It works with either Stylish or Greasemonkey. So cool!

Interesting pointers for move from RHEL -> Debian

We interrupt the regular ramblings on this blog_service to bring to you two mails from the ilugc mailing list about why an institute lab made a move from RHEL to Debian. Original reference is here.

More Help Wanted

As it turns out I have need for another Systems Administrator, this time in Washington, DC. This job is for a local administrator to handle the day-to-day support and activities in the Washington office (complete with AD domain, Asterisk server, NAS, and a dozen users), as well as the four branch locations in the DC Metro area and (future) datacenter while working together via IM, mail, and phone with the existing tech team in Chicago to plan and implement improvements, and resolve problems. The technological environment is 80% Windows, but the remaining 20% is RHEL5; the branch locations are 100% RHEL5.

So, the requirements are Linux and Windows desktop support, a desire to teach yourself Asterisk, Windows domains, and Cisco networking, and the ability to pass a Federal security check. Experience with open-source web software and Apache (e.g. Wordpress, Joomla!, etc.) is great, but not required.

As before, send your resumé to me.

mc-fast says thumbs up

Yay, mc-fast is back. And what a nice feedback it sent me…

Freqs for those rules in 'mc-fast' mass-check:
  MSECS    SPAM%     HAM%     S/O    RANK   SCORE  NAME
      0     1996     1999    0.500   0.00    0.00  (all messages)
0.00000  49.9625  50.0375    0.500   0.00    0.00  (all messages as %)
0.00000  41.1323   0.0000    1.000   1.00    0.01  T_PQRTW_4

Could it possibly be I just created a killer rule to identify > 40% spam with no false positives? Seriously low scoring spam. Using a single, really short RE? Could it possibly be there is one major spammer out there, that uses this easy to catch finger print on all his spam? And that no one spotted it before…?

Granted, that’s just a tiny pre-flight corpus used for some very basic, fast evaluation. Eagerly awaiting the real mass-check results tomorrow…

GUADEC - Istanbul

Yes, I’m going to GUADEC this year, I’m very happy about it and I hope to see a lot of friends there, ok I’ve seen a couple of them during the last Ubuntu Developer Summit at Prague but it’s always great to get together more often to talk, discuss and have a lot of fun, see you guys there!.

July 04, 2008

Guadec/Istanbul; Rich Desktop Applications.

Next week I will be attending the GNOME Developer Conference in Istanbul.

Looking forward to meet old friends and looking forward to discuss with people the future of rich applications.

BOF: Does anyone know how to apply for a last-minute BOF?

If there is some free presentation slot, I would like to hold an informal BOF to discuss these ideas.

Buuu-huuu - I Can Has Pony?

I am not going to GUADEC this year and it it really upsetting me. There are so many exciting things going down in the (Gnome) community these days that I don’t even want to list them because that would just upset me even more.

I tried to convince my employer that it would be for their benefit if I went, but I knew it was no exactly the usual stuff, or directly related to my work, so I can’t really blame them. Atleast said employer is paying me to hack on FOS software, so all is not lost.

Bummer, bummer, bummer. Life sucks[1]. I want a pony.

[1]: At this particular moment when the family is sleeping and I am up alone it sucks. A few hours ago the kids where great, the sun was shining, and everything was bliss, but allow me to indulge in my missery.

Error Codes

API design rule: error codes alone are not a reasonable way to report errors.

You need a mechanism that can return a helpful string. Like exceptions in most languages, or GError in C. You can return an error code also, if appropriate.

A helpful string does NOT mean some generic string form of the error code, as with strerror().

Here is an example from XPCOM (have to pick on someone, and this is what I tripped on today):

Error: [Exception... "'Component does not have requested interface'
when calling method: [nsIFactory::createInstance]"  nsresult:
"0x80004002 (NS_NOINTERFACE)"  location: "<unknown>"  data: no]
Wouldn't it be helpful to know which interface was requested, deep inside the app someplace? I vote yes. But XPCOM doesn't have exceptions with messages, it has error codes. (The least helpful error code, of course, is NS_FAILED. NS_NOINTERFACE is a little bit helpful.)

Any number of APIs manage to screw this up. X11 protocol: guilty. SQLite: guilty. Cairo: guilty. OpenGL: guilty. I'm sure there are dozens more.

All of the above leave programmers reading docs and tracing code to figure out mysterious error codes, for errors that would have been obvious given some more context in a string. In C, the function you use to set/report/throw an error should take a format string like printf(), so it's easy to add context.

Unless you're writing something very low-level and performance-critical, like a system call, error codes are always wrong. If an API is simple and well-specified enough, error codes can be sufficiently clear. But, none of X11, Cairo, XPCOM, SQLite, or OpenGL qualify for simple enough.

Error codes have one other nasty problem: people start to overload existing codes to mean many different things, because they're reluctant to add new codes or because new codes would break ABI. This is visible in UNIX system calls, X11, and of course any API with a generic "FAILED" code.

whoisi theme

I posted about this on twitter already, but I hacked together a quick user theme for the excellent whoisi service.

It works with either stylish or greasemonkey (there are two versions on the theme’s page, one for each excellent Firefox extension).

no GUADEC for me…

I was intending on going to this year’s GUADEC in Istanbul, Turkey… but, unfortunately, I’ve been having an amazingly horrid apartment experience.  I call it “the flat fiasco”.

Marc Belzunces' conscience objection fight

Yesterday, my friend Marc had to visit a court in Barcelona, after being accussed for an electoral penalty.

Marc has always had a strong Catalan sentiment, and fights for the independence of his country from the French and Spanish states in as many ways he finds convenient. In this direction, he's been involved in countless activities promoting independence, in the Internet and in the streets.

For now, he has to deal with living in the Spanish state, and recently this became a legal problem. Spain held parlamentary elections in March, and Marc was appointed to serve at one of the polling stations in Barcelona. Believing he had nothing to do with an election process to elect the Spanish parliament, he conciously refused to take his seat during that Sunday, infringing the Spanish electoral law.

He presented his allegations to the officer, and refused to declare anything else. He now faces a fine ranging from 180 to 1800€ or community work (which he would, again, object to perform). The officer told him that he's apparently the first Catalan to object like this, so what will happen next (besides he'll have to sit in court and see how it goes) is unprecedented.

While Marc and I don't share many of our political views, I admire his dedication and his solid defence of his ideals. If I had been called to serve in a polling station last March, I would most probably have had my own personal debate on what to do, but suspect I would have ended going there to avoid creating these kind of situations, and would have had to participate in a process that I consider broken, unfair and undemocratic. I admire and support Marc for being stubborn enough to get this far.

His case has had quite some echo in the Catalan blogsphere and some Catalan media like VilaWeb. Some people have started a campaign to collect money to help Marc pay the fine. The response so far has been surprisingly positive.

Marc, molta sort i una abraçada!

blah blah new design blah

New site design. Those of you who didn’t like the pink one (i.e., everyone) may not like this either. Once again my lack of design skill runs amok. On the other hand, now I can pretend that it’s minimalism rather than that I have the artistic ability of a rubber mallet.

Of course, as with all things, Mark was there first and with greater gusto, but if that was enough of a reason to stop people doing stuff then there’d be no internet.

Feel free to let me know if anything doesn’t work in Firefox or Opera or Safari. (It’s tested in FF3, Opera 9.5, and Midori, but only pretty briefly.) I can’t test in IE7 because IEs4Linux doesn’t properly run it yet* and it looked sort of OK in IE6, and that’ll do me, I think. This is graded browser support in the real world, meaning that my browser is Grade A and everything else is some letter in the Greek alphabet like omicron.

Actually, that should be “such as omicron”, there. Tom once told me that he didn’t like the TV programme “People Like Us” because it should have been called People Such As Us. Grammar is important, especially if you’re running an anti-child abuse campaign.

Speaking of such esoteric matters, it seems that Firefox supports the soft hyphen &shy; these days. Which­is­really­great­if­it­actually­works­and­well­done­the­Mozilla­team­only­five­years­later.

Typography is important, too, but I don’t understand that, Richard Rutter notwithstanding. On the other hand, I have now used line-height for the first time ever. Eric Meyer, watch out.

It’s Friday night. Time for a pint.

Severed Fifth Updates

Just wanted to give a quick update on Severed Fifth and some of the work going on in the project:

  • Recording is going well. The vast majority of the music is tracked, I just need to finish up vocals. Go and see studio reports 1 2 and 3 for more details. I think things are sounding pretty damn meaty right now. I can’t wait to get it out there.
  • I am about to start a travelling spree for a five weeks, in which I will not be able to record vocals. As such, I plan on releasing a bunch of sneak peaks of the songs each week to show you how things are sounding.
  • The Severed Fifth Street Team has kicked off, and it is great to see some representation across the world. I am excited to see how we can take the Open Source methodology and apply it to music. We have some great people on board, and I can’t wait to see what is possible. Come and join up the street team help make the new music economy happen. :)
  • After a significant amount of time thinking about licensing, I have decided on a Creative Commons Sampling Plus license for my music. This license satisfies a bunch of the things that are important to me. I am happy for people to share the music, remix it and play with it as much as they like both commercially and non-commercially, but I felt uncomfortable with people selling the music as-is, even with attribution. The reason for this is that Severed Fifth is there to explore different methods of generating revenue, and I feel it is reasonable for an artist to have sole rights to sell their music commercially. However, I did not want to prohibit other artists taking my music, mashing it up and selling their work. This license strikes that balance perfectly.
  • Speaking of licensing, I have written up the Severed Fifth Licensing Page. With the page I did not just want to make it a boring page full of legal terms - I wanted it to be a page that gives useful information about what people can actually do with the content. I would love any feedback from you about how to make the page not only useful for explaining rights and restrictions, but also inspiring people to use the content in interesting ways.

Finally, I had my first piece of Severed Fifth Merchandise come through. I ordered some high quality gloss stickers which I plan on selling on the store, but will also bring along to conferences to give some out. If you are at LugRadio Live UK 2008, GUADEC, OSCON or DebConf come and ask for one. They look like this:

Rock and roll. :)

Rhythmbox Plugin - finally starting to work

It's nice to be somewhat ahead of the roadmap that I gave myself, especially since all kinds of problems that I hadn't thought about are cropping up. However, I finally have the analysis portion of the plugin more or less ready to go, despite a few bumps along the way related to threads and subprocesses. Those are pretty much ironed out thanks to the help of Jonathan Matthew and my mentor Philip Van Hoof, and I learned a fair bit along the way. That's what this GSoC thing is all about, right?

One thing that took me a while to decide was how to control the song analysis. It is a fairly processor intensive and time consuming process, so I didn't want it to just run whenever, but I didn't think it deserved its own toolbar button. I settled on a pop-up window that runs when Rhythmbox starts if it detects that the library is out of date (from a gconf key). It looks like this:

The thing about "running manually" is a lie, since I haven't implemented the preferences pane just yet, but I like the "don't ask me again" option. Now, I just need to do the playlist creation stuff - I've got a bit of C++ code that looks through all the songs and picks out the top match, but I'd like to change it so that it gives a list of top matches. I also need to do the actual Rhythmbox adding to queue or playlist generating stuff as well, and I'm sure I can find any number of things to work on for the rest of the summer. However, I'm pretty happy with how things have been working thus far, and I'm looking forward to the rest.

10 years and excitedly counting

For some reason she volunteered to continue putting up with me… :)

Manditory Fun Day^W^WDetails

Finally got through work and am off for the next week. Hurrah! As always, my flight information:
Depart Stanstead 14:35, arrive Istanbul 20:20
As ever, if anyone is flying / landing around the same time and the thought of spending a week with me isn't enough, give me a shout via email.

NAS for Home

Dear Lazyweb,

Does anyone have suggestions on what to use for centralized storage at home? I have a lot of music/photos here piling up and would like to put them on some energy-efficient NAS box. Ideally it would have some sort of of built-in backup solution as well. A lot of the NAS-in-a-box solutions seem to have RAID 1, but that really only helps for HA. I am more concerned with never ever losing this stuff than having it available 24/7.

Mergesort. Dissected.


(Note: All code in this under the WTFPL [0]. Except possibly for Stepane Delcroix’s adapted code, which is under the MIT/X11 license)

Very recently, I decided to spend some time coding those standard algorithms that every programmer should know, but I am woefully ignorant of. The plan was to do an algorithm a day. Unfortunately, yesterday night, I started on the Merge sort algorithm, and I found some ancient bash script I wrote to profile and graph the running time of some other sorts (i.e. the bubble sort). Which led to me spending precious time playing around with gnuplot and various program parameters. Expect graphs. Lots of them.

Some background: I’ve lately developed a foreboding sense of being a ‘code monkey’. While I know how to create a UI using GTK+ (and wx), and how to link up stuff using DBus, I still don’t know a fig about QuickSort (which is next on my list). Being a CS student, this is in my view a crime. So I pulled out the big ‘ol Cormen, Rivest, et al.[1] and started to peruse it (btw, I still haven’t done my algos class).

It took me very little time to get a basic implementation of the merge sort ready. I was about to get back to my GSoC work [2], when I remembered I had written a bash script I wrote some time last Novemeber in my introductory CS lab session (of my own volition). At the time, having already programmed for a while, I managed to complete all my lab sessions very quickly, and wasted my time in the lab doing non-sensical things to my C programs, this being one of them (I still fondly remember a CS lab teaching assistant telling me about the heap sort. Unfortunately, I didn’t get it at the time). Nonetheless, I was surprised when I found this script, since I honestly don’t know that much scripting now.

rand.bash

#!/bin/bash
# Compile over different optimizations
for i in `seq 0 3`; do
make CFLAGS=”-g -O$i” LDFLAGS=”-pg”;
echo “#mainO$i SORT DATA” > mainO$i.dat;
echo “#No. of elements     Time taken (ms)” >> mainO$i.dat;
for j in `seq 1000 1000 50000`; do
./main $j;
gprof -b -a main > mainO$i.prof;
t=$(awk ‘/sort/ {print $2}’ mainO$i.prof | head -n 1);
echo “$j        $t” >> mainO$i.dat;
echo “$j        $t”;
done
echo “mainO$j”;
make clean;
done
gnuplot tmpl.p;

The script has been subtley modified to make it more robust and cleaner. The original source is here[3]. Modifying the script required me to go over all of those bash basics I keep forgetting, and then doing the same for gnuplot.

I initially made the merge sort work only for arrays of size 2^n, and had a some minor complications extending it to an arbitrary sized array. I don’t know about the optimality of my method, but I essentially split every array into two parts, one that’s 2^n sized, it’s remainder, recursively. This ends when the size of the array is 1, which happens always. So I needed a method to find the nearest power of 2. Luckily, Jeffery Steadfast had already written something about this. [4]

When I first read it, I made some absolutely baseless and stupid comment about how his method works (Method #2 that is). It’s far simpler than I thought. To redeem myself however, I figured out how the very efficient method suggested by Stephane Delcroix works (Method #4). It is by far the most beautiful code snippet I’ve seen, doing a sort of a binary search for the top most bit set. Here is the code:

utils.c:27

long
nearest_pow (long num)
{
long i, j;
(i = num & 0xFFFF0000) || (i = num);
(j = i & 0xFF00FF00) || (j = i);
(i = j & 0xF0F0F0F0) || (i = j);
(j = i & 0xCCCCCCCC) || (j = i);
(i = j & 0xAAAAAAAA) || (i = j);
return i;
}

And here is a graphical break down of it:

There are 4 bytes to an int, so 8 hex numbers. Each step divides the into into 2. For example in the first step, it checks if there exists a bit set in the first 2 bytes (4 hex numbers), using & FFFF0000. If so, the last 2 bytes are set to 0. In the other case, the first 2 bytes are anyway 0. Now, you only need to focus on 2 bytes. The mask & FF00FF00 works on *both* the upper 2 bytes and the lower two bytes at the same time. In effect, you’re applying the mask FF00 on the 2 bytes filtered from the first step. This continues to next step as well, with F0F0F0F0 being F0 in for the single byte you’ve filtered (remember, F is 1/2 a byte long). A in binary is 11001100, and C is 10101010. So at the last step, the uppermost bit survives, and all the lower ones are set to 0. And that’s the nearest power of two (on the lower end).

Back to merge sort. Here are some graphs. (Programs compiled with (-g -O{0,1,2,3} -pg), I’ve iterated from 1e6 to 5e7 in divisions of 1e6. That would be 50 data points. Attempts to profile stuff below about 1e5 fail, since it’s too short. I chose 1e6 because I needed to strike a balance between torturing my computer and my patience.):

Code:
vanilla/merge.c
(Note, list_ is a scratch buffer. It’s been allocated the same memory as list).

void sort (long len, int *list, int *list_)
{
long i = 0, idx1 = 0, idx2, idx;
idx2 = idx = prev_pow(len);
/* divide */
if (len != 1)
{
sort (idx, list, list_);
sort (len - idx, list + idx, list_);
}
else
return;
/* merge */
while ((idx1 < idx) && (idx2 < len))
list_[i++] = (list[idx1] < list[idx2])?list[idx1++]:list[idx2++];
if (idx1 < idx)
memcpy (list_+i, list+idx1, sizeof(int)*(idx - idx1));
else
memcpy (list_+i, list+idx2, sizeof(int)*(len - idx2));
memcpy (list, list_, sizeof(int)*(len));
}

Graphs:

Mergesort Vanillia
Mergesort Vanillia: Using Lines
Using CSplines
Mergesort Vanillia: Using CSplines
Mergesort Vanillia. Using Beizer
Mergesort Vanillia. Using Beizer

At first I thought the spikeiness of the graphs was caused due to load variations on my system, but after looking at how smooth the other graphs were, I don’t know. Perhaps it’s caused by variation due to sensitivity of the initial array (but technically speaking, merge sort is tightly bound on O(n * log n), and there shouldn’t be that much variation…). Does anyone  have an insight on what might be the matter?

A very popular modification of the merge-sort algorithm is to use an insertion sort for branches smaller than a particular cutoff [5]. I of course, wanted to see whether there was a relation between input size and optimal cutoff. However, on analysis, I found that the cutoff did not help in any way (note: the cutoff=2 case (i.e. it doesn’t insert sort much) actually takes *longer* than the vanilla mergesort). Perhaps it is something wrong in my insertion sort implementation, though I don’t see anything that could go wrong (after all, insertion sort is very trivial). (All graphs made using the program compiled with (-g -O2 -pg), given increasing cutoffs at fixed array sizes).

Code:
mod-insertion/merge.c



idx2 = idx = prev_pow(len);
/* insertion-sort */
if (len < cutoff)
{
for (idx1 = 0; idx1< len; idx1++)
{
i = idx1;
for (idx2 = idx1; idx2< len; idx2++)
i = (list[idx2] < list[i])?idx2:i;
if (i == idx1)
continue;
idx2 = list[idx1];
list[idx1] = list[i];
list[i] = idx2;
}
return;
}
/* divide */
else     {
sort (idx, list, list_);


Graphs:

Using Lines
Mergesort (with Insertion Sort): Using Lines
Using CSplines
Mergesort (with Insertion Sort): Using CSplines
Using Bezier
Mergesort (with Insertion Sort): Using Bezier

Something interesting worth noting are the big jumps somewhere between 60 and 80, and 120 and 140, which I’m sure are 64 and 128. This is because that marks a branching point for merge sort. So by having an insert sort at 65, you ’save’ the merge sort a branch. I don’t see any savings though (btw, 64 is the most often quoted cutoff I’ve seen). I also tried to plot a 3d graph, which looks rather terrible:
3D
Finally, I decided since I’ve already done the effort, why not plot graphs for Bubble Sort and Insertion Sort (these were the only two sorts I did in the past).
Graphs:

Using Lines
Bubble Sort: Using lines
Using CSplines
Bubble Sort: Using CSplines
Using Bezier
Bubble Sort: Using Bezier
Using lines
Insertion Sort: Using Lines
Using CSplines
Insertion Sort: Using CSplines
Using Bezier
Insertion Sort: Using Bezier

Nothing particularly interesting to see, other than proof that bubble sort is the worst sorting algorithm of all time. Also, I’d like to point out how smooth the graphs are.

That’s it for today. Hopefully, more graphs are on their way.

[0] This more for my amusement than anything else. I think it is absolutely unneccessary to license code as trivial as shown in this blog.
[1] Introduction to Algorithms : Cormen, Rivest, et. al
I recently found out that a friend of mine studying economics at Dartmouth (Darth Mouth ;-)),
had a course taken by one of these authors. Which is just awesome beyond words. Pity he wasn’t
doing a solid algorithms course with them though.

[2] For people interested in my GSoC progress, I’m happy to say that the plugin is fundamentally complete, and requires some bug fixing and feature bloating. There are a few changes to the Anjuta source code, and until that’s been approved (which requires me cleaning it up and sending it first), I can’t release it. When I do though, it’d be awesome if you’d try it out. Vim is something that has so many bells and whistles, its hard to make sure it doesn’t fail on somebody else’s configuration.

[3] The astute reader may notice that the file is hosted at chagantys.org. Yes, I have indeed bought my first plot on the internet. Hopefully someday I’ll find enough time to build a home there.
[4] Jeffery Steadfast Nearest Power of Two
[5] The Algoritmist’s take

Files
—–
[1] A template. sed -i ’s/tmpl/<algo_name>/g’ and write some code. ./rand.bash to use. Easy to extend to other kinds of algorithms as well. tmpl.tar.gz
[2] Code, graphs, and curresponding data (with proper indetnation). /code/sort

Linux input model

Does this look right? I’m trying to explain this to somebody and came up with a diagram.

Feedback appreciated. Thanks.

Ooopsie!

I rebooted my computer and went out for lunch with some friends. When I came back, it was particularly unresponsive, so I went hunting, and top showed me this:

19055 root      20   0 1343m 453m 1524 D  0.3 45.3   1:46.13 rsvg-convert

A quick ps…

dneary@sligo:~$ ps -ef | grep 19055
root     19055 19054  0 12:25 ?        00:01:45
  /usr/bin/rsvg-convert -o /var/log/bootchart/hardy-20080704-1.png
  /var/log/bootchart/bootchart.svgz

Ouch!

Does bootchart run until you log in? Is this normal behaviour? 1.3G of virtual memory is an awful lot…

PackageKit UI Improvements (and 0.2.3)

Well, I’ve just released PackageKit 0.2.3 (stable) into the world. I’m going to build this for Fedora 9, as it’s a massive improvement over 0.1.12 and should have no regressions and plenty of nice features compared to that old version. It’ll sit in updates-testing for a few weeks, and if there are no problems I’ll push it to updates.

Of course, declaring the 0.2.x branch as stable allows us to all do some cool stuff on master. We’re working on making the UIs look beautiful.
Two examples are below, for installing more packages to satisfy deps, and also removing other packages if you chose something with dependants.

We’re also fixing up the file viewer to be a treeview, as a long list of files to scroll though is pretty boring. We welcome newcomers if you want to have a try at this hacking thing.

Clutter-gst, now with 100% more shaders

Just committed shader support to clutter-gst. When your card supports it and gstreamer decides it's the format to use (often it picks rgb over yuv, I've no idea why this is), YUV decoding will now be handled by a pixel shader instead of the CPU. This should give a reasonable boost when it gets used (in terms of CPU use).

Even more interesting in my eyes, is the YV12 shader I've also committed. Normally YV12 hardware-assisted decoding would be done with 8-bit textures and multi-texturing. This is also the sensible way to do it, mind, and I do realise that... But also committed, is a YV12 shader that will decode YV12 uploaded into a 24-bit rgb texture. I've not seen a shader that does this before, probably because it's an insane thing to do, but if you build clutter-gst with USE_YV12_SHADER defined, YV12 decoding will be handled by the graphics card, using a single rgb texture. Note that this shader is completely untuned, however, and very experimental.

The win here is that not only are you offloading a lot of work from the CPU (most videos tend to be stored in YV12 format), but you're also halving the texture upload (YV12 has quarter-resolution chroma). I imagine I'll get back to this after guadec and implement it in the correct way. Patches welcome of course.

2008-07-04: Friday.

  • Poked mail, call with Vincent, into ESC meeting. Interested by the do we need users discussion in KDE-land. Personally, (for a broad definition of developer), I couldn't agree more: just taste the OO.o community - where non-developers are 'empowered' more than developers - for a while to experience how bad it can get. Of course, this is unrelated wrt. the target of the software you develop - that clearly has to be users.
  • Continued source-split work vs. m21 - better, I don't have to do the patch forward porting in the same pass. ESC meeting finished early. More mail chewage.

The Case of the Disappearing Emails

Over the last two years, a couple of people have had problems sending email to my openismus email address. They never received any failure message, but the mails never arrived. This was annoying and mysterious, but the problem was obviously with the senders’ systems so there wasn’t much I could do.

This week one more person had the problem. All three people were German, which made me suspicious. We discovered that all three people were using bytecamp’s email servers. For instance, gnome-de.org email addresses are hosted at bytecamp (for free, I believe). Major clue.

openismus.com was hosted at bytecamp a couple of years ago, but I moved it away because I found their services limited and rather ad-hoc, though it seems to have improved since then. It turns out that they forgot to update their MX records, so they were just swallowing any email to openismus.com from their remaining customers. Some emails to bytecamp solved the problem, so bytecamp customers can now send email to us again.

I do hope that several German GNOME developers (with gnome-de.org email addresses, for instance) have been trying to email me about working for Openismus. If you didn’t get a reply before, please try again.

GStreamer Summit

We’re having a fairly impromptu GStreamer summit this Sunday in Istanbul.

If you’re interested in discussion where GStreamer is at, and where it might go next, come along :)

Details:
http://gstreamer.freedesktop.org/wiki/IstanbulSummit2008

When mixing git-rebase and alcohol

Always, always, always remember to

git-rebase --continue

Or strange confusing things happen, and if you don’t have experts on hand… FAIL.

(Needless to say, the silly little typo I was trying to rebase away made it into public history after all. Poo.)

dpkg-reconfigure xserver-xorg

For anyone who has experienced pain when upgrading to a more recent version of Ubuntu with X and xrandr on Intel hardware, consider running this fabulous command.

This goes in particular for anyone who needed i915resolution before for wide-screens, and had a “ForceBIOS” option in xorg.conf. The driver to use for the hardware changed, and the xorg.conf got about 100 times smaller since Ubuntu 6.06 or 7.04.

This is the major weakness in the Ubuntu upgrade process, really… if hacks are needed to work around falings in previous versions, those hacks are (silently, IIRC) kept after an upgrade, even though they’re no longer necessary (and are, in fact, harmful).

Many thanks once again to Claude Paroz, wo helped me work through the projector problem & got me moving towards the fix.

Using a CF disk in an X40?

Has anyone seen this - it seems to be fairly interesting. I’m tempted to do it myself as the disk drive in my X40 has died on me..

eBay seems to have the relevant components for about 70 GBP.

Bazaar Power Management

When I saw Robert's interesting and fun Bazaar search plug-in I had a few thoughts:

Wow, that's cool!
It would sure be awesome if I could say that I've written as many Bazaar plugins as Robert this month.
That sounds like work.
Perhaps I can do this with, like, 6 lines of Python.

I've now written a plug-in to provide desktop power management support to Bazaar. You can install it like this:

mkdir -p ~/.bazaar/plugins
bzr branch lp:~ted-gould/+junk/bazaar-power-management ~/.bazaar/plugins/power_management

This hack-ish plug-in uses the initialization of the plug-in to call the DBus interface for power management to inhibit the power manager. It then relies on the fact that the power manager will drop an inhibit request from a client that disconnects from the bus which happens when the process exits. Both are relatively unsupported, and mostly undocumented ways to use the systems, but it works.

Why would you need something like this? Well if your trying to create a repository from a really slow SVN server which takes longer than the sleep timeout of your laptop (not that I've done this) you can end up really wishing your laptop hadn't gone to sleep. Yes, things restart, and you don't loose everything, but you'd really rather your laptop was awake the whole time. With this plug-in your laptop won't go to sleep while Bazaar is running.

The only thing left to consider is: What is Robert going to do to retaliate? 7 lines of Python?

GUADEC - Istanbul

I will be flying out to Istanbul on Sunday mid-day with the whole bunch of Sun people from Dublin. Should arrive late Sunday night. Stay in one of the recommended hotel, but do not have the details as I will be relying the other guys like Matt Keenan to figure the details when we arrive. This is a fairly big gang from Sun this year, I think it is 18 people all together, from Dublin, Hamburg, beijing and other places.

I will be doing the BOF on printing tools, http://guadec.expectnation.com/guadec08/public/schedule/detail/15
really looking forwards to people who are interested working in this area for GNOME. Will talk a bit about GTK+ Print dialog as well as I think this is an area printing tools will touch on to make better integration

Sous les pavés, la plage.

I’ve been working at the new job for a week now, and I’m enjoying it a good deal. The coworkers are friendly and the work has a lot of new challenges. I’m not sure how much I’m allowed to blog about. I’ll find out.

I spent a good while playing Packrat cooperatively with Fin this evening.

I have started microblogging over at identi.ca, which is synched to my twitter account. There are two reasons I’m using identi.ca rather than any of the dozens of others: firstly, its engine, laconi.ca (which somehow my brain keeps thinking has a far more interesting name) is free software and you can modify it or run your own; secondly, it uses an open protocol based on XMPP (like Jabber) so that anyone who wants can run their own microblogging site and join a big distributed network. It will be interesting to see how this develops.

There’s a fair to celebrate the Fourth of July, and we went there yesterday. After about an hour the entire field had a power cut, and there was brown smoke going up in the air from one corner and an acrid smell. The field was full of people groaning with disappointment. Five minutes later the power came on again, only to fail once more soon after: it kept doing this for four or five times. In the end they gave out cards if you’d arrived recently enough to let you come in free another time.

The Fourth of July fireworks in neighbours’ gardens are also making the dogs around here bark. There are some interesting Metacity bugs I’m working on, but I think I’ll get an early night.

And! Happy birthday to Carmen, who is of course one of the most awesome and special and wonderful people in California or anywhere! Many many happy returns.

Link soup:

July 03, 2008

giving thanks

Good accidents hide in small corners. A while ago I did something I never did before - I asked a guy on the subway whether he was interested in a job at Fluendo. I know, it sounds weird.

But the guy in question was actually reading a paper on pipeline-based multimedia processing, IIRC. I was dead tired as I had just flown in, and it was late at night. But I was thinking to myself, what kind of a manager am I if I can’t even recognize a good candidate sitting in front of me ?

Needless to say, the offer was awkward, the handshake on language took a few tries, and I ended up taking out a business card but I don’t even remember if he took it or not. I remember I had to break up the conversation quickly because I was at my stop.

I saw him again on the subway a few days later, and we noticed each other at the same time. I explained I felt silly the day before, and it turned out we had Andy in common. We both said we should get out for some food sometime, but we never got to it. That guy was Pau Arumi.

Last week I was thinking, we really should get together. So I mailed Andy to ask for an address, but the same day Pau mailed Andy and me to remind us of the Jornades de Programari Lliure, which it turns out he helps organize. I knew about it because Jordi told me about it, and Arek, Florian and Aitor are doing a talk.

Pau also invited me to dinner with Paul Davis of Ardour and JACK fame. Of course I couldn’t refuse - I’m sure Paul didn’t remember, but he was kind enough to help me figure out the kernel modules for the Hammerfall soundcard (which he wrote) when I was setting up Kristien’s home recording studio, and I promised him a beverage of choice in return.

This is actually one of my favourite moments in free software - times when I meet people in real life that have helped me in some way or whose software I’ve used, and being able to invite them to eat or drink. So their bottle of wine in that excellent restaurant Pau selected was on me, and I was happy for it.

It was also a good opportunity to ask his opinion on the future of JACK and PulseAudio. It seems Paul sees the two as complementary, where people that care about the things that JACK cares about would be able to run PulseAudio on top of JACK - with a certain patch, PulseAudio can even run the JACK server in-process so that the PulseAudio and JACK servers become one. People that don’t care can just run PulseAudio as usual. If that happens, that means we would have the same Pro Audio capabilities that Mac OSX has out of the box if a distro sets it up.

Talking about it with Paul reminded me about the things I admired in PulseAudio and Lennart’s approach to the whole sound server problem. It’s amazing to see how Lennart really aimed at solving all the problems. There have been many sound servers or sound solutions in the past, and all of them managed to miss at least one of the important reasons for which various people want a sound server - roughly categorizing into sound events, network transparency, hotpluggable devices, mixing, and a unified API for sound playback.

As an example, IIRC Lennart even implemented a PulseAudio fake OSS driver that implements one specific system call that only Quake III uses - but Lennart (correctly) reasoned that people would complain about PulseAudio if they wouldn’t be able to play Quake III and other sounds at the same time.

So, in contrast with Jeffrey Stedfast’s opinion (though I respect Jeffrey a lot for his Evolution work), I am very happy that a young and motivated guy like Lennart took the time and did the hard work, and got the details right, and apart from a few bugs that I’m sure will get worked out in the end PulseAudio is rocking my Fedora 9-based world. So I must make sure to thank him in beverages next time around. (And to think, this is a guy with not just one successful project to his name - see Avahi as well).

By coincidence, Christian just thanked me for my work on mach. While mach was probably one of my earliest useful/successful solo projects, in some ways it’s also a bitter failure on a social level. mach started out with code using apt-get (before yum existed). As time moved on and yum became more used, I wanted to have mach be able to use both. At some point someone gave me a patch to use yum, but it ripped out the mach bits, which I didn’t like - I wanted to be able to use both.

IIRC, I ended up handing that patch to Seth, yum’s author telling him that I couldn’t figure out how to integrate the patch so that it would work both with apt-get and yum. He ended up using the patch, forked mach, and mock was born. After that some features were stripped, and moch started evolving, and attracted a wider developer base than mach ever did. There’s nothing wrong with what Seth did - this is after all what Free Software licenses explicitly allow - but obviously that’s not how I think things ought to be done. I don’t think I ever really voiced my opinion on this because I don’t really know how to word it without admitting some kind of failure about it, but I realized today after Christian’s post that a social failure says nothing about the technical merits of mach.

And while I’d never state so in public, and definately do not want to take much credit for this, part of me is happy to have created something that ended up being a small seed for the technical solution that revolutionized Red Hat’s build system and caused the massive social sea change that Fedora ended up being.

But I digress. Thanks, Christian, for saying thanks. Though, nothing says thanks like a trip to my wish lists :)

(Wow, this was an awful lot of people-linking for one post)

Aaron and Banshee

Today I walked into Aaron's office unannounced and I just saw him glowing. Like a girl that has been kissed for the first time, like a donkey in the spring.

A voice in the background was narrating Banshee features, and I was wondering just what is that noise?

As I went around to his monitor to see what he was watching and listening to, I saw this Linux.com review on Banshee that included a screencast/podcast.

He was *so* excited that he was actually watching it in three computers at once.

I could not believe it.

Three computers at once. One, two and three. All playing the podcast. At the same time.

I was speechless.

From economic mastermind to flattered developer.

He said to me: "I have never seen a production of such caliber" as he listened to the background music in the above podcast.

I just stood there quietly. Unsuspectingly recovering the Twix office supply.

A phone call can do what a thousand comments can’t

I just got off the phone with Mark Shuttleworth. I was very grateful for this phone call as we managed to discuss the issue without the noise, nastiness and bad spirit which was ongoing during the initial posts here.

My sarcasm isn’t always understood by people and I think Mark was shocked at this, I have a wicked sense of humour at times and I understand that this isn’t always appreciated. Although after speaking with Mark I’m now quite impressed with his attitude toward upstream accreditation. The issue over the “About GNOME” menu item was actually trivial, in that someone had mentioned it to him as an option in passing to which Mark refused to budge. It seemed to me like a bad example, and this is yet another case of type being a less eloquent method of communication than talk.

The original issue which has caused this ruckas wasn’t such a big deal and it eventually came down to the way it was handled. Some have said I “demanded” accreditation, this simply isn’t the case. The fact of the matter is I asked if it could be attributed to me because that would have been a nice thing to do. The sequence of events disheartened me a bit, but in the end it wasn’t a big enough issue for me to blog about. It has actually been a fair few months since it occurred and there hasn’t been a peep out of me regarding this. Zeeshan asked me to blog it.

Mark seemed to agree that maybe things in this instance were a little suspect, and that came down to a lack of response regarding my email more than anything.

In the end things have blown up out of all proportion, a few days of getting attacked left and right from anonymous trolls can heat up a situation far beyond melting point. Its unfortunate that there is a massively polarised troll community out there. It seems that comment systems are now getting the slashdot effect all over the place, which to be honest I don’t care too much for. Too many people make a religion out of their software beliefs. I’ve been told that I shouldn’t contribute to open source again, I’ve been told that I shouldn’t ever post on a blog again, I’ve had people criticise and threaten me in various personal ways also… These comments and emails go to the trash as not a single one of the heavily polarised comments came with a name attached. Shame on you people!

However, on the flip side, over the last day or so I have seen a collection of emails come in, and some people even pinging me on various IRC servers in response to what has gone on. The content of these messages was simply, “not all of us are like that, and I’m sorry some of us have been…” these are the people, and you know who you are who should be awarded for their courage to come out and speak to me directly, apologising for other peoples behaviour not their own… I have tried to respond to you all, but I think one big thanks for all of you should be enough :) (I hope)

2008-07-03: Thursday.

  • Poked mail, realised today is an all-day OpenOffice ESC conf-call; fun (or not). Call with Florian at lunch, lunch. More ESC conf-calling, interview. Late for Kelli's staff, desktop meeting.
  • Pleased to see militant leftists frustrated at the happy ending of the personal tragedy [ no doubt justified as: for the greater good of making property history ] of Ingrid B. Also amusing to see another leftist darling: Chavez, caught supporting armed aggression in a neighbouring country (while pumping up the gini co-efficient at home), all in a good cause no doubt.
  • Dinner, chatted with Sue in the garden - most pleasant.

Maemo Summit: registration open & free


Space invaders

The first Maemo Summit! - Free registration - Who is attending

Berlin, September 19-20 @ c-base - right after OSiM World

We aim to get the interesting people:

  • Maemo community rock stars.
  • Maintainers of related upstream projects.
  • Professional developers familiar with the platform.
  • A good representation of the Maemo SW team @ Nokia.
  • You.

The schedule is open to proposals. No formal call for papers, just propose and help getting it right.

People is reporting interesting stories about affordable travel and accommodation. It’s going to be fun.

Image: Space invaders, by Kurtxio (some rights reserved).

Brasero 0.7.91 released!

Hi

We've just released the last beta release in preparation for the new
0.8.x stable series.

Bugs fixed since 0.7.90 release:

- #506338 – Import Session fails on DVD+R that contains multiple sessions
- #540931 – Fails to burn an iso to DVD+RW in 0.7.90
- #540993 – Brasero displays (and uses) incorrect track durations
- #527383 – Disc Copy (Create 1:1 copy of CD) doesn't work at all
- #539959 - Crash when right clicking in plugin window
- #527383 – Disc Copy (Create 1:1 copy of CD) doesn't work at all
- #540673 – m3u playlist import problem
- #538953 – crash in Brasero Disc Burning: I was trying to copy a C...
- #531084 – Brasero crashes in strlen () when debug mode is on
- #539386 – can't compile brasero 0.7.90 with gcc 4.3 function needs one more argument
- #538299 – Window titles
- #538414 – burn speed problems
- #538346 – Does not ask to overwrite existing log file
- #538300 – Use add icon and label for add files dialog
- #534880 – Audio project track column
- #470234 – Doesn't format fresh dvd+rw before burning
- #532495 – crash when removing/moving a file that has been added to brasero
- #493495 – Growisofs stops while burning Video-DVD

New Features for 0.8.x stable series:

- normalization plugin
- cover editor
- support for DL DVDs
- automatic GStreamer plugin installation for distros that support it
- new help documentation (by Phil Bull, Milo Casagrande and Andrew Stabeno)
- no more medium ejection before disc integrity checks
- new notification system
- updated most backends to their full capabilities
- updated libburn/libisofs plugins to use latest releases
- mass file renaming/multiple audio track information edition
- fixes to comply with HIG
- some GUI improvements
- rewriting of Data project tree (now displays proportion of space used in final image for a file or a directory)
- support for FreeBSD

Bugfixes will continue for one month until 0.8.0 release
so please test it, we need your help.

Homepage: http://www.gnome.org/projects/brasero

Please report bugs to: http://bugzilla.gnome.org/browse.cgi?product=brasero

Mailing List for User and Developer discussion: brasero-list@gnome.org

Svn Repository: http://svn.gnome.org/viewcvs/brasero/

Thanks to all the people who contributed to this release through patches, translation, advices, artwork, bug reports.

Thu 2008/Jul/03

  • Mario Ðanić has another interesting post about distributed version control systems. He proposes that each developer (or at least, every maintainer) could use the DVCS of their choice, but then we could have a common web/collaboration interface to all the DVCSs.

  • My current favorite way of developing against a stable release:

    $ cat ~/bin/make-nautilus
    #!/bin/sh
    module_name=nautilus
    diff_name=~/suse/11.0/src/SOURCES/nautilus-document-centric.diff
    anchor_name=OPENSUSE_11_0_PATCHES
    branch_name=document-centric
    cd ~/src/$module_name
    git diff $anchor_name..$branch_name > $diff_name
    cd ~/suse/11.0/src/SPECS
    if rpmbuild -ba $module_name.spec
    then
        cd ../RPMS/i586
        gnomesu -c "rpm -Uvh --force *$module_name*"
        notify-send -t 0 "$module_name is installed now"
    else
        notify-send -t 0 "$module_name doesn't build!"
    fi

stable guile-gnome released

Hackers, slackers, countrymen and countrywomen:

Guile-Gnome-Platform, that beast of the dual hyphen, has finally reached stability. You might say that the API and the ABI are as stable as the hills, but we like to put it like this: "Write once, run anywhen"

(Amused tittering)

From the release notes:

There are several things that are the awesome about this code:

  • It's fully integrated!
    Instances of GObject are objects in Scheme; you can query their properties, class hierarchies, etc at runtime. You can derive new types yourself, with signals, properties, and the like. Good stuff!

  • It's fully documented!
    Start with the tutorial/reference docs for the core GObject wrapper, then branch out into individual modules.

  • Fully extensible!
    Guile-Gnome-Platform also provides a good base off of which to bind other libraries based on GLib. For example, Guile-Clutter binds almost all of the new Clutter library, with documentation, and most of that work was done in a day.

  • Stable!
    Write once, run anywhen! Guile-Gnome's API and ABI will never be changed incompatibly.

  • Scheme!
    You will be assimilated, or alternately, gnawed to death by fingernail clippings.

More info at the homepage. DANGER CAPTAIN: ASSIMILATION IMMINENT

My first blueprint for Ubuntu

Today I created a blueprint I intend to promote for Launchpad’s Rosetta workflow. Titled “The process by which translation teams can better handle collaboration” (and its matching full specification), it is my intent to describe a mechanism by which translation teams can better administrate the contributions sent by Rosetta users, provide useful feedback and take a first step toward a better relationship with upstream projects.

I kindly invite those interested in the same topic to subscribe to the blueprint and add their feedback to the specification page, specially those who like me have their feet in both upstream and Rosetta worlds.

UDS In December and MOTU Vid

A few bits of Ubuntu news for you all.

Firstly, I am pleased to announce the next Ubuntu Developer Summit which will take place from Monday 8th - Friday 12th December 2008 at Google in Mountain View in California. We wanted to get the dates up ASAP so you can begin booking time in your calendar. We were at Google a few years ago for a UDS and it was excellent, and we expecting this to be a busy and productive UDS. Oh, and the food is incredible, but that is documented well enough already. Seriously though, reserve those dates in your diary. We will have more details about registering your attendance soon. :)

See the Ubuntu Developer Summit Wiki Page for more details.

Secondly, I uploaded another video to the Ubuntu Developer Channel. In this video Daniel shows you how to patch a package; a common skill used in Ubuntu packaging.

Can’t see the video? Click Here.

We have one more video left in this collection of Learning MOTU videos which I will put online in a week or so.

Dare I ask for more?

Okay.

So I'm really excited there is an free & open source alternative to twitter.

Dare I ask if there is a free & open source alternative to Remember the Milk? It's a neat web app that lets you track your todo lists and it has a really rich api that lets you do cool stuff like receive to-dos by email (which you can then approve or not) and serves atom/ical feeds of your task lists (which you can display in Lightning/Sunbird).

openSUSE 11.1 ideas

Just recovered from the success of the openSUSE 11.0 launch, the openSUSE-GNOME team is already working on the future 11.1 (expected in December), so we are starting to get feedback for new ideas from users. Anyone can add their own ideas to this page, so if you want something new in either GNOME or openSUSE, add your ideas to the wiki.

Privacy in Europe

Obviously, European Youtube users didn’t ask for their youtube usage to be handed over to Viacom Inc.. Who knows what Viacom will do with this highly private data (which contains highly detailed information about people’s interests such as the videos they watch, the various topics they are interested in, and so on)?

I only hope that enough Europeans will formally protest at their country’s privacy agencies and/or at the European institutions. Although, I fear it won’t matter anymore as privacy nowadays has become far less important than Britney Spears or Paris Hilton.

Anyway, please find the contact details for Belgium here.

Why Identi.ca is important

Over the last 24 hours, hordes of Twitter-refugees have been signing up with the microblogging service Identi.ca. Fed up with the restricted and unpredictable service from Twitter, over the last week or two people have been jumping this way and that: Pownce, Plurk, FriendFeed, and now Identi.ca. Here's my Identi.ca stream.

Let's get something straight up-front. Identi.ca's in its early stages. At version 0.4.1 it's not yet added all the features that Twitter has now broken.

A lot of people are jumping on Identi.ca and going away again, muttering "it's not got X, I'm off back to Twitter." True, but it's not as a Twitter-replacement today that Identi.ca is important.

Here's why I think Identi.ca counts for more than just being a Twitter clone.

It's open source

Anybody can help fix it. Anybody can set up their own Laconica (the name of the underlying software.) I've seen a clutch of posts from developers all offering their advice on fixing Twitter. With Identi.ca they can just get on and help.

It's open data

When you sign up for Identi.ca you agree to license your contributions to it under the Creative Commons 3.0 Attribution license. You agree to let others share and remix your output, in return for giving attribution.

The open data ethos is baked into the codebase already. All output is available in RSS, and you can take your friends with you thanks to the FOAF exports available.

Twitter has millions of VC funding. Those folks will want a return. What does Twitter have to make money from? You and your content. Identi.ca gives you control in that situation.

It federates

Federation is one of the most enigmatic and exciting things about Identi.ca. I can set up my own server running the Laconica software, and still subscribe to people with accounts on Identi.ca's server.

This is how the XMPP instant messaging protocol works, and it's no surprise to find that XMPP is fundamental to Identi.ca's operation. Identi.ca is to Twitter as XMPP is to AIM. This may finally be the way XMPP breaks out into popular use for developers.

You've nothing to lose

Because of the commitment to open data, you've nothing to lose by giving Identi.ca a little spin. So, head over and make your own account. I added my RSS output to my Friendfeed page, along with my other output. Chris Blizzard has already added Identi.ca into whoisi. The little ripples you make in Identi.ca today can still waft out into your personal publishing pool.

And please, don't waste time complaining about "it hasn't got X". In 12 hours I've already seen Evan Prodromou, its developer, add features and fix bugs. He's got an open bug tracker, and listens to feedback.

Right now Evan seems to have his hands full dealing with the thousands of new arrivals, and to his credit, Identi.ca's still working fine.

Follow me here: identi.ca/edd

Join the conversation about this post

More Nuvi, GUADEC And A Little Clutter.

Following on from my Garmin Linux Nuvi Post, the usually obtuse LinuxDevices now has a story with more details.

Its GUADEC next week and unfortunatly it now seems I’ll be stuck manning the fort and not following along with rest of the OH gang to Istanbul. Just waaaaay to busy to take a week out currently. My scheduled Clutter guts talk is now going to be bravely tag teamed by Pippin, Tomas and Ebassi who will no doubt do a much better job than myself. Damn, I love Turkish food too.

Also Clutter wise, 0.8 is very close. It a great help if folks can keep hammering the 0.7.x developer releases and report issues. This will be by far the biggest Clutter release yet.

Openismus 2008 T-Shirts

The Openismus T-shirts for the GUADEC Istanbul conference are ready.

I wanted to do something different again, so I persuaded the people at Brandt to do a kind of Rolf Harris punk thing. It’s a little bit funky. I don’t think it will please everyone but it will be noticed. Each one is different.

PunkPunk

There was a shortage of T-shirts in these colours, so we did a small batch of classic retro-style dark green T-shirts too, with white banding and stripes with white flock-print. They are quite nice but less challenging.

Classic RetroClassic Retro

Like last time, I chose to do a small number of expensive T-shirts rather than lots of cheap ones. Scarcity adds value.

GTK+ and GStreamer on Mac

I've used Gossip and Giggle in the past as examples of creating Mac bundles of GTK+ apps. Now I have another example that is a bit more complex, in that it uses GStreamer. The test case this time is the good old...

Jamboree music player!

I dug it up from the GNOME SVN archive and it worked pretty much out of the box after cleaning up the makefiles a bit and adding support for the Mac integration library to hook up the menubar.

The latest version of the Mac bundler and the bundle file here results in a nice little bundle.

It looks like this:

GStreamer works nicely, an