Light Reading: The Confusion and The Atrocity Archives

I finished two books this weekend: Neal Stephenson’s The Confusion and Charlie Stross’s The Atrocity Archives.

First, The Confusion. I’ve been a Neal Stephenson fan since college, when I first read Snow Crash. The Confusion is the third book in his latest set, following Cryptonomicon and Quicksilver, and continues on where Quicksilver left off, following the Waterhouses and Shaftoes from around 1690 to 1702. Like his previous two books, The Confusion is largely the tale of money and finance, and how our current financial system came about. It’s also a fascinating tale of English and French history, and occasionally filled with swashbuckling pirates. It was an enjoyable read, but it was also a long, dense book, and it ended with a totally unexpected twist. Once the fourth volume, The System of the World comes out in September, the entire set will stretch from the 1660s to the present day and cover over 3,500 pages. They’re good books, but you’ll want to block out a month or two to read them all, and then re-read them to figure out what the heck was going on the whole time.

The Atrocity Archives is a bit different–it’s set in the modern era, and the main story is only 178 pages long, although there’s an excellent novella tacked on at the end the carries the characters on a bit further. In Hollywood-speak, it’s probably best described as H.P. Lovecraft meets Simon Travaglia. It’s basically a spy story. Our hero works for The Laundry, a branch of the British government charged with suppressing dangerous knowledge and preventing disasters. In the world of the novel, there are things that go bump in the night, and the right incantation (or the right software) can trigger things that science is still laboring (in secret) to understand. If you’ve seen Hellboy or any of a thousand similar movies, then you understand the setting. The really enjoyable part of The Atrocity Archives is the story itself and the writing. I’d highly recommend picking up a copy. You may also wish to read A Colder War, one of the author’s short stories, although the short story is a lot creepier and less enjoyable then the novel.

Update: Found an excerpt.

Posted by Scott Laird Mon, 26 Apr 2004 17:29:16 GMT


The .ly soap opera continues

As I mentioned a couple weeks ago, the .ly domain has been having problems. It was briefly looking like it was all simple incompetence, but now it’s getting entertaining again:

Dear Client,

Please be informed that on Tues. 20th. Apr. 2004 the official ccTLD .ly website has been criminally seized by a group claiming to be the caretakers of the .ly domain.

The seized website is an illegal replica of the original site apart from the fact that non of the dynamic features of the site work, and a different colour scheme. There are also other unauthorised changes which have been designed to mislead and confuse.

This message is to warn you to keep your user and login details secret. Should you receive an email from any address with nic.ly as the domain name then please disregard this and inform support@lydomains.com.

Lydomains.com is taking steps to ensure that your valuable intellectual property as well as your private data remains secure at all times. Meanwhile, this matter has been reported to the appropriate internet authority to investigate and resolve.

For your information the original nic.ly website can still be viewed at www.noc.ly.

Should you have any concerns about this then please write to info@lydomains.com

Lydomains.com administrator

Okay, clearly something is going on, and I’d love to know what it is.

Update: The Register has a few more details that I missed last Friday. As expected, there’s a debate over ownership of the .ly domain. It’s unclear exactly what is going on today, though.

Posted by Scott Laird Thu, 22 Apr 2004 14:23:03 GMT


Hi-fi phones

Network World is reporting that ShoreTel is about to start shipping VoIP phones that support “hi-fi” codecs. Specifically, they’re going to be using up to 256 kbps for 16-bit, 16 kHz audio, which could sound a lot better then the 8-bit, 8 kHz audio stream that has been universal for decades.

I’ve been wondering when this was going to happen. In a LAN environment, there’s no real reason to limit yourself to 64 kbps audio. Even when talking over the Internet at large, you should be able to find a decent codec that’ll give you better sound quality while still using less then 64 kbps. On the other hand, we’re all really familiar with the compression inherent in standard telephones; there’s a chance that better sound quality could actually backfire by making IP phones sound less like the old phones that we’re all familiar with. If someone wants to send me a pair of Asterisk-compatible hi-fi phones, I’ll report back on how they sound.

Posted by Scott Laird Wed, 21 Apr 2004 17:32:22 GMT


Xorp

