Search Results: "ana"

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.

Andrew Pollock: [life] 2005: The year in review

2005 is the first year I've blogged from start to finish, so it is interesting to go through and reflect on what has happened. It's certainly been an eventful year. Executive summary: got engaged, got married, got a job with Google, moved to the US. Did a whole lot of other mainly geeky things in between.
January
  • Moved from living in an old rundown share house in Ainslie to a townhouse in Watson, without the flat mate
  • Started getting my teeth into work at my new job
  • Took Sarah to the ER with chest pains, after having had them on and off over Christmas
February
  • Proposed to Sarah
  • My blog got syndicated on Planet Linux Australia
  • Wrote my blog post about mitigating SSH brute force attacks using Netfilter's recent module. Still get a lot of search traffic from that today
  • Went camping at Jervis Bay, managed to hit a kangaroo on the way, had a rather traumatic time trying to euthanize it
  • Decided to continue studying at Uni part-time in conjunction with full-time work (masochistic, huh?)
March
  • Made changelogs.debian.net a whole lot spankier
  • Had a moderately unsuccessful time turning an old laptop with a dead hard drive into a diskless server with an NFS root filesystem. (I really must get around to trying again doing ATA over Ethernet)
  • Bought a QFE card, after much vying on EBay, which is still sitting in a drawer unused
  • Discovered how to make my laptop suspend
  • Completed a Saint John Ambulance Senior First Aid course
April
  • linux.conf.au happened, and I helped make it happen
  • Interesting side-effect of the above was that I got asked to apply for a job at Google
  • I had fun with a cylinder of surplus helium
  • Sarah is advised to discontinue triathlons because of a possible heart condition
May
  • My oldest friends separate, and it looks like they're going to get divorced
  • Sarah had her car broken into in the driveway and her purse was stolen
  • I get into a panic about passing Uni and really knuckle down
  • I discover a little too late that I've missed marking my ten thousandth day since birth
  • I organised a dinner meeting of Canberra Perl Mongers, which is a largely dormant group
  • We got a new cat
  • I hit two years as a Debian developer
  • I joined the Linux Australia sysadmin team
June
  • We decide to bring forward our wedding from April 2006 to July 2005, "just in case" the Google thing comes off
  • caesar, the box I use as my gateway blew up and got replaced with something gruntier
  • I got into discussions with University House about doing a wireless LAN setup for them for their guests
  • Started work on a box for Linux Australia that would host a few User Mode Linux instances for various things
July
  • My old Rover crew turned 20
  • We discovered the Tea Centre, and the wonders of different varieties of leaf tea
  • I scraped through first semester at Uni
  • I decided to upgrade daedalus and ordered a new box
  • Michael and I went to the US for face to face interviews with Google
  • Started semester 2 at Uni
  • Started migrating services to the new daedalus
  • Sarah and I were married
August
  • Google makes me a job offer
  • I ordered myself a new laptop
  • My car tyres got slashed while I was at Uni
  • Uni all got a bit much, and I decided to drop out
  • I got a 1 gig USB key
  • I had some fun with LVM snapshotting
September
  • Video card in my desktop blew up
  • I return to working in the office, and have a crack at catching the bus because of heinous petrol prices
  • I built Linux Australia's content mirroring box
  • The cat vomits one time too many and gets a new diet
  • We went and saw the Warehouse Circus' most excellent BAM! production
October
  • I ascended Mount Tennant with Rick
  • Sarah and I went and checked out the Tumut 3 power station
  • Sarah got her wisdom teeth out
  • I had some more fun with LVM and data migration
  • I had even more fun with LVM snapshots
  • We finally got our visas for the US
  • I quit my job
  • We bought a new dining table
  • We bought an iPaq and a bluetooth GPS and some navigation software
  • We bought a new digital camera
  • Canberra Perl Mongers had another dinner meeting
November
  • I finished up at Cybertrust
  • I went to the US
  • Sarah went to Singapore for a holiday with some of her relatives
  • I started at Google
December
  • Sarah arrived in the US from Singapore
  • We found somewhere more permanent to live
  • We bought new mountain bikes
  • All our stuff arrived from Australia

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!

