Well, I’ve received a number of e-mails and comments about Nudge’s new “touch” behavior; some like it, some want it to go back to the old standard.
I’ll probably release a 1.1.1 version that switches from one to the other by using the Option key. However, what should be the default? I tend towards doing “Nudge & Touch” as the default, myself…
The Nudge Contextual Menu is now universal, with version 1.1. This will work on both PowerPC and Intel Macs under Tiger. It now also changes the nudged item’s access and modification timestamps, like the Unix command “touch”… this may be useful even for local items. Since Tiger, the Finder is much more responsive in updating changed items on local volumes, but still may lag behind for network volumes.
WWDC 2006 had two main topics: the new Mac Pros and Leopard. Regarding the Mac Pros, they seem quite competitive and well-built. I’m very content with my current iMac G5 (which I bought at last year’s WWDC), so I haven’t looked at them closely; desk space is important to me. By the way, it seems that Apple Brazil has just released the local price of the standard configuration, and it comes out to US$5400. Ouch.
Regarding Leopard, there’s a nice write-up at Wikipedia, so I won’t try to enumerate everything here.
All in all, I can say this was one of my best WWDCs yet. As I’ve said before, the timing was excellent. Apple has obviously made the most of the (unusual) June-to-August delay and from the developer standpoint all important stuff was in place. Most of the Leopard APIs seem to be well-defined, reasonably stable, and of course the tools are all in place. Xcode 3.0 and the new developer tools “just work”. In one Q&A session Chris Espinosa, was asked about the stability of the tools – whether developers should rely on them for new products, or should wait for the GM release – answered “we all use them daily for building Leopard, so they have to work well!”
So, this is important news for developers. Before, existing tools were used to build a new system and the next generation of tools came out with (or after) the GM release. Now, Apple has obviously been working on the new stuff iteratively; first versions of the new frameworks were used to build first versions of the new tools, then those were in turn re-used to work on the new frameworks. Certainly this has always happened to some extent, but I believe that this synergy between tools and frameworks has now hit an important inflection point.
Apple has clearly been working towards this for years. Mac OS X ‘s frameworks are now 4-way universal, containing binaries for PowerPC 32, PowerPC 64, Intel 32 and Intel 64 bits. Therefore, applications can now be built for all 4 environments, and all are fully supported by the new developer tools. This is a well-known capability of the Mach-O executable format by the way, not a new thing; NeXT applications were also distributed for several architectures, and the Virtual PC 7 executable has binaries optimized for 5 (!) different PowerPC variants.
Framework synergy is a marvelous thing. Apple has just released a short movie showing off CoreAnimation. The “city towers” effect in the second half can be now rendered in realtime on a MacPro – something that even two years ago would have been impossible. Looking very closely you can see that some of those squares are actually playing movies! But only a developer can fully appreciate the other important aspect: the code to generate this movie has shrunk down to less than 10% of what would have been necessary in Tiger.
Let’s talk somewhat vaguely (NDA mumble mumble) about how synergy might have made this happen in the CoreAnimation case. The MacPro has a faster, 64-bit CPU architecture, as well as faster video cards. 64-bit processes can use extra CPU registers and the new vector operations which seem to, finally, have equivalent power to the PowerPC G5’s AltiVec. The LLVM compiler is now used in the OpenGL stack to add a significant speedup (and this even for low-end machines!). Add in Quartz optimizations. Add in easy Cocoa support for all of these. Add in runtime efficiences introduced by Objective C 2.0. Add in new debugging and optimization made possible by implementing DTrace. Add in the ease of programming all this with less and more reliable code. Add in some extra stuff I can’t talk about… it adds up! And comparable gains are visible all through the new system.
At the risk of repeating myself, all this ho-hum talk about Leopard just being Spaces, Time Machine and some UI tweaks to iChat and Mail is so wrong. Granted that Steve Jobs had to show some non-developer news at the keynote, given the wildly unrealistic expectations. But, it really was a Developer Preview. It was released at the right time and to the right people in order to make sure that, whenever the Leopard GM comes out (my guess would be in January at MacWorld Expo), some hundred cool new applications will be available on the same day. And they’ll necessarily be Leopard-only; expect Leopard to be adopted by a significant portion of the user base in a very short timeframe.
Now to my own projects. I’d really love to have the upcoming XRay II to be Leopard-only, but that would delay release too much, and it doesn’t really need 64-bit capabilities. However, I’ll really need some fixes introduced in the last Tiger updates, so 10.4.7 will be the minimum supported version, which should be no hardship, as I can’t imagine anyone voluntarily staying with older Tiger versions. However, some of the stuff I’ve seen at WWDC has completely changed my plans regarding certain features and capabilities, so I’ll opt for implementing things in a way that might be a little constrained under Tiger but will really be much better under Leopard.
RBSplitView has been a marvelous experience for me. It’s been very widely adopted and even the Cocoa team has promised to take a look at it (no promises, of course). And it was very gratifying to be instantly recognized by many famous developers – of course my XRay II/RBSplitView t-shirt was intended to make this very easy! I’ve received lots of positive feedback and I’m working hard on implementing my own fixes and all suggestions. Hopefully I’ll have version 1.1.4 out in a very short time. This should be universal and fully compatible with Xcode 2.4. A 64-bit version compatible with the new Interface Builder will, unfortunately, have to wait until a more widely available Leopard beta comes out – I’m waiting for word from Apple about when it’ll be kosher, as I’ll necessarily have to include some new Leopard headers and APIs.
I have updated Nudge to be universal, and it seems to still be useful on Tiger for mounted network volumes. Expect the update to be available in a few days – I’m still doing some last-minute checking. Zingg! is, unfortunately, much harder to update at the moment. I haven’t touched it since 1.4.1 came out over 2 years ago, and the source code has been pushed out to some CDR backups – and the two I’ve found are, sadly, unreadable. I still have some hope of finding a copy someday (there’s a ton of stuff stashed away from my move), but don’t count on it. Recoding it from the ground up will have to wait for Leopard, where it’ll be much easier to do – there were some awful undocumented things I had to do at the time. Sorry about that. The USInternational keyboard layout will soon be repackaged in a way that (hopefully) will work around the “custom keyboard layout is randomly deselected” bug in Tiger. I’ll need to wait for a Leopard beta to come out to check if it’ll be upwardly compatible, though. I’m trying (again) to go through Apple channels to have it included with the standard system, perhaps this time it’ll work out?
You may have noticed some dozen trackback spam entries here, on various topics, over the last week. Had a merry time deleting them all, as doing consecutive deletes uncovered a bug in my post-deleting patches… I’m still undecided on whether I should spend time on fixing the bug or on perfecting the workaround I found. In any event, if you’re the unmentionable who’s doing this, your links won’t work, as they were all being tagged with rel=”nofollow” anyway. Which I implemented as soon as it came out. So you might as well give up.
On a similar note, attacks from Santy and its descendant worms are decreasing daily, since Google now seems to be actively blocking its searches. So that’s one less thing to worry about, I hope.
Work on RBSplitView is proceeding well; besides implementing several suggestions from users, I hope to finally have animated collapse/expand in place. So far the method of collapsing a subview has had to be changed completely; formerly I was moving a collapsed subview off screen, keeping it at its original size; now I’m keeping it in place, collapsed to a zero dimension, and jiggling other stuff around to keep it from squishing its own subviews out of shape. Once that is done, animating various intermediate stages should be easy. I think.
Hm, there’s more meta stuff. My Technorati tags now finally seem to be working; I overlooked that they have to be implemented in the RSS feed also, and have to look “just so”. A very interesting experiment. They’re also producing RSS feeds for tag updates, which should make tags very useful once adoption spreads.
Speaking of RSS feeds, my subscription list (on the left) has been updated once again. My stats show that only a third of you are reading this weblog over RSS; I wonder why, since other bloggers report much higher ratios, some as high as 90%. I’ve been asked why I don’t have a Atom feed; now that the final spec seems to be well on its way, I’ll do it as soon as I find some spare time.
Well, this is progress.
It costs $39.99 and all utilities are pre-registered, a pretty good value. Should you consider buying it, I remind you that the latter two programs are freeware and that donations are accepted…
Yesterday I received an e-mail from someone asking a question about Nudge. I replied on the same day, as I always try to do. My e-mail bounced with the following helpful message:
Hi. This is the qmail-send program at vega.planetarium.com.br.
I’m afraid I wasn’t able to deliver your message to the following addresses.
This is a permanent error; I’ve given up. Sorry it didn’t work out.
Connected to 220.127.116.11 but sender was rejected.
Remote host said: 550 5.7.1 mail from spam friendly countries with admins who overwhelmingly ignore or bounce complaints not welcome here
In the past, I’ve seen various concise wordings of the “550 5.7.1” message; usually something to the effect that my address was on some blacklist or another. A polite request to the provider’s postmaster address usually worked.
But from this one I gather that they’re now unconditionally rejecting all e-mails from Brazil. Isn’t that rather excessive…? Should I sue about restraint of trade, or whatever?
So if you’re a user of one of my products, and I don’t answer your e-mail, you may want to switch providers – or post here on the support boards. Sorry about that.
A few hours after posting the lamentation below I found out how avoid the text cursor. Both selecting and editing have to be disabled. Turning editing on (as I do, briefly, when inserting new stuff) turns selecting on again.
Turning all that off messed up some other functionality but I’m happy to report it was all easy to fix, and I now seem to be where I should have been a month ago.
So I hope to have something publishable Real Soon Now™…