CNET is running a blurb on Xorp, the eXtensible Open Router Platform. According to the article, Xorp’s authors are hailing it as “the Linux of routing.” Since open-source router platforms are one of my interests, and I’d never really heard of Xorp, I just took a quick look and was pleasantly surprised.

It’s based on the Click modular router from MIT, which I’ve been fascinated with for years. Click is largely a replacement for Linux’s (and potentially other free OS’s) networking stack. It slides in between the hardware network interface drivers and moves the kernel’s native packet handling off to the side. Click’s packet processing is completely programmable; you can write network switches, routers, VPN hardware, mesh routers, programmable network test hardware, or nearly anything else with Click, all without fighting against the kernel’s native packet handling. More importantly, Click is freakishly fast; one of the demos I read about a couple years ago was handling roughly 1 million packets per second on a normal dual-CPU PC.

The big problem with Click was that it was difficult to configure. You had to understand IP networking at a very low level in order to make heads or tails of it, and even a simple 2-port router took most of a page to configure. Multiport routers or switches were doable, but you wouldn’t want to set them up by hand.

Unless I’m mis-reading things, this is where Xorp comes in–it’s a full wrapper for Click. It looks like it provides a CLI, dynamic routing support, and a simple configuration language. Xorp’s backend then sets Click up and off it goes, flinging packets around at freakish speed (er, freakish for a PC, that is–I wouldn’t put it up against a Catalyst 6000 or faster).

Xorp 1.0 is due out soon. I haven’t downloaded it yet, or even looked through more then one whitepaper, but I’m looking forward to playing with it. Assuming that someone goes to the trouble of gluing this together with a small Linux distribution (I think it’s Linux-based; their website and whitepaper don’t say, but Click only works on Linux and FreeBSD, and the FreeBSD layer has been broken for a while), it should be an easy way to build cheap mid-speed routers.

Posted by Scott Laird Mon, 19 Apr 2004 19:00:54 GMT


...and I'm shooting another wedding

Wedding photography is a weird thing; it’s hard to get into, and hard to get out of. I’ve been shooting around one wedding per year since 2001. I’ve never advertised or tried to find weddings to shoot, but friends keep asking me for prices, so I keep doing it. One of these years, I’ll either give it up or try for 4-5 weddings per year, but for now one per year is quite enough stress, thank you.

I signed up this year’s wedding this afternoon. The bride is a friend of my sister’s, and one of her bridesmaids (from the wedding I shot in 2002). They’re getting married in July and were having a hard time finding a photographer. So I’m at it again.

In many ways, shooting weddings is the most stressful thing I’ve ever been paid to do. It’s amazingly nerve-wracking; during the ceremony, you’re basically just hanging on for dear life, trying not to miss anything important while balancing dozens of things in your head. Lighting, angle, framing, figuring up what’s coming up next and where you should be to shoot it, managing rolls of film/flash cards/buffer space, all while trying not to get in anyone’s way or make a spectacle of yourself. The posed pictures aren’t a lot better, because you’re always short on time and people always need to be somewhere else. So, you can’t find the bridesmaids when it’s time for their pictures, and you’re running 10 minutes late already, and the bride forgot that Aunt Mildred was going to be in town, so can we take a couple pictures with her, too?

The crazy thing is that I actually enjoy this. Something must be wrong with me.

Posted by Scott Laird Mon, 19 Apr 2004 04:17:28 GMT


LinuxFest Northwest

I spent a couple hours at Linuxfest Northwest in Bellingham on Saturday. I wasn’t sure what to expect–I try to avoid “fests” of any type, and community Linux events make me nervous–but this was surprisingly well-organized and well-attended. There were several hundred people in attendance, and they weren’t all as geeky as you’d fear. Which is to say that there were a surprising number of kids with their parents, as well as a lot of 50+ years olds. The exhibit room surprised me; about 1/3 of the tables were local networking companies and 1/3 were colleges, user groups, or other non-commercial interests (like the obligatory Debian table), but around 1/3 of the tables were reasonably large companies. Pogo Linux has a table showing off their dual- and quad-opteron servers. Amazon was recruiting. There was a table for Candela Tech, which isn’t exactly a house-hold name, but Ben Greear, their founder, wrote the 802.1q VLAN code for Linux, and was showing off their network testing tools in their booth. According to their website, they’re based in Ferndale, Washington, which is one of the last places in the world I would have guessed.

