Thursday, November 12, 2009

Paperwork Paradox

I haven't been writing much, but I came across something that was amusing and brief, so just a quick entry today... I was filling out a government form for my employer today, which included a list of yes/no questions. Question #4 of 18 was "Has a completed COPY of this renewal application form (front & back) been sent or delivered to the Chief Law Enforcement Officer (CLEO) of the locality in which the premises are located?" There are also spaces to fill in the date that you sent it, and the name and title of the Chief Law Enforcement Officer. The policy associated with this form requires that a copy be sent to the local law enforcement. But if you stop and think about that for just a second, you will see the problem. They are asking, as you fill out the form, if you have already done something with the completed form. The only possible answer to that question that is true as you fill out the form would be "no." But that will, of course, cause the form to be rejected.

Interestingly, you might try to get around this, by answering "no" (which is true), then copying and sending the form, which would allow you to cross out "no" and answer "yes." Except that this is still not true, because now you have changed the original, so what you sent is not actually a copy of the form, and the answer is still "no."

In order to successfully complete the form, I decided that the process of filling out the form and sending it to the local law enforcement office is an atomic operation, completed effectively all at the same instant in time. And since the form required when I signed it that it is "true and correct to the best of my knowledge and belief," that's my belief, and I'm sticking to it.

Monday, August 10, 2009

California Extreme 2009

