Burning Man already has lots of Dr. Seuss influences, but this is the first time I’ve seen a Seuss narrative (“Oh, The Places You’ll Go!”) performed on a Burning Man backdrop. They did a great job, both in the storytelling, and in capturing the Burning Man experience — the two were made for each other. Seven minutes, totally worth watching:
I remember to this day the first time I heard that it was possible to “program” computers — I carpooled three days a week with my elementary school’s secretary and her two kids Samantha and Lucas, and on one of the many hour-long schleps to and from school, we happened to be talking about computers.
“You should check out this program called …” (I don’t know exactly what she said; lost to the sands of time) she said, one day. ”What does it do?” I asked. I must have been somewhere between 8 and 9 years old then.
In retrospect, what she said next seemed to have been uttered with incredible gravitas. There may as well have been kettle drums and trumpet fanfare for how clearly I remember it. ”It’s a program” she explained, “that lets you make other computer programs.”
WOW! All of a sudden my world had this concept that YOU, an ordinary human, could MAKE computer programs! And that there were programs, if you could just find them, that enabled you to do it! Amazing! This idea consumed me for the rest of the day, and I guess the rest of my life.
Unfortunately, I lived in a dark age for computing. My ambient computing environment were all dark-years Macintoshes, and I tried everything I could to figure out how to make them programmable, with no available guidance, I had little success. I know for sure that I bumped into LOGO at some point. Unfortunately, it didn’t do what I wanted, which was MAKE OTHER PROGRAMS, so it seemed like a dead-end.
Later I pirated a copy of MetroWorks CodeWarrior — I must have been 11 or 12 by then, and was completely baffled by it. The example code didn’t even compile, and it bugged me to pay for it all the time. What a bunch of dreck. That was the best I could find. (For this reason I still feel profound enmity today for platforms you cannot program.)
This is probably why I eventually drifted into electrical engineering, at least for a bit — the stuff was far more accessible. All I needed was a book and some parts, and I could happily tinker at my leisure. While I grew confident at building hardware, I developed a sense of uncertainty about programming, because it seemed so unattainable.
Finally, Mac OS 10.0 arrived, about the same time I discovered BSD. Suddenly, I had UNIX access, everywhere! At one point I traded my family’s television for a school friend’s ancient PC (1GB HD! ahh.. (I definitely should have asked my mom before trading off our household appliances, but it worked out in the end..)), to install Mandrake and later Gentoo linux.
And this is how I met Perl.
But even my relationship with Perl was initially halting. Engineering and programming, (this seems clear in retrospect) are totally different worlds. By then I was about 16, and I had already formed notions about “best practices” probably largely derived from my knowledge about how things get built in the physical world. In electrical engineering, if you don’t know what you’re doing, you can kill people or yourself. But you could find out what not to do by reading (or you’d just shock yourself). So I wanted some assurance about my programming. I wanted to know whether what I was doing was “correct” — I could think of a way to do something, but without knowing that it was the right way to do something — and not knowing how to find out — I progressed slowly.
I read what I could of perlmonks and perldoc, and a bunch of other websites that don’t exist anymore (fond regards, “Steve’s Perl Place”), and I looked at others’ example code (I distinctly remember reading through a script to play tetris, in particular), but I didn’t have that sense of certainty, to be free to just express myself and figure it all out at the end.
Fortunately, the technology education world are a tenacious bunch, and I continued to encounter programming in forms more acceptable to me. The embedded programming world, in particular, has a phenomenal foothold here.
After the summer of 2003, which I will remember forever, wherein I spent every single day working through an ancient radio shack manual on various ways to construct cool things out of 74– series logic, (I made a rudimentary solid state memory! A touch sensitive LED game! An astable multivibrator flip flop! and on and on), I got a little “BOEbot”, a robotics kit by Parallax. And thus I was introduced to C (some kind of high level abstraction over it, anyway, and C-like syntax). This world provided all sorts of structure for me to know whether I was doing the right thing — a cool manual, and results in the form of a little robot chassis with wheels either following a flashlight or not falling off a table or escaping from oncoming obstacles like my looming hand. I got that “high” whenever I compiled and downloaded code to the little PIC and it did something.
So I went from there. From about then, until about a year ago, programming was just something I did when I needed certain other results to occur. An incidental task. I did work on occasional software projects — the occasional firefox plugin or website project — but mostly because I had goals and wanted certain particular things to exist. Or I was working on them because I was traveling and felt compelled to be working on something. But I didn’t think of myself as a programmer. I didn’t think I was allowed to, without knowing about these still-elusive best practices I thought I needed to know.
When I got to MIT I was just completely astounded to be plunged into a world where other people had actually heard of programming. I had no idea what to expect from MIT, but I look back and can’t help but feel that I was a bit of a yokel, wide-eyed in the big shiny new world of technology. That’s a large part of why I spent every waking hour upon arrival hanging out at MITERS, the MIT Electronic Research Society. You might see why this seemed familiar and safe — a world where people tinkered with hardware and built things and talked about electronics. And there, the embedded work continued, as I learned to do deeper work in (real, this time) C on AVRs, and I continued to make little robots to amuse myself (like “Robjot” which rolled around on my ceiling drawing abstract art, or the mobilized potted plants that sought out their own sunlight — and also for pay, on a research project making shirts with embedded hardware to sense the wearer’s posture). Still the concept that I might one day get to do create software beckoned.
And then at some point I realized that if I said I wasn’t a programmer, I wouldn’t be telling the truth. I’m not sure when the shift happened.
Maybe it’s because I realized that I’ve actually done a bunch of things that do count as “real programming”, and needed to give myself credit for that. Or maybe I’ve realized that programming from here on out is a matter of deepening my understanding through continuing to build projects, talking to people, and reading. Maybe it’s that I’ve met enough programmers now that I have a sense of the scope of the world and what it involves. This also means I have people I can ask questions when I don’t know the answers (If you’ve answered a technical question of mine, thank you!).
Part of it is certainly that I’ve seen my pure-programmer friends take on completely ridiculous real-world projects, with no thought to robustness or the last 100s of years of knowledge about building mechanical things. I’ve seen some completely precarious and seriously shaky steel structures built by programmers (for suspending/supporting human beings (!)) — and perhaps I’ve realized that asking for best practices are not critical to every aspect of how one thinks about programming.
Mostly, it’s my coming to realize that it’s not about knowing everything about software, and then producing perfect programs whole cloth. I have given myself permission to be messy and unsure. To break things, by adding and deleting huge sections of code, because there’s always undo and revision history — tools that just don’t exist in the hardware world I know and love so well. So if you’re out there — if you’re like my 9 year old self (and today you are far luckier than I was and have ready access to python/ruby etc to play with) — please feel free to just program however you like, and don’t worry about having to be correct. Dive in.
note: I’m leaving out lots of stuff, like how I became acquainted with HTML and then JavaScript, which was indeed a viable way to program at the time, and I did learn some from it, but still didn’t “count” it as “real” because I had no idea how similar it was to “real” programming which in my mind was creating applications with GUIs, derived from my 9 year old ideas about what a program was. There were other noteworthy encounters, too — I did FIRST robotics, although I again fell on the hardware side, with my best friend Tanya taking the limelight for programming; I also read through a few textbooks on embedded programming in assembly, which I struggled to read without being able to practice on the EEPROMS it discussed. And, sometime before I touched real *nix I read a System V manual that mentioned bash scripting and C programming, but I had forgotten the details before I got to try it on a real system.
I also think it’s noteworthy that I’ve only arrived here after this so-far lifetime of interest — involving even attending several special interest computer conferences — still I did not call myself a programmer!
Alllll RIGHT!! So I’ve been in China for 4 weeks now, and the biggest learning curve of them all is learning to speak the language. At this point, I can get by kinda passably ordering food, and have done decently at buying clothes and weird lab equipment in the bazaars, but beyond the totally basic transactions, I’m still quite green. So, for anyone else who finds themselves in a situation like this, and wants to learn Chinese fast, the fun way, here’s a breakdown of what’s good.
As a basic philosophy, I also try to use my entire Chinese vocabulary every day.
memrise.com - I use memrise for learning Chinese characters. Necessary for reading menus, signs, etc. Can help you get by in a variety of unexpected situations. And this site is SO awesome, I actually wake up in the morning hoping that I get to use it to learn some more. I would do this for fun even if I didn’t have a practical need to learn Chinese.
I watch a 20 minute episode of Chinese television on http://tv.sohu.com/ and http://pptv.com once a day. This is the obvious route for anyone who wants to try their ear at clearly-spoken at-speed language, which doesn’t wait for your feedback to carry on. The bonus is that you get the cultural context education along with it. Youtube and many of the other major websites don’t exist out this way (in a practical meaningful sense – obviously it’s technically possible to make it work, but load times are lame), so the local sites are the way to go. I don’t think these work outside of China, though.
A good alternative to television, for folks outside of China, is http://newsinslowchinese.com. A goldmine for learning to speak and listen.
Language exchange. I’m lucky here in Beijing, to be near Tsinghua, the big research university. A lot of people near I live want to learn and perfect their English, so I have a few arrangements doing language exchange with Chinese speakers. If you aren’t as conveniently located, you could probably find people for language exchange through http://couchsurfing.com. The best part about traveling as a native English speaker is that you essentially have a built-in valuable asset, and skills to find work anywhere. (outside of anglophone nations/europe)
Not sure, but probably good:
chinesepod.com has been emailed to be a number of times, but I haven’t tried it yet. Downloadable Chinese language podcasts, specifically geared for Chinese learners, I think.
Popup Chinese - also features free Chinese language podcasts. Will sample soon.
You also have to know what bad is. Some stuff that didn’t work:
Pimsleur language audiobooks. These are so outdated, I don’t even know what they’ve been working on for the last 30 years, or however long it’s been since they last updated them. I got through about midway on Pimsleur’s Mandarin 1 lessons, before stopping. They helped with some very basic prototype conversations, but not with any real understanding. Avoid.
There you go! Merry Chinese learning adventures, and feel free to point me in the direction of any good resources I haven’t come across yet!
I’m headed to Shanghai tomorrow and will be based in Asia for the next 3 months. Last I heard, my blog is blocked in China, and while I don’t really know what the situation is yet, that may mean an attenuation of my posting here.
I’m going overseas to, among other things, find out where all my stuff was made. I mean that seriously: I really love learning about manufacturing and I’m incredibly excited to go check out factories &c in Shenzhen, Guangzhou, Taiwan, Hong Kong, and more. I’ll also be in Shanghai and Beijing. My itinerary isn’t totally set yet, but if there’s an interesting person I should say hi to while traveling, do that thing where you drop a line (email address stars+china@mit.edu).
That’s the word! Hopefully I will actually be able keep this posted with all sorts of neat developments while traveling. Till then, who knows what might happen:
I just finished copying my favorite favorite command-line game to jQuery – so now even mac users can play robotfindskitten anytime, anywhere, even overseas.
robotfindskitten is a simple terminal game where you, nominally the robot (#), walk around and look at stuff. But the game is much more than that, genius really, because there’s a very strong embedded sense of humor in the objects you find, and a lot of intellect and thought in the jokes. (for example: “You didn’t find kitten, just the greek words ‘and her’” – which are “kai tain”, homophone of “kitten”).
Further, the creators impishly describe the game as a “Zen Simulation”. Think about it.
The Sunday Times Golden Globe Race was a contest to circumnavigate the world, single-handed under sail. The race was phenomenal, not because it resulted in just one person successfully solo sailing around the world, but for what happened to all of the other entrants — nine started the race: four retired before leaving the Atlantic; one sank, another retired just after South Africa, one attempted to fake records of the journey while moored off the coast of Brazil, and sailor Bernard Moitessier decided that finishing the race for money, fame and glory would be an impure result, not part of his motivation for sailing, so turned back from within several hundred miles of the finish, and continued around the globe (circumnavigating 1.5 times) to settle in Tahiti instead.
This documentary (~90 minutes) about it, comprised largely of trip logs and real footage taken by the sailors during the race. It is quite good:
If you’ve ever wanted to watch William Gibson ramble about the future, the sixties, robots, and science fiction from the back of a car, I strongly recommend No Map For These Territories. The whole thing is ~90 mins and [currently] on youtube:
I was kicking around the city feeling wonderful this afternoon and dropped into Four Barrel Coffee Co. on Valencia to reinforce my dopamine high. There I ran into this coffee table book Everything Is Its Own Reward, made of great writing and exquisite greyscale water colors of San Francisco.
I am very much taken with the book:
It was Jim’s 40th birthday and we were having what his mother had never let him have as a kid: an ice cream-only-party.
By 4 o’clock the sky had grown black.
A storm had blown in fierce and fast.
The electricity went out and we assumed that everyone would assume the party would be canceled.
Sitting in the dark, Jim confessed that he hadn’t even wanted a party. “All I really wanted,” he admitted, “was the ice cream.”
“Well,” I offered, “the power’s out, we’ve got 40 pints, and whatever we don’t eat will melt.”
So we lit some candles, sat on the floor, and dug into every flavor.
I woke to the sound of the doorbell, my cheek in a puddle of melted ice cream, my stomach in knots. The bell kept ringing and I realized the storm had passed, the lights were on, and all our friends were here for a party.
So, I have this domain, http://starbur.st. I’ve had it since roughly 2007, and it points to the same thing http://starsimpson.com does. It’s up for renewal soon (now?) – should I refresh it? Do you use it? Does anyone use it?
Pros: it spells “starburst”.
Cons: it’s hard to explain the spelling verbally, and São Tomé and Príncipe domains cost more than most other domains.