Thursday, October 20, 2005

Daphne is Cool

My friend Daphne recently had her first article published by the AP. Yay Daphne! I think I'm one of the violists inadvertently mentioned in her tag line at the bottom.

Also, I need to correct myself, because previously I mentioned Andy Moran. His real (new) name is Andy Adams-Moran. I think he just wanted to get another mention on my blog.  

Monday, September 19, 2005

Going to ICFP and other news

I'm off to ICFP, the International Conference on Functional Programming this week. I'm giving two talks at workshops as I mentioned. Yay! My talks suffer from a severe lack of Greek letters. I'm just a Haskell programmer.
My review of Brute Force: Cracking the Data Encryption Standard got posted to Slashdot on Sept. 8th. And for some perverse reason, it's like 3rd on the list if I Google for the word brute. The link says something about RSS, so maybe it's just because so many RSS aggregatos are watching Slashdot? Doesn't the internet have anything better to do?
I admit that I dragged my team from work to "Salvador Molly's: Pirate Food" for lunch today in honor of the holiday.  

Monday, August 8, 2005

So Much Writing!

I have not been doing enough hacking, or blogging lately in part because I've been doing so much other writing.
I've got one paper and one demo at the upcoming ICFP-related workshops in Estonia.
The demo is at the Haskell Workshop, and is a presentation on the filesystem I've been working on at Galois; it's written in Haskell.
The paper is at Trends in Functional Programming and it's on The Haskell Cabal.
I also have been doing book reviews. I mentioned a review on a book called Codex recently, and I wrote a review for The Journal of Functional Programming but it hasn't been published yet, and I'm writing on for Matt Curtin's new book, Brute Force but I'm not quite done with that one. Of course linkage will be forthcoming when it's available.
Also my damn gateway laptop is having screen flicker again. It's already been fixed 4 times for this same issue. That is very lame.  

Tuesday, July 5, 2005

Codex Review

I wrote a review for Slashdot on the book Codex. It was a mixed review on a mediocre book, so I guess I shouldn't be disappointed in the mixed and mediocre response from the Slashdot crowd.

Slashdot sent me a bunch of books to review after I did one a while back on The Haskell School of Expression. I hope the rest of them are more interesting.  

APT Secure

I was very pleased to read that "apt-secure" will finally make it into Debian. It's been about a year and a half since the apt-secure work that Colin and I did was merged back into APT mainline and released as 0.6.

Folks might be interested to find our page on apt-secure which is perhaps unknown to someone who created a new page on apt-secure with no-doubt updated information. Am I the only one who thinks that APT could use a web page? I'm very glad that the apt-secure test suite is hosted with darcs!

While we were working on this, I promised myself that I would buy a laptop computer when it was done. Fortunitely, I decided that "done" meant feature-complete, not delivered with Debian... I won't tell you how old my laptop is, but it'll probably be replaced before apt-secure gets delivered with a stable version of Debian ;)

