You are hereblogs / karltk's neck of the woods
karltk's neck of the woods
Programming Language Popularity
Now and again, the question pops up about which programming languages are the most popular ones for writing free and open-source software. I know every person has his own favourites, that one size does not fit all, that there are different paradigms to choose from and all that.
Regardless, I decided to do some really simple plotting based on the data available through Freshmeat. You can not take this as good statistics in any way. At best, it may be indicative of trends, but probably not much else, given that far from all FLOSS projects are registered at Freshmeat, that many projects have not added the programming language to their classification, and also that there are no rules for how to classify projects involving multiple languages.
The following is a plain column plot of all languages known to Freshmeat. Note that Other and Other Scriptining Languages are obviously not languages in their own right. Also, note that some projects have classified themselves with multiple programming languages, but that this does not show up here. The reason for multiple classification may be because they are interpreters/compilers for one language (e.g. Java) and written in another (e.g. C). Some "languages" are also rather diffuse, such as Unix Shell.

We can clearly see two "leagues" in this chart; the most popular one, let's call it the Senior League, has only a handful for players, namely C (7777), Java (4470), C++ (4017), Perl (3534), PHP (3432) and Python (2175). These languages account for the bulk of the projects (25405 out of 30453).
The Junior League consists of all the other languages, and account for the remaining 5048 projects. The variation of popularity in the Junior League varies quite a bit, as should be expected, from less than ten projects all the way to about 500.

When we look at the 14 most popular languages, we see a clear segregation between the Senior and Junior Leagues, and that this line goes between Python and JavaScript.
Interestingly, even though C# (up to and including 1.1) is strikingly similar to Java, there is a huge discrepancy in the popularity among the two languages. In fact, even assembly language enjoys more widespread use among the Freshmeat projects. I find this rather peculiar, since no less than two (rather) complete development and runtime environment exists for C# on Linux (Mono and Portable.NET), which are both reasonably mature. This gets even more peculiar when we add the fact that no mature, free JDKs exist, and that redistribution of the commerical JDKs is impossible.
Update: I will do the same for sf.net tomorrow, as that seems to have a significantly different distribution, most notably with respect to C#. Håvard suggested that Windows developers were probably not aware of Freshmeat, and that this may account for the low numbers for C#.
Heia Aftenpoften
Det har lenge vært slik at ordblindhet var et minimumskrav for å jobbe i nettaviser. I den siste tiden har enkelte aviser også trappet opp med andre tiltak mot rettskriving, som for eksempel å forby stavekontroll (eller bruke Word sin), og å skrive artiklene med bind for øynene.
Resultatene har ikke latt vente på seg, men som publikum er vi enda ikke fornøyd. Jeg har den siste uken sett opptil en håndfull artikler uten nevneverdige språklige blemmer.
Heldigvis går vi mot juletider, og da har avisredaksjonen den vestlige verden over alltid hatt et siste, ultimat våpen å falle tilbake på i denne evige kampen for språklig fordervelse: Julegløgget. Det ser ut for at Aftenpoften er tidligst ute med å tanke sine skribenter med sterkt julegløgg i år, hvertfall målt ut fra tilstanden på artiklene denne uken.
Mitt favoritteksempel (trolig skrevet av en insider i saken) følger:

To which race of Middle Earth do you belong?

