Search Results: "ana"

10 April 2010

John Goerzen: Jacob has a new computer and a favorite shell

Earlier today, I wrote about building a computer with Jacob, our 3.5-year-old, and setting him up with a Linux shell. We did that this evening, and wow he loves it. While the Debian Installer was running, he kept begging to type, so I taught him how to hit Alt-F2 and fired up cat for him. That was a lot of fun. But even more fun was had once the system was set up. I installed bsdgames and taught him how to use worm. worm is a simple snake-like game where you use the arrow keys to eat the numbers. That was a big hit, as Jacob likes numbers right now. He watched me play it a time or two, then tried it himself. Of course he crashed into the wall pretty quickly, which exits the game. I taught him how to type worm at the computer, then press Enter to start it again. Suffice it to say he now knows how to spell worm very well. Yes, that s right: Jacob s first ever Unix command was . worm. He d play the game, and cackle if he managed to eat a number. If he crashed into a wall, he d laugh much harder and run over to the other side of the room. Much as worm was a hit, the Linux shell was even more fun. He sometimes has a problem with the keyboard repeat, and one time typed worrrrrrrrrrrrrrrrrrm . I tried to pronounce that for him, which he thought was hilarious. He was about to backspace to fix it, when I asked, Jacob, what will happen if you press Enter without fixing it? He looked at me with this look of wonder and excitement, as if to say, Hey, I never thought of that. Let s see! And a second later, he pressed Enter. The result, of course, was: -bash: worrrrrrrrrrrrrrrrrrm: command not found Dad, what did it do? I read the text back, and told him it means that the computer doesn t know what worrrrrrrrrrrrrrrrrrm means. Much laughter. At that point, it became a game. He d bang at random letters, and finally press Enter. I d read what it said. Pretty soon he was recognizing the word bash , and I heard one time, Dad, it said BASH again!!! Sometimes if he d get semicolons at the right place, he d get two or three bashes . That was always an exciting surprise. He had more fun at the command line than he did with worm, and I think at least half of it was because the shell was called bash. He took somewhat of an interest in the hardware part earlier in the evening, though not quite as much. He was interested in opening up other computers to take parts out of them, but bored quickly. The fact that Terah was cooking supper probably had something to do with that. He really enjoyed the motherboard (and learned that word), and especially the CPU fan. He loved to spin it with his finger. He thought it interesting that there would be a fan inside his computer. When it came time to assign a hostname, I told Jacob he could name his computer. Initially he was confused. Terah suggested he could name it kitty , but he didn t go for it. After a minute s thought, he said, I will name it Grandma Marla. Confusion from us did he really understand what he was saying? You want to name your computer Grandma Marla? Yep. That will be silly! Sure you don t want to name it Thomas? That would be silly! No. I will name my computer Grandma Marla. " OK then. My DNS now has an entry for grandma-marla. I had wondered what he would come up with. You never know with a 3-year-old! It was a lot of fun to see that sense of wonder and experimentation at work. I remember it from the TRS-80 and DOS machine, when I would just try random things to see what they would do. It is lots of fun to watch it in Jacob too, and hear the laughter as he discovers something amusing. We let Jacob stay up 2 hours past his bedtime to enjoy all the excitement. Tomorrow the computer moves to his room. Should be loads of excitement then too.

9 April 2010

Ingo Juergensmann: Syncing N97

We now have year 2010 but sometimes it still feels like living in the Stone Age of Computing. There's a smartphone, let's call it N97, with Symbian on it. Then there are a bunch of client computers such as a Debian workstation/homeserver running Sid, a Laptop running OS X with iCal and a Windows XP machine at work. Every machine itself (well, with the exception of the XP machine) is a nice piece of hard- and software offering a bunch of possibilities: you can manage your calendars, contacts and tasks.

The difficulty arise when you want to sync those calendars, contacts and tasks between all of the different machines.

There are several ways to address this task:

  1. WebDAV:
    Setting up a WebDAV is no rocket science and you can easily sync your calendars easily with Sunbird or Thunderbird/Lightning for example. But that leaves the N97 ouf of syncing. The N97 can be synced with iSync on OS X, but iCal is not able to work on a single calendar. You can either export a calendar to a remote WebDAV or subscribe it. iCal ignores changes done in other clients and will overwrite those.


  2. CalDAV 1:
    CalDAV (calendarserver) does require some more configuration before you can use it properly, but when done, it should be capable of syncing calendars, resources, tasks and such. Using CalDAV should work aorund the limitations of WebDAV as mentioned above. The calendars can be synced to CalDAV from iCal by creating a remote account and you can sync with iSync via Bluetooth. But you will need a local calendar in iCal, because you can't use iSync to sync your smartphone to your CalDAV remote calendar in iCal.

    iSync unable to use CalDAV for syncing


    Additionally there are problems when you delete an event from your CalDAV calendar on your smartphone. iSync will report an error like this:

    Freitag, 9. April 2010 21:45
    [Nokia N97]
    Changes of Events in writeprotected calendar on this phone are not permitted. These changes were ignored: test, 04/09/2010 23:00


    Deleting events in your local iCal calendar, however, is working well. In the end this result is not encouraging as I need the CalDAV calendars being in sync.
    Syncing with Sunbird on OS X doesn't work either. Maybe it would with DAViCal as server frontend?


  3. CalDAV 2:
    Because syncing via iSync doesn't work as expected it would be a decent solution if the N97 could sync directly to CalDAV. Unfortunately it can't, although there seems some progress with Symbian there. If that is already integrated into v21.0.102 of N97 firmware, it would nice if someone could point me to how configure the N97 properly.


  4. SyncML:
    Maybe another option would be to use some sort of SyncML server in order to sync calendars and stuff between those machines, but I don't know how OS X will work with that approach. Again, hints are welcome!


