Solipsism Gradient

Rainer Brockerhoff’s blog

Browsing Posts published by Rainer Brockerhoff

In a motel in Ashland, Oregon, where we’ve been visiting friends and having an excellent time.

The trip started out on a quite negative note – our first flight (CFG-GRU) was over two hours late, making us miss our connection to Dallas. We usually never book connections so close, in order to forestall this sort of thing, but our travel agent, who’s aware of this, was on vacation and we changed (temporarily) to another agency. Turns out all flights in the chain were a few hours late except for that most important one, which we missed by30 minutes. So the airline had to put us up in a hotel and, early the next day we went to San Francisco on the red-eye flight starting at New York.

To cap this, when we went to get our rental car, we were informed our reservation had been canceled by the travel agency – strangely enough, not by ours, but by yet another one we never use. After some negotiations with the manager we were informed they were all out of compacts, but we could get a larger car at a slight price increase. OK, reasonable enough…

…but when we got to the parking garage the attendant pointed at an empty lot and said all those cars had already been rented out! So back to the rental office… where after some more waiting we were issued a Buick Lacrosse GNX (GLX? VGX? VGA? something like that). With leather seats and other knicknacks, and most usefully, a GPS locator, which proved invaluable in our sidetrips.

We drove straight up Interstate 5 to Ashland and stayed at a motel near the intersection with Route 66. Ashland is a marvelous little town – lots of greenery, nice shops and very friendly people. We leave today for Corvallis, which lies northwards, but I’ll give some more details tomorrow.

All’s packed and ready for our trip to San Francisco (with a shorter visit to Oregon). We’ll be home after WWDC. I’ll be online most of the time, I hope. More as it happens!

I’ve finally solved a vexing problem that has been affecting version checks for my software.

Basically, checking for updates inside of XRay and Zingg! asks my webserver for a .plist file which contains the latest versions of everything, along with a brief message. On the server, however, this is actually a PHP script which also stores the user’s system version – which is appended to the URL – into a small database.

Since I changed over to DreamHost, my server has been set to gzip everything it sends if the receiver is capable of decoding gzipped files. However, for some time – not sure when that changed – this has messed up my version checking, and users would get a “website was unreachable” error. I did get some reports about this every couple of months, but always had attributed it to a network glitch somewhere… until I tried it myself and got consistent errors.

I read the .plist file directly using +[NSDictionary dictionaryWithContentsOfURL:]. Some combination of Cocoa, php and server parameters now causes the result to be gzipped, and NSDictionary doesn’t understand that format. Anyway, once I figured it out, I had to find a way to turn gzipping off for this particular file only, as I can’t change all the old software versions that are out there.

So, for now, adding this statement at the front of the php part of the file solved it:

header('Content-Encoding: UTF-8');

Strangely enough, rfc2616 says:

The Internet Assigned Numbers Authority (IANA) acts as a registry for content-coding value tokens. Initially, the registry contains the following tokens:

gzip…

compress…

deflate…

identity The default (identity) encoding; the use of no transformation whatsoever. This content-coding is used only in the Accept- Encoding header, and SHOULD NOT be used in the Content-Encoding header.

…and that’s it. No “UTF-8” is mentioned, so why is it working now? I tried “identity” (before seeing the SHOULD NOT comment) and it had no effect at all. I suppose I should try to debug this on my local server adn see where the problem lies, but time is short…

I don’t plan to use this method in XRay II, so it’s not urgent. I’ll probably use Andy Matuschak‘s Sparkle, of which I’ve had good references.

Re: Progress!

No comments

Posted by gracion:
AppleScript – good! Yes, I’ve used SuiteModeler for a couple of projects and it’s invaluable.

How about a “Save changes as AppleScript” command? After setting a creator, permissions, etc in one file, this would create an AppleScript that is ready to use on a batch. You’d have to track the changes of course (maybe as part of your undo module), but this might be very useful.

For example, Stone Software’s terrific Create page layout software has this kind of command – You can actualy save a document as an AppleScript. I think that’s more useful (and easier to implement) than recordability.

The other thing that’s important is to have a good object model – it takes some study to grok this area of script support, but think of the extra endorphin kick from learning all that icon_smile.gif

Yes, AppleScript can be very frustrating to write in. It’s really not one language, it’s N languages, where N = the number of AppleScriptable apps you use. I pretty much have to find sample code to get terms and syntax (especially coersions) right.

Re: Progress!

No comments

Leonardo Burci wrote:

you might also want to take a look at:

http://homepage.mac.com/donbriggs/

Thanks Leonardo, the #macsb folks also directed me to that page, and I’ll be checking it out.

Re: Progress!

No comments

Posted by Leonardo Burci:
Rainer,

you might also want to take a look at:

http://homepage.mac.com/donbriggs/

Re: Progress!

No comments

Now that XRay II’s file browser is working reasonably – some edge cases excepted – it’s time to refactor the GUI, and to worry about how this will affect the internal architecture.

I had an excellent discussion yesterday on #macsb about the possibility of adding AppleScript support. My interest about this was renewed by Daniel Jalkut’s discussion of adding minimal scriptability to a Cocoa application. Seems that the AppKit already has such support built-in, and you get it for free by turning on one option in the app’s .plist file. Daniel gave me some very good suggestions on #macsb, and I’m seriously investigating the possibilities at this time…

My previous experiences with AppleScript were not very good. The syntax itself is confusingly English-like: it sorta kinda looks like English – and verbs and whatever are chosen to make it even more so – but there’s no flexibility at all. The few times I had to write (or change) a portion of AppleScript took me hours with the manual opened in one window and the editor in another.

When I wrote the Aurélio Eletrônico – a Portuguese dictionary app – waay back in the Mac OS 8 days, at one point someone convinced me to build in AppleScript support. At the time, this was done by CodeWarrior’s PowerPlant classes and I seem to remember that most of it actually worked. However, I never got around to documenting what exactly had been implemented, and to the best of my knowledge, no user ever needed it for anything.

Adding scripting to XRay II would have advantages and disadvantages. My original plan was to pitch it as an exploratory sort of utility… a way to look closer into the innards of files and bundles, and to find out their structure. And, eventually, to edit some small part here and there. However, it seems that there’s serious demand to do batch processing; people want to add filetypes to all .mov files inside a certain folder, etc. Or, once a certain tweak to a file has been done, this tweak must be repeated periodically – from inside an Xcode build phase, for instance.

Allowing such functionality would of course expand XRay II’s uses enormously, but it also would make the responsibility much greater. It’s easy to completely bork up the system by running a buggy script, much more so if the scripted app can run with privileges. The internal structure would also be changed. I’d have to be more canonical in implementing the Model-View-Controller pattern and be careful to separate the user interface from actions on data; something I’ve been known to sacrifice, sometimes, for efficiency and code compactness.

At any rate, this offers an opportunity to learn something new, and to make XRay II even more powerful. Stay tuned for more news about this.

The jig is up

No comments

OK, time to confess all. (cue ominous background music…)

You see, I have this congenital high activity monoamine oxidase A syndrome. In other words, I’m a neophile (also called “neophiliac”). One of the subtypes, at least… apparently I get an endorphine kick when I learn something new. Since you’re reading this, you may be one too! icon_smile.gif Very useful for a programmer, I must say…

Found at Media Life via Gizmodo.

Photos licensed by Creative Commons license. Unless otherwise noted, content © 2002-2024 by Rainer Brockerhoff. Iravan child theme by Rainer Brockerhoff, based on Arjuna-X, a WordPress Theme by SRS Solutions. jQuery UI based on Aristo.