My 31st year of life began November 18th, 2006, and ended Novenber
18th, 2007.
Just before this year began, I arrived in Argentina, which is now my
home. I spent most of the year in Argentina, although I also went
back to the US for three months, and visited Uruguay for a few weeks
and Chile and Brazil for a week each.
The biggest thing I've done this year is that I've learned Spanish. I
now feel comfortable saying that I can speak Spanish, even though I
still have to ask for a lot of clarification. Surprisingly, on my
trip to Brazil for the International Free Software Forum FISL, I was
able to understand a surprising amount of the Portuguese spoken at the
conference, thanks in large part to my wonderfully helpful and
supportive fellow members of CouchSurfing, but also the similarity
between Portuguese and Spanish.
I had a lot of other memorable experiences:
- I wrote a draft of an essay called, "What's Wrong With HTTP?" about
how to replace much of the current web with decentralized social
software.
- I wrote a draft of an essay called, "the end-to-end principle in
human society: scholarly writing and freedom of speech", which got a
lot of good feedback, but needs a lot of work.
- I wrote an essay entitled, "my evolution as a programmer," which
several people have liked a lot.
- At the beginning of the year, on my birthday, I participated in what
may have been history's largest pillow fight, the Lucha de Almohadas
Buenos Aires. There were several thousand participants (nobody
knows how many exactly) and it went on for several hours. I
probably lost some parts of my brain to vascular damage during this
fight --- I was pretty punch-drunk by the end.
- Beatrice and I went to the two weddings of four dear friends: Sarah
Torpey, Johann Hibschman, Mary Corey March, and Topher Saari.
- Beatrice and I celebrated our fourth wedding anniversary and the
sixth anniversary of our meeting.
- I visited Itaipú dam, which was at the time the largest
hydroelectric power plant in the world, and which is orders of
magnitude larger than any other machine I've ever seen. I stood in
a room with a single rotating turbine shaft that supplied
approximately the entire electricity demand of Paraguay, one of
twenty such shafts in the plant. This degree of centralization is,
I think, an outdated relic of the twentieth century --- it creates
vulnerabilities to coercion --- but I'm glad I got a chance to see
it.
- Some thief privatized my laptop (a lovely Thinkpad that was a gift
from Jesse Andrews) early in the year, here in Buenos Aires. I've
bought a couple more older Thinkpads for US$300 each since then, but
they aren't nearly as nice.
- The hard disk on my main server crashed. I ran the machine off
LNX-BBC for several months, but I still haven't properly recovered
it.
- I became acquanted with tango nuevo music like that of Supervielle
and Tanghetto.
- With my friend Nadia, I went to my first milonga, although I didn't
try to tango because I didn't know how.
- I went to the Feria de Libros, the world's largest retail book fair.
- I broke my front fork and flew over the handlebars of my bicycle,
just a few weeks ago. I was unhurt, but getting the rest of the way
home took a while.
- I got my first MRI, as part of a neuroscience experiment at the
University of California at San Francisco on how visual perception
works. This accounted for my entire income for the year, which I
think was US$60.
- Beatrice got her first MRI as well.
- I got my first speeding ticket in years.
- I met Beatriz Busaniche, one of the most important free software
activists in the world; she has in the past done a number of
important jobs at the Free Software Foundation, Latin America, and
is currently working with Fundación Via Libre.
- I wrote my first program on an OLPC XO laptop prototype, a graphics
hack for its Open Firmware boot PROM. (The laptop in question
didn't have a working operating system installed at the time.)
- I wrote my first interesting programs in the programming languages
OCaml, Forth, and 386 assembly.
- I got Bicicleta to a point where it could run some programs, and
wrote a metacircular interpreter in it to clarify its semantics.
- I went to a number of conferences and unconferences: a couple of
SuperHappyDevHouses, the Bar Camp Block Party for the anniversary of
the original Bar Camp, the FISL I mentioned before, Bar Camp Buenos
Aires, Wiki Wednesday, Dorkbot, and the CaFeConf free software
conference here in Buenos Aires.
- I moved into an apartment across the street from Buenos Aires's
first skyscraper, a gorgeous Art Deco thing that currently houses
the Sofitel.
- I saw a lot of live music performances. A couple of performances of
Kevin Johansen and the Nada, Roger Waters, a couple of Pink Floyd
imitation bands, New Order (at Personalfest), the national symphony
orchestra, Supervielle (at Personalfest and later at the ND/Ateneo),
some jazz band, Tanghetto, and some other things I've forgotten.
- I did my first install of OpenWRT on a Linksys WRT54GL.
- Beatrice and I took care of a vacant hotel belonging to a friend of
her family for three months.
- I lived with a fairly minimal volume of physical possessions for
most of the year.
- Beatrice and I spent three months couchsurfing with generous friends
in the San Francisco Bay Area, a bounty for which I am immensely
grateful; it was equaled only by the opportunity to spend time with
so many people I care deeply about.
- I seem to have nearly healed the anal fissure that had been plaguing
me since 2001. It's only bled once in the last few months.
- I did my first interesting computer hardware hack, modifying an
instance of Limor Fried's minipov2 to be able to sense light with
one of its LEDs: http://pobox.com/~kragen/light_sensing/
- I designed my first font, starting with my handwriting:
http://pobox.com/~kragen/oilpencil/ --- I use the "pencilitalic" as
the default font for my web browsing now, even though it leaves a
lot to be desired.
- I spent some time reading and providing comments on drafts of my
friend Linley's book, "Who's Afraid of Marie Curie?", which I
strongly recommend.
- I met Andrew Cooke and his partner Paulina for the first time, after
corresponding with them occasionally for many years.
- I met Darius Bacon for the first time, after corresponding with him
occasionally for many years.
- Beatrice and I hosted a series of "creativity labs" where a variety
of artsy people got together to discuss their creative processes and
try all kinds of goofy exercises to see if they would help.
- I visited New York for the first time in my life, with the exception
of sleeping through it on the train between D.C. and Boston a couple
of times a few years ago.
- Had lunch with Jonathan Edwards, who is working on Subtext, a system
based on ideas similar to Bicicleta, at MIT. This is the second
time I'd had a chance to meet up with him.
- I went to RoboGames, which is the new name for Robolympics, where I
saw robots fighting each other. One of them caught on fire.
- I was called a slut for probably the first time in my life. It was
meant in a nice way (the utterer would wear the same title proudly),
but I don't think it was really deserved.
- I went to the Fire Arts Festival and saw Dance Dance Immolation, the
Flaming Lotus Girls' Serpent Mother, and a production of the Odyssey
that included lightning from giant tesla coils, aerial dance with
silks, a woman doing unbelievable contortions supported entirely by
her teeth, ballet, break dancing, opera, giant fireballs rolling
toward me, fire dancing, and ten-meter-tall welded sculptures.
- I saw Mother and Child, the prototypes for those ten-meter-tall
welded sculptures, in their new home along the waterfront in San
Francisco. They look much smaller underneath the Bay Bridge than
they did when I first met them, alone at the end of a kilometer of
flaming footprints in the middle of the desert.
- I learned to make empanadas.
- I helped my friends Chip and Annie move to Colorado, my friend
Elaine move to Arizona, and my friend Celeste move across town.
- I helped build robots for the OrbSwarm.
- I saw the CandyFab 2000, the first of a new wave of low-cost 3D
printers, at Dorkbot.
- I watched my first Ultimate game, and the first soccer game I'd seen
in a long time.
- I visited the Palace of the Legion of Honor and saw a number of
Rodin sculptures for the first time.
- In Buenos Aires, I participated in a Hacklab for the first time;
this is where I modified my minipov2 to be able to sense light.
- Here at a screening in Buenos Aires, I saw Youth Without Youth, a
really intense and enjoyable film, but I think I will have to see it
again to understand it.
- I made my first SIP phone call from my own computer.
- I won Prince of Persia (the original) for the first time. I played
Ur-Quan Masters for essentially the first time.
- I learned to bark like a dog, quite realistically.
- I read a lot of Forth systems: eForth 1.0, Bill Muench's later ITC
eForth, parts of F-83, and Rich Jones's Forth implementation written
in gas.
- During our first year (minus three months) in Buenos Aires, we have
been visited by seven friends from the US, and six more have either
visited since my birthday or will visit in the next few months.
- I read a bunch of books and papers; among them:
- the beginning of Yochai Benkler's Wealth of Networks, which I
think describes an economic change as fundamental as that of its
namesake
- most of Olin Shivers's dissertation about ORBIT, but I think I
need to read it again a time or two to understand it
- Craig Chambers's and Urs Hölzle's dissertations about Self
- Ronald Coase's original paper in which he proposed the idea of
transaction costs
- Feeley and Dubé's PICBIT paper
- Dan Bernstein's "10 years of qmail 1.0" paper
- Naylor and Runciman's "Reduceron" paper, which explains how they
think they can get Haskell to run five times faster than C on a
Pentium by compiling it into FPGAs, because they got it to run
half as fast on a five-year-old FPGA with a thirtieth of the
Pentium's clock rate
- Kiczales' "The Art of the Metaobject Protocol," which I had wanted
to read for years and which Andrew Cooke was kind enough to lend
me;
- Vernor Vinge's "Rainbows End", which had been recommended to me
before, but which is now on the web at vrinimi IIRC
- Frank Herbert's "Dune" again, after reading the following item:
- the first ever book of literary criticism that I bothered to
finish: Tim O'Reilly's exegesis and analysis of the Dune trilogy.
- "All you wanted to know about the HiPE compiler (but might have
been afraid to ask)"
- a bunch of papers about new Bentonite clay composite materials
- Abdulaziz Ghuloum's wonderful tutorial on an incremental approach
to compiler construction
- Alexey Karpenko's report on the weather balloon he, his dad, and a
couple of friends launched to 32km in elevation, in the lower
stratosphere
- All the stuff in the "Project Rho Atomic Rocket" repository, about
how to calculate plausibility for hard-science space operas
- part of Raph Levien's dissertation
- the "Haaarg, world!" series of blog posts, about teaching a
six-year-old to program in Python
- some documents about the SCORE project to produce a thermoacoustic
"Stove for COoking, Refrigeration, and Electricity" for the
world's poor
There were a lot of others; these are mostly from the last few
months.
- I wrote a bunch of little bits of software, mostly in the nature of
exercises:
- a simple real-time 3-D rendering engine in 350 lines of JavaScript
- a Lisp 1.5 interpreter in under 4kB of C (this is much larger than
Lisp interpreters that have been entered into the IOCCC in past
years)
- a lambda-calculus interpreter in about 600 lines of JavaScript,
using combinator graph reduction and therefore running painfully
slowly; this was on top of the combinator graph reduction engine I
had written earlier. Maybe the most interesting part of this is
that it includes a shift-reduce bottom-up parser in which it is
practical to manually write out the reduction rules
- Some DHTML translations of some old kragen-hacks posts
- A sort of étude on various approaches to laziness in Python
- A DHTML sketch of part of the Bicicleta UI
- A DHTML program to draw curves of Lamé
- A grayscale version of Naor and Shamir's visual one-time pads, in
140 lines of Python and PostScript
- A toy interpreter of a subset of APL in 250 lines of OCaml
- A little dynamic query view thing in DHTML to help me buy a
laptop
- A boolean expression evaluator in the Gaim text replacement
plugin, which is only intended to correct common misspellings as
you type, but turns out to be able to do arbitrary computation
- Real-time audio harmonic synthesis in 30 lines of Python with
Numeric and PyGame
- A tiny stack-machine bytecode interpreter in 386 assembly --- I
can't call it a Forth interpreter yet
- I finished transcribing George Soros's Google talk on "The Age of
Fallibility". Although I can't find the final third of it at the
moment, and haven't posted it online yet.
Frustrations
------------
I feel a little frustrated with how little I've been accomplishing.
I attribute that to the following causes:
- not keeping my surroundings in order; e.g. keeping servers running,
computer files findable, backed up, and on my laptop where
appropriate, papers properly filed, search indexes updated, mail
readers efficient, laptops in physically operable condition, clothes
washed and put away so I don't waste time finding them, etc. (This
is not as bad as it sounds; the apartment usually needs a few
minutes of picking up to make it neat enough to be proud to show to
company, but there are never piles of stuff lying around on the
floor, except in the designated Dirty Laundry Area.)
- not following through; I've started many more little projects than
I've finished. In many cases the trigger for this seems to be
realizing that the project is either going to take much more effort
than I expected, or that it is not going to be as good as I had
expected.
- paradoxically, another cause is following through on the wrong
things --- winning Prince of Persia, for example, which took several
hours of puzzle-solving that I could have perhaps more productively
spent on getting a server back up and running. In the larger scheme
of things, this is the thing that costs most people their careers:
they spend their entire careers working on things that don't matter
very much. (I don't mean that they don't have careers as a result;
I mean that they waste their entire careers.) For example, the vast
majority of software that has been written has been discarded after
being used by only a few people for a short time, and many people
have spent their careers writing that software.
- spending too much time "preparing" (e.g. reading, sketching, asking
for feedback) and not enough time actually making stuff. I think.
- I don't have a really good social support structure to help keep me
motivated to do interesting stuff. In a way, this is part of the
objective of living in Buenos Aires --- I think that a lot of the
things that excite people in Silicon Valley are kind of stupid, but
when I'm there, I share in that same excitement. But, like everyone
else, I benefit greatly from collaborators and mentors. I can't
blame my current status on the environment; among others, Aaron
Swartz, Andrew Cooke, Aristotle Pagaltzis, Benjamin Sergeant, Ben
Sittler, Christoph Toshok, Danny O'Brien, Darius Bacon, Eric
Tiedemann, Eugen Leitl, Jason Evans, Jo Walsh, Leito Monk, Matthew
O'Connor, Michael Leonhard, Perry Lorier, Pupeno, Richard
Uhtenwoldt, Rohit Khare, Ryan Tomayko, Seth Schoen, Shae Erisson,
Slava Pestov, Stefan Sittler, Strata Chalup, Zooko O'Whielacronx,
and especially Dave Long and Jesse Andrews, have all been generous
with their time in sharing their expertise and helping me with my
own pet projects, but I haven't been nearly as responsive and
appreciative as they deserve; and if I were to work on, say,
software that other people were already using, then I would probably
get a lot more motivating responses.
I was extremely social during the three months in the Bay Area, and
immediately after coming back; during that time, I didn't achieve very
much toward my larger goals, nor did I keep up with email. Now I feel
that I've let the pendulum swing a bit too far back the other way;
although I still talk with dozens of people in the course of a normal
day, I haven't followed up on my contacts from various conferences; I
haven't established working relationships with local free-software
organizations; I haven't found a way to fulfill my moral obligation to
share what knowledge I have by teaching --- haven't even become
acquainted with the local educational system really; I haven't put
most of my little software projects in a demoable state, and
explaining them is a lot harder than demoing them would be.