Syncing calendars and other stuff really seems to be painful. Using a third party webservice such as .Mac or Google Calendar is no option at all. I don't want to give private data out of my hands and control. So, a self hosted service is needed.
Dear lazyweb, is there a solution available for my problem? I hope so...

Christian Perrier: [life] Once you run a marathon...

...you want to run many. Everybody told me so. Which is why I was warned when I ran my first one year ago in Paris, I knew I would run other. So, on Sunday will be my fourth one and my second Paris Marathon. So, after 4h10mins in Paris (april 2009), 4h12 in Rambouillet Forest (all alone in full autonomy mode) and 4h00'49" in Cologne, my target this time is 3h50. Weather is announced to be perfect, my physical condition is AFAIK good, the motivation is very high....my only fear is that I registred in the "4h target" group (because, back in November, I wasn't expecting the results I got in February/March in half-marathons). As many people overestimate their target, I expect to be passing hundreds of runners during the first 5 kilometers, which is not the best way to start....but, hey, Paris streets are wide enough (except Place de la Bastille, my nightmare....I hope organizers solved the jam problem there). Of course, I kinda hope seeing fellow Paris DD's waving giant Debian swirls, including our wanabee-DPL.....but let's stop dreaming. And running in a sunny day all across Paris and along river Seine, will be great again even without Zack. I'll also be missing Ralf and No l who ran it last year: Ralf is unfortunately suffering from knee problems and No l is preparing for Mainz marathon (target: 3h??). Anyway, more news on Sunday afternoon....and let's enjoy a full rest tomorrow!

David Welton: US Exports: "The Cloud"?

An Economist special report in last week's print edition talks about how the US will need focus more on savings and exports:

A special report on America's economy: Time to rebalance I've been thinking about that for a while too, especially after the dollar's recent weakness, although it has been strengthening some, lately, apparently due to the state of Greece's finances... I think that the computing industry is, in general, well poised to take advantage of that. For instance, what could be easier to export than computing power or "Software as a Service"? All it takes is a few minutes for someone in Europe to sign up to a US-based service with a credit card. For instance, compare Linode's prices and good service with most of their European competitors (gandi.net for instance, who are good people, and you have to love that they put "no bullshit" right on their front page). Not that they don't have good service in Europe, but it's very difficult to compete on price with the dollar being significantly cheaper. With the dollar where it is right now, gandi is almost, but not quite, competitive with Linode. If you don't include taxes. If the dollar weakens again, though, things could easily tilt far in Linode's favor. Besides a weak dollar, I think it will be important for companies in a position to do so in the US to focus on "the rest of the world". The US is a big, populous country where it's very easy to forget about far-off lands. Compare my home town of Eugene, Oregon to where I live in Padova. Google Maps says that it takes 7+ hours to drive to Vancouver, Canada (which, to tell the truth, isn't all that foreign in that they speak English with an accent much closer to mine than say, Alabama or Maine). Going south, Google says it's 15+ hours just to San Diego, although I think that's optimistic myself, given traffic in California. From Padova, I can be in France in 5 hours, according to Google, 3 hours to Switzerland, 4 to Innsbruck, in Austria, less than 3 hours to the capital of Slovenia, Ljubljana, and around 3 hours to Croatia, too. And if you wanted to throw in another country, the Republic of San Marino is also less than 3 hours away, according to Google's driving time estimates. You could probably live your entire life in a place like Eugene and never really deal much with foreigners, whereas here, nearby borders are both a historic and an ever-present fact. The outcome of this is that, to some degree, people in the US have traditionally focused their businesses "inwards" until they got to a certain size. Which is, of course, a natural thing to do when you have such a big, homogenous market to deal with before you even start thinking about foreign languages, different laws, exchange rates and all the hassle those things entail. However, if exchange rates hold steady or favor the US further, and internal spending remains weaker, it appears as if it may be sensible for companies to invest some time and energy to attract clients in "the rest of the world". "Cloud" (anyone got a better term? this one's awfully vague, but I want to encompass both "computing power" like Linode or Amazon's EC2, as well as "software as a service") companies likely will have a much easier time of things: for many services, it's easy to just keep running things in the US for a while, and worry about having physical or legal infrastructure abroad later. Your service might not be quite as snappy as it may be with a local server, but it'll do, if it performs a useful function. Compare that with a more traditional business where you might have to do something like open a factory abroad, or at the very least figure out the details of how to ship physical products abroad and sell them, and do so in a way that you're somewhat insured against the large array of things that could go wrong between sending your products on their merry way, and someone buying them in Oslo, Lisbon or Prague. Since this barrier to entry is lower, it makes more sense to climb over it earlier on. As an example, Linode recently did a deal to provide VPS services from a London data center, to make their service more attractive to European customers. However, they still don't appear have marketing materials translated into various languages, and presumably they don't have support staff capable of speaking languages like Chinese, German or Russian either (well, at least not in an official capacity). This isn't to pick on them; they may have considered those things and found them too much of an expense/distraction/hassle for the time being - they certainly know their business better than I do - and that they simply are content to make do with English. Other businesses, however, may decide that a local touch is important to attracting clients. What do you need to look at to make your service more attractive to people in other countries? In no particular order:

There's certainly no lack of work there, but on the other hand, it's possible to do almost all of it from wherever you happen to be located, rather than spending lots of money and time flying around to remote corners of the globe, as is still common practice in many industries.

8 April 2010

Neil Williams: Emdebian and Google Summer of Code 2010

I've put up a proposal for the Debian part of the Google Summer of Code 2010 and this proposal is based on previous work with edos-debcheck for Emdebian Grip. It started from a simple mailing list post.

Even without formally announcing the proposal, I've already got a potential student!

Stefano Zacchiroli: campaigning woes

lots of votes! In principle, I just meant to blog saying that I've really enjoyed campaigning this year: thanks to the other candidates and to all the people who asked questions. (... and kudos to a couple of who-know-who-you-are-persons which have managed to ask very inflammable questions with a lot of tact) But given that a blog post that way would have been too empty for my standards, here are a couple of extra random remarks:
  1. I believe that the campaigning summary on my DPL 2010 page is now complete
  2. One week into the voting period, we seem to have quite more votes than last year: we've just passed the 200 ballot thresholds, whereas last year the very same threshold got passed only after the second call for votes (which corresponds to steep increases in most Debian votes). Considering that the number of potential voters is lower this year (i.e. a bit more than 1'000 vs a bit less than 900), this might well be the first year after a while, in which the percentage of voters increases (which I consider to be a good indicator of interest, no matter what).

