As You Were

Devin Coughlin's blog.
Styles: Serious Spare

August 7, 2006

Back in the City

I almost didn't make it to DIA this morning. I forgot they close I-25 on Sunday mornings and got stuck in detour hell. I made it to the counter mere moments before the 45-minute cutoff, but the printer for the baggage barcodes was broken. But I managed to board the plane, albeit grumpily and since I had been assigned a middle seat (18E, joyous) I put my backpack (contents: 1 17'' PowerBook, 1 copy MacOS X Internals both of approximately equal mass, although I'm sure the book would win in a fair fight) in the overhead compartment. A flight attendant came by and rearranged all the bags in the compartment, spilling the contents of the purse belonging to the woman next to me, and went on her way. About thirty seconds later there is a very loud behind me bang and the whole floor shakes. The drunk guys in the row behind me (it's 8:00am) start swearing. My backpack has fallen to the ground, mercifully missing them ("You get a free trip if a bag hits your head," one of the drunk guys chortles. He puts my backpack back in the bin ("Keerrist, that was heavy"), and I get to spend the rest of the plane ride pondering the fate of my screen and thanking my lucky stars that I backed up my subversion repository the night before. The screen's fine, and no troubles with the hard drive, so far. Fingers crossed.

It was my first time flying into SFO in years (for previous WWDCs, I've driven) and my first time on the new AirTrain and SFO BART extension, which are both pretty fucking cool. I was expecting to have to take CalTrain into the city and schlep through SoMA to my hotel, but BART has a station half a block away. Riding into the city, ducking below and above ground, the train speeds past neighborhoods I only know as stops on the map. The southern suburbs of San Francisco are densely covered with two and three story white buildings. The urban landscape always reminds me of Jerusalem, although surely that should be the other way around. I think of how pitifully provincial and homogenous Denver feels in comparison. San Francisco has three separate commuter train systems (CalTrain, BART, and MUNI Metro) while Denver has only get beginnings of one. At each stop loads of people, all colors, all ages got on and off the train, talking and laughing in a hundred and one languages. Denver, at least Denver proper, is split, roughly equally, between three ethnic groups each of which keeps its distance from the others. I envy Scott, who is moving here later this week. Forget Boston, San Francisco really is the shining city on the hill.

I pick a random direction to walk in as I leave the the Powell Street BART station. I'll need to see a couple more street signs to get my bearings. But for once in my life, I've chose the right direction. Fourth and Market. I'm almost there.

I'm staying at the Mosser, a quaint boutique hotel a bit more than a block from Moscone West, where WWDC is being held. The Mosser is an odd hotel, with many cheap, albeit ridiculously small rooms. I didn't get my act together to reserve a cheap room with a shared bathroom, so I'm paying through the nose for one with a private toilet and shower. But its still cheaper than anything else this close. The bastards charge for internet access, but WWDC is not a good time to be cut off from the net. You can tell there's a mac conference here -- iTunes shows more shared music libraries than I'd ever seen before.

I'd planned to spend the day in tourist mode, maybe walking through Chinatown and across North Beach, maybe take CalTrain down to Stanford and see what's what. Instead I fall asleep on the bed. When I wake up, its too late do anything special. I walk down the street to the Metreon and catch Superman Returns in 3D. I really liked the movie, and had waited for months to watch again in an Imax theater. Verdict: the 3Dness sucks, but it's a damn fine movie, now matter what anyone says.

And now its time to go sleep. We'll see what tomorrow brings.

Posted by coughlin at 12:06 AM

August 5, 2006

Metropol Review

So my sister's restaurant, Metropol in Lexington, KY got reviewed.

My sister, who is the lunch cook during the day and the prep cook and occasional special cook at night, made the burger, the chips, and the hen mentioned in the review.

Posted by coughlin at 10:39 AM

August 4, 2006

WWDC 2006 Predictions

It's the weekend before WWDC, so it must time for brazen predictions. Without futher ado:

  • Resolution Independence

    I think this is pretty much a given. They've been hinting about this for years, and lcd screens are getting so cheap these days that the manufacturers will be looking for a new differentiator. I suspect lots and lots of apps will have to be modified to not look like crap with this, however -- it is so very hard to resist doing slightly janky things to make your apps purty. But for the sake of resolution independence we will have to accept a certain amount of fuzziness on low resolution displays.

  • New View Technologies

    Brent Simmons is on record saying there won't be any major View changes in Leopard. While he's probably right (Resolution Independence alone is going to rock the boat enough), I wouldn't be at all surprised if there were more. The current programmatic drawing paradigm is starting the get really clunky. In the olden days, calls to drawing routines wrote directly into the framebuffer, or into an offscreen buffer which was then copied to the framebuffer. Nowadays, a graphics context usually keeps a log of all the drawing requests and replays it against the framebuffer every 60th of a second, or so. This is why asking for the current color of a given pixel is such a no-no -- to answer the query the OS has to wait until the stored log has been played against the framebuffer. This will instantly halve your framerate.

    But this logging business is a little silly. It provides backwards compatibility, but forces us to send a bunch of drawing commands to the graphics card 60 times a second. Now that graphics cards are advanced enough to run simple programs that process polygon vertexes and pixels, why not specify your view as one of these programs? The view would be written in something like quartz composer and would be parameterized by thing like a bounds rect, content value, elapsed time parameter, etc. Then in your drawing code, rather than actually drawing the gradients and images you need, you would send the appropriate parameter values to the shading language program on the graphics card.

    This is good, because it lets the GPU do the things it is designed for (getting a pixel color from the framebuffer to the GPU is usually a lot faster than getting it from the framebuffer to the CPU) and leaves the CPU to do things that require a more expressive environment (like layout and control tracking). Decoupling the actual drawing from the main program also makes it easier to try to send output to a remote screen, a la NXHost.

    Well, one can hope, right?

  • 64-bit UI Apps

    I expect Leopard to support 64-bit UI apps. In six months probably every Mac shipping will have a 64-bit processor -- for marketing reasons alone it makes sense for Leopard to support 64-bit user applications. Still, there are big disadvantages to going to 64-bit. RAM usage of many applications will nearly double because the amount of RAM needed to store a pointer will double. Storage requirements for the OS could possibly quadruple: there would need to be separate binaries for ppc, ppc64, i386, and x64 (or whatever it is called). Ouch. It is enough of a pain that I wonder if it is worth it to support ppc64 at all. (But if they didn't, then no machine any developer had would be able to run the 64-bit parts of the Leopard Preview when it was released). Since ppc32 code can run unmodified in 64-bit processes, they might use some thunking tricks to get ppc32 code to call ppc64 libraries, but what's the point? They need the ppc32 code for all the G4's running out there. Unfortunately, I think were looking at multi-disc installs again.

  • Hypervisor

    I think, unfortunately, we are entering the era where commercial OS developers will use hypervisors to support their DRM schemes. Hypervisors are also good for providing virtual machines to run multiple operating systems, so maybe this feature will be the sugar used to coat the bitter pill. All of the shipped x86 Macs have hardware support for hypervisors (except perhaps the developer preview machines) and PPC is inherently virtualizable, so it would be possible to do this. If Apple does place a hypervisor underneath OS X, we can be reasonably certain it will be closed source.

  • With Open Source Darwin?

    Call me an optimist, but I think Leopard's version of xnu will be open source. My guess is that during the x86 death march someone decided it wasn't worth it to gussy up the x86 xnu under Tiger for open source release. It is also possible there is proprietary code in the x86 kernel that Apple doesn't have rights to release, but I have a hard time believing that code couldn't, in the long term, be factored out into a closed source KEXT. We'll find out on Monday, I guess.

  • An End to SIMBLs, haxies, mach_inject, etc.

    On x86 Tiger is is getting harder and harder to inspect other processes, even ones you own. Prohibiting code injection makes it harder for trojans and viruses to propagate themselves, makes it easier for Apple to protect their DRM, and makes hacks of serial code verifiers much more difficult. If this doesn't come in Leopard, it will come sometime soon. At the very least, I expect application developers (with possible user override) to designate their apps protected from injection. Of course apps that allow plugins would have to implement some kind of code signing so they would know what plugins to trust -- that's what the Trusted Platform Module is for, right? Expect howls of outrage if this actually happens. I'm not sure the increased security is worth the hassle. But then we haven't had a real MacOS X virus outbreak. Yet.

    A happy medium would be to ask the user the first time something tries to inject code into a particular application. This way unsanity could still exist.

  • Better integration between Xcode and Interface Builder

    Now that we finally have good filesystem event notification, I think its time for Interface Builder to notice when I add actions and outlets to my headers in Xcode. It really pisses me off to have to do this manually. There are good reasons to keep IB and Xcode decoupled, but for small developers, at least, increased integration would be a major timesaver. Hopefully they'll also make it easier to use my custom views and cells in IB. This would make a big difference in ease of prototyping.

Wish List

I'll refrain from enumerating my wishes, since doing so virtually guarantees that they won't come true. Maybe after the keynote I'll put up a bitch list about what we didn't get.

Posted by coughlin at 10:11 PM