Epson offers the "PictureMate" -- a $199 printer with 100+ year archival pigment inks (6 colors), 1.5min/page at 4x6, and 29cents / print (including ink and paper). This is 2x cheaper than most desktop printers, and seem s to be an exciting development for home printing.


Civil disobedience through Photoshop?


Your virtual friend who's fun to be with...

So ActiveBuddy turned into ConversAgent.. and they managed to get Nokia using their service. Now they're advertising on AIM. I know it's not nice to pick on those with artificial intelligence, but I just couldn't resist.


Bush demands Internet access tax ban | The Register

And I was actually impressed until I read this part:

Bush demands Internet access tax ban | The Register: "'Now, the use of broadband has tripled since 2000 from 7 million subscriber lines to 24 million,' Bush said. 'That's good. But that's way short of the goal for 2007. And so - by the way, we rank 10th amongst the industrialized world in broadband technology and its availability. That's not good enough for America. Tenth is 10 spots too low as far as I'm concerned.'
Don't worry, George. We'll hit zero before you know it."


compiler missing, now what?

I had a professor in college, who upon watching me code for awhile, was left shaking his head. Something like "Well, back in my day, we had to get everything right before compiling. He was from the punch-card era, when round-tripping through the compiler was a 24-hour cycle, and he couldn't believe that I would just haphazardly type "make" all over the place, just to see if I had typed things properly.

So today, I had to upgrade a small header file in Visual C++, so I visited the Microsoft Platform SDK site and asked for it to update me.

The Platform SDK is a large piece of work -- fully installed it uses 600MB+ on disk.

So I shouldn't be surprised, but yet I am, that when I actually tried to update this single header file, I watched in considerable horror, as the updater deleted my entire previous install, not just of the Platform SDK, but of DirectX too. It deleted the old files, then started to get the update.

One hour later, the SDK updater declared itself done, except for the niggling fact that DirectX is no longer part of the Platform SDK (you can of course download an SDK to help you control a Windows Media Server, but not to draw graphics to the desktop), so it had deleted DX without helping me reinstall it. So I started the remaining 218MB download for DirectX.

Another 45 minutes went by. And finally I had DirectX9b and could run my compiler again.

But what happened in the intervening 2 hours was actually pretty interesting.

It was a sort of wonderful timewarp. I finally understood the punch card comment from my professor -- I could almost hear the long-lost echoes of the punch-card reader on my desktop! Because no matter how much I might have wanted to, I just couldn't compile.

I just couldn't compile to see if I had properly declared some const-mess properly, or if I had made a typo, or if I was calling a Windows API with 14 arguments in the right order. I just had to look, and look again, and then move on, creating this sort of code silence all around me.

I do believe this sort of thing is good for focus -- there are no interruptions at all.

But now we'll see if it all compiles.

apostrophes observed in late-night dining

I was just considering the local establishments, and noticed a pattern:


and even

My observation is that perhaps "'s" is a secret codeword for "open late".


And comments from the ever marginally insightful /.

Videoconferencing company Forgent Networks, Inc. filed suit Thursday against 31 defendants, including Apple Computer , for using its JPEG digital image compression patent without paying a licensing fee. In making the announcement , a company spokesman said damages could end up being in the millions of US dollars for each company.


A great metafilter find: The Number Spiral

noah posted a picture of lorna today!

The Combinatorics of Porn?

At no time in our country's history has porn been so widely accepted and integrated in our mainstream culture as now. The explosion of the internet has turned a world that used to mean frequenting sketchy booths in Times Square into something anyone with a computer and a phone line can explore from the privacy and safety of their own homes.

With the recent and tragic news of the HIV outbreak in the adult film industry, the world has suddenly gained an expert level understanding of the inner workings of porn. Even with mandatory HIV and STD tests every three weeks, one HIV-positive actor can infect a tremendous number of others very quickly. As the test results filter back, I'm impressed with the swift response AIM has provided, but I really wonder what else can be done to slow the potentially exponential spread of disease in this situation.

There are about 1200 adult film stars who get tested every three weeks. But what if adult film performers were limited to cabals of 30 performers. They could work in rotation, every six months, and in the event that a person in the group contracts a disease, first, second and third-generation exposures would automatically be limited to 30 people.

Even with just 30 people per group, you've got 225 different potential pairs, plus 6300 potential threesomes. That hardly seems like a lack of variety. And, for the last five years, limiting options has certainly worked well for Jenna Jameson.


Global signatures for filesystem contents

I've been using the "rsync trick" to backup my data for a couple years now. By creating hardlinks to historical files, and then rsync'ing on top, you can easily create a multi-day history of a filesystem. This idea first found me while reading slashdot, and I've adapted it to several of my own purposes since.

But recently I had this idea of looking at a filesystem as a collection of blocks (which they are, fixed-size in most implementations, and variable in a few), and considering what happens if you hash each block by content, and keep an index of those.

With such a structure, you could refcount each block written to a device, and if you were about to write the same block contents, you could simply refcount the existing block and not allocate one. I believe that contiguity would not be a problem (random seeks would only happen if you scrambled the blocks, which doesn't happen too often), because mostly you'd have copies of files that were slightly different than existing ones, or exactly the same, so files would refer to existing subsets, and seeks would be minimized.

Let's say you want to store 1TB using 32K blocks using this scheme -- you're talking about 256MB of hash information (to do 64-bit hashes, though you could get away with 32-bit if you wanted to do more checking). Probably you'd keep this in RAM, because there would be very little cache coherency.

But suddenly, you'd be able to write the same 1GB file to disk 10 times in 1.01GB. There are a lot of applications, backup among them, where this would be a very interesting thing to do.

So I guess I should crack open the Linux source, and start "backupfs" -- maybe it'd get done even.

hey i mirrored this livejournal script -- it'll pull the last 250 images from LJ and show them all at once. It's at


Why DLL Hell isn't easily solved

I've been having quite a problem for a few weeks with my machine at home. It's been refusing to register ActiveX controls. Since we ship one as part of Hello and we've been adding all kinds of neat bells & whistles to it, this was causing some huge issues.

So I fired up regmon with a vengeance tonight, and proceeded to go over regsvr32 output until things made sense again.

I found an interesting reference to Napster, which had registered ATL.dll (ATL's a framework Microsoft provides for ActiveX). Of course, I'd removed Napster, but the registry still believed in Napster's continued existence. So Windows thought ATL belonged to Napster, but ATL.dll wasn't there. Ah.

(BTW, I believe this to be Napster 2.0, not the better Napster.)

So Windows thought Napster 2.0 was still around, and in fact, this file I very badly needed wasn't there at all. And I remembered some of the interesting claims Microsoft was making about WFP (Windows File Protection), that it supposedly solved this very problem.

But then my second thought was, sure, WFP works with full applications. But Internet Explorer is only one application. And quite simply, there's not much way to distinguish ATL.dll running in one IE plugin from one running in another. I suspect they don't try to link multiple copies of a DLL into the same process.

I typed "regsvr32 atl.dll" to fix things and I'm all better again.

But don't let anyone tell you DLL hell is all fixed. Not yet it isn't.