Isaac Jones Blog
Welcome to the Future

Tue, 16 Jan 2007

Haskell': Changes to the Report!

The recent goal for Haskell' has been to actually start committing modifications to the Haskell98 report. Well, as mentioned on the mailing list, we've started making changes relating to Pattern Guards.

The current draft of the Haskell' report will be auto-generated whenever someone submits a patch. Thanks for setting up the build system, Malcolm!

Haskell' ("Haskell Prime") is the working name of the next Haskell language standard. Haskell is the best programming language in the world.

[12:51] | [] | # | G

Mon, 15 Jan 2007

Open, Linux-based Phones

I want a cell phone that runs Linux. I've been wanting one for a long time. Why should I care what OS it runs? Well, I have two main reasons: 1) because I want to support commercial ventures related to free software, and 2) I want to write applications for it, and I don't want to be beholden to some vendor to sell me a development kit, and tell me what I can and cannot write. I want to apt-get install the developer kit, write some code, and upload it to the phone. Rock.

I've been paying only scant attention to the cell phone market since I got a Treo 600, which I like a lot. It is _not_ a Linux-based phone. It runs PalmOS, which is a pretty crufty OS, but I've been using it since 2001, so I have a lot of data in there. It should be pretty easy to get the data out, though, so I'm not worried. I really like the Treo's thumb-keyboard; It's qwerty, and I can type pretty fast on it. Numeric keypad based phones are lame. I hardly ever type in numbers anyway.

Apple recently announced the iPhone, which I shouldn't even mention because it doesn't allow 3rd party applications, doesn't run on a free operating system, and is probably very buggy since they've never done anything like that before. Enough about Apple.

As I poke around the intern-webs, I find that some stuff has been happening over the year when it comes to Linux-based phones, but I'm having a hard time figuring out exactly what is happening. It's surprising how little information is out there. Despite this great list of starting places from linuxdevices.com, the rabbit trail never leads to a "buy this phone" button.

Look! There's an open Linux-based phone platform called OpenMoko. At least, I think that's what I pieced together from the scant information available on their web site. Maybe OpenMoko is the phone and openembedded is the platform? I had a very nice conversation with some folks on freenode who explained a bit about this really cool project to me. It looks like they even have a phone that it sounds like is going to be released soon, and it's discussed on LinuxDevices.com. That phone looks pretty sweet. It has a GPS built in too. I like the touch-screen idea that I guess it has, based on the pictures, and it's not way too expensive. Maybe that's the phone I'll get.

All it's missing is a "buy it now" button. Oh, and "apt-cache search openmoko" doesn't turn up anything.

So on to the Green Phone by Trooktech. This looks pretty good, but not as a replacement for my Treo, since the primary interface is a numeric keypad instead of a qwerty keyboard.

It looks like you can actually buy a development version of the phone, but it's not overly free; you cannot develop commercial applications on it without paying them a licensing fee. Lamers. According to some folks on freenode, this phone is just a prototype for vendors like this one. (But do you see a "buy this phone" button on that page?)

There's a nice article that talks about several of these devices, including the Nokia N800, which is a Linux-based handheld computer / web appliance. I played with one the other day, and it's pretty sweet. Too bad it isn't a phone, or I'd buy one today.

So it looks like there's no open, Linux-based, qwerty phone out there yet. If you know otherwise, let me know. Perhaps one is coming out next month. I think I can wait that long.

[23:49] | [] | # | G

Mon, 06 Nov 2006

Three Wiki Uses

Over the last few years, I've been pretty immersed in the world of wikis. A wiki is like a collaborative web site; it lets several people view and edit a web page and link to other pages, maybe new pages that they themselves create.

Wikis let tech-savvy people all over the world collaborate on a single web page, a single document. That's a pretty powerful idea, really. The obvious thing to do once an idea like wikis appears is to attempt to cram all of humanity's knowledge into it. Well that's just crazy enough to work.

Wikipedia is the gold standard of wikis. It's a collaborative encyclopedia with lots and lots of articles. As the gold standard, it influences people's thinking about wikis in ways that might not be quite true.

If Wikipedia were the only wiki you'd ever heard of, you might think that wikis are used to create encyclopedias. If that were true, you'd really only need one of them.

If Wikipedia were the only wiki you'd ever heard of, you might be under the false impression that all wikis everywhere are editable by anyone. So if you create a wiki page, it's no longer yours. Other people can scribble on it. Well, some kinds of documents perhaps just aren't suitable for being edited by anyone, and the good news is that you can build a wiki for you and your classmates, or you and your coworkers, and you can decide who gets to edit what.

I want to think about a few distinct uses for wikis in different contexts. The most common use is of course to create a knowledge repository; a collection of information written by people who know what they're talking about. That's what Wikipedia is, mostly. That's what the Haskell Prime wiki (which I run) is. And the excellent wiki about the game of Go, Sensei's Library, is also a knowledge repository.

But there are other uses for wikis that are pretty cool. I often have to work on proposals with my coworkers. One (horrible) way to do this is to write the first draft in MS Word, email it to everyone, who might edit it and email it back. Of course, only one person can actually edit it at a time, otherwise I have to figure out what everyone did and merge their changes by hand. That's what we, in the computer industry, call teh suck.

