Saturday
Nov122005

implemented code is nine-tenths of the law

Sarah Allen, the director of the Laszlo applications group, told our team about a planning exercise: give everyone on the team a hundred dollars, assign relative costs to features and open bugs, and let the team members "buy" features. At the end of the exercise, the features which have been paid for go on the "to do now" list, and the others wait for later. Our graphic designer, Peter Andrea, asked, "What about stealing? I want to steal features." "That's what weekends are for," Sarah responded.

Similarly, Sarah told me the first eight hours of work she does a day are what Laszlo needs done; after that, she does the work that she wants to do. Quite a lot of the time, what I want to do is the same as what Laszlo needs done; this is just about the definition of "the perfect job for me." When what I want to do isn't quite what Laszlo needs done, I work weekends. As our CTO, David Temkin, said yesterday, "implemented code is nine-tenths of the law."

Friday
Nov112005

speeding up laszlo apps by replacing constraints with $once

Constraints are incredibly tasty for rapid prototyping, but they can lead to performance problems. Each constraint, of the form
<view name="nugget" width="${thingy.width}" ... / >
becomes, at runtime, something like this:
<method event="onwidth" reference="thingy" args="w" >
nugget.setWidth(w);
</method>

Every time thingy's width is changed, nugget's width is changed; that's the point of the constraints. If you don't care about maintaining that relationship, or if you know thingy.width is never going to change, then you're bloating the runtime with event handlers you don't need.

The $once "constraint" avoids the extra event handlers:
<view name="nugget" width="$once{thingy.width}" ... />

My understanding is that this constraint is just evaluated once, when the view's attributes are first set. This will only work for static layouts, of course, and only if instantiation order works right. In this case, thingy must be constructed, and its width attribute must be set, and "thingy" must be in scope, in order for the $once form to work.

Friday
Nov112005

I feel guilty when I make images. I feel like I "should" be coding... When I make images there's a tape playing in my mind: "You're not a real designer. This isn't going to look like a real designer made it. This isn't professional quality. This is going to have to be thrown out and replaced by a real designer. You don't know how to use these tools. You're so slow. You're wasting time when you should be coding. Give it up." ...as if my making images was actually wasting someone else's time.
My time is mine to waste! I'm off to make pictures!

Friday
Nov112005

flash, linux, fonts

OpenLaszlo/Flash is more write-once-run-anywhere, more zero-install, than anything else I've developed in. However, the linux flash player has some problems which affect Laszlo Mail:


  • There's no 64-bit flash player for linux. If you're running a 64-bit machine, and running Firefox as a 64-bit app, you're just hosed. You'll only see a blank page. We need to add a check for that, somehow. But really, if you're running a 64-bit linux desktop, you're probably a pine devotee, or dyed-in-the-wool thunderbird user. Hell, you're probably a thunderbird contributor if you're running deskt 64-bit linux.

  • We embed the true-type for Futura, but we expect client machines to have Verdana. If Verdana isn't present, we request sans, but in certain configurations, the linux flash player displays a serifed font instead. Looks weird and bad; it's a linux flash player bug. Generally, text rendering in flash/linux is not as lovingly massaged as text rendering in windows and mac os x.


  • The linux distributions I've been playing with (Mandrake 10.2, Mandriva 2006) don't ship with flash player; you have to install it yourself.

  • Only Flash 7 is available for linux; no flash player 8, which is sad, because flash player 8 is way faster.

  • Opera? Oh please. Most of our stuff works in Opera on Linux. I developed in it for a while. There are cetain things which don't work in Opera on Linux, but I'm not sure what they are.

Thursday
Nov102005

Laszlo Mail is live!

Laszlo Mail is live. It's a webmail client and server, designed for licensing to ISP's and content providers. It's swooshy and smooth... I love the visual and interaction design. Please check it out and let me know what you think. This is what I've been working on since I came to Laszlo this summer, and the rest of the team has been working on it for more than a year before that. Try registering and logging in; see what it feels like.