Goodbye, arnold

19:00 = sabi [nicholas@arnold.sabi.net] quit (Quit: goodbye, arnold old friend.)
[...]
overlord% console arnold
Enter njriley@console's password:
[Enter `^Ec?' for help]

arnold console login: nicholas
Password:
Last login: Sat May 17 22:24:06 from [...]
{nicholas#console@arnold:1025} ~%sudo /usr/sbin/shutdown -i6 -g0 -y      7:21PM

Shutdown started.    Sun May 18 19:21:17 CDT 2008

Changing to init state 6 - please wait
Broadcast Message from root (console) on arnold Sun May 18 19:21:18...
THE SYSTEM arnold IS BEING SHUT DOWN NOW ! ! !
Log off now or risk your files being damaged

{nicholas#console@arnold:1026} ~%                                        7:21PM
INIT: New run level: 6
The system is coming down.  Please wait.
System services are now being stopped.
Killing: 103
Stopping baculafd.
Stopping openvpn.
May 18 19:21:28 arnold openvpn[302]: event_wait : Interrupted system call (code=4)
Waiting for PIDS: 302.
postfix/postfix-script: stopping the Postfix mail system
No screen session found.
May 18 19:21:31 arnold syslogd: going down on signal 15
The system is down.
syncing file systems... done

Today I shut down arnold.sabi.net for good.1 It’s just a computer, but I’m strangely emotional about it.

I first wrote in March 2003 about buying arnold on eBay. A generous friend has been hosting arnold for free at his residence since then—first about a mile away in Champaign, then moving in July 2003 to Virginia where it’s been ever since. It’s served me well with no hardware failures until some ECC errors prodded me into moving the last service (dynamic DNS) off it yesterday.

As I mentioned back in September, I’ve been working on reducing my administrative load. I’m now nearly finished migrating services, but two aging machines—calamity and shrug—remain to be decommissioned.

I’ve mentioned calamity a few times over the years; it predates arnold by a couple of years, having ably served as my parents’ DNS, email, Web, VPN and monitoring server. There’ve been no hardware failures, though I’ve upgraded the hard drives and SCSI card once and switched the backup medium from xfsdump on an external MO drive to the network via Bacula. I moved the email and Web services off a few months ago; when I swap the Mac mini for my old G4 in a few months, I’ll have a slightly newer machine to host its remaining services. (You can see calamity on the right in this photo from May 2006, to the left of hamton, a hand-me-down PC which died before it could be put to any use.)

shrug (which is not a Tiny Toon Adventures character; blame doomsey) is a P3/700 still running FreeBSD 4.11. It hosts my primary email environment, which has had a long and varied history.

In the 90s, I read mail in a bunch of places—some via Eudora and POP, some via Unix mailreaders including pine, mutt and (ex)mh. My accounts included tiac.net, netcom.com, macirc.com, three Brandeis accounts, online service Internet gateways (CompuServe, AOL, eWorld, BIX and Delphi at various times) and some others I’d rather not mention. Over time, I reduced the number of accounts I checked to three, for personal, school and work use. My “forever” personal email address was nriley@shore.net, served by a small ISP in Massachusetts. Mail for school lived on students.uiuc.edu until November 1999, then griffin.canis.uiuc.edu until January 2001.

sabi.net was served starting in mid-1999 by alexandria.invantage.com, an old 486DX2/66 in the corner at my then-employer. (My old reliable USR Courier in that picture was a fallback for our flaky RADSL connection.) At the time I didn’t use sabi.net much for email; my sabi.net mail, what little of it there was, forwarded to my shore.net account. Eventually, Shore.Net got bought and destroyed; I learned the lesson that I should never rely on someone else’s domain name for my email.

Since I was switching labs at the time I didn’t have a server at school to use, but luckily I could borrow Invantage’s new colocated server for a few months. chronos.invantage.com thus became sabi.net’s MX in January 2001. chronos also hosted my first truly consolidated email setup, with procmail and Mutt folder-hooks configured to deliver mail from three accounts into separate inboxes: invantage.com (the mailspool, i.e., !), uiuc.edu (=INBOX) and sabi.net (=+/INBOX). I dumped my Shore.Net account in March and switched sabi.net’s MX to pair.com in August 2001, where it remains. pair is still around, still independent, still conservative and reliable; its CEO still posts in the newsgroups. I plan to keep my account there for the foreseeable future.

With sabi.net’s MX switched, I could finally migrate my email setup from chronos, moving it to theremin.cs.uiuc.edu and finally to shrug.csl.uiuc.edu (later shrug.acm.uiuc.edu) in September 2003. On shrug I added an IMAP server and several generations of spam and virus filtering. I’ll be moving off shrug over the next few weeks to a similar setup where I won’t be the machine’s primary administrator. (shrug was originally like that, too, but its owner graduated and left maintenance to me.)

Planning and executing these migrations is tedious and mind-numbing, so I’m glad they’re coming to a close along with graduate school; I’ll have more time in future to focus on things I really care about. Another good thing about getting rid of machines is that I don’t need to come up with a new naming scheme as I thought I would. My laptops since then have all been named Shirley; my Intel iMac is Mary.

1Actually, runlevel 6 reboots; I’ve still got to wipe the disks.

Moved servers

This weblog is now running on a brand new Joyent Shared Accelerator. It brings all kinds of great goodies such as OpenSolaris, ZFS, greater resource limits and newer versions of PHP and MySQL, but hopefully the average reader won’t notice any difference aside from pages rendering a bit faster. Stumbling blocks were MySQL character set conversion (when is UTF-8 not UTF-8?) and a change in PHP object handling breaking the OpenID plugin (patch).

Still remaining in the great server migration: moving rileys.us, mail.rileys.us and dev.sabi.net from their current locations on arnold.sabi.net, calamity.bos.sabi.net and gilford.textdrive.com, respectively. It’ll be great when I have consolidated and don’t have to play sysadmin quite so much.

If you’re missing frequent posts and are interested in the minutiae of my life, feel free to watch Twitter and Flickr. As I’m wrapping up writing and getting back to research coding again, you’ll find lots of complaints about broken software in the near future, I’m sure. (Currently I’m fighting with JPackage; why oh why must the CS department have standardized on Red Hat?)

Happy New Year

This is the first new year I can remember that I haven’t spent with family or friends; instead, I had a quiet night at home cooking Indian food and flailing at leftover crossword puzzles.

2007 is a year a lot of things will be changing for me, and I hereby resolve to try my hardest to make sure the transition is a smooth one.

Happy new year, everyone; may this year be better than last.

Odds and ends

WWDC was fun, if exhausting; everything went wonderfuly smoothly (ignoring the traffic on 101 driving into SF on Friday night) until my flight home, when we were delayed four hours while United maintenance drove two bolts from SFO to SJC. Joy.

For some reason I didn’t get too much out of the WWDC sessions; perhaps I picked the wrong ones to attend. The small amount of time I spent in the labs made me wish I had hung out there more. I got to meet lots of people, both among my friends and the Mac developer crowd, and have some interesting conversations—although, as usual, even with thousands of people surrounding me from time to time I felt completely isolated.

I haven’t finished organizing photos and videos yet, mainly because I’ve been so busy since I returned, Lightroom really likes a faster machine than my iBook, and my iBook died over the weekend in any case. The photos I took at the large and enjoyable #macdev dinner are here, however.

There’s now a date and Web page with the papers for the OOPSLA 2006 Dynamic Languages Symposium in Portland in October, at which I’ll be presenting the work I did on a hardware transactional memory-enabled PyPy. Half the papers are Python-related, which is rather cool.

Finally, a couple of zsh tips. The great thing about a shell with as many features as zsh is that you never stop learning about new features and ways to use them. The annoying thing is that you seem to forget things just as quickly. Until this morning as I came across a mention in the zsh book (which I highly recommend), I’d used this idiom to get all the directories under the current one:

% print ./**(/)
./bin ./eio ./inputs ./outputs ./results ./src

But this excludes the current directory, which I often want (and usually forget) to include. Instead, you can do the following:

% print ./**/
./ ./bin/ ./eio/ ./inputs/ ./outputs/ ./results/ ./src/

which, in addition to being shorter, has more DWIMitude.

This one is probably a bit better known, but I also discovered yesterday I can get a directory history list by typing ~- followed by the tab key. Reverse the sort order with ~+. Either way, it beats typing popd repeatedly to find the directory you want.

Packing for WWDC

The next ten days are going to be pretty hectic, as I’ll be staying at no less than 6 different places. I’ve been cleaning up, doing laundry and packing all night, and along with my clothing and electronics I’ll be sure to take with me the most important items of all:

Mike McCracken in my phone

More info at Mike McCracken’s blog.

Another day, another WordPress upgrade

Running WordPress 2.0.4 now. The upgrade took longer than expected, but I’ve documented what I need to do for next time, and upgraded a couple of my plugins as well. Hopefully nothing broke.

The ICeCoffEE 1.4.3 release went pretty well—I’ve received two crash reports, and one user claimed it didn’t work for him. One of the crashes is not my fault: Safari crashed during a page load triggered by a Command-click. For the other one, I discovered that I had completely stripped the distributed binaries, which isn’t too useful for debugging:

Thread 0 Crashed:
0   com.apple.CoreFoundation       	0x90853b76 CFBundleCopyLocalizedString + 106
1   net.sabi.ICeCoffEE             	0x002e5358 APEBundleMainLateLoad + 23883
2   net.sabi.ICeCoffEE             	0x002e569b APEBundleMainLateLoad + 24718

I haven’t yet figured out how to map those addresses back to the source code, so I’ll repost 1.4.3 with symbols later this weekend. It’s now less than a week until I leave for WWDC, the pace of my research work continues to quicken and I’ve got a lot left to arrange.

Most incompatible blog ever

So I saw a link to this weblog on Planet Python, and thought it would be interesting to subscribe. But…

  • Even simple display of blog entries requires JavaScript, so they don’t render in NetNewsWire (where I have JavaScript disabled).
  • Even with JavaScript enabled, entries don’t render in released versions of Safari, and links to old posts are broken in Opera. Everything appears to work fine in Mozilla and WebKit trunk.
  • With browsers that actually load the pages, there’s often an annoying lag between when an empty page shell loads, apparently completely, and when the content deigns to appear. If you try to expand a post, the page inexplicably scrolls to the top for a second, before giving you what you asked for.
  • The RSS feed is titles-only, so I can’t read it that way either.
  • There are no visible permalinks on the site itself: every link just calls some JavaScript function or other.

So in order to find the first entry (which, conveniently, is #15) I had grab it from the RSS feed, or guess. The author is aware of the problems, as shown by a comment on that post. His name and email address, of course, appear nowhere apparent on the blog, but can be obtained through whois or his PyWeek entry (the latter seems to be a reasonably normal Web page).

After all that, the content is actually pretty decent, so I’ll remain subscribed; I’ll just curse loudly every time I have to switch browsers to view an entry. I look forward to version 2.0 implemented entirely in Flash.

Going to WWDC; ICeCoffEE Intel

I’m going to be at Apple’s Worldwide Developers Conference next month, and hope to get a chance to meet all of my friends who have moved California-ward, as well as some people I have only known online. The only other WWDC I’ve been to was in 1999. Things have changed just a bit since the days of Mac OS X DP1 and the just-introduced bronze keyboard PowerBook G3s Apple gave away at the time. Not sure who I’ll be staying with yet, but I’ll be in California from August 5 to 13.

If you have an Intel Mac and are interested in testing the Intel version of ICeCoffEE (and aren’t already in the testing group), please email icecoffee at sabi.net. I’ll work on getting the installer ready this week; if nobody reports any problems, it should be ready to release by the weekend.

Upgraded to WordPress 2.0.3

Comment spam really is annoying, though it’s getting a run for its money from random Unicode glyph-abusing Brazilians I don’t know asking me to be their friend on Orkut. But four requests in one day!?

It seems WP-Cache was causing the weird blank-page-until-reload issues with WordPress 1.5, which translated into no-page-at-all issues in WordPress 2. Since TextDrive finally seems to have a handle on the server-crashing and performance issues (this server has been up for over 31 days), the caching plugin isn’t as imperative as it used to be, though I do like to be nice about using shared server resources where I can.

Quick WordPress 2 review: AJAXification is good. I don’t like the new admin color scheme; looks too much like a bad ripoff of Slashdot. From time to time gigantic fonts appear, for no apparent reason; being on a 1024×768 display, this sucks. The new WYSIWYG editor isn’t perfect (it turned a paragraph break into a line break the first time I posted this message), but it’s a lot better than most I’ve seen. The dynamic resizability of this editing window is especially slick—alternately, you could say we should have had this kind of stuff on the Web 10 years ago :-)

Still, I think I’ll be going back to MarsEdit as soon as I can; hopefully it’ll get some attention in the form of WebKit content-editable support soon. I’m already very addicted to NetNewsWire 2.1’s syncing, even with the known problems, it works well 99% of the time. When RSS feeds get messed up on iTunes, I end up with tens of old podcasting episodes, which is a lot of data to needlessly download. It’d be cool if I could tell it “don’t accept any posts with dates earlier than the newest (or even oldest) preexisting item in the feed”.

If you notice any site flakiness, please let me know. I realize some of the old posts from the PyCS and (especially) Radio sites still have formatting issues; fixing this is on my to-do list, just rather far down it.

Oops.

Oops.

Paper submitted, and now on to the 8000 things I’ve put off after it. Unfortunately fixing bugs such as the above (which happens when using ICeCoffEE with recent development WebKit versions) may come behind such things as getting my car serviced, and cleaning the apartment. But I’ll try to get to it “soon”.

Update: ICeCoffEE 1.4.3d1 (final release coming in a few weeks) fixes the ICeCoffEE/WebKit incompatibility.

Next Page »