I've been a faithful spamassassin user for a long
time. Never thought much about how it worked, just been happy.
But a lot of spam is leaking through the last month, so I went looking
for a tuneup.
I tried my new spamassassin setup on 594 emails my old
spamassassin setup said were not spam. The new setup correctly
identified 342 as spam and 247 as non-spam. It identified 5 messages as
non-spam when in fact they were spam, and a reassuring 0
messages as spam which were not spam. This is all excellent!
Of the 342 newly-found spam, 303 were caught by the Bayesian filter, 172 by Pyzor, and 160+ by Razor. Update 2004-01-16: I made a boneheaded mistake in this evaluation. I trained the Bayesian filter on some data, then tested it on the same data. D'oh. The reality is the Bayesian filter is still much better than without, but not quite as stellar.
After surveying
BitTorrent
download traffic for Matrix: Revolutions last month I thought I'd
check out download traffic for a movie that
didn't suck.
![]() 10,000 people grabbing a 2 gig file is a lot of video on demand. Still, crappy quality. The one sample I saw had decent sound and the picture didn't shake but the colour was all washed out. The cinematography in ROTK is so beautiful $9 is a bargain. ![]() Folks have found various ways to install custom software on it. There are two basic routes: a full Linux install or adding homebrew programs to the native OS (a stripped down Win2k). Of the homebrew programs XBox media center has gotten the most attention. It's a multimedia suite that plays movies, music, photos, etc from the local hard drive, from DVD, or streamed from a server. XPort is also impressive. One individual has ported about 20 different emulators from Windows to the XBox. Gameboy, Nintendo, Playstation, Atari 2600, Intellivision, Apple ][, etc etc, all running neatly. Quite an achievment. Many folks have speculated that Microsoft's plan with XBox is to slowly move Windows into the living room. The existing XBox hardware is already sufficient to do this, it's just the software isn't readily available yet. The hacker scene is about a year ahead. ![]() I'm still trying to fix my account after November's customer service meltdown. For the last six weeks customer care has "been experiencing heavy call volume" with "wait times longer than 20 minutes". The worst thing is the damned ads they play at you while you're on hold. As seen on Howard Forums
I bought the hype that 802.11g is 54 Megabits/second.
I paid extra for expensive 802.11g gear.
I had this stupid idea that 802.11g's 54Mbps was close enough to
100Mbps ethernet that I didn't need to run wires in my house.
It says so right on the box of my Linksys
WET54g
and in the product
sheet: "Wireless-G (54 Mbps)".
This is false advertising. The fastest 802.11g will go is 20Mbps, not 54Mbps. And in a mixed 802.11b/g network the fastest two 802.11g devices can go is 14Mbps. I verified this with a WET54g sitting right next to a WAP54g. Throughput on an FTP? 12.8Mbps. And this is best-case, quiet network with devices right next to each other. In a real deployment I get 30% packet loss. Between speed, security concerns, and general flakiness wireless is really not a reasonable option for regularly copying 2 gig files around. Good thing Amazon has a generous return policy. At least I get my $150 back.
One of the Bizarro-world realities of today is
that the same White House folks who conduct the war on Iraq were
sucking up to Hussein as an ally 20 years ago. Two items on
this. First, a lovely
Mike Luckovich cartoon
Second, a story in today's NYT:
Rumsfeld
Made Iraq Overture in '84 Despite Chemical Raids.
As a special envoy for the Reagan administration in 1984, Donald H.
Rumsfeld, now the defense secretary, traveled to Iraq to persuade
officials there that the United States was eager to improve ties with
President Saddam Hussein despite his use of chemical weapons ...
"The Iraqi leadership was extremely pleased with Amb. Rumsfeld's visit," the memo said. "Tariq Aziz had gone out of his way to praise Rumsfeld as a person." Dec 20 was the 20th anniversary of Rumsfeld and Hussein's handshake. More: National Security Archive. ![]()
The music industry's attempts to force digital data to behave like
physical objects has had two profound effects, neither of them about
music. The first is the progressive development of decentralized
network models, loosely bundled together under the rubric of
peer-to-peer. ... And the second effect, of course, is the long-predicted and
oft-delayed spread of encryption.
The cypherpunks movement is a
very powerful set of ideas. But they all slammed into the wall of
consumer indifference. I think Clay overstates the case a bit, but I
agree with him that the RIAA is driving crypto.
The other place that the RIAA is setting the cypherpunk vision in motion is their own DRM technologies. Watermarks, locked media, Palladium: it's like a cypherpunks wet dream. Only it's a nightmare: the cryptokeys are in the hands of just a few people.
Jon Carroll has an insightful and amusing
column
on the idea that Howard Dean is a wild-eyed liberal.
So what Howard Dean said is not radical or remarkable or
innovative. I mean, he's an interesting guy, and I might even find
myself voting for him, but he's not Roosevelt or anything. He just
hasn't signed on to the Official Bush/Cheney/Wolfowitz worldview,
which makes him a suspicious character indeed.
![]() The detentions of hundreds of people at Guantánamo is pretty bad. The Bush Administration has been arguing that since the detainees are in Cuba, they have no rights under US or, presumably, any law. Nice! Fortunately the Ninth Circuit said that was ridiculous since the US runs the camp in Guantánamo. While Guantánamo is bad, the case of Jose Padilla is horrible. Here we have a US citizen, arrested in America, and the government has been claiming he has no rights. Secret detention by the US government: no lawyer, no charges, nothing. It's absolutely outrageous, and finally a court said so. Even if the man is guilty of all he's charged with, that's no excuse. Americans have died defending our freedoms for over two hundred years. Bush's Justice Department seems happy to trample all over that, the courts are finally responding. ![]() Watch Paris and Nicole show up an hour late to milk the cows and spill the milk everywhere. That's OK, they'll just 'work' at the fast food place tomorrow! Watch the well-meaning Sonic manager try to train the rich girls for a wage slave job. Watch the rich girls ridicule the job behind the manager's back. That's OK, they'll just 'work' somewhere else tomorrow, and after the show is over they'll go back to being rich. After 'the girls' are back in their vapid lives the farmer is still going to be working his ass off trying to make a living with dairy cows and the fast food manager is still going to be working as hard as she can at $7 an hour to make ends meet. And that's going to be the rest of their lives. Rather than sympathizing with the hard and honourable realities of being lower middle class in rural America, the show turns it all into a cheap disrespectful joke.
The media is
stoking the fear
that this year's flu season is going
to be worse than ever. Remember 1918?
Lovely bit of alarmist infographics. Does the line continue to go up?
Is it reporting bias or a real trend?
My friend Marc points out that in this infographic the flu is Republican. ![]()
Of Halliburton's $2.64/gal, $1.17 is the price they pay in Kuwait, $1.21 is the cost of Halliburton transport, and $.26 is Halliburton's explicit markup. This is just a tiny example of the cost of oil and defense companies owning the White House. The Houston Chronicle has Halliburton's story.
I'm with
Steve: HTTP already has plenty of ways to handle caching, don't
invent something
new for RSS/Atom aggregators. If they just follow Mark's
rules (handy tests and
instructions), life
will be fine.
I worked hard to help HTTP caching on my blog. It's complicated, particularly with the pastiche of dynamic content I have. Used to be 40% of my weblog requests were answered with a bandwidth-saving 304. When I added my linkblog it went down to 25%, probably both because the HTML view changes more often and because I removed ETags support. Most aggregators do fine. Radio Userland is having trouble since I turned off ETags. And NetNewsWire has a surprisingly low number of 304s, although a quick inspection doesn't show anything obvious. ![]()
Recognizing distinctions such as the "territories" helps show the
human face of a population that is now — to most San Franciscans —
both extremely familiar and painfully foreign at the same time.
From Car Nation to the Heroin Zone to the Service / Crack Zone, it's
all there. Fodor's 2004 should include this info.
Thanks to Impacket I now
have a bit of fascinating news: most of my blog readers have an MTU of
1500 bytes. The Maximum Transfer Unit is the size of a TCP packet. You
want this to be as big as possible. 1500 is
generally the limit on the Internet (it's the Ethernet limit), but
smaller sizes may be better depending on your net connection.
![]()
# Print out sizes of IP packets
import pcapy, impacket, impacket.ImpactDecoder decoder = impacket.ImpactDecoder.EthDecoder() # packets = pcapy.open_live("eth0", 1500, 0, 100) packets = pcapy.open_offline('/tmp/cap/capture') packets.setfilter('ip') for i in xrange(100): (header, data) = packets.next() eth = decoder.decode(data) ip = eth.child() print ip.get_ip_len() It's brand new. The docs are nearly nonexistent and the library isn't as Pythonic as one would hope. But it works pretty well! Compare also scapy (less libpcap-like). PS: I ran into a problem installing on Debian
ImportError: /usr/lib/python2.3/site-packages/pcapy.so: undefined symbol: __gxx_personality_v0
The workaround was to link the .so with g++ instead of gcc.
This is either a bug in gcc or Python distutils.
![]() The SF Chronicle is running a five part series on homelessness this week, presumably timed to go with the mayoral election. The first article Shame of the City: Homeless Island is heartbreaking excellent journalism. So are the photos.
In between stints at panhandling, the Islanders sleep, shoot heroin,
drink or smoke crack or cigarettes. When they eat, it's not much,
mostly sweets. ...
"We want to get off the street, but I got to tell you true," he said. "Unless they take people like us and put us somewhere where we can't keep fucking up, we're going to keep fucking up."
One thing I do to save bandwidth on my bog is make tiny images. But
what's important is number of packets, not bytes. I just
measured in a packet sniffer. For an MTU of 1500 bytes the first HTTP
response packet contains roughly 1130 bytes of image data. Every
other packet contains 1460 bytes.
Being conservative, optimal sizes for small images are 1100, 2560, 4020, and 5480. 3000 is no better than 4020.
Since learning Python ten months ago I've been a much happier hacker.
I'll never go back to Perl again, and I'm increasingly frustrated
working with Java. Here's some of what I've written in ten months:
![]() The most distinctive thing about our turkey compared to a freakish grocery store turkey was that the dark meat was dense and really, really dark. Much more like a game bird. The drumsticks tasted great but were very chewy. That may be our cooking fault.. The breast meat came out juicy and very flavourful, much better than the usual supermarket mediocrity. There was also a surprising number of tendons in the meat, not to mention a lot of fat in the skin. Good gravy! I'll probably try a heritage turkey again, but it needs some practice. See also Slate on various turkeys. Anyway, Thanksgiving dinner is more about side dishes and wine than turkey. The corn pudding with chanterelles and cranberry jalapeño relish were great, and the 1978 Santenay was elegant if a bit light to stand up to dinner.
Somehow, Macy's survived.
![]() The tool design is great, very simple and clean (other than the color swatch display; more functional than æsthetic). I love the implementation: a single 'live' web page running a bunch of complex javascript. As seen on
clagnut via
diveintomark
![]() Alas, the demo of DX:IW disappoints. Fans are up in arms that the game is dumbed down for consoles, lacks the subtlety that made the first game great. I found the demo unplayably laggy until Warren Spector posted some fixes. Even then it only seemed OK; nice visuals, boring gameplay, stupid UI. Kind of a shame: instead of building excitement the demo seems to have made me worried about whether this game is up to snuff. ![]()
Once, simply sticking a turkey in the oven for a few hours was enough.
Today, chefs have to go to heroic lengths to try to counteract the
turkey's cracker-like dryness and lack of flavor.
The article spends too much time on the horrible conditions the
turkeys are raised in. That's a shame, but what I really care about is
the destruction of flavour and individuality in our food. I
did
something about it: my direct-from-farmer Midget White should be
here tomorrow.
![]() Thanks to Weaknees I was able to repair it in about half an hour, replacing the drive with a newer (4x bigger) one. I could have done it myself with the info in TiVo Hacks, but the extra $40 Weaknees charged me is worth the half day of aggravation saved. The experience has bummed me out a bit about TiVo:
I watched The Matrix again tonight, partly because my TiVo is sick and
partly to erase memory of the horrible sequels out of my mind.
Now I understand what made the first film so magic:
the interplay between real and simulation. The film toys
with us, showing us little glimpses of the synthetic. Deja vu, the reality
of bullets, the ability to do kung fu. And the lovely Cronenbergesque
bits, the baby with the hoses, the bug, the sockets in flesh. The whole film is
a discovery of unreality.
The next two films strand us, in the words of the script (and Baudrillard), in the desert of the real. Ugly boring world with stupid Zion hippies. And Neo is already brilliant and all powerful, so there's no discovery. No pleasure. This is reflected in the special effects technology. The first Matrix film is beautiful because it is, ultimately, a film. The FX are mostly film tricks (slowing, rotating) and the stunts are mostly human stunts, people on wires. The reality-based effects work highlights the gap between the Real World and The Matrix. By contrast the digital effects work of the second two films is just unreal. And boring. There was no way to make a good sequel.
Massachusetts has temporarily
allowed gay marriage (it won't last), and already the Democratic
candidates are panicking. Or as the NYT
article says:
Most of the Democratic presidential candidates went to great lengths
on Tuesday to emphasize that they opposed gay marriage, even as they
restated their support for some forms of legal rights for same-sex
couples. But the candidates also voiced strong opposition to any
constitutional amendment barring gay marriage; supporting it would be
nothing short of suicide in a Democratic primary. But that stance
provides what even Democrats said would be a clean target for
Republicans to hammer next year.
This prevarication is what is so awful about America's mediocre two
party system. The Democratic candidates are all too craven to actually
take a leadership stance on social issues. Bush isn't afraid to be
hateful:
Marriage is a sacred institution between a man and a woman. ...
Why can't a Democratic candidate be equally forceful, but in a humane
way? One thing I admire about Dean is his willingness to actually take
strong positions. But even he shies away from gay 'marriage'. At least
he favours gay
partnerships with pretty much all the legal protections of
marriage, and even enacted such in Vermont.
Today's decision of the Massachusetts Supreme Judicial Court violates this important principle. I will work with congressional leaders and others to do what is legally necessary to defend the sanctity of marriage.
— I remain your second class citizen, Nelson
AOL Instant Messenger has a new feature: message routing.
You can now log in AIM from more than one place and get multiple
copies of messages.
When signed into multiple locations:
I've used a slimp3 in my house
for awhile now. Simple MP3 network appliance: small screen and remote
control streams MP3 from your server. Slim Devices has now released
a wireless version, the
Squeezebox.
The biggest change is built-in 802.11b; no more need for an wireless/ethernet bridge. They also put in a digital out and wrapped it in a more conventional case. Looks like nice improvements. ![]() The real challenge here proved to be doing serial I/O. The excellent PySerial helped. But I'd forgotten how hard it is to write code to read data from a device that's slow, particularly when you don't know how much you're reading. I should have tried out Twisted, like Matt Biddulph did, but asynchronous programming seems like overkill for a small project.
The Sony Ericsson T616 has a Bluetooth adapter that acts like a serial
port. If you put the phone in serial mode, it understands
a wide range of AT commands.
Some useful references:
R320s_WP_R1A.pdf, 888_r1d.pdf,
AT Test
commands,
Google search
for [CPBR ericsson].
I hope to use this to modify my contact list
at+cpbr=1
I bet floAt's Mobile
Agent uses this protocol.
Other folks have hacked their phones to be remote controls
(Python,
Perl).
Phonefront is a commercial
control app.
+CPBR: 1,"14159990000",129,"Nelson/H" at+cpbw=4,"999",129,"Test" OK ![]() The site's in Japanese. Poetic automatic translation:
Boss rearing vertical scroll shooting.
The boss it comes out. When it pushes down, it becomes strong. Keep
exceeding we.
Pleasure of destruction. Excessive explosion. Labor is not spent to
drawing the picture (because you grow tired).
As seen on Twysted
![]()
My dollar calculations are off; I don't know my real rate. What's interesting is the incremental costs. Running CPU jobs at full-tilt takes another 30W on my Windows box, or about $3/month. AMD's power management bug blows. athcool on my Linux box is saving me about 40W. If I could run VCool on my Windows box it'd save another 30W. Bottom line - configure power saving on your monitor! And turning off your computer really makes a difference. ![]() ![]() Because their customer service is fubar, that's why not. For the past two weeks AT&T has not been able to help GSM customers do things like, say, activate new service. Why? They just deployed a new CRM system and it doesn't work. I've been waiting for a week to use my new phone. I'm sure glad they have a 30 day refund policy.
The Matrix: Revolutions had a complex worldwide simultaneous release,
ostensibly to fight
piracy.
Piracy happened anyway; 24 hours after the release, copies showed up
on the net for download. Badly compressed movies of shaky
camcorder copies. Pay the $9, folks.
Using the same /scrape URL that torrentspy uses, I tracked the BitTorrent activity of a 1.2G copy of the movie over the last week (from the day after movie release). ![]()
Clay Shirky's piece
trashing
the semantic web has stirred up
quite a
storm.
True believers in The Power of Semantic Markup are all upset, the
cynics are taking their potshots.
I'm one of the cynics. I first worked with RDF back in 1998 in my
Hive project. We used it
to, well, describe resources. It was a total nightmare of complex
syntax obfuscating some very simple data. I also side with Cory about
Metacrap.
The RDF folks have had at least 5 years to prove how great the semantic web is. Where are the successes? There's a few random database applications like rpmfind. There's FOAF. And there's RSS 1.0, where you can do the same simple thing you do with RSS 0.91 or RSS 2.0 only with twice the markup. Each of the individual applications using RDF I know of could have been done more easily with plain XML. What's the payoff for using RDF? Where are the fantastic semantic inference applications? I admit being fairly ignorant of RDF, so educate me. Point me to a practical example where the use of high concept RDF stuff has made an application significantly better.
I feel more than usually obligated to
remind the reader that my personal weblog does not reflect anything
about my employer.
![]() One of my favourite cheeses, Epoisses, is in a grey zone. You won't find raw milk Epoisses in the US: the cheese is only aged 4-6 weeks. And only 10% of Epoisses is made from lait cru. Is it the best? One of the finest Epoisses producers, Fromagerie Berthaut, no longer uses raw milk. Berthaut is credited with rescuing Epoisses production from extinction in the 1950s. According to The Art of Eating Berthaut started heating the milk in 1999 after pressure when a nearby unscrupulous cheese maker had a listeria outbreak. Epoisses can be difficult, strong smelling and tasting. I've had a hugely rewarding Epoisses at La Côte Saint-Jacques and I've had Epoisses that was mild and dull. I'm hoping the difference is aging because if it's the milk, you can't get the good stuff in the US. I have a Berthaut Epoisses (from Say Cheese) relaxing in my cellar now. ![]()
A few months ago I figured out how to
configure Samba
to work with non-ASCII filenames. Samba 3.0 changed all this, the
new magic
incantation is
unix charset = iso8859-1
I sure wish I could just use
UTF-8.
But it's remarkably difficult to make a Linux environment happy with
UTF-8, so I'm stuck with Latin-1.
I
don't really know why cp850 (a
bastardized Latin-1) is the right
thing on the Windows end, is that the default for US WinXP systems?
display charset = iso8859-1 dos charset = cp850 ![]() I agreed to pay a significant yearly fee for an AmEx card because it is supposed to have good benefits and customer service. My first experience? I call to activate the card and am connected to the worst telemarketer I've ever heard, struggling to read her script and sell me lots of crap I don't want "while waiting for your data to load". In the mail with my card is the form I have to mail in to prevent them from sharing my private financial data with "valued partners". When I try to register on the website I'm greeted with arbitrary restrictions. No "special characters" in my username. My password has to be 8 characters or less. Apparently email addresses can't contain + in them, but I have to guess at that from the error "you have left the following fields blank or have provided an incorrect format". After I give them an email address their stupid software will accept I'm told that I have to open "email preferences" to opt-out of the valuable offers they'll send. I can't find the email preferences page ever again. I try hitting the back button to find it but am greeted with errors. The front page is full of offers to up-sell extra services. I finally find the opt-out page, only to be informed it takes them 2-3 weeks to update my preferences. Stop selling me crap!
Update: I tried writing customer service to
share this note with them, and filled out the form, only to be told
The system is not available at this time. We apologize for the
inconvenience. Please try again later
My home ADSL line seems to have gotten a speed upgrade; I
get 256kbits/sec upstream now instead of 128. This is great - crappy upstream
is my #1 complaint with SBC/Pacbell's ADSL service. It looks like SBC
upgraded all of San Francisco; SpeakEasy users got
the news.
Two parts Highlander 2
One part Revelations ![]()
A genial host known for giving parties in the rose garden of his home
on Barrow St. for the benefit of the Washington Sq. Music Festival, he
was a familiar presence on the block where he would sit on the stoop
with his two dogs, a schnauzer and a Pekinese, chatting with neighbors
and passersby.
I spent time this morning reading digital ephemera; old email
archives, archæology at the Wayback Machine. So much is gone, never
archived.
White lily.
MSIE has a nice "Save as Web Page: complete" option. It saves not only
the HTML but all the associated style sheets, images, etc giving you a
fully standalone copy of the page. You can do this in Unix, too:
wget # command line HTTP client -q # don't print out status -p # download related files -k # rewrite resources to local names -e robots=off # ignore robots.txt http://URL/ # page to downloadYou may also want --user-agent='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)' The appropriateness of ignoring robots.txt is open to question; I think it's OK for a personal one-time use. It's not perfect. The file may not be named .html, and some sites (Yahoo news) don't download completely. But it's pretty good. I'm using this to archive stuff I linkblog.
Little did I know
so
many others had linkblogs.
I'm subscribed to a bunch of them with
Trillian's
RSS
plugin. Whenever someone posts a new link, it
pops up like an instant message. It's like surfin
along.
I've added a new feature, my linkblog. It contains a bunch of links
to stuff I accumulate. It's over there on the left,
in the sidebar. It's also available as a very spartan
blog of its own:
useful for RSS. Here are the pieces:
Update: I'm no longer using
the linkblog plugin in my main blog. Now linkblog.py generates a file
for the
file
plugin in my main blog.
Simpler and faster this way.
Bob's lastmodified
plugin for Blosxom has a subtle bug.
Last-Modified: Sat, 1 Nov 2003 20:45:57 GMT
See the difference? Helps to have it lined up; there's a space missing
in the Last-Modified header.
Last-Modified: Sat, 1 Nov 2003 20:45:57 GMT Shouldn't much matter, right? Wrong. Apache parses these headers from CGI scripts and tries to fix them up. It can't parse the one without the space, so it silently replaces it with zero and all my pages look like they were last modified 1 Jan 1970. Argh! ![]()
pngtopnm s.png | pnmhqxscale -3 | pnmtopng > 3x.png
![]() Good things it does:
![]() ![]() ![]()
mini_httpd -p 8080 -c *.py
That's all you need to run a web server serving the current directory
and running Python CGI. I use mini_httpd all the
time when I need an HTTP view of something for a quick project.
![]() The GP32 from Korean company GamePark is the most promising. Powerful hardware: 133MHz ARM, 8 mbytes of RAM, 320x240x16 screen, wireless networking, easily programmable. It has a huge community of hackers. Most promising are the emulators: you can play classic Atari, NES, etc games on this thing. The MAME, Game Boy Advance, and SNES emulators have been hyped but they don't quite run right yet. At a price of around $210, it costs double a Game Boy Advance. And GamePark is having trouble: the European launch was cancelled last week, but the platform should live on. Still, very cool. The other platform that has folks excited is the TapWave Zodiac. More corporate / licensed than the GamePark, but the hardware is promising. It's a bit more standard: PalmOS and Bluetooth. Should be shipping any day. ![]()
So I eventually went to meet the cougar and my stunt double was there
and the cougar was nibbling on her hand and I thought, Oh, its like a
pet. And I put my hand out and he totally attacked me. It was pretty
freaky, but I got to go to the hospital.
"like.. totally.. freaky.." Elisha Cuthbert must be taking lessons from
Brando, staying in character 24 hours a day.
![]() Turns out the games are lousy too, at least according to MetaCritic. Super Monkey Ball, the best-rated of the 16 games, only garners a 63 out of 100. On MetaCritic any game under 75 is generally bad.
The latest
news from Baghdad is horrible (34 dead, 200+ injured). The
response from Bush is horrifying:
"The more successful we are on the ground, the more these killers will
react," he said, adding that the administration was determined "not to
be intimidated by these killers."
So let me understand. The US isn't able to provide even basic security
in the latest country we destroyed and this is evidence of our
success?
"The more free the Iraqis become, the more electricity is available, the more jobs are available, the more kids that are going to school, the more desperate these killers become ...
There are some who feel like that, you know, the conditions are such
that they can attack us there. My answer is bring them on. We got the
force necessary to deal with the security situation.
Kirby's
Dreamland (aka Hoshi no Kirby) made its debut in 1992, the genesis
of the successful Kirby
franchise.
![]() ![]() ![]() ![]() ![]()
The Unix shell is generally fantastic, but working with
files with spaces in the name is a nuisance. Tools
think the spaces are delimiters and break up your filename. Ie, these
don't work if you have a file named foo bar.tmp:
rm `ls | grep tmp`
One option is to manipulate IFS. Another is
xargs -0:
ls | grep tmp | xargs rm
ls | grep tmp | tr '\012' '\000' | xargs -0 rm
This is particularly good with find -print0
netpbm, originally by
Jef Poskanzer, is good software.
Simple Unix command line tools for images: convert formats, scale,
manipulate. Long before Photoshop and Gimp there was pbmplus, and long
after there still will be.
I was surprised to learn that after 15 years the netpbm team has added a new format, PAM. It's a superset of PBM, PGM, and PPM: the header now has keywords next to values and a new "tupletype" keyword is added to specify "BLACKANDWHITE", "GRAYSCALE", or "RGB". The purpose of this seems to be to support alpha channels in netpbm. Tuple types "RGB_ALPHA" and "GRAYSCALE_ALPHA" are on their way.
I wrote Python code for verifying ROM libraries
against
DAT
catalogs. One problem: most DAT files use CRC32 as the way to
identify the ROM.
The hash space is too small.
For instance,
Golgo 13
- Top Secret Episode and the unauthorized Swedish translation of Legend of
Zelda both have the CRC32 6ad81a61.
![]()
Python 2.3.2 (#2, Oct 6 2003, 08:02:06)
Ugh! When was the last time you wanted a signed hexadecimal output?
And why is hex() of a long in uppercase, while hex()
of an int is lowercase?
>>> hex(-1) __main__:1: FutureWarning: hex()/oct() of negative int will return a signed string in Python 2.4 and up '0xffffffff' >>> hex(-1L) '-0x1L' >>> hex(0xffffffffL) '0xFFFFFFFFL'
Part of video game preservation is a catalog of video games.
The emulation community has come up with
auditing utilities
to manage ROM collections.
The best known seems to be the
Good
Utilities, bare DOS software. RomCenter and ClrMamePro offer GUIs.
These programs all act on a catalog of known ROMs with checksums and disposition. DATs are maintained separately: some sources are Rob's conversions and Logiqx. Unfortunately the Windows programs are awkward and slow, and no one seems to have a simple Linux port. May be a good job for Python.
Taken from
The
New York Times
![]()
Mac OS X isn't just free of viruses; it's also free
from copy protection, "activation" (a Windows XP feature that
transmits information about your PC back to Microsoft), and pop-up
messages that nag you to sign up for some Microsoft database or clean
up your icons. When you use Mac OS X, you feel like it's yours; when
you use Windows, you feel as though you're using someone else's toys,
and Mrs. Microsoft keeps peeking in on you.
I'm delighted to see this competition to Microsoft's increasingly
consumer-hostile system. If I had the
hardware, I'd definitely spend a month trying to work from OS X.
But Mac OS still represents the same 3-4% in
Google
Zeitgeist it has since
June
2001. All my cool friends may use Macs but it seems the
masses don't.
![]() The reason your Thanksgiving dinner is always dry and tasteless is because the Broadbreasted White turkey everyone raises is freakish and nasty. The New York Times had a good series of articles about this two years ago.
The turkey you'll be eating could never exist in nature. After 50
years of overengineering, it has morphed into a bizarre, ungainly
beast that can no longer run, fly or even lay eggs. And all in the
name of progress: what it can do is supply copious quantities of white
breast meat at the expense of the dark meat from the leg and thigh.
There are several
heritage
turkey breeders out there. You may be too late this year, but
remember it for next year!
![]()
A popular Reed-Solomon code is RS(255,223) with 8-bit symbols. Each
codeword contains 255 code word bytes, of which 223 bytes are data and
32 bytes are parity. ...
errors in up to 16 bytes anywhere in the codeword can be automatically
corrected.
RAR
archives support ECCs via data recovery blocks, but few people use them.
There's momentum behind
PArchive, a
file format.
It
seems optimized for transferring large lists of files rather
than a single archive.
PAR usability is low but
QuickPar is OK.
![]() BitTorrent has a flaw; it's easy to get 99.9% of a file and never complete because no one has the last few bits. The main use of TorrentSpy is to see if any client has a full copy. Unfortunately it can't detect if the whole file is out there, but no one client has it all. With the average torrent having only 20-30 clients I guess that's unlikely.
Game emulators take tiny 256x224 images
and scale them up for monitors that display 1280x1024 or more.
Simple scaling doesn't work well. Pixel duplication is blocky and
bicubic interpolation blurs out the
lovely crisp details of hand drawn game sprites.
Worse, old
games were meant to show
on TVs with weird
interlacing and blurring; it's hard to get the look right on a PC monitor.
Fine emulators have a diversity of algorithms for scaling images up. Eagle and 2xSal (aka sai2x) are the ones in common use. scale2x and hq3x are new and promising. The underlying problem is creating the illusion of more information than is really present. All the algorithms above have the same basic idea; try to detect features like edges and scale them appropriately. This needs to work really fast; the code is usually a mess of MMX assembly.
Alien monsters are hiding in barcodes everywhere.
Find them in any barcode on any package. Use
Skannerz to
scan them, capture them, and fight them.
Clever game idea: it's Pokemon only instead of buying
collectible crap you scan UPCs you find in the real world.
UPCs as physical random number generator.
![]() Thanks to Chris
MSIE has an annoying misfeature: a web page can somehow say "raise me
to the front". I hate this; I start a page loading from a slow server,
then raise some other window on top to do something else while the
page loads. Suddenly bang the slow server page is back on top,
stealing focus, sometimes several times.
What's in the HTML that causes this in MSIE? This isn't popups; that's a different problem with plenty of solutions.
I've been wallowing in computer game nostalgia, playing old arcade,
NES and Apple ][ titles. The emulators are fantastic. And you can
download the complete history of Nintendo in one easy 250 meg archive.
Arcade games have a fantastic database.
Playing old console games is easy, but playing authentic Apple ][ games is hard. They were copy protected with bizarre data layouts, manual lookups, code discs, etc. Copy protection failed to protect the companies' profits, but it makes it harder to preserve Apple ][ history. The popular Apple ][ archives don't serve the original game; they serve cracked versions. They mostly work, but if you're into pristine preservation it's not quite right. I wonder how folks will play today's PC games in 20 years. I think the DirectX API will make emulation easier. But the games are still copy protected. There are emulators for today's PC CD protection, so maybe preservationists will be able to play the original. And there are cracks too, but most are rips that strip out a lot of game content to make the download smaller. Ugh.
Tea Leaves has a
good
article about the lack of non-violent options in computer
games. The point I like best is that RPG narrative
is heavily limited because you're only rewarded for
killing things.
![]() Props to the SNES emulation community for making it so easy to see these old games. There are lots of good SNES emulators. SNES9x is a well behaved Windows app; ZSNES is funkier but has better realism for video and sound emulation. As seen on games.slashdot
![]() At its best this genre can be a great form of social criticism, highlighting details of our society. But Hominids is just tedious. There's the chapter on religion, and the chapter on monogamy, and the chapter on crime, ... And woven all through it, a cartoonish story of a recently-raped woman learning to love again. Ugh.
Joel on Software has a
good
introduction on Unicode.
All that stuff about "plain text = ascii = characters are 8 bits" is
not only wrong, it's hopelessly wrong, and if you're still programming
that way, you're not much better than a medical doctor who doesn't
believe in germs.
I'm flying back to San Francisco today. While packing, I made a series
of calculations:
I'm not one to make displays like that so it was an accident it came with me to New York. But now where do I put it going home? In checked luggage, where security may find it while I'm not around and decide to punish me for being clever? Or in my hand luggage, where it may cause my bag to be searched and an awkward conversation? Maybe I should just leave it behind.
The right of the people to be secure in their persons, houses, papers,
and effects, against unreasonable searches and seizures, shall not be
violated
Then I realized, I was stressing about what people would think about
me having a copy of the Bill of Rights! It's a terrible thing we've
done to ourselves.
Jason Scot, textfiles.org proprietor, writes an excellent
synopsis
of the Apple ][ warez scene in his BoingBoing guest blog. Those
were the days!
My favourite thing is his
gallery
of warez splash screens. Some of the art those things
carried was pretty cool.
Peasant:
excellent food, lousy service. I had to argue with the waitress that
after the cork broke a second time, maybe there was something wrong
with the wine and I'd like to taste that. "Oh, all the corks are like
that, and once we open a bottle you have to have it". But the duck was the
best I've had outside of Europe.
One if by Land, Two if by Sea: excellent food, very good service. The first course of the tasting menu was my favourite - cabbage, foie gras, salmon roe, arctic char, finished in a cream sauce. Incredibly rich and delicious. ![]() The interesting thing is the dense sound from having 25 people playing and singing together. The deep choruses of "Soldier Girl" and "Light and Day" are really great. Some of it is bad, though, the remixes and anything where the main guy is the only one singing. I was surprised to realize this was the first upbeat music I'd enjoyed in a long time.
Just follow the seasons and find the time
A lot of attention has been paid to their
creepy
cult-like
presence, but I have to assume that's irony.
Reach for the bright side Just follow the day Follow the day and reach for the sun ![]()
The fries, which look like a squat version of standard French fries,
are made of a meat-and-cheese compound that tastes - as the name
suggests - like a cheeseburger. …
After testing different types of cheeses, Mr. Moore settled on a processed restricted-melt cheese, meaning that it is manufactured to withstand high temperatures. … Tasters like the charbroiled flavor, but said it did not make sense to have something like that also taste deep-fried. "It's hard to please everyone," Mr. Moore said.
As seen on
Γνωθι
Σεαυτον
![]()
Update: Dan corrects me -
there are many computer graphics bits in the films, and in fact it was
one of the first features with lots of CG. The central
look of the film (lighting, characters, sets, etc) are all traditional film
techniques, but many of the details in the computer world (light
cycles, recognizers, etc) are rendered.
Tron is an important waystation in cyberpunk, borrowing heavily from Metropolis in its milieu and design (particularly the character makeup!) and The Wizard of Oz for the fantasy story. In turn it has inspired films such as the animation in Johnny Mnemonic and the navigational scenes in The Second Renaissance (The Animatrix). The cast is surprisingly good, too: David Warner, Jeff Bridges, Bruce Boxleitner, even Barnard Hughes is fun as that guy. The new Tron 2.0 PC game is a pleasure. There was talk of a Tron movie sequel but now the rumour is there is no film. Probabaly just as well. ![]()
Problem
I'm delighted to see someone put
the patterns online.
The descriptions are much shorter than the book material, but it's
handy and cross-indexed. From the practical
P125: Stair Seats
(echoed in William
Whyte's work) to the subtle
P134: Zen
View, it's all here for quick reference.
When they have a choice, people will always gravitate to those rooms which have light on two sides, and leave the rooms which are lit only from one side unused and empty.
Solution ![]()
The kazaa version is not the demo. From what we can tell it is a
try-ware version of the game (6 hours of time limited gameplay). we
here at Troika are still trying to figure out what it is, who made it,
and how it differs from the store ToEE.
Troika spends two years of
creative energy developing a game. Atari/Infogrames
fronts the money and publishes it. And then the publisher makes
horrible decisions that screw the developers and the customer.
TOEE was released too early and now there's a fight over whether Atari
will allow Troika to make a patch.
I believe computer games are some of the most interesting commercial art being produced today. Shame to see the commercialism screw it up.
As seen on Eye on Troika
If anyone had any doubt about spammers being evil or having a right to
"free speech", doubt no more.
A nice Reuters
review of recent hostile spammer activity: denial of service
attacks against anti-spam services and releasing
worms
to turn innocent PCs into spam relays.
The
Register has more.
The Internet should not be a battleground. ![]() I'm good at patching my system and the place the virus phones home is offline, so I'm presumably safe. But how would I know for sure? And why did the active virus protection allow this file to be written at all? Java is useless for embedding in web pages anyway. I probably should turn it off.
Can't tell your gabber from your casiocore?
Want to know more about
glitch or
illbient?
Ishkur's
guide to electronic music is what you need. V2 was just released.
History, classification, lots of music samples. Obsessive and
comprehensive, it's a great document.
As seen on MetaFilter
Massively multiplayer games are really interesting. Persistent worlds,
complex social experiences, lots of interesting design and programming
challenges.
The question is how many games the market will sustain. So far there have been a few smash hits: Everquest and Ultima Online of course, but also Dark Age of Caemlot and maybe Star Wars Galaxies. This graph of subscriber stats suggests a bunch of new games are taking off without really cannibalizing existing populations. As seen on Greg
Costikyan's blog
![]()
meter
kilogram
second
There are
several options
for redefining the kilogram in a nicer way, including deriving
from measuring
Planck's constant with a
Watt balance
or measuring Avogadro's number with a perfectly round
silicon crystal.
ampere kelvin mole candela
Around 400BC a meteorite struck Saaremaa Island, now
in Estonia, and created a
110m wide crater known as
Lake Kaali.
Unlike Tunguska it fell
in the middle of a densely populated area.
Researchers have revealed an amazing human story.
The disputed 400BC date is from analysis of iridium,
C14, and pollen.
The nearby
village
Asva burned at
roughly the same time, an intriguing coincidence.
Pollen data suggests nearby farms were abandoned for about 100 years
after the impact.
There was a highly fortified wall built on the crater rim right after
the explosion.
A large meteorite has never been found; possibly because it became
the source for local iron tools.
The historical record is astonishing as well. The Kalevala, the Finnish national epic, may record the story. Pytheas of Massalia was in the area 350-325BC and wrote of "the grave where the sun fell dead". The Argonautica of Apollonius of Rhodes (3rd C. BC) may describe the lake:
...where once, smitten on the breast by the blazing bolt, Phaethon
half-consumed fell from the chariot of Helios into the opening of that
deep lake; and even now it belcheth up heavy steam clouds from the
smouldering wound.
I love how astronomy, archæology, and literature
combine to describe an event at the edge of human
history.
—The Argonautica Book 4, Section 529-626
As seen in A Traveller's Guide to Mars
Received by a friend today:
We have just charged your credit card for money laundry service in
amount of $234.65 (because you are either child pornography
webmaster or deal with dirty money, which require us to layndry them
and then send to your checking account).
If you confirm this transaction, please press "Yes" and fill in the
form below.
The form has helpful slots for credit card info.
Google has 153 pages about this spam. ![]()
![]() But there's rumours. She really was eaten by that cougar. Even better, next season is rumoured to feature Kim as a lesbian. It's every straight guy's fantasy! It may be a hoax. I tried to find more info, but a search for Elisha Cuthbert Lesbian finds rather different material. As seen on the 24 Weblog
Why does so much contemporary software think it's OK to lock the user
out? InstallShield, the horrible Windows installer, puts a fullscreen
window on top of everything while it's installing and disables the
minimize button so I can't hide it. My DVD player refuses to let me skip over certain
tracks (such as the inane Interpol warning) and forces me to watch
dumb transitions from screen to screen while I navigate menus.
Why do user interface designers think it is ever appropriate to prevent a user from taking an action? ![]() I imagine Atari is trying to head-off pirates stealing the game on KaZaA. Or maybe they've found a clever way to get their demo out. Or maybe they're brave and are actually trying a new distribution model? Greg Costikyan has written some good stuff on online distribution. The movie industry better be paying attention; they only have three years to figure this out themselves. There's no way I'm installing the evil scumware that comes with Kazaa and Kazaa Lite is failing me. Bittorrent would be a perfect alternative. I fear it will be about six days before a crack for the time limit is released. There's a reason demos don't have all the game assets.
Verisign has unilaterally broken DNS. Now when you try to resolve the
address for a nonexistent domain you no longer get back an error, you
get back a record that points to Verisign.
$ whois dnsisbroken.com
I can't even begin to explain all the ways this is a bad idea.
No match for "DNSISBROKEN.COM". $ dig dnsisbroken.com ;; ANSWER SECTION: dnsisbroken.com. 873 IN A 64.94.110.11 ![]() ![]() Like all cool software that seems vaguely illicit, Kaillera has some association with Nullsoft. The download is hosted there and the Kaillera author credits Justin Frankel for the net code. ![]()
Thanks to the wonders of
MAME I played
one of my favourite obscure arcade games,
Off
the Wall. It's a 1991 Atari title that's highly pleasing with
impressionist graphics, clever gameplay, and fantastic music produced
on the YM2151
FM synthesis chip. I made a small sample of the music; listen to
the Ogg.
![]() I took me 86 quarters and a couple of hours to get to wave 101. The game doesn't really change much after wave 60. If only I had two analog dial controllers, it's a really fun two player game.
Creative's sound drivers have a very useful feature - in addition to
recording from microphone or aux-in you can record
"What U Hear"
and capture whatever is playing through your
sound card. Combine this with Creative WaveStudio and an MP3 or Ogg
encoder and you can record anything you're able to hear on your PC.
This is much easier than the contortions I went through trying to record a RealAudio stream via Total Recorder. Great for recording game soundtracks. And it's a simple solution for bypassing whatever consumer-hostile DRM crap the rest of your computer tries to foist on you. ![]() This is my first time fooling with Ogg Vorbis. I'm impressed, particularly it's handling of very low bitrates. I was able to make an Ogg half the size of the smallest listenable MP3. Useful for bandwidth-starved blogs.
I read somewhere that you can read English even if the letters in each
word are mixed up as long as the first and last
letters are in the correct position.
Try it!
Read my
scrambled blog. Sample:
I raed swreemohe that you can raed Eignlsh eevn if the ltetres in each
word are mexid up as long as the frsit and last lertets are in the
crrcoet pooisitn. Try it! Raed my smrblaced blog.
My blog software,
Blosxom, is so hackable that it
is straightforward to add a plugin to do this. Plugins even chain
nicely, like this scrambled search for Perl.
The code is quite a hack, using Perl Inline to let me write the actual text processing in Python like Rael's demo. There is one neat trick: Inline->bind() lets me defer the import of Python until it's actually needed, meaning there's no efficiency cost if the Python code isn't invoked.
Update: thanks to Misha for fixing my
mistake and pointing me to
jwz's
blog entry.
Finding the length of an array must be an unusual thing for Perl
programs to do,
because Perl doesn't have an operator for it. It does
have the evil $#:
You may find the length of
array @days by evaluating $#days, as in csh. However, this
isn't the
length of the array; it's the subscript of the last element,
which is a
different value since there is ordinarily a 0th element.
Huh? What does this mean? And is Perl really modelled after csh?
Let's try to do something simple, see how
many arguments were passed to our program:
#!/usr/bin/perl -w
Now let's run it...
print "\$\#ARGV is $#ARGV\n";
/tmp/argv.pl
Huh? -1? This must have been confusing to others too, because it's
documented again in the docs for @ARGV
$#ARGV is -1 /tmp/argv.pl two arguments $#ARGV is 1
$#ARGV is generally the number of arguments
minus one, because $ARGV[0] is the first argument, not
the program's command name itself.
I realize the simple rule is 'the length of @array
is $#array+1', but how dumb is that?
Update:
a friend pointed out you can get length by evaluating
@array in scalar context. Contexts are one of those horrible
features in Perl that make me have to relearn the language every time
I write a program. There's more than one way to do it but
none of them are simple.
In memory of
Johnny
Cash's death today, be sure to watch Mark Romanek's
astonishing
video of Cash singing Nine Inch Nail's "Hurt"
(direct
download, RealMedia
stream).
Mark Romanek is the director of the brilliant NIN video
Closer (download)
and the movie
One Hour Photo.
The performance by Cash is heartbreaking.
The Romanek links may break until the crowd dies down.
It's more efficient to gzip base16 encoded data
than to gzip base64 data. /usr/dict/words
is 900k of English text. If I base64 encode it and then gzip it (as you might
do when sending the data via SOAP and a compressed transport), the
result is 385k. But if I base16 encode it and then gzip it
the result is smaller - 296k - even though base16 is less efficient..
Why? Base64 encoding breaks up the pattern so the compressor doesn't work as well. Base16 preserves byte boundaries. It's even more efficient to gzip, then base64 encode, then gzip. Summary: data 909k gzip(data) 248k gzip(base16(data)) 296k base16 is smaller gzip(base64(data)) 385k gzip(base16(gzip(data))) 280k gzip(base64(gzip(data))) 250k base64 is smaller ![]()
As seen on Clay Shirky's
Corante
Mark did an interesting experiment with a
WSDL
for a GET-based web service, reprising a similar thing
Paul did last
year for the Google Web APIs.
Unfortunately, GET-based WSDL doesn't seem to work well. I can't make Mark's WSDL work with either Java's Apache Axis 1.1 or Perl's SOAP::Lite 0.55. Neither seem to find any methods to invoke. There's also an issue of getting .NET to do authentication; that may be solvable. I'm seeing the same problem with Paul's Google wrapper. WSDL is one of those squishy specs where stuff may be 'correct' but it doesn't work with any of the tools. I suspect the issue here is since no one is using the GET binding, it just doesn't work in many places. Frustrating situation.
The blog world is truly astonishing - check out
Salam Pax's post
about his house being raided by US soldiers.
My father was asking them what they were looking so that he can help
but as usual since you are an Iraqi addressing an American is no use
since he doesn't even acknowledge you as a human being standing in
front of him.
Foreign occupation forces have generally acted without
visibility. Thanks to the Internet I can now see what my country is
doing from the victim's perspective.
37
other blogs noted this, too.
![]()
The idea is to build motes - tiny computers that broadcast a radio
signal - that are cheap enough to deploy everywhere but just smart
enough to "self-organize" into powerful networks that can sense and
convey information like whether milk is spoiled or a bookshelf
overloaded.
I did some research
back in 1998 on this topic. I was very impressed by Rob's PhD work and
am excited to see how far he's taken it.
There's a good overview article from Rob (along with some Slashdot kibbitzing). Also a 1997 patent filing. I couldn't find Rob's PhD thesis online, you'll have to look it up in the MIT library. His master's has been taken offline but archive.org's Wayback Machine still has it. ![]() Torcolato is made in the recioto style - the grapes are allowed to dry on the vine, usually picking up some botrytis rot. The result is a sweet wine not unlike a Trockenbeerenauslese. My glass had a lovely balance between sweet and acid, without the heavy cloying botryized taste that Sauternes can have. Very nice. I know a fair amount about wine; it's nice to be surprised with something new. ![]() Pineau des Charentes is not wine. The grapes aren't fermented, instead year-old cognac is added to fresh grape juice before the juice has a chance to ferment. The result is a sweet drink, very pleasant, and honesty if I hadn't been told I'd have assumed it was a dessert wine. It's usually had before dinner, but it's heavy enough I prefer it after. It's not terribly expensive. I thought I knew a fair bit about wine, and we gave the nice lady in Sooke a hard time about wine selections. I think she had fun fooling me with something new.
I've been using mod_gzip on
my weblog server to try to save bandwidth. Today I crunched some
numbers and learned that gzip encoding only works for about one third of the web
requests for HTML that I get. When it does work, it compresses to
about 30% of the original size.
Turns out that while most user browsers support gzip encoding, most spiders don't. GoogleGuy says this may be because servers don't reliably serve gzip. I could believe that given the contortions I had to go through. RSS aggregators are mostly good about supporting gzip. They are good about handling 304 Not Modified, too. Good thing; RSS polling is such a huge source of traffic.
69% of Americans think that there's a likely connection between the 9/11
attacks and Saddam Hussein, despite there being no evidence of a link.
What's interesting is
how the Bush Administration
exploits
this false link
without ever exactly endorsing it.
Bush ... did not say directly that Hussein was culpable
in the Sept. 11 attacks. But he frequently juxtaposed Iraq and al
Qaeda in ways that hinted at a link.
It's a postmodern update on the Big Lie - you don't ever have to
actually tell the lie, you just have to hint around it and everyone
believes it.
"You couldn't distinguish between al Qaeda and Saddam Hussein," said Democratic tactician Donna Brazile. "Every member of the administration did the drumbeat. My mother said if you repeat a lie long enough, it becomes a gospel truth. This one became a gospel hit." In follow-up interviews, poll respondents were generally unsure why they believed Hussein was behind the Sept. 11, 2001, attacks, often describing it as an instinct that came from news reports and their long-standing views of Hussein. ![]() I just tried it out with Scott and was impressed. Installs with no trouble and no scumware. Looks like an instant messenger app. The voice connection to Scott just worked. The sound quality was great even with our crummy desktop microphones. It was only half duplex, but that may just have been one of our sound card setups. The network details are good too. Despite us both being behind NAT routers we got a direct P2P link going at the click of a button, no configuration required. Traffic was a steady 11 kbytes/sec (just perfect for my 16kbps link). The packet trace of connection setup is a bit odd - it talks to a bunch of different IP addresses. But hey, it works!
Network address translation is the bane of P2P.
There's a black art for establishing UDP communication
between two peers behind NATs by having a third party introduce the peers
and fooling the NAT routers into routing the packets. Games have been
doing this for a few years. I see now it's
well documented
by Bryan Ford.
Bryan also has a draft RFC for NAT P2P. It's a great document and includes a technique I'd love to see developed further: opening TCP connections through NATs with a "simultaneous open":
If, however, the SYN packet arrives with
source and destination addresses and port numbers that correspond
to
a TCP session that the NAT believes is already active, then the NAT
will allow the packet to pass through.
It requires predicting TCP sequence numbers, though, so I fear it's
impractical.The only alternate I know of is UPnP Nat. There's hardware router support and a free Linux implementation.
As seen on decentralization
Fantastic story blog,
Gangstories, a guy writing about
growing up a thug in West Seattle.
At the time, Madpack was like the Navy Seals of Seattle gangs, all 200
pounds and crazy as a loon. I drove a Chevy van at the time, and we
drove to the projects to pick them up. Six Samoans sqeezed in, two of
which were notorious gangleaders at the time. To this day I don't know
why they helped us.
The writing is great and the stories are horrifying, funny, and
redemptive all at once.
As seen on A Whole
Lotta Nothing
Nice neologism
on
MetaFilter today: nontroversy. As in "Johnny Depp's
criticism
of the US being like a dumb puppy is a nontroversy".
Not many uses on the net; the earliest I could find is a reference in a June 1997 post on alt.fan.frank-zappa.
From the "they didn't have that in BSD 4.2 so I didn't know about it" department,
a handy feature in Vixie cron: the
@reboot option. It means run once at restart, an
alternative to /etc/init.d for ordinary users. Vixie cron has
other useful features:
@reboot Run once, at startup. @yearly Run once a year, "0 0 1 1 *". @monthly Run once a month, "0 0 1 * *". @weekly Run once a week, "0 0 * * 0". @daily Run once a day, "0 0 * * *". @hourly Run once an hour, "0 * * * *". ![]() Cables to Go also sells a 3-in-1 PC extension cable - keyboard, mouse, and VGA all bundled in one. Great for moving your noisy PC into a closet.
I've been wanting to write code using sound on Windows:
create samples, play them, use DirectSound to do 3d audio, etc.
But I'm lazy so I want to do this in Python.
Not easy, but I found a couple of leads on sound libraries. Audiere is nice, but its Python binding doesn't do much more than "play sample". There's a good Python binding for fmod which uses swig to generate the code. It has a lot of functions, but it's organized like a C API and some of the type mappings (such as float *) aren't complete. All this stuff is very low level. ![]() I don't kid myself that Al Jazeera is perfect, but it's important to have alternatives to American "fair and balanced" crap that masquerades as objective. ![]() BTW, the best steakhouse in San Francisco is Alfred's. ![]()
My apologies if my blog takes too long to load; PacBell has screwed up
my network again.
--- 63.194.75.30 ping statistics ---
Normally it takes about 20ms to get to my upstream router; right now
it's 1500ms. Happened for a few hours last night, too. What
could be causing this? Last time this happened PacBell tech support
had no clue, it went away on its own after a week. For this I pay
$50/month.
269 packets xmit, 268 packets rcvd, 0% packet loss round-trip min/avg/max = 925.7/1576.8/2388.1 ms
The Tron 2.0 game is great,
as I hoped.
The gameplay is basic FPS stuff, but the look is phenomenal.
Particularly the much hyped glow effect.
![]() The part that makes this remarkable is they can do this 30 times a second at 1280x960 resolution, thanks to the magic of Cg. Cg allows you to write programs that do things like calculate per-pixel shading to create all sorts of crazy effects in real time. Consumer video cards have an astonishing amount of parallel computing capacity.
As much as I
like
Bitstream Vera, the font has a problem: it's too light on
Windows 2000. Text in 12 point Vera Sans
Mono is a vast grey field rather than crisp black text.
![]() ![]() I went a few years ago and had a great time. It's a huge event full of prize pigs, hucksters, ferris wheels, fried bread, and lots of ordinary people. Much fun. This year I can't decide what I'm more excited about: the 600lb performing pig or the corn husking. ![]()
The lesson is that though the French diet was rich in fat, overall,
the Americans consumed more calories. Over the years, this would lead
to substantial differences in weight.
When I'm in France I eat
incredibly well and still lose weight. The quantity is smaller,
yet I'm happier because the food is delicious.
I asked a question on Google Answers: How much has the average American's food consumption grown over time? According to this USDA report calorie consumption has grown about 20% in the last 20 years.
A big jump in average calorie
intake between 1985 and 2000
without a corresponding increase
in the level of physical activity
(calorie expenditure) is the prime
factor behind Americas soaring
rates of obesity and Type 2 diabetes.
Super size it!
![]() You can pick up a 5 CD box set of Jimmie Rodgers for only $26 on Amazon. Worth the investment. I didn't grow up with this music, but after the success of the O Brother, Where Art Thou? soundtrack I'm getting interested.
I switched WinAmp to use the
MAD
plugin for MP3 decoding; it spits out 24 bit output for my sound card.
How much does the
precision of digital sound really matter?
My searches led me to this fine document on audio dithering. If you have sound in a format that's more accurate than your final output (say you're doing 32 bit processing and the end result is a 16 bit stream) then you don't want to just round off the sample - you want to dither in some noise. Why? It allows the lower bits to occasionally be expressed in the output and your ear is capable of picking the signal out of the noise. The audio demos from the page are impressive. Effects are exaggerated (rounding to 8 bits) so you can hear them. Read the document for explanation. Psychoacoustics is really interesting.
Blosxom has a couple of plugins to ping
weblogs.com and
blo.gs when new entries are posted,
either via HTTP GET
or XML-RPC.
But these scripts have a problem; they run as synchronous plugins,
forcing whatever hapless user hits your blog first to wait while the
servers do their thing (or don't - weblogs.com is awfully slow
sometimes).
My little pinger.py script works a different way, running as a cron job periodically and checking if it needs to ping. Not robust; only recommended for Python hackers.
Blocking I/O is the scourge of reliable Internet programs. Python's
simple network libraries like urllib are surprisingly ænemic with
respect to timeout options. Happily, Python 2.3 includes two new
functions in the socket
module: getdefaulttimeout and setdefaulttimeout.
socket.setdefaulttimeout(5)
There are more sophisticated ways to do nonblocking I/O in Python, but
for simple stuff this works.
try: urllib.urlopen(url).read() except IOError, e: # handle timeout ![]() Today's exercise was a little program to tell me when my Creative sound driver has been set behind my back to something other than 6.1 surround. It reads a registry key every 15 seconds and updates a system tray icon if things have changed. Doing it in Python didn't prove too hard. The bloat is bad though; the program is 12 megs in RAM and a 2.5 meg standalone distributable. Still, nicer than trying to remember how to program with Visual Studio. ![]() Vera Sans Mono fills the need for a good fixed width sans-serif font; Lucida Console just doesn't cut it. Vera Sans is a decent proportional font but is too wide; I still prefer Arial. Vera Serif looks hideous, but then all serifed fonts look hideous on screen. Works on Windows. Download, SlashDot discussion.
One thing about the SoBig.F
virus; it's a bad week for spammers. I've gotten more email about "Wicked
screensaver" than "Order Viagra, and Much More" in the past few days. The
spammers are getting overrun.
![]() Jon Krakauer, of Into Thin Air fame, uncovers fundamentalist Mormonism in his latest book Under the Banner of Heaven. Yes, fundamentalist Mormonism: splinter groups who hold various radical theological positions such as celestial marriage and apocalyptic fervour. The book is ostensibly a history of the murders by Ron and Dan Lafferty, but really it's an excuse for Krakauer to explore the curious history of the LDS church. The narrative is unflattering, particularly its characterization of the early days of Joseph Smith and Brigham Young. Parts seem unfair. But Krakauer's central thesis is fascinating - Mormonism was born out of violence and zealotry and this extremism is alive and well in the fringes of Mormon culture. ![]() The ironic thing is NTP is the most lightweight useful Internet protocol in existence. A server can handle hundreds of thousands of properly functioning clients; when it works it takes one UDP packet every 17 minutes to serve a client. I did an NTP survey back in 1999; a beautiful peer to peer network. As seen on Slashdot
Rael tipped me off to a sad
reality: Safari, the fancy Apple Mac browser, doesn't support gzip
encoding. What a waste of bits!
Today's mailbox had five identical messages from
dot_net_msgr_svc@msgr.hotmail.com titled "Important Security Update
for the .NET Messenger Service". Apparently I have to upgrade MSN
Messenger and Windows Messenger because of some security fooferall. I
almost assumed this was some scam, but the upgrade site
looks real.
Let's enumerate the problems:
![]()
3D Studio Max renders of the female model using the breasts from
Sabba's model. 250 more polygons, but definitely worth it.
All the mods are for females, unsurprisingly.
Note: pretty much all these links are adult content.
For all your long-line typsetting needs there's U+200B, the
Unicode "Zero Width Space". It tells the renderer that if it needs to
put in a line break here's a good place to do it.
Great for when you have a really long line with no
spaces in it and don't want to just hack in a <br>.
Only it doesn't work so well in HTML. HTML 4.0's entities don't define &zwsp;. IE recognizes it but Mozilla doesn't. So you need to use ​ instead. And then IE screws it up when you paste it into ASCII. And while IE6 on WinXP renders it correctly, on Win2K it renders a box. Totally broken. There's a good page on line breaking in the Web, detailing all the problems where lines are broken where they shouldn't be and vice-versa. What kills me is these typsetting algorithms were all solved almost twenty years in TeX, at least for English. Why do the people who do HTML and web browsers hate design so much?
Spurred by Mark's message about
cruft-free URLs, the Blosxom list has been full of discussion
about how to do good permalinks in Blosxom. There's been some
confusion; Blosxom has quite clean permalinks.
Blosxom supports two kind of permalinks: date based and file based. Date-based permalinks look like this: They are a link to the day's stories with an anchor to position the reader at the specific story in the page. One way to generate these is via the flavour pattern $url/$yr/$mo_num/$da#$fnFile-based permalinks look like this: They are a link to the specific entry; nothing else will display. One way to generate these is via the flavour pattern $url$path/$fn.$flavourblosxom.cgi, with no flavour files installed, uses date-based links. So do the flavours in the Blosxom flavour sampler. Many of us, including the author of Blosxom, prefer file-based permalinks. The joy of Blosxom is either kind of permalink will work. By editing flavour files you can easily decide which style you serve. Personally I think the date-styled permalinks are crazy and Blosxom's defaults should be file-based.
Watching BitTorrent
penetrate
the game
demo market has given me an idea for a business model for
BitTorrent: charge companies for help hosting files via BitTorrent. It
could be a consulting business, teaching sites how to set up and
run trackers and seeds. Or it could be a service business, running
a BitTorrent hosting service for others. You could offer client
support, maybe custom-branded clients.
There may even be room for proprietary software
here: special trackers and monitoring tools.
I don't think any of this would be a huge business, but it'd be enough to fund BitTorrent development. Customers: anyone hosting downloads of more than 10 megs. ![]() And big crazy. Check out this movie of someone flying twenty feet above the ocean with a kite and pulling a guy on a board behind him (for ballast, one presumes).
I host this blog from my house in San Francisco. Should be safe from
the blackout in the northeastern US, right? Wrong. Because my domain
name monkey.org is served from Ann Arbor.
So a failure of a transmission line in Ohio knocks
off a computer in Michigan disabling a server that should be sending out a few
hundred bytes of data to the distributed DNS system across the globe,
thereby preventing readers all over the world from accessing my machine in
California. Great.
I've thought for awhile about moving by blog to a new domain name but I can't come up with a good one. Hmm, boingboingboingboing.net is available. ![]() They sound good. Having speakers behind you makes for a big difference, particularly in games. Your eyes always stare straight ahead but you can hear all around you. So why not have speakers behind you in your VR rig? What I like best is that the product packaging is remarkably good for the price. The speakers look nice. The speakers come with long enough wires to reach the back of my office comfortably. It comes with little stickers to label each speaker. The power transformer is on a cord so it doesn't cover multiple plugs. I'm so used to crummy packaging of computer products it's nice to buy a box of stuff that just works.
There's another Windows
worm afoot. This one's ugly - it carries a payload that attacks
windowsupdate.com. Result? If it's successful, it'll knock
out the one easy way users have to protect themselves from it. I'll
leave the biological metaphor to you.
How many words can you make with the letters "abcdefghijkmx"? You can
make 13 different WiFi standards, nicely
enumerated
by ZDNet. Ever wondered what 802.11j was? This article is your
source.
![]() My real goal is to make my Mac friends envious. Who wants elegant design when glowing fans are only $7.99?
The BitTorrent
experimental download client is good. Installs with little
fuss, and when I click on a .torrent link it just works. Nice UI to
show you how the transfer is going with simple settings to throttle
upload bandwidth. If you're a Windows user and haven't used
BitTorrent, this is the place to start.
Game demos are starting to be distributed via BitTorrent. Perfect use: lots of enthusiasts, giant files (200 megs is common). Places to go for legitimate BitTorrent game files: GameTab, 3dgamers. Try out the cool Tron demo! ![]() The story is a bit tough to follow at times, but the artwork and presentation are fantastic. My only frustration is that they use the Web medium so well I can't imagine these ever being printed. Also not to miss by the same artist: Apocamon, the book of Revelation reinterpreted as manga. As seen on
MetaFilter,
jwz
I've got an
Atom/Pie/nEcho
feed now.
It even validates!
Thanks to Mark for all the
documentation,
Dave
Walker for the Blosxom template, and
Sam
for pulling this effort together. I think the effort to define a new
Weblog API is really important. Some gripes and comments...
For some reason it was a big deal for the Episcopal church to elect
Gene Robinson, a gay man, as bishop. Because, you know, there's never
been a gay bishop before.
When the fossilized conservatives couldn't
scare people with threats of splitting
the Church, they come up with
eleventh hour allegations against
his character.
The more outrageous claim is the fooferall over Robinson's support of OutRight Concord, a gay youth outreach group. The problem? An affiliated site, Outright Portland, had a link to bisexual.org, which in turn ran a banner ad for threepillows.com, a pr0n site. Hopefully the good people of the Episcopal church understand what character assassination is.
Update: sounds like the preliminary
investigation has cleared Robinson of the various allegations. The
confirmation vote is
back on.
Update 2: he was
elected.
HTTP 1.1 has a dizzying array of
response
codes. These are important. Designing APIs for the success case is
easy; designing APIs for all the kinds of failures that can happen is
hard. Mark has some excellent
guidelines for aggregators handling various response codes.
100 101
I'm going to try 410 Gone to tell the spider to
buzz off;
that's stronger language than 404 and implies that the client
should not try that URL again. But 410 Gone is not a
HTTP/1.0 feature and the spider may not know HTTP/1.1, so it's
possible I'm now out of spec. Isn't versioning distributed systems fun?
200 201 202 203 204 205 206 300 301 302 303 304 305 306 307 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 500 501 502 503 504 505
I've removed the comments from my blog. You can still get the
old ones,
but I won't be reading them going forward.
My blog is my space, my publication; I'm not running a message board. Every time someone posted something rude or dumb I winced. And when someone posted something smart I got frustrated because I didn't have a good way to discuss it with them. So from now on, if you have something to say please email me. Many thanks to QuickTopic, who runs a great reliable, free, simple discussion board service.
Some old broken Blosxom URL I had created a spider trap on my blog,
infinite URLs. But so far Inktomi is the only one dumb enough to fall
into it, querying URLs like
/~nelson/weblog/tech/Value%20Added%20<something>.html/
I fixed the bug a month ago and have now modified Blosxom to return
404 on these URLs. But Inktomi continues to hit me thousands of times
a day.
tech/dotnet/tech/dotnet/tech/photo/tech/dotnet/tech/ph oto/tech/photo/tech/bittorrent/tech/good/tech/bittorre nt/tech/photo/tech/good Spiders are a really dumb way to index the web. Too bad more clever solutions don't work. ![]() The game designers seem to have freely indulged in the cheese of the original movie, too:
The Kernel will never retreat
With writing like that I don't know that the story will be any great
shakes, but it should be a fun game. Some of the visual effects look like
System Shock 2
and the character skill system is strongly reminiscent of
Deus Ex.
Good places to borrow from.
Multiplayer demo was weak, but the single player game seems like a lot
of fun.
And neither will I Drive C forever! ![]()
Avid readers with too much time on their hands have claimed to see all
sorts of bizarre items while exploring class 3 and 4 automata [see
fig. 2]. These include images of Jesus, Elvis, crop circle designs,
the words "Paul (Erdös) is Dead", and Jesus in an Elvis jumpsuit.
I used to do complex systems research at the
Santa Fe Institute. I read
Wolfram's book. I mostly liked it - it's a nice introduction to
complexity theory and why complex systems are interesting. It's also
surprisingly shallow, lacking any rigorous foundation (quick, what's
the mathematical definition of "complex cellular automaton") or
references to 50 years of preceding research.
As seen on jwz
Gnomedex was great. I enjoyed having WiFi access
during the conference despite my
discomfort with
people paying more attention to computers than people at meetings.
Funniest moment: party the second night, good rock band on
stage, geeks sitting around laptops rather
than dancing or grooving.
Having WiFi definitely hampered my attention to the conference. I'd say 2/3 of the time I was on the laptop I was doing something other than Gnomedex. But at least I was there. And the other 1/3 was doing conference-related stuff, particularly kibbitzing on the talk on an IRC channel. That was pretty rewarding.
Update: Buzz
pointed me to a bit from
Clay with an important insight: it doesn't matter whether you like
WiFi as part of the world or not. It's not going to go away.
I am a bit alarmed at how many offhand comments I made on IRC or at the party ended up at blogs attributed to "Nelson from Google". I'm just another person, I like to relax too. Hard to do that when every word may be replayed. (PS: John, I meant it nicely!) Thanks to iSpot
Access for the WiFi
Just gave my Gnomedex talk; there's already a
goofy
moblog photo of me. There are more photos, too.
I'm experimenting with being online during a conference, even though I said it made me uncomfortable. And I'm liking it. It is a bit of a distraction, but being able network with the community that's here is fun. And IRC is a nice icebreaker.
Today's New York Times article
"In
the Lecture Hall, a Geek Chorus" is about people chatting
online during lectures and talks, creating a side channel. Quotes from
blogosphere luminaries - Clay Gillmor, Cory Ito, Joi Shirky, Dan Doctorow, etc.
people with laptops have realized that they do not have to sit idly
during the presentations. Some people, of course, ignore speakers
entirely by surfing the Web or checking their e-mail ...
But others are genuinely interested in a lecturer's topic and want to
talk concurrently about what is being said
I find people using laptops during meetings and lectures to be rude
and annoying. We go through all this trouble to get people
together in meatspace and then folks aren't paying attention, instead
signaling that they've got more important things to do than
what the group is together for.
But using chat technology to allow a side channel during a lecture does seem useful - it augments the meeting, it doesn't replace it. I particularly like the idea I first heard from Clay; project the chat room logs to the room so the chat becomes part of the event.
Hooray, the US military
killed
two of Hussein's sons. I'm sure democracy and justice for the freedom
loving people of Iraq and Afghanistan won't be far behind. Or maybe at
least electricity and clean water?
![]() There are a variety of these programs for the PC - ThumbsPlus and ACDSee are popular. I like CompuPic because it was reasonably priced ($40) and because it worked best. The app is very fast: they seem to have optimized a lot of image manipulation algorithms and take advantage of hardware acceleration. ![]()
Jonathan Adler takes lighting to a new level of design with his
sculptural Nelson Minor lamp. A simple black shade highlights the
beautiful shape and detail of the ceramic base.
If you'd rather have a Nelson Minar lamp, I've got one you can have
for five bucks. Lampshade's a bit dinged up but at least it's not
hideously ugly like the Nelson Minor lamp.
Thanks to Marc
![]()
I saw a demo about a year ago, probably linked to from a blog
somewhere, of a color picker. It wasn't the usual design nightmare
color picker - it was a simple site where you gave it a color, clicked
"generate", and it would randomly pick several other harmonious colors
and show you what a site with that theme would look like.
I need that tool now. Do you know what I'm talking about? I've tried searching Google but am overwhelmed with crap and I can't find it on Memepool or Metafilter.
Update: Many thanks to Chris Pirillo for emailing me
what I was looking for within 45 minutes. The site
is ColorMatch 5k, as seen
on Chris' LockerGnome.
Unfortunately ColorMatch 5k is down right now, but
ColorMatch 10k
does just as well (in twice the space :-). Or this
Flash version.
Todd recommends Color Harmonies.
![]() Tuning the bullet swarm is a fine art. So why not describe bullet swarms with XML? BulletML does exactly that. Try the Java applet (select a file other than template.xml, press start, move mouse in upper left window). Or play a stylish Windows shooter that uses BulletML: rRootage. (There's a Mac version, too.) rRootage goes further with Bulletsmorph, using genetic programming to come up with new bullet swarms. Crazy. There's lots of commentary on rRootage, more than you'd think a simple game needed. I think people miss simple shooter games.
As seen on Molelog
![]() Pretty useful but not exact. For instance it can't quite match the Google logo font. The closest match Diaconia is handsome but not quite right - the Google logo font has an odd lowercase 'g' with the connector on the right, not the left. Serifs are off too. Still, WhatTheFont?! is useful for the "find me fonts that look like this" problem. MyFonts credits the University of Birmingham for development of WhatTheFont?!. They also point to Identifont as another font finding tool. Identifont looks like an expert system: answer a bunch of questions and it comes up with candidates. ![]()
the ants are back...holy shit they piss me off...they're trying to
escape the heat...one of the drones discovered the climate controlled
comfort of my canvas house...and they went and told all their little
mindless buddies...
He also has a photo
site.
As seen on MetaFilter
I'm going to be speaking at Gnomedex
in a couple of weeks. I've never been to Des Moines before! Should be
a fun grassroots geek conference.
Interesting numbers from
an article worrying about a bond market bubble.
As seen on Metafilter
![]() The central problem in font selection is "I need a font that looks like this". myfonts.com tries to help with that - fonts grouped by category, a "fonts like this" button, and even the ability to browse other user's albums of selected fonts. Alas none of it quite works. But if you stumble around you can often find what you need anyway.
Even in 2003 with gay marriages imminent in Canada, mortgage companies
are irrepressibly heterosexist. After I refinanced,
my new mortgage company is not able to put both my name and my partner's
name on the mortgage statements. Apparently they've never heard of two
non-married people sharing a mortgage. And one of the post-mortgage
junk mails we got for life insurance came addressed to
"Nelson and Ken Minar". Um, not quite.
![]() Why is it that both Bushes preside over rising unemployment rates?
Microsoft Passport
has been
hacked yet again.
It was the second admission by Microsoft of a serious vulnerability in
Passport since last summer's settlement with the Federal Trade
Commission, which had accused Microsoft of deceptive claims about
Passport's security.
The theory of Passport is that we
trust Microsoft with all our personal data.
Even ignoring the risks of having a convicted predatory
monopolist own all online identity, do we really want to trust
a company with such a horrible security track record?
![]()
![]() Just yesterday, the Federal Energy Regulatory Commission refused to let California out of the predatory energy contracts it signed after being 0wnz0red by energy companies in 2000 and 2001. Yes, the same FERC who said those companies illegally manipulated the market. FERC is executive branch. Bush's friends run the energy companies. They continue to profiteer off their market manipulation. And 101, the major corridor through the Bay Area, is snarled so Bush can sell even more access to his administration.
Finally, some good news from the Supreme Court: Lawrence v Texas was
decided
in favour of overturning Texas' anti-gay sodomy law. The majority opinion
is based on a right to privacy; I didn't think that argument would fly
federally. "The state cannot demean their existence or control their
destiny by making their private sexual conduct a crime".
Scalia's minority report shows he's still hateful:
"The court has largely signed on to the so-called homosexual agenda,"
Scalia wrote for the three. He took the unusual step of reading his
dissent from the bench.
I don't care if he likes me so long as I have equal protection.
"The court has taken sides in the culture war," Scalia said, adding that he has "nothing against homosexuals." ![]() Service was fast and well executed, the price was fair, and now I have a new hot water heater and no cold showers. Blogging about domestic plumbing problems is awfully dull, but I'm amazed at how much trouble stuff like this is.
My hot water heater broke this weekend. An expense, sure, but the big
bummer is the nuisance of getting it repaired. It's way too difficult
to find someone to do work like this. How can I trust that they'll do
a good job? How do I know they won't rip me off?
I have the same problem hiring landscapers, architects, etc. The sewer guys I hired to fix a problem a few months ago charged me way more than they said they would and did a sloppy job. They didn't even haul off the old pipe! This problem seems unique to modern society. The Internet makes it easy to comparison shop and buy goods but finding quality services requires local community. Alas, craigslist doesn't help, either.
Happy Juneteenth!
Juneteenth is the oldest known celebration of the ending of slavery.
Dating back to 1865, it was on June 19th that the Union soldiers, led
by Major General Gordon Granger, landed at Galveston, Texas with news
that the war had ended and that all slaves were now free. Note that
this was two and a half years after President Lincoln's Emancipation
Proclamation - which had become official January 1, 1863. The
Emancipation Proclamation had little impact on the Texans due to the
minimal number of Union troops to enforce the new Executive order.
My new home loan finally closed, saving me hundreds of dollars a month.
This simple paper transaction is full of inefficiencies.
Cost is $4000 to me, another $6000 to the lender
to pay off my mortgage broker. Poof!
Of my $4000, $1400 is for a new title insurance policy just in case, you know, somehow the title went bad in the last year. Another $700 is to pay the escrow agent who never returned my calls and delayed funding a week because they gave the lender the wrong routing number. For 3 days I pay interest to both lenders - in the 21st century it takes 72 hours to move money around the US. Another $1900 in random fees - appraisal, "document fees", etc, total junk. Why don't banks just let their lenders adjust rates downward, saving everyone the trouble of refinancing and keeping the customer? I tried calling my original lender; they never even answered the phone. Crazy thing is with this inefficiency I still come out ahead. ![]()
Soon Roy Orbison stands before me, completely wrapped in cling-film.
The pleasure is unexampled.
'You are completely wrapped in cling-film,' I say. 'You win the bet,' says Roy, muffled. 'Now unwrap me.' ![]() RoN sets itself apart from other RTS with a feature borrowed from Alpha Centauri - territory. You can't just waltz your superarmy in, you have to fight for control of land. It gives the game a lot of strategic depth. Otherwise it borrows very effectively from the RTS genre. I'm looking for people to play online with - if you're interested, drop me an email at nelson@monkey.org.
Another joy of Perl:
if ("foo" == "bar") {
This prints xyzzy. Why?
in Perl == means numeric equality. And "foo" and "bar"
both evaluate to 0. If you want string
equality, you have to use eq.
Of course I know this but do I remember it always? No.
print "xyzzy\n"; } The principle of least surprise is important in scripting languages. Perl fails this principle. ![]() The biggest problem with Courier is that it has serifs. Serifs have no place on screen fonts - 100dpi is not enough to do them right at normal text sizes. That's why I override fonts in my CSS to be Helvetica and Lucida Console.
My friend Adam went to Peru; he told me about
amazing Inca stonework for monumental architecture. Earthquakes aren't friendly
to large stone buildings; the Inca solution was to build with
irregularly shaped stones precisely fit together so there were no
simple shear planes. All cut without iron or steel. Read more in this
fine article.
More pictures:
![]() The Internet is grand - lots of shops selling Kubrick. Froogle is helpful for finding things. JList, JTL, Kid Robot, The Outer Reaches, and Giant Robot. Prices are all over the map. I found my wireframe Tron at a Japanese store, but I don't read Japanese and the shopping cart interface has defeated me. I see something about ¥14,200 too, ouch.
Aaron Swartz's
xmltramp is good
software. It's the simplest way I know to handle XML content. Sort of
like DOM but without all the obnoxious function calls.
rssFeed = urllib.urlopen("http://.../index.rss")
rss = xmltramp.parse(rssFeed.read()) print rss.channel.title for i in rss.channel: if i._name == 'item': print i.title
Joel Spolsky has
some
insightful things to say about venture capital,
caveats to entrepreneurs. It's easy to read the article as just saying
"VC is evil" but I think it is more subtle. Good information for naive
technologists. Be sure to read the
response from a VC blog, too.
One thing that was frustrating when I started my company was how little information there was about the VC industry. I had a few friends, colleagues, and angels who gave good advice. But there was a shortage of open conversation. Maybe blogs will open that up; Venture Blog, from some of the folks at August Capital, is remarkably frank.
As seen on Venture Blog
E*Trade is making news with a new product, a
portable
mortgage. Usually if you sell the
house the loan is paid off. With portable mortgages you can take
the loan with you, including the incredibly low 5.875% interest rate.
I bought my first house last year after calculating just how good a deal a home loan is. Now 16 months later I'm already refinancing, saving hundreds of dollars a month just by signing some papers. It's crazy. The bad news is if we have a long deflationary period I'm going to feel real dumb holding all this debt. Or if we have a major earthquake, or if the insane San Francisco housing market finally collapses, or.. I've never felt so much like an adult as when I signed the loan papers.
From
time to
time
people ask me why I
foreshorten
my RSS feed rather than
providing the full text of the story. It's simple — I'm uncomfortable
with syndication.
Call me vain, but I work hard on presentation. I want people to see my brilliant words here, with my own visual design. RSS is great to let you know when something's new but it doesn't let the author have any control over visual layout. You can't even easily include HTML tags in RSS. And fancy stuff like my carefully crafted mouseover images doesn't translate well to RSS, particularly if javascript is involved. That's why I don't put the full entry in my RSS feed; I want you to come here in a real browser. I'm not totally happy with this restriction but I like it better than the alternative. ![]() An ad seen today on nytimes.com.
You can have even more fun with Citrus Moon's
tiles by
taking the tiles and modifying them to suit. It's easy
to recolour tiles; the magic is multiplying in colour.
![]() ![]() Here are step by step instructions for taking the groovy ultrawave tile and turning it Blogger orange.
This technique only works for creating single colour images; it'll ruin fancy tiles with many colours. And show care for your reader's eyes: this tile is actually pretty awful. ![]() My favourite is still The Second Renaissance; you can watch it online. Of the ones not on the net my favourite is Kid's Story for its chilling story of an angst boy finding salvation in The Matrix. Peter Chung of Aeon Flux fame also has fun with Matriculated. The animation has so much detail it looks better to me on computer screen than TV. And shame on the DVD programmer for making such a hostile DVD. ![]() Michael Sanders' book From Here You Can't See Paris: Seasons of a French Village and its Restauarant does the American reader a favour by stripping away the romantic picture of quaint French villages to explore what life really is like. And it's not all vacation: the hard rural work, limitations of relative isolation, and the slow death of French agrarian life. But life in the Lot is good, too. Strong community, excellent local food and wine, and a small breath of life in the destination restaurant that is the center of the book. I'm thankful to the author for so effectively conveying a lifestyle that is very close to my desire yet very far away.
Perl just keeps getting better and better. Consider the following
simple code:
#!/usr/bin/perl -w
In Perl 5.6 this prints foo as expected. In Perl 5.8 (Debian
5.8.0-17) this prints foofooSTRIP.
$foo = "fooSTRIP"; $foo =~ s/STRIP//e; print $foo Huh? My friends who like Perl claim that what's going on is that Perl is evaluating the right part of the s/STRIP//e, which is empty, as a Perl expression. And apparently in Perl 5.8 this empty expression doesn't evaluate to, say, an empty string. No, it evaluates to some previous expression's value. The lack of a warning may be a bug. My fear is some Perlmonger decided that the empty expression evaluating to something non-empty is a feature. PS - yes, I know the /e is unnecessary here and removing it fixes my problem. ![]() ![]() Geocities is not your only Krull infostop, either. You can find cheats for the game, an online RPG, someone who has made a replica of the Glaive, a loving review, and even a video clip. Amazon will ship Krull on DVD to you in 24 hours for $18, but alas Liam Neeson didn't choose to participate in the special features.
The "weapons of mass destruction" justification for invading Iraq is
crumbling faster than expected.
The British government was caught plagiarising 12 year old student papers to justify the war in February. Downing Street defended the report anyway, but now Blair can't escape charges the report was hyped. The story is also falling apart in the US. The Marine commander in Iraq says intelligence about chemical weapons on the battlefield was "simply wrong". CIA insiders are breaking ranks, shifting blame from analysts to policy makers. Colin Powell himself reportedly thought the weapons argument was "bullshit". Wolfowitz admits that the weapons issue was used because it was bureaucratically expedient. And the story of Jessica Lynch, rescued POW, has been overblown, probably deliberately. Her family is forbidden to talk about it. So far Jessica is keeping her head down, but reports that she has amnesia are false. The pressure is on to find weapons of mass destruction in Iraq. The US has refused access to Iraq for UN arms inspectors, so it probably won't be long before the US "finds" something on its own. The political situation in the US is so bad that my friends (pro and anti-Bush) have an unspoken agreement just not to talk about it. Silence = Death.
The
Bush
tax cut would have saved me 0.6% of last year's gross income.
I'm creating new jobs already.
![]()
What you have is sort of like a conveyor belt except, for reasons not
fully understood by this correspondent, it separates the trash, with
the lighter paper crawling upward and eventually off the top of the
screen, while the heavier cans and bottles and whatnot slide downward
onto another conveyor belt.
I used my BitTorrent
dumper to survey what was out there. What I
learned is that BitTorrent isn't a file sharing network, it's a transport.
Discovery and download initiation are still highly centralized.
Every shared file is managed by a single tracker host that plays
an active role helping find peers to download from. I
fear most .torrent files are short-lived.
I did a survey from three sites of dubious legality: torrentfiles.com, animetorrents.com, and torrents.co.uk. In 870 .torrent files I found 32 different trackers. The top 4 trackers accounted for 75% of all the files. Not a lot of diversity. Of course, my sample is biased. I was also interested in how folks use the BitTorrent metainfo. About 80% of all files use a piece length of 256k, followed in popularity by 512k and 1024k. I also found a bunch of unofficial tags: path.utf-8, creation date, comment, and md5sum. I'd like to do a more formal survey with a wider sample; this torrent search engine claims 8200+ files.
I was experimenting with BitTorrent, so I wrote a little
file dumper
to see what was in the mysterious .torrent files.
The code doesn't just parse
the
protocol; it'll dump whatever the decoder can find.
Sample output:
info length 41470132 piece length 262144 name Halo2_E3.wmv pieces [159 SHA-1 values] announce http://news.gametab.com:6969/announce But it's easy to criticize; BitTorrent is still awfully cool.
Python deals with time in three formats: a float (seconds since epoch), a struct_time tuple, or a string. This is all
well
documented but the conversions confuse me. Here's another way to
look at it:
float -> tuple gmtime,localtime float -> string ctime tuple -> float mktime tuple -> string strftime,asctime string -> tuple strptime
The damn ground shouldn't move.
![]() I'm trying to watch Red vs. Blue. So I download the DivX (encoded to 84 kbytes/sec), set it up to watch full screen, then sit back from the monitor. Ugh! Blurry, blocky, smeared. I'm watching the watery reflection of a movie. It looks better if I don't play full screen, but what's the point? I'm beginning to think MPEG-2 set the right limits on encoding. My experiments with DVD ripping left me thinking the 5:1 disk space savings of DivX wasn't worth the quality loss. As seen on BoingBoing
![]() My favourite glitch group is Autechre. Their Tri Repetae++ is brilliant, but it was Chiastic Slide I first noticed. I picked it up cold at a record store because of the beauty of the Designer's Republic cover art.
![]() The new album is Draft 7.30. So far it's a bit rhythm-heavy for me, I prefer the lushness of Amber. But I've hardly listened it yet. More Autechre: discography (with cover art), Warp Records site for Draft 7.30 with some RealAudio samples, and the Amazon search leads to albums with lots of samples. ![]() As seen on
A Whole Lotta Nothing
I finally tried out
BitTorrent,
Bram's
P2P file sharing app. The clever innovation in BitTorrent is that
it separates the search for files from the download of
files. Unlike KaZaA or Gnutella or whatever, BitTorrent only supports
file download, not search. You just use the web to find the
.torrent locator file you need for download, for instance
for the
Half Life 2
trailer.
BitTorrent is pregnant hackerware - it works great but is still poorly documented. And the apps aren't well integrated. Someone could build a killer tech company out of it. Some extra info is available in Brian's BitTorrent FAQ and the BitTorrent Wiki. Me, I started downloading by doing
apt-get install bittorrent
btdownloadcurses hl2_trailer.torrent ![]() Facial muscle modelling allows them to do dynamic expressions and lip-sync, in-game and in realtime. Physics modelling not only gives each object mass and inertia, but also complex surfaces to tumble against and flexible shapes to bend. It's harder to judge the AI, but if what they say in the voiceover is true it's pretty amazing. It's like cutting edge movie CGI five years ago, but realtime on your PC. All this technology will make for a beautifully immersive experience. I hope the story will match - not much in the trailer, but the modelling of the locations was so beautiful I'm willing to bet they've got a good backstory. Between Half Life 2, Doom 3, and Deus Ex: Invisible War it's going to be a good year for first person shooters. ![]() Boy I hate Perl. Why do I have to type ;, $, and @? Ugh. Python rulez!!1@!
My tiny little weblog has now been targeted for
referer spam.
That'll teach me to publish referers in the sidebar.
What I don't understand is the diversity of source IP addresses. Are they really users of www.gevasys.de, www.mod.gov.sk, and cair.res.in? Do they 0wnz0r those systems? Can they spoof source IP? Update: Todd, who was hit too, says that the hosts that accessed us were running open HTTP proxies. I found a pattern to detect the spam, so for now I'm ok. Won't last though. ![]() ![]() Nevermind, that was last season. Wrong annoying character. ![]() SpaceMonger is good software. It tells you where your disk space is going using a two dimensional TreeMap layout. MarketMap is another interesting use of this visualization technique. (Java, caveat browsor). I think SpaceMonger replaces my favourite disk visualizer, the ten year old xdu (née xdiskusage).
I serve my blog via my dinky 128kbps upstream DSL link, so bandwidth
is precious. Fixing
the fiasco of
mod_gzip triggering an MSIE bug helps a lot. Now I'm
supporting If-Modified-Since and ETags headers on my blog contents,
too. The magic is Bob Schumaker's
lastmodified
plugin, which pretty much Just Works. Thanks, Bob!
Please tell me if you see any caching weirdness.
Today I learned that Internet Explorer isn't caching any images from my blog
at all. Why? A
nasty
bug in MSIE that
mod_gzip
triggers. Gory details and a partial fix below.
The issue is that mod_gzip includes the following header in all responses:
Vary: Accept-Encoding
This helps prevent caches from serving gzip data to browsers that
can't support it.
Unfortunately it also triggers a bug in MSIE - the browser won't cache any document with that header! So with mod_gzip 95% of the world's browsers won't cache any pages from the server. Some bandwidth savings. It'd be nice if mod_gzip was smart enough not to add the Vary: header if it didn't compress the file, but it's not. A partial workaround is to turn mod_gzip off for files it won't be compressing anyway, like images.
<FilesMatch "\.(gif|jpe?g|png)$">
This fix is only partial; other files (say, HTML) still won't be
cached. Three choices - stop using gzip, lose caching in IE,
or drop the Vary: header and break caches.
mod_gzip_on No </FilesMatch>
Poor Microsoft. After the
recent
collapse in Passport security the Gartner Group is
recommending that all Passport partners
leave the program or else
provide an "additional, more secure form of authentication". The FTC is on
Microsoft's case, too.
Part of the problem with the most recent flaw is that it had been there for months and Microsoft has no way of telling how many accounts were compromised. Nice. Centralized authority is dangerous.
I wanted to record an Internet radio show to MP3 so I could listen to
it the
way I want to.
You'd think this would be easy, just like
taping a song off the radio only without the hiss. No.
The software is all designed to bottle things up. Here's how I took
the cork out.
First I need to get the bits. RealAudio streams are deliberately difficult to copy. Thanks to a friend I found Streambox VCR, outlaw software that is able to download a stream to a local .rm file. Don't miss Flying Raichu's story_of_crack.txt where he splices code from an old beta into this version to make it work again. Now to convert the RealMedia bits to MP3. A search for rm mp3 convert is heavily spammed. The best option seems to be to play the audio through RealPlayer and capture the waveform at the audio driver level. There are zillions of Windows programs that capture audio. I settled on Total Recorder because it was the most popular on KaZaA. (No, I didn't steal it - $12). It creates a fake sound driver in front of the real one to capture the sound. It also does a cool thing where it tricks Real into playing faster than realtime so the conversion doesn't take so long. Total Recorder captures the waveform and can push it through LAME to get MP3. But you can't easily download a LAME binary, you have to go to France to find it. The resulting MP3 is too quiet; MP3Gain fixes it. This is a lot of work to tape a song off the radio. DRM doesn't stop you if you're persistent, but it's enough to stop most people. And just like the way Macrovision prevents you from plugging your DVD in through your VCR, the restrictions on Internet audio and video prevent you from replaying them the way you want. With Palladium what I did will be impossible. I won't be able to install Streambox or Total Recorder on my own computer, or if I do I will be locked out of using RealMedia. ![]() I have a big smile on my face now remembering the song "Warm Leatherette".
A tear of petrol is in your eye
The Grace Jones version is my favourite.
The handbrake penetrates your thigh Quick, let's make love Before you die On warm leatherette
As seen on MetaFilter
![]()
Jen from UbiSoft tech support tells me that this "error" was
intentional, as one of the goals of the patch was to prevent people
from using these mock rom drives.
This is too bad, I really like this
form of fair use.
I finally figured out how to get Vice City to work with Alcohol 120% - have to rip with DPM turned on to defeat SecuROM 4.8. Why do I have to have a $50 program just to use the $50 game I bought? At this rate I'm tempted to steal the games off of a P2P network: at least those versions don't have copy protection.
There is good news on the copy protection front:
according to ExtremeTech
Intuit was so burned by the fiasco of the copy protection in Turbotax
2002 that they swear off copy protection from now on.
"We're dropping (DRM) in all prepaid products - that means any copy you
purchase at a retail store or direct from us," the spokesman said ...
I'm sympathetic to software companies, particularly game
companies, who try to stop people from stealing their software. But
copy protection is a usability nightmare as has been shown time and
again over the past 20 years.
"That means no Macrovision DRM software, no DRM software from anyone," Gulbransen said. I believe that Microsoft's Palladium is going to make all this a moot point as we lose control over the very software running on our computers. We are doomed to DRM hell. ![]()
Sure, it was OK, in a Jurassic Park kind of way. Fun special effects,
some nice production design, some good fight choreography.
But they need to fire whomever was the music director. The music, particularly during the fight choreography, was awful. And the writing. The writing. Who told the Wachowski Brothers they could take themselves seriously? The movie plays like a serious of disconnected fight sequences interspersed with horrible high school philosophizing. A lot has been made about the "deep story" in The Matrix and how it invokes Plato, modern philosophy of mind, etc. I never thought it was much more than a 16 year old's solipsism but at least it made the movie entertaining. I'm sad to say the expansion of the mythology in the new film is just ridiculous. Overall it was fun and I don't regret the time spent, but basically it was as disappointing as we all feared. PS - who owns the long underwear concession in Zion? PPS - the review in Slate is awesome. "Lucasoid". Nasty reviews are the most fun.
From way back in July 2000, Matt Pritchard
writes in Gamasutra about online game cheating from his
experience with Age of Empires.
The article is a helpful summary but something about
it seems incomplete. Maybe it's that most of his proposed remedies are
really just variants of security through obscurity, yet he himself
says Rule #5: Obscurity is not security.
The only real fix is his Rule #8: Trust in the server is everything in a client-server game. He left out the corollary: only build client/server games and make sure the server is a trusted computer. Even then it's not going to be perfect, as noted here with the cheats in Diablo II. Unless the server is perfect the hackers will find server bugs to make bad things happen. The whole problem is fascinating. It reduces to the same problem of distributed systems consistency in the face of Byzantine failure. Or copy protection, or DRM. This is what Microsoft's Palladium is all about. As seen on BoingBoing,
CamWorld
![]()
"You'll never be my mommy.
This week on a very special 24, Kim meets Kate Warner and grapples
with feelings of family loyalty. Will she shoot Kate, too? Find out tonight!
My real mommy is dead." ![]() The game works pretty well so far, much better than the mess that was GTA3 on the PC. Some annoyances: it installed DirectX 9 without asking my permission, there's a silly off-by-one display glitch in the cutframe letterboxing, and I can't get Alcohol 120% to emulate their crappy copy protection. But the framerates are good and the graphics are beautiful. Even the intro is cool, retro C64 load screen. Lots of laugh out loud moments. My favourite so far, the little putt-putt moped called the "Faggio".
Thanks to
Todd
for setting me on the right path to fixing my
codepage problem.
With his hint I found an
O'Reilly chapter that contains docs to get Samba to translate
between Windows codepages and something sensible. (As long as by
"sensible" you don't mean UTF-8). The magic is in the
smb.conf:
[global]
Props to O'Reilly for putting the
whole book online.
client code page = 437 character set = ISO8859-1
Who knew that Microsoft Windows had
so many
different encodings?
There's CP1252, the almost-but-not-quite ISO-Latin-1 that is responsible for the evil breakage of "smart quotes" by encouraging web publishers to act like 0x93 is a valid way to represent a left double quote. At least it encodes É in a sensible place, 0xc9. But why stop at one codepage? There's also CP437, an ancient DOS codepage that is nothing like Latin-1 but contains Latin-1 characters like É at 0x90. Yes, that's a different place than CP1252. Apparently both of these evil 19th century codepages are still coexisting on my 21st century Windows XP system. I just dumped a bunch of MP3 files from my WinXP box to Linux and found the filenames hopelessly garbled. I finally guessed they're in CP437. I'm a bit surprised Samba didn't take care of it for me. Python to the rescue:
def cp437ToLatin1(s):
return unicode(s, 'cp437').encode('latin-1')
Employees get no time off when Bush visits their factory.
Airlite president and CEO Brad Crosby said workers will be given one
of four options during the visit: work their regular shift in an
adjacent plant not visited by the president, take the day off and make
up the work on Saturday, use one of their vacation days, or take an
unpaid day off.
From AP, Workers
Won't Get Paid During Bush Visit.
"Right from the beginning, we didn't want to see anyone take a cut in pay. We're just trying to be completely fair," Crosby said ![]() Online games have always been victim to hacks, made even worse by the real world market on eBay for characters, items, and cheats. Blizzard was clever and went to a server based model to prevent hacks. Apparently it's not good enough, because the game is awash with superpowerful obviously hacked items. I found a good article analyzing the motivation and sources for these cheats. The motive is tens of thousands of dollars (real dollars). The source? Harder to say, because software and virtual property gets passed from hand to hand before it hits eBay. The author of the article above fingers a student at Tsinghua University. From Beijing to the Bay Area, mediated by a virtual world. ![]() Beautiful little piece of Flash animation by Juan Romero, part of OFFF 3, the Online Flash Film Festival in Barcelona. Most of the Flash there is banal to me, but Oh, Pop-Disorder! is a lovely bit of unsettling glitch.
![]() As seen on
MetaFilter
![]() The final Animatrix short was released, The Second Renaissance Part 2. It's in the same style as the first one I liked so much. Incredibly beautiful animation, the technique is fantastic. I want to learn more about the director, Mahiro Maeda. The marketing strategy with Animatrix is great. Build excitement for The Matrix: Reloaded by giving away related content, then sell the giveaway too. You can preorder it on Amazon now, but it doesn't ship until June 3. May there be mercy on man and machine for their sins. ![]()
Why can't white people
just leave the house?
Another
serious hack
of Microsoft Passport.
The flaw allowed a single Web address--or URL--to be used to request a
password reset from the Passport servers. The URL contains the e-mail
address of the account to be changed and the address where the
attacker would like to have the reset message sent. By entering the
single line into a Web browser an attacker can cause the Passport
servers to return a link that allows an account's password to be
reset. By following the link returned in the message, the attacker can
change the password for the victim's account.
Bugs like this are incredibly common, usually not worth reporting. But Passport is different. Passport wants to be the single trusted repository of personal data, all your eggs in one basket. I worry they don't have a fundamental systems security model to make that safe. This isn't the first time Passport has been hacked, either. ![]() The protocol design is very clever. It's as low level as it gets. The hardware device accepts commands like "write this MP3 data into memory" or "stick this byte on the I2C bus". All the hard work is done in the server. That means functionality can be added without hacking the device. Streaming Internet audio, Ogg Vorbis files? Have the server do the hard work and send MP3 to the device. Menus work by sending IR codes to the server, so you can add new functions. Some nut has added a calculator. The server may be the barrier to the SLIMP3 becoming common. Anyone into MP3s has a PC in their house and may even have a network. But do they have a stable server machine? It'd suck if mom's relaxing music in the parlour is interrupted because junior is playing SimCity.
Someone broke into my car last night. Well, let themselves in; no sign
of forced entry. At least they didn't wreck too much havoc. They
took $15 in change and my old MP3 player but left the rest of the car
pretty much alone.
I live in a quiet suburban neighbourhood of San Francisco, not the kind of place where you'd expect this kind of petty crime. And I always lock my car door. Did I forget? ![]()
Fur Cat Toys
As with everything, there is
controversy
about this product on the
Internet:
The rabbit fur which is used in producing these toys comes from scrap pieces of fur which are a by-product of rabbit meat and would normally be discarded. Vo-Toys, Inc. would never purchase the hides of animals killed solely for their pelts. This is totally contrary to our business principles which dictate the love and good care of pets.
There is a STRONG possibility that these products are made from
domestic dog or cat fur. In any event, Vo-Toys cannot categorically
deny this, since much fur from China is mislabelled.
I should just buy Ejnar the whole rabbit and be done with it.
![]() I love movies like this, they remind me of my melodramatic Texas heritage. Baby Jane was difficult to watch again. 134 minutes is too long and the performances aren't as good as I remembered. The most surprising thing on second viewing was the strong role of Elvira, the loyal maid, played by Maidie Norman. Complicated class and race relations. The most astonishing thing for me about Baby Jane is that Bette Davis and Joan Crawford would agree to make the film. They are both so sad and Bette Davis is so hideously ugly. It comes across now as camp rather than horror. I hadn't realized there was a series of older actress exploitation films. ![]() I was really hoping to find a wireless MP3 component. There are a couple, but none seem as good as the SLIMP3 with a wireless/ethernet bridge. The cd3o has a voice interface that sounds like a terrible idea. The Exstreamer sounds cool but doesn't have any interface at all. Gloolabs' Homepod is still vapourware. What really sold me is the SLIMP3 is hacker friendly. You have to love a company that makes developer resources available via SourceForge. They remind me of Empeg. I imagine SLIMP3 will be acquired by someone. I wonder if they can remain hacker-friendly while producing a product simple enough for the average consumer? ![]() Foveon has a sensor technology called X3 that works around this problem by stacking several translucent sensors in a single pixel. In theory this should give sharper pictures. So far the Sigma SD9 is the only camera out there with the Foveon sensor ($1500). Alas, the reviews suggest this first camera isn't quite up to the sensor. ![]()
Commanders gauged the wind and glided along at precisely that speed so
that sea breezes would not blow across the ship during Bush's
speech.
... The camera angle also was arranged by the White House to ensure it did not show the nearby coastline. ... The Navy sent all but a couple of fighter jets off the plane Wednesday and Thursday. Those left behind were left on the flight deck as props for Bush's speech. ![]()
But Herold said the precision and power of today's U.S. munitions
don't translate into lower civilian casualties, especially when a war
involves urban targets, as in Iraq. ...
"Even if these bombs hit their targets, you'll kill civilians nearby,"
he said.
The article goes on to reference
iraqbodycount.net, a site
that estimates civilian casualties by reading news reports.
I've been pulling their data myself - it's the big number on my
sidebar. They have a clever Javascript image compositing system
for you to embed in your site. (The image here is static.)
We've killed around 2500 Iraqi civilians. That's roughly World Trade Center numbers. No one has an estimate of how many soldiers we killed. Given that we've liberated Iraq, shouldn't we care about the dead soldiers? They were victims as well. The US is deeply into the arrogance of power. It's wonderful that only 132 Americans have died in this war. But it is dangerous that our power is so disproportionate. We lash out across the globe without feeling consequence. The rest of the world is horrified at our violence, and in the US we are ignorant. ![]() But the UI in the firmware is crummy. Enter RockBox, an open source firmware that was built by hacking the Archos. Works great: better UI, better music buffering for skip protection and battery life, and I think it even sounds better. iPod owners - it may be great design, but you'll never be able to hack it. Hardware companies should encourage this kind of thing. ![]() And she's going to move out of her boyfriend's house at 5am? The boyfriend who lost his legs because of her? Cold.
![]()
body BANG_OPRAH /\boprah!/i
I don't know what's funniest - that there's a lot of spam featuring
Oprah!, that some spamassassin programmer realized that and wrote a
rule, or that they named it "Bang Oprah".
describe BANG_OPRAH Talks about Oprah with an exclamation! score BANG_OPRAH 4.300
Domain names are currently ASCII-only. Which means unless your
language is American English you probably can't have a web site with
a name that's written properly. There's a
long
standing effort to create International Domain Names, led by
the IETF IDN working group. Now
it's
about
to become a reality with ICANN's endorsement.
The technology problem is fascinating. The right solution is to fix DNS to use UTF-8. But no one thinks we can update the zillions of programs that assume DNS is ASCII. So the recommendation is to encode Unicode in ASCII via Punycode. Slap xn-- in front of the encoded name and poof you have an IDN. crèmebrûlée.com becomes xn--crmebrle-20ap0r.com. Try yourself! How are users going to see these names? The plan is to augment web browsers, email clients, etc. with software to handle Punycode. Internet Explorer is already halfway there, thanks to Microsoft's interception of broken URLs. Verisign released a preliminary browser helper that augments IE for IDNs (with a now-obsolete encoding). Expect many more to follow. I'm not convinced it will work. The political problem is also fascinating. Domain registrars stand to make a fortune registering new names. They're impatient. Verisign has been selling IDNs for a year with the now-obsolete RACE encoding; there's a debate whether to grandfather them in. Verisign even threatened to violate the DNS standard. And a lot of people still disagree with the Punycode approach. It essentially dooms non-American languages to second class status for a very long time. But it might be the expedient way to support IDNs. We'll see. ![]()
Here I am! I stand at the door and knock. If anyone hears my voice
and opens the door, I will come in and eat with him, and he with me.
I guess they liked this better than
Rev
3:16 -
So, because you are lukewarm - neither hot nor cold - I am about to
spit you out of my mouth.
Canon's photo software loses data. Their tool autorotates images and
renames files sensibly. But it blows away a bunch of the
metadata from the photo! Better to copy via Windows. If their software rotates an image for you,
you lose at least the following EXIF tags:
Maximum Lens Aperture, Metering Mode, Sensing Method, File Source,
Firmware Version, Image Compression Mode, Flash (fired or not),
Subject Distance
I wrote my own tool to read the EXIF data in the image and rename and timestamp files appropriately. What a pain in the neck. EXIF isn't a good standard; I decided exiftags does the best job of reading EXIF files, including Canon's extensions. Converting timezones is a pain. I was going to autorotate the images but as I note below the software that claims to do this losslessly doesn't. Maybe I'm obsessive? Well, now I have a Python library.
jpegtran claims to losslessly
rotate and crop JPG images. Neat trick - instead of modifying and
recompressing the image,
jpegtran just fiddles the vectors.
![]()
Is this a flaw inherent in jpegtran? Is it an artifact of the Gimp's jpeg decoder? It's not just jpegtran; Canon's own software has the same artifacts. And I don't think it's just the Gimp; I get the same results with djpeg and pbmplus. Update: I got a great response from Guido explaining what's going on. JpegTran is lossless, in the sense it is reversible - re-rotate the image with jpegtran and you get the identical pixels. The differences above are because of jpeg decoding. For example, camera jpeg images are often 2x1 chroma subsampled. When you rotate them that becomes 1x2 and the decoder acts a bit differently.
Blogs, the zines of the new century.
![]()
Compliance with the USA PATRIOT Act has never been easier, thanks to
Sybase's PATRIOTcompliance Solution. It integrates your existing
customer and transaction information systems into a consolidated
compliance system that detects unusual activity and automates its
investigation and resolution in a timely, secure and meticulously
documented manner.
The John Ashcroft police state,
brought to you by
Sybase. I love the part about
automation and detection. Erosion of civil liberties encoded in SQL.
I couldn't tell if this is a spoof or not. The sybase-ads.com domain is registered to Evolution Bureau, a high-concept advertising firm that specializes in websites and software to go along with ad campaigns. All of the examples there are similarly on the edge between creepy and corporate, but there's too much work there to be someone just playing around. The clincher is the page on sybase.com itself. High farce that it's not clear if "Compliance or Consequences" is a parody or the real thing.
As seen on
MetaFilter
I've been using
ofoto for printing images from my
camera. They do an OK job but they overprocess - I see
unsharp mask damage. I'm ready to try another printer.
I haven't found a good review site, but looking around I did find PrintRoom.com. Their prices are better than ofoto, you can tell them not to do any enhancements, they have a FAQ for pro photographers, and they even provide an ICC profile if you want to colour match yourself. Worth a shot. Unfortunately WinGimp doesn't have any ICC support. Raph has a good page explaining why: it's hard and there are patents in the way.
Like my
graph of Usenet posts, I've graphed
the amount of email I've sent over the past ten years.
![]() What surprises me is how steady the email stream is. There's a gap for a vacations I took summer of 1996 and spring 2001. And a drop-off after I started working at Google in 2002 (I'm not indexing my Google email). But basically my email sent has been roughly the same for the last ten years. Weird. ![]() Björk did a fantastic job, being both very Björky and Norma Rae. She's like the anti-Madonna; equally creative and aggressive, but with talent. If you like von Trier and the Dogme 95 thing make sure to see The Celebration (Festen) by Thomas Vinterburg.
Did you know SpamAssassin sends
data offsite? I only noticed while debugging why spamassassin
sometimes takes a full minute to classify a message.
I'm having a hard time finding a full human-readable list of what it does, but if you have the source I think grep 'tflags.*net' rules/* gives you a dump. It at least does a bunch of DNS lookups and checks against Vipul's Razor, DCC, and Pyzor. I don't think SpamAssassin is evil. I am surprised that it does network checks by default. There's the obvious privacy issue. And network overhead can be high, particularly with 60 second timeouts. It seems like spamassassin installations are vulnerable to denial of service; if an attacker can cause all spamassassin installations to wait 60 seconds to classify every email, it could cause chaos in mail delivery. But network-based checks can be really useful. The DNS heuristics look great and the collaborative spam databases are a real solution to the spam problem. There's an obvious commercial opportunity here. For now I'm leaving network checks on. If you want, you can turn network checks off with the flag --local.
Citing "well-informed Canberra sources close to U.S. thinking," The
Australian's foreign editor Greg Sheridan said the U.S. has produced a
blueprint to bomb Yongbyon if the plant went ahead with reprocessing
spent nuclear fuel rods to make atom bombs.
– Reuters,
2003-04-22
![]()
Los Alamos National Laboratory, the birthplace of the atomic bomb, has
restored the nation's ability to make triggers for nuclear weapons for
the first time in nearly 14 years.
– Associated
Press, 2003-04-22 ![]() GipsySoft also makes Winspector, a handy replacement for Spy++ for digging into how Windows apps work. ![]() What I like best is how easy this was. I spent weeks building Funes, a Java mail search program that never was useful. With Python and MySQL it took me just a few hours and the result is better! Goodbye, grepmail. I'm not the only MySQL fulltext enthusiast: Jeremy Zawodny's blog has a great entry with comments and Mitchell Harper has a useful introduction article. There's also some performance discussion on a PHP forum. One trick - for speed, run myisamchk -a on the table after building the full text index. And do your big load before creating the index; afterwards, inserts are slow. ![]()
![]() The image at right is one of my favourite cheeses, Epoisses de Bourgogne. It can be.. difficult when properly aged.
I finally acquired a copy of all my
Usenet posts for all time; such fun finding my
first post!
But the graph of my posting activity is sad:
![]() Most posts are before summer 1994, when I graduated from college. Usenet was a hugely important thing for me, both a technical touchpoint as I was learning Unix and the Internet and a social touchpoint as I was coming out. Now mailing lists, the Web, and blogs have replaced Usenet as the primary online social medium. I miss the exclusive club we used to have.
-- ogicse!reed!minar
If you're hardcore about evaluating
digital cameras check out the
ISO 12233 Standard Test Image,
produced by
I3A
TC42
WG18.
A finely detailed monochrome test image with features as small as
.1mm. Take a snapshot of the $150 ISO image,
measure your spatial frequency response, and you know how good your camera is.
![]() I learned about ISO 12233 on Imaging Resource, as part of their fanatically detailed page about camera testing. The review of the S400 has the 2272x1704 WG18 ISO 12233 image if you need. Also, the viewfinder test confirms I'm not crazy - the optical viewfinder really is way off center.
Jim Waldo has a
weblog.
So does
Ken
Arnold,
Guido
van Rossum, and a bunch of other interesting systems designers.
They're collected at Artima, a
community set up
by Bill Venners
centered on his consulting business.
Waldo is one of the authors on the best paper I've ever read on distributed system design, A Short Note on Distributed Computing. Essential reading.
For the past three weeks my work email box has been deluged with spam
bounces. Not spam, but bounces of spam allegedly sent by me. It's
obnoxious to filter. And I worry that someone thinks my company is
actually sending out these solicitations for Brazilian penis
enlargement pills. I'd guess a few thousand have been sent so far;
interestingly, I haven't gotten a single reply from a human. I guess
everyone ignores spam.
This spambounce storm reminds me of when I was sendsys bombed back in 1993. Back then, a couple thousand unwelcome emails was a real problem. Now it's a typical week. ![]() ![]() ![]()
Got some SafeDisc bad blocks on your CD? No problem. Got some funky SecureROM 4.8 spiral tracks? No problem. Rip the disc to your hard drive, then either mount it with their emulator or burn it to CD-R. Mostly I use Alcohol 120% to rip the games I buy so I don't have to have the physical disc in the drive to play. No more downloading scary cracks. I also rip all discs before I ever mount them; the virtual device is much faster than the physical. Obviously Alcohol 120% enables piracy. I haven't seen their MDS files (ISOs with the out-of-spec data) turn up on file sharing networks, but that can't be far away. But I hope they're not tarred with the piracy brush; the software is great for legitimate use, too. Fair use has a posse. Daemon Tools is a free hackerware predecessor. Alcohol 120% is a polished commercial product. Wired, which in the past has breathlessly promoted the Media Lab, has a sober article titled The Lab that Fell to Earth, an update on the Media Lab that's too long but well researched.
The Lab is sensitive about the cream puff stereotype and tries to
gloss over projects that are ripe for lampooning. On my first tour,
I'm hustled past the mock kitchen where the Counterintelligence group
plays around with smart dishwashers.
I was a PhD student at the MIT Media Lab 1996-1999. I have mixed feeling about my experience there. I learned a lot but ultimately got so frustrated I bailed on the PhD and have never regretted it. The master's program was great, but the place lacks the academic foundation to be a good PhD program. And some of the stuff that went on there vis-a-vis students seemed borderline unethical. Still, it was a fun place and I'm thankful for the opportunity to have done so much fun work there. And I'm proud to see friends continue doing great work there, like Cameron's Blogdex or Raffi's embedded networking work. The place was special, maybe it won't be forever.
![]() PS: Marc? Phblllt.
I've had my new digital camera, a
Canon Elph S400,
for a week or so now. I'm really impressed with it, particularly the
quality of the colour even on full automatic settings.
![]() I've had a lot of fun with the macro setting. Cliche flower photos, but they're fun to do. ![]() ![]()
All I have to say is, Once this is over, the Iraqi people better be
the freest fucking people on the face of the earth. They better
be freer than me. They better be so fucking free they can
fly.
![]() I continue to be disturbed by being entertained by depravity. "Psycho with a sniper rifle threatens people on a street in Manhattan" - bring on the popcorn! I keep coming back to something from The Republic, section 377b:
And shall we just carelessly allow children to hear any casual tales
which may be devised by casual persons, and to receive into their
minds ideas for the most part the very opposite of those which we
should wish them to have when they are grown up?
Plato identifies stories as having great power in the moral
upbringing of children and argues for strong censorship of arts.
I have problems with the larger argument (particularly its
basis in a criticism of fiction), but I continue to consider the moral
effect of modern entertainment on our society.
![]() ![]()
In a move sure to complicate the efforts of Al Jazeera, the Arabic news
network, to get its
English-language Web site running, Akamai
Technologies abruptly canceled a contract on Wednesday to provide Web
services for the site.
... "Basically this was our answer to the hacking that has been nonstop and pretty aggressive," [Al Jazeera's online English editor] said. "We had a done-and-dusted deal on March 28. Then yesterday, we get a letter from them terminating the contract." Al Jazeera has been struggling to stay online in the face of persistent attacks from hackers intent on silencing them. Now Akamai abandons their customer right when they are most needed. Craven. ![]() ![]() ![]()
Mayor Daley unfurled his own version of shock and awe overnight:
Without notice, he sent heavy equipment into Meigs Field under police
guard to begin demolishing the lakefront airport.
More in the Sun Times,
the Friends of Meigs Field,
and MetaFilter.
Make sure you see
the picture.
Old fans of Microsoft Flight Simulator know it as the startup airport. GA pilots know it as one of the nicest urban GA airports around. The mayor has been trying to shut the airport for awhile but wasn't able to build the necessary consensus. Now he's got what he wants by sneaking in at 11pm and unilaterally destroying the airport. Under the guise of "homeland security". Lovely. ![]() I just got back from a small road trip through northern California and was surprise to see how much anti-war sentiment was visible. The first photo is around noon on Saturday in Petaluma, CA (pop: 55000). The second is around 1pm on Sunday in Fort Bragg, CA (pop: 7000). In both cases you have protestors standing out in the hot sun in a small town, opposing the war. ![]() Granted, Northern California is fairly liberal. But not too liberal - these are pretty small towns. About three minutes after I took the photo in Fort Bragg someone yelled "queer" at me from their pickup (I've still got it!). I did see some pro-war or pro-Bush signs, too. Overall I was just surprised to see so much political sentiment out there in small town California. People think! ![]() The feature that surprises me the most for being useful is the TV playback mode. Very comfortable looking at photos on a TV screen, and handy in a hotel room. Trying to find an honest online camera store that will ship quickly and reliably is unnecessarily difficult. I ended up at B&H for rapid shipping. Amazon has it for $480 via J&R. ![]()
Yes, there's a way to
gamble on the war.
TradeSports is running a
futures market on how long Saddam will be in power. The graph below is
the current odds that Saddam will be gone by the end of April. Thanks
to
Nick
for pointing out this is a good 'war mood' indicator.
![]() ![]() But the game makes me so damned tense! I find that's true of many good video games. Hacking Python is more relaxing. ![]()
I knew I shouldn't have
spoken so soon:
Lisa Rein has
disturbing photos and video
of cops hitting protestors. More on the
BoingBoing discussion.
The White House is vowing a strong retaliatory response after the BBC
aired live video of President Bush getting his hair coiffed in the
Oval Office as he squirmed in his chair and practiced on the
teleprompter minutes before Wednesday night's speech announcing the
launch of military operations against Saddam Hussein.
Story (via
technorati). Anyone have the video?
![]()
It started at 7 a.m. Thursday with an operation as precise as anything
staged by the Special Forces. Platoons of protesters arrived
simultaneously at various intersections of the city and shut them down.
According to the paper Thousands of people roaming the streets in an organized/chaotic way, hundreds of cops doing battle to control the situation. In Portland in the early 90s when this kind of thing happened the cops went apeshit and started bashing heads. In SF it sounds like the police just calmly did their jobs. Could have been a lot worse. ![]() 12 years ago, that was me. It's not me now and I'm of mixed emotions. Blocking traffic isn't going to stop the war. But doing nothing encourages complacency. It is wrong that the US is off killing thousands of Iraqis and our biggest concern is which freeway offramp might temporarily be shut down.
I'm at a loss on things to blog, as discussed with
Marc and
Rael.
I don't want to be a boring warblog, but I can't think of anything
else to say.
Gillmor's own concerns are expressed much more clearly than mine:
Bush and Ashcroft will whack away at liberty for everyday people ...
They will seize on the
sure-to-come domestic attacks to insist that government has the right
to know absolutely everything about you and me, but we have absolutely
no right to know what the government is doing with our money and in
our names.
![]()
Want to know what contemporary war looks like? Viddy
this
video (7 minutes WMV, alternate).
It features attack footage from an
AC-130 raid in
Afghanistan. The images are from the gunner's point of view. The
voiceover is remarkable.
![]() Watching the video you have no real sense that there are actual people dying down below. Just little bright blobs on a dark backbground. The soldiers are remarkable, too. So many people involved, so calm! War machine. Listen to the voices at the end:
That one's still crawling there
I know those two guys I saw them flying apart I saw him die earlier Thanks to Diffuse Shadows for the link and Obey the Fist for the video. I think it's interesting how most blogs picking this up are pro-war. ![]() ![]() Isn't this what computers are for? Can't the code remove the punctuation for me? And why do I have to tell them whether the card is a Visa, Mastercard, or Amex? The first digits on the card make that clear. It's like the site wants to make it hard for me to buy something. Is this some sort of Visa requirement, to only accept the number exactly as typed by the user? ![]()
"Update. Now Serving in All House Office Buildings, 'Freedom Fries,'"
read a sign that Republican Reps. Bob Ney of Ohio and Walter Jones of
North Carolina placed at the register in the Longworth Office Building
food court.
The other day I was picking up my shirts at the Freedom laundry when I met a handsome man with his hair in a long Freedom braid. I invited him back to my house for some Freedom wine and before I knew it we were Freedom kissing. Turns out he's into Freedom active; we had a lovely time and then he left, promising to write me Freedom letters. I sure hope I didn't end up getting the Freedom disease. That'd be doubleplusungood. ![]() ![]() These Tom Clancy games are creepy military porn. Fans love them for their realistic weapons, tactical planning, corpses, etc. I confess to an uneasy enjoyment of this kind of fantasy. Hitman 2 was awesome. What surprises me is how much of the fan activity for Raven Shield is European. I would have expected something this militaristic would be most popular in the US. Maybe the realism of it turns off American Rambos. PS: Amazon has a $10 rebate. ![]() The review is a bit goofy but does have one insight I particularly liked:
his novel's ad-hocracies ... offer a knowing, gently satiric view of a
once ascendant digital culture.
![]() gdchart is good software; simple code to draw graphs and save them as GIF or PNG files. The Python interface makes it really easy to do some serious charting.
gdchart.chart(gdchart.GDC_LINE, (450, 250),
outputBase + ".png", [time.strftime("%m/%d", time.localtime(day[0])) for day in dispReaders], [day[1][0] for day in dispReaders], [len(day[1][1]) for day in dispReaders], [day[1][2] for day in dispReaders], [len(day[1][3]) for day in dispReaders]) ![]() After three
months of intrusive inspections, we have to date found no evidence or
plausible indication of the revival of a nuclear weapons program in
Iraq.
In the meantime, the US has produced no compelling evidence of the alleged weapons of mass destruction in Iraq. Let's ask another expert, Hans Blix, lead UN weapons inspector in Iraq:
I would rather have twice the amount of high quality information about
sites to inspect than twice the number of expert inspectors to send.
Gee, the US isn't helping the weapons inspectors inspect for weapons?
I guess I was naïve to think that my government wouldn't just lie about the evidence we claim to have. ![]() A pox on DRM software, btw - I couldn't get a decent screencapture of the video or even a link to the actual video. Grr. ![]()
Biker sandwich: bad
Creepy old sedan: bad Shiny new SUV: just right ![]() The crazy thing about watches is you can easily spend $20,000 on one without getting gold or jewels. Just a lovely skeleton movement or a beautiful A. Lange & Söhne 1. The workmanship on the inside is as beautiful as the exterior. Alas, not in my range, so I just read along with the watch geeks.
These two bits of Perl print different things.
print localtime(0);
I'm sure if I were smart enough to use Perl I'd know all about how the
two statements were in different contexts and how it's wonderful that
Perl evaluates things in a context-dependent way because I can do so
many cool things with it.
-> 001631116933640 $now = localtime(0); print $now; -> Wed Dec 31 16:00:00 1969 I don't want to be that smart to write simple scripts. I started learning Python a month or two ago and I'm a much happier person. ![]() No fewer than 71 different hosts grabbed my robots.txt in eight days. Two creepy ones: NameProtect (trademark enforcement) and TurnItIn (anti-plagiarism). This doesn't bug me too much. I do wonder why some of these crawlers felt it necessary to fetch robots.txt forty times in eight days. ![]() The comic is fun - it neatly captures the wonder and mystery of Lovecraft's epic fables. I like the everyman aspect of Mock Man, a nice rendering of Lovecraft's own generic men. The thing that I think is coolest is that in the comic book is a URL and email address from 1997, and they still work! The Bits out of Time. ![]()
<a href="asin:B000003RGY">current music</a>
The asin plugin will turn it into
the appropriate Amazon link.
I was prompted to write this by Kottke's post about a change Amazon made to URL formats. Used to be you could go to Amazon, copy the URL for a page, paste it into your blog and slap on your associate ID and you'd get the credit. No more, now you have to construct the URLs very carefully. This plugin makes it simpler. I hope I got the URL format right. I'm sticking in the undocumented ref=nosim - I think it's obnoxious that Amazon defaults my links to 'buy more crap'. ![]() There's also a new version of the imagesizer plugin to automatically add size tags to your story's images. Thanks to Todd for the Perl-fu to do this more cleanly. Finally, I now have a place for all my Blosxom plugins. Apache stylin! ![]() The game is very complex. The problem is it lacks any tools to help you understand what's going on in the simulation. My cities get stuck at some low population level and I can't find out why. It's frustrating, not fun. The documentation is awful; you have to buy the $20 strategy guide to even make the game playable. Even the folks who play obsessively can't figure out how to get all the big buildings. ![]()
After the Bomb goes off, Kim Bauer will flee back to the bomb shelter
and found the New America with her pristine blonde genes.
I have a new wireless setup in my house. LinkSys 802.11g access point
with a LinkSys 802.11b ethernet bridge in another room with a small
LAN in it. But it's really unreliable. I measured by doing pings once
a second; in the past 12 hours I've had a total of 960 failed pings
spanning 120 discrete outages.
I wouldn't mind the occasional lost packet but this kind of network lossage is playing hell with some connection-oriented Windows applications we use. Very annoying to have your terminal session terminated. And web page loads fail a surprising amount. Is this typical? Ken noticed that all the outages are either 6 seconds or 11 seconds. Is that some sort of connection reestablish timeout? ![]()
Todd
was kind enough to patch my
imagesizer Blosxom
plugin so that it now handles stories with multiple images. If you're
using it, try the
update.
file is a
Blosxom plugin that makes it easier to include dynamic content in your
Blosxom blog. File loads the contents of files into variables.
You can then use these variables in your
Blosxom flavour templates. For example, the head.html for the
sidebar on the left refers
to a variable $file::quicktopic; the file quicktopic
is rewritten every 15 minutes by a cron job to include the latest
QuickTopic messages for my blog.
![]()
If I were writing the entry for "blog" for a CD Rom encyclopedia or
something, I'd want the entry to include mention of how bloggers make
the world both small and their own.
His comments are insightful, but what he casts as problems with blogging are exactly why I like blogs. My blog is my own small world. It's my one place to indulge the desire to talk only about what interests me. He finds the use of dates in blogs distracting. I like it; emphasizing the ephemeral nature of blogging frees me from the burden of writing for the ages. Mostly I'm blogging this to highlight the painful irony of blogging about a non-blogger who doesn't like blogs but wrote a blog entry to say so. I had a hard time wanting to read his whole page, too. I do like his found art. ![]()
The tattoo was "definitely Maori, but stylized," Sharples told The
Associated Press. "I just wish it was on somebody else."
Ta moko is a
beautiful
cultural heritage; finding it on a US pop culture thug must be jarring.
Some see this kind of appropriation as a form of
identity
theft.
![]() Perl gives me a rash. ![]() Well, sadness tinged with greed, for it seems if I just cooperate in some bank matters with my new friend JAMES EDWARD then I stand to gain access to a lot of money! I'm a bit confused as to why a long lost Czech relative would be in Mauritius, but it sounds safer than Nauru. Back in the 90s Internet fantasy era I read a bunch of stuff about how the Internet would allow the third world to be entrepreneurs on equal footing. I find it sort of charming that folks in Nigeria and Mauritius are running the Spanish Prisoner. The best story on this stuff is Wendy Willcox, who manouevered a Nigerian spammer to appear in front of an Amsterdam webcam.
Why do people specify data with fixed width fields? I've been playing
with DoSomething,
a WinAmp plugin. It does one very
simple thing - an HTTP GET on a configurable URL with the name of the
song I'm playing, artist, etc. Sounds great! I wrote a CGI to keep
track of the songs I'm playing.
DoSomething only works with ID3v1 tags, not ID3v2. And the Einstein who defined ID3v1 decided that 31 characters was plenty for the title of every song written. So my CGI sees truncated titles. I spent 20 minutes trying to find another Winamp plugin that would do HTTP messages with ID3v2 tags. No. The closest I found was What's Playing, which looks nice but requires WinAmp 3 and doesn't do HTTP. I'm wasting my time. ![]()
Air Flight Service, a company that specializes in high-resolution
aerial photography, produced 9-by-9-inch black and white negatives ...
[they] then applied a grid pattern to the prints to provide units in which
the marchers could be counted.
What I love about this is how simple and low-tech the method is. They took
pictures. They counted the people in the pictures. We've been doing
this kind of thing since at least World War II. Why has it been so difficult
to do this for political actions?
![]() The underlying problem is an impedence mismatch between new Unicode oriented tech like the Web and XML and old ASCII oriented tech like email and text editors. Browsers and RSS readers should mediate between the two but software often gets it wrong. For instance on a cut and paste MSIE translates U+201C into the byte 0x93, which I guess means something in some proprietary Microsoft encoding but is not valid ASCII. If it just turned it into a proper ASCII 0x22 quote life would be so much better. So because of buggy software we're left with poor typography. This may all seem a bit pedantic for a design nicety, but handling non-ASCII correctly really matters if you write in almost any language other than English. Unicode and UTF-8 really are the right things. The ironic thing is that in this blog's preferred font (Arial 12pt) smart quotes don't really look any better than normal quotes. So for now I can ignore the whole issue.
Good
article about tannins in wine in the SFChron.
(Micro-oxygenation) can make a young sample taste better, but is that
a good thing? I don't think so. Many prominent (Bordeaux) estates that
receive high (Robert W.) Parker scores use micro-oxygenation, and
they're proud of it. But the jury's out about whether it will shorten
(the wines' life).
Today's fashion
in wine is to make wines that are enjoyable right when they're
released. Among other things, that means winemakers are cutting back
on the tannin in wines. All well and good, but we risk losing the joy
of aged wines. I've had some 20 year old California zinfandels that
were simply fantastic, very different from a young zin. I'd hate to
lose that opportunity.
I can't believe she fell for the old "a nuclear bomb just went off and
you have to hide with me in my bomb shelter" trick.
I'm proud to see my friend Raffi getting a bunch
of exposure for his
attempt to send the Super Bowl to his friends via broadband. His writeup for the
FCC gives the lie to Valenti's claim that HDTV will result in
unfettered copyright violation. Best case, Raffi found it would take
five days to send a copy of the Super Bowl to someone from his house.
It's a stunningly straighforward demonstration of how the copyright
hoarders either don't have a clue or are willfully misleading policy
makers.
"Floyd," I wrote, "do you really exist?"
David Lazarus goes
up against SBC customer support and can't tell whether it's a
human or a robot.A few minutes passed. Then came the reply: "Yes, I am a person like you." Was it just me, or did that sound eerily like something Hal might have said in "2001"? "So this is really a live session?" I asked. "I'm not talking to a machine?" "Yes, you are talking to a live person," Floyd wrote back after another lengthy interval.
![]() Trillian is fantastic software. Clean and simple instant messaging, no ads or annoying crap. And it interoperates cleanly with all the major IM networks. The free version 0.74 skin stuff is silly, but Trillian Pro has a good no-nonsense default look. Lots of usability points are high: it imports your contacts from other IM networks with no fuss, autopatches nicely, etc. Excellent piece of software.
Male honeybees, on the other hand, sacrifice themselves on the altar
of love. Upon climax with the queen, he explodes, and his genitals rip
from his body, leaving the mutilated member as a kind of chastity
belt.
It must be fun to be a science journalist.
If you look closely, you'll see that each male honeybee sports, on the tip of his phallus, a hairy structure that can dislodge the severed genitalia of his predecessor.
Michael was kind enough to write me and comment on my mod_gzip notes.
He suggests not specifying
mod_gzip_item_exclude reqheader "User-agent: Mozilla/4.0[678]"
because it results in a
Vary: User-Agent
header which makes life hard on proxy servers and only protects the
miniscule few people who run old Netscape 4.0 versions. Isn't
technology fun? He also says that Apache 2.0's
mod_deflate
does indeed make HTTP compression easier; Apache 2 was designed for
plugins to filter traffic as it is served.
![]()
In the spirit of saving bits I set up mod_gzip on my
Apache 1.3 server. Now HTTP stuff is compressed in transit.
Fetching my weblog went from 20384 bytes to 9717
bytes; even better, it went from 38 packets to 21 packets. This may
seem silly but on an ADSL line upstream bandwidth is hugely limited;
anything I can do to save bandwidth is welcome.
Usability on mod_gzip is fairly low. Original site is offline, docs are awful. Fortunately someone has taken on the task of making a decent support site. Even then the details of how it works are magic and opaque; honestly, this kind of server configuration should be much easier or automatic. Maybe it is in Apache 2.0.
Here's the magic I'm using:
LoadModule gzip_module /usr/lib/apache/1.3/mod_gzip.so
<IfModule mod_gzip.c> mod_gzip_on yes mod_gzip_dechunk yes mod_gzip_item_exclude reqheader "User-agent: Mozilla/4.0[678]" mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime text/ </IfModule>
I've added a QuickTopic discussion
topic for my weblog. I don't expect much in the way of traffic, so
I just made a single one for the whole blog.
Blosxom's amazing
flavour support makes it easy to render blog data in a variety of
formats. I've built a little
Blosxom
Flavour for RSS 0.91. Just unpack it in your Blosxom entries
folder, then access it like any other flavour with
?flav=rss091 or /weblog/index.rss091 Blosxom has a built-in RSS mode already; the difference here is you have control over it via flavours. I took the opportunity to make the output smaller and to remove the <description> content. See for yourself.
![]()
Back in 1994 I was the world's biggest HTML expert.
But I haven't learned anything since then. With my blog I'm trying to
do more with CSS. My friend Susanne pointed me to
Sizzling HTML Jalfrezi, an excellent web design guide that among
other things has a very clear CSS tutorial. I'm still looking for a
cookbook for various layouts. But now I know how to do
all sorts of annoying tricks.
Somebody on a mailing list I wrote a message to is on
SpamArrest, some sort of spam stopping system that involves senders of
emails having to go to a web page to authorize the email. Fine,
whatever. But today I get this in my inbox:
You may remember recently sending an email to a Spam Arrest customer, and receiving a response asking you to visit our website and type in a word that was shown to you in a picture.I'm flabbergasted.
She didn't even have to gnaw her leg off!
I decided to breathe new life into my weblog and switched it to
Rael's excellent
Blosxom blog
engine. Blosxom is lean and simple; 10k Perl, blog entries are simple
files. May be a bit too lean; I'm having to roll the calendar archive
by hand and some things like relative links don't work quite right.
And I still can't get Apache to cooperate on URLs, I think I have to
resort to mod_rewrite. Still, it's better than a hand-edited HTML file!
Wow, the Animatrix video is
beautiful. I'm with
Raffi, though - the Quicktime viewer sucks. On Windows I can't
even get it to view full screen, so I have to watch this hypnotically
beaufiful animation with my prosaic Windows desktop littered around
it.
I sure hope the mountain lion eats her.
I've always felt guilty putting "low grade" gas in my car. But then, I
had a sneaking suspicion that this three grade stuff is just a case of
gas companies trying to make a buck by trying to differentiate their
commodity product. Anyway, I'm not the only cheap gas buyer - the
Valero station I'm at just got new pumps, and they have an odometer
that shows lifetime gallons pumped. So far - 23000 gallons of 87
octane, 7000 gallons of 89 octane, 4000 gallons of 91 octane.
I'm a smart guy. I know a lot about Internet security. But I have
limits on what I want to learn. I just bought an 802.11g rig - access
point, wireless bridge, laptop. I've put the access point inside my
firewall because that is what makes the most sense to me. So I go to
enable WEP & MAC filtering - yes, it's not perfect, but I think it's
good enough. What a pain! Linksys' interface has me type an ASCII
passphrase which it turns into a random hexadecimal string. Kinda
cool, but my driver on the laptop doesn't know about the ASCII
convention, so I have to type the 18 character string. What a
nuisance! And the usability is awful - I have about 6 different
choices of the input format for the WEP key, why do I have to choose
which one I typed? Can't it tell?
Then I go to secure all the machines inside my firewall, so in case someone breaks the WEP it's not a total disaster. Did you know that Windows XP enables "Simple File Sharing" by default? That's the kind without passwords. You can turn it off by opening the "Folder View" option - the one that usually controls the visual layout of folders. And then, once you've got "Complex File Sharing" on (WinXP Pro only, no WinXP Home), you have to go to every share and set permissions. Only the permission setting interface is confusing, and there's no easy way to configure permissions from the list of folders you're sharing. So finally I decide to turn off file sharing entirely. How do you do this? By going to the Network Connection for the LAN, and selecting "remove Windows file sharing". Seems sort of intuitive, only I still don't understand - does that just turn off my file sharing server, or does it disable the client too? What a mess. We've got a long way to go on the usability of security. |