Search Results: "ema"

1 January 2006

Antti-Juhani Kaijanaho: A restrospective on a functional programming course

During the last two months, I taught an elective course on introductory functional programming. The nominal target group was third-year information technology undergrads, but in practice the student body consisted of everything from second-years to almost-done masters students. All had taken at least a year’s worth of general programming courses (taught in Java most recently, earlier in C++), a full semester’s worth of data structures, a half-semester of automata and grammar theory and some mathematics. I have enough teaching experience (been teaching two courses a year since 2002) to know my faults. My biggest fault is that I routinely underestimate the difficulty and laboriousness of tasks I set for my students. My second biggest fault is that if I am not careful, I can easily revert to reciting reference material, that is theoretical definitions, instead of giving a tutorial. I am better at avoiding the latter fault than the former, although when I have little time to prepare, the latter fault will, too, manifest itself. Knowing these faults, I tried to plan this course so that there would not be such trouble. Reading Baen books, I have learned a military saying: Battle plans never survive contact with the enemy. I found myself in a similar situation: my course plan did not survive contact with the actual teaching situation. The broad outlines of what I was going to teach held mostly. Other than that, it ended up being a very different course than I had originally envisioned. I started by giving a crash course on Haskell IO: how to write simple text-line-based interaction in Haskell. The idea was to introduce early the part of Haskell that many people think is hard but is actually quite easy, by explicitly drawing on the students’ imperative programming background. After IO, I ended up trying to give the students a broad, working knowledge of pure functional programming in Haskell, starting with first-order list processing and further discussing topics like parsing, persistent data structures, higher-order list processing, et cetera. I found that it was hard to give any of the topics proper room time-wise, as the basic concepts of functional programming are somewhat circularly related. At this time, the students complained that the course is hard, and many dropped out. They shouldn’t have; we had covered the main topics of the course in half the time. I could then use the rest of the time to go over the topics again from a different point of view, and give them time and tools to integrate it all to their own internal know-how databases. In the latter part of the course, on the surface we discussed Haskell metacircularly, but that was mainly a tool to reinforce the stuff done earlier in the course. Of course, my exercises were a little on the harder side. I ended up lowering official expectations about how much of the exercises the students were expected to solve, and that seems to have helped. Of the 20 people who took the first exam, 18 passed. The advanced course starts in a week or two.

Aigars Mahinovs: Aggregation the G way. I've been using the magic o...

Aggregation the G way.
I've been using the magic of RSS (and Atom) to keep up with Planet Debian, blogs of my friends, tech news and posts to an anime fan forum for the past several months, however one little problem bothered me - the forum has a lot of posts (sometimes more then 5 per minute) and an RSS feed of only last five items. That means that I had to have my RSS aggregator (Liferea) open at all times, so that I do not miss any posts. However keeping my laptop on and online at all times is quite bothersome, so I started looking for solutions.
I tried Google Reader however I didn't like it much - I like to see more of my feed. There is too much screen space wasted for all the wrong reasons, one can only see 5 items at the time (which is quite a hassle if you have 500+ of them), a lot of info I would like to see is not there (which blog did this come from???), some strange html conversions, ...
Now I have found my solution. It is a combination of rss2email and GMail. I have a computer that I always keep on and online (it could be a server, but in my case it is a simple workstation). I installed rss2email there, added all my feeds to the database there (hint: export feedlist from Liferea and do a bit of grep/sed magic), moded config so that all mails come from a single address, all have a custom identifiable header and all are HTML mails without any transformations. After that I configured cron to launch "r2e run" every half an hour and "r2e run 22" every minute (where '22' is the id of the feed of that anime forum). At Gmail side I simply filtered all mails from rss2email into a separate label and archived them (so that they do not clutter my inbox).
Now when I want to reed my feeds, I go to the last message of the RSS label in my Gmail, open it, read it, star it if I need to look at it later and then press "k" to get to the newer message. After I am done reading I usually go and remove RSS label from read messages, so that they do not appear in this labels "folder" and are only saved in Archive. If I start running out of space, I will simply search and delete old RSS items then.
Most of the screen space now is devoted to the message, I can see all the fields I want to see (source, author, topic, content, pictures, URLs) and I can manage messages by hundreds. Also being able to search both your mail and your rss feeds at the same time is neat.
Yesterday I did a little improvement to this scheme. The forum that I read has the title of every message made of "author: topic", so every message is a separate conversation in Gmail. I decided to try to use the conversation feature of Gmail and did a little modification to rss2email so that if the message is from this forum, then everything up to the first semicolon is cut from the title and inserted as a part of the name of the sender. In the end the subject of every message contains only the topic of the corresponding thread in the forum and thus all messages from one thread are neatly grouped together as a single conversation. At the same time every messages From: looks like "$forum_name $author " so that I can still see who wrote what in the forum.

