Archive for the 'Computing' Category

What I want instead of an iPhone

Something like the current iPhone, but without the “Phone”. I have a phone. I’m happy with my phone, and it’s not tied to one specific GSM carrier.

Features:

  • More storage. More than the current iPod. 120GB would not be too much.
  • Bluetooth support that includes A2DP and the ability to use a Bluetooth phone or LAN access point for network access.
  • A cabled remote with an integrated microphone, making the iNotAPhone capable of acting as a Bluetooth headset for something which is a phone. (This should automatically pause the music, too.)
  • Palm OS emulation.

Things to keep:

  • The screen, and the multitouch interface, and the predictive keyboard.
  • WiFi.
  • The apps: Safari, Mail, and so on.
  • Coverflow.

That would give me something that could replace both my Palm TX and my iPod while adding additional functionality. I’d keep my phone, but still manage to lower my Batman Utility Belt Factor.

Switched to WordPress

I’ve resuscitated the blog, and switched it (finally) to WordPress.

Please let me know if you see any glitches in the transfer.

Also, my apologies to those folks reading through RSS readers who just got hit with a batch of months-old posts.

Paul Thurrott exaggerates while bemoaning exaggeration

Paul Thurrott’s post on Mac OS X Leopard says things like “It’s too bad they [Apple] feel the need to exaggerate so much”.

He also says that he thinks that “virtually none” of the five Mac OS X releases since 2001 have been “major updates”. Presumably “virtually none” means only one, since we’re only considering five options here, and 40% seems a bit high for “virtually none”. Which one? Well, I’d have to guess 10.0, since except for the Public Beta that was the first version that was available and was therefore the biggest difference from Mac OS 9.

He then goes on to say “(Unless you count the cost. At $129 for each version, that’s about $750 on Mac OS X upgrades since 2001. That kind of puts the cost of Windows in perspective.)”

Except for a minor detail: 10.1 (Puma) was a free upgrade, so the cost now drops to a maximum of $645 (including the cost of Leopard, since his number makes no sense without doing so); that also only applies if you count buying 10.0 among “Mac OS X upgrades” rather than an initial acquisition cost. Admittedly, that’s still a chunk of change, though it’s only an issue if you had bought a G3 or older G4 and are still using it. Anything later came with at least 10.0, saving you another $129. How many Windows users are still using 2001-vintage machines?

“More than any other company I cover regularly, Apple plays light and loose with facts.” Hey, Paul, what do you call overestimating the cost of keeping up with Mac OS X by 20% (counting the purchase price of 10.0 as a cost) or more? (Perhaps 20% is “virtually none” for price errors in Paul’s mind?)

Using appscript with Mac OS X 10.4 (Tiger)

The Python appscript module brings AppleEvent support into Python, making it possible to communicate with many Mac applications from Python code.

Unfortunately, like many things, it has broken under Tiger.

Fortunately, the fix is easy.

What broke?

The Python install on 10.4 looks for packages in /Library/Python/2.3/site-packages/, where the 10.3 install looks in /Library/Python/2.3/. Appscript Installer 1.01 installs its libraries in /Library/Python/2.3/.

How do you fix it?

Go to /Library/Python/2.3/. Move the following into the site-packages directory:

  • HTMLTemplate.py
  • HTMLTemplate.pyc
  • LaunchServices
  • aem
  • appscript
  • osaterminology
  • osax

That’s it! Now your Python code can once again use appscript.

LISA ‘04: Friday, part 2

The game show went well and was fun; I also won, which will help my chances of going to LISA ‘05, since the prizes included a free technical sessions registration.

The flight back was uneventful.

LISA ‘04: Friday, part 1

Last day; sigh. This has been the first LISA I’ve been able to attend since 2000; it’s been loads of fun, not long enough, et cetera.

First session: papers, even though there were two interesting talks scheduled. (Yes, my rule is to go to talks instead of papers; one of the two was cancelled, and the other is apparently also being given at BBLISA in Boston in a couple months.) This was a set of security papers, and all three were interesting.

The first one was on how they set up a security game (challenging teams to secure their machines and crack into other machines) in a controlled environment, complete with a scoring system modeled on “capture the flag”. The second discussed how PlanetLab manages security given that they don’t physically control their machines, let users have root, and so on. Not my set of challenges, but they have a well-thought-out set of techniques that seem pretty solid to me. The last was on better ways to do automated tasks on multiple machines while maintaining least privilege, rather than having root-enabled ssh keys that can do anything. I can think of lots of uses for that.!

Second session: Simson Garfinkel’s talk on “Used Disk Drives”. Lots of fun examples of stuff that people didn’t actually delete, even in the cases where they thought they had erased the disk (hint: fdisk and format aren’t it).

Lunch, then the “Lessons Learned from Howard Dean’s Digital Campaign” talk. Tom Limoncelli’s talks are always fun, and the topic was interesting; what more could I have asked for? Well, not being scheduled against the Works In Progress session would have been nice, but that’s hardly Tom’s (or Keri’s) fault.

The last session of the day (and conference) is the LISA Game Show. I’ll report on that later; I’m in it, and by the time it’s over the wireless will no longer be available.

LISA ‘04: Thursday

I have a general rule for USENIX conferences: if debating between an invited talk and a paper session, go to the talk; the papers are in the proceedings. (Apologies to paper authors, but it’s true.)

So, today…”all talk, less rock”. Or something like that anyway.