I keep trying to get involved in APT development, but I find it pretty hard to follow the mailing list. A few months ago, there was a request for help, which I replied to a few weeks later, after I dug myself out of some other work, but my response was ignored :( I'd still be interested in being involved in the ongoing discussions about apt-secure or testing of apt-secure, or even other apt-related development since I'm pretty familiar with the codebase.

Perhaps I'll take a look at the tasks on the above-mentioned web site and try again to get involved.


Thursday, June 2, 2005

Forgiveness and the Indignant Man

This past weekend, I went to a restaurant, and while paying the bill, I didn't compute the tip right. I don't know why, maybe I was distracted by my lovely girlfriend, who was visiting for the weekend. In any case, I realized my mistake while looking at the receipt. I felt really bad, it was half of what I meant to give. On Monday, on the way home from work, I stopped by the restaurant and gave our waitress the rest of her tip, after explaining briefly what I was doing there. She was so happy that I had come back that she gave me a hug. That was pretty unexpected, but it's a good reminder that tips mean something to people. I'm sure that the fact that I came back meant more, though.
I was telling Anna about it, and she said I did a good thing. "But it would have been better to give her the right tip in the first place," I said. But Anna pointed out, perhaps not. I think Anna's right, and I think that the waitress was happier that I came back than she would have been at just the tip in the first place. Maybe she felt bad last night when she didn't get a good tip after doing a good job.
This was a great experience, which I wanted to share, but it has a deeper message. I'm not saying that it was any great thing on my part to go back; it was on my way home from work and everything, but I did something wrong, I made a small mistake, and I tried to correct it, in a small way. It's not surprising to me, as a Christian, that somehow in some difficult to explain way, it is actually better that I made the mistake and sought to correct it. But I think that this is the nature of sin and forgiveness (or mistakes and setting them right) for everyone, not just Christians... We Christians probably just think about it too much ;)
But let's relate this nice incident to the ugly matter of politics. I read on that, "Vice President Dick Cheney today said he was offended by Amnesty International's condemnation of the United States for what it called 'serious human rights violations' at Guantanamo Bay."
He says he was offended. He was, you might say, indignant. Nietzsche might say "No one is such a liar as the indignant man." Amnesty International says, "He doesn't take torture seriously; he doesn't take the Geneva Convention seriously; he doesn't take due process rights seriously; and he doesn't take international law seriously." I would say that he is unrepentant.
Admitting that you were wrong is hard. Asking forgiveness is hard; much much harder than the little task of stopping by the restaurant on my way home from work. Nietzsche's quote is about how an indignant attitude is often the mask of a lie. I believe the Bush administration knows that what it's doing is wrong.
It would be politically very difficult for the Bush administration to confess its mistakes to the world, and to begin to set them right. It should, though. It's the right thing as well as the Christian thing to do. It should be done in order to begin the healing and reconciliation process. If it's not done, I believe that the evil it has caused will continue to grow.

The Monad Reader, Issue 3

The Monad Reader is a monthly newsletter by Haskellers. From the announcement email:
This month's issue has a definite introductory theme. It includes republished book reviews, notes on learning, a look at the differences between functional and object oriented programming, and distributed computation.
As always, The Monad.Reader invites submissions on Haskell and related topics. Send a summary or abstract for your article to
-- Shae Matijs Erisson 

Wednesday, May 18, 2005

The so-called Linux Community

I've read two articles recently which describe "the Linux community" in a negative light. They are both about the same topic, a reporter named O'Gara wrote a disgraceful piece which included the apparent personal contact information of a figure in the free software world (named PJ) and her mother. These articles attack "the Linux community" because they accuse the community of launching an attack against the publisher's web site as some kind of retaliation.

The problem is, of course, that I highly doubt that any member of the Linux community performed these attacks. Let's get this straight: The people who write the best software in the world are not the same people who attack web sites. The "good guys" in the community don't need to disown the "bad guys". They aren't our children to disown, any more than they are Bill Gates' children.

Let me try again. It's people like this who are attacking SYS-CON'S web site, whereas it's people like this who are the only ones who can be accurately described as the Linux community. See a difference there?

Such articles usually come with some assertion like, "Unless the Linux community stops these attacks, no one will take Linux seriously." In fact, programmers will keep writing great software, 12-year-old kids will keep attacking web sites, no one will stop using Linux because of it, and reporters will keep making silly pronouncements like these.

It should be no surprise that this silly article makes outrageous claims in order to attract readers. The author longs for the good-old-days... you know, back, when a reporter could publish an article as shameful as O'Gara's and would be "given a medal for generating readership."

This article is an interview with the CEO of SYS-CON who published the O'Gara piece. There is so much wrong with it on so many levels, but the part I want to focus on comes near the end. When the interviewer points out that some people might not want their home address and their mother's home address posed on the internet, because they've been threatened in the past, for instance, this CEO paints himself as the victim because his web site was attacked. I have no idea what some 14-year-old cracker's actions have to do with why he chose to publish this article, but I'll just quote a bit of his rant, starting with the interviewer's question.

Q: There are, in my opinion, reasons why I would feel at risk, if I were Pamela Jones. So... I am not a paranoid person. There have been questionable events in this case and Pamela Jones has received threats. And to me that's a good enough reason to be at least worried.

A: Well, there were several threats left in the story feedback column overnight against Ms. O'Gara as well. We removed those entries, but of course left up the rest, even the harshest criticisms. We decided then to pull the article from our Linux Business News Web site. Our site has been down for three days in a row, for most of the day, with multiple "denial of service" attacks. Now, we don't know who is behind this criminal activity. You shut down the Web site of a media company with multiple DoS attacks for three days, because you don't like a story you read there. I'm a proud American citizen. Where are my First Amendment rights? Where are Ms. O'Gara's? Where is the freedom of press? Where in our constitution does it say a reporter does not have the right to contact you to request an interview? How do you expect me to find these criminals and bring them to justice in the anonymous world of the Internet? We had five simultaneous DoS attacks going on against our site on Tuesday which crippled our Web site and our business for the past three days.

