My personal Mac OS X gripe

Ever since Mac OS X was released, there have been plenty of complaints about the things that Mac OS 9 had, and are “missing” from the new operating system. These Finder labels to pop-up tabbed folders to WindowShade. I can sympathise with these complaints, but for the most part, I’ve rather liked Mac OS X, and haven’t missed most of the missing bits from Mac OS 9. Except one, which I’ve never heard anyone else even mention: InputSprocket.

Let me clarify. I don’t mean the part of the Game Sprockets API that let a developer easily handle input. That was nice, but I don’t care too much how a developer writes a game, so long as they do. No, what I mean is the user interface portion of InputSprocket. Every program that used it (and the more recent Mac OS 8 and 9 games almost all did) had the same, standard, dialog for customizing input controls.
Continue reading

I think I broke the Internet

Our DSL wasn’t working this morning, its first extended outage since the line was installed in August. After trying, without success, to diagnose and repair it myself, I decided to call SBC. Not having the number handy, I called 611, which has connected me to the repair department of every other phone service I’ve used. Apparently not SBC Missouri. “We’re sorry, your call did not go through. Will you please hang up and try your call again.” I just hope 911 works better.

I dug out the paperwork that came with my DSL line, and called SBC Internet Services. After a “quick” trip through the voice menu, I arrived at tech support. I spoke with a friendly-sounded fellow who spent an hour having me triple-check my computer configuration, and had me restart both my computer and cable modem no less than two times, with (of course) no positive result. Finally, he put me on hold and did a line test. Of course, it failed, and he opened a trouble ticket.

A few hours later, the DSL started working again. A few hours after that, I received a call from SBC informing me that there had been an outage in my area, and it was now fixed.

Now, I can certainly understand the process that decides that, barring any contraindications, any given DSL fault probably lies with the customer rather than the line. But is tech support time really so cheap that not only is it worth less to have him spend an hour sitting and waiting for my computer to reboot than to check my line, but that it’s cheaper to have him spend an hour with me than to check to see if there are any outages in my area? That seems like the sort of thing that should have come up in big red flashing lights when he entered my phone number. How little are they paying these folks?

Library fun

I’ve had a book on hold with the St. Louis Public Library for about five months now, and today I finally got around to asking a librarian where it went. It turns out that it’s been marked in the computer as “IN TRANSIT” for two years now. She called the two relevant branches and had them do shelf checks, and it turns out to have been shelved at the destination library all this time, gathering dust, but never entered in the computer. This is now fixed, and I should have it tomorrow.

It doesn’t surprise me that books occasionally don’t get scanned into the computer before being shelved. What surprises me is that no one noticed until now. Library transfers normally take just a few days; I would have expected the computer system to notice when a book was supposedly “in transit” for a week or more, and notify a human to figure out where it went. If nothing else, I’d assume a library would want to keep track of which books have been lost so they can buy new copies.

I’m Back!

Our building power got turned off Friday morning (there was advance notice, but we got it after we left), and TiVo never came back on afterwards. So I missed Enterprise, game five of the NHL Western Conference quarter-final, and The Simpsons.

Also, among the pile of mail that arrived while we were gone was a letter from The Fox announcing that Greater Tuna has been cancelled.

Finally, I seem to have hurt my left shoulder carrying my suitcase from the airport. So overall I’m relatively sad.

Use small words: Subversion

I’ve been following the Subversion project on and off for about five years now. It looks like it’s shaping up to be a great replacement for CVS, and I’m looking forward to giving it a try next time I have a new project to start.

I do have one question, though. It seems basic enough that I’m sure I must be missing something obvious. If there’s a Subversion expert out there, maybe they could explain it to me, slowly and clearly, using small words so I’ll be sure to understand? Thanks!
Continue reading

A Note for our Customers

Posted in our local St. Louis Bread Company:

A Note for our Customers:

The cucumber sauce featured in our Garden Veggie Ciabatta sandwich contains gelatin and may not be suitable for some vegetarian diets.

We suggest our pesto mayonnaise as a delicious substitution.

I’m not sure whether to be bothered that a “garden veggie” sandwich isn’t actually vegetarian, or to give the Bread Co. credit for prominently warning customers about a potential problem with their product.

MTIndexEntries: Making Movable Type indices a little more reasonable