7 April 2010

Joey Hess: the neverending game

(While I have a lot big stuff going on in my life right now, I don't feel most of it's suitable for blogging. So here's a bit of insignificant fluff.) I have this nethack game that won't end. I started it before Christmas, and got much, much deeper into the dungeon than I've ever managed before. Taunted Jerry with it as we hung out over the holidays; he repeatedly losing while I quested and cleared out the castle, and genocided liches to get through the valley of the dead, and generally just kept building up a character that wouldn't quit. Yeoj the Student of Metals St:18/06 Dx:18 Co:18 In:16 Wi:18 Ch:14 Lawful Dlvl:42 $:0 HP:138(138) Pw:29(147) AC:-15 Xp:20/5196103 T:66175 Hungry Burdened I should mention: I mostly don't play nethack often, only swinging back around to give it another try every year or two. So for many years I'd play a few games that quickly ended in Yet Another Stupid Death, and occasionally feel proud when I got as far as Minetown or the Oracle. Recently, though, I've started focusing on Monks, and gotten rather good at playing them in the early game. So, this is my first character who got through the early game, completed the quest, and went well into the late-game. I know where that vibrating square is, I have plenty of wishes to round out my kit. So it would be an ascention candidate, except my chances of doing that on the first try are ... slim. And, do I want to? The descriptions of what I'd need to do to even try seem a bit tedious. So, unsure if he wants to ascend, and fearing YASD, my monk sits in his recently aquired tower at level 42 of the dungeon. For months. And so I can't play nethack. The character I'm role playing has decided to opt out of the game. (Oops, I meant to leave real life out of this, but it's somehow snuck back in there.) Meanwhile, this Dungeon Crawl Stone Soup that @Play keeps talking about looks interesting... (previously previously)

6 April 2010

Michael Prokop: Remote Console feature through Java applet failing?

I m working for a customer who s using IBM blades. Remote access isn t limited to e.g. SoL but also possible through a Remote Console feature using a Java applet. After migrating one of my 32bit systems to a fresh 64bit system I suddenly couldn t use this Remote Console feature any longer. The error message was (leaving it for search engines and help other affected users):
load: class vnc.VncViewer.class not found.
java.lang.ClassNotFoundException: vnc.VncViewer.class
	at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:152)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
	at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Plugin2ClassLoader.java:447)
	at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:2880)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1397)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.net.ConnectException: Network is unreachable
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
	at java.net.Socket.connect(Socket.java:525)
	at sun.net.NetworkClient.doConnect(NetworkClient.java:161)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
	at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
	at sun.net.www.http.HttpClient.New(HttpClient.java:306)
	at sun.net.www.http.HttpClient.New(HttpClient.java:323)
	at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)
	at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1049)
	at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:373)
	at sun.plugin2.applet.Applet2ClassLoader.getBytes(Applet2ClassLoader.java:458)
	at sun.plugin2.applet.Applet2ClassLoader.access$000(Applet2ClassLoader.java:46)
	at sun.plugin2.applet.Applet2ClassLoader$1.run(Applet2ClassLoader.java:126)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:123)
	... 6 more
Exception: java.lang.ClassNotFoundException: vnc.VncViewer.class
The error message might not be obvious at a glance and that s why I m writing about it actually. It s NOT the:
load: class vnc.VncViewer.class not found.
why it s failing but instead the real reason for the failure is the:
java.net.ConnectException: Network is unreachable
As you can read in Debian s Bug Tracking System in bug #560044:
Netbase has recently introduced the sysctl-setting
net.ipv6.bindv6only=1 in /etc/sysctl.d/bindv6only.conf and this setting will probably be the default in squeeze. This setting breaks networking in java, and any traffic will always
result in a java.net.SocketException: Network is unreachable .
To quote /etc/sysctl.d/bindv6only.conf:
When disabled, IPv6 sockets will also be able to send and receive IPv4 traffic with addresses in the form ::ffff:192.0.2.1 and daemons listening on IPv6 sockets will also accept IPv4 connections. When IPV6_V6ONLY is enabled, daemons interested in both IPv4 and IPv6 connections must open two listening sockets.
To work around this issue you can either execute the Java process through "java -Djava.net.preferIPv4Stack=true" or to change the IPv6 behaviour system wide execute "sysctl -w net.ipv6.bindv6only=0". To make this setting permanent across reboots adjust the setting inside /etc/sysctl.d/bindv6only.conf. After applying this workaround the Remote Console should work again.

5 April 2010

Gregor Herrmann: RC bugs 2010/11 - 2010/13