Wouter Verhelst: Funny dialog

dad: (while joining us, who're watching the Vienna New Year's concert on TV) Nice flowers?
mom: No. It's a peasant's fair.
dad: That can be nice too, no? A nice peasant's fair? ... Hmm. This might require a bit of explanation. My mother has been teaching floral design for almost 20 years. She's also managed the flower decorations in the local church for ages. This obviously isn't because she knows nothing about flowers or floral decoration; she obviously does and is, in fact, quite passionate about it. A result of this is that she can be quite upset when you went to church on christmas eve after she's done quite some work arranging the flowers, and you didn't even notice them (because they are, after all, things meant to be decorations in the background—and you gave your attention to the mass itself). Or that when there's something going on on TV or in real life involving a concert, the church, or something else, she'll first look at the flowers, and only then at whatever else is going on. As I do, dad also knows this. So his question was really after her expert opinion on whether the flowers were nice. In that light, the final remark is rather... silly.

Joshua Kwan: For posterity: Md is a flaming idiot!

Abridged to remove irrelevant conversation…
< Czesiu> Btw, udev recommends at least 2.6.12 kernel, which is not shipped
in Debian.
< Md> so far the upgrade procedure is “upgrade your kernel, reboot,
upgrade udev”
< Md> Czesiu: yeah, nobody had told me this yet, you know?
< dilinger> you can either go the lvm route, and make up some kernel APIs to
match again, or you can go the ndiswrapper route and make some incredibly
strict dependencies so that people are sure to upgrade kernels and udev
in parallel.  both solutions suck.
< Czesiu> Md: you sound quite sarcastic :)
< wildfire> why not just have a udev-compat; which conflicts which newer
kernels; and make udev conflict with older ones
< Md> dilinger: a future udev version will refuse to install on anything
older than 2.6.12, so this will reduce the potential for brokeness
< Md> the /dev/input/mice problem has been unexpected, if it cannot be fixed
I will make the next package require 2.6.12
< dilinger> the best solution, imo, is to have udev 0.5x and 0.62 allowed
to be installed in parallel, and have a wrapper script that determines which
to use when it’s run
< wildfire> hmm, dilinger, that does sound pretty clean
< Md> dilinger: the configuration syntax is subtly different too. this is
not really possible
< Md> wildfire: yes, until you start looking at how to implement it 
< dilinger> Md: sure it is; /etc/udev05x for the old version or something
< dilinger> /etc/udev for the new version
< wildfire> md, but that’s someone else problem ;-)
< Md> dilinger: keeping them in sync is hell
< dilinger> no kidding, but that’s what maintaining stuff like this requires
< Md> so far, it appears to be too much complex to be justified
< Md> if upgrades will happen to be more complex than we currently know then
I will reconsider this
< dilinger> are you kidding?  i think the number of people whose systems
are breaking is pretty good justification
< Md> dilinger: only because the package currently is not refusing to run
on older kernels
< idnar> Md: but if the package fails to run, isn’t that likely to cause
breakage too, since your /dev won’t look like it normally does?
< Md> idnar: it will refuse to be installed or upgraded, like it’s currently
happening if you are using a kernel < 2.6.8
< dilinger> Md: what about doing something insane w/ devfs/
< dilinger> and devfsd
< Md> dilinger: ?
< idnar> Md: ah
< dilinger> depend upon devfsd, if the kernel is older than 2.6.12, have it
mount devfs over /dev and run devfsd instead of runing udev
< Md> different configuration syntax, different semantics, no HAL/hotplug
support. basically, I can’t see why you could think about this
< dilinger> because it would allow things to *work*
< dilinger> even if it doesn’t have the same config syntax
< dilinger> it could spit out a big warning upon startup
< idnar> suddenly switching the user to devfs would likely cause all sorts
of unknown breakage
< Md> if the kernel is older than 2.6.12 people will not be able to install
a newer udev, so this is not relevant
< Md> please try to look at the whole picture
< dilinger> people are going to want to reboot into older kernels and have
their /dev in a sane state
< dilinger> the running kernel isn’t the only one they may be using
< Clint> yeah, i’m not using the running kernel
< Md> dilinger: then udev will automatically disable itself. the current
experience shows that users are not bothered by this
< dilinger> Clint: quiet over there :P
< dilinger> Md: the user experiences around here don’t seem to match what
you’re saying, otherwise i wouldn’t even be mentioning it
< Md> again, this is not how future versions will work
< dilinger> let me put it another way
< dilinger> it would be a very good idea to future proof udev against such
incompatabilities now
< Md> tell greg k-h, now me :-)
< dilinger> because i’m sure things will break again
< Md> anyway, you persuaded me. I will upload right now an updated package
which refuses to be installed with old kernels
< Md>   * Kernels older than 2.6.12 are not supported anymore.
< Md>     If detected, the package will refuse to be installed.
< Md>     If the running kernel is downgraded after the package has been
< Md>     installed udev will disable itself at boot time.
< Sesse> Md: whoa
< joshk> that’s ridiculously stupid if you as me
< Md> this is what was going to happen in a few releases anyway
< Clint> joshk: coredump immediately
< Md> BTW, I suggest that concerned people read this before continuing
http://sourceforge.net/mailarchive/message.php?msg_id=12236847
< joshk> breaking support for anything but the very latest kernel (which
isn’t even in debian yet!) is dumb. you break everyone’s desktop because
hal stops working
< joshk> (one particular example)
< Md> joshk: people can keep the old udev until the upgrade, nothing breaks
< Sesse> Md: *g*
< joshk> don’t grin at Md, it makes him think we’re in agreement

