Yesterday I finally found the time to update gimp-plugin-registry, the (hopefully!) largest and best collection of plugins for The GIMP. As usual here comes a short summary of the changes:
I'm constantly amazed by how blas electricians are with regard to live voltage.
I'm used to mixing with software developers, who have a healthy fear and respect for "hardware", or physicists who're a very cautious bunch on the whole.
A week or two ago I developed a leak in my flat's roof, which lead to a small amount of minor water damage and a failure in my lighting.
I've had a couple of people out to look at it, and they all seem quite happy poking around with the (potentially soggy) electrical cables without me disconnecting the ring / main supply.
Still I guess they must know what they're doing; they've not previously been killed ...
ObFilm: Juno
While writing my diploma thesis, I often wished I had a blackboard in my room: A place to quickly scribble some ideas on, somewhere where I can easily erease and replace stuff. Also, somewhere where you can literally (and not just figuratively) step back from and look at from the distance.
For my 25th birthday, my parents organized a discharged part of a blackboard from my old scool, and yesterday, we installed it in my room in Karlsruhe:

My blog is written in English, even though I sometimes post content relevant locally. Anyway, I want this to be as widely known as possible. We are about to launch a website/community for my University's cyclists, BiciUNAMonos. Please note the site I'm linking is still very preliminary in several ways. But that's the least relevant for now.
I am translating here a message written by fellow cyclist (and researcher in the Institute of Astronomy of my University) Sergio Mendoza.
Regarding the fatal cycling accident in Ciudad Universitaria Yesterday night I got home, and was quite surprised to open my mailbox and find a considerable amount of messages under the subject Urgent: Fallen cyclist! I immediately noticed something was very wrong, and was surprised they were contacting me. When I decided to read the first such message, I realized what happened: Dr. Jorge Villanueva was run over by the Puma [internal University service] bus number 14, route 2, which was being driven over the speed limit. This happened last Sunday, April 11. On Sundays, all of Ciudad Universitaria becomes a cycling and running circuit. I was immediately brought back to the moment that, when I was leaving my office in the Astronomy Institute and heading towards Cerro del Agua avenue, a lady driving over the speed limit on the circuit that comes from Metro Universidad threw her car at me. I saw her at a few centimeters distance from her windshield... To the day I don't know how I pulled my bike away, as I was going to hit the windshield with my shoulder. Everything happened in slow motion, I just heard several cars honking at this imprudent lady. I didn't have a scratch, but got excessively close to getting a strong hit, and with the adrenaline raging I gave a kind caress with my closed fist to her brand new car. I had to free my adrenaline somehow... My legs were trembling when I tried to pedal. I told her, lady, I am excessively visible in my bike, why did you do this? , she didn't answer, she just looked despectively at me. This kind of accidents happen every day in the University and its main entries. Precisely today, a University professor threw his car at me entering the University via Cerro del Agua. When I reached him and confronted him, he told me completely sure of his words that I was invading the lane with my bike, and that it was my fault. Anybody would have thought a car-driving university professor is capable of reading the Metropolitant Transit Regulations that clearly states on its 1st article: The priority for using the public space, for the different transport modes will be according to the following priorization: I. Pedestrians; II. Cyclists; III. Users and providers of massive, collective or individual public transport service; IV. users of particular automotor transport; and V. users and providers of freight transport. We are now organizing to put up the first ghost bike in Ciudad Universitaria. This happens few days before the formal inauguration of BiciUNAMonos, the universitary association of urban cyclists; we will do this remembering our university mate. I see every day more people in the University hitting their bike pedals to get to their faculties, centers and research institutes, but what is striking is the lack of University infrastructure. The few cycleways we have are built to use a bycicle system that is open only until 16:00. It is good, but it is in no way useful for those of us who use the bike every day and at every hour, no matter the weather. The main problem lies at the communication points, when cyclists arrive from outside Ciudad Universitaria and have to take the regular circuits to reach the cycleways. The Transit Regulation, in the 1st article I quoted above, defines in an excellent way the priorities that must exist to allow human movility. In this regard we have to mention that:Coincidentally, today I also had a freightening experience. Taking one of my usual routes to work, going up from the sporting area in the Western half of the campus (just before where the map lists the highest point in my ride), just by Investigaciones Biom dicas, I heard a car hitting the breaks behind me and passing me (on my right side) quite narrowly. I was, as always, driving towards the center of the lane, to be able to respond to unforseen events (as this one, precisely). The Universitary authorities had the great(?) idea of placing round, small bumps before the Pumabus stations to avoid drivers parking in front of them. I have seen a strong accident caused by them, and was close to suffering one myself some months ago. I know that just after Biom dicas there are some such bumps, so I never ride too much to the right I don't know what was on this driver's head. Ciudad Universitaria has a 40 Km/h speed limit. Yes, it might seem too low - Circuits are wide and well planned. But there is a lot of cyclist and pedestrian transit, at all times, and I must recognize such a limit is well in place. I often take a longer route to my Institute, bordering the University along Av. Delf n Madrigal. People tell me I'm crazy, as this is an avenue that's often taken at high speed - Usually, cars pass me by between 60 and 80 Km/h. However, I even feel safer going that way than going inside the University. Contrary to the popular belief, Universitary people do not have better driving habits than the bulk of the population. And it's often much easier to drive along a way where the traffic even if it goes at three times my speed runs only in one direction, unlike the swarming of people going in every possible direction inside the main campus. Anyway, last Sunday we lost a University professor, we lost a cyclist. Some people lost a friend, a family member. We have to make this case well known, we have to speak with the authorities so they see the Bicipuma system is good, but not enough. Cycling is the only way to go for a city as complex as ours. A much needed first step is to allow proper vial connections linking the University and the many avenues that surround it. Another one is to make a campaign so the cyclists are not seen as Sergio regards as intruders in the streets The street belongs to us all. Cyclists should never drive on walkways or among pedestrians. Drivers need to learn to share the streets with us.The last thing I wanted was to formally announce BiciUNAMonos reminding a fallen cyclist and dedicating a ghost bycicle to his memory in Ciudad Universtiaria, but we don't have a choice. We have to make it very clear to the University community that the bicycle is the best transport system, and that the drivers' imprudence inside Ciudad Universitaria must be strongly punished. Sergio Mendoza
- The pedestrians must be enormously protected with walkways and semaphores to allow them to safely walk. In Ciudad Unviersitaria there are many places that don't even have a walkway or semaphores, and drivers do not respect the pedestrian's preference. Also, now in the central area of Ciudad Universitaria we have the Pumabus system on a confined lane, providing an excellent service to the pedestrians to move within the campus.
- The cyclist comes next in this priorization, but there is nothing obvious for him. There are a couple of cyclist ways, usually invaded by pedestrians, and explicitly made to use the Bicipuma system. Cyclists need their own lane for circulation in the Universitary circuit; pedestrians have walkways, Pumab s has its confined lanes, but the cyclists still lack it. The third lane that remains is precisely for the IV and V entries in the Metropolitan Transport Regulations. They can perfectly share the remaining lane in the campus.
President
http://www.biciunamonos.org
Upload accepted by organisers.
Upload time has been 3h49'29" (my watch says 27", eh!).
That was a good one, really (actually, I can compare to only 3 as it
was my fourth marathon after Paris and Cologne 2009, plus the
unofficial Rambouillet Forest marathon I ran alone 6 weeks after Paris
2009).
For marathoners around, here are the chronometric data. Please note
that GPS watches tend to overestimate the distance, mostly because of
the jerky way one runs in mass events, as well as geometric
considerations related to the imprecision of GPS (imprecision may be
lateral and thus the line recorded by the watch is often less straight
than the real one). For instance, according to my watch, Paris
marathon was 42.63km long, so an overestimate by nearly 500meters. As
a consequence, the recorded speed of 5'23"/km should be corrected to
5'25". So, times below should be increased by 2 seconds.
# update-alternatives --config libblas.so.3gf There are 3 choices for the alternative libblas.so.3gf (providing /usr/lib/libblas.so.3gf). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/lib/atlas-core2sse3/atlas/libblas.so.3gf 55 auto mode 1 /usr/lib/atlas-base/atlas/libblas.so.3gf 35 manual mode 2 /usr/lib/atlas-core2sse3/atlas/libblas.so.3gf 55 manual mode 3 /usr/lib/libblas/libblas.so.3gf 10 manual mode # update-alternatives --config liblapack.so.3gf There are 3 choices for the alternative liblapack.so.3gf (providing /usr/lib/liblapack.so.3gf). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/lib/atlas-core2sse3/atlas/liblapack.so.3gf 55 auto mode 1 /usr/lib/atlas-base/atlas/liblapack.so.3gf 35 manual mode 2 /usr/lib/atlas-core2sse3/atlas/liblapack.so.3gf 55 manual mode 3 /usr/lib/lapack/liblapack.so.3gf 10 manual modeThanks to this, it is just trivial to switch from one to the other... Conclusion:
The Debian GSOC admins have made it clear that it is possible for DDs to be selected as GSOC students (even if people who are not Debian contributors will be prioritized). So, if you are a student, a Debian Developer, and interested in getting paid to work on Debian during the summer, it s a very good idea to apply! For the details, see this blog post.
Note: the goal of this post is not to start a flamewar, but to make sure that everybody is fully aware of the unrestricted selection process. Since we are going to accept DDs as students anyway, let s at least try to get the best applications.
Don t expect to get a glass of tap water at a restaurant or caf ; it s an unusual request that probably won t be understood or honoured. Lonely Planet GermanyNow, before I go on, I want to clarify that this post is NOT a complaint of what I saw in Germany and Prague; it s just a description of how it was surprising to these American eyes, and perhaps also a description of how the American approach such a mundane topic might be surprising to people from elsewhere. (Update: I want to clarify that I only visited 3 cities in Germany plus Prague. I don t want anybody to assume that I m making generalizations about the entire continent here, despite my title; I think the comments reflected that I didn t make this point clear enough. I lack data to draw much of any generalization at all; this is more of reporting on my experiences than anything else.) Utilitarian Water I noticed that the vast majority of toilets I saw in Germany and Prague are of the extremely water-saving variety, with an option for a small or a large flush. These toilets exist in the USA, but are still rather uncommon here. I was glad to see this attitude of conserving water. I was a bit surprised when I took a shower at our hotel in Berlin. Although that hotel was extremely environmentally-conscious in every other way including the toilets, light switches with RFID sensors and timers, etc the shower head was the most wasteful of water I had seen in quite a few years. I felt rather guilty of using so much water for a shower. But our hotel in Prague took shower heads to the next level. The shower head there was this huge square monstrosity, about a foot long on each side. I have never seen a shower head that big. It had a voracious appetite for water, too. Although it could be pointed in any direction, doing so was useless because, even at full blast, it was clearly getting not nearly enough water to propel the spray forward. It seems that this shower head needed special water-guzzling plumbing. But even without it, I felt even more guilty for showering in Prague. I suspect that I used more water for the two showers I took there than I would have over an entire week at home. I also very much suspect that this shower head would be illegal in the USA due to its water consumption. (I should note as an aside that the shower heads I saw in private homes were no different than American ones.) One thing I didn t see was lawn sprinklers. This may have been because there is less open grass in the places we visited, or perhaps because spring hadn t yet really hit. In any case, I wonder if our American habit of pumping water from deep beneath the ground, only to shoot it up in the air and spray it back on the ground again might appear a bit odd to others. Drinking Water In Restaurants We did a lot of walking in Europe, and sometimes we d have walked awhile to get to a restaurant. I really prefer water when I m thirsty, and ordered water with my meal at restaurants a few times. I stopped doing that, though. The presentation varied, but usually it went along these lines: they brought a glass bottle to the table, it cost EUR2 EUR5, and generally contained almost as much glass as water. The most impressive display of water was at a Berlin restaurant. I wanted some water, and so did Terah. So the waitress suggested we could share an EUR 4.90 bottle (0.75L). Sounds good, I guess although it s less water than you d get in a typical American bottle for one person, it seemed a lot by typical German restaurant standards. A few minutes later, our water arrived. It required the waitress to use a full tray to deliver our water and its, well, water accessories. First she carefully placed a frosted plastic water holder, precisely centered on the table between the two of us. Into this, she carefully placed the water bottle. It was, of course, made of glass, and also tall taller than most wine bottles, though containing less actual liquid. I am not yet sure of the purpose of the holder; it certainly wasn t to keep the water cold, as it was served warm. Perhaps they feared the bottle s impressive height acting as a sail and getting knocked over by a gentle breeze. In any case, next came our water glasses, which appeared to be exactly like wine glasses, but bore the logo of the company that bottled the water etched in the glass. After that, she picked the water bottle back up out of the holder, carefully opened it (it was just a regular twist-off lid), and then poured water into each of our glasses. She was careful not to have even a drop run down the side of the bottle, and filled each glass precisely 2/3 full. The glasses were, of course, positioned carefully on the table, and the bottle of water returned to its place of honor within the water bottle holder. This process consumed most of the small quantity of actual water in the bottle. I do believe that is the most elaborate presentation of a small amount of good ole H2O I have ever witnessed. It was made with the kind of care I would expect to be shown to someone that had just bought a $100 bottle of wine, not a EUR5 bottle of water. We had walked a mile (1.6 km) to get to that restaurant, and I was indeed a bit thirsty. I wasn t sure I wanted to drink all of my tiny quantity of water presented so elaborately all at once, so I had a sip of the beer I had the good sense to order along with the water. The beer, incidentally, cost roughly the same per liter as the water and was simply plonked down on the table with a complete lack of fanfare. Sadly, beer is not really very good for quenching thirst, due to its diuretic effects over time. Another surprise came at a restaurant in Prague. It appeared to have the typical prices for water, so I ordered a local Czech orange soda to drink. It, like the water, was served in a smallish glass bottle. In any case, I ordered a traditional Czech goulash to be served in a bread bowl, while Terah ordered some ribs. The waiter took our orders and menus, and returned a minute later bearing a bowl full of water and a lemon slice. This he put next to me, and announced, wash for you. My reaction was: Hmmm. This is different. (Which is why we went to Europe, after all!) What is this for? Did he think my hands looked dirty and needed to be washed before eating? Or did he think I would get them dirty while eating, and somehow fail to use my napkin? It turned out that the use of it became clear. I ate the goulash using the supplied spoon, but the bread bowl it was served in was of course edible too. It turns out it is pretty much impossible to eat a bread bowl that had contained a stew without getting your hands dirty, and the wash turned out to be quite practical and useful. It was free to wash my hands in, but I m sure would have cost EUR5 had I wanted to drink it. Drinking Water American Restaurants Some of you reading this may never have experienced water in an American restaurant, so allow me to explain. In a typical American restaurant, water is free and comes with unlimited refills. Americans generally think of water as healthy (and our doctors and government medical experts urge us to drink plenty of it), and water in a restaurant is a good way to save money while dining. It would generally be considered questionable service if your glass of water at a restaurant got less than half full, and really quite bad service if it sat empty for more than a minute or two. A waiter at an American restaurant will typically go around with a pitcher of ice water. If your large water glass isn t completely full, the waiter will pick it up and step a few steps back from the table before filling it from the pitcher. The waiter will then dump water and ice from the pitcher into it, usually overflowing the top such that some water and ice spills on the floor (so now you see the point of stepping back from the table). The glass will then be returned to your table, wet sides and all. It will be completely full, so you have to be careful not to spill when you take your first sip. The fancier or more expensive American restaurants will offer a version of this, though without the spilling on the floor part. Usually at one of these restaurants, you ll automatically get water set out for you when you arrive. This is free, and if you order another beverage, you ll still keep your water. (Though at any restaurant, it would be quite acceptable to order water along with your other beverage.) Needless to say, this water is coming from a faucet, not some glass bottle, but I m fine with that. A few American restaurants have bottled water on the menu, but I can t recall ever seeing somebody with one in a restaurant. Drinking Fountains Drinking fountains are common in the United States. They provide free tap water to anyone. You can find them near almost any public restroom, whether indoors or outdoors. You can also find them in virtually every park, along some walkways or bicycle routes, in airports and train stations, and even in museums. They re so common that I rarely even think about being able to find water in a city if I m thirsty. Often you ll find them installed in groups of two or three, with one at a lower height so as to be usable by children or adults in wheelchairs, and another at a regular height. Many indoor ones even contain integrated chillers to make the water cold (which, sadly, probably more than negate the environmental benefits of water fountains.) I saw exactly two drinking fountains in Europe, and I can say I got a drink at 100% of the drinking fountains I saw there. One was in the Hamburg airport, but notably it was at the place where you wait to have them check your passport. So you can use a drinking fountain in Hamburg, but apparently you must do so before you have officially entered Germany. The other one was in the Prague airport. It was in an out-of-the-way corner, on the lowest level, by the gates for the people that are flying out on the small planes. Which we were. Above it was a placard bearing a icon indicating that this was, in fact, a drinking fountain and how to use it. I was surprised at the need for the icon at first, but less so after I observed a man walk by, glance at the fountain, and wash his hands in it (rather than do so at a sink in the restroom 5 feet away). As a result, we were sometimes a bit thirsty in Germany. By the time we got to Leipzig, we realized what was going on and bought a Coke bottle which we could refill from the tap water in restrooms as we went along. (This we kept until it was confiscated at a museum in Prague). I didn t see many Germans carrying around bottles of water, but it was still cold, so it s possible they were but were in a coat or bag. I was left with the somewhat unwarranted conclusion that some Germans must be either always slightly dehydrated, carrying around hidden bottles of water, or paying EUR2 for a small plastic bottle of water all the time. In the USA, we do have bottled water. Among people that care about such things, there are certain people that drink only from bottled water as much as possible, and then there are other people that view bottled water as exceptionally expensive and an environmental catastrophe and avoid it as much as possible. I m part of that latter group. I ve noticed that statistics show that Germans consume more bottled water per capita than Americans do, which is not really a surprise given what I observed. Conclusions Part of the reason I wanted to go to Europe was to experience different approaches to things, and we surely did. I didn t expect it to lead to a blog post about something as mundane as water, but here it has. I ve got to say I like the overall attitude of water conservation in Germany, which seems to have gone further than it has in the USA. I also like the system of water fountains we have in the USA, which also helps the environment by reducing demand for plastic water bottles. The wash for me in Prague was just great. One of those moments where I was completely surprised (and in a good way) by something. (I m just glad the waiter spoke a bit of English, because I wouldn t have figured it out at all otherwise.) In the end, part of the fun of traveling is learning about these differences. So next time, we ll just plan on finding a bottle to carry around at the start of our trip, and then thirst won t be a problem. Perhaps I ll even try washing my hands in a drinking fountain.
After several other Debian developers convinced me that a ShortURL service,
which is under control of a Debian Developer would be useful for them, I've
spent some time to write the necessary code for it. And if it will be used
regulary, I'll ask DSA if they want to host it on a proper machine.
So I'm happy to announce the public beta test of deb.li (also available
under go.debian.net)! Please note that neither the content of the pages nor the CSS is finished...
As this should not become just another random, spammer-attracting ShortURL
service, I will not provide a web based form to add new URLs. Instead new URLs
have to be added via a simple JSON-RPC based interface. Other ways to add new
URLs will be added on request (or by sending patches ;)), at least an
email-gateway similar to db.debian.org is planned.
The small piece of documentation which exists so far is available at
wiki.debian.org/deb.li
And if you want to give it a try now, log into alioth.debian.org and have a look
into /var/lib/gforge/chroot/home/users/bzed/godebian-client- the usage is documented in the README file and should be pretty straight forward. I hope it will be useful - comments, bugreports and patches are welcome!
ELKI: Environment for
DeveLoping KDD-Applications Supported by Index-Structureshas been a major part of my research the last one and a half year. In a few
words, it's a Java environment for research on data mining algorithms.In reality, it's a huge piece of software, providing various data types,
parsers, distance functions (including specialized distance functions for
color histograms or time series; 20+ total), index structures and tons of
algorithms (with a focus on clustering, correlation clustering, subspace
clustering and outlier detection methods; 40+ total). And providing a way to
plug all these together in just about any way you can imagine. In fact, some
algorithms are implemented just by plugging together other algorithms and
distance functions.The 0.3 release adds more than a dozen outlier detection algorithms
(the total is somewhere like 16, with some extra ones I didn't get around to
clean up for the release branch yet) and a whole set of visualizations and
a new convenience GUI for easier parameterization.It's all on the
ELKI homepage.If you know what WEKA is, then ELKI is probably also interesting for you.
But currently, we do not have much classification in ELKI. If you are into
classification, you'll be better of with WEKA. ELKI is aiming to be to
Knowledge Discovery in Databases (you know, the unsupervised thing) to what
WEKA is to the Machine Learning (you know, the supervised thing) world.If you don't know all these terms, you'll probably need to browse through
some literature to get familiar with the concepts and some of the algorithms.
ELKI is not (yet?) an application that will just work on whatever data you
want to throw at it. RapidMiner is another established application that
can help you there better.As for application in commercial use, note that ELKI is designed in a way to be
extensible (to help us in research) and clean (to help in teaching; I
constantly have some students use ELKI as base for their projects), and it
also is a moving target. The next release will likely feature a completely
new database layer, to allow us to add our latest index structure research
and support online algorithms. Performance and the ability to scale to
arbitrary sizes of data is not of high priority to us.So for commercial applications, you might want to implement it on your own,
connect it to your favourite DBMS and optimize it how you need it yourself.
(When we need to scale, we'll just run it on a 128 GB system, that will take us
far enough). Plus, you'll have to talk to us about a license.But: if you are interested in unsupervised data mining, such as clustering and
outlier detection, then ELKI might offer you are large library to base your
research on, without having to start from scratch with everything.
The additional resources provided by Sun allowed us to make major improvements to Tcl and Tk. Scott Stanton and Ray Johnson ported Tcl and Tk to Windows and the Macintosh, so that Tcl became an outstanding cross-platform development environment; Windows quickly came to be the most common platform. Jacob Levy and Scott Stanton overhauled the I/O system and added socket support, so that Tcl could easily be used for a variety of network applications. Brian Lewis built a bytecode compiler for Tcl scripts, which provided speedups of as much as a factor of 10x. Jacob Levy implemented Safe-Tcl, a powerful security model that allows untrusted scripts to be evaluated safely. Jacob Levy and Laurent Demailly built a Tcl plugin, so that Tcl scripts can be evaluated in a Web browser, and we created Jacl and TclBlend, which allow Tcl and Java to work closely together. We added many other smaller improvements, such as dynamic loading, namespaces, time and date support, binary I/O, additional file manipulation commands, and an improved font mechanism. Unfortunately, after several years, Sun decided that they wanted to promote one and only one language. And that language was Java. So Ousterhout and many people from his team decamped to a startup that Ousterhout founded, called Scriptics, where the Tcl and Tk innovations continued:
In 1998, Scriptics made several patch releases for Tcl 8.0 to fix bugs and add small new features, such as a better support for the [incr Tcl] extension. In April 1999, Scriptics made its first major open source release, Tcl/Tk 8.1. This release added Unicode support (for internationalization), thread safety (for multi-threaded server applications), and an all-new regular expression package by Henry Spencer that included many new features as well as Unicode support.
However, as many a company based around open source was to find later, it's a tough space to be in. Scriptics changed its name to Ajuba, and was eventually sold (at a healthy profit, apparently, making it a relative dot com success story, all in all) to Interwoven, for the "B2B" technology that Ajuba had developed. Interwoven was not interested in Tcl, particularly, so, to create a system for the ongoing development and governance of the language, the "Tcl Core Team" was created.
This was something of a blow to Tcl, but certainly not fatal: Perl, Python, Ruby, PHP, Lua have all had some paid corporate support, but it has by no means been constant, or included large teams.
At the same time in the late 90ies, open source was really starting to take off in general. Programmers were making all kinds of progress, and had begun to make Linux into what is today the world's most widely used server platform, and laying the groundwork for the KDE and Gnome desktops. While these may still not be widely used, they are for the most part very polished systems, and leaps and bounds better than what passed for the 'Unix desktop' experience in the 90ies.
One of the key bits of work that was added to Tk was to make it look pretty good on Microsoft Windows systems. This was in an time when the "enterprisey" folks were turning away from Unix in the form of AIX, Solaris, HPUX, et al. and taking up NT as the platform of choice, so it was in some ways sensible to make Tk work well there, and in any case as a cross platform GUI toolkit, it ought to work well there in any case.
And, on the Unix side, Tk emulated the expensive, professional Motif look and feel that serious Unix programmers used. What could go wrong?
As Gnome and KDE continued to mature, though, what would become one of Tk's major (in my opinion) marketing blunders took root. I have it on good authority, from someone who was there in the office, that the Scriptics guys working on Tcl and Tk viewed Gnome and KDE (and the Gtk and Qt toolkits) as not really worth their while. To be fair, since Tk has always been under a liberal BSD style license, the Qt toolkit has always been "off limits". Still, though, the attitude was that Tk was a standalone system, and since it ran on pretty much any Unix system, it didn't need to bother with Gnome or KDE. Gradually, though, as more and more people used Gnome and KDE exclusively on Linux, the Tk look and feel began to look more and more antiquated, a relic from the 1990ies when Motif (which has since pretty much disappeared) was king. Tk applications started to really stand out by not looking at all like the rest of the operating system. And, while Linux may not be responsible for a vast portion of the world's desktops, it is widely used by developers, who were turned off by the increasingly creaky look of the Tk applications they saw.
Tk is and was actually a fairly flexible system, and it would have been possible to tweak the look and feel to make it look a bit better on Linux, without even doing any major work. Maybe not perfect, but certainly better looking. Nothing happened, though.
Another problem was that Tk and Tcl made it so easy to create GUIs that anyone could, and did, despite, in many cases, a complete lack of design skills. You can't particularly blame the tools for how they're used, but there was certainly a cultural problem: if you read most of the early Tcl and Tk books, and even many of the modern ones, there are hundreds of pages dedicated to exactly how to use Tk, but few to none explaining even basic user interface concepts, or even admonitions to the user to seek out that knowledge prior to attempting a serious GUI program.
The end result is that a lot of Tk programs, besides just looking "old fashioned" had fairly poor user interfaces because they were made by programmers who did not have a UI/design culture.
Contrast that with Gnome and KDE, which have made a point of focusing on how to make a good GUI for their systems, complete with guidelines about how applications should behave. It may have taken them some time to get things right, but they have done a lot to try and instill a culture of creating high quality, well-integrated GUI's that are consistent with the system where they run.
Lately, there has been a lot of work to update the Tk look and feel, and it has finally started to bear fruit. However, in terms of marketing, the damage has already been done: the image of "old, crufty Tk" has been firmly planted in countless developers' minds, and no amount of facts are going to displace it in the near future.
Another problem Tcl faced, as it grew, was the tug-of-war between those wishing to see it small, light, and easy to distribute embedded within some other program, and those wishing it to become a "full-fledged" programming language, with lots of tools for solving every day programs. Unfortunately, that tug of war seems to have left it somewhere in the middle. Lua is probably more popular these days as an embedded language, because it is very small, and very fast, and doesn't have as much "baggage" as Tcl. Meaning, of course, that it doesn't do as much as Tcl either, but for a system where one merely wishes to embed a scripting language, without much 'extra stuff', Tcl's extra functionality is perhaps a burden rather than a bonus. On the other hand, while Perl was happily chugging along with their CPAN system for distributing code, giving users easy access to a huge array of add-on functionality, and Python was building up a "batteries included" distribution, that included a lot of very useful software straight out of the box. Tcl, on the other hand, chose to keep the core distribution smallish, and only lately has got some semblance of a packaging and distribution system, that is, however, run by ActiveState, and is (at least according to a cursory glance at the Tcl'ers wiki), not even fully open source. The lack of a good distribution mechanism, and, in the meantime, eschewing a larger, batteries-included main distribution left Tcl users with a language that, out of the box, did significantly less than the competition. Technically, a Python style "big" distribution would not have been all that difficult, so once again, I think this is a marketing problem: a failure of the Tcl Core Team to observe the "market", assess what users needed, and act on it in a timely manner.
Somewhat related to the large Tcl vs small Tcl issue was one particular extension, or extensions to the language that was noticeably absent: a system for writing "object oriented" code. Tcl, at heart, will never be an OO language through and through, like Ruby or Smalltalk, but that doesn't mean that an OO system for it is not a useful way of organizing larger Tcl systems. Indeed, Tcl's syntax is flexible enough that it's possible to write an OO system in Tcl itself, or, optimizing for speed, utilizing the extensive C API in order to create new commands. Over the years, a number of such systems have arisen, the most well-known being "Incr Tcl" (a play on the incr command, which is akin to += 1 in languages like C). However, none of these extensions was ever included with the standard Tcl distribution or somehow "blessed" as the official OO system for Tcl. This meant that a newcomer to Tcl wishing to organize their code according to OO principles had to pick a system to use from several competing options. And of course, newcomers are the least able to judge a complex feature like that in a language, making it a doubly stressful choice. Furthermore, even experienced Tcl programmers who wanted to share their code could not utilize an OO system if they wanted their code to work with just standard Tcl. Also, if their code had a dependancy on some OO system, it would require the user to download not only the extension in question, but the OO system it was built on, which, naturally, might conflict with whatever OO system the user had already selected! As of Tcl 8.6, thanks to the work of Donal Fellows, Tcl is finally integrating the building blocks of an OO system in the core itself, but this effort is probably something like 10 years too late.
Some other more or less minor things that have taken too long to get integrated in the Tcl or Tk distributions include the PNG format (still not there in a production release of Tcl), a readline-based command line (Tkcon is nice, but not a replacement for simply being able to type "tclsh" and get a nice, functional shell like Python, Ruby and most other languages have. This could easily lead to a bad first experience for someone trying out Tcl). Tcl also took too long to integrate a first-class hash type (accessed with the 'dict' command), which only appeared in 8.5. Its "arrays" aren't bad, but don't quite have the full power of a hash table as dict implements them. Once again, the code to do these things was/is out there, it has just been a matter of integrating it into Tcl and Tk, which has been a slow process.
One actual technical problem that Tcl faces is the concept that all values must be representable as a string. This is more or less ok for things like lists, hash tables or numbers, but is problematic when the user wishes to represent a value that simply isn't a string. A basic example is a file handle, which at the C API level is a FILE*. How does Tcl get around this? It keeps an internal hash table with a Tcl-script accessible string, such as "file5" that points to a FILE * value that is used internally by file commands. This works pretty well, but there is a big "but": since you can compose a string like "file5" at any time, that must be able to access the actual file pointer, you can't do any sort of "garbage collection" to determine when to clean things up automatically. Other languages have explicit references to resources, so the program "knows" when a resource is no longer referenced by the rest of the program, and can clean it up. Therefore, the programmer must explicity free any resources referenced this way. This explanation is simplifying things somewhat, but it is something I view as a technical problem with Tcl.
If you've been following along, you've noticed a lot of "these days" and "recently". That's because Tcl is still very actively developed, with a lot of new ideas going into it. However, if you look at the release dates, it seems that after Ajuba was sold off, and Ousterhout pretty much abandoned an active role in the language for good, placing it in the hands of the Tcl Core Team, there was a lull in the momentum, with Tcl 8.5 taking 5 years to be released.
This is actually, in my opinion, an interesting phenomenon in languages: you risk hitting some kind of local maximum when your language is popular enough to have a lot of users who will be angry if things are changed or accidentally broken in the course of big upheavals. So you have to slow down, go carefully, and not rock the boat too much. On the other hand, there is an opportunity cost in that newer languages with less to lose can race ahead of you, adding all kinds of cool and handy new things, or simply fix and remove "broken" features. Erlang is another system that has, in my opinion, suffered from this problem to some degree, but this article is long enough already! Once again, though, not really a technical issue, but a problem with how the code was managed (and not an easy one to solve, at that).
A Tcl failure that I was personally involved with was the web infrastructure. What went on to become Apache Rivet was one of the first open source Apache/Tcl projects, and was actually quite a nice system: it was significantly faster than PHP, and of course made use of Tcl, which at the time had a large library of existing code, and could be easily repurposed for projects outside the web (or the other way around: non-web code could be brought in to a web-based project). One thing I ought to have done differently with the Apache Rivet project was listen to the wise advice of Damon Courtney, my "partner in crime" on the project, who wanted to see Apache Rivet have a fairly "fat" distribution with lots of useful goodies. Rails and Django, these days, have shown that that's a sensible approach, rather than relying on lots of little extensions that the user has to go around and collect. The code was out there, I should have helped make Rivet do more "out of the box".
A problem that is and it isn't: the syntax. Tcl's syntax is amazingly flexible. Since everything is a command, you can write new commands in Tcl itself - and that goes for control structures, too! For instance, Tcl has a "while" command, but no "do ... while". It's very easy to implement that in Tcl itself. You simply can't do that in most "everyday" languages. However, this comes at something of a "cost". The syntax, for your average programmer who doesn't want to go too far out of their comfort zone, is perhaps a little bit further afield from the C family of languages than they would prefer. Still though, a "human" problem, rather than a technical one. Perhaps, sadly, the message is that you'd better not "scare" people when introducing a new language, by showing people something that doesn't look at least a little bit familiar.
Conclusions? First and foremost, that, gradually, Tcl and Tk continue to be improved. However, if one visits developer forums, there are also a lot of negatives associated with the Tcl and Tk "brands", and I am not sure if it will be possible to rectify that. So what can we learn from the rise and subsequent "stagnation" of Tcl?
After that, we walked through the old trade fair grounds. Leipzig has a long history as a trade center, and after they built the new trade fair grounds, the old ones were reused for other things except for the old Soviet building, which is now both gaudy and abandoned. We picked up Fritzi, who is a very cute 4 years old, from preschool and returned to their house for supper.
After that, Brad and I went back into town, intending to hear a reading at the old city pool. When we realized it was a different day, we walked around the city center for awhile and then had a beer at a yes combination cafe/laundromat.
Thursday was our day to explore the city. Brad showed us a couple of buildings in the university, including the library, then dropped us off at St. Thomaskirche. That s the church where J. S. Bach was music director for many years, and was buried. Like so many, it was impressive in its height and history.
Next we went to the Stasi museum. The Stasi were the feared and powerful East German secret police during the Communist times. The museum itself was housed in the former Stasi headquarters for Leipzig and was involved with the history of the overthrow of the Communists. The museum covered a lot of the history of the Stasi, including its frantic last days during the 1989 revolution. The level of spying on people was incredible and sophisticated, and they tried to destroy records as the overthrow of the government was imminent.
One of the offices in the inner part of the building was left untouched from the Communist years, right down to the typewriter and coffee machine.
After that, we went to the Altes Rathaus (old city hall or townhouse, built in 1556) to do a bit of shopping. Terah was wanting some souvenirs, and I had spotted a shop I thought she might like when walking through the city with Brad the night before. We had already bought some souvenirs at the Schloss Charlottenburg museum store in Berlin (some East German-style crosswalk fridge magnets, and a decorative egg), but wanted something a bit nicer for us and were on the lookout for gifts for others too. We wound up buying a wood carved church scene with a woven wheat tree for us, and another item for others. The shopkeeper spoke no English, and my German vocabulary is small, but we managed to communicate the question of whether or not she could wrap it up in a box for our trip home and she could, and did. Excellent. (I didn t know how to ask about box, but knew how to say that we were Americans, and with a fair bit of gesturing all around, managed to get the idea across.)
Then we went in the Altes Rathaus itself, which was both a museum and an interesting cultural experience. We bought our tickets at the booth downstairs, then went upstairs to the entrance. We asked for the English audio guide, which is very common at museums in Germany. (They are small digital audio players that contain recorded information; each room or display has a number you can key in to hear about it in your own language.) We got it, and were told in incredible detail how to use it, even though they are quite easy to figure out and we had used them before. The museum employee told us where the audio tour starts, and in what order it usually goes, which was an effort for her given her limited English. But we all understood and went on our way.
It wasn t even 5 minutes later when she had left her desk and came over to us. She was slightly alarmed at two things: one that we didn t have the volume at full blast (which was loud enough for the entire room to hear), and secondly that we weren t looking at the exhibits in the proper order. Never mind that it s easy enough to pull up the audio information about any room just by keying in the number posted in it, I guess. Anyhow, we sort of inwardly shrugged, let her turn the volume up to potentially disturbing the other visitors level, and went through the museum in the order she wanted us to. (Note that this wasn t a museum where there is a one-way flow of traffic or something; you walk into one exhibit, back to the main hall, and then pick your next one.) So we went through the rest of the museum with our English audioguide blaring throughout the large, echoing, wood rooms, feeling a bit rude to the other visitors (maybe 5 of them while we were there) due to its volume.
Anyhow, the Altes Rathaus was beautiful and interesting, covering mainly the pre-industrial history of Leipzig. We learned about some of the guilds, the city treasury (vault), and where the town council/parliament met along with rich merchants. There were about as many museum guards as visitors there, and one or two of them sort of followed us around, pointing out the large and completely obvious signs with audio guide numbers in the rooms for us. They are serious about their audio guides in Leipzig.
I m glad we went, and I m glad we had the experience we did, too. Terah told me later that she felt reprimanded about the audio guide and visiting order. My take on it was a bit different: the museum is impressive and interesting, but obviously not visited by tourists as much as museums in other cities, or even touristy sites like Thomaskirche in Leipzig. I think they they noticed two people, obviously very foreign (speaking only a little German, and with an American accent) with an interest in their city s history, and took pride in making sure we got the most of our visit and learned as much as possible about something they care about.
Here is the main hall of the Altes Rathaus.
We met up with Brad in a cafe near St. Thomaskirche for coffee and cake, then it was on to St. Nikolaikirche (the Church of St. Nicholas), the other large church in town. We stepped out of a passageway to face the large building, and walked in. The interior was decorated in pastels, and was also beautiful and historic. I can t get enough of that sort of building, I think. This building was especially important because it was the site of organizing for the Monday evening protests against the Communist government in 1989. People met at the church, sang a few hymns (to qualify it as a religious service, perhaps), then organized their protest for the evening. Sometimes they would wind through city streets and put flowers at the Stasi headquarters steps, and once the citizens actually overtook the Stasi headquarters.
After awhile we grabbed a bit more for lunch: a pretzel for Terah and a Currywurst for me. (This one wasn t spicy and wasn t all that good.) Then we went to the GDR museum, which was large and interesting, but unfortunately for us, completely in German with no English guide available.
That evening, we went to a Bach concert at the Leipzig Gewandhaus, celebrating Bach s 325th birthday. That was fun, and a neat experience with such good music in a very nice venue. The program included Bach s Suite for Orchestra no. 1 in C Major (BWV 1066), Concerto for Violin no. 2 in E major (BWV 1042), Ich habe genug (BWV 82), and Suite for Orchestra no. 4 in D major (BWV 1069). Sir Roger Norrington was conducting, and was rather fun and atypical to watch. He had the audience chuckling a few times with his minimalist conducting or perhaps his flamboyant gestures. Anyhow, the music was excellent and the tickets included free passage on the public transit system 3 hours before and after the concert a nice touch.
Due to our schedule, we didn t spend much time with Fritzi, but we did get to play with her a bit. She likes to pretend to be a shopkeeper, and had her store all ready to lay out. We would ask her for some items, which she d put in a basket for us, and then of course there would be a child s twist: we d get our items, and she d pay us for them too.
Terah and I brought some books for Fritzi. The particularly enjoyed Goodnight Moon because inside it is an picture of The Runaway Bunny, which she already had. Fritzi chose one of her books to give to Jacob it was a German book (Maulwurf) based on a Czech cartoon mole. That was nice of her, and Jacob really liked it (I ll write about that later).
We had a good time in Leipzig, and I was getting fairly good at navigating downtown and with the trams and then, of course, it was time to move on. So Friday morning we caught our 7:50 train from the Leipzig Hauptbahnhof. We took the ICE train to Dresden, then walked a few feet to get onto the EC to Prague. That was a bit of a funny experience. The ICE trains are all sleek, modern, meticulously maintained, and the passengers tend to be very quiet. Talking is barely above a whisper, and people seem alarmed if their cell phone rings, even outside the quiet car. The EC passenger car appears to have been built, or last renovated, in the 1970s, and may have been Hungarian. The seats and curtains are old and faded; some of the seat backs have rips in the vinyl headrests. People were talking or eating loudly, in a very different setting than on the ICE train.
As we rode along, we were on the right side the river Elbe for many miles. The scenery was beautiful, with small houses in the river valley, and the occasional house up in the hillside. At one point (a bit before we passed through K nigstein on the way to the Bad Schandau stop), we spotted what looked like an old walled city up on the hill. I figured out later that it was Festung K nigstein (K nigstein Fortress).
Update: I forgot to mention a couple of things about Leipzig. One was our walk through a forest yes, a forest in the city. That was a nifty, quiet, and pleasant surprise. Secondly was seeing all the DDR apartment blocks, where the apartments evidently were quite literally blocks. It is interesting to see the Communist architecture.
Gerfried Fuchs:
I have a question to the candidates: History has shown that DPLs more or less disappear not too long after their period or at least reduce their visible efforts immensly. I wonder where you see the reasons for this trend, what your impression is about it and wether you try to follow that trend or what you will try to do to not have this happen to you, too.I think that some DPLs are overwhelmed by the amount of requests they receive, and more importantly, are overwhelmed by the feeling of futility from perceiving that it is impossible to fix the things that they had intended to fix. So, unless there are other factors I would need to adapt to, I would try to discourage the number of private requests, and to not lose hope and faith in Debian. I imagine that delegation could be very useful in both these areas. Gunnar Wolf:
What would be different if there was no leader? Where would the project lose more? Would it gain in some aspect?The DPL is theoretically one of the most important checks against the power of delegates. The absence of a DPL would thus increase any power imbalance in the the project, and likely to make the fighting between core teams even more political and harmful. Communities and teams are destabilized by egos because people stop paying attention to their healthy shared goals and the people around them and instead focus on their own individual success. So if the project were to achieve some kind of anarchic utopia where this is not an issue, I could imagine that the DPL would be the last remaining ego threat, and removing that role would make things better. However, we are nowhere near that now, and I think the DPL can do more good on this front. Yavor Doganov:
What do you think the project should do (with or without or regardless of your help as potential DPL) to preserve this goodness (maximum supported architectures) for as long as possible? Do you think it is "goodness" or you're in the "good riddance" camp?I definitely think that one of our strengths is being available on a large number of architectures, and beyond that, providing nearly identical experiences on each of those platforms. I am saddened when porters or package maintainers make decisions to stray from the norm on a particular architecture, because I truly enjoy the consistency. I have run Debian on i386, sparc, hppa, powerpc, amd64, and in the few cases where something was different, I found it irksome. However, there is definitely a point where the cost in maintaining a release architecture far exceeds the benefit, and at that time I think we must regretfully bid it farewell. So you are right that porters are a precious resource, and as DPL I would try to reduce their attrition. Speaking as a former porter, I found the unresponsiveness and uncooperativeness of certain buildd maintainers (especially when not porters themselves) to be extremely demotivating. I would try to find a way mitigate porters being demotivated in such a way.






Next.