Anyway, my main reason for attending is that, in a fit of weakness, had volunteered to help judge the “alpha geek” contest. Yeah, like I really needed to spend two hours in a room with people competing to see who was the geekiest. The contest was basically a trivia contest covering Linux, PC hardware, networking, and geek-compatible movies. There were a few small disputes over vague questions, but by and large everything went well. In the end, we named Jim Richardson as the geekiest in a close decision.

After that, I wandered around, ran into an old co-worker, talked for a bit, and then took off. It’d been a few months since my wife had had an entire day without the kids, so I’d dragged them to Bellingham with me, and dropped them off with my parents on Lummi Island for the day. In the end, I ended up back on the island around 2:30, and spent a couple hours playing with the kids, watching the eagles, herons, and sailboats drift past, and generally enjoying the day. It was a nice counterpoint to the Linuxfest. All in all, I’m not sure that I wouldn’t have enjoyed sitting on the island reading The Confusion even more, but I wouldn’t have caught up with the former co-worker, or with Bob, the CS department’s sysadmin from when I was in college. So, all in all, it was a good day.

Posted by Scott Laird Mon, 19 Apr 2004 03:33:19 GMT


Saw a FlipStart today

I saw a prototype FlipStart hand-held PC today. One of my friends is working for them and was showing off a prototype. I only had two or three minutes to play with it, and I didn’t have a camera with me, so I don’t have a ton to say here. All in all, it seemed decent–it’s clearly a small PC, not a big handheld, but the formfactor is okay. It fit into my shirt pocket with a millimeter or two to spare. The display seemed decent; it wasn’t outstandingly bright, but it I was right next to an open window, and it was still readable, which puts it about on par with my old Clie. The touchpad is on the right side of the unit, above the keyboard, where you can reach it with your thumb while holding the system. The mouse buttons are on the left. I was surprised, but the touchpad/button layout worked well for me. There was also a scroll wheel and a few other buttons, but I didn’t have a chance to see them in action. The keyboard is way too rubbery for me, but my contact says that it’s going to be replaced before it ships. I didn’t have a chance to test any peripherals or networking on the box; I barely had time to watch XP boot and then play around with it briefly.

The specs on the website seem to match was I saw, except for the USB ports–the specs list one USB 2.0 port, while the model I held had two mini-USB ports.

If it was shipping today, would I buy one? Probably not; I’m mostly a Mac person these days, and I wouldn’t have a whole lot of use for a pocket-sized PC. On the other hand, if it was a Mac, I’d be jumping up and down–I’d drop my Palm in an instant for it.

I was using Windows instead of OS X as my primary desktop, I’d be sorely tempted with this, because it seems to be small enough to be pocketable, while still being big enough to be usable. The keyboard’s around half-sized, which isn’t big enough to touch-type on, but it’s big enough for 3 or 4 finger typing. It’s a lot bigger then any of the built-in Palm/PocketPC keyboards that I’ve used, although the tactile feel wasn’t really any better.

Posted by Scott Laird Mon, 19 Apr 2004 03:10:32 GMT


TiVo repair

I’ve finally had it with my downstairs TiVo. As I mentioned before, it’s been crashing with increasing regularity. I’ve been avoiding dealing with it for a few reasons; mostly, I’ve been too busy with other things, but I also hate debugging problems with black boxes, and my TiVo is definitely a black box, even if it does run Linux.

Unfortunately, my inaction hasn’t made the problem go away. If anything, it’s happening even more often now then it was a month or two ago. But, in the meantime, I’ve been able to watch a couple crashes and gleaned a bit of information:

  1. It doesn’t just stop–when playing back recordings, it skips a couple times first, with long pauses, then a few frames, then another long pause. This repeats for a couple cycles, and then it finally crashes.
  2. When it’s working right, the TiVo’s front-panel LEDs blink brightly when I press buttons on the remote. When it’s dead, the front panel LEDS still blink, but only slightly. It looks like there are two LEDs that blink, one driven by hardware and the other by software. When it’s dead, the software one doesn’t respond. But, when the box has just crashed, the software LED still works. It takes a while for it to die.