although zack tries to cheer me up (thanks!) I'm still not really happy with the declining amount of RC bugs I manage to look at. but at least I don't forget about them completely :)

so here's the current list:

4 April 2010

Russell Coker: Health and Status Monitoring via Smart Phone

Health Monitoring Eric Topol gave an interesting TED talk about wireless medical monitoring devices [1]. The potential for helping diabetics and other people who need ongoing treatment is obvious as is the potential for helping pregnant women and other people who might suddenly need medical treatment at short notice. One significant positive potential for this is integration with multiple services. For example Eric s talk showed a graph of sleep levels on a mobile phone, the deep sleep (which is apparently the most restorative) was shown in sections that were significantly less than one hour in duration. I often receive SMS messages about network problems during the night, the vast majority of them aren t that important and can be delayed without any problem. If my phone could determine that I was in deep sleep and delay sending me a NAGIOS report for up to 30 minutes then it would help me sleep while not making any significant impact on my work in repairing server problems it s not as if I would be immediately productive if woken from deep sleep anyway. Status and Attention Monitoring Eric Horvitz, Carl Kadie, Tim Paek, and David Hovel of Microsoft Research wrote an interesting paper titled Models of Attention in Computing and Communication: From Principles to Applications [2]. In that paper they describe various methods for tracking user attention and filtering messages so that the user won t be needlessly distracted by unimportant messages when they are busy. The next logical step is to integrate that with a smart phone (maybe Android would be good for this) to screen calls, unknown callers could be automatically directed to voice-mail and known good callers could be given an automated prompt as to whether they think that their call is important enough to be worth the distraction. It seems to me that combining health and status monitoring would be the sensible thing to do. If a bio-sensor array indicates that someone is more stressed than usual then decreasing their availability for phone calls would make sense. It would also be trivial to analyse calls and determine which callers are likely to cause stress and block their calls at inconvenient times. What we Need Of course there are lots of security implications in this. Having multiple networked devices tracking and collating information on health and all activity (including video-monitoring in the Microsoft model) has a lot of potential for malicious use. This is one of many reasons that we need to generally improve computer security. We also need to have free software implementations of such things. We don t want Microsoft to get a monopoly on status monitoring. Also it seems that smart Nike shoes that can work with the iPhone [3] are the leading mass-market implementation of health monitoring, everything related to health-care should be as open as possible. I m happy for Nike to make their own special products, but we need to have them work with open systems and make the data available as widely as possible. There is the real potential for people to needlessly die if health data is not available in open formats! According to the Wikipedia page Nike has been shipping products using a proprietary 2.4GHz wireless network since 2006 [4], it would be a really good hardware project to devise a way of making compatible sensors and readers. We also need some free software for monitoring the user status to avoid interrupting them. Finally we need some software to integrate all the data. Canonical s Desktop Experience team are doing some interesting work on managing desktop notifications that will be in Ubuntu Lucid [5], they appear to have some basic support for masking notifications based on priority. Please keep up the great work Canonical people, and please consider working on advanced status monitoring next!

Andreas Barth: RFH: Release Team

The next Debian release needs help. Releasing Debian is a community effort, only we together can make it happen. What needs to be done is mostly one of: If any of the above lists seem suited to you, but you are missing the required rights to do so, please don't hesitate to contact us. And if we notice someone does always the right things, we're keen ourselves to make sure we don't need touch every request unnecessarily. Whatever you do: Write about what you achived. Coordinate with others in time. Have fun!

Russell Coker: Slavery vs Child Porn

Slavery Still Exists! We all like to think of slavery as a problem from the 19th century, but it still exists and is a significant problem! Kevin Bales gave an interesting TED talk about how to combat modern slavery [1]. Currently there are an estimated 27,000,000 slaves in the world, it s a lot but it s a smaller proportion of the world population in slavery than at any time in history. Also the price of slaves is lower than ever before, instead of being a capital asset a slave is a disposable item (this is really bad for the slaves). The estimated average cost to liberate a slave is $US400, this involves rescuing them from slavery and teaching them the skills that they need to have a sustainable life there s no point rescuing them only to have them get captured again! Kevin notes that the US is still paying the price of the botched emancipation of 1865, so the liberation of slaves really needs to be done properly. The estimated total cost to liberate all the slaves in the world is $US10.8 billion. Think about the trillions of dollars that have been spent on wars to supposedly liberate people, when a mere $US10.8 billion would liberate all slaves. That s a fraction of the cost of the proposed National Broadband Network which would you rather have, fast net access for cable TV services or a world without slavery? Censorship of Child-Porn (and other things) vs Liberating Slaves It is often claimed that child porn needs to be stopped to prevent there being economic incentives to molest children in other countries, to achieve this goal the Australian government wants to filter all net access to prevent access to child-porn, other prohibited porn, documentation about euthanasia, and the occasional dental practice (seriously, they just can t get their filters right). Methods that are proven to prevent children being molested should be given a much higher priority than censoring the Internet in the hope of removing economic incentives for child abuse. It seems reasonable to assume that a significant portion of child-slaves are molested (because we know that slave owners are really bad people and there s nothing to stop them from molesting children). Let s assume for the sake of discussion that 1/4 of child slaves are molested. So that would give an average cost of $US1600 to free one child from sexual slavery and three other children from physically abusive environments. Currently the Australian government plans to spend $44,000,000 in Internet censorship with the supposed aim of protecting the children. The fact that the majority of child-porn is believed to be transferred via protocols other than HTTP has not deterred the government from pushing forward a HTTP-only filter for censorship. Also the fact that anyone could use a VPN, tor, or other services to trivially bypass a HTTP filter has not deterred them. Let s assume for the sake of discussion that $US400 equates to $500 Australian, the exchange rate is lower than that but it varies and it s best to be conservative. Therefore the $44,000,000 the government wants to spent on censorship could be used to liberate 88,000 child slaves. If my estimates are correct that would save 22,000 children from being molested. In the unlikely event that slavers happen to be nice people who don t do nasty things like molest children (which really isn t credible) then freeing 88,000 children from slavery and all the physical abuse that it involves is still a really good thing! If a plan to prevent child sexual abuse by liberating slaves fails to actually prevent any sexual abuse then at least you end up with some freed slaves (which is a really good thing). But if a plan to prevent child sexual abuse by censoring the Internet fails then all you end up with is slower Internet access and censorship of totally unrelated things that the government doesn t like.