Decklin Foster: Stabbing in the dark

There, I think I finally disagree with Language Log. Honestly, why do you think we don t teach linguistic analysis of any sort at all anymore? Because literature and composition classes have become the same thing: the best compromise for a set of conflicting requirements. We can do better. Any incompetent moron can teach you pointers and recursion. No, it does not matter if they are using a language you consider boring and ugly. But what they cannot teach you is how to think. Which one is your problem space? Programming languages do not map onto natural languages. Yes, you learn Latin so you can grasp grammar, logic and rhetoric. You do not learn $LANGUAGE so you can grasp pointers, recursion, and typing. You learn pointers, recursion, and typing so you can grasp clarity, expressiveness, refactorability, efficiency, and how to turn a mental model into a computable abstraction and vice versa. Learning the programming language is like learning how to hold a pencil and use a piece of paper so you can write the Latin words. It s kindergarten stuff and half of us can t teach it to college students. No, it doesn t matter if you use a pen instead. I suppose it doesn t matter if you have to use a typewriter with no whiteout and one hand tied behind your back, because that is very popular, or whatever. Or maybe you think it does. But stop acting like that s the fucking point. Both of you.

Aigars Mahinovs: New Year's Eve. No party to go to. Lots of time to...

New Year's Eve. No party to go to. Lots of time to spend reading up on my mailbox and working towards 1.0 release of sbackup.

However I will stop for a moment for a meme from my friend, Yume

The idea is to put all of your music collection into a player, put it on shuffle, ask a question and press next. "Me" is myself, "PL" is the player with my interpretation of results on the next line.

Me: What do I think about myself?
PL: Aqualung - Strange and beautiful
I like that, nice start! :)

Me: What do my friends think about me?
PL: Rammstein - Moskau
Old, yet new. Known, yet strange. Open, yet with lots more to explore. Money uber ales.

Me: What does my family think of me?
PL: Weezer - Buddy Holly
"...I don't care what they say about us anyway..." :)

Me: How will the next year be for me?
PL: Gloria Estefan - Turn the beat around
dynamic and revolutionary?

Me: Hmm, nothing comes to mind ...
PL: Madonna - Secret
"...Happiness lies in your own hands..." or "..my baby's got a secret.." ?

Me: Will this year be more romantic then the last?
PL: Jackson Browne - Sky Blue and Black
??? strange love song about the edge between lovers and friends

Me: Do I have a bright future?
PL: Roxette - Dangerous
lol. "Hold on tight...", "...You pack your bag, you take control..." sounds nice even if "a little bit dangerous" :)

Me: Will I become a President (or at least a MEP)?
PL: Celine Dion - If you asked me to
so it is possible, if I want it to and ask for it

Me: Will I get my Master's degree?
PL: Shiro Sagisu - Destiny avaits (From "Bleach" OST)
Good, so that is my destiny :)

Me: When will I buy myself an apartment or a house?
PL: Dream Academy - Life in a Northern Town
Not positive - "all the work shut down" and mentions of the Salvation Army and "they sat on the stoney ground", but "everyone else came down". On the other hand, living outside Riga in some more northern towns is much cheaper, so that's an option.

Me: What about renting, I hear that is more reasonable now, ne?
PL: Anastacia - Pretty Little Dum Dum
"illusion and deceit" mostly about self illusion, sounds like you want to say that I myself will not be satisfied with a rented place.

Me: Ok, that brings another question - if I start a company, will it be successful enough for me to buy/build a house without taking a mortage?
PL: Diana King - Shy Guy
song says that shy guys are sexy, is that a potential marketing pitch :$
Me: I didn't quite get it, could you a bit more clear about that?
PL: Anastacia - Time
"one day at a time", "timing is everything". now that is better.

Me: Now, should I really publish this blog post?
PL: Avril Lavigne - Not the only one
If you do it, do it now.

So I will.

Zak B. Elep: Back to School