[The entire article is labeled: (c) 2005 Tony Mobily. Verbatim copying and distribution of this entire article is permitted in any medium without royalty provided this notice is preserved.]

Clearly this man needs more than just a lesson in who makes up the Linux and Free Software communities. He needs a lesson in basic cause and effect (that is, try answering the question). But that's all I have the energy for tonight.  

Monday, April 25, 2005

On Fibonacci Haskell

In response to Dan Weber blog entry about Fibonacci in Haskell, I thought I should provide this link about The Evolution of a Haskell Programmer which covers in depth the proper implementation of Fibonacci in Haskell ;)

Tuesday, April 12, 2005

Partition and Solve

The idea of breaking programs into functions was taught to some of us with the metaphor of "divide and conquer." That is, make several smaller problems and solve those instead.
This approach is now so deeply ingrained that I can just think "partition and solve" which is of course a much more positive and accurate description.
One might think of the "partition your program into functions" principal as "the divide and conquer" principal. But of course, they are both instance of the more general "partition and solve". I dare say that "partition your program into functions" is even a more pure and accurate instance of the principal.
Evolution may also be an instance of the principal. Different species evolved to solve different problems, or to solve the same problem (survival) in different ways.
Of course, when you partition a program into functions, you also define those functions' relationships to each-other. Just because you're partitioning doesn't mean that the problems are not related.
When people see several competing projects in the "free software community" trying to solve the same problem, some might say, "Good. We have divided them, now we will conquer them!" In their marketing material (or more likely press-release ranting) they will say that a house divided against itself will not stand [1].
Such people are probably purposefully ignoring the "partition and solve" principal. They ignore the fact that different projects have chosen different paths to solve different problems. They ignore the relationships between the projects, and that we feed each-other much more often than we actually compete. But no good programmer will ignore the relationships between her functions.
Even within the Debian project we have lots of different goals. A truly gifted project leader will hopefully not see Debian as a house divided, but rather a very ripe partitioning looking for someone to define the problem that we solve together. A leader should help to define, create, or encourage the relationships that make that solution happen.


[1] Oh no, I've contradicted the Bible and praised evolution in the same essay! Well, not really. The fallacy is not with the Bible's assertion about the house divided against itself, it's in the interpretation of "the free software community" as a single house. And also, I believe God created evolution :)  

Saturday, March 12, 2005

Society and the Individual

A friend and I were recently discussing the often fascinating behavior of societies of insects. This is a topic covered at length in the book Godel, Escher Bach, as I'm sure many of you know.
One big question is what "motivates" the individuals in an ant society to behave the way they do; how do they know that what they're doing is going to add up to something big and complex, and positive for the society?
Of course, the real reason to look at the social behavior of insects is to understand our own biological minds and social behaviors. So my simple hypothesis is that, there is no strict distinction between what an individual wants and what his or her society wants.
I'll briefly use this lens to look at a few things.
If you ask, "why are there so few women in computer science", then someone might be inclined to say that women aren't interested in computers. But as that link points out, that statement sorta begs the question. Why is it that society "wants" women to be disinterested in computers, how can we change that, and how can we strengthen individual womens' attitudes so that they over-ride the "wants" of society?
Here is an interesting article about a study about test-taking for African-Americans. Selected quotes:
"...Ours is an individualistic culture; forward movement is seen to come from within. Against this cultural faith one needs evidence to argue that something as "sociological" as stereotype threat can repress something as "individualistic" as intelligence...
...for black students, difficulty with the test makes the negative stereotype relevant as an interpretation of their performance, and of them. They know that they are especially likely to be seen as having limited ability...
When the difficult verbal test was presented as a test of ability, black students performed dramatically less well than white students, even though we had statistically matched the two groups in ability level. Something other than ability was involved; we believed it was stereotype threat....
We presented the same test as a laboratory task that was used to study how certain problems are generally solved. We stressed that the task did not measure a person's level of intellectual ability. A simple instruction, yes, but it profoundly changed the meaning of the situation. In one stroke "spotlight anxiety," as the psychologist William Cross once called it, was turned off--and the black students' performance on the test rose to match that of equally qualified whites..."
So basically, when the African-American students felt that they were expected to perform poorly because of their race, they did indeed perform poorly.
But how does this idea affect the privileged members of society? Well, why do people constantly sacrifice happiness in their personal lives for success and power? The concept of prestige is tightly coupled with "what society wants of us." Part of them, as individuals actually wants to be happy, the part that wants what society "wants" pushes them away from happiness toward their idea of society's idea of prestige.
Even in the famously individualistic United States, we can't truly separate what society wants of us from what we want for ourselves.  

