Name: Andy Wingo
Member since: 2001-05-29 05:20:46
Last Login: 2009-03-16 23:13:06
Homepage: http://wingolog.org/
Notes:
Some projects I hack on:
Interests: Currently hacking at Fluendo in Barcelona, making a platform for streaming live video, with on-demand as a bit of an afterthought.Prior to that, I spent two years teaching math and science in rural northern Namibia for the Peace Corps.
My advo diary is mirrored from my web log over at wingolog.org. There are a few other things hosted there as well.
guadec ho!
<content type="xhtml">Does anyone have the address of the Mr and Mrs Vengaboy? I have a patch for them.
--- /tmp/were-going-to-ibiza.txt 2009-07-02 11:41:09.000000000 +0200 +++ /tmp/were-going-to-gran-canaria.txt 2009-07-02 11:40:53.000000000 +0200 @@ -1,8 +1,8 @@ Whoa! -We're going to Ibiza! +We're going to Gran Canaria! Whoa! Back to the island! Whoa! We're going to have a party! Whoa! -In the Mediterranean Sea! +In the Atlantic Sea!
Anyone? Perhaps they have a Bugzilla somewhere.
<center>* * *</center>
I wrote to Federico earlier to let him know I was down for hippietime, saying I'd be at GUADEC from Saturday evening to Thursday at midday. He was surprised I was leaving early, which made me realize: why was I being so miserly with my time?
I think my thought was that somehow I couldn't afford to be away for so long, that maybe I should make it back and work the Friday. Ridiculous. I changed my flights so I'm leaving on Sunday instead. See you there, GNOME kin!
the chosen one
<content type="xhtml">Today I met up with an old friend I hadn't seen in a while, at the bar that he runs. Conversation was lovely. But that's not what I want to talk about.
On my way home, I rode on roads I hadn't been on in a while. I'm used to riding in the normal lanes, taking up the space of a vehicle, but they recently put in new protected bike lanes on these roads, so I decided to give them a try.
Most of Barcelona is laid out on a grid, with truncated corners. Like this:
/------\ ^ ^ /------\
/ \. " / \
| |. " | |
| |. " | |
\ /. " \ /
\------/. " \------/
crossing *. "
/------\. " /------\
/ \. " / \
| |. " | |
| |. " | |
\ /. " \ /
\------/ . " \------/
. ^<- cars
^ <- bike lane
Streets are mostly one-way, alternating by block, and there are some larger arteries. The bike lanes that they put in are two-way, on the left of the cars. This means that every other block, cars will be turning into the bike lane -- a sure point of danger.
To compensate for this, the bike path designers made the bike lanes turn in at those dangerous crossings, and cross alongside the pedestrians. Cars are stopped at a light, in theory.
I suppose I appreciate the theory. In practice, it's a bit irritating to have to go the extra distance at the dangerous crossings. It slows you down, the curves present a danger of their own, and you make fewer lights. Sometimes there are times you could have caught the intersection if you were in a car lane, but the bike lane's light is red. Etc.
So when I came to about my tenth turnout, I looked around to see if there were cars, and seeing none, I decided to cut straight to the other side of the bike lane. I lined up my wheel with the rubber dividers separating the bike lane from the road, looked under my shoulder at speed, and accelerated across the intersection---
    ---into the air---
         ---to one of those brief moments of false clarity, the silent "shit!", the grasping rationality, the approaching pavement---
             ---the bounding up to look for cars---
                 ---the joke about it, ashamed of course, with the nearby parked scooter...