Joshua Kwan: Where was I when Woody was released?

(Viral meme #1,234.) I was still in Hong Kong, packing up to leave for California due to my mom’s job being relocated. I certainly didn’t know about Debian at all at the time; I had only unsuccessfully attempted to download the Slackware installation media, but had experience with SuSE Linux 6.3 and Caldera OpenLinux 1.2. (I distinctly remember sound never working.) I recall being a lot more immediately interested in anime than anything computer-related. It was only several months later when my laptop failed to boot following an installation of some satanic Service Pack for Windows 2000 that Misha Nasledov, a classmate and Debian developer two years my senior, showed me - from his Google CD jacket - a set of Woody installation media. By evening, I was poking around the system, trying to replicate my Windows environment. A few weeks later, I remember setting the machine up to dist-upgrade to unstable! By February 2003, I had entered the NM queue…

Erich Schubert: Linux: a leap ahead

Maybe Intel should donate their new slogan to Linux instead: Linux servers reporting the leap second This is a small farm of Linux servers, each reporting that it has added the leap second, and logcheck on each of the machines (not running remote syslog yet) reports this line as "unknown or important log message", sending an email each to my off-site account. Guess I'll have to file a bug against logcheck to add a statement for this line, so I won't see it next year. or in 2600, if they maybe add a leap hour instead. On the other hand, this is a nice new years mail from your servers: Nothing interesting happened, so I had to add a leap second. ;-)