Hey blog. Long time no post. Where was I? Ah, yes. I was so distracted with so many things to do at the moment. Things such as rebuilding a woody chroot via debootstrap only to fail inside a Ubuntu breezy system because of an obscure bug that affects Linux >= 2.6.12, as well as wgetting, building, and testing source packages for The Great Merge. Not to mention that my books for the second semester have arrived, and pending some grokking. I owe EClair a howto for mozex and gnuclient, although from our recent chat she seems to have managed. What? I need to attend to my debdiffs again. Ah well.

Zak B. Elep: Going on, and on, and on

Deep breathing here. Finally, sem break! Well, actually, it already is sem break since the 15th, and only now at the end of this month did I felt it. I was so busy doing things, both online and offline, that I didn’t even realize that the next sem will be up in the week after next. Sigh… So, what have I been doing since school’s close? Mostly Ubuntu work: Aside from hacking, I’ve been busy baking as well, and preparing for next sem. The only thing I’m quite missing is the “traditional” Halloween get-together with my High School batchmates; hell, it is only 1 year to go before a Homecoming… PS: My Ubuntu work has paid off. Thanks to Kamion, Seveas, smurf, dholbach, tseng, and ogra for voting me in as a Ubuntu Member! And to Jerome Gotangco and the Ubuntu-PH team: mabuhay kayo! :)

Antti-Juhani Kaijanaho: Strange sounds

It’s ten past nine on a Monday morning. I am usually at work at this time, but not today. Tomorrow’s the Independence Day, and I’m, as usual, staying home for the single work day that this generates. Suddenly, I hear a very powerful growling sound. It lasts about ten seconds. It is so powerful that everyone in the neighbourhood ought to hear it. About twenty seconds later, there are a series of equally powerful electric but almost otherworldly jingle sounds. They last about ten seconds. About twenty seconds later, the general alarm is sounded: a continuous siren first raising the pitch then lowering. It stops after one “wave”. A relief: it is a test of the general alarm system. I had read about the sound-based remote control of the general alarm system, but this was the first time I observed it in use. Had I not already surmised that this was going on from the start, I would have been seriously frightened by the strange sounds. About a minute or two later, while I was already composing this, I heard very faint jingling, followed by a very faint general alarm. Obviously, the system was being tested elsewhere.

Antti-Juhani Kaijanaho: Independence Day repost

The following is a repost from my old blog, originally written one year ago. As I start to write this, it’s the last minute of my country’s 87th birthday (the Finnish Independence Day). It got me thinking about nation-states and independence and whatnot. And I came to a threefold conclusion: First, there is some value in independence. Getting rid of the status of a Grand Duchy in personal union with Russia was certainly a good step for Finland, in light of the rough road the Russians themselves have since travelled. For the same reason, the two wars Finland fought against the USSR were quite worthwhile. Similarly, if Finland were to be threatened by a neighbour again, armed defense would certainly be justifiable. Second, there is no intrinsic value in independence. If a humanly life (including freedom and local government) can be guaranteed even if there is no Finnish state in itself, I see no reason to hold on to the old-fashioned concept of a nation state. Third, I am in favour, as a long-term goal, of a world government. Of course, a single government becomes a single point of failure in case of a coup, for example, but if the global state is arranged properly, the danger of a successful coup is minimal. On the other hand, a world government is in far better position to institute necessary policies to combat the global problems of poverty, climate change and other such issues than the current system of competing and cooperating nation-states. In the current system, the big issues are easily put aside in name of local opportunism. Finland is by no means immune to that problem. The great crises of the 20th Century were its devastating wars. Fortunately, we have overcome them to a sufficient degree. The great crisis of the 21st Century is not terrorism – though it is a symptom. The great crisis is caused by the limits of growth, and we are already feeling quite concretely the nearness of those limits. If something is not done, our current civilization will crash spectacularly. The human race will probably survive – but do we really want to live through another Dark Age? Long Live the Earth!

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.

Antti-Juhani Kaijanaho: Not again!

When you protest political decisions, please – pretty please! – have some perspective! As bad as the new data retention decision is, it is not even in the same ballpark as 1984. There is no thought police, there aren’t thousands of people rewriting history books according to the political leadership’s whims, there is no newspeak whose vocabulary is constantly shrinking. Nobody will take you seriously if you overreact. You only hurt the good cause.

Antti-Juhani Kaijanaho: Phishing Amazon user data