Apparently I didn't line up right with those damn rubber things. They're there to keep scooters out of the bike lane, but they have other effects.
My bike appears to be fine. Amusingly, the only lasting effect is that the left side of my handlebar has been bent back by about 15 degrees, which is one of the only parts that I haven't yet had to replace.
I would like to believe that in that brief aerial instant, that I executed some clever and graceful landing, informed by Aikido, but no, the evidence points elsewhere -- a skinned knee and elbow, a pedal-bitten calf, and two stigmata on the palms: perhaps a divine warning against hubris. The Lord does work in mysterious ways.
in the beginning was the word
<content type="xhtml">shamanic rites
You see, magico-religious thinking normally works. Whether it is a shamanic rite, the signing of an appropriations bill, or the posting of an account balance, when a ritual is embedded in a story that people believe, they act accordingly, playing out the roles the story assigns to them, and responding to the reality the story establishes. In former times, when a shamanic rite was seen to have failed, everyone knew this was a momentous event, signaling the End of the World, a shift in what was real and what was not, the end of the old Story of the People and the beginning, perhaps, of a new one. What, from this perspective, is the significance of the accelerating failure of the rites of finance?
We like to scoff at primitive cave-dwellers who imagined that their representations of animals on cave walls could magically affect the hunt. Yet today we produce our own talismans, our own systems of magic symbology, and indeed affect physical reality through them. A few numbers change here and there, and thousands of workers erect a skyscraper. Some other numbers change, and a venerable business shuts its doors. The foreign debt of a Third-World country, again mere numbers in a computer, consigns its people to endless enslavement producing commodity goods that are shipped abroad. College students, ridden with anxiety, deny their dreams and hurry into the workforce to pay off their student loans, their very will subject to a piece of paper with magical symbols ("Account Statement") sent to them once every moon, like some magical chit in a voodoo cult. These slips of paper that we call money, these electronic blips, bear a potent magic indeed!
How does magic work? Rituals and talismans affirm and perpetuate the consensus stories we all participate in, stories which form our reality, coordinate our labor, and organize our lives. Only in exceptional times do they stop working: the times of a breakdown in the story of the people. We are entering such times today. That is why none of the economic measures enacted so far to contain the crisis have worked, and why the current stimulus package won't work either. None go deep enough. The only reform that can possibly be effective will be one that embodies, affirms, and perpetuates a new story of the people (if we can agree on one)...
This from Money and the Turning of the Age, by Charles Eisenstein. I prefer the audio version while doing the dishes: harness the desire to scrub out capitalism!
Lyn Gerry has been doing readings from Eisenstein's book on her radio show, and it's really quite a compelling story. I like the episodic audio delivery of the book, but if that's not how you roll, the whole text is available online as well: The Ascent of Humanity.
There's something about Eisenstein's perspective that really feels right. To me, his work has the quality without a name.
fringe languages in barcelona
The other day Jao and I had lunch with another Schemer in the area, Jos Koot, and we decided it's well past time to have a fringe languages group here in Barcelona.
The name comes from a blatant rip-off of what the charismatic Conrad Barski does in DC. Here's what he has to say about FringeDC:
It is commonly believed...
...that most programming languages languages are essentially identical. However, anyone who has spent any significant time studying languages such as Lisp, Haskell, or Prolog knows that some of these uncommonly used languages not only are fundamentally different from more popular languages but can actually give you a glimpse into the future of mainstream programming!
If you think ideas such as Aspect Oriented Programming or Microsoft's new LINQ system in C# 3.0 or Declarative XML programming in .NET or C++ Template Metaprogramming are entirely revolutionary new ideas, you are mistaken: They are all innovative but also evolutions from ideas developed long ago in Lisp, ML and other older fringe languages...
There's a fine line between being on the leading edge and being in the lunatic fringe.
-- Frank Armstrong
So it's in that spirit that I'd like to invite all in the geographical vicinity to our first meeting on this Wednesday, 19 June. Jao has more details as to the first meeting, but in any case check out the new <s>evil empire</s> Google Group, Flibug.
Jao is on deck to talk about Factor and FUEL, Jos to talk about PLT Scheme's Redex operational semantics debugger, and we'll go out for beers later. Good times!
hospitalized for approaching perfection
<content type="xhtml">My god, June, June must be the most amazing month of the year. Things are green, and the awareness is palpable that summertime is here, in the street, at the bars, at the beach -- this is the time that is not the other time.
June is when strange and wonderful things happen. My sister, who lives in DC, called the other day to say she'd be here in Barcelona this weekend. Just on Sunday I was walking to the park and ran into an old friend I hadn't seen since 2000. June is the month of picnics: of picnics on the Seine, of picnics in the park, of picnics on the beach, of barbecues on terraces. June is for bare feet and open windows. June is for fireworks and music in the street.
hack
And yet, I hack, so much. I'm growing a little concerned, to be honest -- but now more than ever I feel like I'm doing my best work, and so I continue. It might be an illness.
In case you're new here, I've been hacking on Guile, an implementation of Scheme. Since my last dispatch, I landed a branch to Guile master that brings psyntax to the heart of Guile, as the default expander.
This was actually quite a feat, given the module hygiene work I wrote about earlier -- because how do you have an expander that understands modules and hygiene, before modules themselves have booted up? Anyway, it works now :)
For users, the practical implication of this is that syntax-rules and syntax-case are available, all the time. This is a lovely, lovely thing.
However, running the expander works against the most important performance hack of Guile 1.8: the memoizer. When you load a module, Guile 1.8 reads everything, but only does the minimum amount of work. For example, once it sees a procedure, it doesn't process the body of the procedure until the procedure is called. This reflects the reality that only a fraction of code is ever called, and was a big win for Guile 1.8.
But in Guile 1.9 / 2.0, we lose this advantage, as the expander does traverse all code. Of course, if your code is compiled already, it needs no expansion so loading is very very fast, but Guile has a lot of users and existing code out there, and I don't think they'd be particularly pleased if an upgraded touted to speed up their programs actually slowed them down.
So, for that reason, I hacked in some automatic compilation support, and turned it on by default. The upshot is that if Guile sees a file for which it can't find a corresponding compiled version, or the compiled version is out of date, it will compile it then and there -- and stash away the result, so it will be found the next time.
Of course, figuring out how to find the compiled files, and where to put the cache, but how to keep supporting shared installed architecture-specific compiled files, and how to cope with lack of permissions to write the compiled files, or errors in compilation -- you know, it's like Steve's legalizing marijuana. The devil's in the details. Hopefully I have things ironed out now, though. After all, if Python can do it...
Historically, expanding Guile Scheme with psyntax has had a couple more problems, though: the original variable names would be lost, due to the alpha renaming I discussed before; and, you lose source location information, so you don't know where backtraces come from. Through a stroke of luck and wine-induced hubris (thanks Ángel!), I did manage to plumb that information through, which is really pleasing.
(If you're still with me, I understand you are a programming languages enthusiast. Well to you I say: be wary of the verb "plumb". It suggests something shitty either about software of the process of making it. But I am willing to describe my interactions with psyntax as, indeed, shitty.)
(Continuing the parenthesis though -- are there not those that have a Freudian delight in shit? Whenever I hack psyntax I do feel better afterwards. It's a strange powerful relieved feeling.)
...
Perhaps the most relevant update from the last month in Guile is that we fixed a 2.0 release date, on the 15th of October; and we'll be releasing monthly until then, starting on the 19th of this month.
Also, Guile is finally joining the Unicode-speaking world, thanks to Ludovic Courtès and Mike Gran. We're using the little-known libunistring to do the heavy lifting; if there are packagers out in the audience, let this be my call to you to package this for your distros. It's by Bruno Haible, really well-done, and has been in Gnulib for a while now. It's time for it to go to distros.
Anyway, enough blathering for this Monday night. I was prompted into this by a fit of despair, looking again at the Waddell/Dybvig inlining algorithm. Perhaps after a more composed encounter with that paper, I'll have some novelties for the ether. Until then, happy hacking!
poverty, riches
<content type="xhtml">riches, poverty
How many times have you heard the phrase, "the poorest of the poor, those that live on less than a dollar a day"?
I am tired of it.
You can grow your own food, and they call you "poor". Or you can buy transgenic, pesticide-laced, flavorless tomatoes at the store, and they call you "rich".
Poverty and riches do exist, but they have nothing to do with dollars.
hack reading
Fast and Effective Procedure Inlining, by Oscar Waddell and Kent Dybvig.
Great, great paper. It could be my ignorance, but I never realized that copy propagation, dead code elimination, constant folding, and procedure inlining were all the same operation.
I think I'm going to implement their algorithm soon. It should be straightforward, given that the new high-level intermediate language that I'm working on for Guile is basically the same as their language.
wingo certified others as follows:
Others have certified wingo as follows:
[ Certification disabled because you're not logged in. ]
FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!