If I saw the same symptoms on a server, I’d be thinking “bad hard drive”–we’re seeing processes lock up in the ‘D’ state here, followed by a congestive collapse of the whole system, as every system process that touches the disk (or talks to a process that talks to the disk, like syslog) slowly crawls to a halt. Bad motherboards or power supplies don’t usually leave parts of the OS working right for a few minutes.

So, I pulled the drive out of the box and I’m currently cloning it onto a new, larger drive. There are decent tools and directions online for this, so it’s not a big pain rounding up all of the pieces. Plus, when it’s done, I should have twice as much disk space.

As a plus, the original drive started spitting out unrecoverable drive errors around 2% of the way into the copy. Hopefully that was in the data area of the drive, not in the middle of important program code. Hmm–I wonder if it’s in the swap area? That’d really kill the box, but it’d leave it working fine after a reboot, until it got busy enough to swap. Yeah, that’s probably what happened.

Update (Apr 20, 2004): It seems to have worked. The TiVo has made it two days without crashing; that hasn’t happened in weeks. It seems slightly faster, and it now holds 146 hours, up from 60 hours.

Posted by Scott Laird Mon, 19 Apr 2004 02:43:01 GMT


Localfeeds: still missing

Localfeeds is still down. That’s not exactly breaking news; it’s been down since February. I was really starting to enjoy Localfeeds–it did a great job of showing me what other people in Seattle were talking about. Sooner or later it’ll pop back to life, so NetNewsWire keeps polling it every hour, hoping for something to turn up.

The thing that amazes me is that no one else has jumped in and implemented this themselves. The basic data is all available; it’s just a matter of database coding. And a lot of bandwidth. Still, there has to be a way to make money at this, and I’m amazed that no one has stepped into the void.

Posted by Scott Laird Thu, 15 Apr 2004 19:46:58 GMT


DVD burners: 16x, dual layer in June

DigiTimes reports that 16x DVD burners should hit the market in June, and at least a few of them will support dual-layer DVD+R disks (that’s 8.5GB, for those following along at home).

This will probably be the final round of DVD burners; there isn’t a whole lot left to do. The disks can’t spin much faster, and unless they go to double-sided burning, we’re hit the end of the road, capacity- and speed-wise. The next big upgrade will have to be one of the competing HDTV DVD standards.

Posted by Scott Laird Thu, 15 Apr 2004 19:15:07 GMT


Borges

I’ve been playing with Borges, a Ruby web application server for the past week or so at work. It’s an interesting beast; it’s continuation-based, which means the flow of control in Borges apps is much closer to traditional programming then it is to normal web applications. I don’t have a good example handy, but it’s kind of mind-twisting, because you can make non-event-driven web applications with it. I’ll probably move some of my Asterisk stuff over to Borges, partly because Borges could use a good example, and partly because the big pile of Asterisk stuff that I’ve been accumulating could use a better web framework.

Posted by Scott Laird Tue, 13 Apr 2004 03:16:26 GMT


.ly is dead?

Around 6 months ago, I registered the ‘.ing.ly’ domain, largely for the possibilities it presents for entertaining subdomains: surpris.ing.ly, stunn.ing.ly, and so forth. Unfortunately, I never really got around to using any of them. I received this today:

Dear .ly domain user,

Re. CcTLD nic.ly