Entish
To which race of Middle Earth do you belong?
brought to you by Quizilla
Dagstuhl Wrapup
My lovely week at Schloss Dagstuhl has come to an end, alas. The accomodation and facilities were simply splendid. The food was very good, and in the best of grandmother styles, the kitchen personell practically forced us to eat over our limit at every meal. The coffee machine is already legendary for its quality.
Presentation
As I said earlier, my reason for going to Dagstuhl was to spread the word about Stratego/XT. I brought a hole bunch of slides on my laptop, most of them produced by Martin and Eelco for earlier presentations and tutorials on Stratego/XT. After discussing the expectations for the workshop with Jens Krinke, Mark Harman and Dave Binkley (the great organizers!), I composed a basic Stratego/XT using some of Eelco's material and some new slides of my own.
I estimated the presentation to be about 45 minutes, barring snags and lengthy questions. The actual presentation was about two hours, as people kept asking questions all the time, wanting to know if and how Stratego/XT was applicable to this and that problem. Overall, I think the ordeal was very enjoyable. There was certainly a lot of interest. Even though the presentation started after dinner in the evening, and was optional, about half the 40 workshop attendees showed up, and most of those again stayed on for the tool demo at the end.
Networking
I guess "networking" is a businessy word, so I should rather call it "socializing", but we're computer geeks, after all. Anyway, I had many good discussions with people during the week, perhaps most notably with Jeremy Singer, Rani Ettinger and Sebastian Danicic.
Jeremy is working at University of Manchester where they are applying the Jikes RVM to a simulator they have for a multi-core CPU that supports chip-level threading. This simulator gives them all kind of performance monitoring capabilities, which they use for playing with speculative execution. Today's single-core CPU's already do some speculative execution, but with multi-core CPUs, this becomes even more interesting. Jeremy showed an example (which was slightly more elaborate than this):
foo(int n) {
boolean prime = isPrime(n);
...
if(prime) { ... }
else { ... }
...
}
Suppose you have two cores available when running through foo(). When you hit the call to isPrime(), you send one of the cores into isPrime(), while the other one continues in foo(). When you reach a place in foo() where the result of isPrime() is required, you take a guess at what the result would be, and use that. At some point, the other core will have the result from isPrime() ready, and you compare your guess with the real value. If you guessed right, you saved time, if you missed, you have to throw away the calculations of the first core, and restart. Disregarding threading overhead (which is minimal on these CPUs), whenever you guess correctly, you gain time. Coming up with the best guesstimate is therefore the crux of the problem, and this is where they made good use of their simulator.
Rani is a student of Oege de Moor over at Oxford. He was working on something he called sliding. Essentially, it is a form of slicing that seems very useful for implementing many kinds of refactoring. The basic idea is to use slicing to decompose a method which accidentally or otherwise is performing two different calculations into two separate methods that can be sequentually composed. Rani's wrapping up his thesis, so I won't reveal too much more than this until I can point to his finished product. However, I think he's definitely on to something really neat.
Another person I enjoyed many good conversations with, was Sebastian Danicic, who was interested in using Stratego/XT for instrumenting programs. He was particularly keen on the Java frontend for Stratego/XT that Martin is working on. After finding Sebastian's jabstract project (thanks Martin), I now understand why he was so keen about the Java capabilities.
After charging my camera, I'll put some of the pictures online.
Live from Schloss Dagstuhl
Arrived at Schloss Dagstuhl this evening. My first impression of Dagstuhl was rather mythical, with low mists over the fields that slowly uncovered a rather nice castle. After I had settled in, it was too dark to get any good pictures, so I'll try to remedy that tomorrow.
The castle is a center for computer science (or informatics, as we say in Europe), funded by the German provinces of Saarland and Rhineland-Palatinate. It lies close to the world-reknown metropolis of Wadern, which is to say in the middle of nowhere. The castle is used to host workshops (typically full-week workshops) every week all year round (they make have a break around Christmas, I haven't asked). From what I have seen so far, the facilities are excellent, and the laid-back hospitality coupled with German efficiency makes it even better. The remote location will be a blessing.
I'm here for a week to attend a workshop on program slicing. My main mission is to promote Stratego/XT (especially our latest release). I'll do a 15 minute sales pitch tomorrow and an afternoon tutorial on Tuesday.
Note to self: The ICE is great. Stop flying. Start doing rail.
The (IBM) JDK on PPC
My angry rant about disappearing files in my previous post were not completely unfounded. Saleem picked up our slack and we now have the latest stuff in Portage.
Peter commented that there is a FLOSS implementation of Java, too, with Kaffe, Classpath and all these friends. That is true. We provide these as well. We are about choice, of course.
Unfortunately, Kaffe is not (yet) a drop-in replacement for the commercial JDKs. Both Classpath and Kaffe are getting there, and fast, but never fast enough. If you're like me, whining that there should be a good, free software implementation of Java, join Classpath, Kaffe or one of the other efforts to make this happen.
On a similar note, if you're whining about Java development in Gentoo lagging behind lately, stop whining, join us on gentoo-java@lists.gentoo.org and put your code where you mouth is.
Stratego/XT 0.16 is out!
Grab it while it's hot!
Really cute and cuddly features:
- Manual
- Library API reference
- XTC API reference
- Full set of man pages (bundled)
Minor IBM crackdown on Gentoo
At the end of September, Kurt Steubing, Relationship Manager for the Software Group at IBM sent us a mail, notifying us that we can no longer redistribute the IBM JDK. At the time, we thought we had secured permission for redistribution. More than a year ago, we contacted IBM and got the go ahead to put the binaries for both the JRE and JDK on our servers. They even sent us a license to prove that we could.
Never trust a lawyer (in all fairness, we do not have evidence that whoever sent us the license is a laywer). As it turns out, there was obviously some confusion on IBM's part, as the license we got didn't really allow redistribution, if you read it carefully enough. Unfortunately, we didn't, not being lawyers ourselves.
Enter Kurt Steubing, who found (or was otherwise informed about) the presence of the IBM JDK files on one of our German mirrors. The mirror admin forwarded his request for removal to Gentoo, and the case ended up at our table, in the Java Team. In his mail, Kurt informed us in a professional and friendly tone that we had to remove the files from our mirrors, asap. We produced our license, which turned out to be invalid, and complied immediately after being informed of this.
The result is that dev-java/ibm-jdk-bin and dev-java/ibm-jre-bin now have the fetch restriction turned on. You need to download the files from IBM yourself, and pray to available deities that they haven't removed the particular version we packaged, lest the md5sums break. Unfortunately, changing the binary contents of releases without changing the filename, and also removing older revisions and versions, is commonplace both for the IBM and Sun JDKs, so bear with us on this.
This is going to bite our PPC users quite a bit, as the IBM JDK is the only stable, well-performing JDK available for that platform. If you've ever tried relying on packages with fetch restrictions, you know exactly how painful it is to see Portage stop and say that you have to perform a lot of menial, useless tasks just to fetch one file or two off the internet. This is why we have wget, dammit!
In his mails, Kurt indicated that it was possible to obtain a limited right to redistribute the JRE and JDK. Certainly, the JRE is redistributed all over the place, by companies small and large, so I don't imagine there should be a legal problem there. Despite clear insistence on our part that we wanted to obtain such a license, however, we have not heard back from Kurt for over a month.
I will keep you posted on the development here, but I won't pretend to offer any false hopes. We have to take into account that IBM is a huge company. Even though one part of it is bashing Sun for not open-sourcing Java, it doesn't mean that they intend to freely offer their own JDK or JRE to the open-source community, not even in binary form. </shot mode="cheap">
Where the Emperor undressed
A few weeks ago, I was running off to work one morning (okay, I was leisurely strolling to my office, just before noon), and came across this:

(Another posting where I tried to use Flock. I'm becoming less illusioned by it for every posting. Why oh why can't I drag'n'drop images into my posting? And why does it always publish when I hit "Draft"?)
Yelo: Klar til vask
I det siste har jeg faktisk hatt nok tid til å se litt TV en gang i blant. For eksempel Tufte IL, som jeg for en gangs skyld fikk med meg i dag, etter å zappet vekk fra en gruselig langsom og kjedelig film på NRK2 (Reservoir Dogs, visstnok et dokudrama om en mann som sliter med ettervirkningene av et traume i abdominalregionen).
På TV ser man så mangt, for eksempel reklame for søkemotorer. I det siste har yelo vært ganske prominent. Tor Håkon minnet meg på dette over IRC, rett etter at jeg kom ut av dusjen i kveld. Da tenkte jeg at "søren klype, dette må testes".
I beste narcisistiske ånd, søkte jeg på karl trygve kalleberg, og fikk meg en god latter:

Tydeligvis var det ikke mye hjelp i den dusjen...