I'm a Free software developer. I'm interested in
programming languages, from theory down to the bits,
Japanese language, culture, and food, music, biology, and
astronomy. I have an unfortunate
addiction to
political
blogs,
and love a good argument.
I live in Portland, Oregon, with my wife and children,
and dogs. If you like
moss,
Portland is the place for you.
Sony BMG Settlement!
Have you bought any Sony BMG music CD's recently? Have
you ever put them in your Windows PC's CD drive, even for
a moment? Sony BMG has distributed music CD's that
silently install flawed software on your PC that may make
it less secure, and could cause crashes. But they got
caught, and you may be eligible for fixed CD's, free
downloads, or possibly cash. Visit the Electronic
Frontier Foundation's
settlement page.
Free Software
I've spent my entire career contributing to the Free
software movement, as instigated by the
Free Software Foundation.
By this point it's clear that open source practices are
the best way to develop programmers' tools. I expect
flourishing ghettos to appear in other areas soon —
music, or mapmaking, say — buoyed by the same
principles.
What I like the most about the Free software movement is
that people can freely choose whether to participate.
It's a voluntary revolution.
Mozilla, Firefox, and ActionMonkey
I work for the
Mozilla Corporation
on the
ActionMonkey
project, integrating the ActionScript compiler contributed
by Adobe with Mozilla's JavaScript interpreter, called
SpiderMonkey. In non-technical terms: Adobe has
contributed some technology to Mozilla which should make
the Firefox web browser significantly faster. Obviously,
this is pleasant for users, but it also means that web
developers can make their projects more sophisticated
without bogging down their users' computers.
On the inside, there are some very cool ideas in play,
especially in
the tracing
JIT.
GDB Tracepoints for the Linux kernel
At FOSDEM 2007 I gave a presentation on an implementation
of GDB tracepoints for the Linux kernel, which allows GDB
to debug the kernel it's running under. A tarball and
slides are available on the
project's
Trac wiki.
Minor
I've begun work on
Minor,
a
Scheme
implementation stressing performance, interoperability
with C and C++, and programming comfort. It'll be a
native code compiler, with support for system threads.
Writing a new Scheme system is a quixotic thing to do, as
there are probably more Scheme implementations out there
than there are Scheme programs to run on them. But in the
summer of 2003 I realized I'd spent fully half my life
dreaming about writing a Scheme compiler. And I've never
really had a chance to try my hand at large-scale
programming in a language that supports
real macros.
So I'm doing it.
GDB
For many years, I worked on the Project GNU's
debugger,
binutils,
and compiler,
for Red Hat and
CodeSourcery. I
wrote GDB's C preprocessor macro support, and implemented
the bytecode compiler for tracepoints.
On the side, I'm working on tracepoint debugging for the
Linux kernel. I have a
Trac
instance
set up for this work.
Subversion
I'm one of the original designers of
Subversion,
a revision control system meant to replace CVS. I did the
initial design of the repository, but many others have
refined and improved what I did. It's a simple and
effective application of
functional data structures
to a real-world problem.
I think Subversion can take some credit for inspiring the
current blossoming of Free version control systems:
Darcs,
Arch,
Monotone,
and others. A lot of people were very excited when the
Subversion project first started, but there was also quite
a bit of disappointment and criticism when running code
was first released. I don't think this is because there
is anything wrong with Subversion. Rather, I think people
had projected their personal ideas about how version
control should work onto Subversion; no single design
could have made them all happy. But that disappointment
seems to have inspired a lot of those people to go off and
Do It Right (from their point of view). I think this is
awesome; I'd love to see what people end up settling on.
In particular, I've become a big fan
of Mercurial.
It's quick, comfortable, and consistent. I've used it to
manage work-in-progress for GDB, and we're using it at
Mozilla for the ActionMonkey work mentioned above.
Occasionally it doesn't work the way I expected it to, but
after some thought I usually find that Mercurial's
behavior actually makes more sense anyway.
Guile
For several years I was the lead maintainer of
Guile,
Project GNU's extension language library. That was a real
privilege, because a lot of amazingly talented people
— Mikael Djurfeldt, Marius Vollmer, Greg Badros, and
Maciej Stachowiak come to mind, but I know I'm forgetting
some — showed up from nowhere and volunteered to
work on it. The project was a friendly place, too. I'd
feel very lucky to work with such a group again.
I don't think Guile has lived up to its potential, though.
Even Emacs is still using its own lisp interpreter. I'm
honestly not sure what the issues are. Personally, I
don't like the code base much; it's based on Aubrey Jaffer's
SCM,
and I think Aubrey is definitely one of those lone genius
types; his code isn't easy to work with. But is that
really limiting Guile? I don't know.
Red Bean
Together with
Karl Fogel,
I'm one of the founding members of
Red Bean Software,
the world's most successful anti-brand. Karl and I
started Red Bean with the intention of ensuring that it
would never have any monetary value, so that we'd never be
motivated to sell it, allowing it to act as a life-long
stable personal email address for both of us. There are
now many more people involved.
Contacting me
| email: |
jimb@red-bean.com |
| phone: |
+1 503 235 3677 |