It is with regret that we have to inform you, that due to unilateral action by the Internet Assigned Numbers Authority (http://www.iana.org), the Domain Name Servers that host the zone files for the ccTLD .ly have been disabled.

The ccTLD .ly has made repeated official requests to the above authority to relocate the Name Servers to an independent environment, to ensure the continued operation of the .ly zone. Unfortunately, these requests, so far, have been declined by IANA.

Consequently, your .ly domain name(s), along with all other .ly domain names, will cease to function until corrective action is taken by IANA to rectify the matter.

IANA is the international authority responsible for the management of ccTLD functionality. Thereby, only IANA has the power and authority to rectify this problem and reactivate the .ly name zone, consequently, allowing your domain name(s) to function.

Despite our best efforts to maintain the continued operation of the .ly zone, its failure today is totally outside our control. The effect of this is explained in the disclaimer within our advertised Business Terms which each registrant has signed up to during the time of registering a .ly domain name. See our business terms at http://www.lydomains.com/businessTerms.htm.

To get more information or to make a comment, please write to IANA at root-mgmt@icann.org.

Meanwhile, please accept our apologies for any inconvenience that may be caused. We will endeavour to keep you informed of any future developments.

Yours

.ly administrator lydomains.com

Has anyone seen the real story? Now that Libya isn’t an international pariah anymore, are they trying to take their TLD back?

Update (Apr 19, 2004): Looks like it’s back. ICANN basically claims that they had nothing to do with it, and that the .ly people’s DNS servers had disappeared from the Internet. Reading between the lines, there’s still something going on, but it’s largely a case of incompetence. The weird thing is that UUNet was acting as one of the DNS providers for .ly, and I’m not really sure why they stopped providing services.

Posted by Scott Laird Fri, 09 Apr 2004 13:36:55 GMT


Asterisk, the OS X Address Book, and cheap calls without dialing '1'

I am a happy man. I have, after four years of trying, achieved nerdvana. I am down to one single address book, accessible everywhere. It’s shared between my computer, my cell phone, my palm, my wife’s Mac, her phone, and finally, as of yesterday, our home phone. I can add new contacts anywhere, and they show up everywhere automatically.

It’s actually even more pervasive then that; the same address book entries re-write incoming caller ID and control our home phone’s ringer, so we can tell the difference between friends and telemarketers without even looking at the caller ID display. The best part is that it all just works. Setting it up in the first place took a bit of work, but once it’s running, all I have to do is drag cards around inside of the OS X Address Book, and everything else follows along on its own.

The first part of this whole operation was to get data out of the OS X Address Book and into a form that I could work with on one of my servers at home. Towards that end, I wrote ab2vcard, a simple tool that extracts vCards for every address book entry and stores them in a directory. If you set up Subversion and use the right flags on ab2vcard, then all of your vCards will be checked into Subversion and automatically replicated onto the Subversion server. I run ab2vcard from cron, so every two hours, all of my addresses are automatically sent to my server at home.

Next, I wrote asterisk-vcard-cid so I could use the names in my Address Book for Caller ID instead of the nasty stuff that Verizon sends me. If you copy the ‘vcardcid-cron.sh’ file that comes with it onto your Asterisk server and run it every couple hours, then it’ll do all of the hard work of checking changes out of Subversion and shoving them into Asterisk. The way I have it set up, I have 5 groups in my Address Book:

  • Home CallerID
  • Home Ring 1
  • Home Ring 2
  • Home Ring 3
  • Home Ring 4

Any contacts in the ‘Home CallerID’ group will automatically be added to the caller ID DB in Asterisk. Anyone in one of the ‘Home Ring’ groups will have ‘distinctive ring’ turned on when they call. That was really easy with Asterisk. All I had to do was add a macro like this:

[macro-setalertinfo]
  exten => s,1,DBGet(ALERT_INFO=distinctivering/${CALLERIDNUM})

Then, I make sure that all incoming calls use this macro. Here’s my complete outside line macro:

[macro-outsideline]
  exten => s,1,SetCDRUserField(Outside (${CHANNEL}))
  exten => s,2,LookupCIDName
  exten => s,3,SetMusicOnHold(random)
  exten => s,4,Macro(setalertinfo)
  exten => s,5,LookupBlacklist
  exten => s,6,Dial(${PHONES},13,Ttmr)
  exten => s,7,Answer
  exten => s,8,Goto(outside-ivr,s,1)
  exten => s,106,Wait(3600)
  exten => s,107,Hangup

This handles caller-ID rewriting, blacklisting, distinctive rings, adds extra logging, and sends unanswered calls to voicemail.

One little note on distinctive ring: the way I’m using it, it probably only works right with Cisco SIP phones, although other SIP phones that support distinctive ring will work with a few changes to the vcardcid-cron script.

Finally, I’ve added a mechanism for tying the same set of vCards into the speed dial directory on Cisco SIP phones. I’m using the 7940, but the 7905, 7912, 7920, 7960, and 7970 should all work. Each of these phones has the ability to download XML programming objects over HTTP. There aren’t a lot of great references out there, but this one is fairly complete and seems accurate so far.

The directory tool that I wrote, cisco-phone-directory, runs as a CGI on a web server. If you set up the Cisco phone right, every time you select ‘external directory’ from the directory menu, you’ll be prompted with a search screen. Enter a few letters from the name that you’re looking for, and you should get a nice, short list of names to choose from. At this point, it works with almost no fuss, and almost no user training.

Er, except for one little problem. All of the numbers in my address book look like (206)-555-1212. Once you strip the punctuation, you’re left with 10 digits. The problem is that I need to dial a ‘1’ before I call long distance numbers, and it’s not really obvious which numbers are long distance and which aren’t. I can dial most numbers in the 206 area code for free, and about half of the numbers in 425, but there’s no simple way to tell which numbers are which. Since I’m cheap, I want to send toll-free calls out over a real phone line, because it doesn’t cost me anything, while I send toll calls to NuFone over the Internet, because they cost about half as much per minute.

In order to do that, I need to know which numbers are local, given my phone’s area code and exchange. So, enter yet another tool: asterisk-lca-map. If your home number was (425)-488-1212, then you’d run it from the command line like this:

$ asterisk-lca-map.rb 425 488 1212 'Macro(dialanalog)'

and it’ll produce a dial plan that sends all local calls out ‘Macro(dialanalog)’, like this:

exten => _206200XXXX,1,Macro(dialanalog)
exten => _206202XXXX,1,Macro(dialanalog)
exten => _206203XXXX,1,Macro(dialanalog)
exten => _206204XXXX,1,Macro(dialanalog)
exten => _206205XXXX,1,Macro(dialanalog)
exten => _206208XXXX,1,Macro(dialanalog)
exten => _206210XXXX,1,Macro(dialanalog)
exten => _206213XXXX,1,Macro(dialanalog)
exten => _206214XXXX,1,Macro(dialanalog)
exten => _206215XXXX,1,Macro(dialanalog)

You can then add a couple extra rules at the bottom to handle 800 numbers and toll calls:

exten => _888NXXXXXX,1,Macro(dialanalog1)
exten => _1888NXXXXXX,1,Macro(dialanalog)
; continue on with 877, 866, 855, and 800

exten => _NXXNXXXXXX,1,Macro(dialnufone1)
exten => _1NXXNXXXXXX,1,Macro(dialnufone)

The ‘dialanalog1’ and ‘dialnufone1’ macros prepend a ‘1’ to the number that they’re calling. When all of this is done, dialing ‘2062001111’ goes out the POTS line as-is, while dialing ‘2125551212’ goes out NuFone as ‘12125551212’. Everything Just Works, and users don’t have to know when to dial a 1 and when not to. They never actually need to dial the 1 at all, although if they do, it’ll still work. And that’s what I’m aiming for–the back end is complex, because it has to interact with complex parts of the real world. The front end is dead simple, though, because I can handle all of the hard bits without bothering the user. They can just dial the phone number, and I’ll route it out the cheapest connection automatically.

Posted by Scott Laird Fri, 09 Apr 2004 08:23:06 GMT


Near-time Flow

Hmm. I wonder if this is the information management tool that I’ve been looking for:

At the recent No Fluff symposium in St Louis, I was privileged to see a pre-release demo of Near-Time’s Flow application. Stu Halloway’s been talking about his latest venture for a while now, but to be honest it always sounded too good to be true. Now that I’ve seen it in the flesh, I realize that he wasn’t just being the proud parent—Flow really is something special. (PragDave)

I’ve been interested in tools like this for a while, but I’ve never really been able to figure out how the collaboration end of things is supposed to work. The pricing looks reasonable, it’s actually targeted for OS X, and it does RSS. The only problem is that it isn’t quite shipping yet.

Posted by Scott Laird Tue, 06 Apr 2004 20:53:51 GMT


PostgreSQL query analysis

databasejournal.com has a nice article on PostgreSQL query analysis from one of the guys behind RubyForge. It’s not rocket science, but it demonstrates that it’s really easy to do statistical query analysis with Postgres and a bit of Ruby code. The article concentrates on the statistical side of things (“which queries are we running most often”) rather then the query analysis side (*why is this query so slow?”). The implication is that the biggest performance wins are to be found by removing unneeded and excessive queries, rather then speeding up the ones that you’re already making. I’m not sure that I completely agree with that, but most of the database tuning articles that I’ve seen concentrate on the other side of things, so it’s nice to see some balance.

Posted by Scott Laird Tue, 06 Apr 2004 17:40:15 GMT