I’ve seen from several sources messages of the following kind:
Subject: Please verify and update your Amazon account !
Dear Amazon    member , 
    It has come to our attention that your Amazon account information records are
out of date. That requires you to update your account information . If you could
please take 5-10 minutes out of your online  experience , and update
your account , you will not run into any future problems with Amazon
online service.                                       
   However, failure to update your records will result in account termination.
Please update your records in maximum 48 hours.  
   Once you have updated records, your Amazon session will not be
interrupted and will continue as normal.
      To update your Amazon account information click on the following link: 
        (link suppressed)
 Best Regards ,
Amazon Security Departament
Disregarding the very sound general rule of thumb telling us to distrust any mails that ask us to “reconfirm” our account details at whatever company, this mail is fairly convincing. The greatest clues that this is a forgery are such that Grandma Pihtipudas will unlikely notice them: the mail has been sent to several addresses I know are not registered with Amazon, and the link uses a well known URI spoofing technique. Beware!

Antti-Juhani Kaijanaho: Unbounded Tic-Tac-Toe

Here is the result of a few nights’ worth of hacking. This project was originally my solution to an exercise I had posed to my functional programming students. Since then, I’ve rewritten it once and redesigned the user interface completely. It’s an idealized implementation of a game we used to play during breaks at school. We would take a sheet of cross-ruled paper and play tic-tac-toe, with the following two changes: the whole sheet was allowed as the board, and we required a sequence of five, not three, marks for a win. The ideal was that the “board” was infinite, or unbounded, though in practice we did take the paper’s edges as the board’s bounds. (We also usually played more than one game on the same sheet of paper; previous games were simply declared “no-man’s land”, effectively creating weirdly shaped “holes” in the game board; I haven’t duplicated that here.) Version 1.1 implements a single-player mode (the other player is simulated) and a demo mode (the program simulates both players). It’s written in Haskell, and requires gtk2hs 0.9.10 (or later) with Cairo enabled, and GTK+ 2.8 (or later). The source is available as release tarballs and as a darcs repository. (Yes, I know that the arrow in the lower-left corner is wrong. That’s not my bug, though.)

Antti-Juhani Kaijanaho: Christmas balance

I calmed down for Christmas on Friday. Calmed down is exactly the right verb, as I ended up sleeping through most of it. I slept though Friday, hacked during the late evening and night, then slept again most of the Christmas eve. My father came around six to drop me his (other) gift. It was a book on European history 1600–1800, nice, what I had asked for, for I have this dream of writing something in the 163x-verse some time (though I doubt it’ll ever happen). I had received (and opened) his other gift earlier, which was Star Wreck’s soundtrack (probably better than the movie, though the movie was very good too). Opened also my mother’s package which I had picked up earlier in the week from the post office’s local agent: a Heidi Hautala scarf, a long scarf made by my mother herself, and some writing material. Thank you! I slept through most of Sunday, too. Advance subscriptions to Jim Baen’s Universe opened also on Christmas eve. Picked up the Titan membership, for even the other membership classes appealed to me (extensive Tuckerization rights, yessss!), they would have posed cash flow problems. So I took the Titan one, hoping that it will help the magazine at least a little. However, I started reading one of the books that came with the advance subscription package, Empire from Ashes by David Weber, and helped me spend most of the time I wasn’t sleeping (of course, I realized later that I already had that book, since it came with the At All Costs hardcover bonus CD). Today’s minus fifteen degrees, along with the threat that it might actually go below twenty today, made me finally look for my long johns. Surprisingly, my current trousers have been warm enough without long johns even slightly below minus ten; but I knew I’d have to look for the long johns eventually, as a Finnish winter at Jyv skyl ’s longitude just isn’t complete without at least a few days of minus 25 degrees. All Celsius, naturally. All in all, it was a most relaxing Christmas :)

Antti-Juhani Kaijanaho: Unbounded 1.2

I’ve just released a new version of my game Unbounded Tic-Tac-Toe (yes, I know, there are other names I could have chosen). This version is now able to handle any n-in-a-row on that same unbounded board (although the user interface only allows one to select n from between one and ten, inclusive). I’ve also improved the documentation. Get it as a tarball or via darcs. Happy holidays, everyone :)

