Ingredients: prunes, salt.

If you're ever at the liquor store down the block and see a tempting new combination of previously unconnected flavors, and you feel a sudden urge, a tug, to buy that bag of Salted Prune Saladitos and rush home, eager to shut the door behind you and experience something alien and tasty in private, stop. Just pay for your diet coke, leave a penny, and walk home a fortunate, humbler man.


Prune Saladitos: fit for a king with a powerful jaw.

The one Saladito I tried was probably harder than anything else I've been told was food, and certainly the saltiest thing I've ever tasted, including salt. It was like biting a really big, wrinkly pistachio, shell and all. A two-hour soak in warm water did little to soften the nugget, and now this bag sits in my kitchen, awaiting fate. Maybe someday I'll try a fresh one.

You're wondering where else you can read about these formidable treats on the internet. I've already done the background for you, and I recommend learning about diversity with lemons and saladitos.

To be fair, King Henry does make a delicious trail mix.

Buying my TV from the iTunes Music Store?

I don't have cable TV service anymore. Now I have NetFlix and books instead, and so far that's working out OK for me - but as much as I can't handle 300 channels, I would really like to be able to pick a few programs to watch.

Thus, I'm cautiously optimistic about getting my TV over the internet. I think it could be cost-effective for me - cable bills can be pretty expensive, so even though TV seems cheap, consider how much crap you have to watch to get the price per show lower than $2. Is it worth it? Suppose I watch two games a week and three shows each week. At current iTunes rates, that's about $10 a week or $40 a month, assuming I don't get discounts for season passes, or screwed on sporting events. That's not bad.

But is it a comparable product? I watched an episode of Scrubs today, and I'd have to say yes and no.

Buying it went smoothly, not having to watch commercials is pretty great, and I assume I can send the audio to my Airport Express, right? However, you wait for it to download the whole thing first, the resolution is low, pausing and scanning through the video sometimes hangs briefly, and I'm not sold on having the video play in a separate window - it seems like a major afterthought. I'm really curious why iTunes is a worse video player than the Quicktime Player for the same exact file.

The file's 104MB, and I'm not likely to watch it over and over again - what I am likely to do is keep it around because I'd feel guilty trashing something I'd paid for. I'd be much happier if I knew I could re-download these shows in the future, so I'm not saddled with a massive file if I don't need it around.

What's more, I remember pretty clearly sitting in the audience for Steve Jobs' keynote in 2004, and watching him demo super-fast, live, streaming playback and scrubbing around H.264 high definition content. It was pretty impressive. Two years later, where's the HD content? HD would really sell video on the internet - not many people have HDTVs, but lots of people these days have a monitor that can display at least 720p (1280x720), and once you watch sports in HD, you're hooked.

So - I say, bring on the laptop HD revolution. Bring on live HD sports via iTunes. Let me stream it and re-stream it. Let me decide what to pay for - I don't want to have my cash go to subsidize Elimidate, ever again.

VoodooPad life


It's been a while since I've said anything about VoodooPad here, but it deserves another round of kudos - I continue to absolutely live in it, and it gets much more useful the longer I use it.

How I use VoodooPad

I keep a running set of time-stamped pages under "ResearchLog" and "MeetingNotes", and all kinds of linked notes from there that I constantly search, occasionally refactor and refine. "MeetingNotes2006-03-21" leads to "ResearchLog2006-03-22" and so on. With a simple python script to automate making new "Notes" pages, I don't have to work too hard to keep the organization and index pages going, and it's proved to be really useful to recall what I did when, and what problems I ran into.

As I work, I keep a running log of what I'm doing in each ResearchLog page. What I've found most valuable is that I copy in verbatim command lines for configuring and building software I'm using for research (including my own) so I can recreate the same environment elsewhere. This kind of thing has saved my sanity over and over again, enough that I can't imagine working 'bare' (without a VoodooPad window open next to my terminal) any more than I can imagine working without Emacs.

A tip on style

A little attention to text style makes my notes pages more useful and easier to find in the Expose soup. I started using a larger font for the top header and description of each page, so I could distinguish pages easier, and it's made everything a little more pleasant.

Here's a typical set of VoodooPad windows for me - a jumble!

This zoom shows what it looks like at 100% - the large-print title helps me find the window I want without the Expose "scrubbing":

Still, I don't want to have to keep doing this all the time, so I made use of the "NewPageTemplate" page (documentation) and set the styles there - now all my new pages have the style I want, and I don't have to keep using Cmd-Opt-c and Cmd-Opt-v (copy and paste style) over and over.

Update: One comment asked for larger images, but since you probably don't want to see my research notes anyway, here's an RTF file with the contents of my "NewPageTemplate" page.

Matt Pond PA

I meant to post this just after the show, but I didn't.

I saw Matt Pond PA play on March 7th at the Epicentre in Mira Mesa.

The band sounded great, fitting a sometimes symphonic sound from a few band members into a smallish low-ceilinged venue (okay, teen center). I was impressed that their sometimes melancholy songs translated so well to a live performance, and as usual it was fantastic to see actual people play favorite familiar songs in person. As compared to their albums, live, they rocked a little more - which is only right.

However, the band fails to even mention the date on their running tour blog, and I think I know why. Mira Mesa in general, and the Epicentre in particular, occupy an all-too familiar spot right in the nexus of lame. It's hard for me not to feel a little sad whenever I drive through the place, a plateau of asphalt wedged between freeways and topped with a layer-cake of condos, strip malls and "communities". The Epicentre is not a bar or any kind of concert hall - it is a teen center directly across from the local high school. The bathrooms smelled like chalk and institutional cleaners, and although I'm sure I'd have visited the place if it'd existed near my high school, it was clearly trying too hard to be both cool and safe, two things which can never coexist, especially if you're a minor.