3 April 2010

Russell Coker: Too Stupid to be a Bishop

A Stupid Bisop breaks the Godwin Rule The Sydney Morning Herald reports that Catholic Bishop Anthony Fisher has just claimed that GODLESSNESS and secularism led to Nazism, Stalinism, mass murder and abortion [1]. This is a violation of the rule part of Godwin s Law. We might not expect clerics to have enough general knowledge of society to know this rule, but it does seem reasonable to expect them to have enough empathy to understand why inappropriate Hitler analogies will just offend people and don t advance their cause. But anyone in a position of leadership in a global organisation who is going to talk to the media should have enough intelligence to check historical references. The Wikipedia article about Positive Christianity is worth reading, it includes references to Christian based race-hate in Nazi Germany as well as modern references [2]. There is also an interesting Wikipedia page about the Religious aspects of Nazism [3], there seems to be room for a lot of debate on the matter of how religion fit in to the Nazi regime but it seems quite clear that it was not an atheist regime. The Wikipedia page about the Rechskonkordat (the agreement between the Nazi Germany and the Catholic Church) is also worth reading [4]. Also I m sure that the Chilean Dictator Augusto Pinochet wasn t the only Catholic despot. Community Services and Moral Authority Cardinal Pell was quoted in the same SMH article as saying we find no community services sponsored by the atheists , of course if he was to investigate who is contributing to the religious based community service organisations he would find plenty of atheists. I know I m not the only atheist who donates to The Salvation Army [5] on occasion. I wonder how many religious people would be happy to donate to an explicitly atheist organisation, I suspect that the prevalence of religious charities is due to the fact that a religious charity can get money from both religious people and atheists while a charity that advocated atheism in any way would be limited to atheist donors. If I was to establish a community service charity I would seriously consider adding some religious element to help with fund raising it s just a matter of doing what s necessary to achieve the main goal. Even if it wasn t for violating Godwin s law and a total lack of any knowledge of history Anthony would still have failed. We all know the position of the Catholic Church on the sexual abuse of children. The Catholic policies are implemented in the same way in every country and as far as we can tell have been done so for all time. I believe that makes them unqualified to offer moral advice of any kind. Criticising the Secular World Peter Craven has written an article for The Age criticising the secular world [6]. He makes the extraordinary claim the molesting clergy are like the brutal policemen and negligent doctors and corrupt politicians: they come with the territory because pennies have two sides . The difference of course is that police, doctors, and politicians tend to get punished for doing the wrong thing even when they do things that are far less serious. But the molesting clergy seem to be protected by all levels of the church hierarchy. Peter makes some claims about the secular world as if there is a Borg collective of atheists and claims that there is an incomprehension of Christian values . I believe that the attitudes of atheists and the secular justice system correspond quite well with what most Christians would regard as Christian values the problem is that the actions of the church leaders tend not to match that. It s All About Money I would like to know why Christians almost never change church and never cease donating. Religious organisations are much like corporations, they seek new members and new revenue sources. If a significant number of Catholics were to pledge to not donate any money to their church for a year after every child sex abuse scandal then Catholic policies might change. Also if Catholics were to start changing to Christian denominations that do the right thing in regard to moral issues then the Catholic church would either change or eventually become irrelevant. If you keep paying people who do bad things then you are supporting them! I suggest that any church member who cares about the moral issues of the day should vote with their checkbook. If their church fails to do the right thing then inside the donation envelope they should put a note saying due to the immoral actions of the church I will donate to other charities . I am not aware of any church that would expel members for such a protest, but I know that some smaller parishes have cash-flow problems and would rapidly escalate the issue through the management chain if even a few members were to protest in such a manner.

2 April 2010

Thomas Koch: Design document for a patch management system on a DVCS

Dear friends of Debian,

this is my first post to Planet Debian. - The planet with the most geeky registration procedure in the known universe!

I proposed an alternative to topgit some days ago on the vcs-pkg.org list. Martin asked (and encouraged) me to give a better explanation of the idea, which I'll hereby try. Sorry for not giving any drawings, but I'm totally incapable of anything graphical.

Hopefully, I'll manage to come to the Debian Miniconf in Berlin. Then we could discuss the idea further and maybe even start implementing it. (Somebody would need to help me with my first steps in Perl then...)

The following text is available on github. Please help me expand it!

Design document for a patch management system on a DVCS
Requirements The system to implement manages patchsets. A patchset is a set of patches with a tree-ish dependency graph between the patches. There's one distinct root of this dependency graph. Patches are managed as branches with each branch representing a patch. Modification of a patch is done by a commit to the respective branch. A branch representing a patch as part of a patchset is called patchbranch. The patch of a patchbranch is created as the diff between the root of the patchbranch and the head. The most important management methods are:
  • Export a patchset in different formats
    • quilt
    • a merged commit of all patches
    • a line of commits with each commit representing one patch
  • Update a patchset against an updated root.
  • Copy a patchset
  • Delete a patchset from direct visibility while preserving all history about it
  • Hide and unhide a patchset from direct visibility
