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