Archive for November, 2004

For the Thanksgiving holiday, we went to Columbia, MO to visit my parents. I grew up in Columbia and have a deep affection for the land of the midwest. There are four very distinct seasons with beautiful aspects to each. The weather also tends to be very unpredictable. We had sunny skies on Monday, 5″ of snow on Wednesday, a warm Thanksgiving day, and now it is cold again. Gotta love climactic chaos.

While here, I have been playing with my mom’s digital camera. Nothing special — a generic Fujitsu consume 4MP digicam. It does the job. The camera came with Arcsoft’s panorama Maker. The software tends to crash when stitching together lots of images, is very very slow, and it takes over the screen — both very annoying — but was relatively easy to use. Actually, it was kind of fun as I would just pass by the computer doing the image processing, adjust a few parameters and let it crank for another 10 minutes.

Very wide JPEG stills can be found in a Missouri Panorama Stills page I tossed onto .mac. It contains both “before snow” and “after snow” pictures. I also converted some of the images to QTVR “movies”. They are available on a .Mac file download page. The .mac movie presentation pages don’t really deal with QTVR well and the movies are higher resolution than the display frame anyway, so downloading them tends to give a better quality viewing experience. Each QTVR movie has a corresponding panorama on the stills page. Unfortunately, the QTVR movies “start” at the “seam”. I would have done 360 degree “movies” but panorama Maker crashes when dealing with enough photos to fully wrap around (unless I trim the number of images down to the point where there are a number of unsightly and incorrect joins).

In any case, my first attempt at such things. I’m going to play with doing more panorama shots. I might try to do one that alternates between snow and non-snow images. I would really like to do some 360 degree images in the woods, too.

Yeah, whatever. My mom shoots potatoes a couple of hundred yards out of her potato bazooka.

Sometime in the last few years, one of my parent’s friends (they have cool friends) decided that my parents could really use a potato gun. So they made one and gave it to them.

It is a rather simple device. A long piece of 2″ or so PVC pipe that is attached to a short section of 4″ PVC pipe that acts as the ignition chamber. The end of the 4” section is threaded for a screw-on cap and has an igniter mounted throw the side of that section.

Use is rather simple. Take a potato that is slightly larger in diameter than the long firing tube and ram it into said tube. Take a stick and push the potato down to just above the firing chamber. Unscrew the bottom of the firing chamber and blast about 5 seconds worth of hairspray into the chamber. Screw the bottom back on.

Aim.

Fire.

The damned thing will shoot a potato a couple of hundred yards. Over the pond and through the woods, in our case. If you aim it at the pond, the spud will skip across the surface a couple of times. Hit a tree and you get a rain of mashed potatoes.

This week, we are with my family in the midwest and, yes, I’m doing some tech support work on my mom’s computing environment.

Of course, my mom has long been a Mac user. Instead of dealing with hours of uninstalling spyware, virii, and trying to coerce broken Windows systems into appearing to be useful, my time has been spent upgrading an AirPort Extreme base station, installing an AirPort Express on the stereo so mom can play music from her computer (she is an iTMS addict) on the house stereo, and… well.. that’s it because the system otherwise “just works”.

With the recent AirPort update, AirTunes– playback of music through the AirPort Express– now works simultaneously with WDS. I don’t believe that worked in the first release. In any case, it means that the AirPort express is quite effectively extending the range of the house’s airport network while also acting as a music playback device.

Given that my tech support duties were over and done with in about an hour, I spent a part of yesterday afternoon playing with mom’s digital camera. It came with ArcSoft’s Panorama Maker. First time I have played with such software. PM is pretty cool, though the UI isn’t great and the software tends to spend a lot of time not responding to the user.

With some patience, I did make some panoramic shots of the back yard, including a QTVR (which is higher resolution then that little QT frame might indicate). Yes, land is considerably cheaper in the midwest than on the east or west coast.

Now… back to [over]consuming, playing with my son and the dog, hanging out with the family, and not tediously trying to hand edit the Windows Registry….

Once you install SubEthaEdit, add setenv EDITOR ‘/usr/bin/see -w’ to your shell environment. This will cause Subversion, CVS, and other programs to use SubEthaEdit for editing of commit messages and the like.

Very nice. Unlike BBEdit, SubEthaEdit offers spell checking as you type and proper emacs-like key bindings. Really, it is more the case the SEE uses the Cocoa text editing subsystem which provides those features automatically.

Update

map (a coding monkey) pontificated that adding the ‘-r’ flag (export EDITOR=’see -wr’ or setenv EDITOR ‘/usr/bin/see -wr’, depending on your shell of choice) will cause Terminal to return to the frontmost app after you are done editing the file. Nice!

Eric said:

I guess copying is one of the sincerest forms of flattery.