31 December 2005

Antti-Juhani Kaijanaho: New year

Thirty years ago I was not born yet. Twenty-five years ago I was having an adventure in the student village. Twenty years ago I lived in a red house (there was no potato farm, though). Fifteen years ago I started noticing politics. (It was hard not to.) Ten years ago I was nearly burned out because of both the demands of school and all the extracurricular activities I enjoyed. Five years ago I was doing my best to graduate to Bachelor’s Degree. Four years ago I had succeeded. Three years ago I had just finished my Master’s Degree. Two years ago I was trying to expand my Master’s Thesis into a postgraduate Licentiate’s Thesis. I eventually got sick of the topic. One year ago I had just barely lost my first elections and was fretting about getting elected as one of the local district court’s lay judges. Six months ago I was fretting about going to Debconf.
Today, I’ve been thinking about tidying my room. In 2006, I hope to graduate to Licentiate’s Degree. I also hope I will be able to make some good progress in some of my bigger hobby projects. And to teach good courses. Maybe even improve dctrl-tools further.
Happy new year 2006!

Erich Schubert: Happy new Two-Oh-Oh-Six

Just a few hours remaining here until the longest 24h hours in years...

Antti-Juhani Kaijanaho: Pain and suffering and other immaterial personal damage

Martin- ric Racine asked in the comments to my previous mini-essay on crime-related damage compensation about how immaterial losses, such as pain and suffering, are given monetary value in court. In this essay, which is again part of my essay series on Finnish criminal justice, I will try and sketch an answer. As usual, I am not a lawyer and this is not legal advice, and this is not an exhaustive treatise on the subject. Finnish law is very vague about how immaterial damage is compensated. It basically only gives a list of the forms of immaterial loss for which compensation can be ordered by a court. The main categories related to physical injuries are kipu ja s rky (usually translated somewhat inaccurately as pain and suffering) and pysyv haitta (permanent handicap). Kipu refers to the instant pain suffered when the injury is created, and s rky refers to the longer-term but not permanent pain present after the kipu has ended until the injury is healed. A new act of parliament will amend this at new year, specifying these in greater detail. It amends the existing Damage Compensation Act by defining a list of things that are to be given special weight when measuring the monetary value of personal damage. For pain and suffering, those things are the type of the injury, the type and duration of medical treatment it required, and how long the pain and suffering lasted or is expected to last. For permanent handicap, however, the list is a little different: the type and extent of the injury, and the age of the injured person at the time of injury. This is basically just writing out the existing legal praxis. There is currently no specific standard against which the courts compare individual cases. However, since one is desperately needed, the courts generally use a substitute. There is a governmental board whose job is to set a standard monetary valuation for different types of injuries sustained in traffic accidents. That standard is intended to be used by insurance companies, but in practice, courts also use them as a guide when considering injuries caused by criminal acts. In relation to pain and suffering, the standard categorizes injuries as follows:
Category A (petty injury)
will heal fully leaving no marks in a week or two, requires no hospitalization, causes at most two weeks’ inability to work – scratched skin, small cut, minor bruises etc.
Category B1 (minor injury)
requires no resuscitation nor intensive care, requires up to a week of hospitalization without surgery, causes at most two months’ inability to work, causes only insignificant permanent disability – significant bruising, loss of few teeth, simple bone fractures etc.
Category B2 (medium injury)
may require resuscitation but not intensive care, requires one to three weeks of hospitalization, no complications in treatment, no need for reconstructive surgery in later care, causes at most seven months’ inability to work, causes only minor permanent disability – simple fractures of the long bones, fractures of facial bones, etc.
-Category C1 (major injury)
requires cardiovascular or pulmonary resuscitation, requires short-term respirator use or tracheostomy, in the case of a limb injury, requires demanding surgery, requires reconstructive surgery in later care, requires up to eight weeks of hospitalization, causes up to eight months of inability to work, causes significant permanent disability – loss of all teeth, complicated bone fractures etc.
Category C2 (especially major injury)
requires long-term mechanical respiration or resuscitation, major complications in treatment, requires extensive surgery, requires hospitalization for longer than eight weeks, causes a year of inability to work, causes major permanent disability – loss of limb, significant brain damage, loss of fertility, severe burns etc.
Category C3 (extraordinary injury)
extraordinary complications in treatment, long-term hospitalization, causes complete disability, causes helplessness – extreme brain damage causing dementia, loss of both upper limbs or both lower limbs, causes permanent pain, permanent quadriplegia, causes complete blindness
As you can see, all categories are described both by the treatment required and by listing sample injuries. These descriptions are complementary, and not identical. In categories A and B, the treatment-based descriptions are conjunctive (all requirements must apply), and in C, they are disjunctive (at least one must apply). I did not translate the descriptions completely; see the Finnish original source if you need more detail. The traffic injury standard currently specifies the following monetary values for each category:
Category Compensation
A see below
B1 200–1,000
B2 1,000–2,900
C1 2,900–7,300
C2 7,300–16,700
C3 at least 16,700
Due to a quirk in the traffic injury ccompensation system, Category A is not compensated in the case of traffic injuries. This does not apply in criminal cases, where Category A is usually taken as “up to 200 ”. Of course, the specifics of the case will sometimes require departing from this standard in criminal cases (the aggravation in the crime often is taken as a reason to up the monetary damage estimate). Permanent damage is similarly handled by courts by referring to the standard set for the statutory employee’s accidental injury insurances (see the Finnish sources 1 and 2 for details). I already mentioned above a new act of parliament. That act, which will enter into force January 1, 2006, creates a new Personal Damage Advisory Board (henkil vahinkoasiain neuvottelukunta), which will follow legal praxis and give recommendations, much like the above-described standard, which courts and other instances deciding on compensation for personal damage can take as a base standard against which individual cases can be measured. The advisory board’s recommendations are likely to supplant the traffic damage standard described above in the future.

