Wednesday, January 19, 2005

Amazing NYTimes Article about the Ukrainian Election


If you haven't already, you should definitely read this New York Times article basically about how the Ukrainian intelligence service manipulated events during the protest over the recent election. The amazing part is that they did so in a pro-democracy way. They were on the side of the people, and were probably a decisive force in stopping the army from rolling into Kiev to break up the protests. At one point, the army was actually on its way and was called off.

Read the whole article if you can. It reads like a John Clancy novel.

It kinda makes our politicians' anti-democratic Gerrymandering look pitiful, doesn't it?  

Tuesday, January 18, 2005

I made vegetarian Sushi!


I made (way too much) sushi today. I'm starting to get the hang of this, but I have mostly failed to actually go out and learn to make sushi. Trial and error and a couple of web pages have helped.
This sushi is made of carrots, peas, and tofu, as well as rice and seaweed. I drank ginger brew while I ate it.
The best piece of advice I can give to you, though, is this: Do not drop any sushi rice on the floor. THIS STUFF WILL STICK TO YOUR SOCKS AND IT DOES NOT COME OFF.
I wonder how many people have blogged about making sushi? Isn't it so very hip? But how many of them have provided Irrefutable Digital Proof:

Monday, January 17, 2005

Cabal 0.4


I just released the Haskell Cabal, version 0.4.
The Haskell Cabal is the Common Architecture for Building Applications and Libraries. It is a framework which defines a common interface for authors to more easily build their applications in a portable way. The Haskell Cabal is meant to be a part of a larger infrastructure for distributing, organizing, and cataloging Haskell Libraries and Tools.
Among other things, it helps us build Debian packages of Haskell libraries.  

Saturday, January 15, 2005

Proprietary Bits in Language


I've been on a Sci-Fi kick. I just finished reading The Dispossessed by Ursula K. Le Guin. I've read a few of her books before, but I really liked this one a lot. It reminded me a of some of Daniel Quinn's ideas.
I picked it up sorta randomly because I'd read a couple of her books before. I had it sitting on my desk at work, and a few people said, "Oh, you're reading that? That's one of the best books I've ever read". Of course, I got it used for $3.50 at Powell's. I wonder how they get away with reprinting such books for $15.
One interesting aspect of the book is that one of the languages used doesn't really express possessives. So instead of saying, "my book" it was always rendered as "the book". I didn't really notice this until near the end. When I did notice it, was when Le Guin wrote, "the mother" instead of "his mother". This didn't seem quite right to me, because it doesn't represent the relationship between "him" and "mother", but it's not really Le Guin's fault... there's no convenient way to represent this in English without using the possessive form. Perhaps "the mother of the man," but that still seems a bit possessive. I believe this is also true of Russian and Spanish at least.
One way to look at it is that humans are so focused on possession that we don't have a convenient way to express relationships. But we are certainly not saying, "The mother that I own." Another way to look at it is that the so-called possessive case expresses more than just possession.
In fact, it sometimes means possession and sometimes not. If my mother fell off her horse and I had to rush back to Ohio to visit her, and someone asked me why I was going, I might say, "Because she's my mother!" Not possessive. But clearly, it is sometimes possessive, particularly in romantic relationships. Jealousy is possible in all forms of relationships, but is probably most clear in romantic ones. "Why did you go to the prom with him when you're MY girlfriend?"
This reminded me of the "object" formulation in object-oriented programming languages. (Didn't know that I was going to say THAT, did you? Ha!) In a language like Java, you say something like "the car's first wheel's last screw", "car.wheel[0].screw[3]".
In Haskell, you also have aggregate types, where one type is composed of others but to access them, instead of saying, "the car's wheel" we say, "there's a relationship between cars and wheels. It doesn't matter what the relationship is, but the function from cars to wheels is called "wheels".
So we have "last $ screws $ first $ wheels car". That is, "the last screw of the first wheel of the car"... actually that's clearer than "the car's first wheel's last screw" isn't it? There we go. I've once again proven that Haskell is morally and technically superior to C++.
Randomness
Here is an article linked from Slashdot about how people are giving up on the internet because of spam and spyware. The article doesn't mention GNU/Linux or Firefox.
I just took one of those quizes that you've all been doing, and I was pretty disappointed.  

Tuesday, January 4, 2005

Haskell: Your 2005 Programming Language


I really enjoy the book The Pragmatic Programmer. One of the suggestions in this book is to learn one new programming language every year. Since the new year is upon us, I though I'd suggest that this year, everyone should learn Haskell.
So please apt-get install hugs, grab Yet Another Haskell Tutorial, and get hacking. You'll probably want to have the Libraries API bookmarked. You might want to install the Glasgow Haskell Compiler after a couple of hours.
When you get ready to package your first Haskell library for Debian, be sure to check out the state of the Haskell Cabal (the Common Architecture for Building Applications and Libraries).
Here's a basic implementation of cat in Haskell. Compile With: ghc Cat.hs -o myCat

import System

main = do a <- getArgs
          contents <- sequence (map readFile a)
          putStrLn (concat contents)
I'd be very happy if folks email me with suggestions on what programming language, API, technique, paradigm, or whatever I should learn this year. You definitely get extra points if you can give me a link to a good tutorial and if an implementation of the language is packaged for Debian.  

Sunday, January 2, 2005

Code 46


Several friends have been recommending the film Code 46 with Tim Robbins and Samantha Morton.
Samantha Morton starred in one of my favorite films, Sweet and Lowdown, and Tim Robbins is a great actor.
I liked the film a lot, but I thought it was pretty flawed. The concept was great, and Morton was absolutly perfect for the role. I didn't think Tim Robbins was great in this role, though. I didn't think there was much real chemistry between them, and the character seemed too wooden to have fallen in love like that.
I think that instead of having a middle-aged investigator from Seattle, the male lead should have been a 25-year-old computer programmer from Portland. They're the sex symbols of the 21st century, after all. But seriously, her character was so compelling that it was immediately clear why someone would fall in love at first sight. His was not.
I also liked how she didn't really understand the technology that was being used against her, that permeated the society. I think it's very common for the average Joe to not really think about the possible uses of technology, and their implications. Most people are pretty happy that they're "saving" $0.30 at the grocery store by using a loyalty card, but few think about the other uses of these cards.
Anyway, it's a great film. Go rent it.  

What I Saw Today


My friend, Co-worker, and climbing partner Mark took me biking today. It was up-hill both ways and completely exhausting for me, and he kept going after telling me how to get home, but it was awesome.
Today was a really beautiful, sunny day with great visibility. We saw Mount St. Helens with what looked like a little plume of smoke (though looking now at the camara online, I don't see that). A few minutes later, I saw Mount Hood. Mount Hood is also a volcano, but since it doesn't do anything, I guess it doesn't have its own web cam.
I also saw what looked, at first glance, like a normal bike-lane maker, but was acutally a unicycle with a guy juggling.