Friday, March 11, 2005

The Release of The Haskell Cabal, 0.6

In a flurry ... of... announcements on the Haskell mailing list today, all of the major Haskell implementations released versions of their compilers or interpreters.
The fun thing for me, is that they all come with The Haskell Cabal. This is an enabling technology for packagers and an eventual CPAN-like package database for Haskell tools. Each of today's release announcements highlighted Cabal.
This effectively adds up to the first major release of the Haskell Cabal, 0.6! Woohoo!
The point of the cabal is to make a standard way to build and install Haskell tools. Cabal packages come with a little Haskell script, Setup.lhs, which has a standard interface. The Cabal provides a library that implements this interface.  

Tuesday, March 8, 2005

Smith Rock

Mark and I went out to smith rock to do some climbing this past weekend. The weather was absolutely beautiful, often sunny and a bit hot, but who can complain.
We headed out on Saturday morning, climbed for a while, slept in our tents on Saturday night, and then climbed again on Sunday. I didn't bring my camera the first day so that I wouldn't be constantly thinking about taking photos. I just trusted in the idea that the weather would probably hold to take photos on the 2nd day. I wanted to be sure to experience it before trying to record it.
Smith is a striking place. The rocks and surroundings are just lovely, as you'll see from the photos. They don't capture the enormity and complexity of it, though.
The people were also great. On Saturday night, we hung out in a pub, had some dinner and just chatted for a few hours. There are some great folks in the Portland climbing community.
There were even some horses :)
Small versions of a couple of the best photos are below, but there are more high resolution photos. Check them out. If you want to see even more, there are some repetitive and less interesting photos here.


This is me:

Saturday, February 26, 2005

Forest Park Pictures

I went for a bike ride in Forest Park in Portland today. This park is great; huge and very nearby. Today I finally got around to taking some photos.
This is how most of the park looks. It goes on for miles and miles like this with a dirt track. There are side trails too where you can walk or horseback ride. Haven't seen any horses there yet. Photos of the park usually don't seem to turn out too well, because you're just surrounded by trees, and I'm not a good enough photographer to capture it.

Portland is a bike friendly city

But I'm sure shapr will be pleased to know that it's a unicycle friendly city as well!

Monday, February 21, 2005

Cabal and Layered Tools

This past week we released Cabal 0.5, which I'm calling a release-candidate for 0.6, since 0.6 is the one that's going to be in the Glasgow Haskell Compiler version 6.4, set to release Really Soon.
The cabal is a standard interface for building and installing Haskell tools. I'm very pleased that there are already some tools layered on top of it, like dh_haskell, for building Debian packages based on Cabal Haskell packages. cabal2rpm is a similar tool for rpms, Hackage (implemented on Linux with a Haskell SQL interface) is a Haskell Package database. Hackage will eventually implement an apt-get type interface for installing packages and their dependencies. Haskell support for visual studio is also layered on the Cabal.
Maybe someone (maybe me) will implement some Eclipse plugin for Haskell based on Cabal. Though I can never get Eclipse to work.
I'm really happy that a lot of people are hacking on Cabal and making really great feature requests and bug reports.  

Thursday, February 3, 2005

MSN Has a New Search Engine

Apparently MS has a new search engine to compete with Google. One article I read said that they seek to provide answers. Maybe this is supposed to be something like Ask Jeeves?
In any case, work has been nuts and I haven't had a chance to read up on it or try it out. I went to today to do a search and of course typed in "linux" since I wanted my very first search on to be memorable.
The first result is a "sponsored link", AKA an advertisement purchased by... Microsoft! And it's tag line says that windows outperforms Linux. I guess they thought that was my question. Or maybe they knew I was just being a jerk and so they are likewise just being jerks.
They're setting themselves apart from Google already!  

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++.
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.