30 December 2005

Uwe Hermann: Why you should read your log messages from time to time

I didn't notice this for months. I was only able to use ca. 900 MB of my 1024 MB of RAM. It only happened accidentally that I read through my logs and noticed this:

Dec 26 19:33:37 localhost kernel: Warning only 896MB will be used.
Dec 26 19:33:37 localhost kernel: Use a HIGHMEM enabled kernel.
Dec 26 19:33:37 localhost kernel: 896MB LOWMEM available.
After setting the "High Memory Support" kernel option to 4GB and a quick kernel recompile, I can now use my full RAM. Nice, eh? Update 2005-12-31: Thanks a lot to all the people pointing out (via comments in the blog and emails) that there's a better way to do this!

29 December 2005

Jeff Bailey: Will bomb for food

CBC reports that fisheries around the world combined consume the same amount of oil per year as the Netherlands. They go on to explain:
  1. Depletion of fish stocks because boats are travelling further out to sea in order to meet demand causes higher fuel consumption.
  2. The fishing industry is still more efficient than other meat based industries.
Another way that your dinner can contribute to global warming and US-style "anti-terrorism".

Emanuele Rocca: s/websearch/smartbookmark/

It seems that an Xfce plugin called websearch already exists. I renamed mine to xfce4-smartbookmark-plugin. I will use Google before choosing project names.
I will use Google before choosing project names.
I will use Google before choosing project names.
I will use Google before choosing project names.
I will use Google before choosing project names.

28 December 2005

Emanuele Rocca: xfce4-websearch-plugin

I hate the firefox search engine.
If you want to switch from Google to Wikipedia you've got to click on it and choose the right engine from a drop-down menu. Galeon users out there, you know what I mean. You've got smart bookmarks, and you can add an awful lot of them to your browser, choose the right textfield and go. You go faster, avoiding one click. :) But apparently nobody shares my feeling, given that during an irc conversation people repeatedly asked me "why on earth do you want one textfield for each engine?". I solved my own problem writing a small Xfce panel plugin which let me enter a keyword and then executes
x-www-browser http://configured_url/keyword Here it is a screenshot, and the source code.