Additional requirements:
  • The system should be implementable on top of GIT, Mercurial and eventually Bazaar.
  • The system must easily cope with multiple different and independent patchsets.
  • All information about a patchset must be encoded in one distinct branch. Publishing this one branch must be sufficient to allow somebody else to recreate the patchset with all of its patchbranches.
  • The system should not rely on the presence of hooks.
  • The system should not require the addition of management files in patch branches (like .topmsg and .topdeps in topgit)
  • The system must be easy to understand for a regular user of the underlying DVCS.
  • The implementation may allow a patchset to depend on another patchset(s).

implementation
patchset meta branch A patchset meta branch holds all informations about one patchset. First, it holds references to the top commits of all patch branches in the form of parent references of commits. Thus pushing the patchset meta branch automatically also pushes all commits of all patch branches. Secondly, the patchset meta branch contains meta informations about the patchset. These meta informations are:
  • The names of all patch branches together with the most recent commit identifier of a particular patch branch. Let's save this information in a file called branches.
  • A message for each patch branch that explains the patch. These messages can be saved in the file tree as msg/$ PATCH-BRANCH-NAME
  • References to the dependencies of the patch (other patches of the same patchset or the root of the patchset). This is also encoded in the file branches.
Since the patchset meta branch holds all this informations, it is possible, to delete all patch branches and recreate them from this informations. Although the commits of the patchset meta branches hold references to the patch branches, its file tree does not need to contain any files from the referenced patches. This may confuse the underlying DVCS, but the patch meta branch is not ment to be directly inspected.

The branches file A branches file for a fictive patchset could look like:
# patch branches without an explicit dependency depend on the root of the
# patchset tree
# A Root can be given as either a fix commit (seen here), a branch or a tag.
# A fixed commit or tag is useful to maintain a patchset against an older
# upstream version
ROOT: 6a8589de32d490806ab86432a3181370e65953ca
# A tag as a dependency
#ROOT: upstream/0.1.2
# A branch as a dependency
#ROOT: upstream
# A regular patch with it's name and last commit
BRANCH: debian/use-debian-jars-in-build-xml 4bab542c261ff1a1ae87151c3536f19ef02d7937
# two other regular patches
BRANCH: upstream-jira/HDFS-1234 a8e4af13106582ca1bfbbcaeb0537f73faf46d87
BRANCH: upstream-jira/MAP-REDUCE-007 e3426bcbcb2537478f851edcf6eb04b34f6c7106
# This patch depends on the above two patches
# The sha1 below the dependency patches references a merge commit of the two
# dependencies
BRANCH: upstream-jira/HDFS-008 517851aa829d77e09bc5e59985fed1b0aa339cc6
DEPENDENCIES:
  upstream-jira/HDFS-1234
  upstream-jira/MAP-REDUCE-007
    cc294f2e4773c4ff71efb83648a0e16835fca841
# A patch branch that belongs to the patch branch, but won't get exported (yet)
BRANCH: upstream-jira/HDFS-9999 74257905azgsa4689bc5e59985fed1b0aa339cc6
BRANCH-FLAGS: noexport



1 April 2010

Jo Shields: Introducing Larval Editor

In my last post, about GRUB2 theming, there were a few people who were unhappy at the perceived difficulty of creating GRUB2 themes, largely based on the lack of documentation. And to be honest, those people are right if the documentation were complete & correct when I started, then I wouldn t have ended up bumping into all the bugs I did. So, to help on that front and to help kick-start GRUB2 theming in general, I m announcing Larval. More GRUB2 themes means more awesome-looking systems in the wild. Hopefully the GRUB2 upstream will embrace it as a project to help raise the profile and potential of GRUB2. It didn t take me long to realise the most obvious way to develop such an editor: GRUB2 s canvas-based layout system has an awful lot in common with XAML, so the obvious choice was to develop using Silverlight (or, more specifically, Gtk.Moonlight). Larval s internal theme format is XAML files, which are then exported to (and imported from) GRUB2 s simple text based files. The biggest piece of work, to be honest, is the Managed implementation of a PF2 font reader/writer, so you can design a theme using the regular TrueType fonts of your choice, then have them automatically ported to PF2 format as required. I look forward to plenty of community input on Larval, once it reaches a point where I m sufficiently pleased with my (Ms-PL licensed) code to share it with the world. Until then, you ll have to make do with the above screenshot!

31 March 2010

Jordi Mallach: GNOME 2.30

Congratulations to everyone involved in what looks like a very good GNOME release! Interesting times are now ahead for the GNOME project, as on the plate is now a big release like 3.0. That will mean a lot of changes to the desktop we've got used to in the last decade, and I hope it ends up being successful, innovative and useful. Debian has packages for GNOME Shell, and a special gnome3-session which starts Mutter + Shell. I experimented with it last week at my work place, and had mixed feelings with the current status. I'm not a big fan of hard dependencies on Direct Rendering. My main computer is an Athlon 800MHz. Compiz crawls on it, and sadly Mutter is basically unusable on it. At the office, I have P4-based system with 1GB of RAM, which runs GNOME 2.28 OK. When I switched to the GNOME 3 session, it showed that it's getting old. I also experienced X crashes and kernel oopses, apparently a classic for ATI users using a composited window manager. This being said, I consider myself lucky because both systems have ATI cards and can do DRI using free software. If I was forced to use nVidia non-free drivers, it'd probably mean I'd stick with the Panel until that wasn't an option at all. I am aware we'll see improvements both in Xorg/kernel and GNOME before GNOME 3.0 is released next Autumn, and have high hopes for a release that is accepted by our users really fast (avoiding a KDE 4.0 situation). GNOME hackers have done good stuff for ages, and 3.0 will be a new example!