BTW Bill, BBEdit does have common emacs keybindings. Turn them on in “Editing: Keyboard”

Jumping out to a GUI based editor from the command line has been around for much longer than Mac OS X and probably longer than BBEdit’s entire existence. Emacs has supported this via gnuserv/gnuclient for many years. Specifically, when it was added, I don’t know. I do know that OpenStep had this in 1995 or 1996. I wrote a command line tool called tedit that talked via distributed objects to TextEdit. It also supported client/server editing over the Internet. I used it to edit content on colo’d servers from my office desktop.

Secondly, BBEdit’s emacs keybindings do not behave like Emacs. In particular, BBEdit’s notion of “end of line” is the end of the visible line in the editing window. Emacs defines the end of the line as the newline at the end of the paragraph. So, all cursor motion and copy/paste features that depend on the definition of end of line work completely differently in BBEdit than they do in emacs. Not just differently, but BBEdit’s definition of “end of line” renders the commands useless — this isn’t a “just relearn the behavior” problem. For example, if the cursor is one character before the end of the first line of a multiline paragrah, the user would have to hit ctrl-k one time for every character between the cursor and the paragraph ending newline to yank the rest of the paragraph. Not only is this potentially hundreds of keystrokes (compared to one in emacs), but it means that you can’t reliably put everything between the cursor and the end of the paragraph into a yank buffer to be moved elsewhere via ctrl-y.

Now, don’t misinterpret any of this as an attack of BBEdit. I have watched someone who believes in the BBEdit way do amazingly powerful stuff with the application. It is simply the case that I follow the emacs way of editing text, which is incompatible with BBEdit. Fortunately for me, Cocoa’s text editing subsystem also follows the emacs way (likely because the original developers of the AppKit used emacs) and, as a Cocoa App, SubEthaEdit (and TextEdit, for that matter) offer a text editing experience that is compatible with my text editing muscle memory.

As I had written in an earlier post, my primary concern with this election was less about the outcome and more about the utter stupidity of the voting procedures that were deployed across the country.

The electronic voting machines are poorly designed and have an even worse implementation. Worse, many precincts had no idea how to deal with voters that wanted to use paper ballots. Thousands– millions?– of paper ballots were considered “provisional”, and likely not counted, that should not have been. The problems were not unique to Ohio. Fortunately, Ohio had exhibited a number of the common problems and, as such, a recount in Ohio will help quantify the depth of the stupidity and help push along the effort to reform election procedures and equipment.

It would appear that shedding light upon the voting procedure itself is the primary motivation for the recount as the recount was triggered by actions taken by independent presidential candidates.

The recount will happen after the election results are certified. I wonder what would offically happen in the extremely unlikely event that the recount shows that Kerry won Ohio?

Back in July, I picked up a Keyspan Remote specifically to control iTunes. We have a really old iMac DV (FireWire port was critical) with a 160GB drive hanging off of it. It is hooked to the stereo and is the master music repository in the house. Having a remote control is ideal.

I would have simply posted the new iTunes configuration file for the KeySpan, but the configuration editor doesn’t do importing/exporting of configurations. Sigh. So, you’ll just have to hack one together yourself. Of course, this will work with basically anything that can trigger an AppleScript, including a USB based game controller.

My changes to the iTunes map:

Up Arrow: Set rating to 5.

Right Arrow: Set rating to 4.

Select Button: Set rating to 3.

Left Arrow: Set rating to 2.

Down Arrow: Set rating to 1.

Menu Button: Revert to Unrated (0 rating).

* Button: Refresh selection of tracks in currently playing smart playlist

As a result, when I’m sitting around listening to music, I can adjust song ratings on the fly. Because all of my listening is almost exclusively based on smart playlists that leverage ratings, this additional meta information directly increase the quality of both my in house music consumption and my iPod.

Some explanation on my choice of ratings and some playlists I have around is probably in order. Not that this is the right way but more because you will want to give this some thought and remain consistent over time.

Ratings:

No rating means that I have yet to express an opinion about the song.

1 or 2 rating both mean that I really don’t ever want to hear the song as a part of random playlist consumption. 1 means that the song just plain sucks, I really don’t want to hear it again. 2 typically means that the song sucks by itself, but may make sense as a part of a larger whole (like, in the context of an album).

3 rating means that the song is good enough to hear at random but not special enough to call out.

4 rating means that the song is pretty spectacular.

Finally, a 5 rating indicates a “desert island iPod song”. That is, if I were to be marooned on a desert island forever and could only take one iPod full of music along w/a perma-power source, a song with a rating of 5 would be included.

Playlists:

By themselves, the ratings are useless. Through Smart Playlists, the ratings become an intrinsic part of the listening experience.

