Archive for October, 2008
I believe it is possible to move about the world in a thin, spherical film of sunlight. The way to do this is by becoming a radioactively-glowing source of honesty and kindness. –Diana Kimball
Have I mentioned yet that friends are wonderful? (Though I have always thought of it as trying to be a sunbeam, or this surge of sparking, bouncing, scattering brilliance and light – but Diana and I are two very different people. I would very much like to get to know her more.)
New recipe: saute thinly sliced potatoes in butter, slice in leftover cilantro, pour broth over, boil. At the same time, steam up some cauliflower (and an odd tomato, cubed) tossed in a currylike mix of spices that smell good to you (turmeric, cumin, coriander, cinnamon, nutmeg, cayenne pepper). When everything is cooked and tender, inhale steam from both wafting out to you from over the stove and realize that they smell great together. Proceed to put 2/3 of both pots into a blender and puree; recombine everything in soup pot, then sit and sip curried potato-cauliflower soup, enjoying the fresh burst of taste from the cilantro.
Cumin and paprika, combined, make a reasonable stand-in for asuete/achuete/annato, at least when making vegan kare-kare. Mmm, vegan Filipino food. No longer paradoxical, because we’ve had it at pika (also featured: sinigang walang-bangus instead of sa bangus – soft tofu subbing in for fish).*
*I apologize in advance for my mangling of Tagalog, past and future, and wherever applicable. If it is any comfort, I butcher my native language far worse.
I also think that, at least right now, I should not live alone. I need people to live with – relatively stable people, or at least a relatively stable person. Not to take care of me, but for me to gauge my caring-for-myself against. “Oh, Chris went to sleep. Maybe I should sleep. Oh, Henry went to lunch. Maybe I should get food.” Else I tend to go “WEEEEEeeeeeeEEEEEohwaitcrud*passout*.” This also seems to work the other way – if I’m with somebody unstable, I become stable in contrast so that I can take care of them as needed – but data on this latter bit is rarer, and I am far less happy in that position.
We have a watermelon in our fridge. What am I going to do with that? I need to sleep…
Wednesday, October 15th, 2008 | Uncategorized | 1 Comment »
When I first pasted the transcript of C. Scott’s talk, it was ugly and unwrapped and splurted off the right edge of my screen. So I decided to learn more regular expressions. This is what happened.
Attempt #1: Mrah. why does cat foo.txt | sed ’s/(.{1,80}( +|$\n?)|(.{1,80})/\1\3\n/g’ not work? \3 is not an invalid reference, you silly thing.
D’oh moment #1: Oh. escaping { and ( with \ is needed with sed. now…
Attempt #2: why doesn’t cat foo.txt | sed ’s/\(.\{1,80\}\)\( +|$\n?\)|\(.\{1,80\}\)/\1\3\n/g’ work?
Attempt #3 (gave up): Ok, simplifying… cat foo.txt | sed ’s/\(.\{1,80\}\)/\1\n/g’ will work, but not split across word boundaries when possible. Good enough for me (for now).
<br />#!/bin/sh<br /><br />if [ $# -ne 1 ]; then<br /> echo Usage: wrap file.txt<br /> exit 127<br />fi<br /><br />cat $1 | sed 's/\(.\{1,80\}\)/\1\n/g'<br />exit 0<br />
Translation from bahasa geek, for parents and other noncoders: I was trying to come up with a way to quickly wrap long lines of text (the equivalent of hitting Enter to put a newline in the middle of long sentences so that they’ll fit onto a page).
Sed is a stream editor that I used to do this, and I wrote a shell script (#!/bin/sh) that fed (cat) out the file I gave the script ($1 – which is a variable that I’d replace with the file I wanted to wrap, when the script was actually run). This replaces (s/) instances of an 80-character group, \(.\{1,80\}\) – the escaped parentheses, \( and \), say this is a group of characters, the period says “any non-whitespace character,” and the “1, 80″ inside the escaped brackets says “up to 80 of them all together.”
It replaces it with that same 80-character group (using \1, which is a backreference – basically, “the first group that you talked about here,” which is what we were doing with the parentheses – and then a newline, \n, which is like the Enter key. Basically, this script has the same effect as me going through a text document the following way:
- hit the right arrow key 80 times
- hit Enter
- repeat steps 1 and 2 until you reach the end of the document
It’s a dumb script because it’ll break in the middle of words but I couldn’t figure out how to make it pay attention to word boundaries. I tried – see above attempts – but gave up because I didn’t have time to chase the answer down. I’m hoping that somebody reading this might be able to spot where I went wrong. Halp?
Wednesday, October 15th, 2008 | Uncategorized | 6 Comments »
Formal methods seemed like a good thing to learn about over breakfast today. As an unintended (but cheerful) side-effect, I rediscovered an extensive discussion on one of my favorite paradoxes. One quoting of Russell’s paradox is that of the town where nobody can shave their own beards, they’ve got to be shaved by the barber – and now who shaves the barber’s beard? The smart-aleck answer is nobody: the barber is a woman.
And this illustrates my worry as well as one of my fascinations with formal methods (or indeed, any other focused endeavor striving for some type of completeness). Instead of working through the system, can you sidestep or ignore it, climb in the window instead of picking the lock (or social-engineering your way to the key)? How do you deal with the knowledge that your system is side-steppable? You do formal verification of your code and it’s absolutely rock solid and then all of a sudden the power goes out or some random cosmic rays from intergalactic alien warfare (look, the point of these examples is that they’re supposed to be unexpected) flip a few crucial bits on your hard drive and now what?
In testing, there are the ideas of validation and verification – the latter being “have we made what set out to make?” and the former being “are we making the right thing?” Maybe you can know the second to some reasonable degree of certainty (or a known degree of uncertainty, at least). And it has to be enough that we have made our best effort for the first. (And the first is more important to know, but can’t be known.)
(I’m not sure where this train of thought is headed.)
Part of my job – as an engineer, as a tester, as someone who teaches and someone who supports users – is to make things known, but I’ve found that I can only describe uncertainty sometimes, not so much reduce it. That a lot of uncertainty-reduction and security is marketing, or at the most a “it’s still possible to break this, but it’s easier to break (or looks like it is easier to break) the other guy’s thing, so I’m pseudo-safe.”
I wonder if I should be more worried that I’m not all that disturbed by this. Am I just being lazy thinking that uncertainty is ok, even fun? (Shouldn’t I be working really, really hard to try to get rid of it? Unknowableness! Thou art the enemy!) And sure, sometimes I get onto these blazing, blinding paths of now I need to KNOW! and question marks splinter and scatter left and right before me… but I also like to watch them float around me, noticing all of the things that I (we, anyone) just Don’t Get.
It was nice to find out later that I’m not the only one.
You see, one thing is, I can live with doubt and uncertainty and not knowing. I think it’s much more interesting to live not knowing than to have answers which might be wrong. I have approximate answers and possible beliefs and different degrees of certainty about different things, but I’m not absolutely sure of anything and there are many things I don’t know anything about, such as whether it means anything to ask why we’re here, and what the question might mean.
I might think about it a little bit and if I can’t figure it out, then I go on to something else, but I don’t have to know an answer, I don’t feel frightened by not knowing things, by being lost in a mysterious universe without having any purpose, which is the way it really is so far as I can tell. It doesn’t frighten me.
–Richard Feynman
(I’m not sure where this train of thought ended up, either. I’m ok with that uncertainty.) (Also, my curried cauliflower is about to burn, so I must run and save it.)
Wednesday, October 15th, 2008 | Uncategorized | 1 Comment »
C. Scott Ananian gave his much-anticipated talk and demo of next-gen Journal design ideas today. Ed McNierny filmed (files still transferring), Brian Jordan recorded (mp3) (ogg), and I transcribed. If you can, please read and edit the transcript while you’re listening to the recording – just dump the text into an editor and follow along, filling in/correcting gaps I missed.
Scott posted slides up afterwards (odp) (pdf), as well as the freakin’ awesome dogfoodable code he demoed (journal2) (pinot). (Warning: code not for the faint of heart, or intended for general consumption at this point.) Video should be up soon and will be posted here when it is up.
Help cleaning up / preparing meeting/presentation notes, transcripts, and suchnot is always welcome – there are many things at 1cc we can make more transparent, and sometimes the reason for radio silence is that we simply lack the humanpower to prepare and push the notes out to the public.
For those who want more transparency: what information would you like to know, and what help can you offer in preparing/publishing it? (Note that not all information can be shared – I’m glad our root passwords are not public record.) My personal belief is that we can and should share more than what we do right now, but there is quite a ways to go before transparency-by-default becomes easier than privacy-by-default, and hence stands a chance of becoming the norm.
Edit: Scott posted slides and code! Edited links… yay Scott!
Wednesday, October 15th, 2008 | olpc | No Comments »
Happy: Piano and general musicality improving. Started some jazz stations on Pandora. Mind expanding with respect to “whoa, music can be like that?” Good stuff. Oh man.
Not happy: Headphones have flaky cord/connector. (Nikki did warn me about this – she has the same ones – and granted, the fact that I literally run around the room, spin on my drum throne, etc. while wearing them probably does not help.) They’re worth the sound and time I’m getting from them, for what I paid, but I would really, really like an upgrade. Criteria:
- must surround ears (not earbuds)
- must not leak noise (when volume is such that I can hear it, others should not be able to)
- must end in stereo 1/8″ plug
- must sound good, particularly in the bass where I can hear – I’m not an audiophile and can’t hear the high frequencies in any case, but these should not sound bad.
- must be mel-durable (cord and connectors too)
- bonus points: not cost a lot
- bonus points: fold up into a portable-ish size
- bonus points: cord that is not absurdly short
Any recommendations? I’d like to hunt for these with a friend who has good ears, since they might be able to more quickly tell (by listening to high frequency reproduction) things about sound quality that might take me a longer time with my bass-heavy mel-can’t-hear filter.
Tuesday, October 14th, 2008 | Uncategorized | 2 Comments »
Today a friend at Google gave me a brief crash course overview of their spiffy workflow system. (If there is one thing Google does well, it’s Build Systems That Ease Thinking Friction. This does not make things easy; it enables you to do things that are hard.) Some of the key parts of the system that I’ll get back to later is that (1) it’s easy to build code, and (2) it’s easy to write automated test cases for your code – all worthy goals that we should aim to improve on as well.
Another part of Google’s workflow is their code review system. The way my friend described it, there’s this constant loop of feedback and revision happening with code – imagine something going around and around in a positively improving cycle – and when it’s ripe and ready, someone with privs can pluck it from that cycle and make it a commit (as opposed to a linear “go forward… get stuck here… if it doesn’t work discard it out of the waterfall completely” system).
Theoretically, all dev teams do some form of this. Google has a toolset to make it as painless as possible, thanks to a guy named Guido. You can see Van Rossum’s presentation on the system and his slides from the talk. There’s an open source version, too. It’s not the only tool that does this, and I’m not the first one to think of it as a potential plus for the OLPC community.
It sounds like what might have happened when this was briefly mentioned last time (note that there are no follow-ups to Sayamindu’s email in the last link) was that it was a little tricky to get the prior version of Review Board working with our git repos, and it got lost in the “aieeee release!” rush because the “Talk About Patches On The Mailing List, comment inline” methodology worked Well Enough.
I worry that the latter doesn’t scale, though, and that its inability to scale keeps us from scaling (rather than the “oh, when traffic gets high enough, we’ll put in the tools to handle it” methodology I usually agree with, this may be one place we have to build to handle capacity as a prerequisite for getting that capacity). I don’t know for sure. This entire post is a lot of speculation based on talking briefly with a very small number of people.
Three questions, then:
- Why don’t we do this now? Is there some reason or some happening that I’m missing? Or is it just “because we haven’t tried it in a way that works yet” (and what are the potential hard parts about doing so)?
- Do you think this might be helpful (and how)? Even a quick yes/no vote in the comments here would help as a fast sanity check.
- Would anyone be interested in playing with this with me? I’m thinking of a 2-hour sprint next week to try to choose, set up, configure, and try out something like this. If it works, great. If it doesn’t work, we’ll publish why, we learned something, and we had fun. Comment here and I’ll email you to set up a sprint time.
(Thanks for all the public and private conversations people have sent me on these blog posts so far by the way – I’m learning a lot by posting my OLPC braindumps here, and the conversations I’ve had with people who agree, disagree, point out that I’m reinventing the wheel, flaws in my reasoning, and so on – these are a large part of what teaches me how to Do Stuff Better.)
Tuesday, October 14th, 2008 | olpc | 3 Comments »
Ahhhh. I’m very thankful for Tiana, Ben, Becky, Aasted, and Chris at dinner tonight. The break and the excellent company helped me let some things go – areas of tension that I should have just released when they came up instead of growing frustrated and hanging onto them. Sometimes i also get a posessive scarcity mentality and it makes me into a twitchy grouch – friends are really good at knocking you out of that sort of thing.
I learned to make lasagna! Grating parmesan and asiago cheese into fluffy white mounds, and melting it into thick tomato puree – holding slippery noodles in your hands and layering spinach over them – it’s soothing, working with your hands in a way that doesn’t involve a keyboard. Delicious, too. We still have homemade vegan blueberry gelato in our freezer.
I have no reason to be stressed, really. What I needed, I think, was a slow, gentle reset, and a break. I got the reset over dinner; I’m getting the break tonight. Slowly, we learn to live.
Tuesday, October 14th, 2008 | Uncategorized | No Comments »
Okay. How can we learn from this? (Ignore, if you like, who and what the campaign is for – my point is that we should learn from their tactics whether or not we agree with their cause.)
“We decided in terms of timeline that [our organizers] would not be measured by the amount of voter contacts they made in the summer—but instead by the number of volunteers that they were recruiting, training and testing. It was much more an infrastructure focus. So there would be no calls from Chicago saying, ‘Why haven’t you made more calls?!’ Instead there would be calls saying, ‘Where are your neighborhood team volunteers?’ Or, if the numbers seemed high, ‘Are they real?’ It was a whole shift in mentality that was really, really good.”
Also, see:
“Rather than say we have X leadership roles to fill, we’re creating leadership roles for as many leaders as we have. So we have people in charge of whatever they ARE. We are saying, ‘What’s your social network?’ We say, ‘OK, you’re The Balcony Coordinator—your job is to go party at Balcony [a local bar] every weekend—like you do anyways—but now wear a Barack Obama button—and bring voter reg forms.’ Or, ‘Hey, you work at Brunos—when you go out on deliveries—as long as it’s OK with your boss—ask people if they’re registered. You’re going to be our, um, pizza coordinator.’ “
Thanks to Sumana for the link!
Sunday, October 12th, 2008 | olpc | No Comments »
Fail! Publicly! Spectacularly! Get hurt in ways that you can heal from – you know more when you pick yourself up again.
This isn’t saying “hurt yourself,” because that’s pointless; this is saying that living like I do comes with a fair amount of bumps and scrapes no matter what, and that making your crash landings have a point – that you learn – is (1) the only way I really can learn, and (2) the only way I can learn fast enough to keep myself alive when taking future spills, since opportunities to fail – and fail hard – seem only to increase as time goes by, and I will not stop taking them.
Sunday, October 12th, 2008 | Uncategorized | No Comments »
After several days of fiddling with lock picks on my train rides to/from work, I look much less like I’m trying to kill something compared to my first picking attempt on Thursday. I still have some ways to go in developing a lighter touch, but for 4 days of learning, I’m pretty happy.
Note use of not-a-tension-wrench as tension wrench. I’m looking for Something Slimmer Than The Tension Wrench I Have because it makes it tough for me to get a non-rake pick in there. Also, this little hook has now become my favorite pick so far; it lets me feel what’s going on inside the lock the most. It’s pretty neat – I’ve started to be able to feel when I’m underneath a pin and can push up; my sensitivity to this is still incredibly crude, but at least it’s started.
Sunday, October 12th, 2008 | Uncategorized | No Comments »