One thing about the default Movable Type setup that doesn’t work very well is the way that the index (“main”) page picks entries to display. Specifically, it shows all the entries created in the last 7 days. This is fine if you write at least a few times a week, but what if you lapse for a while? Look what’s happened to Eric! You can set MT to always show the last N entries (e.g., I had mine set to 5 for a while), but that’s no good if you are very verbose occasionally, and want entries to stick around for a few days before they drop off the main page.

I couldn’t figure out a way to solve this with the standard MovableType built-in tags, so I wrote my own. MTIndexEntries is a plugin that lets you show both the last week’s entries and the last 5 entries (only showing each entry once, of course, and in the proper order):

<MTIndexEntries days="7" lastn="5">
<!-- your entry tags -->
</MTIndexEntries>

I don’t feel like writing any documentation today, so all I’ve got is the plugin and the example above. But please feel free to give it a try.

zChat 0.1

Imitation is the sincerest form of flattery, right? I sure hope so, because I’ve been very flattering to iChat. First, some background: back in the spring of 2001, Greg Parker and I wrote a Mac client for the Zephyr Notification Service (a Unix-based messaging system developed at MIT and used at, among other places, Stanford) for our senior project. For a couple of months now, I’ve been toying with the idea of porting it to Mac OS X and getting it into shape for public release. The original was written using PowerPlant, but I never could get recent versions of CodeWarrior to compile the thing, so I scrapped the user interface and rewrote it using Cocoa. Now instead of looking like a halfway-decent AOL Instant Messenger clone, it looks like a bad iChat clone. I’d appreciate user interface feedback, by the way.

The SourceForge site docs tell you to “release early, release often,” so I guess I should do that. I’ve haven’t written any documentation yet, but if you’re at a site that uses Zephyr with Kerberos authentication, and have Mac OS X 10.2 or later, go ahead and give zChat 0.1 a try. If you’re at Stanford and want to say hi, I’m akosut.

Iterators in Cocoa

One thing I’ve always liked about C++ is that when using the Standard Template Library, you can write loops over containers (or really between any range of iterators) very cleanly and simply, e.g.:

<br /> for (vector<foo>::iterator i = myVector.begin(); i != myVector.end(); ++i) {<br /> // do something with *i<br /> }<br /> </foo>

On the other hand, whenever I use Cocoa NSEnumerator objects, it drives me batty:
Continue reading

I want a sticker!

I voted in person for the first time this last month (a few weeks ago in the municipal primary, and today in the general). All my previous elections have been by absentee ballot. In California, I always saw everyone around me on election day with those little white “I voted” stickers with the American flag on them. I was always envious. So I figured now that I’m living here in St. Louis, and the polling place is just down the block, I can finally get one of those stickers. But so far, at neither election have they had stickers for me.

This is only a municipal election, and the City of St. Louis isn’t exactly rolling in cash; the roads need fixing more than I need my sticker. For now, I guess I’ll just have to wait for 2004 and hope that the state buys me a sticker.

Gag me with a JavaScript

There’s a municipal election today and I came across Elizabeth Crowley’s Web site. She’s running for school board. I’m not sure what bothers me most: That she decided to disable the right mouse button (context menu) on her Web site and have an annoying message pop up instead, that JavaScript allows you to disable the right mouse button, or that Mozilla implements that aspect of JavaScript.

Regardless, I think I’ll be voting for someone else.

Snap, crackle, and… pinch?

I’m a fairly anal-retentive cook, and it’s always bothered me when recipes call for a “pinch” or a “dash.” It bugs the heck out of me. How much is a “dash”, anyway? I need precision!

So when I saw this on the shelves of the local Linens ‘n Things, I knew they would be getting four extra dollars from me I hadn’t been planning on spending. I really need to stop shopping while I’m unemployed.

Mawidge

I’m attending my first wedding tomorrow. I’ve been on this planet nearly a quarter of a century, and the only weddings I’ve ever seen have been on TV. Well, TV, movies, musicals, that sort of thing. The point stands, nonetheless. But one of Laura‘s friends from high school is getting married tomorrow, and we’re going.

Any advice?

Something’s not right here

For a project I’ve been working on, I had need for a Cocoa widget something like an NSTableView, but that contained variable-height NSViews instead of fixed-height NSCells. Apple doesn’t provide one as part of AppKit, but (I thought to myself) surely someone out there must have already written such a beast, and made it available for me to use.

Well, I was half right.
Continue reading