My main playlist– the one I listen to most often– is Pretty Good Stuff. It is a randomly selected set of 25 songs that includes only songs with no rating or that have been rated with a 3, 4, or 5. It also excludes all songs that have been played in the last three weeks and all songs over 8 hours (which excludes internet streams). It is set to automatically update. In other words, it always contains 25 tracks that I haven’t heard in a while that either do not suck or I have not yet formed an opinion. Radio BBum, if you will.

For my iPod, there are the 3+ and 4+ playlists. These playlists contain 3GB and 1GB respectively of tracks that are rated 3+ or 4+ stars and have not been played in the last two weeks. The size based restriction is because I sync these two playlists along with a non-smart playlist to my 5GB iPod. Since the iPod also syncs recently-played information, every time I plug my iPod in, it is loaded with musics that doesn’t suck that I haven’t heard in the last 2 weeks.

Update:

I have updated the scripts slightly. The 1 and 2 rating scripts now delay for a second and then send iTunes the “play” command. The delay gives iTunes a chance to update the playlist if the track has been filtered out automatically and “play” will cause the playlist to play again, or do nothing if already playing. I also added a script that can be used to turn off the checkbox associated with a song. Since all my Smart Playlists ignore unchecked songs, the check mark becomes a way of toggling songs in and out of rotation. Useful for the James Brown Christmas album (the only Christmas album I really like).

Kerry conceded and the press, the president, and everyone else I know of are all acting like the election is over and done with.

The reality is that Ohio won’t call the official results for another 7 days.

Now, I doubt if there will be a reversal of the called decision. There is little chance that Kerry could pull out a surprise victory.

There is something far, far more important at stake.

There have been a disturbingly large number of reports of serious problems during the Ohio voting process. The same goes for the rest of the nation, but Ohio is obviously a focal point.

These problems range from potentially illegal actions on the part of “challengers” to lost ballots to mishandling of ballots to reports of voting machines reporting thousands of extra votes for one Bush (site requires registration. Bugmenot.com can help. I have summarized the story below).

By rolling over and playing dead, Kerry & the democrats are sending a clear message that the way this election was run is A-OK. The reports coming in from the field indicate that this election was not run smoothly. These problems need to be trumpeted from the rooftops to ensure that they do not happen again.

To my layman’s eyes, it would seem that the very tenets of our democratic process are at risk. If we cannot hold an election without some assurance that all votes will be counted, then what the hell is the point? How the hell can we continue to call our solves a model democracy whose role it is to spread democracy and freedom throughout the world?

This would seem to be a pretty big and scary story to me. The kind that draws eyeballs to TVs and newspapers quite effectively. Why isn’t it even being mentioned in any mainstream press?

An excerpt from the aforementioned news story.

Computer error at voting machine gives Bush 3,893 extra votes

Associated Press

COLUMBUS, Ohio – A computer error with a voting machine cartridge gave President Bush 3,893 extra votes in a Gahanna precinct.

Wait. 4,258 votes recorded in a district that only had 638 people cast ballots? Shouldn’t that, alone, be enough to raise a huge warning flag and be something that should be caught immediately? Apparently not. The error wouldn’t have otherwise been caught until later in the month, well after the 10 day window until Ohio casts its final decision.

Computer error? There are hundreds or thousands of the same damned computers deployed throughout the state. All identical. If the error happened to one machine, chances are it happened elsewhere.

Of course, with the MPAA getting into the lawsuit game, BitTorrent will be in the legal spotlight. Much of the content distributed using BitTorrent includes television shows and movies. For Television, BT is playing a role almost like a global TiVo-like device. That is, many people download TV shows via BT because it is easier than trying to record said show off their local broadcast media or because the show simply isn’t available in their market.

Also, BitTorrent is going to really stress the courts. In particular, “trackers” — the central servers that effectively tracks the swarm of clients that are crossloading content (in BitTorrent, a downloader is always an uploader back into the swarm — hence, crossloader) — generally never have the actual content being exchanged. The tracker merely maintains checksums of the content and acts as a rendezvous point for clients.

Not only does the tracker rarely have a copy of the content being distributed, it is statistically unlikely that any one client participating in the swarm will ever upload an entire copy of the content and, certainly, will never provide a copy of the content in its entirety to another client.

In almost all cases, the upload side of the BT equation cannot be provably demonstrated to have distributed a whole copy of the work. So far, the RIAA related music lawsuits have been aimed entirely at the upload side of the equation and the charges have been aimed at # of copies distributed.

If the MPAA follows the same path, it will be interesting to read the wording of their claims and to see if anyone responds based on the technical realities of the BitTorrent implementation.

Now, I really should find time to polish and commit my changes to BitTorrent to enable 401 authentication between client and tracker.