30 March 2010

Frans Pop: Debianizing an ARM-based netbook

I got this neat little Chinese netbook after a mail to the debian-arm list where one machine was offered in exchange for porting Debian to it. So I offered to get Debian Installer running on it. In total 20 of these ChiTech PC89E netbooks were bought as a group by various people in different countries. The netbook is based on an ARM S3C6410 SoC, has 256 MB RAM and an excellent 8.9" 1024x600 LCD display. The machine itself is 11" and weighs under 800 grams. Most of the weight is the LCD display; they've even had to add a small extra weight in the base to avoid it toppling over backwards. The goal of getting D-I running was achieved last week, though not without needing to overcome some steep hurdles. Base installation Our main problem is that we don't have the source code to either the kernel they use (2.6.24.2 with patches from Samsung and others), or the u-boot bootloader. SSH was available without password for the user account and various basic errors allowed us to root the system relatively quickly. Brute force cracked the root password a few days later. The only information we did have was from the provided desktop system (which is really quite good and certainly looks very polished, but in the end still way too limited), what's on the flash memory and the contents ofa "firmware upgrade" image they provided. Having that firmware upgrade image proved very important as it gave us a good idea how to boot the system from SD card and made it possible to locate the kernel, u-boot bootloader and other files in flash memory. Googling for some boot messages we found two kernel source trees (for a different device: SmartQ) that looked promising as a basis. After some disassembly work by Luke Kenneth Casson Leighton on the kernel to get LCD timings and correct GPIO data we managed to get a basic working kernel: LCD, USB (and thus keyboard and touchpad), and wired networking. Although there are still loads of things that need improving/fixing, that gave me enough to work with to try to get Debian Installer going. The main limitations for running D-I are that we cannot change the bootloader configuration and that their boot procedure does not use an initrd. But we did work out how to boot a custom kernel from an external SD card by making creative use of their "firmware upgrade" procedure. Essentially I needed to find a way to run D-I by only booting a kernel. Piggy-backing an initrd onto a kernel is possible (using the 'bootpImage' target from the upstream kernel build system), but then the size of kernel plus initrd is limited to 4 MB and that is really too limited for a decent D-I initrd (especially if you want full i18n support). I ended up creating a micro-initrd (only 66 kB!) which only function is to mount the external SD card, load the real D-I root initramfs (which now no longer has any real size limitation) and then run init in that. After adding some relatively minor customizations for this netbook (such as installing the kernel from a custom repository on alioth), the installer was up and running. As the framebuffer worked without problem for the newt frontend, I next wondered if it would be possible to also get the graphical installer working. This should be easier for non-x86 systems after the recent switch from DirectFB to X.Org as backend for the graphical installer. And the image below shows it was. I had to create an /etc/xorg.conf to get the USB keyboard and touchpad working (apparently auto-detection does not quite work for less standard hardware), but that was basically it. Language selection So now all we have to do is get all the remaining kernel issues sorted out...

David Welton: Where Tcl and Tk Went Wrong

I've been pondering this subject for a while, and I think I'm finally ready to write about it.
Tcl was, for many years, my go-to language of choice. It's still near and dear to me in many ways, and I even worked on a portion of a book about it ( http://journal.dedasys.com/2009/09/15/tcl-and-the-tk-toolkit-2nd-edition ). However, examining what "went wrong" is quite interesting, if one attempts, as much as possible, a dispassionate, analytical approach that aims to gain knowledge, rather than assign blame or paper over real defects with a rose-colored vision of things. It has made me consider, and learn, about a variety of aspects of the software industry, such as economics and marketing, that I had not previously been interested in. Indeed, my thesis is that Tcl and Tk's problems primarily stem from economic and marketing (human) factors, rather than any serious defects with the technology itself. Before we go further, I want to say that Tcl is not "dying". It is still a very widely used language, with a lot of code in production, and, importantly, a healthy, diverse, and highly talented core team that is dedicated to maintaining and improving the code. That said, since its "heyday" in the late 90ies, it has not ... "thrived", I guess we can say. I would also like to state that "hindsight is 20-20" - it's easy to criticize after the fact, and not nearly so easy to do the right thing in the right moment. This was one reason why I was reticent to write this article. Let me repeat that I am writing it not out of malice or frustration (I went through a "frustrated" phase, but that's in the past), but because at this point I think it's a genuinely interesting "case history" of a the rise and gentle decline of a widely used software system, and that there is a lot to be learned. At the height of its popularity, Tcl was up there with Perl, which was the scripting language in those days. Perl, Tcl, and Python were often mentioned together. Ruby existed, but was virtually unknown outside of Japan. PHP was on the rise, but still hadn't really come into its own. Lua hadn't really carved out a niche for itself yet, either. Tcl is no longer one of the popular languages, these days, so to say it hasn't had problems is to bury one's head in the sand: it has fallen in terms of popularity. To examine what went wrong, we should probably start off with what went right: These features led to Tcl being widely used, from Cisco routers to advanced television graphics generation programs to the AOLserver web server, which was busy serving out large quantities of dynamic web pages when many of us were still fiddling around with comparatively slow and clunky CGI programs in Perl. Note also that there have been a lot of cool things to have gone into Tcl in the mean time. It has a lot of impressive features; many more than most people realize, and has had a lot of them for a while. Check out http://www.tcl.tk to learn more about the "good stuff". But that's not the point of this article... There was a healthy, active community of developers producing lots of interesting add-ons for the language, and working on the language itself. This culminated in its adoption by Sun Microsystems, which hired the language's creator, Dr. John Ousterhout, and a team of people, who added a lot of great features to the language. Quoting from Ousterhout's history of Tcl page:

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?

