What’s wrong with being a hairdresser?

OptionsScalper’s kid got a 3.93GPA on her report card and he feels relieved she won’t be a hairdresser. I once heard a computer programmer testifying in his bankruptcy hearing that his ex-as-of-last-month-wife was a hairdresser in Palo Alto and made $160,000 per year. (I was there under the mistaken belief that the bankruptcy hearing was for his company, which owed me pay for three months worth of consulting.)

Great pay. Probably pretty challenging days (“Make me look like Britney!”) but I doubt it’s the kind of stress you take home. Make your own hours. No chance of being stiffed for 1/4 year’s worth of work (and don’t pretend that you refuse clients who don’t pay Net 30). No chance of being outsourced to India.

There are a lot of chemicals, though.

XBox360 as a media extender: Failed to stream DivX

Tina’s been a little, errr … skeptical … about how enjoyable it is that our living room now reverberates to the sound of up to 8 Ferraris simultaneously trying to negotiate a corner in downtown New York City (in surround sound!). So I thought I’d investigate XBox360 as a media extender.

First, I installed “Media Connect” on one of my XP boxes and was able to send pictures and music to the XBox. Very nice, although the XBox360 interface is not nearly as nice as the Windows Media Player interface for Vista.

Then, to see if it would work, I installed XP Media Edition in a Virtual PC (works, with some fidgeting). You then install a software package that allows the Media Center to use the XBox as a media extender (that is, the delivery point for the Media Center PC’s functionality. Of course, one of the first things originally said of media extenders is “they don’t have fans,” which the XBox360 certainly does). Now, I could stream pictures, music, and video to the XBox.

Except when I tried to send video, the MCE said that my network link wasn’t sufficient to handle it. This isn’t a surprise, as I have only 802.11g connectivity (MIMO may be my Christmas present to myself). Nonetheless, I overrode the warning for the sake of the experiment. If I could really create a single media hub that could stream to the living room, I’d be willing to run a wire along the baseboard….

But the key question is whether I could stream DivX to the living room. So, knowing that the DivX codecs don’t ship with Windows, I wasn’t surprised to have to go to divx.com and download the free codecs (you download the 6-month “Creator” and uncheck the trial software — it’s perfectly legitimate, it’s basically a brilliant way for DivX folk to market their commercial products). Ta-Da! I could view DivX in Media Player.

I fired up Media Center and tried to stream DivX to the XBox360. On the 360 it said “Codec unavailable.” Since there’s no way to install the DivX codec to the 360, that seemed to be the end of it.

However, while Googling around looking for fellow DivX streamers, I noticed a persistent “Use Windows Media Encoder to transcode DivX to .WMV and stream that,” suggestion. Well, WME is just a download away, so I tried that. Six hours later, I had transcoded an hour of DivX video. It wouldn’t stream to the XBox. Codec issue? Network issue?

Before I debugged that, I wanted to check one thing that has consistently driven me crazy. It actually is what this whole issue is about: although DivX synchronizes perfectly when watched on the PC, there’s something about transcoding it for display on a TV that throws the sound synchronization off. This whole project is essentially to free about 12 hours of video I archived in DivX and have been unable to use in DVD projects. So I took my transcoded-to-WMV video, burned a DVD (took 3 hours to transcode that into MPEG-2 for DVD) and put it in the 360. I forwarded to 30 minutes into it and, sure enough, the sound was off by 4 or 5 seconds.

The experiment seemed to be over. Since I can transcode non-DivX-originating WMVs to DVD without a sound problem, but any transcoding of DivX-originating to DVD seems to introduce a sound problem, I assume that there’s some mojo about DivX-originating streams.

The XBox360 doesn’t seem to be a solution. As far as I can tell, what happens in DivX, stays in DivX.


Stream Music via FM

A few weeks ago I bought a Griffin RocketFM Transmitter, a super-clever USB gadget that allows me to stream music from my desktop machine (in my office) to my living room stereo system. It works perfectly — I can listen to KEXP, podcasts, what-have-you. The fidelity, I’m sure, isn’t what you’d get from a dedicated media hub, but for $29, it’s a heck of a bargain. Recommended.

XBox 360 Experiences

So my determination “not to open the XBox 360 until I finished my month’s work” lasted about 24 hours. Yesterday was Thanksgiving, for heaven’s sake! A holiday! Heck, I wrote 700 words in the morning. Only 3,500 to go before next Wednesday. I’m cruising, for heaven’s sake.