A better way to do this is to use a version control system, which lets multiple people work on a document at one time. Of course, if you're editing evil document formats like Word, still only one person can edit it at a time, but at least you cut out email, so things are a bit better organized.

But wikis are actually a really great way to work on a document with another person. Two or more people can each collaborate on the document using the wiki software over the web. What becomes of the document at that point depends on its ultimate use. Maybe you have to convert it to MS Word or PDF at the end. That's a bit of a bummer.

So there are two uses of wikis that I've mentioned: building a knowledge repository, and collaborative writing.

Google started a service for collaborating on documents called Google Docs & Spreadsheets, which is probably useful for collaborative writing, but not knowledge repositories. They also acquired a wiki startup a few days ago, so they are clearly trying to get all over this space.

There's another very interesting use of wikis that I'll call situation awareness. You can get a really vivid picture of this use of wikis if you take a look at the wikipedia article on the July 2005 London bombings. By the way, I didn't discover this excellent example of situation awareness using wikis. I saw it in the slides for a talk, but I don't know the original source at this point.

If you go to that link, you'll see an excellent and up-to-date encyclopedia article about the London bombings. It's not a news article. Go to Google News and try to find a news article from a major news source which is this detailed, up-to-date, and well organized. Most articles you'll find are a snapshot, taken at a particular point in time (when the article was published) that most likely contains an account of the latest developments, and usually brief background in case you missed previous stories.

The wikipedia article isn't a snapshot, it's an article that explains things in a logical order, which isn't necessarily chronological.

Each wikipedia article contains a link to its own history. You can look back over time and see the article evolve. If you look at the early edit history of that London bombing article, you'll notice something fascinating. The article was created shortly after the bombing, with an account of the information that was known at that time. Within an hour, many people had edited the article, adding information they know about. If you were refreshing that wikipedia entry over & over (or if you were subscribed to it using RSS), you'd see not an account of just the latest developments, but an evolving, logical understanding of the attacks. The article started evolving right away, and it continues to evolve to this moment.

That's what I'm calling situation awareness. Don't get me wrong, the mainstream news media is quite good at situation awareness. They do it a bit differently, and their articles or TV stories don't become integrated into a knowledge repository like wikipedia.