John Goerzen: Trip part 7: The Journey Home

March 21 was a day of sitting. We ate breakfast in our hotel in Prague that morning, which was pretty similar to an American hotel breakfast, save that the rolls contained black olives and that the all-you-can-eat buffet didn t have people take a new plate on their second time through. Anyhow, we made it to the airport in Prague with plenty of time to spare. That trip that involved a tram, a subway, and a bus, and was on a Sunday morning when all of these services run less frequently. I wasn t sure what to expect, but we did it in right at an hour, just as the hotel desk had estimated. Anyhow, in Prague they were heavily steering people to the self check-in kiosks. So we tried it, and got about halfway through the procedure when it asked us to put our passport on the glass scanner. I did so, and it appeared to process, then complained that the document is not a passport. Eventually an airport employee came over, had the same result after trying it twice, so beckoned us over to the counter. Then on towards our gate. We briefly considered some sort of snack, since we wouldn t get to Munich until after lunch, but the terrible prices scared us off. An entire dinner with friends the evening before cost only 235 crowns ($12.53) for the two of us together, and one restaurant was advertising a panini and Coke for 1 person at 220 Kc ($11.72). Anyhow, we eventually found ice cream bars at a reasonable price. While sitting down at our gate, in the out-of-the-way small planes only part of the airport, we noticed only the second drinking fountain in Europe conveniently labeled with an icon indicating what it s for. The only person other than me that used it washed his hands in it, and did not sip the water. We eventually got on the packed bus to our plane, then flew to Munich. Over there, announcements at regular intervals suggested that passengers flying to the USA go to their gate immediately so they can pass the extra security screening. What joy. We headed in that direction, stopping only to change my remaining Czech crowns to dollars. And then we got to go through passport control followed by security for the second time of the day. This one took special interest in our camera and Terah s scissors. Mysteriously, there was a stream of people not going through security, and we never quite figured out why. We wanted something for lunch, and inside this special security zone there was only one real option: a bar of sorts. We got there, and watched a guy pay for two small beers and a pretzel. They shop conveniently let him pay for dollars, and the price came to $25. Worst exchange rate ever. We bought a pretzel and two croissants and I got rid of my last Euro note (EUR 5) and a EUR 1 coin. Eventually our flight got going. It was interesting comparing our international flight on Lufthansa to our flight to Hamburg on Continental. Lufthansa came through the cabin even in our cheapest economy seats section with hot wet wipes, handed out and later collected with tweezers, before each meal. The food was slightly better than Continental. The in-flight entertainment system had more things on it, though there were not power hookups at the seats. I still didn t really care for any of the entertainment options, though I did watch a Ricky Gervais movie which was OK. I caught a brief nap and read my Kindle. In Chicago, we got to go through American passport control. To get into the USA, even as a citizen, you get to fill out a whole form. That s a bit different than getting into Germany, where they check your passport and send you on your way without even bothering to inspect your bags. (There s a voluntary office you can go do if you have anything to declare.) I had noted on our form that we were bringing in food, and they asked me what kind. I told them it was chocolate still in the wrapper, and they said, OK, that s fine, and waved us on. So in the end it was really no more involved. All the customs people we saw in every country were friendly and helpful. In Chicago, you have to go through security again after customs, so that made our third security check of the day. At our gate, CNN was showing the House debate on health care, and the bill finally passed just prior to boarding for Indianapolis. That was a pleasant welcome home ! Our flight got to Indianapolis a bit after midnight (as scheduled, sigh), and then there was a bit of a drive. We spent the night in Indiana. Jacob and Oliver were staying there with their grandparents, but of course were already asleep. Jacob woke up in the middle of the night at one point, panicked because he couldn t find the butterfly he always sleeps with. Terah helped him find it, and apparently he just sat there staring at her for a minute. Both boys were happy to see us in the morning. Jacob was talking about the toys, and Oliver was just laughing. We ate breakfast, then tried to get on the road as soon as possible we had an 11-hour (before stops) drive ahead of us, and had to complete it all in one day. We had talked about what we would be doing, and Jacob was sad to leave grandma & grandpa and their farm. About an hour into the drive, Jacob said, Dad, where are we going? We re driving home. Kitty doesn t like that. We should go that way. (and he pointed out the back window.) Back to grandma & grandpa s house? Yeah! Jacob has this habit of referring to himself in the third person as a kitty, and probably more so when there s something sad or difficult. We stopped for lunch or running around breaks a few times, and wound up getting home at about 8:30. Oliver started laughing when he saw our porch, and we got inside, Jacob said, I want to run around all over the place! and he did. They were happy to be home. In Leipzig, Fritzi had chosen a book to give to Jacob. On Monday, I got it out, and explained it was from Fritzi in Germany. Jacob was very interested. I told him it was about a mole (Maulwurf), and he thought that was great too. I couldn t remember Brad s translation of the German story, so Jacob and I made up our own story as we went. This was a big hit, and he had me read the book three times all at once. Then he wanted to talk about who gave him the book again. In all, I m very glad we took the trip. It was fun seeing the sights, visiting with friends, and being a part of an environment that s different from our own. I hope we can do it again before too long.

Ben Armstrong: Interviewed by ACOSS

ACOSS, the Atlantic Canada Open Source Showcase, interviewed me this month. I talked about the Debian Eee PC project.

Next.

Previous.