Every year, if my schedule allows, I like to go to the California Extreme classic arcade and pinball game show. I first stumbled across the show by accident several years ago when I happened to be walking past the Tech Museum of Innovation in San Jose, and it was being held in one of the conference areas. This year the show moved to the ballrooms at the Santa Clara Hyatt at the Convention Center, and I spent Sunday several weeks ago reliving a bit of my childhood and seeking inspiration from games created when compute power was a lot more limited than today.
The admissions material accurately describe the show as a museum of working games. There were machines from the early 70's through the current decade, including many classics and some really rare ones. Some of the real oldies included "Computer Space," "Space War," Space Race," and "Tennis." Keeping these ancient machines functional requires ongoing maintenance, and is a labor of love for many of the collectors. The opportunity to get access to them, all set on free-play, for a day is well worth the $30/day door charge to get in.
Computer Space, which appeared in the movie Soylent Green, was amusing but not particularly compelling to play. The amazing technical detail about it, however, is that it has no CPU. It is entirely implemented as a state machine in 74xx series logic.
Tennis and Space Race were really engaging. They are both two player games, and rather pointless without someone to play against. Mike Napolitan and I played many games of both, chatting as we played. It's fun to imagine people 35 years ago playing those machines...
My favorite game, if I had to pick one, remains Atari Lunar Lander. In this game, you select one of four levels, which generally correlate with how realistic your flight controls are, as you attempt to land on the surface of the moon. On the expert level, you have to counter-thrust to stop rotating, or your rotational momentum keeps you turning the direction you started. Heavy gravity requires careful management of a limited fuel supply. The controls are simple, with buttons for rotate right, rotate left, and a thrust throttle lever. The thrust lever is a huge beefy handle with an awesome feel that you can really believe is out of a 60's era spacecraft. One more button, labeled "abort," allows you to terminate a landing attempt, and can be used as a "cheat" switch. It instantly reduces your horizontal velocity to 0, then automatically orients you vertically and applies a blast of thrust far more than you can get with the throttle, to immediately arrest your fall and accelerate you to about 50 feet per second upward. If you've let your vertical velocity get too high, this can save you, at the cost of a high fuel burn, but as I said it always felt like a cheat to use it. The sound is also really well designed, with a booming bass speaker to provide the rumble of a rocket engine throttling on and off.
Lunar Lander is not a twitch game, and actually requires thinking about the physics of a space ship. I'm not sure how popular it was in bars and then arcades when it came out, but I find it really compelling to play, and I kept thinking about how to determine the minimal-burn landing path that gets you to your target, often a tiny little landing platform, by which time you need to have minimal horizontal velocity and vertical velocity of less than 15 feet per second. It obviously wasn't as popular as the next game Atari released... Many lunar lander cabinets, both in production and in the field, were re-configured into Asteroids machines.
Some of the games at the show are prototypes. One in particular, "Teeter Torture" is one-of-a-kind, an Exidy title that even Exidy's old employees didn't seem to remember producing. Apparently for some time there was speculation that it was actually a bootleg ROM running on Exidy hardware. From a distance, it looks like a regular arcade console game, but when you get closer you realize that the artwork is all hand-drawn with art-markers, reminiscent of story-board drawings from a movie. The game play was fun, although the little gunnery station that the player controls was really (and probably unintentionally) phallic. The ROMs are available for MAME, but that one machine is the only known console.
Not all of the old games are good. Some were poorly-made movie tie-ins, like "Krull" or "Indiana Jones and the Temple of Doom.." Some were fun and even successful but are showing their age, like "Red Baron" which has a nauseatingly slow frame-rate that renders it almost unplayable at times. And some are obvious rip-offs or amalgamations of other games. But many of them are still surprisingly fun to play, even if you are doing the same thing over and over again. And the minimal graphics and compute power lead to game designs that placed an emphasis on game play... That seems to have been lost in many of the modern crop of games that are graphically stunning but just not particularly fun to play. I think this show offers a lot to learn, and like I said, I always find it imspiring.
Here's the complete list of games that I played at the show:
  • Lunar Lander
  • Tail Gunner
  • Red Baron
  • Teeter Torture (One of a kind prototype)
  • Discs of Tron
  • Tron
  • Joust 2
  • Robotron 2084
  • Missile Command
  • Sinistar
  • I, Robot
  • Computer Space
  • Space Race
  • Tempest
  • Gravitar
  • Black Widow
  • Atari Quantum
  • Space War
  • Asteroids Deluxe
  • Turbo Sub
  • Crossbow
  • Rebound
  • Kick
  • Die Alien Scum (Prototype)
  • Rally-X
  • Stargate
  • Wizard of Wor
  • Gorf
  • Omega Race
  • Spy Hunter
  • Tapper
  • Reactor
  • Timber
  • Guitar Hero
  • Joust
  • Ice Cold Beer
  • Star Castle
  • Armor Attack!
  • Battlezone
  • Major Havoc
  • Time Crisis 3
  • Need For Speed – Underground
  • Galaga 88
  • Space Invaders
  • Xevious
  • Crazy Climber
  • Venture
  • Jungle Hunt
  • Deer Hunting USA
  • Indiana Jones and the Temple of Doom
  • Krull
  • Twilight Zone Pinball

Sunday, August 9, 2009

Playing XVID Files on TiVo...

Yesterday I had some XVID files that I wanted to watch with my family on our family room TV. In the past, I have used an S-Video to Composite Video adapter, which I then plug into the 6-to-1 switch box that I put on the TV to allow us to select from the TiVo, VCR, one of three video game systems, or the digital camera input. Unfortunately, I couldn't find the adapter yesterday and searching my garage was not high on my list of Saturday projects. Then I realized that the TiVo-HD is a digital video player, and is already successfully connected to the TV, and is also connected to the home network via 100 MBit/second Ethernet. All I needed was a way to get it to play the video files.

Fortunately, this is a problem that has already been solved for me. A google search on "Transfer Video to Tivo" lead me here: http://www.zatznotfunny.com/gtt.htm

So I downloaded the latest free version of the TiVo Desktop software from here: http://www.tivo.com/buytivo/tivogear/software/index.html

Once I had that set up, I followed the instructions to get it talking to the TiVo in the family room, which just required getting the Media Access Key from the TiVo Messages & Settiles -> Account & System Info -> Media Access Key menu option.

Then I went in search of an MPEG-2 transcoder to convert the XVID files into the MPEG-2 files that the TiVo could play. While there are many pieces of software to do this, they often:

