spacer spacer spacer


Now Appearing Nightly

Nightly builds of the Laszlo development branch are now available. Get yours while it’s hot.

10:16 | Link | Track


About that serverless app...

In Now We Are Three, I pointed out that Laszlo apps could now be ‘serverless’, meaning they can be compiled to a standalone .swf that can be delivered by any web server (no J2EE servlet required) and that they can fetch XML data directly from any http: data source. I pointed out that I should rewrite my little ptunes app (in the left column) to be serverless, and that I would report on how hard it was. Well, here’s the report:

It should have been simple. I should have been able to just put in the <canvas> tag proxied="false" and recompile. It would have been that simple if my app code were not nearly two years old. The <tabslider> component that I used in my app has evolved a lot in that time, so I had to spend a bunch of time ripping out kludges that I had in my code to work around some of the limitations of the old implementation.

In the end, it was a great improvement. I eliminated a lot of excess baggage. I was able to use the new <style> component to give my app a uniform style. I was able to use the new resizable canvas feature to let my app take its size from the <object> tag that embeds it, rather than having a static size. I was able to eliminate a lot of nested views because I just understand LZX better now.

I did have to change the code that calculates the source URL for my ‘Show Source’ button. It has to change the file suffix from .swf to .lzx. I was fooled for a second on why my tooltips faded in and out in such a funky fashion, then I remembered that <text> now defaults to device fonts and I guessed that device fonts don’t respond to opacity changes any more than they respond to rotation. I changed my tooltip font back to an embedded font and all was well.

The one thing that stumped me the longest was figuring out how to get the ‘Now playing’ track to be the tab that is open on loading. I poked around in the documentation and on the web for a while and found a whole bunch of techniques for dealing with the fact that because replication happens lazily, nearly anything you try is going to set the selected ‘too soon’. Setting defaultselected in the tabslider doesn’t work. Setting it in and ondata clause in the tabslider doesn’t work. Setting it in an onclones in the datapath doesn’t work. Aha. You can’t set it until the tab that you want to set to has been inited. I finally hit upon it: in the <tabelement> I put:

oninit="this.setAttribute('selected', this.tip == 'Now playing')"

Phew. The tough part is that sometimes it seemed to work, when I was debugging locally — presumably because the data arrives fast enough — but when I would install the app on my server, it stopped working.

The last step to getting my SOLO app to work was simply to upload it (and the source!) to my server (Just used Interarchy to do that) and then adjust my <object> tag to fetch the app locally (instead of through mylaszlo). Oh, I could shorten the opml address to a relative address. You see the result to the left.

I’m still using Kung-Tunes to upload my XML, but that is obsolete. So the next effort will be to, hm, can I use DynDNS to make my laptop visible and have ptunes query my iTunes directly for what’s playing? Hm…

15:22 | Link | Reply | Track


The Charge of the Light Sabre

Have you ever wondered how these remarkable weapons work? Where does the energy come from, and how are they able to contain that energy in a rod-like column of glowing power?

Howstuffworks “How Lightsabers Work”

07:46 | Link


Watching the Detectives

Google wants to be your proxy.

I assume this is so they can accumulate a more comprehensive dossier on your surfing habits. Not that they get to see anything your ISP doesn’t, but, they are a whole lot smarter than your ISP at making hay out of it.

Now, if their accelerator uses a tunnel to their proxy, I would probably use it anyways, to evade my ISP’s horrendously slow caching proxy.

What I don’t get is why they need to have the luser download anything. They should be able to just configure your browser to talk directly to the proxy and be completely platform neutral.

Wonder how long before Google buys Akamai and gets the middle-man out of the loop? I mean, why should Goog have to spider other companies’ caching edge servers? Why not just go into the caching edge server business and index them directly?

Oh, and if they were really smart, they would know what I was going to look at in the morning before I woke up and push copies of every page I will browse for the day into my browser’s cache so they can be called up instantly. I mean, really: anyone can figure out what I looked at after I fetch the pages. I want them to tell me what I am going to look at before I do.