Axel Beckert: I changed my mind. I want a camera mobile phone.

Today I read and wrote about Semapedia, a service respective toolset to encode Wikipedia URLs (and also others) as dot-matrix barcode, print them out on leaflets together with mentioning Wikipedia and the URL. Then any visitor with a modern camera cell phone can take an image of the barcode, decode it with the right software on your phone, which passes the decoded URL directly to the phones webbrowser. This is the first useful application of camera phones I ever heard about. But I see it as so useful that I may consider buying me a camera cell phone with the next contract renewal, although until now, I focused all my search for a worthy successor to my Nokia 6310i on non-camera phones. (Update: And I’m not alone with the wish for a useful mobile phone.) The 6310i had nearly everything I needed: A big memory, long standby times (1.5 to 2 weeks), WAP incl. WAP browser for reading Symlink on the road, GPRS, GSM 900/1800, T9, Infrared, gnokii support, the same battery bay than my former mobile phones (Nokia 6210 and 6130) and the Nokia typical, very intuïtive and blindly usable user interface. (Siemens mobiles suck!). It also had some things, I didn’t need yet, but sounded useful: Voice dialing and voice recording, Java for playing with own programs, Bluetooth for a cableless headset or so and GSM-1900 because perhaps also other countries than the US use that frequency band. (I refuse to travel to the US, so I won’t need the GSM-1900 there.) It had nothing I didn’t want to have in a mobile phone: Camera, radio, MP3 player, standby time munching color display, e-mail client, MMS, MP3 ring tones or flip covers. The only thing I missed, was a more modern Java VM and even more memory when Opera Mini came out and maybe polyphone ring tones, so I could have the Monkey Island theme as ring tone. ;-) So what now? Being able to use Opera Mini and Semapedia means to have a mobile phone with camera and — and that’s the drawback — a color display. Anyone knows a Nokia camera phone on which Opera Mini runs but without color display? And with the battery bay from the 6x10 series? No? Or maybe I should just stay with the 6310i and get me a second one in better condition (no broken case) from eBay or so? There were also (yet unconfirmed) rumours that my GSM provider E-Plus will have the Linux based internet tablet Nokia 770 for a contract renewal plus 80€ to 90€… Difficult decision…

Andrew Pollock: [life] Back online

Our DSL modem finally arrived today. Well, it kind of involved accosting the UPS guy in an adjacent street whilst walking back home from 7-Eleven acquiring ice cream, but hey, we got the thing in the end. I went with Sonic on advice from guys from work, and I have to say I've been totally impressed with their customer service to date. Today I got an email from them because I'd reached my activation date, but they hadn't seen any ADSL traffic from me yet, and they just wanted to check that everything was okay. We had a free dialup account for use while we waited for the ADSL to be provisioned (and the delay was with receiving the modem over the holiday season, not the ADSL provisioning itself). Also, their account management website allows an impressive amount of self-control over aspects such as spam filtering and firewalling. I'm a very satisfied customer so far.

27 December 2005

Joshua Kwan: Working around eBay

Interesting that a “hip” company like eBay doesn’t support recepient delimiters for your email address. I tried changing my email address to one with a recipient delimiter, and it interpreted the + badly; in the end I substituted the + with ‘%2B’ and it went through. Just a note for anyone who might think of doing the same. My bank also had the same issue, but I got them to fix it properly.

Matt Brown: Miredo/Toredo Patent Status