- Provide TOO much functionality, requiring the user to explicitly demultiplex the audio and video streams, transcode them separately, and then mux them back together, or
- Are trial-ware that expires after 30 days or watermarks the video output, or
- Require additional codec packs that may not be obvious or readily available.

After reading various articles about video conversion, I finally decided on "Super (C)" by eRightSoft: http://www.erightsoft.com/SUPER.html It is truly freeware, is easy to use but apparently quite flexible, and as far as I could tell it is widely used and likely legit and not a trojan horse or virus carrier.

Their download procedure is relatively insane, (described in various online forums with a variety of colorful language) in that you have to follow an easter-egg-hunt like chain of links to actually get the software. On that first page, go to a link at the bottom of that page and click on it ( "Start Download Super (C)" which takes you to http://www.erightsoft.com/Superdc.html ) . This in turn leads to another page with another download link toward the top of the page ( "Download and Use" which leads to http://www.erightsoft.com/S6Kg1.html ), which opens yet another page where you will finally find the link to download the setup file at the bottom of that page: ( "Download Super (C) Setup File" which links to http://erightsoft.podzone.net/GetFile.php?SUPERsetup.exe ). Apparently they do this so that they can monitor the referrer and make sure that you get to the download from their website, so you may well need to go through this entire sequence. Failure to follow the breadcrumbs can apparently result in an endless loop of getting booted back to the front page. They have a better description of which links to follow in a download help link on their website. Yes, it is nuts.

Once you finally have Super (C) downloaded and installed, you just need to click the unselected radio button in the upper left hand corner of the window to put it into transcoding mode, select .mpg Output Container and MPEG-II Ouput Video Codec, and MPEG2 Output Audio Codec. Then you can drag and drop your XVID files onto the window and hit "Encode Active File," and soon enough you will have a file that can be dropped into your My TiVo Recordings folder and it is available for transfer to your TiVo.

One of the trade-offs in searching for the "single click" solution to any problem ( like this MPEG-2 Conversion) is that the generalized solution is never exactly the optimal solution. But in this case, since the entire purpose of the files is to live on the TiVo just long enough to be viewed once and then discarded, any suboptimal limitations are as yet imperceptible to me. It might be that with lots of tweeking, I could get the created MPG video files smaller, or slightly better quality, but I just don't care. They were quite good enough for casual viewing before being discarded again, since I still have the source XVID files on my PC.

Since setting this up, I have looked around a bit more and some people have have even written software that transcodes files directly and serve to the Tivo in lieu of the TiVo Desktop software, but I haven't looked into setting this up yet. Maybe some other weekend...

Thursday, July 30, 2009

Distributed Murder

I had lunch with a friend today who suggested that I should post this here. And since I have about 5 other entries half-written, this seemed like something I might actually hit "publish" on yet today...

If you murder someone, you have deprived of the rest of their life... you have literally stolen all their remaining time. If we assume that your victim was going to be fairly long-lived, you might say that they had ahead of them:
- 100 years, or
- 36525 days, or
- 876,600 hours, or
- 3,155,760,000 seconds.

So murder is stealing about 3 billion seconds.

Does it hold then that if you steal 3 billion seconds, you have effectively killed someone? Imagine you are creating a product that will be widely used, perhaps a piece of software. Suppose that software is used by 20 million people, who will start it up 200 times each in the course of using it. But in your haste to get it out the door, it takes 3 seconds longer than actually necessary to start up.

20,000,000 users
x 200 starts
x 3 excess seconds per start
-----------------------------
= 12,000,000,000 (12 billion) seconds

Your minor negligence, coupled with wide spread use, has stolen time from 20 million different people that adds up to four human lifetimes. You have effectively killed four people.

Now, obviously there are a couple of critical flaws in this analogy.

When someone dies, it isn't just their time that is lost, but every interaction with every other person they would have had over those lost years. And all of the secondary, tertiary, and peripheral impact that person would have had but for their untimely death. Those interactions create a web of effects that extends far beyond the local experience or even the finite lifespan of the person themselves. Every life touches, directly or indirectly, thousands of others.

Then there is choice. People aren't (generally) compelled to use your product. If anyone finds the performance unacceptable, they have freedom to do or use something else. Working against this, however, is that the nature of the time theft (only a few seconds at a time) is similar to a fractional-cent rounding problem. Although it adds up to large totals, any given delay is *almost* imperceptible in the course of normal events.

Finally, you can make an argument that those 3 seconds aren't really stolen, that you aren't requiring the user to do anything during that start-up pause, so they will recapture them with some other task like reading another e-mail before they switch their focus back to your program. This leads to a whole different discussion of the cost of context-switching between tasks, but still, maybe the time isn't completely lost.

Even with these flaws in the analogy, it does provide an interesting way of analyzing the impact of widely spread frequently occurring small bits of time. Consider spam e-mail. A lot of people say "Oh, just hit delete and forget about it." But let's say it takes 1 second to identify and delete a spam e-mail. And suppose everyone gets, on average 3 spam e-mails a day. And by "everyone," suppose we mean all 1.5 billion estimated Internet users as of now. That's 4.5 billion seconds a day lost to spam e-mail. Spam e-mail is killing 1.5 people a day.

The time-in-lifespans is also interesting to apply to voluntary pursuits as well. Who wouldn't want to create something so compelling that someone else would contribute their entire life to it? Well, if you make a 126 second long video, you will consume an entire lifespan for every 23.8 million views you get. That means that this video is currently the sole-focus totally consuming life's passion of 2.76 people.

Finally, turning this around, it is useful to think this way to consider whether the things you are trading your life for are worth it... Even the little bits of time spent here and there add up, and subtract from your total limited lifetime allotment of time. 3 billion seconds may sound like a lot, but every second really does count.

Saturday, June 6, 2009

Ever Rising Expectations

On one hand, I know that the accelerating march of technology is a cliche. But I still find it interesting how some things that were novelties a few years ago, and still spreading last year, I just expect now. Three examples that leap to mind are TiVo (or more generally DVRs), cell phones, automotive smart keys.

I called my parents today to say "hi," but they were about to watch the Belmont Stakes, and so we quickly arranged to talk later. They don't take TV particularly seriously, having for years had about three and a half low-quality broadcast channels available to them. We just got their broadcast digital converter box working last weekend, so they now have about 10 nice looking digital standard def channels. And yet still I found myself surprised at the idea of needing to watch television according to the broadcast schedule. Of course they have a VHS VCR with which they could have recorded the race, if it was hooked up (it's not). But I realized that I now just assume everyone has a TiVo or other DVR with which to trivially pause or time shift their TV viewing. Almost everytime I turn on the TV in our living room now, it is paused at whatever the last person was watching. The notion of "live TV" quietly transitioned in my brain in the last few years from obvious to an amusing anachronism.

Likewise, cell phones have made the jump. When I swap contact information with people now, the question isn't "Do you have a cell phone," but rather, "Do you still have a land line?" I still remember telling someone to call me on my cell phone in 1994 and being met with an incredulous "Are you serious?" Now that same surprise would meet the news that someone *didn't* have a cell phone.

And finally, the Smart Key system in my Prius has managed to warp my perception of how cars should behave when I try to drive the minivan or my daughter's Subaru. I sometimes find myself walking up to the cars other than the Prius and standing holding the handle waiting for it to beep happily and unlock for me. Instead, it just sits there. Or sometimes I hop into the driver's seat and reach futily for the non-existent "Power" button to turn it on. The need to actually take the key out of my pocket just seems so retro now.

So what new functions, capabilities, and personal accessories will be so completely ubiquitous that we completely take them for granted in another 5, 10, or 20 years? And how can I start building them today?