14:45 | Link | Reply | Track

Tiger burning bright

As for a general review, Tiger seems significantly zippier (once Spotlight stops grinding your disk) than Panther. I agree with most of the Ars review on the UI ‘improvements’, they are not.


  • Archive and install does not preserve custom pix you put on accounts, it graciously gives you some default pic, and then when it realizes that your Address card is now ‘out of date’, it erases your pic in your vcard.

  • iChat still doesn’t unify multiple accounts in a sane way. I have several people’s cells listed as alternate iChat addresses (at least with Verizon #’s you can IM +1<cell #> and it will send as an SMS, which they can reply to; this is really a feature of AIM). The new iChat decided to tell me that these people were now always on line. It does note that they are ‘mobile’ when that is the only active account, but that means I can’t see their real state. I ended up removing these accounts for now.

  • Mail seems to have some disagreement with my home courier imap server where it asks over and over for a message that IMAP refuses to give up. This account is stale, so I will just turn it off. It is not worth trying to figure out.

  • I use Fink emacs, since the Apple one is not X-enabled (why, I do not know, now that Apple supplies an X server, you would think that they would build their emacs X-aware, or upgrade it when you install X). I had to force-rebuild emacs in fink. The Panther version got some bizarre malloc error. Makes sense, since you have an all new gcc in Tiger.

  • Oh, and there is something funky where you cannot access any ‘legacy’ afp: servers. I think this is just a bug that will get fixed eventually… [Later: Apparently not. OS X is just not going to support afp: over AppleTalk any more!] There is a new feature where you can tell the Finder to tunnel afp: over ssh.

  • Haven’t figured out if dashboard is worthwhile. Since it is hidden, I probably will never remember to use it. AFAICT, it just means that there are a bunch of widget runtimes around, which seem to waste memory and cpu even when not displayed?

  • I think there may be some confusion about all the ways to sync. What happens if I tell my calendar to sync to .mac on two computers and both computers think they are also publishing those calendars to .mac so my family can share them? Who’s on first?

  • So far spotlight has a) made me aware of some emails that I should have deleted, b) made me realize that I need to spend a lot more time putting keywords on my photos, if iPhoto would stop crashing every time it complains that my firewall is blocking sharing, and c) made me wonder if it is at all useful to have my lps playpens indexed — or any code directories for that matter: it seems unlikely I really want to see all those .h files.

  • TextEdit can open Word files. Cool. I am one step closer to deleting MS Office from my drive. Hey. Pages can import and export Word files. Even cooler.

  • Preview understands PDF 1.5, annotations, forms. Hm. Do I need Acrobat any more? Does Apple pay Adobe a license fee?

Haven’t noticed the other 193 ‘new features’ yet…

12:23 | Link | Reply | Track

The Laszlo or the Tiger

I installed Tiger over the weekend. So far, so good. LZX development and browsing seems to work just fine.

I did an “archive and install” because I like a clean start. This meant that my /usr/local was moved to Previous Systems. I had to move back /usr/local/bin/p4, and that is also where I kept my flasm, javacc, jython, and tomcat. I just moved them back and they work fine.

I had my _xmlplus stored in the python Framework, so that was not there in the new install. I grabbed it out of Previous Systems and decided to use a new strategy in the future (so I would not waste so much time trying to figure out why the python version check failed — it was because _xmplus was missing). I added the following to my .bashrc:

# we use _xmlplus, which I put here to stay out of the /System dir
export PYTHONPATH=/usr/local/lib/python2.3/site-packages

and moved _xmlplus there.

Tiger comes with Flash 7.0r24 installed by default. I thought I recalled some reason I didn’t want that (I had 7.0r14 on Panther), but it seems to work just fine.

I installed Java 1.5 and tried building, but there are a bunch of errors that will need to be looked into.

12:05 | Link | Reply | Track