Archive for February, 2008
Sometimes I feel like the neurons in my brain are over-sensitive and need to have their input damped so they don’t run off on hundreds of thousands of overly shiny ideas all at once.
I’ve found ways and moments and rituals to slow myself down, and I do get rest. but I can’t do so on someone else’s command. Tea is an excellent ritual (and a mighty tasty drink). So is a nice, loping jog down the street from the subway stop, through the scattered patches of sunlight that manage to creep between the cracks of NYC.
I’ve found working from a terminal - just a blank, white-on-black terminal, command line and text editor and text-based mail client - to be somewhat effective in countering my scatteredness when things get to be too much and my mind feels way too jumpy and reactive to everything. I need to do that tomorrow… just sit down with pine and write, and write, and write, and stretch my muscles out (my back, my wrists - I wonder if there’s a way I can learn yoga, and whether it would be a good idea - there is Not Enough Room in my room to do Tai Chi).
Especially scattered today because I couldn’t hit flow state in the office - Jeff and I were doing testing, but kept on getting interrupted by blocker bugs that kept us from testing more, a borked laptop (Jeff’s), a virtual Windows box that randomly threw weird redraws at us, the stack that we were testing getting rebuilt (imagine someone driving away the car you were poking around the engine block of, leaving you standing on the sidewalk with a wrench in your hand, forlorn, for a while), and - well, we got some things done, but not the ones we’d hoped, and maybe 1/3 of what we thought we would. That constantly-interrupted state of mine stayed with me tonight, apparently.
It’s faded now that I’ve written this. Sticking to linear text pouring into a single window tends to do that. (Does anybody else write so that they can smoosh their brain into a certain state of mind?)
If you read my vital ideation post, you can see that my brain was even more scattered an hour-ish ago. This post is evidence that it still is - but at least it’s scattered in larger chunks (I manage to keep my train of thought for a paragraph or two at a time).
I hope that someday I’ll be able to write another language well enough that I’ll be able to use switching into writing in that language as another way of changing my own state of mind.
Friday, February 29th, 2008 | Uncategorized | No Comments »
This post is mostly based on a discussion on the #olpc-content channel the other week, when I learned that an [[OLPC:Policy]] page was being made.
(me, speaking to the channel:) I’m concerned about the barrier-to-entry for new wiki users. Some find getting involved in the project bewildering as it is, now there’s all these more pages to read? I realize it’s not mandatory and won’t be patrolled by The Iron Arm Of The Law, but…
(A point is made that Wikipedia has policies and seems to be doing all right.)
Wikipedia does fine from the perspective of editors of Wikipedia who are already used to “the way things work.” It’s an incredibly biased sample - the folks who get through a selection process are more inclined to think that process is just fine. Think about who has a hard time getting in; think about who’s being excluded. You don’t see many paraplegics in treehouses - the kids who play in treehouses think they do fine, but that doesn’t mean the treehouses are accessible.
It’s the mindset that I think we should try hard to avoid - the “it works for me, it’s good enough” barrier that prevented all but the most hardcore geeks from using Linux when it first came out, until companies like Red Hat and Yellow Dog and Canonical (Ubuntu) made it usable to more folks.
Now I know this is a very strong reaction for pages that will be used as loose guidelines by a very small minority, but I really want the wiki to be welcoming in newcomers with open arms - not from our terms (”we need to train you in the ways of our culture”) but from theirs, from the world they’re used to.
Most folks are taking a huge step in using a wiki in the first place. Some folks are taking a big step using a computer, going online. Some people can’t touchtype, some think reading things on a screen are difficult, a lot of people are baffled by what seems to us to be simple wiki markup. “There are asterisks! it looks scary!”
It does look scary, when you’re new. Remember the first time you ever saw code? didn’t it look weird? It took me so long to get comfortable on the olpc wiki, even if I’d used other wiki systems (and mediawiki) before. Much of the style guide was made because I didn’t know what I was doing - a lot of the “DON’T DO!” things there are my mistakes. me being really lost and confused and n00b-like. “What is a template? What is transclusion? What is… a talk page? what’s that?”
So on the one hand, making something like [[OLPC:Policy]], explicitly setting these things down somewhere, that’s kind of a nice reference. But it’s not like other places haven’t written rules like these up before. And it means that for the cautious, the more timid, the more scared people trying to come in, there’s this preponderance of Stuff they feel they “have to” read so they can Learn How to Do Things Right. (Because not everyone learns by jumping into the deep end of the pool.)
(Suggestion from the channel: “So try anarchy.”)
Anarchy, with cooperative and communicative participants and a healthy dose of trust between them, works pretty well in some places. Not in all. I’ve seen it be remarkably inefficient… I prefer the term “adhocracy,” since the minor semantic difference means that organization can emerge within, but more spontaneously by anyone who thinks it’s needed, and dissolve when it’s no longer relevant.
(Another note from the channel, very paraphrased: “But this is constructivist learning.”)
“Constructivist scholars… emphasize that individuals make meanings through the interactions with each other and with the environment they live in. Knowledge is thus a product of humans and is socially and culturally constructed.” (from wikipedia, of course)
If rules are already written down when they arrive, how can new people dialogue and create them? We’re on the “bleeding edge,” as it were. we’re getting to “set” these policies, we get to build this place, that’s fantastic - for us. But we need to tear it down after we put it up, to some extent, to make sure that future “generations” get to cobble together their own thing.
Yeah, you can always comment on a wiki page, always edit it. But how many newbies are going to touch something they think of as gospel? “oh, that’s not… mine. I can’t do that.”
If “learning is an active, social process,” (also wikipedia, constructivism article) we ought to be pointing newcomers to people, not policies, mentors, not mandates. The community is what usually keeps long-termers around, anyway. (Unless they really like cataloging the episodes of the mickey mouse show for their sole edification and benefit, I guess. but those folks are… rather few and far between.) Most of us like recognition. Relationships. Feedback from others of the positive type. Not Here Are More Rules To Read.
I guess what I’m trying to say boils down to is “most people don’t think like you/we do, and instead of demanding that they learn our language, we ought to try speaking theirs first.” Maybe find out what they’re saying and why they haven’t come yet, or why they’ve started trying to.
Constraints inspire creativity - a lot - but I think it’s important to emphasize that the “walls” we place up can be knocked down, moved around, painted purple paisley.
Epilogue: Discussion ended on the note of renaming “Policies” to “Processes,” and writing them as such. I pledged (when [[OLPC:Processes]] goes up) to put in a “the first process… is to remake processes” thing of some sort. But my mind is not at rest regarding this topic, and other related ones… I’ll have to hack things out a little more.
Why does this topic poke into my consciousness so much? It’s not “accessibility,” but I haven’t found another good name for it. Eh. Must on to work.
Sunday, February 24th, 2008 | Uncategorized, olpc | 2 Comments »
Much of my time at work is spent on testing nowadays, so I’ll probably write more about this as time goes on (and more coherently than tonight’s braindump).
I learned about testing and debugging - informally, out of necessity - almost as soon as I learned there was something called “software” and that you could “program” it to do stuff. I used to loathe testing, but found it important. Then I learned about unit testing and (almost simultaneously) test-driven development and kind of enjoyed it and found it even more important. Then I was drafted for Tim’s TOPP test team and learned about session-based testing and the context-driven school and now adore testing and think it’s ridiculously important - especially manual tests that aren’t boring. Really. I spent a lunch break reading through the resources on this wiki. I’m looking for more. And I enjoy breaking things. A lot.
It’s not so much that the tests themselves are important. They are - it’s important to make sure your project functions as intended - but that excites me far less than the mental modes you have to push yourself into to be able to tell (and even then, only with greater degrees of imperfect certainty) what works and what doesn’t. Testing is a great way to learn epistemology in an applied manner; it’s a very constructionist way of getting your hands dirty and doing something “productive” while figuring out more about how your brain thinks and how you know that you know things.
The first three principles of the context-driven school are especially resonant to me, and hold true for all practices I’ve encountered so far, technical and nontechnical*.
- The value of any practice depends on its context.
- There are good practices in context, but there are no best practices.
- People, working together, are the most important part of any project’s context.
*why do I continue to split the world like this so often?
In other words, “What are you optimizing for?” The “best” option depends on the criteria you use to define “best,” and there is no “best” set of criteria for “best-ness” that does not itself have another external set of “bestness” criteria determining its ranking. (I’d like to make an oblique to Godel here, but the analogy doesn’t quite fly.) The related notion of optimization being socially constructed has tickled me pink ever since it started rattling around my brain last spring (thanks to Prof. Silbey’s sociology class).
I also greatly enjoyed this presentation on the role of emotions in finding bugs. Alas, it’s Powerpoint. And I must be off to bed so I can try to get a spot in I.House as early as possible.
It’s rather convenient to have the light switch right next to your bed.
Wednesday, February 20th, 2008 | Uncategorized | No Comments »
Our server went down last night - the one that hosted documentation for the software I was working with. So instead of sitting around and twiddling my thumbs, I wrote my app to I.House, then went home and slept. A lot.
This morning I went into the office, noticed some parts of my I.House app needed to be mailed in, and called them up and said “Hey, I’m in Manhattan, and it’s probably faster for me to walk these over to you than for me to mail them. Can I drop by after work?” They said they were reviewing applications that day. In fact, they were reviewing applications in 45 minutes. And if I could get my things over before then, they- “OH YES I CAN I’LL BE RIGHT THERE.”
Several minutes later I was scrambling out the door clutching a sheaf of documents Seb had helped me print (explaining, among other things, why my internship offer letter described me as working during “summer 2007″ in February 2008) and running half a mile to breathlessly hail (in front of a bank which wouldn’t recognize my ATM card) the first taxi I’ve ever hailed in my life. As we zipped across Manhattan, I was gawking at the sights along the way - I have not seen any part of New York at all yet aside from the route between the TOPP office and the subway, and the UNICEF office and the same, which is a side effect of the 4.5 hour daily commute. We found I.House and (after a minor heart attack over the numbers on the taxi meter) I slid into the Admissions office with my paperwork and exactly 2 minutes to spare.
I think they were amused.
In any case, I’m moving into I.House soon (not sure of the exact date, but when they asked when I wanted to move in I said “yesterday.”) Apparently they’ve decided that they like me. And I do like them. It sounds like there are all sorts of wonderful and random people - mostly international grad students - to meet there, and that I’ll learn a lot and have my mind reassembled on a regular basis… and once again be among a lot of Ridiculously Smart People My Age Who Want To Save The World (or at least change it in what’s hopefully a good way). Don’t get me wrong - I love living with my uncle. The commute is just driving me slowly insane.
The 4 days preceding this one were no less eventful. The Olin hackathon was awesome and involved a midnight trip to the matsci lab with Greg Marra and a few off-campus visitors (utterly amazed that we could go to the lab at midnight) to rip keyboards apart. I had multiple mind-blowing conversations, saw far more fellow alumni than expected (Chandra! Christie! Tesch!) and these and other things pushed my return-to-New-York time back.
Wayyyy back. From Sunday after lunch to Monday morning (Presidents Day) to Monday afternoon to Monday evening to Monday very late evening and even further down. I eventually ended up getting a ride to the T from Eric Munsing Monday after an extended conversation on wiki culture, heading to Somerville to learn how to cook Ethiopian food at Mako and Mika’s house (one of the most awesome dwellings I have ever been to), then working at 1cc with SJ on OLPC stuff (and sinking ideas through my very high-density skull) before catching the 5:40 train to South Station and then the 6:30am bus to New York (which I did sleep on).
Wednesday, February 20th, 2008 | Uncategorized | 1 Comment »
- “Learn emacs.” Or at least give it a chance. I’ve been so long with vim I’ve never actually touched other text-editing options other than notepad and more full-featured things like it (gedit, pico, notepad++, jedit…)
- Work through a Spanish textbook 4 days in a row; see how it goes. No further obligation.
- Finish a pylons app, any pylons app at all, so I’ll be able to test more intelligently around those parts of openplans.
- Get down to 0 support tickets and don’t take any new ones for a while; do documentation instead.
- Install piklab and at least order the hardware I need to program.
No all-nighters are allowed. Achievable, I think.
Monday, February 18th, 2008 | Uncategorized | No Comments »
Or at least how Neo might have felt after those downloads in the Matrix. This weekend has been a nonstop shoving of new impulses into my synapses - it’s been so long since I could speak so fluently, so swiftly, and so quickly… know. I’ve been in perpetual flow-mode since late on Friday night when Greg and Andy saved me from shivering away at South Station. So many different people, conversations, lack of sleep, debates in cars, over food, late at night on the verge of passing out, hallway convos that turned into things far longer.
It’s too much input to process or even to express, so I’ve been trying to write snatches of it down and store them into trigger associations in my mind (”when you see this thing at work, remember to do X”) so they can come back later, when I have relax-time. I’m a global learner (or at least I’ve found that a useful framework for understanding my brain so far), which means I dump lots of information in! and then process it… subconsciously, filtering through the background, to emerge as nuclear explosions of coherence hours or weeks or even years later. We’ll see what this one does.
I have missed this. There are different levels of being able to speak the language of the people you’re with, and I’ve managed to find ways to get closer to achieving grokness with a wider range of people especially in the past 12 months - and it’s a challenge well worth tackling - but there’s just something nice about being able to slip for a tiny time into a community of people on your wavelength, and come out again knowing you’re not the only one that does X in the world. You know that’s true intellectually beforehand, but until you get this bidirectional bandwidth dump of glory to remind you (every so often), it feels a bit like some far-off unicorn-like vision you dreamed of but never actually touched.
Removing that resistance and just sprinting out communications free and clear, as fast as you can go, where the limits you hit aren’t the speed at which you can convey this stuff to others, but how fast you can think. I can’t keep this up for extended periods of time - I’d go lossy and have no time to digest and produce Useful Stuff - but I do need to do this every once in a while. The fast lane’s just as needed as the slow.
Having caught my breath, I’m off again. There’s a 2AM Tuesday bus from Boston to New York - it’ll get me to the city early enough to wander around Manhattan for the first time. Then hopefully I can make a Python meetup for the first time tomorrow evening… and then sleep, somewhere.
Monday, February 18th, 2008 | Uncategorized | No Comments »
Week two of my internship is almost over, and I continue to be surprised every day. In a good way. I knew that engineers solved problems (and didn’t just Make New Technologies), but I never thought I’d have it driven home to me with such force - I have not done a single commit to any code repository, fabricated start-to-finish any design of a product I can really call my own, nor do I do complicated mathematics on a daily basis (I love math, and certainly wouldn’t object to this - but I think that Ivan would say that it’s not engineering unless you’re doing the crunchin’.)
But I do think I’m a heck of a lot better at my personal (rather hand-wavy) notion of engineering-as-the-art-of-solving-problems than I was 9 months ago, rather awkwardly stepping off the stage with a diploma I didn’t expect in hand. Not as good as I’d like, but better, and I don’t think I’ll ever be as good as I like. So… what the hey.
Right now, at TOPP, I’m learning how to test. This is apparently one of those wonderful meta-laden fields where you have to think a lot about your own thinking; I enjoy it a lot, and have started reading academic papers on testing (and epistemology) while eating lunch, at least until my coworkers tell me to get over to the table and actually talk to people. (Which I do. And I appreciate the reminder.)
In my search for precision and conciseness, I ended up spending^H^H^H^Hwasting a good hour this morning creating a schema to write test notes in, ending up with a text document full of stuff that looks like… this.
1. U[#P1].P1(invite-request) -> J
2. J.w(register-start)
3. J.e(invite-approve)
4. J.w[~P1](register-start)
5. J.e{~P1](register-confirm)
Or in what I originally thought was actually English: (don’t actually try to read the below paragraph):
“A project P1 admin uses the web interface (within their project P1 interface on woonerf) to invite a Joiner via email. The Joiner does not react to the email but instead starts their user registration through the woonerf web interface (but does not yet confirm their email). The Joiner returns to email, sees the original invitation from the project P1 admin, and follows that email to create an account and confirm email for that account before trying to return to confirm the email for his/her first account creation attempt.”
Yeah.
Fortunately, Tim and David intervened, and Sonali showed me her much better flow test charts, and then I found some real bugs. Which took several hours to describe, with large amounts of help, because of the strange way in which they interacted (and my relative inexperience in writing good bug reports). Productivity and learninating was had, I was happy, and I took the abysmally long train ride home.
Today I also wrote my first TOPP blog post on Big Questions I’ve heard about openplans and why we’re doing it, and then my first Vital Ideation“assignment,” somewhat late (which is fine, since I’m not technically enrolled in the class).
Now I’m starting to get somewhat fuzzy-headed for having stayed up ’till nearly 4am this morning waiting for a grassroots meeting that nobody else came to, but I also got tons of stuff done while waiting, and I’m about to go to bed right this moment, so the dull-brain feeling will pass. I do enjoy feeling awake, and need at least 4 hours a night regularly to function.
I’ll be spending this weekend at the University Chapter Jam Boston, which is drawing in students from the Boston area for a momentum-building hackathon for their various OLPC college chapters. There’s a really pretty page here, but I’m trying to get them to move it to the wiki (and make a template so all jams can look as good as their page).In general, Olin people need to put stuff on the OLPC wiki more.
(Note: I think my email client might be doing weird things - again - so if you’re expecting a message from me, I might not get this ironed out until tomorrow or so… I need to find a less-bad way of experimenting with Thunderbird/pine/mutt configurations for working offline.)
[Edit: I hate the behavior of wordpress on a Mac. Next time I'm writing posts from my laptop.]
Thursday, February 14th, 2008 | Uncategorized | 1 Comment »
I’ve had quite a few since arriving in New York.
Maple candy.My uncle went to a bar mitzvah one weekend - meaning I was stranded in the house (I tried to walk to the train station, but got horribly lost along the way, and missed three trains while trying not to get hit by cars because the highway… has no sidewalks - I’m sorry, Sumana!) but he brought back, the next day, maple candy. Which is glorious. You put it in your mouth, and hold it - and it stays for a while, and then all of a sudden melts! into this wonderful, creamy, lightly sweet magic. Mmmm. 30 seconds of heaven.
Library! I finally visited the Millburn library today. I walked out with a large stack of books on linguistics, computing, math, and Spanish. I have no reason to read Chinese right now, but I do have some very good reasons to learn Spanish, if only to understand the conversation in #olpc-es - the OLPC Spanish chat channel - without resorting to computer translations all the time. I have forgotten most of the Spanish I picked up from books for a few weeks in high school - and I learned no grammar then, just the stray vocab (I wanted to hear the cadence of the original words, so I read the Spanish and English versions of some poems and short stories in parallel) so we’ll see how this one goes.
Pair <verb>ing! Pair programming, pair writing, (and today) pair testing… I love making things alongside another person, because it engages both halves of my brain. I get rapid feedback from my fellow maker, and the intellectual satisfaction of working with something technical and making something physical or quasi-physical (usually digital) come into being.
Has to be the right combination of people, though - you have to be at the right working and communication levels. (I have memories of primary school “pairs” that ended up with “one person does all the work” endeavours… not so fun.) Although David, who I paired with today for testing, is a way better coder than me, he was patient enough that I was able to keep up with him, and I can at least write coherent bug reproduction notes really fast so he could zip through the actual finding of the bugs. (At least that’s how it started; we ended up both testing and writing bug reports in a back-and-forth mix by the end, and had enough momentum to work straight through lunch - food eventually got delivered and we ate dumplings in front of our monitors while typing things about weird blog import configurations.)
Snow! And warm rain. And Indian food. And really awesome coworkers, and automatic build scripts… and apt-get/yum/emerge (and easy_install, I suppose) and a dozen parallel conversations in chatrooms at once (and being able to have that much information flowing in at once - I don’t think I’ll ever get used to being able to have text conversations thrown at me at a running clip by people in real-time - my brain is fully engaged while “talking,” and engaged in content and meaning, not in decrypting audio) and a warm sleeping bag and a black cotton t-shirt and some very hot butternut squash soup with cumin.
I love the world.
[Edit: Apparently Macs (my aunt's in this case) insert strange HTML tags into Wordpress instead of standard strong and em tags? Weird.]
Wednesday, February 13th, 2008 | Uncategorized | No Comments »
Note that managing programmers is usually referred to as “herding cats,” hence I refer here to hackers as cats.
Dogfooding only makes sense when you’re being a dog. If you’re being a cat and trying to eat dog food, you’re going to think the dog food’s lousy. Of course it’s lousy! It’s designed for dogs, not cats.
There’s cat food out there already that other folks have made. When you’re being a cat, eat cat food, even if you’re making things for dogs. Well-nourished cats make better dog food implementations. They’re happier cats. More productive cats. Less irate cats. Cats who are more likely to be able to take the time to empathize with dogs and understand what they need. They might even get ideas from cat food that they can incorporate into their dog food work.
It is incredibly important for cats to occasionally put on their dog-hat and eat the dog food they’ve made. But they should do this as dogs, with the mindsets of dogs, with the needs and the viewpoints of dogs. When you want a feature or you want to kludge in a use-case, think: “Would I still want this if I was just a dog, and wasn’t also a cat?” If the answer is yes, get into cat-mode and start hacking. If it’s no, then recognize that you and your users are not one and the same, and decide whether to allocate resources accordingly.
Be a species-shifter, but eat the proper food for the species you’re in.
(This post streamed out of a conversation that eventually turned into one of my projects at TOPP.)
Monday, February 11th, 2008 | Uncategorized | 1 Comment »
Some folks will know what triggered this post, some won’t. I’ve written similar things before.
It’s kind of frustrating sometimes to realize how much of the world is locked out for you because you can’t hear, or see, or speak a certain language, or aren’t a certain age, or have a certain financial situation or race or gender, or orientation, or… anything.
Yes, there’s always a tremendously rich other-subset of the world that is accessible to you. And there are ways to get around things so that you can reach those spots of the world that are harder for you to get to, or that you’re not “supposed” to be in. And technically speaking, every member of the human race has parts of the world that aren’t accessible to them (for instance, most of us are not tetrachromats).
But it’s still hard to sit on one side of the wall and know that many people sit on the other side - that in fact, most people sit on the other side - and that there’s information and data and things you can never do or grasp no matter how hard you try, but that’s there for the taking for most people who take it for granted.
I’ll probably never be driven half-mad by an earsplitting fire alarm, or woken incessantly in the middle of the night by a baby crying, or hear someone whisper to me things I’d rather not know. (Then again, technology is a wonderful thing, and who knows?) I don’t begrudge my lack of those experiences, and I’m happy with what I’ve got (for instance, I lipread, type, and scan text input faster than almost anyone I know by way of compensation), but I’ll also never stop wondering what they’re like.
I wouldn’t swap my body-functionality or my skillset or my life for anyone else’s, but I wouldn’t mind trading them for a day or two, just to be able to listen to birds, even once. I’ll probably never get over that. And that’s okay. You play the hand you’re given, but that doesn’t mean you never wonder what things could have been like, had the cards been shuffled differently.
Sunday, February 10th, 2008 | Uncategorized | No Comments »