I'm a little embarrassed for my adopted city because too many bands will experience San Diego as a place where they draw ten percent of their usual crowds and are forced to play at the diner from Saved by the Bell.

In summary, Matt Pond PA was very good, and I really hope they don't hold a grudge.

What a relief.

Really, it is a little encouraging that after so many years of staring at browsers, I can still thoroughly entertain myself on a Sunday afternoon by reading the homepages of total strangers.

However, if it's still winter, a north-eastern transplant to Southern California does have to be careful when reading accounts of wool coats, comforting snowfall and hot soup at just the right time. It's been a long time since I've actually wanted hot soup. Say what you will about the weather in San Diego - I was debating shorts when I walked out for my coffee today, and sandals were a given, but this kind of weather has never really supported a good bleak mood like a nice cold snowy day would, back home. Sunny blue skies have a way of making you feel ungrateful if your smile doesn't fit right today.

Now I realize why it seems like so many people here are healthier than the rest of America. If I can't maintain a satisfactory sulk under bright sun and pleasant breezes, I have to resort to working out. It'll do the job, but sometimes I really do miss the old way - a blanket and a book, with hollow curses aimed at the weather.

MarsEdit 1.1.2


Review: My weblog editor of choice.

Mar 16, 2006

Michael McCracken

San Diego, CA 92109

product MarsEdit 1.1.2

MarsEdit was recently updated to version 1.1.2, with a few bug fixes. I really like MarsEdit - It does what I need and stays out of my way. I'm not the most demanding user - I have one WordPress weblog and don't keep up with the latest in blogging tools. I did have my own customized weblog editor, Blapp, that I used for years, so I was expecting to find plenty of things that annoyed me about a program that wasn't written just for me. To my surprise, it felt comfortable right away - I got started posting with MarsEdit quickly, and haven't had to learn about all kinds of features that I don't use. Thumbs up.

*[ Mar 16, 2006 ]: 20060316T1155-0800

Static Bug Checking in Open Source software

Coverity, the company formed by the people behind the Stanford MC Checker, has started posting regular reports from their analysis tools on prominent open-source projects at

I found out about this through an email from the Coverity CTO on the GCC mailing list, and it seems to have been received with some moderate enthusiasm. I think it's a good idea, but as usual the specter of false positives makes the developers itchy, especially when they're publishing bug counts...

Dawson Engler, the professor at Stanford who was behind all this bug-finding work (and co-founded Coverity) gave a talk recently here at CSE, about newer approaches to finding bugs that uses execution on symbolic inputs - meaning that you mark some inputs to a program as symbolic, and somewhere there's a theorem prover that goes to work finding out if any value of those inputs can cause an error or a crash - then you can run the original code on the input to verify the problem. A nice consequence here is that the generated 'bad' input is then guaranteed to actually be bad, since you can test it and force the error.

There's a paper about that from Engler's group here, and apparently this PLDI 2005 paper from Bell Labs is very similar.

Here's Prof. Engler's slides from talks about the new work on bug finding and an entertaining talk about commercializing the MC Checker.

Really could've used a MagSafe plug today

I don't remember, but I must have just shot off the couch. You see, when I caught the power cord of my Powerbook in between my toes, there was enough velocity to pull the laptop halfway across the table. It punted my full coffee mug into the hallway, contents flying everywhere.

The laptop caught some coffee, but avoided the full soaking that the rest of the table got, with the neat trick of being off the table by the time most of the coffee hit.

I'm just really glad that my carpet is brown right now.

Anyone else vote for a MagSafe retrofit accessory? I'd drop $29.95 for sure.

Concurrency is about to be everybody's problem

Herb Sutter, software architect at Microsoft, chair of the ISO C/C++ committee, and blogger, gave a talk this Monday about the impending concurrency revolution and his project, Concur, an extension to C style languages to support usable concurrent programming. I enjoyed his talk in spite of the job-fair atmosphere (it was also a Microsoft recruiting event) and having to stand the whole time, so I'd say it was a good talk.

Check out his article "The Free Lunch is Over" for a programmer's viewpoint on what to do with the processors we're currently faced with. This is a very exciting time for computing - parallelism has always been the future, and the future is finally now. I am increasingly convinced that as a programmer, if you resist learning how to program concurrent systems, then you will be obsolete very, very soon.

The reason is that processor architects have density to waste, but they have nearly run out of ways to use extra transistors to make single processors faster - so they're happily just shipping chips with bunches of smaller processors. According to intel's (nicely readable) Platform 2015 site, Dual and Quad-core isn't nearly the end - today's college freshman will likely start out their career programming not "multi-", but "many-core" systems (think 'at least hundreds'), requiring hundreds or thousands of independent threads of execution to avoid leaving performance on the table. Are we preparing students for this? I doubt it.

So, should we all run off and learn all about pthreads and mutexes? No - concurrent programming is really hard, even to get it almost right on a toy problem. In some areas (like servers and mathematics used for scientific computing), concurrency is a "well-understood" problem, but even there it's widely understood to be hard. No wonder everybody's been avoiding it.

This is really a problem for language designers, framework designers, and compiler writers - how do we build an environment where a reasonably competent developer can write and debug programs with a very high level of concurrency? For everyone else, just keep your eyes peeled - they're working on it.

To quote Maurice Herlihy, from an invited speech (ppt slides) at 2005's PLDI conference (for compiler writers and language jockeys), This situation amounts to a "PLDI Full-employment act". Interesting times, indeed!