The first thing about the XBox 360 experience is that it really, truly is the ultimate culmination of really annoying plastic sealing material. I thought that the finger-slicing material on the box itself was the pinnacle, but then when I got to the wireless controllers? Oh man! Unbelievable! The plastic, with its scissor-defying ridges and turns is right next to the controller, so there is just no angle of approaching this they haven’t thought of, and defeated!!!!!

And what they do is seal a piece of cardboard inside, too, so you can’t use a “cut a slice with an exacto and then run the razor along,” trick! They’ve totally outfoxed that!

Then there’s the famous power transformer, which is big enough to place a cushion against and lean against. But boy, wait until you turn this puppy on! It’s unbelievable!!!!!!

You really can’t get that kind of white noise without dedication. The roar of the fan reminds me of the time me and Sharon Sibley did it in between the air conditioning units on the roof of the Boston Museum of Science! (Good times.)

So then you press the button on the front and it makes that “clunking” sound that CD players make when they die. You know the one I’m talking about. And you do that a couple times in increasing panic before you realize that they’ve got a strip of transparent sticky tape over the tray in order to fake you out. Oh those guys!

Then, when you pop out the tray, it’s like the most feeble-looking array of “oh, you’ll be breaking this soon” struts and rails. I haven’t broken it yet, but I’ll get it soon!!!!!

And then you play some really great-looking game, like Project Gotham Racing 3.

And so then, you go online to XBox Live, because they have this thing called “TruRank” that matches you against people of similar skill — killer feature. And because they have “zones” where players with different ‘tudes are supposed to hang out. And because the thing’s been out for, like, 24 hours, so how good can anyone be in the game?

Oh man!!!! In my first race, the TruRank puts me up against the guy ranked 21st overall. And I don’t know if it was him or the other people, but they were all, like, swearing at each other and me, which was great, because when you play a game for the very first time online it’s super motivating to have Al Swearengen on the other end of the line.

Ay yi yi.

XBox tag: KonaKoder. See you online.

Scored an Xbox360

Much to my surprise, my local Costco had 23 units. When I arrived an hour before opening, I was 9th in line and, when I left the store they still had at least 4 units sitting in the cage. (Ah, the joys of living in a small town!)

Now, in an unmatched exhibition of self-control, I won’t open it until I finish the 20-30 more hours of work I have scheduled for the month. Argh!

I bricked my SMT5600 Smartphone

I decided to switch to an official Cingular calling plan now that it’s been a year since AT&T Wireless went away. I took in my year-and-change-old $300 SMT5600 Smartphone and was told I’d have to get it unlocked before it would work with Cingular. (But it already works with Cingular…)

So I went a-Googling, installed a couple programs, did the steps, and everything seemed fine. I had an unlocked Smartphone. For 48 hours. Then… bam! … a brick. Doesn’t boot. The signal light doesn’t blink. Tried a different battery, that doesn’t work.

I hate computers.

So I put the SIM card my new Cingular account into my old Pocket PC Phone Edition XDA and started carrying that around. You know what? I forgot how useful a real PDA was. You can actually enter tasks and calendar appointments and jot down numbers. It’s twice as big as a phone, but so what? It’s not like it’s heavy. No bluetooth, but I’ve yet to find bluetooth important.

The Multicore Revolution And Language Design

The software development community is about the fall off a cliff.

  • Single-threaded programs will never run faster than they run today

Think about it: clock speeds have maxed out and no mainstream programming language is automatically parallelizable. Pissing matches about Java versus CLI generics are irrelevant. The Intel and AMD roadmaps show that for the next decade, any real advances in speed will come from programs that can exploit multicore chips. Sure, there’ll be incremental improvements, but exploiting Moore’s Law will require programs that can split themselves up into fragments.

This will be the theme of the next decade of programming.

I’m utterly convinced of this, as convinced as I was in 1989 that Computer Language magazine needed to embrace object-orientation and event-driven GUI programming and as convinced as I was in 1995, when I was so impressed by the first beta of Java that I quit the publishing industry to develop Internet software.

Every high-paying programming job is going to require exploiting multicore chips. There will certainly be maintenance jobs, there will certainly be niches for low-performing vertical apps, but justifying a six-figure salary as a programmer, designer, or architect will require a mastery of multithreaded application development.

So in terms of analyzing language design for the mainstream, parallelization has to become the central concern, because parallelization is what productivity is going to be about. I started writing this intending to talk about C#’s anonymous delegates and that language’s use of references for outer-variable capture. It’s an interesting topic, but I wanted to put down the stake on the whole multithreading thing. More tk…