Grand Canyon Vacation

This year I went again to NAB, the annual convention for tv, film, and radio. Since Las Vegas is warm and sunny, Char thought it’d be fun to come along and take some vacation time while I checked out the show floor.

For this trip I did not bring my Thinkpad, opting instead to bring just my olpc. Although Char complained about the spacebar (fixed in b3, Char!) and its slowness (also fixed, Char!), it performed phenomenally. It easily picked up all the access points I needed and connected to them quickly. The web activity also handled any accesspoint payment sites perfectly. On one occasion when our cheap(er) hotel didn’t have free wifi, I was able to connect to the Best Western two buildings over and use theirs instead. It must have been 1000 feet away and still the signal was strong. Bravo olpc!

After I filled my brain with details about Final Cut Pro upgrades, digital asset management software, and other expensive new stuff, Char and I drove out to Arizona to go camping at the Grand Canyon.

Camping was cold, but we were prepared for it. The next morning we woke up and saw some very tame deer strolling through the campground

We had a whole day to spend at the canyon, so we donned our boots (Char bought hers a few days before) and took a hike. Interestingly, by default the Park Service does not provide very accurate maps which discourages morons like us from making up our own routes and getting in over our heads. Instead they offer a few basic trails with regular checkpoints to keep it nice and easy. I’m glad we talked to the park service lady, she recommended a very good hike.

[800×600][1600×1200]
It is big

The Grand Canyon is incomprehensively big. There’s just no reference to get any sense of scale, and because the opposite wall is 10 miles away you can’t see any other angle of it because you can’t get any paralax. It’s just huge and unmoving.

It was also eerily quiet. Char and I were trying to figure out what we expected to be hearing other than the grandiose symphonies and echoing eagle calls heard in gift shop videos. Although the day before had gusts up to 50mph there was very little wind when we were there, and because there are so few trees (it’s mostly shrubbery!) there was no rustling of leaves. There were also hardly any songbirds twittering away. Most of the birds were gigantic crows that wanted to eat our food.

[800×600][1600×1200]
Other people help provide scale

The trail we hiked was also used by mule trains which, according to my ear, nose, and throat doctor, carry supplies down to Phantom Ranch in the canyon. The men leading the mules were totally cool and legit. Real cowboys. Or I guess muleboys?

[800×600][1600×1200]
Mule Train

[800×600][1600×1200]
Char likes mules

[600×800][1200×1600]
Note the smoke

As you can see in the above photo, there was some smoke drifting out of the depths of the canyon that didn’t look right. Someone on the trail asked one of the cowboys what he thought it was, and he chalked it up to the park service “doin’ a controlled burn, and they lost control of it.” I am not doing the accent justice here. Try to imagine what Dubya wishes he sounded like when he clears brush.

[800×600][1600×1200]
Char makes a friend

[800×600][1600×1200]
Critter surveys the scenery

[800×600][1600×1200]
Char prepares to crush an enemy

[800×600][1600×1200]
I ponder bigness

Our descent ended when we could finally see the river for the first time near the omniously-named Skeleton Point.

[800×600][1600×1200]
Yes that is the river down there

[600×800][1200×1600]
I got there too

After eating our lunch, we started on the way back. There are not many pictures from the way back, not only because it was the same view, but because hiking back up 1800 feet is hard work! As we neared the top, though, another hiker pointed out a few condors hangin’ out on the rocks

[800×600][1600×1200]
The one on the right is labelled “99”

[800×600][1600×1200]
There was another one further away

As we got back, we realized if we camped again that night we would not have a chance to shower again for the whole trip. This would mean we’d have to drive back to Las Vegas smelly, see Bill Maher perform at the Hard Rock the next night smelly, stay up all night and wait for our flight smelly, and then fly home smelly. Also, it was supposed to be 22 degrees that night. It was only 30-35 the previous night, and that was cold enough, so we bailed and got a hotel. It was the right thing to do, especially since we were only out 18$ for the campsite. A shower and a good night’s sleep were greatly appreciated by all.

The next day we visited the Hoover Dam, but those pictures will have to wait until tomorrow.

mouse-over jokes

A few webcomics have bonus jokes in the title attribute of the image tag, meaning you don’t see the joke unless you hold the mouse over the image. These easter eggs necessitate new and glorious extensions just to make them work properly. Often the bonus joke isn’t all that great, but oh man, sometimes it’s funnier than the original punchline.

After discovering this trick in a webcomic I’ve been reading, I have to go back through the entire archives of a comic strip reading all the new jokes. Downside, or bonus?

Buddha Box music — now with more zen

At FUDCON 2007, someone brought a Buddha Machine, aka Buddha Box. It was very cool, and I was pleased to see that the sound tracks are available for download.

