Thu, 11 Dec 2008
Kanye on color
"Why would anyone pick blue over pink? Pink is obviously a better color."
[/scribble/people] permanent link and comments
SVG and the future
clearly SVG is the wave of the future, but current h/w is the wave of the past.
-- paul on the sugar-devel list.
[/scribble/code] permanent link and comments
Mon, 01 Dec 2008
Scrape the Web: Strategies for programming websites that don't expect it
I just received this email:
From: Greg Lindstrom
To: Tutorial List
Hello,
On behalf of the PyCon Tutorial Selection Committee, I'd like to inform you that you have been selected to present at least 1 tutorial at PyCon 2009 in Chicago. We had 50 proposals for the 32 available slots and many good proposals had to be rejected.
It means:
I get to stand in front of people I don't know in Chicago and talk about web scraping!
(Unless the talk is canceled because no one signs up.)
So I guess it means I'll be going to PyCon 2009! It's in Chicago, from March 25 to April 2. If you'll be there, too, drop me a line!
[/note/debian] permanent link and comments
Sun, 30 Nov 2008
As for single people,
"I don't know, try eating chocolate cake," he said.
-- Pastor Young (source).
[/scribble/rhetoric] permanent link and comments
RDFa for the Debian Package Tracking System?
I was happy to read Zack's post about adding machine-readable metadata for the Package Tracking System. Not only can one query it via SOAP, he also provides XPath recipes for how to screen-scrape data out of the web pages.
He writes:
Well, on top of [SOAP] I've implemented something along the lines microformats, that just make a clever use of ingredients already available in XHTML like classes and unique identifiers.
This is awesome. In fact, as you can see when he links to the SOAP backend, the SOAP interface is implemented using that XPath screen-scraping!
What I think would be even more awesome would be to present the data to a machine user of the web page as RDFa, "RDF in attributes." RDF (short for Resource Description Framework) is a standard for metadata statements. Although it is involved in early versions of RSS used for web site syndication, in general it has nothing to do with that.
A sample few RDF statements might be:
- <http://www.asheesh.org> has license <http://creativecommons.org/licenses/by-sa/3.0/>
- <http://packages.debian.org/alpine> has maintainer <http://qa.debian.org/developer.php?login=asheesh@asheesh.org>
RDF generally uses URIs to represent information (though you can still literal values like numbers where appropriate). This allows different users to create namespaced terminology. That way, when Debian defines what "maintainer" means, Fedora choose if they want to use the Debian term meaning "maintainer."
If they do, then Fedora people and Debian people could use the same query (on a different set of data) to answer the same question. And if they choose to use a different term, the two data sets can co-exist; the namespacing prevents any conflict.
As for the term URI: URIs ("Uniform Resource Indicators") are just like URLs, except that instead of names of locations, they are just identifiers. So it's true that every URI is a URL, but you aren't necessarily intended to be able to wget every URI; they're just names.
Ben Adida and Mark Birbeck wrote a fantastic RDFa primer that explains the concepts and implementation, peppering it with diagrams where they might help. The key is that using RDFa gives you the ability to automatically interoperate with the world of RDF-aware tools, including query and reasoning systems, and it is architected in a way that anyone can add RDFa data to any page without possibly stepping on the toes of other extra-metadata technologies. (Microformats don't have most of these benefits.) Ben and Michael Hausenblas at W3C also wrote a document listing some further use cases for machine-readable web pages.
When I have some spare time, I'd be happy to help. But first I hope to make Zack and others aware that there is a standard for machine-readable metadata, designed with use cases like ours in mind!
[/note/debian] permanent link and comments
Tue, 18 Nov 2008
Obama's digital writing
The New York Times says this about Obama:
"His messages to advisers and friends, they say, are generally crisp, properly spelled and free of symbols or emoticons."
There's hope for me still!
[/note/me] permanent link and comments
Sat, 01 Nov 2008
Mouse cursors
John Goerzen was surprised by a mouse pointer change. His mouse changed from X.org's class black mouse pointer to the new GNOME translucent set. Upset, he wrote:
I noticed that my beloved standard X11 cursors had been replaced by some ugly antialiased white cursor theme. I felt as if XP had inched closer to taking over my machine.
Windows users seem to place similar importance on that clicky thing. A recent PC Magazine article writes, "Few things are more important in Windows than the mouse pointers." Dave Taylor discussed mouse pointers once, showing this picture of Windows XP's mouse pointers:
Windows XP's mouse pointer, then, doesn't look like the one John Goerzen got. They look like a bent version of the normal X11 pointers with inverted colors. Windows Vista's mouse cursors do look like GNOME's (via a BlogIsEverything post):
For this reason, Windows Vista feels like a cheap knock-off of GNOME to me whenever I use it.
[/note/debian] permanent link and comments
Fri, 31 Oct 2008
Two Girls, One Cupid
<elver> If lesbians hook up on okcupid.com, do we call that situation 2girls1cupid? <Chris_B> hahaha. ok elver you actulally got me to laugh <Chris_B> I dont dislike you today
[/scribble/hash-joiito] permanent link and comments
Thu, 30 Oct 2008
Renaissance Faires and :D
Lisa and I were recently discussing both Renaissance Faires and people who make smiles like :D.
For everyone, take a look at http://farmerchris.com/illusion/2/.
Make sure your mouse is not over the picture, so it is in black and white. Then move the mouse over it, and look at the dot toward the center. After a few seconds, move the mouse off the picture.
It's now in beautiful positive color!
More information at John Sadowski's original post.
[/note/people] permanent link and comments
Sat, 25 Oct 2008
Voice mail greetings
When you call me and I don't pick up, a recording of me greets you with:
The names and faces may have changed,
but our commitment to you remains the same.
My mom writes:
i finally found the ad that inspired your voice mail
UBS: the world around you may change, but our commitment to you does not.
UBS
I think it was some other ad I was looking at while being driven around Baltimore by Andy Bette in 2005. Seeing it just inspired me: this has to be my automated greeting! Since it was right there, I'm pretty sure the way I said verbatim.
I think my ad was about the company changing, perhaps through an acquisition.
Chris Chan adds, astutely:
The ad that your voicemail is based on isn't for a company. The ad was for UMBC or a hospital. Your not-blog needs commenting.
[/note/me] permanent link and comments
Tue, 21 Oct 2008
Hixie Limerick
RDFa is a standard now. Meanwhile, Ian Hixie is considering how (and if) to make this part of HTML5. To celebrate, I wrote this Limerick as a vision from the future.
There once was a fellow named Hixie,
Our pal Joi lent him a fixie.
He took HTML5,
Added RDF jive,
And returned positively a-rixie!
[/note/software] permanent link and comments
Sun, 19 Oct 2008
Packaging, and other joys of Debconf
I was trying to explain to my friend Emily (C.) some of the fun things about Debconf.
On one of the first days I attended, I was standing around while some people I didn't yet know discussed piuparts, an automated Debian package tester.
At this point when talking to Emily, I thought, Maybe I shouldn't bother explaining what piuparts is. If I do explain it, it will make me much more interested in the telling of the story, as well as let her make sense of the story. Or I could be vague to avoid boring her, but then I'll bore myself by only teling the skeleton of a story.
I know Emily well enough that she'll forgive me boring her, I decided. So I'll give it a try.
"The bulk of work in Debian is packaging, which means finding up-to-date open source software and bundling it up into a nice installer," I began. "Windows installers, if you're lucky, will create an entry in Add/Remove Programs. But Debian installers, to comply with Debian Policy, have to do a lot more."
"Let's say you already had the Safari web browser installed and you wanted to install Google Chrome, their new browser based on the same core as Safari. When you upgrade Safari, it would be nice if Google Chrome also benefitted from the upgrade."
"In Debian, it would." I continued with another obscure fact about the Debian Policy. "Another element of the Policy is that when a package is fully removed, it must leave no files and leave no programs running."
Suddenly she was interested! For a moment I didn't understand why. Then I realized what I had said: Something I take for granted in Debian, the "leave no trace" element, is something Windows users often wish they had.
I continued, "There is an automated tool called piuparts which takes packages, creates a small virtual install of Debian, run the package's installer, the uninstalls it and verifies that the package does in fact leave no trace."
Explaining the rest was easy: The first day I was at Debconf, I ran into some people discussing piuparts. Lucas explained he was slow to program in Python, the language piuparts is written in, and Emily rightly picked up on the fact that Python is my favorite programming language. Lucas explained that piuparts needed a machine-readable report format so that you could automatically run it on the whole Debian archive and get a list of which packages have problems. I volunteered to add that.
After a few days of hardly working on this, I finally was sitting with some new friends Thursday night. They left, and I worked on everything I could possibly justify working on. Then it was 5 a.m., and I knew there was no more time to waste if I wanted to actually finish the modification to piuparts. So I began it, ate breakfast, and finished it.
It was really great having a comfortable environment to work all night in. It was even better that I had people to stay up late talking to about geeky things that came from a shared interest in programming, system administration, and Free Software principles. When people left, there was always a great reason to stay awake: more great people to talk to, or finally the assignment I gave myself at the start of Debconf. I had that joyous feeling from the people every evening at Debconf, and Thursday night the feeling brought me all the way to morning.
[/note/software] permanent link and comments
Sat, 18 Oct 2008
Interpersonal
You're still administering geeks, right?
-- Quinn to Shannon.
[/note/debian] permanent link and comments
"If I Wrote You"
In the summer of 2000, a girl(friend) wrote me this in a letter after we had nearly spent as long away from each other as we had known each other (at least, known each other well):
If I wrote you,
You would know me,
And you would not write me again.
Okay, so "as long as we had known each other (well)" was about two weeks. She was quoting (and told me as much) "If I Wrote You," which you can listen to and whose lyrics you can read.
The song is an expression of fear. That was clear from the bit of it I had received, so it took me by surprise. The conditional on "You would know me" hints that the recipient of the letter doesn't know the author well right now.
So I started to write back about the trees and the snow,
And I saw a bird, couldn't say what it was.
But I thought you'd know,
You always surprised me.
Right at the start, Dar does a perfect job of setting a scene outside my home window in upstate New York (Rochester). As it happens, that's where Molly's letter was sent to find me, and where she would return after another week or two. But right through the scenery we see a reflective, impressed letter writer, fearing that she is not worthy of the recipient's attention.
After she got back, she would introduce me to Dar Williams, lending me a few CDs here and there. I have her to thank for a lot of things, including tuning me into Dar.
But in this song, it's interesting that Dar sings solo (sometimes harmonized against herself) except in every chorus, where a male voice joins her in harmony. Instead of harmony, it sounds more like a distant voice whispering in her ear, the voice of someone now unreachable.
The second verse, line by line, alternates the imagery of nature with obscure but personal imagery. It gives the song a sense of seriousness. The flooding of the recipient's stories into the writer, and the idea that the recipient knows this:
The truth was the only way out, but not the only way
speaks to a sort of dark seriousness. There is a way to get out of a mess, but everyone knows that success is not the only choice.
The third verse beings with a sense of irreverance:
We drew our arms around the bastard sons,
We never would drink to the chosen ones.
As the verse continues, I don't know how she left, or what she left. She's "steady now," but I don't know what sort of solace this gives her. Musically, the feeling the song gives me is the same throughout: distant and sad. The song is typical of Dar's work from the period: it sounds full, and no shortage of words. The song concludes with a sad certainty:
You will not write me again.
If the conditional at the start, "You would not," indicates uncertainty, this last form indicates a sad finality.
There's a theme in some of the other songs I've chosen, which is of women being strong to stand up to men who deserve it. Here, we see quite the opposite. The writer has certainty in love, unlike elsewhere where grating men destroy the protagonist's wonderful feelings. The doubt comes from a respect for the love's target as it mixes dangerously with her own insecurity; it yields an empty, unsatisfied longing.
So, hi. I guess it's particularly fitting that I'm using this song in a Dar Williams A Day, since I haven't heard back from you. But I've thought before that I wouldn't hear from you again, and I've been wrong about that before.
So I look forward to you writing me again.
[/dwad] permanent link and comments
Thu, 16 Oct 2008
"As Cool As I Am"
I think this song is my favorite Dar Williams song. You should really give it a listen and read the lyrics. So much for this being a daily serial! But hopefully I'll get back on track for these last few days.
The song begins with a forceful rhythm from what sounds like a didgeridoo. "Yeah, there was a time," the voice begins seamlessly. We see her dating some, well, some jerk. She "was no sister then" - she did not stand up to support women in general.
You point, you have a word for every woman you can lay your eyes on
Like you own them, just because you bought the time
And you turn to me:
The music swells at "like you own them" and then stops. Without a background, Dar emphasizes:
You say you hope I'm not threatened.
"Bought the time"? Maybe they are at a strip club. But now they're at a more normal venue: "we're at a club":
You watch the woman dancing--she is drunk,
She is smiling, and she's falling in a slow descending funk.
Dar judges: "She is drunk." She is smiling, but she is not really in control of herself. At the end of the first verse, Dar's date makes his point. Like last time, his point is something worth rolling one's eyes at. This time, Dar manages to respond:
You play the artist, saying, "Is it how she moves, or how she looks?"
I say, it's loneliness, suspended to our own like grappling hooks,
And as long as she's got noise, she's fine.
We can see her judgment of the woman in her response here. Her remark that the woman's loneliness is "suspended to our own [loneliness]" indicates that the judgement is not meant as harsh, as we are not to be spared. Dar offers to help the woman learn to dance afterwards. Is this sarcastic? I think instead it is a sincere offer to teach something other than loneliness. Dar exposes herself herself by attacking the pseudo-intellectual question asked by her date.
The chorus changes slightly through the course of the song. Throughout, she declares, "I will not be afraid of women." Toward the start of the song, we might imagine she means, "I am not afraid;" her utter lack of discomfort explains her not replying. From the first chorus to the second, the first changes, emphasizing how she does not see the other women as people to compete against.
She recognizes the self-doubt her partner has been trying to trick her into feeling. Emotional trust comes from tenderness, sharing moments and feelings that aren't shown to everyone. This closeness seems missing to her: "I thought you knew how to be scared." Instead, our antagonist is always sure of himself, never risking his own feelings; rather, always risking Dar's. In a declaration of strength:
But truth is just like time, it catches up and it just keeps going,
And so I'm leaving.
"You can find out how much better things can get," she sneers. She is vulnerable: "I feel a little worse than I did when we met." We don't know if this is because his tricks have worked a little or just because of the usual feelings of loss. Dar sneaks in a breath just before, "And then I go outside to join the others." I hear a smile, maybe half of a laugh at her own joke, in that "And." She is "the others," because there is no one left beside this partner inside.
"Oh, and that's not easy," is the final variant of the chorus lead. At the end, "I will not be afraid of women" is a declaration that she has had enough of this (presumably) man trying to tickle her insecurity. What I love about this song is the combination Dar's expression of vulnerability and her ability to draw strength to take the risk of ending the abuse. It's not just a tale of warning; it's an honest telling that heeding this warning may hurt.
[/dwad] permanent link and comments
"The Babysitter's Here"
This song is on the first Dar Williams album, The Honesty Room, from 1993. You can give it a listen and read the lyrics.
The song is a gorgeous mix of violins and Dar doing her best to sound even cuter than usual. Our narrator, the child, is happy, sweet, and naive. You can see that as soon as the first verse:
I don't understand and she tries to explain,
How a spaceship is riding through somebody's brain,
And there's blood and guts and...
...and she trails off. There's no point for our narrator to try to understand anything deeper; it just doesn't work, so she talks about what makes her happy. The babysitter!
She's the best one we've ever had.
The chorus explains what makes her so great: she does things her own way. "She sits on her hair!" "She pierced her own ear!" (Something which, upon reflection, probably hurt.) At this point, who would not swoon? "She's tall as my dad" - I suppose she never quite fit in that way. But our narrator loves her for it.
The violins swell as our babysitter is the star. The narrator is adorable - overwhelmed! "And she's oh! oh! oh!" You can imagine her trembling with anticipation: "I can't wait to give her the card!" she repeats. "She's the best one!" is all our narrator can say until she composes herself to explain in the simplest logic. Finally, she concludes:
So that means that the star was...
My babysitter.
Something's not right. Tom is introduced by the narrator as "the king of romance," and she (the narrator) sighs, "Someday I'll have a boyfriend just like that." But if we look at his words:
And will they get married with kids of their own?
He says, "Not if she's going to college we won't."
This confinement of the babysitter is invisible to the innocent narrator, but not to the babysitter, and that conflict is what makes the song powerful. Listening, I picked up on this and found sympathy for the babysitter especially because the narrator can't. (I see a similar contrast between children's naivete and the pressures of adult decision in "The Kid's Song" by Moxy Fruvous. But that song is co-narrated by adults and children; in this one, we don't see any direct voice of the grown-ups in conflict. This story is told through the magical happy eyes of the child, making the babysitter's conflict look incomprehensible and unfair.)
The actions of the babysitter with "the king of romance" make her seem voiceless. There's the above conversation, and:
And she got mad at dinner when Tom drank a beer.
Tom's the one making choices here; all the babysitter can do is get angry, not alter Tom's behavior.
I want to highlight a theme through Dar's work: The chorus changes to show a progression of feeling. The last line of this chrous is phrased three different ways in the three repetitions. The first time we see the babysitter, it is strictly joyful.
And it's peace, man, cool, yeah, the babysitter's here...
After Tom drinks his beer, it seems to me Tom replies to her anger, trying to calm her down. I especially get that feeling from the "hey," as if it's short for, "Hey, don't act up in front of the kids you're babysitting," or "Stay cool, okay?". It further squelches our poor babysitter's self-expression.
But peace, man, cool, hey, the babysitter's here...
Iit's only natural that the violins swell for our hero, the babysitter, when she shows herself as the beautiful and unique unicorn. She is choosing for herself, and the music celebrates appropriately. In "As Cool As I Am," you saw men who put women in situations that strain their feelings. Dar likes to see them turn out with agency for the woman, even at the cost of tears.
So by the ending, our poor naive narrator misunderstands:
I don't understand and she tries to explain,
And all that mascara runs down in her pain,
'Cause she's leaving me...
The babysitter is leaving the narrator to go to college, having chosen it over Tom. "Don't go with a guy who would make you choose," she (the babysitter) warned. Trying to explain, her eyes brimming, the babysitter struggles for sympathy from the narrator who won't understand the choice she had to make. So she points out she has to leave the narrator.
In the final version of the chorus, the narrator tries to calm the babysitter. Two or three words at a time, with pauses between, the narrator tries to soothe the girl with tears streaming.
So hush now,
peace, man,
the babysitter's here.
In "As Cool As I Am" and "The Babysitter's Here," I see self-driven girls making the right decision, choosing themselves over their chauvinistic boyfriends. When I chose today's song, it didn't occur to me how similar the songs were. I think it shows what I love about Dar Williams.
On that note, I'll link to another song I like, this time with no explanation. Enjoy Kathleen Edwards' "In State" and read the lyrics.
[/dwad] permanent link and comments
Wed, 15 Oct 2008
Projects
Current projects
- ?
Archived projects
stderred: Make stderr red.
You could use zsh or a Perl script to make stderr red. Or you could write an LD_PRELOAD wrapper. See my note about this.
- Available in gitweb or via gitweb's links to git.
vhost_effort: Log Apache time spent on the request
This was an Apache2 patch to calculate how much time Apache spends on requests to each vserver and some Python to graph it. See my note about it.
- Available from CC Subversion.
qemu at 10.0.3.x
This was a qemu patch to change the default for "-net user" to use 10.0.3.x instead of 10.0.2.x. See my note about it.
- Patch available, though it may not apply cleanly against modern qemu versions.
Mine Wikipedia for style edits
I had an old project that never quite succeeded to mine Wikipedia for style edits — I wrote more about it on my projects page. It's useful as a reference for how to manage and filter Wikipedia XML dumps. Also in this module is an interesting Makefile that does data processing across multiple machines with just increasing make -j values. See my note about it.
[/projects] permanent link and comments
Mining Wikipedia for style edits
I had an old project that never quite succeeded to mine Wikipedia for style edits — through this, one could learn what made a style improvement, and attempt to generalize that to other texts. Think of it as the minimal boostrapping of a purely-statistical "grammar checker." It was originally to be my masters project under the awesome Jason Eisner. (Instead, I contributed to a storage layer branch of Dyna's compiler.)
It has some nice filters (written using SAX, so they don't chew up all your RAM for pages with 2GB of history) for filtering down MediaWiki page dumps into just what we want, also optionally modifying their text so that the new outputted versions contain the results of data processing.
The code also has some hilarious (and useful!) Makefiles that treat a bunch of heterogenous computers as a compute cluster. The higher "-j" you pass into make, the more machines it will SSH into, copy your code onto, run your code, and rescue the output.
I'm putting in my git repository having dug it out of my JHU NLP Subversion repository. Check it out in my gitweb.
It's not the prettiest thing ever....
[/note/software] permanent link and comments
Fri, 10 Oct 2008
"The World's Not Falling Apart"
The album begins with the gentle, creeping synth of "Mercy of the Fallen" that grows into bass guitar flourishes and rhythmic confidence atypical for Dar Williams. All over, this album is decorated with special guests. It's a great way to start an album, that's for sure.
The album is The Beauty of the Rain from 2003, a much sadder-sounding title than that opening track. Don't worry; the song that shares that title is deservedly slow and pensive (and beautiful). If you look through a Dar Williams discography, you'll learn a few things: I only have half her albums, and also that this album is a reappearance of Dar after a three-year hiatus from studio publications.
Recoveries like that are interesting; one can learn a lot about oneself in three years. It's a cliché to suggest live albums (like Out There Live (2001)) represent a pause in the creative career of a musician; more interesting is the question of what Dar would see after three years of looking back and recreating her earlier work.
So when I say the album begins with gentle, creeping synth, and that it's "atypical," it really is the new Dar Williams. It's no wonder that the second track is titled "Farewell To The Old Me." I'm really happy to say that I love this album, and I'll point you to track five on it: "The World's Not Falling Apart", to which you can listen or read the lyrics.
Truth be told, I think I like the sound of first song on this album more, so I'll slip it in here. Musically speaking, the harmonies in its chorus and the instrumentation are irresistible. But I chose "Not Falling Apart" because for the year 2005-2006, this song was very helpful for me. Putting that first song together with this fifth makes for a powerful combination.
There's a contrast to be considered between the sudden recognition of responsibility in "Buzzer" and a song with a title like this one's. To be brief, the song (you should have listened to it by now!) is about acceptance. Take this couplet, delivered without fear:
The closest thing to God that I have heard
Is when I knew I did not have the final word
The year I mentioned was my senior year of college as well as the year I stopped being a teenager. "It's not an end, it's just a start," I could have consoled myself.
But the scene that really wins me over is a verse I can't resist quoting in full:
I have watched the kids who make their scenes,
I have met the riot grrls who print their 'zines.
They write the word, they raise a thought.
They say who they are, they try what they’re not,
'Cause life is such a changing art, life is such a changing art.
I must give justice to Dar and highlight the beautiful singing all across this song; it's wonderful when she supports the chorus, but for me it's prettiest when she sings the above verse. I used to hear that "they race apart," which I'm consoled to see isn't what she sings.
"They try what they're not" happens to strike a chord in me. It's reassuring to imagine having this certainty in who they are while they see what else they could be. "Life is such a changing art." I struggle with the interplay between causing those changes oneself and the idea that I have some consistent identity. Typically I feel lost and doubtful for a few months, trying new events and people and situations, and I wonder why nothing feels all that great. Then something happens that reminds me of things and people I truly love. The crux of it is that I forget how much I love some things, and the process of searching becomes mired with an inability to say which new thing is better than the other. These wonderful things appear, and as if I feel frayed or rubbed thin, they feel restorative.
Every once in a while those wonderful things are new places or interactions with new people, and then I am really grateful in this life. (Like you.)
There surely are people that are pulling the world apart. Dar Williams knows that she is respectful and playful. Even if she can't save everyone's everything everywhere, she espouses awareness and acceptance. I think she's highlighting something I believe in, too: do better, first, and only later try to be perfect. I've long believed in that, but I haven't always lived it. She can take solace in her relative and absolute goodness, even if it has limits.
There are a couple of lines I don't really like: the third of the first verse, and the last of the last one. But I'll take them.
The new Dar Williams sound does seem to have longer, fluffier songs. It's also less sad. Perhaps the special guests are here to help Dar regain confidence. At more than four minutes long, "The World's Not Falling Apart" is not afraid to lean on its chorus. "And that's okay."
[/dwad] permanent link and comments
Thu, 09 Oct 2008
"Buzzer"
"Buzzer" is my favorite song on the new album, Promised Land. You can give it a listen as you read the lyrics.
(When searching for lyrics for it, I ran into a site with this ad: "How do you know if this pill goes with that pill?" My sentiments exactly.)
The song starts with percussion and a tapping beat that continues up until the first mention of the buzzer. You'll hear it through all the verses. During the verses, there are two notes between which she alternates to create a feeling of dissonance. If you compare this song to yesterday's, you'll feel the song is less "full" - there are fewer different frequencies being sent to you. The chorus serves to resolve a lot of this musically, smoothing these things out in two parts: "I would press the buzzer" removes the tapping beat, and the image of driving home adds some much-needed change across the board.
Dar's website explains that the song is about the famous social psychology experiment(s) by Stanley Milgram. Milgram summarizes them, "The extreme willingness of adults to go to almost any lengths on the command of an authority constitutes the chief finding of the study and the fact most urgently demanding explanation."
Dar calls it, "A subject I have been obsessed with since reading about it when I was 18."
We start with a scene of self-contented loneliness, even detachment from a relationship with the outside world. She can have "anything I want" "cheaper than the stuff I make myself." We see her go through the Milgram experiment, something I won't repeat because it stands on its own. The process concludes, "Here's your seventy bucks, now everything's changed." She asks us to consider the everyday cruelty we could contribute to; as the buzzer masked her character from feeling responsible for it, so might things like the market shield her in her current life of shoes and stocks.
I've complained to my friend Jonathan about social psychology experiments, in particular harping on the idea that these aren't "experiments." (As far as I know, there's no control group to see if people would push the buzzer without the force of authority.) The way I put it to him was, "Breaking news: people aren't rational!" Growing up in the 1990s, that somehow seemed pretty evident to me (and of course I include myself in that list of irrational people). The value of these social psychology experiments, "just like a game," is in highlighting that fact and by drawing attention to specific manifestations of our non-rational decision processes.
Like last time, in this song Dar learns something about herself. That's probably also something you'll see in the songs I like of hers; on the hand, it may be true of most of her songs. There a simplicity in this song compared to her earlier work. Last time, when there were hidden words of support: "Good, okay," here there seems to be nothing beneath the surface. You could see this as emblematic of a change in Dar's work, something like changing from a world-gazing, secret-keeping child into a grown-up with concerns and interests.
That's alright, it's okay.
P.S. I know I've been remiss on the scheduling. I'll work on that.
[/dwad] permanent link and comments
Tue, 07 Oct 2008
"What Do You Hear In These Sounds?"
This song is on the first Dar Williams album I owned, The End of The Summer (1997). You can listen to the song or read the lyrics; I suggest you do both!
The chorus (and title) is a question asked by a therapist to the main character, who (as a rule in my listening to Dar Williams) I imagine to be Dar herself. The music starts with intensity and rhythm (read: certainty) that it maintains throughout. It supports, through contrast, the uncertain protagonist. The song begins with rhymes like this:
And we fathom all the mysteries, explicit and inherent;
When I hit a rut, she says to try the other parent.
I like the combination of Latin-derived words in the first line with a throwaway line about stereotypes of therapy. Of the therapist herself, we're told:
And she wants to tell me something,
but she knows that it's much better if I get for myself.
"Myself" has a twinge of cuteness that appears in what is mostly a serious song. You'll hear it again toward the end in how she says she would be "scared."
I heard this song at a time in my life when I was wondering about therapy. Dar begins with a half-apology:
I don't go to therapy to find out if I'm a freak,
but that's not what bothered me about it. Therapy struck me as just another friend, but for pay. We urban folk who claim to need this stuff are all pretty similar, and if so many of us need to pay for friends, it struck me as indicative of a general problem. Doesn't the presence of this mean that probably I need it too?
That bothered me. I'd rather believe I, and everyone else, can solve our respective problems by just talking to people normally. I suppose on reflection I certainly do believe there are exceptional circumstances and exceptional helpers. At first, she doesn't seem to be taking it seriously. Like a teenager testing if a parent is listening, she rambles on. We get this little argument between the therapist and Dar:
And she says "Oh." I say, "What?" she says, "Exactly,"
Decisively, in three words punctuated by a voiceless stop, we see the therapist insisting Dar understand her own life.
She says, "Look"
After this verse, after its chorus, we hear Dar's melodic voice sing a line of ahs, but underneath we overhear one side of a soft-spoken conversation. To me parts sounds like:
- Good, try again.
- Try to remember.
- Go back, try again.
- Good, okay.
(I'd love help deciphering the rest of the rest of these. Now that I've heard them, I can't focus on the ahs anymore.)
As I turned from a teenager to twenty, I remember saying to myself, twisting a line from this song:
But oh how I loved everybody else,
When I finally had so little to say about myself!
"What do you hear in these sounds?" is a question about what she hears in all her talking at these therapy sessions. Eventually, she comes to respect the events of her own life, even if they're "stories that nobody hears." Her mood changes in the last verse changes from self-doubt to realizing that everyone else has the same worries, "just like me." In this verse, she thinks about herself as she "wake[s] up" — the revelation came not at therapy, on schedule, but one morning by herself.
This transition from concerned, perhaps painfully self-aware, to consoled and confident is typical of my favorite Dar Williams songs. As she concludes half a minute before the end of the song, "That's what I hear in these sounds," pay attention to her carefree rendition of that last word. A line of oohs rise to support her, and until the end we hear a chorus of harmonies.
[/dwad] permanent link and comments
Starkiller: A static compiler for Python
The real benefit of flow-insensitivity is freedom from having to care about time.
-- Starkiller, 2004.
See also notes on the presentation at PyCon.
[/scribble/code] permanent link and comments
Dar Williams a Day
Here begins Dar Williams A Day. What do you do when there's a concert put on by someone whose music you love, and you want to bring someone else who doesn't love it yet?
What I'll do is share it along with why I love it.
Like last time, I'm sure I'll get off to a rocky start. I hope things smooth out quickly!
[/dwad] permanent link and comments
Sun, 05 Oct 2008
Analog literals
A solution to a common problem:
// Consider:
unsigned int a = 4;
// Have you ever felt that integer literals like "4" don't convey the true size of the value they denote? If so, use an analog integer literal instead:
unsigned int b = I---------I;
assert( a == b );
[/scribble/code] permanent link and comments
qemu IP address patch
I sometimes use the qemu virtualization system, or its cousin kvm, for creating virtual computers to test software in. Conveniently, qemu makes networking those really easy.
Unfortunately, the IP addresses it assigns for virtualization happen to be in the same subnet as my desktop at work (at CC, 10.0.2.x). I had some fear of changing a piece of software as presumably complex as qemu.
I forged ahead and came up with a patch that I posted to the qemu-devel mailing list. I'm just wring this post in case someone wonders, "How can I change the IP address of the user net layer used by qemu to avoid a conflict?"
The answer is as easy as replacing the string "10.0.2" with "10.0.3" globally across the qemu codebase and recompiling. If that mailing list post ever goes away, I have a local copy of the patch.
(This work was sponsored by CC, but pending an okay from CC, you should be free to use it under the terms of the WTFPL.)
[/note/sysop] permanent link and comments
Toasted flash drive
I just got an email. (For background, Matt B. is my flatmate's name.)
From: Travis M. To: Asheesh Laroia Subject: Matt B. left the oven on!!
I am here in the park with Matt. He left the oven on, with a Flash Drive in there no joke!
As it happens, this email was real, not malarkey.
[/note/debian] permanent link and comments
Sat, 04 Oct 2008
What are your most expensive websites to run? Patching Apache to find out
When running a busy webserver, one may want to know how much server time is spent preparing each request. That would be especially useful if broken-down per web site you host. Server processing time indicates things like how long MySQL queries took, or how loaded the disks are; in general, they are the measure of how difficult it was to answer a request. It may also be interesting to compare server time spent processing a request today to the same request's time in the past as an indication of how system changes (upgraded disks, more complex filesystem) have affected your ability to process web requests.
Apache's mod_log_config lets you log how long a request takes from start to end, which includes the amount of time taken to send the actual data. That can be imagined as server_processing_time + time_to_send_data_to_client. I wasn't interested in seeing how slow or fast clients' net connections were.
In a project I named vhost_effort, I wrote a patch to Apache to be able to log just that server time spent from the start of the request to when the request is ready to be sent. That work was done at Creative Commons, and the software results are available under the Apache 2.0 license. vhost_effort.py is a hack that generates a pie graph for how much server time is spent on each vhost (among other sorts of visualizable statistics). I began thinking of using a visualizer for disk usage to make the pie graph interactive, but by the time I was nearly done working that out we had already gathered all the data we needed.
My projects page has a link to the code in the Creative Commons Subversion repository. I did write about this at labs.creativecommons.org a year ago also.
Code in Creative Commons Subversion.
[/note/sysop] permanent link and comments
Sun, 28 Sep 2008
Colorizing standard error: Adventures in LD_PRELOAD
Kristian again asked an interesting question on the SF-LUG mailing list. This time, it was: "How can one get stderr and stdout to appear in different colors?" He was asking on behalf of someone, in turn on behalf of a Java programmer.
I thought about this and discussed it with Jesse Zbikowski, who I happened to be sitting next to at the Tenderloin Computer Help Day that Christian Einfeldt invited the list to (which turned out to be a lot more interesting and orderly than I had imagined!).
Jesse and I talked and we thought of named pipes, which Jesse got to work on and produced a nice Perl tool for. I thought about LD_PRELOAD and got off to a few false starts, and finally came up with a tool I called stderred (tarball of v1.2). It includes a demo program in Java and a README.
LD_PRELOAD
LD_PRELOAD wrappers are a way to change the way a program executes by replacing library functions, like write() or gettimeofday(), with your own homebrew versions. You can think of the dynamic linker as allowing you to stack your own things "above" the C library, but "below" the actual program that runs. So in looking for a symbol (a function name, typically), the program searches down until it finds it, and uses that.
"stderred" is a C program and a Makefile that you can demonstrate works properly; it includes a sample Java program and a README. Because it intercepts the Java JRE's calls to write() to write out messages to stdout, stderr, or whatever, and only modifies the ones to stderr, it should be safe to use everywhere. Plus there are no race conditions; it runs right in the context of the program, so it also avoids the performance penalty of context switches.
This LD_PRELOAD wrapper is interesting, I think, because (thanks to Eric Northup for the idea) it calls the real system write() function by yanking it out of libc using dlopen()+dlsym(). I was also (you can see this in the first few revisions) trying a #define hack to get access to libc definitions without the real symbols; however, this failed a link-time. I don't see how it could work.
The problem with named pipes: Buffering can change the order of outputted lines
Jesse pointed out to me that the named pipe approach has a serious buffering issue related to timing: if the process writes to stderr and stdout in quick succession, the lines could appear colorized in the wrong order. Jesse shows me some variations of his script that changed which wrong order it generated, but we couldn't quite figure out how to make it always right. This seems like a race condition to me.
That's because when the named pipe in question is read from, the Perl script doesn't know *how much* to read. So in this case:
one line to stderr
one line to stdout
one line to stderr
After Jesse explained this to me a few times, I understood it would get printed as either:
one line to stdout
one line to stderr
one line to stderr
or the same with stderr's lines on top. Note that the interweaving is gone; this is because the information of how *much* was printed each time is thrown away by the OS. Because the read()s are happening out-of-process in both the ZSH and Perl ways to do this, I don't see how they could get around this issue. An implementation based on select() or epoll() would have the same issues, I believe.
Why my solution doesn't work for "ls"
stderred is as simple as it is because it only overrides write(). The JRE only seems to use write(), not any of the helper functions like straight-up printf(), or error(), or fprintf(), that also write to file descriptors. Unfortunately, if you try to stderred-ify "ls", none of stderr appears red! That's because ls uses fprintf_unlocked() and error(), which themselves *inside libc* call write().
If you think of ls as standing on top of a library stack that looks like this:
ls
[stderred]
[libc]
if you know that symbol resolution only looks "down," it's clear that the functions *inside libc* don't go back *up* to stderred to find my hacked write(). So they use the libc write(), which doesn't colorize.
Therefore, I started down the long road of modifying "all the important" functions to colorize if the output was going to stderr. Trying to colorize "ls" is where I started, so I wrote quite a few of those before actually checking what Java used. "ls" nearly gets colorized properly; you can look through the with_error branch for the latest work down that path. But I stopped once I figured out Java seems okay with just write(), and for cleanliness's sake I left that out of the released version (currently 1.1). Patches welcome!
zsh, python, and further reading
According to the Gentoo-Wiki, zsh users have an easy way to enable colorizing stderr. Knowing little about zsh but something about UNIX, it seems to me when they fork to run the new program, they close() fd #2 (stderr) and open it as a pipe to this program. I don't see how they solve the races brought up by the Perl thing; it seems to me they'd have the same race.
This is the same path that Jesse and I started down in the beginning; we read http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html and noticed it didn't discuss setting stderr to a pipe, and then we talked about named pipes....
The Pythonic way to do this would have been to "simply" globally override what "sys.stderr" is. I don't know if such a thing is possible in Java.
You can read a quick tutorial on LD_PRELOAD in the IBM DeveloperWorks article, "Override the GNU C Library -- Painlessly." You can read a lot more about dynamic linking in the exhaustive "How To Write Shared Libraries" by Ulrich Drepper.
[/note/software] permanent link and comments
Fri, 26 Sep 2008
Announce and discuss lists
I have a habit of entering a community and leaving both an announce and a discuss list wherever I go. The wisdom of this is still unresolved. I thought I'd share one thing I do beyond that: set the reply-to header on the announce list to go to the discuss list.
That way, when there's an announcement and the peanut gallery wants to add something, they'll reply and the people interested in hearing more will hear it.
I remembered this upon reading that the BALUG lists have the same sort of split, and that in particular that they were considering (on an opt-out basis) auto-adding people from discuss to announce.
[/note/sysop] permanent link and comments
Adding a Website: header to Mailman messages
Very often, I like to quote mailing list messages to people not on those mailing lists. Mailman is a common mailing list program, and Pipermail is commonly used for storing archives. What ends up happening is that I fish around for the archive link and spend a minute or two figuring out which message it is.
So I wrote a short program to do that scraping for me. You can check it out (literally, if you want, with svn) at the mail_tools directory - look for add_mailman_website_header.py and sample_message.
Why the "Website:" header? Thunderbird seems to show that by default, so that's one less configuration option I have to change. (To match this, I changed my alpine config to show it too.)
You may also want to look at the procmailrc snippets I use to insert it into the mail processing pipeline. Embarrassingly, configuring procmail to set it up took as long as writing this thing; it's been way too long....
## <Mailman header addition> :0 W MAILMAN_URL=| python ~/svn/public/code/mail_tools/add_mailman_website_header.py go :0 Waf | formail -b -A "Website: $MAILMAN_URL" ## </Mailman>
One more thing: If you run it with 0 arguments, it does a self-unittest (which in a few days will give false negatives; maybe that'll encourage me to improve the program, but probably not!). Hence I give it the meaningless argument "go". It also waits for a configurable (45s by default) amount of time for the pipermail index to get updated, as in real-world tests it beat the pipermail index for the two list messages.
Screenshot: Before
Here's some mail without the header:ALPINE 0.9999 MESSAGE TEXT Folder: INBOX Message 5 of 7 90% + Date: Wed, 24 Oct 2007 19:29:59 -0700 From: Rick Moen <rick@linuxmafia.com> To: sf-lug@linuxmafia.com Subject: Re: [sf-lug] FWIW and :r! dig -t ns sf-lug.com Quoting Christian Einfeldt (einfeldt@gmail.com): > Learning vi is really hard, though. "vimtutor" is your friend. Until then, think of it as "vi vi vi, the editor of the Beast." _______________________________________________ sf-lug mailing list sf-lug@linuxmafia.com http://linuxmafia.com/mailman/listinfo/sf-lug ? Help < MsgIndex P PrevMsg - PrevPage D Delete R Reply O OTHER CMDS > ViewAttch N NextMsg Spc NextPage U Undelete F Forward
Screenshot: After
ALPINE 0.99 MESSAGE TEXT Folder: INBOX Message 5 of 7 86% + From: Rick Moen <rick@linuxmafia.com> To: sf-lug@linuxmafia.com Date: Wed, 24 Oct 2007 19:29:59 -0700 Subject: Re: [sf-lug] FWIW and :r! dig -t ns sf-lug.com Website: http://linuxmafia.com/pipermail/sf-lug/2007q4/002523.html Quoting Christian Einfeldt (einfeldt@gmail.com): > Learning vi is really hard, though. "vimtutor" is your friend. Until then, think of it as "vi vi vi, the editor of the Beast." _______________________________________________ sf-lug mailing list sf-lug@linuxmafia.com http://linuxmafia.com/mailman/listinfo/sf-lug ? Help < MsgIndex P PrevMsg - PrevPage D Delete R Reply O OTHER CMDS > ViewAttch N NextMsg Spc NextPage U Undelete F Forward
Update 2007-10-24: It actually works now. I worked around what appears to be a bug in the Python email module. Report pending. I'll post a screenshot in a day or two and call this project a success, except for all the other non-Mailman services to index.
[/note/software] permanent link and comments
Load average
sh-3.1 $ uptime 12:10:16 up 20 days, 18:54, 4 users, load average: 680.29, 656.27, 636.17
Huh.
[/note/debian] permanent link and comments
Wed, 17 Sep 2008
Pirate grapes
"Although new, the produce section of Pirate Bay has been growing rapidly."
-- Master Mahan, commenting on a grocery store bag of grapes with a license agreement
Flickr via Boing Boing
[/scribble/food] permanent link and comments
Thu, 21 Aug 2008
dd, dd_rescue, and ddrescue
The short answer: "Use GNU ddrescue. GNU stands for Quality."
dd is a classic UNIX utility to read from and write to files (often devices). Typically, one uses it to copy a hard disk to a file, or to image a hard drive by copying a backup onto it.
One hits a problem when the hard disk has errors. In this case, dd abruptly stops working in the middle, reporting an "Input/output error." But when the hard disk has errors, usually what you want is to get an image of all the blocks on the hard disk that are readable - not just the first few before the first error!
(Note for the pedantic: Yes, I know about dd conv=notrunc,noerror. They're so easy to misuse (mostly by forgetting one of those two options) that they're worth avoiding.)
Two tools are available for this particular purpose. Confusingly, one is called ddrescue, and the other is called dd_rescue.
Around 2001, Kurt Garloff wrote dd_rescue. It does what dd does if you pass it some options, but it comes with instructions on how to use it to recover data from drivers, like by running it multiple times or bakcwards. A wrapper script called dd_rhelp automates that process.
When you're running dd_rescue on an obscure OS like Mac OS X 10.3 because you dropped your laptop in Uganda and the Linux partition grew bad blocks and you still want your data, you will find that dd_rhelp is written as a complicated shell script that relies on GNU versions of core system utilities. OS X provides non-GNU versions, and you will waste hours fiddling with compiling those utilities just so you can run some dumb shell script.
In the summer of 2004, the same summer as I dropped my laptop, Antonio Diaz Diaz wrote "ddrescue," a stand-alone C++ tool that does the same things as dd_rhelp, but more sanely and therefore more efficiently. It became an official GNU project. GNU ddrescue, like dd_rhelp, can keep a log file to let itself gracefully pick up after interrputions.
When your hard disk fails, you should turn to your backups. But if you need a tool like these, just remember: "GNU ddrescue."
$ sudo apt-get install gddrescue
[/note/sysop] permanent link and comments
Lamers
Kragen Sitaker and his wife Beatrice were very gracious in hosting me and my brother for a week in Buenos Aires.
I was looking for something on Kragen's website and found a ten-years-old discussion of how to find security problems in software. In it, he writes:
Body text last updated 1998-07-22. Recently has become the most popular page of mine, presumably because a bunch of lamers want to learn how to break into things. [...]
I wouldn't be surprised if calling 100-200 people a day `lamers' results in electronic attacks on me or my machine (kragen.dnaco.net.) All I can say is that people who do this would thereby demonstrate their lamosity.
Lamers, you say? Nelson took this picture of me a few years back. Look at the thumbs-up from the driver!
(Photo available for re-use under Creative Commons Attribution-ShareAlike 2.0.)
Note: Mako addressed this topic earlier this year, and then again more recently.
[/note/ba-2008] permanent link and comments
Tue, 19 Aug 2008
For Timo art with me
Chris Wakelin asks Timo of Dovecot to change his English usage:
I've been meaning to tell you that should be "Yeah" for an informal version of "Yes", otherwise it's a very archaic form of "Yes" or "Indeed" as in "Yea, though I walk in the valley of the shadow of death"!
Stewart Dean points out:
But Timo walks through the valley of the shadow for us all.....so maybe he's entitled.....
[/scribble/code] permanent link and comments
Sun, 17 Aug 2008
Fake Out in Buenos Aires
"Falso," he said.
I accepted the 100 peso (US$30) note back. The only place we had gotten 100 peso notes were ATMs.
I found a different one with a good watermark and handed it to him. (This happened a bit over a week ago.)
[/note/ba-2008] permanent link and comments
Fri, 15 Aug 2008
Hello Planet Debian
I have a face on Planet Debian!
(Thanks to John Wright for setting it up for me!)
[/note/debian] permanent link and comments
Wed, 13 Aug 2008
Sending mail from a laptop
I often find myself on what I would call "hostile" networks: They allow only very limited Internet access, like by blocking port 25 so I can't connect to my mail server. Maybe for you, you're never on filtered Internet access, but your home ISP doesn't let you send mail out when you're not at home, but you want to send email directly from your laptop anyway.
Just do what I do! Let me explain.
Summary
- inetd listens on port 125
- Connections to it go through an SSH tunnel that executes "nc localhost 25" on some mail server
- (Optional) A real MTA runs on the laptop, so that I can send mail when offline; when mail delivery fails temporarily, Postfix queues the message until I get back online.
Justification
- Easy. Apps can be configured to use localhost port 25 (or port 125) with no password.
- Correct: Postfix (when using 25) handles sending mail when offline, and reattempts delivery for me.
- Secure: Encryption all the way through the network, with the icing on the cake that this all looks like SSH, so nosy networkers near your laptop can't even see that's what you're doing.
Implementation in Three Steps
Step 1: ssh tunnel
This is the hardest part. To make things simple, I create a dedicated user on each end.On the remote server (server)
[me@laptop] $ ssh me@server [me@server] $ sudo adduser tunnelendpoint [me@server] $ sudo su - tunnelendpoint [tunnelendpoint@server] $ mkdir .ssh
On the local machine (laptop)
[me@laptop] $ sudo adduser tunnelclient [me@laptop] $ sudo su - tunnelclient [tunnelclient@laptop] $ ssh-keygen -t rsa # make it passwordless [tunnelclient@laptop] $ cat .ssh/id_rsa.pub | ssh tunnelendpoint@server 'mkdir -p .ssh ; chmod 0700 .ssh ; cat >> .ssh/authorized_keys'
On the remote server
[me@server] $ sudo su - tunnelendpoint [tunnelendpoint@server] $ nano -w .ssh/authorized_keysYou'll see a key that starts with "ssh-dss". Before that, add this string and leave a space before "ssh-dss":
command="nc localhost 25",no-X11-forwarding,no-agent-forwarding,no-port-forwarding
(Note: "nc" is in the netcat package.)
On the local machine (laptop)
[tunnelclient@laptop] $ ssh tunnelendpoint@server 220 rose.makesad.us ESMTP Postfix (Debian/GNU): "every tragedy is a beauty that has passed"
Hooray! If you see a reply like mine that starts with "220", then all is well.
You're done with the hard part. Now the easy parts.
Step 2: inetd
[me@laptop] $ sudo aptitude install openbsd-inetd
Now edit /etc/inetd.conf to have this line:
127.0.0.1:125 stream tcp nowait tunnelclient /usr/bin/ssh -q -T tunnelendpoint@server
Now restart the inetd (sudo /etc/init.d/openbsd-inetd restart) and test it:
[me@laptop] $ telnet localhost 125 220 rose.makesad.us ESMTP Postfix (Debian/GNU): "every tragedy is a beauty that has passed"
Step 3: Postfix (optional)
This is my favorite part, but it's only necessary if you plan to send email when you're not connected to the Internet.
Just install Postfix, and add this to /etc/postfix/main.cf:
relayhost = 127.0.0.1:125
Restart Postfix and you should be set. Try sending some mail!
Closing
I was inspired by a Debian Administration post, except I had my own ideas about the best way to do it. I still like my way best.
One problem with the above approach is that it requires root on "server". It would be possible to do the ssh tunnel thing without using a separate "tunnelendpoint" account, but instead to add that key to your regular username.
[/note/sysop] permanent link and comments
Tue, 12 Aug 2008
Geocoding location
Writes Aldon Hynes:
A random thought to muck up the works... What about people posting locations from virtual worlds?
[/scribble/code] permanent link and comments
Sat, 09 Aug 2008
Finding duplicate files
Every once in a while, I know one file is duplicated in many places. This happens, for example, when I have imported photos from my camera into a photo management program and also stored a copy of them somewhere else. Sometimes I have downloaded files twice from the web.
Detecting duplicate files is not hard - you just compare the file contents. The problem is that with large files, and a large number of files, it can take a long time if you compare every file to every other file.
Because I needed to do this for a few gigabytes of photos, and everything I found I either didn't trust or ran too slowly, I wrote my own. Once you detect duplicate files, you generally want to either delete all but one, or to "merge them" via hardlinks so that all the files exist, but they share storage space on disk.
Summary: I had a fairly good approach, but everyone should use rdfind instead of my code.
My approach
You can check out (using Subversion or a web browser) my code at http://svn.asheesh.org/svn/public/code/merge_dups/ .
- Organize all the files grouped by size (since only files of equal size can have equal contents).
- For each size that contains more than one file, calculate a hash (MD5) of all the files.
- If any of the files have the same size and MD5, delete the one with a longer filename.
- Continue to the next file size.
This approach has to stat() every file at least once, but many files don't have to be read at all. For my photos, this was a huge time-saver.
(Why delete the one with a longer filename? Usually that's the one in some obscure directory named "camera-backup" or "recovered-from-some-dying-computer".)
I trust my code. Plus, it is verbose, printing out what it is doing and why. And the entire program with comments, status message print-outs, and vertical spacing easily fits on my screen.
Other implementations
Today, I decided to go through Freshmeat to see if I could retire my code and just rely on someone else's. So I checked out the reasonable contenders from this search.
find_duplicates by Fredrik Hubinette
- Homepage: http://fredrik.hubbe.net/hacks/
- License: GPL v2 (good)
- Efficiency: Good (uses file sizes the way I do)
- Language: Pike (weird, but seems okay)
- Strategy: Check sizes; hash; verify by reading file; merge via hardlinks
- Sanity: High
- Rating: Good
It uses the first few kilobytes of the string as a hash, which is probably more efficient that reading the whole thing. It is safe and reads the whole files before marking them as duplicates.
dmerge.cpp by Jonathan H Lundquist
- Homepage: http://www.fluxsmith.com/cgi-bin/twiki/view/Jonathan/DMerge
- License: X11-like (good)
- Efficiency: Good (uses file sizes the way I do)
- Language: C++ (bearable)
- Strategy: Check sizes; hash by calling an external program; verify by calling "cmp"; ...
- Sanity: Low
- Rating: Don't use
I stopped caring when I realized it calls external programs. I doubt it does it in a correct/secure way, so forget it.
duff by Camilla Berglund
- Homepage: http://duff.sourceforge.net/
- License: zlib/libpng (MIT-esque) (good)
- Efficiency: Good
- Language: C (okay)
- Strategy: Check sizes; hash with first few bytes; verify by SHA1 or actual
- Sanity: High (comes with a man page; very tunable; great web site)
- Rating: Don't use
This looks really good, but it doesn't actually do the merging. It relies on a shell script to do the merging, and I don't trust the correctness of the shell script's handling of filenames (due to the whitespace-separated output format of duff itself).
Note to Camilla: If you provided a -z option (like find -print0) to duff, and made sure the shell script respected it, then it would be practically perfect.
fslint 2.14
- Efficiency: Seemed lame
- Rating: Don't use
- Explanation: I tried it, and then I said, "That's it, I'm writing my own."
It was so litlte fun to use I don't even want to talk about it. The benchmarks on the rdfind web page confirm this with data.
rdfind by Paul Sundvall (WINNER!)
- Homepage: http://www2.paulsundvall.net/rdfind/rdfind.html
- License: GPL (v2, probably) (good)
- Efficiency: Excellent
- Language: C++ (okay)
- Strategy: Check sizes; check first bytes; calculate SHA1s; delete dups or create symlinks or create hardlinks or print report
- Sanity: High - object-oriented, well-commented, includes man page, includes benchmarks
- Self-importance: High, but seems deserved
- Rating: Excellent, use it
Finding software like this is why I look for software not written by me.
Other tools I didn't fully review
- finddup by Heiner Steven <http://www.shelldorado.com/scripts/cmds/finddup>
- Language: Shell, which probably means it has problems with complicated filenames
- clink by Michael Opdenacker <http://free-electrons.com/community/tools/utils/clink/>
- Language: Python (yay!)
- Does not support hard links, only symlinks, thereby (to the author's own admission) creates permissions problems
- dupfinder by Matthias Böhm <http://doubles.sourceforge.net/>
- Sanity: Moderate to Low - thinks that not using hash functions makes it "much faster" than other programs
- dupmerge2 by Rolf Freitag (continuation of work from Phil Karn) <http://sourceforge.net/projects/dupmerge/>
- Sanity: Moderate to Low: Bundles a pre-compiled binary, which is just weird
- dupseek by Antonio Bellezza <http://www.beautylabs.net/software/dupseek.html>
- Focus on interactive duplicate file removal. Probably good at that; I want correct, unattended operation.
- freedup by William Stearns <http://freedup.org/>
- Looks fairly good, even though it's written in bash (freaks me out)
- Offers an option to strip metadata and compare only file *contents* for MP3, MPEG4, MPC, JPEG, and Ogg (not FLAC, I guess), which is great.
Conclusion
rdfind looks great. Every once in a while, two hours are better spent doing research rather than re-inventing the wheel. This is one of those times where I was more useful to my life as a secretary rather than by trying to be a programmer.
[/note/software] permanent link and comments
Mon, 04 Aug 2008
Francisco
Francisco is the name of the very energetic hostel attendant at America del Sud El Calafate.
After offering me a key (literally) for the wireless, he told me the password.
"What are you doing there?," he asked me. "It's email," I answered.
"Email? And how can you see? I can't see any letters." (The fonts are pretty small on my laptop.) "What program is that?"
"Pine," I said. "It's called Alpine."
He paused for a moment, and reported, "You look like a hacker with that." He patted me on the shoulder and wandered off.
[/note/ba-2008] permanent link and comments
Argentina for two weeks
For those of you I haven't told, I'm in Argentina. I've been here since Friday July 31. The idea is to take a week's vacation before heading to Mar del Plata for a week of the Debian conference, Debconf. This year, Debconf is held that beach resort town in the winter. From what I read, Mar del Plata is worth visiting even in this off season. On August 17, I'll be back in the Untied States (*).
The gracious Kragen Sitaker and Beatrice Murch are hosting me and my brother for a week in Buenos Aires. As a side note, right now I'm not in Buenos Aires but in a cold place called El Calafate.
On an overcast wintery day, B.A. looks like someone took a remix of Belgium and Paris and let it wear out a litte more than you'd expect from the Continentals. On any sort of day, from Kragen's and Beatrice's roof, it looks like someone ported Blade Runner to Europe.
(*.) [sic]
[/note/ba-2008] permanent link and comments
Real DOS on a virtual disk
Sometimes you need to run DOS programs, like to flash BIOSs on your laptop. Sometimes, if you're Kragen, that lets you fix ACPI on your BIOS, giving you a hope that X will boot up more often than 1 in 3, sound will skip less, and the first PC card you insert will be assigned a valid IRQ. (The last one is particularly interesting: to get a working PC card before the promised joy of the BIOS update, you have to plug in one card, watch it get assigned the mostly broken IRQ 3, plug in a second card, watch it get assigned the useful IRQ 4, and then you can remove the first one. This is a good way to get a wifi card working.)
Here's a simple HOWTO for getting that going on a Linux machine without repartitioning or booting off external media.
I'll refer to aptitude; I'm assuming you're using a Debian/Ubuntu machine so that makes sense.
Step 1: Install syslinux
$ sudo aptitude install syslinux
Now memdisk is in /usr/lib/syslinux/memdisk .
You should copy it to /boot/ in case your root filesystem is encrypted:
$ sudo cp /usr/lib/syslinux/memdisk /boot/
Step 2: Get your DOS floppy in /boot
Debian packages FreeDOS in dosemu-freedos. Unfortunately that doesn't include a floppy image. Instead:
$ cd /boot $ sudo wget http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/fdboot.img
Step 3: Configure GRUB
Put this in your /boot/grub/menu.list and smoke it:
title FreeDOS kernel /memdisk initrd /fdboot.img boot
Step 4: Reboot, and choose FreeDOS!
Ta-da, you're done.
More options
For bonus points, you can customize the floppy disk image. The easiest way to modify is to mount it loopback:
$ sudo mount -o loop,mode=777 /boot/fdboot.img /mnt/
Then you can copy files into /mnt/, and then when you're done:
$ sudo umount /mnt/
Ta-da, the image has been changed! (Thanks to Kragen for confirming that this actually works.)
The lame old way to customize the image is to use "mtools."
P.S. Thanks to Albert Lee for explaining this trick to me in the first place!
[/note/sysop] permanent link and comments
Mon, 21 Jul 2008
Calorie Calorie
Last night I flew from New York's JFK airport to Portland's PDX. While at JFK, I was hungry. I was enticed by the delicious-looking fries in the display sample from "Cheeburger Cheeburger [sic]."
When I went up to order, I found the fries alone seemed to have over 1700 calories. Since when do fast food joints tell me how many calories are in the food right next to the price? I ordered my cheeseburger but could not in good conscience buy a side of fries that had nearly three times as many calories as the "entree" itself.
This morning I ran into a news article explaining that this is because of a new health inspector rule requiring calorie counts "displayed on [chain restaurant] menus in the same font and format as the name or price of food items." The article reports, "New Yorkers appeared unfazed by the rule."
It continues to quote a casually pro-corporation anti-informing-consumers analyst named John Owens, "I'd be shocked if consumers weren't already aware that when they're eating in a fast-food restaurant." I knew it wasn't "healthy" to eat burgers and fries from fast food chains, but I'm still a little shocked that the fries alone have more than 1700 calories.
Maybe we could have this sort of signage everywhere, even in cities that aren't New York.
[/note/eat] permanent link and comments
Wed, 16 Jul 2008
IP over Avian Carrier: Security implications
BBC News has a story on Brazil's pigeon drug mules.
Quoth Bruce Schneier:
I think this is the first security vulnerability found in RFC 1149: "Standard for the transmission of IP datagrams on avian carriers." Deep packet inspection seems to be the only way to prevent this attack, although adequate fencing will prevent the protocol from running in the first place.
[/note/sysop] permanent link and comments
Mon, 14 Jul 2008
Seattle to Portland on a Unicycle
I decided that I didn’t want to disappoint me, Helen, or God, so to Winlock we went.
Via Eric, who attempted this for the first time this year. Congratulations!
It concludes:
A unicyclist with two beautiful and talented daughters as a unicycle honor guard drove the crowd completely wild, and I felt like I was the king of the world as I rode triumphantly, giving high fives to my subjects.
[/scribble] permanent link and comments
Thu, 19 Jun 2008
+5 fooled Slashdot
[/scribble] permanent link and comments
Mon, 16 Jun 2008
The S-video jack
[/scribble] permanent link and comments
Repository
I run a Debian package repository, with packages for Debian at http://www.asheesh.org/debian/ and packages for Ubuntu at http://www.asheesh.org/ubuntu/.
If you would like to use my repository, here is what you need to add:
For Ubuntu
- Edit sources.list and add these lines:
deb http://www.asheesh.org/ubuntu/ hardy main deb-src http://www.asheesh.org/ubuntu/ hardy main
- gpg --keyserver pgpkeys.mit.edu --recv-key 0x70096AD1 ; gpg -a --export 0x70096AD1 | sudo apt-key add -
- sudo apt-get update
For Debian
- Edit sources.list and add these lines:
deb http://www.asheesh.org/debian/ sid main deb-src http://www.asheesh.org/debian/ sid main
- gpg --keyserver pgpkeys.mit.edu --recv-key 0x70096AD1 ; gpg -a --export 0x70096AD1 | sudo apt-key add -
- sudo apt-get update
And then?
You're free to apt-get install whatever you want from my repositories now. If you would like to compile my packages from source, just do:
- apt-src -bi install $package
[/note/software] permanent link and comments
Fri, 06 Jun 2008
Build failure
A package I am working on fails to build. Mako helps me understand why:
<mako> problem seems to be liboobs <paulproteus> I'm afraid you're trolling me. <mako> i wish i was
[/note/software] permanent link and comments
Sat, 31 May 2008
Venkatesh clarifies
Mar 07 18:49:41 <venkatesh> often, your flames lack flame
I guess that's a good quality to have....
[/note/communication] permanent link and comments
Reverse smileys
Kristian Hermansen sent an email to the San Francisco Linux Users Group list expressing shock at my "reverse smileys". Others have, too, so let me take a moment to explain.
Some time around 1995, I started using AOL. (I also stopped some time in the same century.) I learned important vocabulary like "a/s/l" and "rofl" and PC Magazine sent me a free mousepad with Windows 95 hotkeys like "Windows+R" for the Run dialog box. Then our free month expired, and we went on to some other network.
Eventually I got into IM, and I started messaging friends routinely. I got into the habit of making complicated smileys - my favorite was Abe Lincoln: =|:-)= [source]. And some time later on, the smileys started getting turned into pictures. It may have been cool that :-) turned into a picture of a smiling yellow face, but I found it offensive that (a) they (AOL) started doing this without asking me, on other people's computers, so I had no idea how my emoticon was going to be displayed, and (b) that they would totally corrupt smileys like Mr. Lincoln.
So I retaliated. I came up with two counter-attacks. The first was the smartest: :-) would not get graphicalized, I realized. (View the source if it's not clear how that works.) That worked fine in media where I had rich formatting (HTML), but would fail me in emails. It was great for confusing my IMees, for whom it looked like a regular, old-school smiley, except all the other old-school smileys had gone away in favor of yellow circles with black lines and points.
The other way was more drastic and, instead of hiding between the lines, vocally made the point that not all smileys needed to be graphicalized. That was to reverse the smiley. I don't know when I started doing that, but it's probably some time between 1998 and 2000.
I also liked to abuse smileys to make grinning asides in emails. (-; You might wonder why asides needed to grin; usually they wink instead! ;-) I don't know if that idea came before or after I started making backwards smileys in the first place. I don't do this as much now in large part to me having seen Thunderbird turn my closing smileys into lame yellow things that ruin the symmetry.
One day during natural language processing, Jason Eisner said in class that he thought people who did the above thing (presumably without knowing I did it) were making an NLP joke. That added to the feeling that NLP was right up my alley.
All in all, smileys have been a big part of my online life. It's only fitting that the EFF and They Might Be Giants contributed to this post.
[/note] permanent link and comments
Mon, 26 May 2008
IPv6
Kartik pointed me to this post about "The Future without IPv6". IPv6 is the future addressing scheme that the Internet will hopefully be transitioning to in the next decade or so; IPv4 is the current setup. The reason we need a new addressing scheme is simple - we've run out of addresses. The dream of the Internet was "end to end connectivity," but you can't do that if you don't have enough addresses to give everyone on the network an address.
You've seen this every time you open up a laptop and it gets an IP address from a "wireless router" - the IP address created for you by that router actually can't be reached from the broader Internet. Network Address Translation (NAT) is a trick the router plays where it changes the headers on your messages destined for the Internet so everyone else on the network thinks the box sent the message. But this means if you want to do something not allowed by that box in the middle, or allowed but misunderstood, it is in an incontrovertible position to screw that up.
The article writes:
Ubiquitous multilevel NAT means the Internet becomes a system for making TCP connections.
Using the Internet only for TCP connections to me spells the end of decades of Internet innovations like Voice over IP that rely on the flexibility of the Internet. And the fact that these connections must always go to the few servers able to have their own dedicated IP addresses creates a separate class of connection in the Internet world: "consumer" vs. "distributor". That class distinction is what IP was designed to erase.
I don't agree with the author that we will never move to IPv6, but I also know we won't do it fast enough to satisfy me. Luckily, thanks to the "end to end" nature of the Internet, especially IPv6, I can do my own migration now and give my computers both IPv4 and IPv6 addresses. I'll be here in the future, waiting for the rest of you guys.
P.S. I'm already "multiplexing multiple transports over a single TCP connection" with my always-on SSH tunnel. I am aware of the drawbacks he lists.
[/note/sysop] permanent link and comments
Mon, 19 May 2008
Humility in the open source world
"Thanks, Markus. I'm glad to know I was dumb"
[/scribble/code] permanent link and comments
Fri, 16 May 2008
Another satisfied customer (of Dovecot)
[/scribble/code] permanent link and comments
Thu, 08 May 2008
Hypotheticals
<l7_> hmm, well that's a rather problematic hypothetical <shiznick> what? <shiznick> oh, the nuclear holocaust thing?
[/scribble/rhetoric] permanent link and comments
Sat, 03 May 2008
Lessons to learn
<vsrinivas> what I really really wish existed somewhere was a 'lessons to learn from N' <vsrinivas> where N was plan9, coyotos, erlang, alef, .... <vsrinivas> because srsly, we're not using them. but it'd be nice to understand what worked and what didn't and how it was applicable to reality <paulproteus> "Programming UNIX as if it were Plan 9" <paulproteus> "Programming Python as if it were Erlang" <paulproteus> "Coyotos idioms for kernel designers" <vsrinivas> something like that <paulproteus> "Alef for Naught? Not!" <vsrinivas> hahahahahaha!
[/scribble/code] permanent link and comments
reCAPTCHA
CAPTCHAs are a name for programs designed to test if they are being used by another computer (a "bot") or by a humamn. They do this by asking the user to do a task that presumably can't be done by a computer; for example, reading obscured words.
reCAPTCHA is a well-known CAPTCHA service that takes images from the Internet Archive's book scanning project. Some words are hard
But as for spam in MediaWiki, it seems that simply using the blacklists mentioned earlier is not enough; the Reed Free Culture wiki (for example) has been spammed beyond recognition with link spam. So I am deploying reCAPTCHA to show a CAPTCHA to users when they register, and showing a CAPTCHA to anonymous users who try to add links.
P.S. Attentive people may consider a personal link I have to the Internet Archive's book scanning project. That has nothing to do with my liking reCAPTCHA. (-:
[/note/mediawiki] permanent link and comments
eSpeak
While I was listening to the Raven, Matt remarks:
"I don't know what the purpose is, but clearly it should be a female voice with a British accent."
Kragen replies online: "oh, use -v en/en+f2 for that"
[/scribble/code] permanent link and comments
A name
<cdchan> That seems like Awkward City. <paulproteus> Awkward City Soundtrack
[/scribble/music] permanent link and comments
Who is that Mailer-Daemon anyway?
"He's a magic dwarf with a taste for destruction."
Another good quote: "On the Internet there are no cops, just system admins."
And the part where I think I like him: "It would be a shame if we lost our public postal system to private companies!"
He suggests sysadmins use collaborative filters. That's interesting, since I currently just use a local DSPAM that collaborates with nobody.
[/scribble/net] permanent link and comments
Tuesday
was like simulated annealing, but where you never turn the temperature down.
[/note/people] permanent link and comments
Tue, 22 Apr 2008
Mediawiki antispam: SpamBlacklist
I end up maintaining a bunch of MediaWiki wikis. So far, here is what I do to keep them low in spam, high in ham.
Note that I have a bias to wanting to accept anonymous edits.
Use SpamBlacklist
Wikimedia maintains a list of bad domains that are linked-to by spammers. The famous chongqed.org maintains a similar list. The SpamBlacklist extension prevents saves with URLs that match patterns listed in a blacklist. Blocking this way is important, even if anonymous edits are disallowed, because many bots seem to register for accounts. Blocking this way is important, even if CAPTCHAs are enabled, because there seem to be spammers who sit at their computers and spam (or alternately who solve CAPTCHAs and then let their bots run (not that I've ever done that....)).
To use it, just:
- Check it out of their svn
- Configure a cron job to get the Chongqed and MW blacklists locally, and configure $wgSpamBlacklistFiles as appropriate.
- Don't forget to read the official docs.
- Caution: The Chongqed list blocks lots of .edu domains. I "grep -v" them out.
[/note/mediawiki] permanent link and comments
Thu, 20 Mar 2008
The ninth graders
On Thursday, March 6, I spoke to a room full of ninth graders at the French-American International High School in San Francisco.
Two months ago, some faculty there emailed the San Francisco Linux Users Group (really, they emailed Jim Stockford, who passed it along). They explained that they were having a full day off classes for students on what they termed "Internet Day," bringing in outside speakers to talk about issues related to computer technology.
One of the most interesting things is that the event was organized by a remarkable high school senior, Joseph Harder. But long story short, I emailed them saying with my background and said I could talk, and they invited me.
So two Thursdays ago, I woke up at 8:30 a.m. and thought, "Man, I should make a presentation for these guys. I have to be a lunch at 11:30 to meet the other presenters." Then I thought better of it. "I'll go to sleep for another half hour."
Now fully prepared (at least as fully as I was going to be), I arrived at lunch only a few minutes late. I met some other presenters: Craig Newmark (famous for his List), a Google laywer, and a Boalt Hall faculty member, to name a few. I felt pretty clearly outclassed, but I figured if I didn't let them know how outclassed I was then at least I could have a normal conversation with them.
My presentation was to (I think) all the ninth graders in the school. There were between 60 and 80 of them in the room, I'd guess. I was co-presenting with Christian Einfeldt, Producer of the Digital Tipping Point film about Free and Open Source Software. Through the Socratic method, he spoke about "ownership," explaining to the students that when you run proprietary software, you are not in control of your computer.
I then spoke about copyright law and what Creative Commons is. I began by giving props to Christian, pointing out that the same Richard Stallman Christan referred to had signed my laptop. (It does turn out that my involvement in Free Software goes deeper than that, but it didn't seem important to list all of my million hats.)
I gave what looks like a very Larry-inspired presentation - sparse slides, and alignment tricks to make my points clearer. It was a total blast. To name only one difference between this presentation and a real presentation by Larry, I treated the slides and my presentation as one half of a conversation; Larry's rock-star Free Culture talks have him whip through things so fast you're mesmerized, but there's no time for questions in the middle. I let the kids ask me questions all through the talk, which was oodles of fun.
You can see the slides here, but the real joy of the event was in the interaction between me and the students. Some highlights:
A beginning
I began by pointing out:
- Copyright is Federal law
- Copyright is international law
- Copyright is not necessarily a system of morals
It's just the way the law is written right now.
- I asked, "How did we end up in this terrible mess of copyright law?"
- I then flipped right through the words "disney + world" on their own slide, and switched to a picture of the Magic Kingdom at Disneyworld.
- The kids are oohing and aahing and cheering, "Disney, yay!". I know I won't have their attention until they get this out of their systems, so I just stand around smiling for twenty seconds or so.
- Then, naturally, I explain how Disney movies are largely fairy tales retold, and that Disney lobbies Congress to make sure no one can do to them what they did to to the Brothers Grimm. (A total Larry line, but it's a good one.)
- Kids in the audience actually remembered the original Napster. They must have been in second grade!
- One asked, "Is that the cat?"
- (I said, I guess it's a cat....)
- And many of them actually said they used it, which I found amazing.
- Somewhere toward the middle of the presentation, just as I was finishing explaining how copyright was "worthless" to people who wanted to use and reuse (and participate in!) culture, a staff member whose name sadly escapes me asked me the obvious question: How will people make money?
- I told her I'd get to her question toward the end, when I covered Nine Inch Nails. Turns out that while I said they made $750K of revenue, they actually made 1.6 million dollars in the first week.
A conclusion
- The way I explained Creative Commons was through the comparison of Metallica and Nine Inch Nails.
- Metallica sued Napster, whereas Nine Inch Nails just released a full album (or four, depending how you see it) under a Creative Commons license.
I explained the exact license NiN chose with the CC symbols. As I finished up, I summarized this as:
Nine Inch Nails: Ghosts IIV promises not to sue you for making a music video and putting it on YouTube.
One kid asked me, "Is that a legal promise?" This question reaches to the heart of what Creative Commons tries to do - decrease uncertainty about using other people's work when they don't mind. I answered, "Yes," and explained a little of the history of CC.
My last few slides were:
Nine Inch Nails: Ghosts IIV respects you.
Which was followed by:
Metallica does not.
So I got some great applause at the end, which felt marvelous, and then we had about five minutes more for questions. Two questions took up three minutes, and I realized I had forgotten to ask them this question that occurred to me earlier in the morning. So I said:
"Will the people follow the law, or will the law follow the people?"
I tried to get them to take some charge in changing laws that do them more harm than good. Some copyright may be useful, but it's hard to argue we haven't gone too far.
I got just about the same thunder of applause, and then they
Epilogue
As literary convention would have it, this story has an epilogue. I had some good conversations at the end, including discussing Free Software with one Mac user student who pretty clearly knew what he was talking about. Christian spent quite some time talking about his Digital Tipping Point film with the staff member whose name I have still, sadly, forgotten.
I also received an email that looked like this:
Date: Fri, 7 Mar 2008 05:55:24 +0000 (GMT) From: Student <something@yahoo.fr> To: asheesh@creativecommons.org Subject: tech seminar at ihs
hey i rly enjoyed your talk today and i did wat u said and got the NIN cds... there rly good and i just wanna say thank u a lot and i hope ull be at the next seminar
Well, that was nice. I'm left with warm fuzzies and the desire to do something like this again.
[/note/free-culture] permanent link and comments
Sat, 15 Mar 2008
Crunchy
It looks good, and it seems at least more complete than "half-baked". I haven't tried it.
[/scribble/code] permanent link and comments
Fri, 07 Mar 2008
Herbert and pajamas
Three nights ago, I went to Pancho Villa at 11 at night for a burrito. I was in my pajamas, and an originally-Polish girl (whose name I forget, sadly) struck up a conversation with me. She explained a minute or so in:
I was thinking of talking to you as soon as I saw you, but I thought you looked very focused on the menu.
She was sweet, and I suggested she wear hers to Pancho Villa. "But they're pink!" she objected.
On the walk back, a boy and a girl who looked in their mid-twenties drove down Fourteenth Street and turned onto Valencia while I was waiting at the corner. The girl's face lit up when she saw my pajamas.
Two nights ago, I was at a cocktail party at the home of the principal of the French-American International High School that I will be speaking at tomorrow. I spoke with the director of maths [sic] at the school, and after about twenty minutes of good conversation, he asked me if I knew I had this little guy in my pocket, or if my kids had put him there while I was unaware. Half an hour later, someone else wondered the same thing to me. Regardless, he was well-received by the school's staff, and in a car ride home, one of the teachers who organized the Internet Day joyfully played with him a little.
I know Herbert makes people happy, but who knew pajamas might be comparable?
[/note/people] permanent link and comments
Tue, 04 Mar 2008
Reasons for doing things
<asheesh> It goes something like, "Because we're good human beings." <venkatesh> okay. i don't agree with that, particularly
[/note/people] permanent link and comments
Mon, 03 Mar 2008
Interactive ext3 performance
In 2001, drobbins published an article on IBM DeveloperWorks remarking that the data=journal mount option improved interactive performance on one test from ca. 70 seconds to 7 seconds.
Even today, the openSUSE wiki echoes this advice. I wonder if it still holds.
[/note/sysop] permanent link and comments
The 2000-Year-Old Computer (and Other Achievements of Ancient Science)
I went to Ask A Scientist on February 26, and heard an interesting pair of presentations by Richard Carrier at Columbia. The topic was the various achievements of ancient science.
I wrote some notes on the back of my receipt. Direct quotes from him are between quotation marks.
- He likes the word "kooky".
- "chunk of junk"
- Archimedes' Codex is an exemplar of science being overwritten with hymns in the middle ages.
- On Ptolemy's system of epicycles: "The model worked really well. That's why they were so seduced by it."
- When asked about politics of science: "I can't off the top of my head think of an interesting story." (Note that he did, in fact, come up with one.)
- He pronounces "dissection" as if it were "disection."
I also wrote this down, purely my own creation:
- "Amazing what middle schoolers know that the Ancients did not."
[/note/ask a scientist] permanent link and comments
Fri, 29 Feb 2008
Doable
Good poetry? No. But bad poetry, idiotic poetry, I think that might be doable.
[/scribble] permanent link and comments
Mon, 25 Feb 2008
Next generation
[/scribble] permanent link and comments
Sat, 23 Feb 2008
Artificial Light
This is the first song on the first album of theirs I ever heard.
I discovered Rainer Maria through eMusic.com. Back in 2000 or 2001, I was upset that it seemed the only ways to enjoy digital music either involved breaking copyright law (Napster and friends) or handing lots of money to an evil set of corporations (buying new CDs). I heard of eMusic through They Might Be Giants; they put all their music on this "all you can eat" music subscription service. "Fine," I said to myself, "but is there any other music worth staying on this?"
I found the albums A Better Version of Me by Rainer Maria and The Process of Belief by Bad Religion. With those two albums, I thought to myself, I can find a home for myself in the music on this website.
So this is the first song on that 2001 Rainer Maria album. I read a review while listening, and it pointed out the band's intelligence: "No one defies artificial light," the song begins.
I'll cut all your wires
I never cared
Cut all your wires
What can be there? It's dead.
I used to hear, "What can be there instead?" While the review I read praised the band for using the word "anathema" in an opening song, the review failed to mention that they don't use it right! It should be, "Why is this technology anathema to me?" Of course, they compromise with history in performance and sing it that way. (-:
Gosh, writing substance is harder than I thought. Anyway, I like this song because it's about resistance; not in a violent way, but in the self-reflective way of, "What if I stop doing things the way everyone else does?" After all, if only she could get away from it for a while, she "could always breathe [it] back in."
You don't have to be the same as everyone else. You're free to re-imagine the world, and if you can limit your interaction with the world to those parts you agree with, then try doing that. You can always breathe back in.
You can listen to the song if you have it, and you can read the lyrics on the Rainer Maria website.
P.S. The blog doesn't have comments yet. I know, I know; I'm working on it.
UPDATE: Here's a link to the song.
[/rmad] permanent link and comments
Nothing
Whew. It's too late for an entry today.
[/rmad] permanent link and comments
Broken Radio
This is the third track on 1999's Look Now, Look Again, the same album as we glimpsed yesterday. This is another favorite from the album. As always, read the lyrics or listen to the song.
This song is light on words. It begins instrumentally and repeats, "Traffic lights turning yellow." (I used to hear "dim and yellow.") We learn a little bit more, "A kiss and a slap on the roof." As it repeats, the listener wonders, "What is this about, and why does she care?"
It turns out the the external action of the traffic light reminds her of the feelings of a personal action. Such reminders are better when you're in a different context than when they happened. This is perhaps the best type: She interrupts a repetition to tell us that she taught it to someone.
Internal repetition for analogy is typical Rainer Maria, and I'm a sucker for it. Here it's about "the last time." (The harmony, not just the phrase, repeats.) That someone is, of course, an ex. Kyle and Caithlin harmonize from "winks out" until the end of the verse. Interestingly, she seems to always hold the note a fraction longer than he does. Maybe that's because she's "lead vocals," or maybe it's because she's the one with the (ever so slightly) greater emotional burden at the end of this relationship.
Kyle drops out and quiets the guitar to let her gush:
And I'm certain, if I drive into those trees,
It'll make less of a mess
then you've made of me.
To deliver words like this convincingly, she takes a breath to switch from her frustrated crescendo to a meek near-whisper for the last line.
The words are over before two minutes are up, and for voices we're left with Kyle and Caithlin harmonizing on "Ooh". This is actually some of Kyle's smoother singing (look at the album called Rainer Maria for other styles of Kyle, including raw screams). The "Oohs" are structured in groups of four. The last in each group is backed by a final-feeling chord, but Kyle and Caithlin vary their harmonies for the others. Maybe she's thinking of the ways things could have been different and how they'd still end the same. The last of these final-feeling chords pushes through the last of these "Oohs," and we're left with a few seconds of silence to think before the next song starts.
What is the "broken radio" that they're talking over? It could be some sort of literal bad communication system (e.g., a distorted cell phone), but to me it seems the two people are sitting right next to each other. As she drives, they try to find words for how feelings changed; as she fails to find words, she understands how hurt she is.
What do you do when you share something like this with someone but then break up? The outside world now gets to poke at the raw wound. Do you focus on making the memory a happy one of how things were or instead on what things could have been? Imagine if there's a decision you made before the break-up about a way to live your life that you now have to recontextualize; before, you could justify in terms of "both of you," but what if it doesn't stand up to justification in terms of just "self"?
This song isn't interested in answering questions like this, just reminding us of how difficult they can be. And as one of the classically sad Rainer Maria songs about failed relationships, it lays no blame.
[/rmad] permanent link and comments
"Catastrophe" and "Burn"
Time is running out, so tonight's episode will be a double feature. Rainer Maria's newest (2006) album is called Catastrophe Keeps Us Together. These two songs are "Catastrophe" (read the lyrics and download the song) and "Burn" (read the lyrics and download the song).
These were the two songs they released as previews in the year or so before they actually released the album. "burn-96kbps.mp3" ("First Malcolm mixes") was on their website as a preview for a long time, and "Catastrophe" (the album version) was on their website as a preview too. It's also the song they made the music video for the album out of. So I think Rainer Maria considers them flagship songs on the album. They're tracks 1 and 3 respectively.
Catastrophe
"Catastrophe keeps us together," begins and repeats this song. It's also the name of the album. This is the first time that Rainer Maria named an album after a song on it. R.E.M.'s most recent album is the first time they did that, too. I hate to be harsh, but I do think both are the weakest shows so far from both artists.
To me, the song is musically strong but lyrically weak. It's vaguely political, asking:
Do you think we could go on forever
when the architects of the war
are handing out the swords?
But I don't really know what that means. It's as if that is mentioned to explain why "we", "the architects of the world," are "taking it all apart." I can't get a solid grasp on who "we" are. Catastrophe could keep us together if we're going to meet up in the afterlife (c.f., "I'm Gonna DJ at the End of the World" by R.E.M.), or if we're meeting up in this life to fight against those who created the catastrohpe. But there's a sense of leaving the world in "taking it all apart." Not to mention the varied imagery of how we are to find each other "at the end" (x3) of the world.
I've said before I've loved internal rhyme or repeated rhythms in Rainer Maria's sung lyrics. Sadly, this song doesn't get to pluck that string in my heart; the repetition of phrases like "I've got a plan" are easier than intelligent rhythmic tricks of older songs.
Since Chris poointed out that I was focusing on the lyrics, I've been trying to make some notes about the music too. All I'll say is that I really do like the music in "Catastrophe," and the sharpness of the repetitions of "at the end" and "how will you look" contribute to its validity as a head-bopper.
Burn
The "original" (read: early cut) "burn-96kbps.mp3" that I heard for a year before hearing the album version is quite a bit shorter. Recently I commended Rainer Maria on being able to stop songs before they drag on, and I'm sorry to see that they didn't use that ability here. "Burn" is four and a quarter minutes, but nearly the last full minute is repetition. They sing it that long in concert, too. Curiously, the "First Malcolm mixes" version I have is only 3:25, nearly eliminating that last whole minute. Curiouserly, the next song on the album is "Bottle", which makes its mark in 2 minutes, 26 seconds, and is no weaker for its short length.
Love starts out as as tyrannical fire led by Caithlin in this song, but in a later verse it is slightly softened to a sorcery. "Believing in her" is tantamount to loving her, but she -- did what, exactly? "Didn't know any better" supports the view that she could have requited the love but didn't see it in time. But "I let you down" implies that she could have acted differently.
I should look into this further, but I get the feeling that the use of simile ("is like a tyranny") and less-than-certain metaphor ("some kind of sorcery") is a much weaker literary style for this band than direct comparison and metaphor.
I really wish that the song's lyrics elaborated on the burning or the ways she let this poor person down. I hope that sometime during this blog, I can make a graph showing this song (and perhaps the album?) as a statistical outlier in how repetitive it is. I admit to loving some Rainer Maria songs with obscure but tragic lyrics, but here there's not enough hints dropped for me to feel as much empathy as before.
As with many Rainer Maria songs, I've built my own meaning. In a comparison to "Hell and High Water," I consider the chance that my variously daily failures are "let[ting] me down," and with too many of them I'll feel helpless and watch myself burn.
More to come
Yesterday I wrote, "Maybe I'm just a kid who wants easy-to-listen-to pop" out of Rainer Maria. Now you hopefully see that's not actually true. (-: You'll hopefully get the sense that while I'm not in love with this album, I'm still happy to have it. Look for more discussion of this album before this blog is over.
[/rmad] permanent link and comments
The Awful Truth of Loving
This song is right at the middle of 2003's Long Knives Drawn. With it, this blog moves forward into the twenty-first century. We'll see how long that lasts. You can listen to the song. If you can't follow that link, just go to eMusic.com and sign up for their free trial.
The official lyrics are
missing the words in bold and have instead the words in strikeout:
I want it to be sweet, so you won't(don't)disappoint me.
The official lyrics give a message of strength, but that's not the real feeling of the song. Take these questions:
Should I be with you?
Should I forget about me?
The first could be good, but the second one is a terrible idea. It's self-effacing. If "all the new thinking" (a reference to self-help?) "is about individuality," then to counter that you can forget about yourself. But I think that's the wrong approach; for thinking about loving, the opposite of "individuality" is thinking of a couple as two people together. I'm sure a couple of people reading this blog can attest to how doomed a manner of thinking that is.
At the end, in the third repeat of the reprise, I swear I hear this slipped in:
And all that you're thinking
is about individuality.
I like the metaphor of peaches bruised by falling. (So might Christian fundamentalists, I suppose.) It's appropriate for her feelings of powerlessness: she can see the beautiful imagined relationship, but it's never that perfect by the time she gets into it. I also like the internal rhyme, "And by the time / you bide your time."
One of the things that makes the song so great for me is these lines toward the end:
and when the stakes are high
I'm careless with the dice
The singer seems desperate, "pushing [her] luck all the time," but when I sing these lines to myself, I feel empowered. Choosing to be careless with the dice makes me feel like the things that worry me aren't so important, and being able to feel lighter about things helps me worry less and do more. It's also a great line to harmonize against. (-:
[/rmad] permanent link and comments
Welcome to Rainer Maria A Day!
I'm going to the last Rainer Maria concert. If you didn't know they're breaking up, you should read about that. Obviously, you can buy tickets for the show I'm going to.
If you don't know who they are, that's what this blog is for. Sure, I could tell you about the origin of their name (a poet, Rainer Maria Rilke), or how they met (they got together in Madison, Wisconsin, at college of course), or how much their music means to me (a lot). But there's no time for that; their last show as a band is December 17, 2006.
Instead, this blog is about Rainer Maria A Day ("RMAD"). Every day before their last show, I'll pick one of their songs and write about it. I'd love to get feedback from fans and others as this goes on.
[/rmad] permanent link and comments
Ears Ring
Ears Ring is the first song on Ears Ring EP or the third track on Long Knives Drawn, take your pick. You can, as always, listen to the song and read the lyrics.
Give it a good listen.
Compare it to "Catastrophe." "Catastrophe" plods along; while being the suggested song (indeed, the single) from the album, it starts slow and explains somehow sweetly but intensely, "I've got a plan." I could never feel attached to the song; it feels like there's no real conflict. Instead, "Ears Ring" is about an urgency of a sense of confusion.
Compare it to "Burn." "Ears Ring" knows how to grow, and it knows how to end. The song is short on lyrics, but the way Caithlin stretches the words between breaths and Kyle's fervor let her reveal a scene slowly, letting us imagine feelings we probably already know with enough time to really feel them. The urgency allows it to repeat itself without feeling canned, and the sharp reminders of "love her" at the end jab you only a handful of times before ceasing.
On its own, the song is not just energetic, it's forceful. "Have faith," we're urged at the start. (Who can resist listening for those words when you need something uplifting?) Who is the blue lady? But you hear Caithlin breathe - or with this much music behind her, maybe she's gasping for air. Her performance and Kyle's determined strumming (not to forget William's rhythm)
After a few verses of the urgency, the song drops to half time to plead, "You already love her." (Who can resist listening for these words when you need a push toward a girl?) But how does that intertwine with the stinging arms, the ringing ears of failure?
If there's a vision of a poppy Rainer Maria, even one where reptition is as much a part of life as it is on "Catastrophe" or "Burn," this is the exemplar of how that vision can succeed.
[/rmad] permanent link and comments
I'm melting!
I love this song. "I'm melting!" is the last song on 1999's Look Now Look Again. You can read the lyrics or download the song. Turn the volume up when you listen to it.
(Normally I'd link to the official lyrics, but for some reason they're entirely missing.)
Older Rainer Maria songs sometimes, as on "Rise" (the first track on this album), have the vocals cover the full range from "timid" to "soft". Instead, this song starts with a bang and keeps it up; the drum hit before the guitar starts makes me think of someone taking a deep breath before loudly making known all the things she had been holding back from saying. I can see her chatting politely with some boy who thinks some other girl is prettier (*) when her firey eyes open suddenly to let him know that she's been cheated out of a conversation anyone could care about.
In a show of personal strength rarely seen (and therefore deeply appreciated) in Rainer Maria, she sings verse and verse feeling dramatically more involved than this loser.
I'm dying from only
listening to you,
and though I smile,
it's just because I want to like you.
The feigned happiness of greeting was stretched so long she had to snap and write this song.
It's not just "more involved" that she feels; she's putting in effort in the conversation and getting nothing out of it. These lyric captions don't capture the force in her voice. Listen to "only, only" as she sings it. Listen to how it parallels "over, over[whelming]" and "of, of [listening to you]". After either stuttering or emphatically repeating these, she screams, "Though I'm quiet, I'll find my voice tonight." Whether that means actually telling it to this guy or finding someone else she actually enjoys talking to we don't know.
The activity (would you describe it as scattered, and then collected, in two or three measure blocks?) on the guitar and drums throughout the first part of the song is tremendously energizing. You hear an echo of the style in the "Take me out... I'll melt" section, but it's almost as if the energy from the vitriol of the first half has healed; she has changed her message from screaming in pent-up agony-turned-rage to a self-assured "Yes, I'm like this."
I love the song's structure. The similarity between "overwhelming you with lies" and "only listening to you" is hammered home in the stylistic similarities I mentioned earlier. It's easy to lose the words in the music and the rhythm of her vowel repetition. (It actually took me quite a few years to get the lyrics down in the right order.)
"I can be so cold sometimes" leads to a great crescendo which quiets down to a whisper from the guitar. It grows, and grows, and she declares, "Take me out, and I'll melt."
What does it mean to melt here? The sentence is almost a threat; "take me out" to meet people and I'll put up a facade of trying to like them until I lash out at them? For me, the song can be a reminder of how, despite any naysayers, you really are as exciting a person as you once felt. You don't need any justification, and if they're not appreciating you, you can just drop them. It does serve as a terrible song to think about when meeting people at a party, however.
Even as the song ends on this more mellow note, which I summarized above as, "Yes, I'm like this," the guitar is unfailing in maintaining its pitch and fervor as it ends the album. By no means is such self-empowering energy indicative of the album; as one of Rainer Maria's best albums, it covers a mix of deeply recognizable feelings. With the ability to look back over their career since then, the solo female voice on this song foreshadows songs like "Ears Ring" from 2003 and most of their new album, Catastrophe Keeps Us Together. Contrast that to Kyle's contributions to the track before it, "Centrifuge." Also, contrast this last song on an album to "Hell and High Water" on 2001's A Better Version of Me.
Other favorite songs of mine by Rainer Maria leave me introspective or pensive. Many Rainer Maria lines I love depict the singer holding the broken pieces of something she loves in her hands and wonder if it can be put back together. Not this one; this is a trip of well-justified self-importance. I really hope they play it on Sunday! (And I hope they feel energetic and happy enough to pull off playing it.)
(P.S. Yes, I know, this post is a little late. Sorry about that.)
(*. As a matter of record, Caithlin has no shortage of prettiness.)
[/rmad] permanent link and comments
Rain Yr Hand
This song appears on Rainer Maria's eponymous E.P. ("Rainer Maria") from 1997. You can read the lyrics or download the song. As always, I urge you to do both.
For what it's worth, R.E.M. made fun of this term "eponymous" by naming a collection of theirs literally, Eponymous.
I'm going to take a step away from formula for today's entry because my life has been so busy with schoolwork at the end of the semester and I'm doing this blog as much for me as for any of you readers (-:. It will be interesting when work has real time boundaries (9 to 5, or more like 10 to 6) rather than school's ability to leak into my whole day and pervade my waking and sleeping moments. These blog entries are just getting longer, but that's fine with me. (-:
This song isn't one of my favorites, but for this Rainer Maria A Day it's crucial to revisit some of Rainer Maria's earlier catalog. Rainer Maria is widely-cited as beginning when the two singers met at a poetry workshop while in college, and this E.P. from 9 years ago is the earliest work I have of theirs. Maybe I'm just a kid who wants easy-to-listen-to pop rather than the screaming and distortion and dissonance of their early work. Songs like this are difficult to explain to parents or friends, so maybe I just avoided them so I could more easily defend my love for Rainer Maria. Rainer Maria was something of a secret love of mine, and that definitely contributed to my tenderness for their music.
Even with all the distortion, songs on this E.P. like "Made in Secret" and our main topic, "Rain Yr Hand," show the versatility of the band. Listen to how the end of "Made in Secret" has a totally different feel, a softness appropriate for the closing line, "This is a secret I haven't told to anyone." "Portland" finishes quietly, too; this young and proud, Rainer Maria doesn't feel forced to fill the space with music. "Rain Yr Hand", too, opens gentle.
The lyrics to this song (as with most of the album) are hard to understand, much harder than in their 1999-and-after work. (Recall that the 1999 album A Better Version of Me was my introduction to Rainer Maria.) Here, they're either screaming, whispering, or mumbling, it seems. I would say Rainer Maria is very unlikely to play anything from this album at a show. Listen to how this song uses sharp twists on the guitar (unless that really is Caithlin screaming...?) at the end of instrumental interludes to let the style change between verses. When your most recent work has packed-with-sound songs like "Catastrophe" and songs with poppy crescendos and tempo shifts like "Burn," I don't think the new audience would be expecting any of this. And maybe the band members themselves feel they've moved on to more exciting pastures, too. When you consider richness of sound from Caithlin and the music from Kyle's guitar in more recent work, it's as if they learned to sing and play respectively, after all. But I appreciate that in this album, half the songs are under three minutes, and they stop not abruptly but because simply because the songs succeeded at imparting a feeling.
This summer, while an intern at Creative Commons, I missed out on more than a few events because I wasn't 21 (yet; I now am). "All-ages shows" indeed.
The words aren't vague; they set a scene where we understand the feeling being communicated. The quiet introduction is appropriate for talking about deep, easily-mockable processes like identity formation. To quote a Witness Theatre play I saw recently (that I recently quoted when I felt I wasn't being taken seriously enough), "I'm being vulnerable!". You might would wonder about the tree fallen across the highway, but Rainer Maria songs are more about sharing a feeling as they are about inspiring thought. They've never been about inspiring action. Maybe Bad Religion's capacity at the latter is what made the two of them such a powerful combination when I first discovered them.
As I alluded to yesterday, you get to hear Kyle in his most singing-y mode around 2:30, and you can hear both him and Caithlin near-screaming at different parts. So much of what I read of the band watches Kyle's voice fade away as the band becomes more polished. In 1997, they don't mind distorting the final chord.
[/rmad] permanent link and comments
CT Catholic
Today is the day of the last Rainer Maria show. You should listen to CT Catholic and read the lyrics.
I like the way the "not tonight" chorus takes a full repetition to expose the phrase, "take you for granted," splitting it across two verses. Does CT mean Connecticut? And why is this song called "CT Catholic" when it doesn't seem to mention either "CT" or "Catholic"?
I was thinking of an ending
we were barely even friends
For some of you reading this, you hardly knew Rainer Maria before two weeks ago. As for me, phrase cited above makes me think of the pressure of meeting new friends, especially datable ones.
I hope that the members of Rainer Maria enjoyed their existence as a unitary entity as much as us fans did. I hope they don't feel the way this song opens:
maybe now
maybe now
we can lay our
weariness down
I like the carefree attitude of "plans that didn't mean anything" and the positive outlook of not needing any words.
I could scream the following lines into a dark room, and hopefully I'll get a chance to later tonight.
not tonight
not ever
again
will I take you
not tonight
not ever
again
for granted
This is the end of the tour. Goodbye, Rainer Maria.
[/rmad] permanent link and comments
Hell and High Water
"Hell and High Water" is one of my favorite Rainer Maria songs. It, too, is on A Better Version of Me (2001). In fact, for a while, I thought it was called "A Better Version of Me". You can read the lyrics on the Rainer Maria website and, if I've given you the password, listen to the song.
I know I should just drop everything and let her sing
She's a better version of me
I used to hear, "and let her think she's a better version of me."
The song is about a girl "who'll pick up where I leave off." Is the girl in the song imagined or real? Is the singer's love being stolen by a girl "devising a better mouth just to kiss you"? Instead, maybe the singer is just trapped in her feelings of inadequacy. The girl in seems too perfect to be real; how could she sort through the singer's memories? Could she really have "never forgotten a name or a punchline"? She's at once "picking her fights like she knows how to win them" and would be "brave when I run off"; she's an unstoppable force in her life. Wouldn't that be nice to be?
I don't understand the line about speeders killing you on their tiny street; maybe it's a metaphor for how easily people rushing through life can feel like they're running you over. In that vein, you can imagine businessmen in suits who "know what they want" nearly running over a thoughtful pedestrian.
Another question: In the quoted two lines above, is "She's a better version of me" what the girl is singing? Or, instead, is watching the other girl sing enough to make the singer resigned to her inadequacy? I always liked the pun, "I'm lost but she's found"; it's the same kind of pun.
The message of the song is the question, Do I resign myself to desperation and dream of a better version of myself?
There's not really an answer, but after a long song of self-doubt, the singer tries to reassure herself:
I tell myself, You're not a fool.
I like this song because I can summarize hope to myself by singing, "You're not a fool." Sometimes I even believe it.
[/rmad] permanent link and comments
Sun, 17 Feb 2008
Saving from the Archive
If you have lost your website, try recovering it using Warrick.
It supports using Yahoo!, MSN Live search, Archive.org's Wayback Machine, and the Google Cache as data sources.
[/scribble] permanent link and comments
Tue, 12 Feb 2008
WARNING: The following packages cannot be authenticated!
Sometimes apt will make the above complaint even though the mirrors are fine and so is your local SecureApt setup. Just do this:
apt-get update -o Acquire::http::No-Cache=True
[/scribble] permanent link and comments
Mon, 04 Feb 2008
Sunflower restaurant
[/scribble/food] permanent link and comments
Fri, 25 Jan 2008
I Think John Spinach
If you know why the title of this post is funny, you too may like "Less talk, more spinach.".
[/scribble] permanent link and comments
Wed, 23 Jan 2008
Tell them lies
Asks Laurence Harris, "What kind of company charges people $1500 to sit them in a room and tell them lies?"
Apple.
[/scribble/companies] permanent link and comments
Mon, 14 Jan 2008
Unix permissions
"Unix permissions are weird sometimes, like a $100 television tube that protects a 50 cent fuse by blowing first."
-- Jerry Yeager.
[/scribble/code] permanent link and comments
Sat, 12 Jan 2008
Ronald patch
I saw this on the Dovecot mailing list:
Mr. McDonald, I haven't investigated too deeply but I presume your patch requires a bit of modification to apply to roundcubemail-0.1-rc2.
BTW, my kids just LOVE your burgers!
B. Bodger
[/scribble/code] permanent link and comments
Fri, 11 Jan 2008
GUIs with PyGTK and Glade
Today I had to write a simple GUI program on a deadline, so I thought I would try Glade and PyGTK.
Wow, that was easy. I read through a straightforward LinuxJournal article and now I feel fairly comfortable with this for single-window applications. The thing I'm not really sure of is how to change the window the program displays, but maybe one day I will. (-:
Update: There's a GLADE to Python code generator called Kefir that looks nice too.
[/note/software] permanent link and comments
Need a drink
As I got on the BART to ride back home from Oakland today, I felt something that I'd heard about but had never felt before:
I need a drink.
I thought for another minute, and dreamed of a tall glass of some tasty cider. I felt extremely worn, and had just had what felt like a failed conversation after a meeting that, itself, left me feeling tired.
I've chosen to drink [alcoholic drinks] before, but never felt like using drinking as a tool to fix something that felt wrong. I've chosen to drink when I've felt tired, but those times (that time?) I didn't also feel unhappy at the time - just tired.
I remembered that only a couple of years ago the fact that drinking would change my mood was a scary thought, and in a moment realized, "This feeling right now now - this is what I was afraid of." I didn't feel afraid of it or even apprehensive about it while it was happening, though. "I guess I'll find a nice cider on the way home," I decided, my inner teenage voice notwithstanding.
Brain-fried, I sat through a BART ride that started with me going the wrong way. I got to my destination station, and there I found a water fountain. After only a few sips of water, I suddenly felt much less tired. Certainly enough that I no longer felt the "need" to drink anymore.
I didn't quite feel happy, though. But then I passed a cute girl on the walk home from BART; and she passed me, joined her two friends, and said to one, "How do you make that sound like a spray paint can?"
Then I heard what felt like the most joyfully whimsical sound in the world. I'm chuckling now thinking of it, and I laughed then. The girl in turn was pleased, and I heard her say as much.
After all that, I looked up at the sky and said, Thanks.
[/note/drugs] permanent link and comments
Thu, 10 Jan 2008
Matt explains being a grownup
My roommate Matt:
There's two things that, for me, define being a grown-up. One is going to funerals of your peers, and the other is polishing shoes. I prefer shoe polishing.
[/note/quote] permanent link and comments
Tue, 08 Jan 2008
Shoes and socks
I exclaimed to Lisa when I signed my contract to start working, "Someone's going to hand me thousands of votes every month!"
I try to treat these dollars with respect. So far, I haven't given any of them to the MPAA as part of watching movies in theaters or buying movies. (I haven't participated in free advertising for them either by watching their movies for free without their permission.) I've bought music from eMusic.com or directly from the artist in the case of Girlyman.
It's easy to watch when I hand dollars to the copyright industry. But what to do about socks and shoes? Where can I go to buy shoes that weren't made in sweatshops?
Enter the Blackspot sneaker brand. It's by the people from Adbusters.
They tell me the shoes are made in a union shop in Portugal from organic hemp. I don't (yet?) feel like I need everything I own to be made of hemp, but the organic bit is a nice touch. I can buy them practically next door, at De La Sole Footwear in the Castro.
More on socks another time.
P.S. Thanks Jim at Irregular Times for the link (via Cthuugle).
[/mmm] permanent link and comments
Passwordless alpine with Dovecot
Do you run a server that people SSH into for email?
Do you like to offer them (al)pine?
Do you use the Dovecot IMAP server?
Do you think your users would like to enjoy IMAP benefits from the comfort of alpine without entering their password?
I do! Here's how: Add this to /etc/pine.conf:
rsh-command=/usr/local/bin/alpine-rimapd %s %s %s %s rsh-path=/bin/sh
And store this in /usr/local/alpine-rimapd:
#!/bin/sh exec /usr/sbin/dovecot --exec-mail imap
chmod +x that sucker and you're off to the races!
[/note/sysop] permanent link and comments
Thu, 03 Jan 2008
emostat
Bernardo Innocenti explains One lol per child:
>> ps -emostat,wchan:22,pid,tid,pcpu,comm,args > > I did not know about this! :) Me neither... "emostat", lol!
[/scribble/olpc] permanent link and comments
Tue, 01 Jan 2008
Welcome to the new year
What went well in 2007
- I have a job working to advance a cause I believe in.
- I have a fairly nice server being treated to love and pampering.
- I'm living in a nice slice of a house with an awesome roommate.
- I've settled on some asheesh.org tech that I seem to be interested in actually using.
- Since taking over the tech for Students for Free Culture, I've been fairly responsible and reliable. (Certainly when compared to our previous experiences.)
- I (still) have good friends.
- I seem to have adequate social skills.
- I've been consistently uploading packages (through a sponsor) to the Debian archive, and I now have Debian Maintainer status.
What went poorly
- I still am not using a phone running only Free Software for everyday use.
- The asheesh.org tech is quite barebones - no comments, no photos, no artificially-creative automatic free-association.
- I'm still only "nearly" using full-text search on IMAP.
- I lost freaking gobs of data in a massive disk crash.
- I still don't have quick automatic easy access to all the songs I own.
- My computers still don't do everything I want them to in the blink of an eye without me even asking, and all my computers aren't connected to each other with wireless gigabit links.
- I'm still afraid of voicemail and of calling some people.
- My bedroom has been a disaster zone.
What I didn't guess would happen
- Gaurav seems to be using Ubuntu and enjoying Compiz Fusion.
- Apple launched DRM-free music on their iTunes store.
- I ran into #joiitoers at least twice by accident.
- I went to Burning Man, and learned that I think I prefer the Mystery Hunt.
- I sat on a terrace in Croatia and drank Absynthe (I know, the boring legal-in-Germany kind).
- I went to Tokyo to present about the Semantic Web (and Neurocommons) to a room full of people twice my age. While in town, I struck up a conversation in French with some Swiss dudes.
- I looked at myself in a mirror on two separate occasions, and realized that getting a haircut looked really good, and also that torn sneakers look like someone sticking his tongue out.
I wonder what 2008 will be like.