The first talk in the SPAM track was an overview of the problem, the solutions, the problems with the solutions, and some solutions to problems with the solutions. (The last being “use Bayesian techniques and other heuristics to kick out the obvious junk and pass the obviously clean stuff, then use Turing tests/hashcash/whatever to sort out the stuff in between”.) Not bad, but nothing groundbreaking.

Trey Harris’s talk on “A New Approach to Scripting” wasn’t actually new, as he explained, but it was still a great presentation of a great technique for handling error checking and correcting in scripts. (Basically, it’s sort of a scripting version of cfengine; you assert something, then if the assertion fails you run the command to set up whatever you were going to set up; after that, you test again, and if the test fails that time, you abort.) He’s got a perl module to do the annoying parts, complete with idempotency (since the test happens first), rollback options, and so forth. We’ve done some very basic versions of this in some install scripts at work, but only the test/execute part; no re-test and no rollback. I hope to see this stuff ported to Python, as someone suggested on the conference IRC channel.

Dan Klein’s talk on “Flying Linux” was far too good to try to summarize without doing it injustice (though there were some typos on his slides; the rocket is “Ariane” with one “n”!).

Bill Van Etten then closed out the day with his plenary session on bioinformatics for sysadmins. Nothing really new to me (since I’ve been doing this stuff for five and a half years now, and Bill worked at WICGR when I started) but still fun and interesting to see how he presented it.

Dinner and entertainment were provided by the conference reception; food and $10,000 in fake money to gamble for raffle tickets (which cost, er, $10,000 each). I managed to lose at blackjack, win it all back and more at craps, then lose the extra; one raffle ticket, which didn’t win. Oh well.

Stopped in to the Google BOF/recruiting session…hmm…sysadmin jobs in Dublin you say?

LISA ‘04: Tuesday and Wednesday

The flight down from Boston Tuesday night was uneventful, and by the time I made it to baggage claim my flight’s luggage was already rolling off. Mine came out fairly quickly, so I decided that I had enough energy to deal with MARTA instead of wimping out and taking a cab. Through the mall, to the hotel, checked in, and got a nice high room in a hotel designed around a huge atrium with glass elevators. Sigh. I think the architect hates acrophobes.

Wednesday: got up, got breakfast, got registration stuff. The keynote was reasonably interesting, though I’m a little more jaded about mere 20TB storage systems than I used to be…that’s about the minimum amount we’ll put a PO together for these days. CNN’s throughput needs are a bit more demanding than ours, though.

On to the technical sessions themselves. First, I went to the refereed papers presentations. The Bogofilter paper was interesting for the general issues of Bayesian filtering with a shared word list, something I’m already doing with amavisd-new; this gives me additional confidence in going forward with implementation of something similar at work once I can get a feedback system set up.

After the late morning session, a swing through the vendor display (much busier than at the Advanced Technical Conference), including a chance to say hello to various semi-random folks (hello, Randal!) and then off to Chick-Fil-A for lunch.

For the afternoon, invited talks. First, the talk by Brad and Lisa from LiveJournal on the architecture and scaling of the system. I’d seen the slides previously, but the presentation added a lot to them, and it was also amusing to participate in LJ-posting about people LJ-posting about people LJ-posting about the LJ presentation…during the presentation. (Not counting the non-LJ blog posts by LJ users posted here and here, and, well, this entry too.)

For the last session of the day, the IT on documentation. Very enjoyable, with lots of quotes from the Alice books as analogies for specific topics. Would have been more enjoyable if my phone hadn’t decided that vibrate mode was boring, followed by crashing while ringing (yes, crashing…I had to physically remove the battery to reboot it). I think it needs a Ctrl-Alt-Del option.

Dinner was taken care of by the simple expedient of the vendor display pizza feed, which also gave me a chance to talk to someone who I never see while in Cambridge; after all, he works two blocks away, and I only get over to that part of campus three or four times a week.

After dinner, various BOFs; the LegatoEMC BOF, where they were having a drawing for an iPod (I didn’t win) and discussion of the disk-based backup options (which we’re already using and reasonably happy with). From there to the DDR BOF (not to play, just to watch and be amused) and thence to the GPG key signing BOF.

After that, an aborted visit to the NetApp event (in the bar…the smoking bar…I didn’t even get 2 feet past the door), some hanging about in the lobby area where the free conference wireless was, and off to bed.

Thursday report later.

Tax free day at the Apple Store

It’s busy but they seem to have come up with a nice efficient system for handling the orders. Staff with clipboards are roaming the line, filling out order sheets, and running them to the back room to be put together while the customer waits in line for the register.

They’ve brought in staff from all over the country to help out, too.

Busy as all get-out but not insanity-inducing.

Some useful Mac software tips

Emacs editing keys work in a lot of places in Cocoa apps. Try them in Safari TEXTAREA boxes, or iChat’s text entry area! This is a great feature for me, since those keys are practically hard-wired in my brain. Note that Ctrl-K and Ctrl-Y will in fact Do The Right Thing, and don’t affect the clipboard (but the “kill ring” isn’t implemented, and the “kill buffer” only works within one app).

Somewhere along the way, iTunes got the ability to use Playlist is/is not X as a Smart Playlist criterion, and I didn’t know this until recently. This lets you get Boolean nesting, if you can put up with the intermediate playlists. Now I have a playlist of all the 4-star songs not played in 70 days and all the 5-star songs not played in 14 days, shuffled together. Yay!

Lukas also pointed out that you can use this feature to get a playlist of all the unchecked songs. First, make a playlist of all the songs added after 1901, “limit to checked songs”; then make another playlist, “Playlist is not” the first playlist.