However, Track 1 has some nasty high-frequency distortion in the wave file that renders it extremely not zen. I decided to run a filter over it to clean it up, and turned to my usual go-to sound program (which I dislike) called Audacity. Audacity wanted no part of Buddha:

audacity: layer3.c:2633: mad_layer_III: Assertion `stream->md_len + md_len - si.main_data_begin < = (511 + 2048 + 8)' failed.
Aborted (core dumped)

So I turned to the new kid on the block, Jokosher. It actually worked quite well. Sometimes it was difficult to know when to right click, when to left click, and when to doubleclick[1], but once I figured that out I was able to apply a lowpass filter and an EQ to clean up the audio. I feel much calmer now.

Here's the resulting ogg file: buddamachine01.ogg (fixed)

These files (transcoded to ogg with oggenc) play great inside my sonata activity on the olpc. Add one of the files to the playlist, right-click the playlist and select "repeat."

[1]answers: Right click on timeline of audio file instrument to import file; doubleclick on an effect to open effect properties

Moment in the Sun

Chris Blizzard let me know a while back that Red Hat Magazine was coming to the olpc offices to shoot some promotional video, and that they might want to interview me. So I dropped on by after work and gave them some good bites.

They’ve posted the edited video, which is a pretty nice peek into the place where the magic happens. It’s not my best on-camera appearence ever, but luckily they cut away from me pretty quickly 🙂

Me appearing in the olpc video

March Madness — nerd style

My work is doing a silly contest around the whole NCAA thing. Back in high school kids used to run around comparing their brackets and arguing over every detail, and I hated it. I don’t follow basketball at all, and other than knowing that Duke ususally does well I have no basis upon which to make any choices except the seeds.

So I decided to write a bracket-generating algorithm that uses the seeds to generate weights for a random function and pick teams that way. The algorithm works as such:

  • for a pair of teams, take their seeds and invert them (make small numbers big)
  • divide each seed by the total of the two seeds to get values 0 < = x <= 1
  • get a random number 0 < = r <= 1. If team a’s chance is >= that value, they win

The actual code isn’t as nice as that explanation, but it should be mathematically equivalent. Any errors in programming only make these results more my own. I took the results from the first run that (a) worked, and (b) had Wisconsin (my alma mater) not getting knocked out in the first round.

Based on brackets.py, the final four will be: Arizona, Kansas, Texas, and Ohio St.

Kansas will win.

Source code after the break:
Continue reading “March Madness — nerd style”

OLPC as a music player

One side project I’ve been having fun with is creating an activity to allow the olpc to play music. At first I was just going to port a MusicPD (mpd) client over to olpc to allow me to use the laptop as a remote control at parties. Mpd runs as a system-level service that plays music, and then users can connect to it with many dozens of available clients to tell it to play music. It turned out that porting over a client was so easy that I decided to create a bundle that had its own mpd daemon builtin as well.

The client I chose is Sonata. I’ve used a lot of music players, including xmms, rhythmbox, amarok, banshee, and muine, but the combination of Sonata+mpd is the best way to enjoy music on Linux. It’s really, really good, and it’s worth the slight headache of setting up mpd.conf to get it working on your machine.

Sonata is also written in Python and only took maybe 20 lines of alteration to sugar-ize it. The author, Scott Horowitz, was even nice enough to incorporate my alterations into the main codebase, meaning that my bundle isn’t a fork of his project.

The bundle also contains a specially-compiled and configured version of the mpd daemon. And since I hate freedom, I’ve bundled an mp3 library along with it (But it also plays ogg). Music should be stored in /home/olpc/.mpd/Music, which could be symlinked to a mounted mmc device or USB key for greater storage. When the activity is started, the daemon is automagically started as well.

By default the client will connect to the olpc’s mpd daemon, but one can right-click on the main window and change the preferences to connect to any other mpd daemon on the network.

While I don’t know if this bundle will be useful to the kids, it’s useful to me and it shows the power of the bundle architecture. It really is plug and play 🙂

Sonata OLPC bundle (v7)

The Anti-Gadget

There’s an interesting article at raisethehammer.org that J5 linked to. It brings to mind some issues I’ve been thinking about ever since I started working on the XO, and moreso since Apple announced the iPhone.

The article ends this way:

When the Children’s Machine becomes available, one thought is that customers in the developed world could buy two machines, with one going to a child in the developing world. Buy one for the price of two, in other words.

If that happens, gadget lovers will have an interesting choice to make this year.

A lot of people have been salivating over the XO, and they are viewing it through the same lens as other products: as a gadget. I think this is a critical mistake, and by labelling the XO a “gadget” one loses sight of what the XO was designed for. If anything, I think the XO is the Anti-Gadget.

I would define a gadget as something Unuseless. It does appear to fill some need, and one can construct arguments in favor of purchasing it, but ultimately the purchase is discretionary.

I think a lot of people in the first-world see in the XO its gadget potential, like its dual-mode screen, mesh networking, or built-in camera. For most of us these features are unuseless — I never use my laptop in bright sun so I don’t need a dual-mode screen, I am always near an access point so I don’t need mesh networking, or I already have a digital camera.

But in the environment for which the olpc was designed these features are necessities. Without the dual-mode screen the laptop would be useless in outdoor classrooms. Without the mesh there would be no network infrastructure. The camera may be the first that many children have used and it may also be their first mirror. Every part of the laptop has been carefully chosen with these issues in mind.

If the XO was released to first-world consumers too soon I’m afraid that all context would be lost and it would be directly compared to the iPhone, the Nokia N800, or the latest tablet PC. Reviewers would apply their standard series of benchmarks and it would probably fail: it wouldn’t be able to play back HD video, it wouldn’t have a slick 3D desktop, and it surely wouldn’t synchronize their Office documents.

It’s important not to judge the XO by the standards of gadgets designed for the first world market. For once, wealthy Americans are not the target market for a new device. Instead, try to imagine a child for whom this is their new textbook, calculator, telephone, synthesizer, and newspaper. Although the XO may seem like a gadget, it’s not at all a gadget to the child who will be getting it.

Game theory and movie piracy

I haven’t seen anyone else linking to this, but the blog Freedom to Tinker is doing a badass academic analysis of the effectiveness of HD-DVD AACS encryption using Game Theory. Rather than simply concluding that the studios are evil and hackers will beat the system, they’ve analyzed the encryption method to determine the optimal behavior for each side.

They come to a fascinating conclusion:

It turns out that the attacker’s best strategy is to withhold any newly discovered compromise until a “release window” of size R has passed since the last time the authority blacklisted a player. [. . .] Once the release window has passed, the attacker will use the compromise aggressively and the authority will then blacklist the compromised player, which essentially starts the game over. The studio collects revenue during the release window, and sometimes beyond the release window when the attacker gets unlucky and takes a long time to find another compromise.

They point out that this resembles the current studio model of release cycles:

Interestingly, this release window strategy resembles the studios’ current approach to extracting revenue from films, in which a film is available first in the highest-revenue format — in theaters — then later in a succession of lower-revenue formats — DVD and television. The idea is to extract more revenue from the most enthusiastic fans in early stages and pick up whatever revenue is available from everyone else later.

There are currently seven long articles about the topic, but they are all worth reading.

So wrong it can’t be right

Often in my work, I need to create a placeholder animation, text, or graphic before the final version comes in. The problem with a placeholder is that if it remains in place long enough, it can eventually be mistaken for the genuine article. A temporary font becomes the final font. A temporary, unlicensed, low resolution google image becomes the final production image for a high definition show. Usually these mistakes are caught toward the end of the production, and there is much panic as proper replacements are tracked down. Other times the placeholder wins and is broadcast. How can we make sure this doesn’t happen?

The more common solution to problems like these would be to write “PLACEHOLDER: LOW REZ” on a graphic, or something boring like that. This solves nothing. Everyone knows it’s a placeholder, but it’s always good enough “for now” and will sit around forever, never getting replaced until the very end. Maybe it’s less likely to go on the air, but there’s still a flurry of activity as the deadline looms.

My strategy is to make the placeholder so ridiculous and obviously wrong that no one could ever mistake it for being correct. If there’s a question of font, don’t use Arial as a temp font, use something crazy like a party font. If you have a temp graphic that’s too small, shrink it more and save it as a 25% quality jpeg. Even on a tiny screen everyone will see the image isn’t good enough for broadcast.

In one case I had to attribute a graphic to Google Earth. No one could tell me the font, size, or positioning to use, so I created a title with 80 point font that says “GOOGLE EARTH IS AWESOME!!!!!” right across the middle of the screen. That got fixed quickly.

In contrast, a “temp” sound effect in our show was meant to be replaced with a new, awesomer sound effect. Unfortunately because the “temp” sound effect was pretty good, it became the final sound effect. We knew it was a temporary sound effect, but there was no rush replacing it so we didn’t. Had the temp effect been more inappropriate, we would have gotten around to creating something better.

Is this the beginning of a series of Getting Things Done posts? Geez I hope not. I’d like to think there’s a difference between a silly font choice and reminding yourself to pick up milk using RSS feeds, Google Maps, and SMS Messages. Is it possible to blog about tricks like this and not be contributing to the whole efficiency / Web 2.0 / Moleskine cult?