ICeCoffEE 1.3.3 released

Just released “ICeCoffEE” 1.3.3. As the 0.0.1 version number increment may indicate, there aren't any earth-shattering changes, but some useful refinements, bug fixes and minor new features. I haven't pushed the release out to MacUpdate because I need to sleep, so I'll do it in the morning.

I'm really feeling pressure to get the current stage of my research finished soon, not to mention it's actually getting rather interesting. So while I'd really like to get back to Pester, the most I'm likely to do in the near future is finish writing the man page for the release of launch 1.0.

Here's a rundown of the most interesting changes in ICeCoffEE 1.3.3:

Sven-S. Porst contributed some features I had been meaning to add myself for some time. The Services contextual submenu now follows the proper guidelines for contextual menus, in existence since Mac OS 8: inapplicable items are removed, not disabled. (The standard Cocoa NSTextView contextual menu flaunts this guideline, of course…) Submenus with a single enabled item are collapsed into their supermenus, and the Services item disappears completely if no services are available for the given context. He also added a German localization, and pointed out some issues with wording in the process. There's no better way to pinpoint where your writing is unclear at a microscopic level than for a translator to pore over its colloquialisms and idiosyncrasies.

Mac OS X 10.2's Terminal offers a lot of welcome improvements, but its drag-and-drop behavior is downright infuriating. Dragging selected text by only two pixels will duplicate it inside the window, causing chaos if I'm on IRC or using vi or some similar single-letter-sensitive app. It's akin to the accidental middle-button mouse click on X11, but even easier to accidentally trigger. ICeCoffEE 1.3.3 requires the option key be held down to duplicate text within a Terminal window, and fixes the option key's incorrect toggling behavior when dragging between Terminal windows (in violation of Apple's Aqua HIG). The only casualty is that self-drag target highlighting no longer works as well as it did, but I noted other problems with incorrect target highlighting, and most Cocoa apps don't even highlight the drag target in the first place (again, despite the HIG's admonitions to the contrary).

Some life-related comments for a change:

The weather here has been wonderful recently—almost eerily so. Tonight I and a few friends watched My Neighbor Totoro; the rain outside started and stopped exactly matching the first rainfall in the movie. I've become addicted in the past few weeks to sitting outside on the balcony in the late night or early morning, working on my PowerBook, listening to the sound of wind rustling the leaves of the trees a few feet from my balcony. I'd work outside more often if I had a faster network connection at home than my current modem—that will wait for my future roommate to move here in August.

To say my parents' recent life has been hectic is an understatement. They're finally finishing up renovations on their house in Boston, tending to their place in New Hampshire every weekend among the voracious biting insects, and have been up to their respective ears in work otherwise. My mother got back from visiting her mother in Australia a few days ago, then moves from Boston to Seattle this weekend to start a new job. She's in corporate housing for a month; once she finds a permanent place to live, I'll have to see about setting her up with a cable modem or DSL and possibly videoconferencing. I'm waking up in three hours to set up her PowerBook for a dialup connection in Washington. Then my parents leave to spend the day in New Hampshire, and return by 6 PM for my mother's cross-country flight.

(Update, 5 AM: they're not leaving after all; I can go back to sleep…)

The incredibly slow speed of Apple's 10.2 Terminal app when antialiasing is enabled has annoyed me for months. In my mail window, I've turned off line wrapping and scrollback in an attempt to speed things up - it helps, but not that much. I had assumed it was a CoreGraphics font rendering problem, but I discovered today that it's not.

An article on Apple's x11-users list mentions that you can get vanilla xterm to use FreeType, and thereby CoreGraphics font rendering under Apple X11. xterm -fa Monaco -fs 12 reacts instantly, at least in comparison with Terminal's horrendous 0.2-second response time, and looks identical save the weird X scrollbar.

From Slashdot to the New York Times in 3 days, not bad. This article briefly mentions the tests we've been doing with the MILC QCD code.

I've written a sync script for my iPod. When run, it:

  • exports Palm Desktop addresses to the iPod's Contacts folder*
  • exports Palm Desktop events to the iPod's Calendars folder*
  • copies Palm Desktop memos to the iPod's Notes folder, one folder per category
  • creates an iCalendar file containing the Palm Desktop to dos in the iPod's Calendars folder
  • synchronizes music from designated folders to same-named playlists on the iPod (I use this for copying recorded streams and radio to my iPod).

If anyone's interested, the script is available as a compiled script (source included), or view the source in a HTML rendering.

* Exports don't work properly yet because I can't get UI Scripting to properly call Palm Desktop. I've posted to applescript-users and hopefully can find a workaround.

NCSA's PS2 cluster got mentioned on Slashdot. The Pablo group, of which I'm a member, has been working on PS2 stuff for the past few months. (I'm not involved; I just hear about it at meetings.) Getting random scientific applications to run on it is not easy, between single-precision floating-point, data layout issues, constrained memory, and horrendously slow disk and network I/O. Not that we expect to get real work done on the cluster: it's primarily a proof of concept for HPC work on later generations of gaming hardware.

Pavan Tumati's pioneering work on porting computational chemistry to the PS2 is mentioned as well. As is, he's done a lot in his free time, much more than we have with an actual funded project. “qbullet.sidesmiley”

Received my second replacement Sidekick from T-Mobile today, which
arrived in the open position, complete with incredibly scratched-up
screen—far worse than the screen on the original device I've
been using for the past seven months. I wrote about the broken href="http://web.sabi.net/log/2003/05/16.html">first replacement
last week. It's going back in the morning.

Not only does Apple's own Safari Web browser not auto-fill the password in Apple's own bug reporter pages, but the bug reporter timed out after far less than the stated 60-minute timeout. At least Safari didn't crash thereafter, sending my bug into oblivion.

Definitely a sign that it's time to go home and sleep.

I wanted to write a script to eject my iPod from the keyboard, since the multi-step process with iTunes was a bit convoluted and my desktop is often obscured. But first, I downloaded Apple's iPod Scripts which happily included such a script. I ran the script, and it crashed:

 #0   0x9022e158 in FSRefLookupMount(FSRefPrivate const*)
 #1   0x00000000 in 0x0
 #2   0x902309b4 in PBGetCatalogInfoBulkSync
 #3   0x90243518 in FSGetCatalogInfoBulk
 #4   0x03092b18 in AEVTearslfdr(AEDesc const*, AEDesc*, unsigned long)
 #5   0x91b56570 in aeDispatchAppleEvent(AEDesc const*, AEDesc*, unsigned long, unsigned char*)
 #6   0x91b5a8e4 in sendToSelf(AEDesc const*, AEDesc*, long, long)
 #7   0x91b58124 in AESendMessage

AppleScripts are meant to do many wonderful things, notably not including crashing the host application. I gave up at the time, but when I found the same problem in the “Create Note from Clipboard” script from which I'm borrowing to write my Palm Desktop note/memo sync script, I tracked the problem down to this handler:


on locate_iPods()
   
set the volumes_directory to/Volumes/as POSIX file as alias
   
set the volume_names to list folder volumes_directory without invisibles
   
set mounted_iPods to {}
   
repeat with i from 1 to the count of volume_names
      
try
         
set this_name to item i of volume_names
         
set this_disk to (”/Volumes/” &this_name & “/“) as POSIX file as alias
         
set these_items to list folder this_disk
         
ifiPod_Controlis in these_items then
            
set the end of the mounted_iPods to this_disk
         
end if
      
end try
   
end repeat
   
return mounted_iPods
end locate_iPods

The above seemed like an awful lot of work to list the mounted disks. Somehow I've got an 82-byte file named “._Nikon_photo” (the volume name of my camera's CompactFlash card) in my /Volumes directory, and since the AppleScript definition of “without invisibles” doesn't include UNIX “dotfiles” such as this one, it showed up in the mounted volume list. The “list folder” scripting addition, annoyingly, crashed when it was asked to list something that wasn't a folder, and that was that.

The weird thing is that, listed right about the “list folder” script addition is “list disks”, which allows you to simplify the script to the following:

on locate_iPods()
   
set mounted_iPods to {}
   
repeat with this_disk in list disks
      
set these_items to list folder (this_disk as alias)
      
ifiPod_Controlis in these_items then
         
set the end of the mounted_iPods to (this_disk as alias)
      
end if
   
end repeat
   
return mounted_iPods
end locate_iPods

This version of the handler has the advantages of being easier to read, and not crashing. All the iPod scripts have this handler in them, so just copy and paste the above into them.

Of course, I can't find anywhere to send feedback for the scripts. Hence this weblog entry, in the hope that someone, somewhere will read it.

My iPod arrived today, three days earlier than expected.



So much work to do, though, in organizing my music, which was split among three computers and my 3.5″ FireWire hard drive. Having 30 GB in a space smaller volume-wise than I used for 128 MB with my Nomad II will take some getting used to.

These days it doesn't take much to get me laughing.

00:05  ilister> so I guess still nobody wants to provide appropriate hardware
                to help test my antenna?
00:07  bradyt> i might want to, but am actually unable
00:11  Rugle> <Rugle's Dad>  I cna't understand why people eat rice. It can't
              be good for you. We live next to a continuent where everyone
              easts rice. They then hop in boats and come to Oz. Many die along
              the way.
00:11 @sabi> hahaha.
00:12 @Iain> huh?
00:14 @Iain> so what's wrong with rice?
00:14  Rugle> just random conversation :)
00:18 @Iain> oh
00:19  nandi> oook
00:20 @sabi> Oook!
00:22  Rugle> nonono
00:22  Rugle> you want ook++
00:22  Rugle> ook's -nothing- without objects..
00:23 @sabi> Hehe.
00:23 @sabi> I didn't know there was an OO Ook.
00:24 @sabi> Oh, there isn't. :P
00:24 @Iain> ook!
00:24  ilister> bah, you don't need the syntactic sugar in ook++ just to do OO
00:24 @sabi> rofl.
00:24 * nandi bangs her head on the desk
00:25  nandi> Iain: and you think *i'm* a geek
00:25  ilister> we're all geeks
00:25  ilister> that's why we're here
Next Page »