As You Were

Devin Coughlin's blog.
Styles: Serious Spare

May 28, 2004

Enterprise Season Finale

So just when you think, hey, the season finale wasn't that bad — it was almost good, actually — and at least they are finally getting rid of Archer.

And then ...

Evil Alien Nazi

Evil Alien Nazis! Yeah!

Way to invigorate the franchise, guys.

God bless Trek.

Perhaps Godwin's law should apply to sci-fi too.

Posted by coughlin at 10:36 AM | TrackBack (0)

May 8, 2004

Alt-TAB in Longhorn

From ExtremeTech, a look at Windows Longhorn, the long awaited (and still far off) Windows reworking which will provide massive improvements in many core areas.

One of the more exciting developments is Avalon, the new graphics system which will pipe everything through the graphics card and allow all sorts of eye candy and innovation. (Obligatory Mac snarkiness: we've had this since August of 2002 — Windows won't ship with this until 2006 or 2007).

The most eye-catching part of the article (for me, at least) is what Alt-TAB will do in Longhorn.

Avalon Enhanced Switcher

While I think this an improvement over Windows' current switcher (having 10 similarly named documents open makes the taskbar basically useless), it doesn't seem to be all that different.

When I first saw the screenshot I assumed it was more than just (really nice) eyecandy; I thought that it offered a way to drill down through stacks of windows with the mouse (perhaps similar to Sun's mockups for their new Java Desktop or some of the speculation about Expose before it was released).

I don't think this effect be very useful for me on my Mac because I usually have at least 20 windows open at at time.

I have a feeling, however, that windows users tend to have fewer open windows at a time because under windows document windows are more heavy-weight and because windows (sometimes) uses MDI. It would be interesting (although hard) to try and quantify this, though.

Anyway, I think this could be a good use of eye-candy; it would add a visible spatial dimension to z-ordering which might help with the "morass of windows" that plugs us.

It is interesting to compare this approach with that of Expose, which attempts to solve same problem, but doesn't use depth to spatialize the windows.

Posted by coughlin at 4:22 PM | TrackBack (0)

May 3, 2004

WWDC 2004 Wish List

There are some things I'd like to see at the WWDC:

  • An officially supported kernel API on top of VFS.

    Apple has been saying "don't do that" to pretty much any filesystem hackery for a long time now. They even recommend copying the entire HFS source code and modifying it to add new features to HFS. This is pretty ridiculous. I realize that there are a bunch of outstanding issues regarding stackable filesystems (in general and because of Apple's special brand of juju) but man cannot live on leaf filesystems alone.

  • An API for getting in and out of the kernel (that doesn't suck).

    Getting data in and out of the kernel is kind of complicated on MacOS X. There are bunch of different API's that can be used in different situations, some IOKit, some at a mach-level, some at the bsd level. I'd like to see something like IOMemoryDescriptor/IOMemoryMap available in libkern that would handle all the mach naked port weirdness for me.

    The control situation is a lot worse. Right now it seems the best way to get control from userland to a kernel extension is a sysctl, which is a little ridiculous. Something like mig should be set up to facilitate arbitrary entries into kernel extensions. Again, this is possible now, but Apple doesn't officially support it and there a bunch of gotchas because of mach messaging optimizations to speed up kernel boundary crossings.

    I don't really have too much of a problem with not having a good way to to go from kernel code into user code — it seems to me that the best way to do this is have the user code call into the kernel and wait for something interesting to happen.

  • Virtualization Services

    I've argued before that virtualization is something that Apple is good at and that they might consider running linux in a virtual machine. What they really should do is provide a Virtualization Services framework. This framework would allow one process (or thread) to act as virtual machine monitor for a process and intercept syscalls, exceptions, etc. Mach exceptions (as currently implemented) provide everything needed here except system call notification. It sounds like they removed the system call notification because it was slowing down the "ultra fast" exceptions needed to support Classic and Carbon. There is also a bunch of vmm stuff in the kernel (it used to say copyright Connectix, but doesn't anymore). I can't make heads or tails of it though. It must just be a special shim between the exception vectors and Connectix's (now Microsoft's) kernel extensions.

    As more and more consoles (and embedded devices) move to PowerPC it seems that Apple could have an opportunity to get game developers to use Apple machines because they have native access to the chip. Perhaps Microsoft will use PowerMacs to develop for XBox2 (maybe they already do?).

  • Per-User File Forks

    This is a weird one. It seems like a good idea to store per-document metadata (e.g. window location preferences) in a special fork in a file so that this data is inextricably linked to the file. The problem is that on a multi-user system different users may have different preferences, so we need a different fork for each user.

    This is possible (more or less) on HFS+ because it allows each file to have an arbitrary number of named forks.

    The problem with this is that permissions are determined on a per-file basis. I don't really see a good way around this — either have the file permissions determine access (possibly a security risk) or change the file system and API to have per-fork permissions (not likely).

Posted by coughlin at 7:42 PM | TrackBack (1)

WWDC History

So I finally bought my ticket to the Apple WWDC. I'll be paying that one off for a while, but I'm really looking forward to it.

I've been reading up on previous WWDC's via the excellent Stepwise.

They have writeups of conferences from 1997, 1998, 1999, 2000, and 2001.

It is interesting to look at the turmoil in the conferences before OS X was really finalized (or should I say finally realized?), especially from the NeXTie point of view.

I wasn't paying much attention to what was going on in the 1997 to 1999 period (I was still doing most of my toolbox development in Pascal at the time), and I got most of my news about The Once and Future Mac from MacWorld covers. I do remember messing around a bit with a copy of Be that Yi-Kai surreptitiously installed on a hidden partition on a library computer. While I was a bit disappointed when Apple didn't buy the company, I didn't really have an understanding of what the two companies had to offer.

One thing I didn't really pick up on was the series of broken promises Apple made to the NeXTies (the YellowBox — OpenSTEP on Windows, WebObjects in Objective-C, Portable Distributed Objects). The level of animosity and disappointment in the StepWise coverage surprised me — I hadn't realized that with the NeXT acquisition Apple gave with one hand and took away with the other.

Of course, Apple was (then) trying to screw the MacOS people too: they orginally wanted BlueBox (what became Classic) to run in its own window with little integration between it and the new system. They also originally didn't offer the Classic-like Carbon API but had to after they faced a full-scale revolt of anyone with a codebase (read Adobe). I also hadn't known that gcc wasn't the compiler they used originally.

I kind of wish I'd been paying more attention back then — the times were damn interesting. Every developer conference brought some new revelation (some crushing, some offering a glimmer of hope) and the churn rate was incredible. In comparison, the core OS announcements these days are just down-right boring.

But that's the way it should be, right?

Posted by coughlin at 7:33 PM | TrackBack (0)

Selling Star Maps to the Sun

The other day at the Trident I ran into a woman with whom I went to high school. She was getting coffee with another woman who I thought was her girlfriend. Our interaction went something like this:

Me: (I notice her. I look just a bit too long — she sees me and knows I have seen her. I wait for a beat. Damn. I guess I better do something.)

Me: (waves)

Her: (aside to her friend) Hold on a minute. I have to go say hi to this guy. It'll just be a minute.

Me: (sputtering in ineptitude) So you have say hi, huh. Sounds like a lot of fun.

Her: Hi, so, like, what are you up to?

Me: Not much, how about you?

Her: Just hanging around after graduating, eh? Me too. Actually, well, I'm graduating in (pauses for a beat) two weeks.

Me: Oh, congratulations!

(uncomfortable pause)

Her: Oh, so I'm moving to Montana!

Me: Hmm. What's in Montana?

Her: Yeah, my boyfriend lives there. He's a cowboy.

Me: Oh. (I glance at her [former?] girlfriend. She doesn't look happy. Boyfriend? Boyfriend? I thought you had a girlfriend?)

(more uncomfortable silence)

Her: Well, it was good to see you.

Me: Yeah, you too. And hey, congratulations on graduating. (Still thinking: I thought you had a girlfriend.)

(She looks at my iPod to see what I am listening to and then walks off.)

I wonder if I'll ever see her again.

Posted by coughlin at 7:03 PM | TrackBack (0)