Miredo is an implementation of the Teredo - IPv6 over IPv4 tunnelling protocol which I have been playing with lately. I have filed an ITP bug to get Miredo into Debian, however this has been delayed while I try and get a handle on some of the patent issues surrounding the Teredo protocol. While Miredo itself is licensed under the GPLv2 the state of the Toredo protocol is less clear. Teredo was created by Christian Huitema, an architect with Microsoft. It is currently a Proposed Internet Standard waiting for the IETF editor to review it and assign an RFC number for it, IANA will then assign a permanent prefix for use by Teredo clients, servers and relays. According to the IETF IPR disclosure page, Microsoft has filed a statement of claim against the technologies described in the Proposed Standard. Microsoft states that they will provide a Royalty-Free, Reasonable and Non-Discriminatory License to All Implementers in their statement. Specifically the license that they offer the Teredo protocol under is called the Microsoft Royalty Free Protocol License Agreement. This is a catch-all license that Microsoft uses for all client-server protocols used by Windows. The license itself doesn’t make any claims about Microsoft’s IP rights, it simply gives you a license to use any rights Microsoft may have in the specific protocol you are using. For example at the end of the license agreement you select which protocols you wish to have covered under the agreement. Alongside Teredo you can also choose protocols such as IPv4, DNS, 6to4 and lots of other common protocols. The actual patent application for Teredo is incredibly difficult to find, the IETF IPR disclosoure doesn’t link to it, none of the proposed standards link to it and googling for “Teredo Patent Application” isn’t particularly successful either. In the end it turns out that the title is quirkily named “Allowing IPv4 clients to communicate over an IPv6 network when behind a network address translator with reduced server workload” and was published as Patent Application 20040190549 on the 30th September 2004. Incidentally if anyone knows of a nicer way to link to a US Patent Application than the ugly URL above, I would love to know. Half the reason that the Patent Application was hard to find is that it doesn’t actually mention Microsoft anywhere at all, unlike the ~5000 odd other Patent Applications currently filed by Microsoft. From what I can tell it appears that Christian Huitema has filed the application through is own personal attorneys independently of Microsoft. So where does this leave us in terms of getting Miredo into Debian? The short answer is I’m not entirely sure. I can’t seem to find a definitive statement regarding Debian’s position on patents anywhere, the best I’ve been able to come up with is a debian-legal post from Andrew Suffield from Jan 2005 which offhandedly describes the informal Debian patent policy as:
“ignore patents until somebody starts to wave them around, then drop the offending thing like a hot rock”
So maybe I’ve already shot Miredo in the foot, by investigating its Patent Status… :( My take on the situation seems to be that Debian is perfectly happy (and perhaps has no other option but) to ignore patents applicable to software in Debian until it becomes apparent that a particular patent is being enforced or has the potential to be enforced. So the question now becomes whether the Microsoft Royalty Free Patent License is acceptable enough to Debian to allow Miredo to be included in main or non-free, or whether it simply can’t be redistributed at all. The main problem I see with the license is that it does not permit you to sublicense other parties to make use of the Toredo technology used by Miredo. If this were a copyright license then that would most certainly fail to pass the Debian Free Software Guidelines, does Debian treat patents in the same manner? I think it’s time for me to post to debian-legal to seek some “official” guidance on the situation, but hopefully this post has ordered my thoughts enough that I can now write a coherent mail seeking help. If you have any comments or pointers to Debian statements on this sort of situation that I have missed they would be most welcome.

26 December 2005

Uwe Hermann: Going to 22C3

I'm heading towards Berlin in a few hours in order to attend 22C3. I'm not sure if/when I'll be able to blog or read/answer emails there, but I'll be back in a few days...

Adam Rosi-Kessel: Verizon Does Not Have Enough Phone Lines

I’ve complained about Verizon twice before, and still haven’t gotten around to my omnibus Verizon entry. The latest issue is that I cancelled my Verizon DSL over two months ago, having switched to Speakeasy, which, although much more expensive, provides so much better service (both by way of connectivity/throughput and customer support) that it’s actually worth it. I called Verizon at the time, and asked them to cancel the DSL, which they said they would do immediately. The next month, DSL was still on my bill, but I figured it was probably a billing cycle issue. The following month, the DSL charges were still on my bill, so I called to find out what happened. They had no record at all of my prior request to cancel service, but said they would happily cancel it now and refund both months. I asked them if there should have been a paper trail for the earlier request, and they said there wouldn’t be. I asked them if I could have some sort of paper or email acknowledgment of my current request, and the representative insisted it wasn’t necessary (and apparently just “not done.”). Now again this month, I still have the charge on my bill, and the last two months have not been refunded. When I try to call today, however, after maneuvering through several menus to get to a human, I am informed that not only are all representatives currently serving other customers, but there are no available phone lines for holding, and I should call back later. Click. How is it that this country’s largest phone company doesn’t have enough phone lines? (I suppose another question is how is it that they manage to retain so many customers. But that’s a question for another day.) (Any Verizon folks out there who could comment on this entry and provide some illumination?)

Matthew Palmer: Language Is Not Just Syntax

My current long-term learning project is Ruby on Rails, the ultra-hyped web application framework from David Heinemeier Hansson and friends. I like it (primarily because I can see a lot of my own abortive ideas from a web app framework for PHP I used to develop), but there is one big thing about it (or, rather, it's surrounding hype) that irritates me. Throughout the Rails literature (webpages, magazine and webzine articles, and the book Agile Web Development With Rails), there is a consistent message -- that, because everything is written in Ruby, you don't have to learn any new programming languages to write Rails applications. This is a wonderful theory -- no large XML config files to define my database schemas, and no castrated and irritating HTML template system to learn. From defining table relationships to printing a select tag, It's All Ruby, All The Time. Sweet, right? Sort of. The problem is that you won't find the language primitive to declare a one-to-many relationship in the Pickaxe (the definitive Ruby language reference book -- like "the Camel" for Perl, "the Bat" for Sendmail, or "the Turkey" for PHP). Defining a separate namespace in Rails for all of these operations is, of course, necessary, since the language didn't already define these operations. But, once you've defined a whole new set of methods to do all of these operations, you can look back on your hard work and see -- what? A new language -- one specifically designed to describe webapps. Don't get me wrong -- domain-specific languages are teh r0x0r. If everyone had to do all of their HTML manipulation by hand, programmers would be even more insane than they are. But, when you're writing your application in Rails, you're not speaking "pure Ruby". Your syntax and basic structure is Ruby, but your methods and attributes are new, different, and All Rails. It may not be a separate programming language in the usual sense, but by the time you've added a whole new pile of classes, methods, and attributes (not to mention whole new ways of structuring your application), how much importance is the use of the @ symbol to signify an instance variable, compared to the whole new set of methods to learn? Natural languages, of course, have similar issues. Most western european languages share a lot of common characteristics -- similar character sets, punctuation sets, and they read left-to-right. So I can look at a page of German or French, and identify most-to-all of the salient features (hey look, an 'a'!), and even grok the meaning of a few of the words (familiar to me, probably, because English misappropriated them from wherever they came from) but I still have no hope whatsoever of understanding the meaning of the passage as a whole. The language syntax looks familiar, but those nouns and verbs don't have any meaning to me. You can't plonk a Rails app in front of even a seasoned Ruby developer and expect them to immediately jump in and start hacking on it like they've been writing it all their life. The language syntax looks familiar, but those methods and attributes don't have any meaning to them. This is nothing peculiar to Rails, of course. If you want someone to hack on your Hibernate or Spring app, you'll get better results if you advertise for a Hibernate or Spring programmer than a Java programmer. But Rails advocates regularly say "it's all just Ruby, so there's nothing new to learn!", and that's Just Wrong, in my opinion. As an aside, if you're looking around for something a bit different, do seriously consider Rails (or just Ruby, if you don't need a webapp framework). It's different from the "usual" suspects (C, C++, and "the Ps" -- PHP, Perl, and Python), and pleasantly so. If you judge your programming languages by the old adage "a programming language that doesn't change the way you think about programming isn't worth learning", Ruby will score well. I know it's helped me think about my programming differently already, especially my Python programming (and thanks to Anthony Baxter for answering all of my esoteric python questions at OSDC a couple of weeks ago).

Next.

Previous.