Antti-Juhani Kaijanaho: Upgraded Wordpress

Just upgraded this blog to Wordpress 2.0. It looks everything went quite nicely, I see no major problems and considering how coolly the Finnish blog list service Blogilista took the upgrade, it is likely that Planet Debian will no throw a fit either. First impressions: the admin interface looks cool. The new editor is usable. Update: In the upgrade, I followed the instructions with a twist: I made the following changes to my server config prior to the upgrade so that any transitional problems would not be visible: RewriteEngine on RewriteCond % REMOTE_ADDR !^130\.234\.192\.228$ RewriteCond % REQUEST_URI !^/503.cgi$ RewriteRule ^/newblog /503.cgi The effect of this was that I (having the IP address 130.234.192.228) would see the blog as it is, but others would see the 503 ‘Service unavailable’ error message that my 503.cgi created. Update(2): Argh! The new editor handles pre tags badly. Had to hack around it in the ugly way seen above. Update (3): Fixed the WP2 link above. Update (4): It seems I was wrong about Planet’s sensibilities. However, now I’m blaming Planet, not the upgrade, since Blogilista handled the upgrade without thinking I had made any new posts!

Jonathan McDowell: It's good to be back.

I finally had my first flight cancelled on me yesterday. I suppose given that I've been flying a few times a year for at least the past 8 years (even if it's only back and forth to Northern Ireland) I should consider myself lucky. I arrived at Belfast City Airport at about 8am, for a 9:45am flight (the last time I flew from Belfast we hit really bad traffic, so we ended up overcompensating). On check in I discovered it was delayed by 15 minutes. Shortly after I'd made my way through security it was delayed by 45 minutes. Then they delayed it until midday. Then at 11:30 they said they'd have an announcement at midday. And then at 11:45 they cancelled it. Now, I was flying from Belfast to Norwich. There's only one such flight a day. So I'm a bit stuck. And by the time I get to the front of the refunds queue they've filled up the flight today (Saturday), leaving me the option of a direct flight to Norwich on Sunday, or any other flight leaving Belfast City on Friday that they have seats on. So I go to London Gatwick, supposed to leave at 14:30. And it gets delayed by 45 minutes straight after I check in. Thankfully it does actually take off at 15:15 and I manage to get to England. On the wrong side of London for Norwich, but hey, the trains are running. I negotiate the Gatwick Express, get a tube to Liverpool Street and get on a train to Norwich. Which then gets delayed for 25 minutes because a train breaks down in front of it. Bah. I finally get home just after 9pm, rather than the 11:30am or so I would have managed if my initial flight had taken off on time. The house is still in one piece, the plants haven't died, I have food again. Rar. And I know this is small fry compared to American flight horror stories, or the potential problems we could have had when Uncle Steve lost our clothes en route to Brazil, but it's the first time I've had a major problem with flights. (We'll ignore the fun I had when turning on my desktop machine and seeing "GRUB Read Error" displayed. Damn scanner had decided to frob the SCSI bus enough that the BIOS could boot grub but grub couldn't then see sda.)

30 December 2005

Simon Law: WvDial 1.55

My day at the office has been pretty grand. I got to talk with a whole bunch of people about their problems and promised to look into some of them. Then I talked to someone about sales and marketting. Then I talked to Chris and we struggled with PHP. And finally, a chat with Tim about release management. It was like a day at the Montr al office, but with people who are less bouncy. I tried to smile at people and make them feel happier, at which I think I was mildly successful. Perhaps my motivational poster will help? I had some tasty ph for lunch at Ph Vi t which is a Vietnamese restaurant run by Cantonese people. It is also within walking distance of the office. Their soup was rather filling for a small portion and they had delicious spring rolls. Alas, they are not UltimateSpringRolls, but one can't expect to find those everywhere. A special bonus was that I got to talk with Deidra, in between happy bites of noodles and soup. It is now late and I guess I should be heading out. I was hoping to hang out with people after work, but they seem to have gone home. Oh well. So to pass the time, I released WvDial 1.55. Hurray!

Next.

Previous.