Dear Lazzie
|
![]() |
![]() |
![]() |
2011-10-25That thing Tucker hasn't been able to tell you about all year…A thermostat. “Huh?” I told you you’d say that. But that’s what my new company, Nest, is making, and what I’ve been unable to tell you about until today. It’s a smart thermostat. It learns when you are home and what temperatures you like, and it saves energy and money by managing your heating and cooling more efficiently. Today, we’re introducing it. I’ve got two at my house, if you want to see one in person. Or you can save yourself the trip by visiting our web site: Nest | The Learning Thermostat Hope you’ll give it a look. 2008-05-07Hot Date?Laszlo is previewing a Calendar module for its webtop. My first take: it works in the usual “Laszlo-rific” way you expect. I plugged in a couple of my .Mac calendars, and they “just worked”! Our Webtop family has grown to include a personal Calendar, a perfect complement to Laszlo Mail and Contacts. As we said earlier, Calendar is the most requested application and, while we’ve taken a lot of time to get this right, we have decided to release it a little early, as a Preview, because we want to know what you think. 2007-05-16Pizza, Beer and OpenLaszlo [Part Deux]Please join Laszlo Systems in San Francisco, CA for an evening of pizza, beer and OpenLaszlo development on Thursday, May 31st from 7:00-9:00 pm. In addition to meeting and mingling with other OpenLaszlo advocates, you will also be able to share your own OpenLaszlo success stories and learn the latest Laszlo community news and product advancements. WE’RE LOOKING FOR PRESENTERS! COST TO SIGN UP 2006-10-06Free as in beer, Open as in sourcePlease join Laszlo Systems in Chicago, IL for an evening of pizza, beer and OpenLaszlo AJAX development on Thursday, October 19th. 2006-06-27It's Fresh!So it must be Legal. We’ve released the first snapshot of our multi-target runtime (code named Legal’s, because the initial outline of the project came over a lunch meeting there). Read all about it here: Introducing Legals.
15:52 | Link
2006-06-09You had me at "Hello".We had the BOS "Pizza, Beer, and AJAX" meet up last night at Optaros [Thanks, for hosting, guys!]. The format was a little different than the SFO event. (Aside from the local pizza and beer.) Lots more informal chats. David gave a great presentation, showing some of the amazing things that have been already done with OpenLaszlo, such as LaszloMail, Gliffy, and Pandora. He gave a glimpse of Laszlo in 10 Minutes, which of course starts out with the usual "Hello World!" example. He finished up with a demo of LZPIX, showing it running identically on the Flash runtime and on the AJAX runtime. An audience member raised his hand with a question: I just wanted to say, "You had me at 'Hello'". Thank you Henry for the pictures, and Amy for transcribing the quote of the night. 2006-06-06Typekey, XHTML and FirefoxSeveral people have complained that they could not make comments on my blog. I eventually tracked this down to Firefox’s strict XHTML interpretation disabling the (somewhat sloppy) Javascript that tries to dynamically generate the comment form. Cleaning up that Javascript was all that it took, although it took me more than an hour to find the bits that needed cleaning. Continue reading "Typekey, XHTML and Firefox"2006-05-03Circles and ArrowsHenry asked me the other day if I could draw a picture of how my Classy Javascript works. Here’s what I came up with: Continue reading "Circles and Arrows"2006-03-20Pizza, Beer, and AJAX 16 March 2006We had a meetup at Cell Space in San Francisco on 16 March (see the pictures on www.flickr.com, right). Lots of free (as in beer) beer and pizza. And lots of participation. Max gave a demo of our new DHTML delivery (Look Ma, No Flash). Antun showed rapid development in LZX, and six developers showed how they are using OpenLaszlo in their products: Pandora, Gliffy, Homebase, SimFaux, FireTrust, and Mazarin. The highlight of the night for me was, after Max showed the LZPIX demo — same source running identically in both Flash and DHTML, a member of the audience commented: “Thank you Max, for saving the world.” We hope so! 2006-02-18Classy JavascriptThe Treaty of Orlando notwithstanding, inheritance has become more popular than delegation as a mechanism for doing object-oriented programming. OpenLaszlo’s LZX language is an attempt to blend the best of both class-based and prototype-based object-oriented programming to provide a powerful interface description language. It has classes, as traditional inheritance-based languages do, but it adds an interesting feature from delegation-based languages: the ability to extend the behavior of a single instance of a class. While it does not permit using an instance as a prototype for another instance, it does make it very easy to turn an extended instance into a class so more instances can be created, or the class further extended. But, OpenLaszlo is built on Javascript. Which doesn’t (in the currently accepted standard) have classes. It is a prototype-based language. So, Adam and I spent some time thinking about how to really do class-style inheritance right in Javascript. As he pointed out in his blog entry, the methods that are out there leave a lot to be desired. We know that class- and prototype-based inheritance are equivalent, so it shouldn’t be that hard. Here’s what we came up with: Continue reading "Classy Javascript"2005-09-28Abject expressionHenry and I were looking at the debugger and wondering why:
In the first case, a function named ‘foo’ is created, but it is not the value of the global It turns out the debugger evaluator will first try to evaluate what you type as an expression, and if that fails, it will try to evaluate it as a statement. The second form is clearly not an expression (think of what you type as having parens around it — the semi-colon forces the second form to be a statement list, with an empty second statement). It turns out that this is correct ECMA semantics. It is not whether you name a function or not that determines when a global definition will be made; two things must be true: 1) the function must be named, and 2) the function declaration must occur in a statement context. If the function declaration occurs in an expression context, all you have done is to create a named function object as the value of that expression, you have not defined that name as the function… Subtle. There is a bug in the current debugger, though, because:
In the case of But in the mean time, if you ever wonder why when you define a function in the debugger it does not take, take a clue from what the evaluator prints out: if it prints out a function object, all you did was create a function, not define a function. Add the semi-colon after your definition and you will define the function (and not see a value printed). 2005-08-27Fourth and BitzWell, after beating on ASSetPropFlags for sometime, I finally came to the conclusion that the flag table that everyone has been referencing is wrong BLITZ Labs » Blog Archive » ASSetPropFlags - The correct flag table Well, there must be something else missing from all the tables on the web: the real meaning of that fourth argument. Is it really just a
It’s pretty clear to me that the fourth argument is also a bitmask, and it is the mask of the bits to clear (before you set the bits in the third argument). That is why so many people are confused. If you pass
2005-08-04AJAX and NetflixWell, here’s one disadvantage to using AJAX over LZX. Your source is ‘open’ whether you like it or not. And your comments can be embarrassing:
http://www.netflix.com/layout/jscript/miniqueue.js Nonetheless, I am pleased that I can just drag and drop items in my queue to reorder them now. 2005-06-20Don't assume undefined is undefinedSarah has a bug where she knows that:
is
it is If you try this in the debugger:
you will get a warning from the compiler, but now when you type:
you will find that it is indeed 42! What’s the right way to test for undefined? It depends. Do you really need to know if a variable is undefined? If so, the typeof test is one valid way. The other valid way would be:
is also true, so if you used If all you need to know is that foo is not undefined,
or:
or:
because all of undefined, The moral of the story is: Don’t assume 2005-06-02What is the type of a prototype?I’m trying to beef up the Laszlo debugger to help myself with the SOLO data reimplementation. I have gotten confused a couple of times because the debugger isn’t careful enough. The goal of the « type # uid ( length ) | name » The double-angle-quotes are just there to be distinguish this representation from primitive types (In Lisp, there is a reserved reader macro type is meant to be the most specific class where uid is a unique id assigned by the debugger to distinguish objects whose representation is otherwise the same (e.g., 2 empty objects) length will be displayed if the object has a property name is meant to be some informative information about the object. Users can define a Here’s my plan:
My question is: What is the type of a prototype? For a class 2005-05-15Now Appearing NightlyNightly builds of the Laszlo development branch are now available. Get yours while it’s hot. 2005-05-07About 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 It should have been simple. I should have been able to just put in the In the end, it was a great improvement. I eliminated a lot of excess baggage. I was able to use the new 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 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
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 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… 2005-05-05The Laszlo or the TigerI 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 I had my
and moved 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. 2005-04-29Now We Are ThreeOpenLaszlo 3.0 is out. Drawing API. Dynamic Libraries. Unicode. Serverless. Serverless? Yup. You can write a standalone app that talks directly to data sources. Hm. Guess that would mean that app in the left column there. Gotta try it. More on that in a minute… 2005-04-182004-11-18Laszlo gets an IDEIDE for Laszlo is a technology preview of an Eclipse-based development environment for creating, editing, debugging, and testing applications based on the LZX declarative mark-up language. alphaWorks : Integrated Development Environment for Laszlo So, it seems that this little company named IBM has picked up on Laszlo going open source. They’ve developed a plug-in for their Eclipse open source IDE to support developing Laszlo apps. Should make things interesting… Particularly cute is the demo, written in LZX using Eclipse. The demo demos demoing the demo ;) 2004-10-05Laszlopen!Laszlo is now Open Source. The Laszlo Platform, which is the LZX language and the Laszlo Presentation Server, are now open source. You can download and install the Laszlo Platform for free, and you can develop and deploy Laszlo applications for free. How do we make money doing that? The same way lots of companies are now: by providing service, support, and commercial development on top of that platform. The ptunes widget to the left, that shows what I am listening to in iTunes is an example of a simple Laszlo application. For examples of commercial applications using Laszlo, visit Laszlo Systems, Inc. For more information on Laszlo’s open source platform visit Open Laszlo. 2004-02-232004-02-05Wild CodieLaszlo has been nominated in two categories for a Codie. The 19th Codie Awards Honoring Excellence2004-01-26New England clam fryer adopts laszlo blogbox seriesGuess we'll need to have a Laszlo luncheon soon at Charlie's Too! 2004-01-22Try one, get one freeThe latest Laszlo Release, LPS 2.0p DE, is freely downloadable and serves up to two simultaneous client connections. 2003-11-14My Back PagesStumbling around in the blogosphere I came across an article about Dylan, the programming language. Brought back fond memories. I still think it’s the coolest O-O language, but I have to program in the language that will pay the bills… I have one quibble with the author: Dylan did not invent multi-methods. They have been around since Flavors and LOOPS.
My personal favorite feature that Dylan did invent is sealing, or perhaps more appropriately, opening. Dylan’s Quoting from Dylan Programming:
2003-10-24Fink PantherPanther is out with X11, but they forgot to X-enable the emacs. Follow the instructions at Tales of the Racoon Fink to get yourself a working emacs. 2003-09-30The ubiquitous blogging widgetFollowing Sarah and Mark’s lead, I had to make my own version of the ‘ubiquitous blog widget’. I’d been looking for a way to display what I'm playing in iTunes on my blog, and I stumbled across Kung-Tunes, a cute little AppleScript that queries iTunes and formats your recently played list as XML (or OPML, if you take the time to teach it the right template), and then uploads it to your web server. It was simple enough to hook the blogging widget on to the OPML file, but I wasn't satisfied with the ‘skinning’ of the widget. It clashed with the look of my blog. I spent a few hours fiddling with Photoshop to create some new art, then adjusted the layout to handle my slightly different requirements. I tried to make the interface cleaner, and in the process lost some of the Laszlo promotional material. So I stole my prototype cyberlogo from my Site Toc demo and implemented some crude tool tips. I hope people don't get too upset at the Apple-centricity of my implementation. Clicking on the song links will tell iTunes to search its Music Store. Sorry Windows users.1
1. The only reason I say "Sorry Windows users" is because the title/artist/album links are 2003-09-24Come out and play!Christophe Coenraets has created a really neat Laszlo application for learning about Laszlo, the LZXplorer. The explorer shows three panels that display simultaneously example code, comments on the code, and the results of running the code. It is is self-paced tutorial that lets you explore the basics of Laszlo programming, but you can also use it to prototype Laszlo code of your own. If you are intrigued by what you see, you can download the free developer edition of the Laszlo Presentation Server for quick turn-around development. When you have an idea that you want to share, you can upload it to MyLaszlo.com, a free service provided by Laszlo for sharing LZX demos. 2003-09-16Yahoo for LaszloYahoo! has released a new personalization interface for their customers using Laszlo technology. [Press release at Yahoo! Media Relations - Press Release.] Read more about the Laszlo-based personalization tool in Sarah Allen’s web log.
12:50 | Link
2003-08-12Flash HashThe new Flash 7 beta demonstrates a significant performance improvement. Presumably some of that improvement comes from improving an algorithm that must be central to any Javascript virtual machine: looking up Object members. Objects in Javascript can have members with any Javascript string as the member name. Most implementations will use a hash table to implement Objects, where the hash key is the member name and the hash value is the value corresponding to that member.
Arrays in Javascript are really just Objects that happen to have members with names like Implementing Array’s efficiently must be tricky, because programs will typically ask for array members using numeric indices, but Javascript semantics state that they must behave as if the numeric index was converted to a string first and then used to look up the member. Furthermore, you are allowed to add members to an array with non-numeric indices, so you can’t specialize your hash table to only support numeric indices. Clearly, you’d like to avoid the overhead of converting to a string if you can. One way I can think of doing that would be to have a clever hash algorithm that hashes numbers and the string representation of a number to the same value, then you can delay the number-to-string conversion until you have a key to compare to.
I’m thinking that Macromedia may have an optimization something like that in the Flash 7 player, because of the following bug that I have found. If I set any array to have an element at If you have Flash 7 beta installed, you can see for yourself: Flash 7 Bug Here’s the source code for this demonstration: mylist.addItem("Create an empty array: var crud = new Array;"); var crud = new Array; mylist.addItem("Store a value at '-': crud['-'] = 'foo'"); crud['-'] = 'foo'; mylist.addItem("Create an array of one element: var ary = [ 'one' ];"); var ary = [ 'one' ]; mylist.addItem("What is at ary[0] now?"); var j = '0'; mylist.addItem('ary[' + j + '] => [' + typeof(ary[j]) + ' ' + ary[j] + ']'); mylist.addItem("What is at ary['-'] now?"); j = '-'; mylist.addItem('ary[' + j + '] => [' + typeof(ary[j]) + ' ' + ary[j] + ']'); mylist.addItem("What are all the elements of ary?"); for (var i in ary) { mylist.addItem('ary[' + i + '] => [' + typeof(ary[i]) + ' ' + ary[i] + ']'); } 2003-07-29... so many to choose fromWhat if you gave a standard and nobody came? Standards are a good thing, and open standards are even better, but do I really have a standard just because I say so? Some of the most successful standards are de facto standards — standards that have become so because a product has been accepted by the market and become the paragon against which others are judged. Linux could not exist without Unix having first established a de facto standard. On the other hand, proprietary standards can fail to take hold because the market does not accept them. The classic example here is Beta vs. VHS — it is widely accepted that despite Beta being a better quality format, Sony's refusal to open (even license) its standard, let VHS dominate in the marketplace. Postscript and Java are interesting standards to compare. Adobe has retained control of the Postscript standard, but because Postscript has to have an interface to page layout programs that is well-specified, third parties have been able to create Postscript emulators, competing with Adobe's proprietary implementation. Adobe has retained market share by continuing to provide value — Adobe's engine remains the touchstone against which all other emulators are judged. Sun has waffled on whether to relinquish control of Java to ECMA in an attempt to gain greater acceptance while preventing the divergence that plagued Lisp and Unix in the early 70's. Sun has had less success than Adobe in licensing "true" Java, perhaps because the value is less clear. The question is: when developing a new product, at what point do I want to standardize it? 2003-07-24Safar-as-I's concernedSafari bugs that are impeding me: Setting Here is a simple example that works as expected in Camino (Mozilla). Web Ring is an actual application that I am working on that demonstrates the 'only loads once' effect. 2003-07-21Royale FUD1Macromedia's Royale promises to be, someday, everything that Laszlo Systems2 is today. LZX is an object-oriented programming language expressed in XML and Javascript. Application source files are text-based, meaning they can be managed by any IDE and source control system, and projects can easily be developed by teams. The Laszlo foundation classes are a suite of UI objects and behaviors providing a substrate for rich internet apps, including back-end database connectivity. The Laszlo presentation server is a JRE servlet that is deployed on a J2EE application server. The presentation server compiles your LZX source to SWF so your application can be delivered to any platform where the Flash player is present (5.0 player or better). Laszlo lets you build desktop-level power into applications that can run in any web browser. 1. FUD: Fear, Uncertainty, Doubt. A Marketing technique originated by IBM, perfected by Microsoft, and now employed widely to stifle innovation by sowing rumors when you don't have a competitive product. 2. Yes, I work for Laszlo, so I might be a little bit biased. Decide for yourself. Check out the demos, download the free developer version. Give it a try. 2003-07-18Is it a sign?Walking to my train today, stopped to drop my spare change in a coffee cup. The holder is wearing a Macromedia polo shirt. What does it mean? 1998-10-16Garbology"noun, social science: the investigation of the refuse discarded by a society as part of the study of that society. c 1970s: from GARBAGE" |
|