I've enumerated three somewhat overlapping uses for wikis that I think are pretty interesting to examine:

  • Knowledge Repositories, which are a lot like encyclopedias,
  • Collaborative writing, which is a bit like a more elegant version of emailing word documents, and
  • Situation awareness, which isn't so different from the news; it draws from the news as a source, it can also be authored by the eye-witnesses themselves, and each story becomes an integral part of a knowledge repository. I don't claim that these are an exhaustive, nor are they a partition: Wikis are also used for bug tracking and as web discussion forums, for instance. What other categories can you think of? Email me if you have ideas.
  • [22:01] | [] | # | G

    Wed, 25 Oct 2006

    The Fun of Functional Infrastructure

    Say the word "infrastructure" and you conjure up the images of paved roads, hot water, and that series of tubes that makes up the Internet.

    In other words, infrastructure is that necessary stuff that lets you get your job done, but it doesn't seem sexy. Every open source project needs a high-quality infrastructure, though, and it turns out that building infrastructure is extremely fun, even though it's not as sexy as building "the next killer app".

    I've spent a lot of time building software infrastructure. The Debian project is (mostly) not about building new applications. It's about brining together projects with a solid infrastructure so that real people can use it. The Haskell Cabal is a piece of infrastructure that helps other people to compile and distribute applications.

    So what makes building software infrastructure seem less fun, even though it's really great? It's the idea of measuring the results of your work indirectly. It's easy to say that we wrote n lines of code this year, or that "my application" has n users. Depending on the size of n, that might make us feel good, or feel bad. But measuring results indirectly is much harder. You have to be content to say things like, "I helped 10 programmers build 15 applications for 5000 users, but I only helped each one a little bit." That's an indirect result.

    But if you are more interested in the result than in who creates it, then you're in a good position to let yourself have fun building infrastructure. If you are more interested in fun than in glory, then you're in a good position to get fulfillment in life :)

    In fact, infrastructure is really fun to build, at least in computing. You get to take a series of tubes and put them together in a new way. You get to lay the groundwork for many projects that come behind you. There's a bit of systems administration, a bit of hacking, and a lot of contact with the your peers in the community. People will help you figure out what to build since they're chasing right behind you using your stuff (at least in the open source world). People will respect and even occasionally thank you for helping them to do their job.

    Of course, some pieces of infrastructure become sexy. Debian's apt-get is considered pretty darn cool among those in the know. Writing awesome compilers that real people use (like GHC or Cryptol) is the dream of a lot of computing science academics. The Internet itself is actually cool these days, or so I hear.

    The Haskell language and community is badly in need of infrastructure right now. We need people to flesh out and improve the existing debuggers, code coverage tools, and IDE support. We need a robust package database, sysadmin support, and project repositories. We need folks to make Debian and Gentoo packages from Haskell packages.

    If you like people, and want people to get to know you and to appreciate your work, then go out there and discover an important piece of infrastructure that people need. Ask them what exactly they want, how they would build it, but be sure to bring your own vision to the project as well. Most of all, have fun building something with your friends.

    [10:06] | [] | # | G

    Tue, 17 Oct 2006

    Haskell Packages 6.6?

    I'm excited because we're pretty well along the way to getting cabal-install and friends working nicely. We've got almost 30 packages in the database.

    Let's imagine something that would be awesome for the Haskell community. A set of Haskell packages which are all known to work together with a particular version of cabal (the one that GHC comes with), and a particular version of GHC.

    GHC version 6.6 was just released, and I think we should try to make this happen.

    Currently, we have a set of 27 "unstable" packages. They may or may not work with each-other.

    I just created an empty directory "testing". I propose that we start testing packages, starting with the Cabal release that'll went into GHC 6.6, and make sure they work nicely together. Once they're known to work, we can migrate them from the "unstable" directory to the "testing" directory.

    Once we have a sufficient collection of packages, and once ghc 6.6 is released, we can make a snapshot of this directory, call it "stable-6.6" or something. Then if you have ghc 6.6 and cabal-install, you should be able to "cabal-install p" for any package, and it'll definitely work.

    So what will we need for this to happen?

  • An installed version of ghc 6.6 on the hackage/darcs server. Maybe in a chroot or something. Maybe from the nightly build tree or the previous snapshot?
  • Some initial set of packages (maybe just cabal-install) to start off.
  • Some script that goes through and builds all of the "unstable" packages in dependency order. I think cabal-install can do this already. In fact, it would be ideal if we used cabal-install for this.
  • The script should also run ./setup haddock and ./setup test. If the packages seem to work w/ 6.6 and the other packages in "testing", it should get migrated from "unstable" to "testing".
  • A web interface (lemmih is working on it)
  • A script to upload packages to "unstable" (Paolo is working on it).
  • Someone to spearhead all of this! We need volunteers. Please email me if you think you can head this up.
  • [09:52] | [] | # | G

    Thu, 29 Jun 2006

    Who will be at ICFP 2006?

    Greetings! You may know that ICFP 2006 will be in Portland, OR where I live. I'm wondering who will be there. If you know / have met me / chat w/ me on IRC, please drop me a line and let me know you'll be in town.

    peace.

    [16:25] | [] | # | G

    Sat, 22 Apr 2006

    Haskell' Summary and Status

    I'll try to update the Haskell community periodically on the status of the Haskell' language standard.

    As mentioned previously, we are currently focusing on two topics, concurrency and the class system. If you feel that you have anything important to contribute to those topics, now is the time to review the proposals, join in the Haskell' mailing list and let us know what you know!

    Stephanie Weirich has posted a summary of the class system discussion.

    Stephanie says:

         This page is important because it lists all of the proposals not
         related to MPTCs as well as trying to capture the big picture
         about where we stand with respect to MPTCs. I've been trying to
         not duplicate text that appears elsewhere in the wiki, but just
         provide a consistent picture of the state of the discussions on
         the mailing list.
    
         Please take a look at this page and help me fill it out. In
         particular, I've been trying to take a pulse of where we stand on
         some of these issues, and some of you may not agree! Tell me if
         I'm off the wall. Also, I've (mostly) concentrated on issues that
         have tickets, so I may have missed some issues that were only
         discussed in the mailing list.  Please let me know if there is
         anything I've forgotten.
    

    Simon Marlow has posted a summary of the concurrency discussion.

    Simon says:

         I have tried to summarise the various points that have arisen
         during the discussion.  If anyone feels they have been
         mis-paraphrased, or I have forgotten something, please feel free
         to edit, or send me some text for inclusion.  I don't want to
         include long gobs of text in here, though: just summarise the
         main points, and if necessary link to relevant mailing list
         posts.
    

    Thanks, Simon & Stephanie for keeping things moving forward!

    [16:13] | [] | # | G

    Sat, 15 Apr 2006

    Halfs, a Haskell Filesystem

    I'm very exited this week because the company I work for just released a piece of open source software, Halfs, a Haskell Filesystem.

    There are a few groups thinking of using it, including darcs, a revision control system, and house an operating system written in Haskell.

    Since it requires kernel modules and a very specific Linux kernel (for now), I decided to release a virtual machine image that folks can download and just use on any architecture as described in the "virtualization environment" section of the quick start guide.

    [17:00] | [] | # | G

    Wed, 22 Mar 2006

    Planet Haskell?

    I think someone should volunteer to set up "Planet Haskell" or "Functional Planet" (which would include other languages) ala Planet Debian, Planet Gnome, Planet Lisp (which is made with secret alien technology), Planet Perl, etc.

    These sites are "Blog aggregators". Basically they just collect the RSS feeds of the community and post their blogs to a web page in a cute format (the gnome one is especially cute, but you probably could have guessed that).

    There are already sites like The Haskell Sequence and Lambda the Ultimate which have a similar purpose, though not quite the same.

    There's already software out there for this, so nothing new needs to be written. I think we need a volunteer to set this up somewhere? Preferably someone with their own server, and we'll worry about setting up the DNS later :)

    [13:21] | [] | # | G

    Sat, 21 Jan 2006

    Announcing Haskell'

    let haskell' = succ haskell98 in
    
    Announcing the Haskell' ("Haskell-Prime") process.  A short time ago,
    I asked for volunteers to help with the next Haskell standard.  A
    brave group has spoken up, and we've organized ourselves into a
    committee in order to coordinate the community's work.  It will be the
    committee's task to bring together the very best ideas and work of the
    broader community in an "open-source" way, and to fill in any gaps in
    order to make Haskell' as coherent and elegant as Haskell 98.
    
    Our task is broadly defined by our mission statement:
    
        The Haskell programming language is more-or-less divided into two
        "branches".  The Haskell 98 standard is the "stable" branch of the
        language, and that has been a big success.  A lot of progress has been
        made over the last few years in the "research" branch of the Haskell
        language.  It is constantly advancing, and we feel that it is time for
        a new standard which reflects those advancements.
    
        Haskell' will be a conservative refinement of Haskell 98. It will
        be the work of this committee to adopt a set of language
        extensions and modifications and to standardize a new set of
        libraries.
    
        We will strive to only include tried-and-true language features,
        and to define them at least as rigorously as Haskell 98 was
        defined. This standard will reflect the realities of developing
        practical applications in the Haskell language. We will work closely
        with the rest of the Haskell community to create this standard.
    
    Your Haskell' Committee is as follows (slightly munged email addresses
    follow):
    
     * Manuel M T Chakravarty <chak at cse.unsw.edu.au>
     * John Goerzen <jgoerzen at complete.org>
     * Bastiaan Heeren <bastiaan at cs.uu.nl>
     * Isaac Jones <ijones at galois.com>
     * John Launchbury <john at galois.com>
     * Andres Loeh <loeh at iai.uni-bonn.de>
     * Simon Marlow <simonmar at microsoft.com>
     * John Meacham <john at repetae.net>
     * Ravi Nanavati <ravi at bluespec.com>
     * Henrik Nilsson <nhn at cs.nott.ac.uk>
     * Ross Paterson <ross at soi.city.ac.uk>
     * Simon Peyton-Jones <simonpj at microsoft.com>
     * Don Stewart <dons at cse.unsw.edu.au>
     * Audrey Tang <autrijus at gmail.com>
     * Simon J. Thompson <S.J.Thompson at kent.ac.uk>
     * Malcolm Wallace <Malcolm.Wallace at cs.york.ac.uk>
     * Stephanie Weirich <sweirich at cis.upenn.edu>
    
    The editors are Isaac Jones and John Launchbury.
    
    Feel free to contact any of us with any concerns or questions.  If you
    don't know who to direct your questions to, email Isaac Jones
    ijones at syntaxpolice.org.
    
    Community involvement is vital to our task, and there will be a way
    for members of the community to make formal proposals.  In the opening
    phases, please use these more informal resources to help us coordinate
    Haskell':
    
     * The haskell-prime mailing list.  All technical discussion will take
       place here, or (if other meetings take place) be reported here.  Anyone
       can subscribe, and any subscriber can post questions and comments,
       and participate in discussions.  Anyone can read the list archives.
       http://haskell.org/mailman/listinfo/haskell-prime
    
     * A wiki / issue tracking system to document consensus and to track
       ongoing tasks.  This system is publicly readable, but only
       committee writable so that we may present it as the "official"
       output of the committee.  If you ever feel that the wiki is not
       accurate as to the consensus, please alert the committee!
       http://hackage.haskell.org/trac/haskell-prime
    
     * A darcs code repository for experiments, proposed libraries,and
       complex examples.  darcs is a decentralized system, so anyone can use
       it, but patches should be sent to Isaac Jones:
       http://hackage.haskell.org/trac/haskell-prime/wiki/SourceCode
    
    Please join us in making Haskell' a success.
    
    [18:41] | [] | # | G

    Mon, 19 Sep 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.

    [23:37] | [] | # | G

    Mon, 08 Aug 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.

    [22:22] | [] | # | G

    Tue, 05 Jul 2005

    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.

    Peace,

    Isaac

    [20:26] | [] | # | G

    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.

    [20:22] | [] | # | G

    Thu, 02 Jun 2005

    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@ScannedInAvian.com

    -- Shae Matijs Erisson

    [01:02] | [] | # | G

    Wed, 18 May 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.

    [03:31] | [] | # | G

    Mon, 25 Apr 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 ;)

    [22:33] | [] | # | G

    Tue, 12 Apr 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.

    peace,

    isaac

    [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 :)

    [00:37] | [] | # | G

    Sun, 13 Mar 2005

    A New Head

    Here is my new hackergotchi-style head. Will someone be so kind as to replace my currently very small head at Planet Debian with this new one?

    [13:20] | [] | # | G

    Sat, 12 Mar 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.

    [19:33] | [] | # | G

    Fri, 11 Mar 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.

    [20:49] | [] | # | G

    Mon, 21 Feb 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.

    [16:00] | [] | # | G

    Thu, 03 Feb 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 MSN.com today to do a search and of course typed in "linux" since I wanted my very first search on MSN.com 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!

    [00:23] | [] | # | G

    Mon, 17 Jan 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.

    [16:45] | [] | # | G

    Sat, 15 Jan 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.

    [22:03] | [] | # | G

    Tue, 04 Jan 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.

    [02:18] | [] | # | G

    Sun, 02 Jan 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.

    [14:15] | [] | # | G

    Mon, 04 Oct 2004

    GNU/Linux and Non Geeks

    I've been experimenting with setting up non-geeks with GNU/Linux computers and letting them loose. So far, the results have been pretty good. I've been recommending the book, "Linux for Non-Geeks" (pictured below) which seems pretty good, though it's for Fedora-Core 1, not Debian.

    My GF (who owns the little Apple below) has been using Debian for a while on a desktop machine, but she's going to be out of range for a few months, and so needs to be able to do a lot of stuff on her own. So she got the book, and is using Debian. Not everything is the same, but it's close enough.

    A friend of hers was having tons of trouble with the Internet and with viruses and spyware on her windows laptop. I talked to her about Linux, showed her my laptop, showed her the book. She went out and bought the book and read a bit, called me up and said, "let's do it." I put FC1 on her laptop, configured wireless, and she's been a pretty happy camper. She can browse the web, do word processing, and do instant messaging (via gaim).

    My mother hasn't had a very useful computer at home for a while. She had an oldish Macintosh laptop with no CD capability. She needed to be able to browse the web, do word processing, email, printing, and create CDs. I gave her a desktop machine for her birthday, put Debian on it, configured it, gave her a quick tutorial and she's set. She's using k3b for burning CDs, which is the easiest tool I've seen.

    All in all, I'm very happy with this experiment. I was planning to slap Debian on a older system that someone gave me and donate it to a little cafe nearby (talked to the owner, who was interested) but after booting from floppies (painful), I can't get it to see my hard drive. Darn. We'll see.

    p.s. sorry for any recent issues with the display of this blog.

    [20:03] | [] | # | G

    Sun, 01 Aug 2004

    The Haskell Cabal pre-released

    I'm really excited to announce the first pre-release of The Haskell Cabal, The Common Architecture for Building Applications and Libraries.

    This should make it much easier to package Haskell tools for Debian. In fact, some of us are working on dh-make templates for Haskell libraries.

    The announcement & release notes are here.

    [19:19] | [] | # | G

    Fri, 02 Jul 2004

    Darcs and Parsing

    I recently updated the darcs package for Debian. Darcs is a really neat new distributed version control system. It's easier to use than CVS or Arch, IMO (though I use Arch all the time at work, and love it).

    The Haskell Cabal is almost ready for a release. I really only need to write a parser (in Haskell) for a file format that looks vaguely like email headers. That's almost ready, though. I hate writing parsers. I seem to have to do it all the time. I'm using Parsec which is a really cool Haskell API which makes it painless to write parsers for context sensitive infinite look-ahead grammars.

    Parsec logo

    I realize that I almost never talk about work on my blog, but I'll mention that in the last few months, I designed a large project (with a lot of feedback from my coworkers) and we're well on our way to implementing it in the Mighty Haskell Programming Language. Good times!

    I just got back online after a Roadrunner outage that lasted a few days. I had suspected that it was a modem problem, and when they tried a new modem, it worked out of the box. Woohoo!

    The guy was really confused when he saw my computer though. I let him believe it was a Macintosh (I run Debian on a Gateway). If you tell Roadrunner tech support that you run "Linux", then they're instructed to stop talking to you.

    [14:12] | [] | # | G

    Wed, 16 Jun 2004

    Failures of my wireless router

    I have a Belkin wireless router model number F5D6231-4... In fact I have two of them. They have some serious issues, and it's really annoying me. Most people who turn on some of the security features probably don't even bother to check if they are actually working. I bothered to check, and they are not. WEP encryption actually "works" (to the extent that it works at all).

    Here's a list of problems with the router:

  • Port forwarding (so-called "virtual servers") does not work,
  • It always broadcasts the SSID, even when configured not to,
  • MAC address filtering does not work (it allows any hosts to connect, even when configured to only allow a certain list of hosts to connect).

    That's a pretty poor showing. I don't know about some of the other features that the router claims to have, since I haven't tried all of them. I have no reason to think they'll work. There's never been a firmware upgrade for this model.

    Ah well, they were only $30 after rebate.

  • [11:56] | [] | # | G

    Tue, 15 Jun 2004

    On Not Unleashing AI

    I'm psyched: A good friend of mine living in another state just sent me a signed copy of William Gibson's book, Pattern Recognition. The inscription reads "For Sir Isaac: Don't unleash any AI into a network you can't power down; wm gibson"

    This reference to AI is presumably wrt my job. I've been reading a copy of this book that I got from the library so as to preserve this signed one (that I knew was coming eventually).

    He also sent me a really minimalist wristwatch that looks like a hairtie. I like it. It's very light and loose fitting, low-profile and probably not highly valuable, so I can use it during while rock climbing and stuff.

    [13:33] | [] | # | G

    Tue, 01 Jun 2004

    New York Times Calls For Open Source Voting

    I'm sure many of you are already following these events on your own, but since not everyone who reads my blog is a Slashdot reader, I thought I'd point out this great editorial in the New York Times, which calls for voting machines to be open source software. Two choice quotes, one from the beginning and one from the end:

    Electronic voting has much to offer, but will we ever be able to trust these buggy machines? Yes, we will -- but only if we adopt the techniques of the ''open source'' geeks.

    ...

    From the classification of documents to the refusal to name detainees, the Bush administration's actions show a high regard for secrecy. In essence, it's hiding its code, too. Inside such closed systems, nasty things can happen, as we're learning to our chagrin. Perhaps a blast of open-source candor is exactly what America needs right now.

    This is an important issue, and I'm very pleased to see it followed by the mainstream media.

    [01:04] | [] | # | G

    Thu, 29 Apr 2004

    Hack, Dinner, & A drink

    So today we were to meet with Malcolm Wallace which was really good. We hashed out more details of our project and I got to chat with him about some of his software (like hat).

    Tomorrow, the plan is to pair-program with Simon Marlow, and for SPJ to write more documentation.

    Successfully biked into town :)

    Had dinner with Daniel Silverstone (a Debian Developer) and Rob tonight, then we went out for a drink. Had a good time comparing features of Haskell and Lua. And I made him tell me a day in the life of a Debian FTP Master [shit, I accidentally wrote "Release Manager" yesterday. I guess it's because I had AJ's pain on my mind]. Great fun.

    Still planning to go out with more Debian Developers on Friday.

    I was a little worried that I'd have trouble biking back out of town to SPJ's place in the dark, but it was really no problem.

    I still have been unable to acquire a book on the Pennine Way. The stores were closed when I got to town today. I'll have to take a lunchtime break or something.

    [06:49] | [] | # | G

    Tue, 27 Apr 2004

    Seeing Cambridge

    Having a good time working with the Glasgow Haskell Compiler folks here in Cambridge. We hope to have a "beta" release of the library infrastructure stuff by the end of the week, with a 1.0 release coming within a few weeks of my return to the US. I haven't gotten out to the city much, though.

    I expect I'll be wandering around the city tomorrow evening. I was planning to have dinner at "Rainbow's Vegetarian Bistro" on King's Parade if any DDs in the Cambridge area would like to join me, I'd enjoy the company. (I'm still up for meeting friday at a pub.)

    I'm available via email ijones@syntaxpolice.org.

    peace.

    [18:30] | [] | # | G

    Sat, 24 Apr 2004

    Visiting the GHC authors in Cambridge, England

    Right now I'm at the airport heading off to Cambridge, England to visit the authors of The Glorious Glasgow Haskell Compilation System (GHC). I'm visiting so that we can iron out final details on the Library Infrastructure Project.

    I'm very excited to be visiting their research lab, since I really admire the work they do. I met Simon Peyton-Jones at the last International Conference on Functional Programming, and he's very friendly.

    I'll be working with them for about a week, then heading off to do some backpacking, probably the Pennine way, which is a long-distance walk in England. If that doesn't go well, I'll probably head out to the West Highland Way, which I already have information about. My goal is to camp for about 2 weeks, without staying in any real beds. I will let myself take breaks, though if I need to, especially if I find a hostel where I can do my laundry and all.

    After the walk, I'm going to be visiting Ian Lynagh in Oxford for a couple of days.

    If anyone wants to meet with me while I'm in England, especially for a keysigning, I'll be happy to oblige. I'll be in Cambridge for about a week.

    Heh, I just saw someone with a Redhat laptop bag sit down nearby. It turns out that my friend Colin is going to be attending a Redhat conference here in Ralleigh, and he's going to be in the same airport where I'm waiting right now before my flight to London. Looking forward to seeing him, since he recently moved from Columbus to Boston. Too bad I don't have a Debian shirt to greet the Redhat folks with ;)

    (Several minutes later) The person with the Redhat bag just sat down next to me so she could use the plug; her boyfriend is attending the conference, and she's headed out of town for some other business. We just chatted a bit about the conference.

    [12:48] | [] | # | G

    Thu, 22 Apr 2004

    Diebold and SCO are getting what they deserve?

    The following are my own opinions and impressions:

    It seems that California is taking action against Diebold, who has been working hard to break democracy in the US by selling broken hardware and software meant for voting. An advisory panel to Secretary of State Kevin Shelly recommended that California should ban the use of some 15,000 machines.

    This is really good news. One has to wonder that with no paper trail, and the number of screw-ups we know about already, how many more screw-ups were there?

    And on the SCO front, it seems that one of their major investors wants their money back. SCO has been trying to make money by suing people involved in Linux, including IBM. This might make it a little hard to pursue aggressive (and in my opinion, unethical) legal avenues against Linux users and vendors.

    [15:39] | [] | # | G

    Mon, 05 Apr 2004

    Example Haskell language benchmark for Lars Wirzenius

    I was somewhat curious what the Haskell code for Lars Wirzenius experimental language benchmarks would look like. So I put together a quick implementation of it.

    It's 69 lines with a lot of comments, 34 lines without comments or type signatures (his Python implementation is 57 lines with a few comments). No, I don't think number of lines is an argument for quality. I wasn't programming for number of lines, by the way, this code is very readable to any Haskell programmer.

    Try it with the GHC compiler, especially with optimization. It should also work just fine with the Hugs interpreter (using runhugs).

    Note that this doesn't really address the speed issues that Lars is interested in. I don't know what input he's using anyway. You might want to read the GHC manual about how to write sooner, faster, smaller, thriftier Haskell code.

    Of course, I think that Haskell is a wonderful language both for serious programming, and for hobbies. Maybe it's the new programming language you should learn this year.

    [10:24] | [] | # | G

    Tue, 16 Mar 2004

    My Review of The Haskell School of Expression

    I'm pleased to report that my review of the Haskell School of Expression: Learning Functional Programming through Multimedia just got published on Slashdot.

    As I point out in the review, it's not a new book, but still very relevant.

    [14:10] | [] | # | G

    Mon, 15 Mar 2004

    General status report

    I've been busy with various things at work and at home. Hopefully if all works out well, you'll see something I wrote last week here soon.

    I'm very pleased that the darcs package has entered Debian unstable and builds on most platforms, after some tweaking.

    Darcs is an advanced revision control system. I'm pretty excited about it, and have started using it to track changes in my packages. It would be so wonderful if every upstream author used a distributed system like darcs or arch, since I could cherry-pick changes from the unstable branch to apply to the stable branch (if the author didn't do so themselves). For instance, I reported build problems in the darcs package on PowerPC, the upstream author fixed it in HEAD, I used "darcs get" to pick out the change I wanted, applied it to the stable version, and voila.

    This leads to a discussion I'm having with some Haskell developers about using version control systems other than CVS for certain projects. There's some resistance to it, even though darcs is written in Haskell, though the momentum isn't really a bad thing. I just wish that everyone were as excited as me about version control. For something so critical, caution is definitely called for, but I hope we can phase-in newer systems.

    So yeah, a bit of hacking on the Haskell Library Infrastructure Project, mostly behind the scenes working on making hmake into an API suitable for our purposes.

    Ohio LinuxFest got some Slashdot coverage. Cool!

    [21:58] | [] | # | G

    Sat, 28 Feb 2004

    How to get involved in Free Software (the bug method)

    Are you a software developer? Are you graduating soon? Maybe you should get involved in free software projects! There are any number of reasons people get involved, from altruistic reasons to selfish reasons. Let's approach it from a "selfish" point of view. I assert that involvement in free software projects looks really good on a resume, and is an excellent way to "network". Networking isn't all about schmoozing at job fairs; it's about building a reputation with professionals in your field. There are very few fields where a huge number of professionals are so very accessible. Software developers are very lucky in this sense.

    Common wisdom seems to indicate that the job market for software developers is very competitive, and it's going to continue to be competitive for a while yet. Any edge you can get over your classmates is going to help.

    There is plenty of opportunity to contribute, no matter what your skill level. There is documentation to write and there are translations to perform. There are bugs to fix, and packages to create. Of course there are projects that need more "serious" development as well. You don't have to start your own open-source project, and you don't have to learn to hack on the Linux kernel to add something very attractive to your resume.

    When people ask me how to get involved in free software, I usually recommend that they start out reporting bugs in the open-source software they use frequently. You might install a version of GNU/Linux, or if you want to stick with Windows or MacOS, you should browse around to find out what free software is available. I think you'll be pleasantly surprised. Let's use "Gaim", a multi-protocol IM client, as an example of how this might proceed.

    Gaim runs on Windows, GNU/Linux variants, and I'd expect MacOS X, and Unix. It's open source and free: http://gaim.sourceforge.net/.

    Download Gaim and the Gaim source code. Build it for your machine if you want. Notice what language it's written in. Do you know this language? If not, can you understand it (if you know Java, you can probably understand a lot of C, for instance).

    Try out Gaim, set up your AOL Instant Messenger and your IRC channels. Visit some open source channels. See any problems? Check the bug reports to see if anyone else has seen that problem. If not, report it as a bug (you might want to google for "how to report a bug" first).

    Now check out the "bug reports" for Gaim. Pick a bug and try to reproduce it.

    Why are bug reports the first step in improving your resume?

  • Reporting a bug is a half-hour task.
  • Fixing a bug is often (not always) a small, weekend-sized task.
  • Bugs introduce you to the source code on a level where you don't have to understand everything (hopefully).
  • You will build familiarity with debugging tools which are invaluable for a developer.
  • You will start to build a reputation with the authors of the software, and in the free software community.
  • And because developers are always very happy to get bug fixes that they didn't have to work on themselves.

    Let's take a look at the bug list for Gaim again.

    Different ways to contribute to fixing a bug:

  • If you can reproduce the bug, you might add more information to the bug report: What steps did take to reproduce it? Is there a unique combination of features you need to be using to cause the bug?
  • If you can't reproduce the bug, maybe it's fixed in the version you're using! Maybe you should add that to the report (better read and understand it very carefully first). Pick another bug, repeat.
  • Depending on your skill level, you might try to fix this bug, or at least isolate where the bug came from. If you manage to fix it, read about the "diff" and "patch" utilities. Send the author a patch, or attach the patch to the bug report.

    Here is a bug that looks pretty easy, and it doesn't look like the developer is particularly thrilled to spend time on it: "Buddy Pounce does not get removed when user is deleted".

    I'm going to take a wild stab at how you might fix this bug: most probably, there's a "list" of "pounces" that has a data-structure which contains both the buddy's name, and the pounce action, whatever that is. Find the code where the buddy is deleted from the buddy list (a different list). Add code to search through the "pounces" list to delete that buddy from the pounces list as well. Compile, test, and run diff to create a patch, attach it to the bug report, take a bow.

    Now add this to your resume. You are now 50% more interesting to me, as someone who reads resumes, than your classmates who have never taken on a project outside of school. You've shown initiative, skill, and maybe even teamwork.

    Higher levels of commitment

    If there's a piece of software that you love, that you think is really important, then you might try adding features to that software and joining the development effort. Lots of projects have a page dedicated to information about how to help out. Here is one for the Mozilla project, for instance.

    If you want to lead a development project, you might adopt one that has been orphaned. Many people recommend against starting your own project off the bat.

    I've presented you with a method to increase your skill and reputation, and to add something interesting to your resume. Try it out. You might find out why so many software professionals work on free software projects. It's tons of fun!

    Feel free to send me comments on this document, or to tell me whether this advice has effected you.

  • [20:41] | [] | # | G

    Thu, 19 Feb 2004

    Packaging darcs

    Last night, I worked a bit on the Debian package for darcs. darcs is an advanced revision control system, "two senses in which it is supposed to be advanced: 1) each copy of the source is a fully functional branch, and 2) underlying darcs is a consistent and powerful theory of patches.". Darcs is also written in Haskell, which makes it even more cool.

    When I did my first big group project in college, I started using CVS and completely loved it. I tried subversion for a while last year, and at home and work I'm currently using arch / tla. I'm excited about these two distributed revision control systems, tla and darcs.

    Keeping packages in VC: Since the author of darcs, David Roundy, is apparently a Debian user (and a skillful one at that), I expect this package to be a joy to take care of. At his suggestion, I'm going to keep my changes in darcs itself, and I figure that while I'm at it, I'll keep all my packages in darcs.

    I'm debating a bit about how to go about this, though. I could keep just the "debian" directory in version control, but then if I have to change the upstream sources (like the Makefile), then I couldn't track that. On the other hand, if I keep all the upstream sources in VC, then I'd have to sorta pound on the repository whenever there's a new release, with a bunch of big changes. Not too bad, I guess. What do those of you who keep packages in version control do?

    I was very pleased to see Colin's blog entry yesterday about Intel support of its Centrino chipset for Linux. I've been sending mail to them every couple of weeks for the last 8 months or so.

    [10:35] | [] | # | G

    Sun, 18 Jan 2004

    The newest Debian developer

    It's official. I'm now a Debian Developer.

    Debian is, primarily, a distribution of the GNU/Linux operating system. It is similar to the more-popular Redhat. One major difference between them, however, is that the Debian project is made up of developers like me, who can join and help out for fun, whereas Redhat is managed by a commercial entity.

    I got an email this morning which says that I was given accounts on Debian machines, and the subject was "New Debian maintainer Isaac Jones". Though vague, I have to assume that this completes the process I started in October of 2002, which involved getting my GPG key signed, answering several "tests" that included my understanding of the philosophies of Debian, the procedures followed by developers, and the skills a developer needs to possess.

    Further, I had my packaged software reviewed by a few other developers. My packages currently include xppaut, haskell-mode, hugs98, and a co-maintainership of nhc98. Most of this is Haskell-related software.

    Colin Walters and I also contributed to the ever-popular Apt tool. We added support for cryptographic verification. This work was recently adapted and adopted into the "experimental" branch of Apt.

    I'm very pleased and proud of this development. I'm looking forward to continuing to work on the Debian project.

    [18:37] | [] | # | G

    Fri, 12 Dec 2003

    An Open Letter to SCO

    Hahahahhahahahaa! Hahahahaahaahahahahaha!!!! .... Whew.... heh.... ... hahaahaha...

    You guys are so funny.

    [13:37] | [] | # | G

    Wed, 12 Nov 2003

    Bug or a Feature?

    The latest terrible story about a voting machine is here. In summary: 19,000 registered voters, 5,352 ballots cast, 144,000 votes counted by the machine.

    Does anyone remember the bug in Intel chips that came out something like 10 years ago? It looked (at least at first) like it would only affect a few people under very rare circumstances, but the media totally freaked out and Intel was forced to fix the problem (as well they should).

    Have we become so numb to bad software that we don't care when the machines we are using to help decide elections have such awful bugs in them? Does anyone notice when the bugs aren't so terribly obvious (negative votes, 138,000 delta from actual votes to counted votes).

    [14:35] | [] | # | G

    ;
    Misc
    Email Me
    My Home Page
    RSS Feed for this Blog
    My Other (Nerd) Blog
    LiveJournal Syndication
    Mention on Debian Weekly News

    Web Sites
    Isaac's Home Page
    Haskell Web Page
    Debian Web Page
    Google News
    A Go Wiki

    Misc. Blogs
    The Music Issue
    circlek
    nanny
    Planet Debian

    Open Source Club Related Blogs
    Colin's Blog
    The Daily Amoeba
    Disjointed
    dashandthedot
    Harshy(feed)