Planet Dojo
Dojo 1.4.0 beta2
Hey Dojo'ers!
I am pleased to announce I just cut the official 1.4.0 beta2 release, available for early testing. Please give it a spin, test against existing applications and report any issues back to us at bugs.dojotoolkit.org.
Barring any unforeseen regressions we should have the final release ready on schedule for a "near-Thanksgiving" release (in the past, though not intentionally, we've always released our finals on-or-around American national holidays, and 1.4 is looking to be the same).
This is BETA, so there may be a couple hiccups. Please report them immediately so that we can push a solid release candidate in a timely fashion. There are loads of new goodies (outlined in the release notes) in this release, so jump in and play with some tests! 1.4 has many subtle changes, making it the fastest, most performant Dojo to date. Hope you enjoy it!
As always, we've gone to great pains to maintain backwards compatibility with previous versions of Dojo. If we missed something, please let us know.
Happy Dojo'ing.
Raindrop, Open Messaging for the Open Web
Raindrop is still very much an experiment and not useful for any day-to-day work. However, it has potential and we need community help to take if further.
Why I like it:
- It is driven by product design. We want an extensible platform, but a strong, simple product design will be driving much of the development.
- It is not trying to be a message service in itself, but collect messages from existing services.
- It is web-based: the default UI is plain HTML/JavaScript/CSS goodness.
- It is frickin awesome to be able to play with your messages: data mine them, and do interesting display things using simple script languages like JavaScript and Python.
- It is open: open source and motivated by the Mozilla Manifesto.
- The Mozilla Messaging team is talented and smart. They are motivated and care about what is best for users.
Dojo's dynamic code loader and Dijit's well-defined methods on widgets have enabled the slick things we are doing with in-place extension editing and updates. JQuery is also included in the page, mostly for extension developers, so you have a choice on what to use, Dojo or JQuery.
While I expect many of the decisions I made about how the front end works might change over time, it has been a joy to make what is there so far.
There is lots to do though. If you want to get involved with the code, check the Hacking page is a good place to get started. There is a screencast of the architecture on the Raindrop home page. There is a Community page too.
WebGL Now Available in WebKit Nightlies
CelText for the Palm Pre – Send texts for free
I’ve just released the first version of CelText, an application for the Palm Pre smartphone. CelText enables users in Ireland to send text messages for free, using the free web texts available from their mobile provider, either O2, Meteor or Vodafone.
This version of CelText is completely free, and can be installed using the PreCentrals Homebrew installation process, described here – http://www.precentral.net/how-to-install-homebrew-apps .
You can get CelText from http://www.precentral.net/homebrew-apps/celtext . I’ve just submitted it, so it may not be available for a day or so after this post (Oct 19th 2009).
If you have any issues with it, there is a discussion forum at http://forums.precentral.net/showthread.php?p=1985016 where you can let me know about any bugs that may be present.
For anyone interested in the technical aspects of how CelText is written, for the most part it uses Palms development tools, but I use the Dojo Ajax Toolkit for a number of tasks, including animations and Ajax calls.

RunJS updated: module modifiers and function modules
I am experimenting with using JSLint as a code formatter. We'll see how it goes.
All these changes bring the size up to 3.1 KB minified and gzipped. I would like to be under 3 KB, but I want to be sure the right functionality is in place first before squeezing it down.
The module modifiers are a bit of an experiment. I wanted some way to separate a bunch of bad, wordy code out for the normal cases of a module but only in bad cases load the bad code. The example I give in the documentation is a module that gets DOM node dimensions and position. In standards mode, it is fairly compact, but in quirks mode it gets uglier. So I only want to load the quirks mode code if the page is in quirks mode. I never want to develop in a quirks mode page, but for a general JavaScript library it might be important.
So I am still not sure if the module modifier approach is the right way to go, but I have used it a little bit so far on another project, and I will see how that works out.
Palm Pre from iPhone3g: first impressions
My iPhone 3G died a few weeks ago after rudely jumping out of my pocket and onto some gravel, so I took the opportunity to upgrade to the new Palm Pre smartphone. My main reasons were mainly that it looks very cool, and writing applications for it is really, really easy if you know HTML and JavaScript.
I’ve now had it one whole day, so here are my initial impressions.
Pros
- Obvious I know, but the multitasking is fantastic. I got used to using multiple applications at the same time, that I don’t know how I ever did without it on the iPhone. For example, playing a radio app and browsing the web. On the iPhone, the music stops. On the Pre, it doesn’t.
- Moving from application to application is much faster for me. This includes loading new applications, and switching to new ones. One of the reasons for this is the much publicised card metaphor WebOS uses, but just as useful is the task bar at the bottom that can be launched using the gesture area at the bottom. Some reviewers have claimed that it’s just eye candy, since you can access the same controls by exiting out of an application into the “card view”. However, using the gesture area, you don’t even have to exit an application to launch another. It’ s just very quick and simple.
- Integration with Gmail and Facebook contacts is simple to set up and well implemented.
- The camera is better than the iPhone, and has a flash. This doesn’t mean it’s actually any good. Just better than the iPhone 3G.
- Bluetooth works better than the iPhone. My Bluetooth headset, a Sony DR-BT140Q, worked with the iPhone, but couldn’t change the music track that was playing. With the Pre, all the Bluetooth headseats functions work as they should.
- The keyboard is better than the iPhone onscreen keyboard. While the keys are small and fiddly, I’m already typing more quickly that I could on the iPhone after a year of usage.
- Turning on and off the Wireless and Bluetooth is much easier and quicker in the Pre.
- The Pre can be used as a simple USB storage device. The iPhone cannot.
- The biggest Pro for me by far is that applications are SOOOOOOOO easy to write. I’ve already written a couple, and will write more. Unlike with the iPhone, I don’t need to buy a Mac just to write an application for a bloody Phone. Tying a phone to a single computer type and operating system for development is a sign of real arrogance on the part of Apple. “They’re going to want to write apps so bad for our phone we can force them to fork out on a new computer“. Palm don’t suffer from the same hubris, perhaps because they are playing catch up, but I don’t care. You can write WebOS applications on Windows, Mac and Linux (yes, Linux!), using just HTML, JavaScript and a little CSS. WebOS rocks. Update: My first application is now available for free, see http://wp.me/p15eg-5i
Cons
- The build quality of the Pre is not as good as the iPhone. As many reviewers have pointed it, it feels a bit plastic (ok a lot plastic). The sliding mechanism could be better. It can be a bit awkward to slide open the phone when an application is live on the screen using just one hand, and the mechanism doesn’t give a good tactile feel when it slots into place.
- The keys are a bit awkward to use. While I still prefer the keyboard to the iPhone, there is plenty of room for improvement.
- Getting music onto the phone was a bit of a nightmare. It doesn’t currently work with iTunes, as I presume Apple have, in their postition of Microsoft V2, have blocked Palm from cheekily pretending to be an iPhone. The unforgivable part of this is that Palm seem to have given no other option that enables you to put music on your phone! After some Choftering, I found a handly program called DoubleTwist, which can be used to manage the music on the Pre. However, the simple fact that I need to use this is a massive fail for Palm. There’s no excuse for them saying “You need another companys software to use our phone, and we’re not giving you even a less functional application to do the same”.
- The swipe motion to go “back” in an application is awkward with one hand. You almost have to concentrate on NOT dropping the phone when doing it. This is definitely a two-handed device.
- No native Facebook application. Apparently it’s on the way, but that’s no good to me right now. Get it sorted Palm! Facebook are a partner of Palm, what’s the hold up?
- The process for selecting text is very awkward, and I definitely prefer the iPhone’s method of selecting, copying and pasting text.
- When I got my iPhone, my girlfriends first impression was “Wow, it’s so cool!”. Her first impression of the Pre, after 10 seconds, was disappointment. No matter how much I tried to say “Look at the cool operating system, better camera etc”, you don’t get a second first impression. I can definitely see a number of people not buying it if they simply pick it up in a shop without appreciating what’s inside. Perhaps it’s the plastic feel, the screen that is slightly smaller than the iPhone (people don’t really care if it’s the same resolution), I don’t know. But it’s undeniable.
Conclusion
I’m really happy with the Pre. While the build quality could be much better, it’s all about the operating system for me. I can’t wait to get more and more applications written for it.

60 Beautiful Oriental Style Artworks
The art of oriental countries has been inspiring people for hundreds of years. These artworks reached even higher heights of expression with the rise of Internet. Nowadays, thousands of artists can share their personal visions of the orient and other cultures too.
We recognize that there are many differences in art styles among the countries that are part of oriental world, but those differences empower even more the imagination of the artists that like this style.
Today, we present a nice collection with 60 beautiful oriental style artworks. Visit the artist’s portfolio by clicking in the their names, you won’t regret.
Luciole Loong derbyblue Phoenix Lu Jorge Jacinto aquq001 Stanley Lao plue William Chua henryz Yap Kun Rong Tamas Gaspar huachui Daniel Conway Marta Dahlig junkbyjen hiliuyun Juan Calle qianyu impurfektion Lorenz Ruwwe Lincoln Renall Levente Peterffy Tae young Choi Tiago da Silva hakubaikou Duc Truong Huyen Geoffroy Thoorens Mario Wibisono lindalisa Simona Ceci katarina Jason ChanIf you know any artist that you think could be in the list, feel free to share with our community. Which artwork did you like most?
To stay up to date with Zeemp news, simply follow @zeemp.
Saying Goodbye to Dojo
Being a part of the Dojo project has been an amazing opportunity for me. Dojo Storage helped legitimize the idea of doing client-side storage, and the experience working on it helped shape parts of the HTML5 Local Storage API when it was being developed. Creating Dojo Offline went from crazy prototype idea to real shipping code thanks to SitePen and Google, and led to my involvement with Gears and also helped shape aspects of the HTML5 Offline work.
And what an awesome community Dojo is! I got a chance to meet fellow JavaScript hackers who had a mad gleam in their eye on trying out some interesting new scheme to try out in the browser. I consider many Dojo-ites close friends and colleagues and continue enjoying meeting up and scheming strange browser ideas.
The last year and a half, though, I really haven't been able to be a part of the Dojo community, and I don't see that changing. Dojo Storage and Dojo Offline are being used by real users and real sites but I simply haven't had the bandwidth to fix important bugs or add new functionality. There comes a time when an open source programmer has to admit that they simply can't juggle so many balls in the air at once.
I've essentially left the Dojo community the last year and a half but consider this blog post more formal. Other things have swept me up and forced my time. I can no longer maintain Dojo Storage and Dojo Offline. This is a great chance for the users and developers who use both of these packages to step up to maintain them and continue developing them; I pass the baton to you. You won't be sorry being a part of Dojo; I know I haven't.
I wish I was good at everything; I'm obviously not ;) The particular thing I'm good at is coming up with some strange new idea, then doing several passes of engineering and work to make it real and bring it to a shippable state and get it past the 'giggle factor'. I've done this with things like Really Simple History, coworking, and more. I'm good at the 0.1, 1.0, and 2.0 phases. Past that, I'm not particularly good. I guess the wisdom of 'old age' is accepting your strengths and weaknesses ;)
So long, and thanks for all the fish!
Pavel Feldman and Dmitry Titov are now WebKit reviewers.
IE October 2009 Security Update Now Available
The IE Cumulative Security Update for October 2009 is now available via Windows Update or Microsoft Update.
This update addresses three privately reported vulnerabilities and one publicly disclosed vulnerability. The security update addresses these vulnerabilities by modifying the way that Internet Explorer processes data stream headers, validates arguments, and handles objects in memory. For detailed information on the contents of this update, please see the following documentation:
This security update is rated Critical for all supported releases of Internet Explorer: Internet Explorer 5.01, Internet Explorer 6, Internet Explorer 6 Service Pack 1, Internet Explorer 7, and Internet Explorer 8.
As a reminder, IE security updates are cumulative and contain all previously released updates for each version of Internet Explorer.
I encourage everybody to download this security update and other non-IE security updates via Windows Update or Microsoft Update. Windows users are also strongly encouraged to configure their systems for automatic updates to keep their systems current with the latest updates from Microsoft.
Terry McCoy
Program Manager
Internet Explorer Security
New SVG Web Release: Beholder
Yowsers! It's another release of SVG Web, this time code named Beholder:
According to the classic D&D Monster Manual, the Beholder is an "aggressive and avaricious spherical monster that is most frequently found underground." In other words, you don't want to bump into this guy in a back alley.
This release, roughly about 1 month of work, has contributions from many users and developers. We've knocked out a bunch of bugs and features. The full release list:
- Issue 327 : Patching currentTranslate in causes error in Wikipedia Pan and Zoom tool
- Issue 326 : Update config.html tool to test for SVG MIME type
- Issue 316 : Background SVG is not being re-drawn on secondary pages for some browsers
- Issue 307 : Window resize handler can sometimes throw exceptions on IE if Flash not ready
- Issue 308 : Implement currentTranslate and currentScale and have it be a fast path
- Issue 312 : For Shelley Powers: Odd error when using within XHTML document: works with Firefox, does not work with any other browser
- Issue 176: Document Makefile dependencies
- Issue 233 : (regression) inconsistent size, spacing, flow of rendering
- Issue 304 : tspan-tag ignore s coordinates of upper text-tag
- Issue 305 : Changing shapes and paths from 'hidden' to 'visible' does not work.
- Issue 306 : Regression in test_js1.html: Text that should be hidden is not
- Issue 311 : Summation of transform causes shaking and invalid transformations.
- Issue 254 : Lamb Animation Sample Doesn't Look Correct
- Issue 315 : Reduce the number of Sprites created per Node to increase performance
- Issue 321: Support for animating path "d" attribute (except interpolation)
- Issue 325 : Support data: URL scheme for object tag
- Issue 329 : in flash renderer, images get cropped if they are moved programmatically
- Issue 330 : in flash renderer, fill with image pattern does not work (programmatically)
- Issue 293 : Position of image differs in native vs flash
- Issue 207 : Doing transform on image dynamically throws exception
- Issue 343 : Support on* events in SVG "use" element.
- Issue 344 : Cache image requests for same file
Download the new release, read the Quick Start guide, and visit the SVG Web home page.
RunJS updated: simple modules and i18n bundles
Newest changes are support for simple module definitions and internationalization (i18n) bundles.
Simple module definitions are possible when there are no dependencies for the module. In that case the function wrapper for the module is not needed:
i18n bundle support is handy for separating out strings that might need to be translated into other languages. Quick example for a my/nls/colors.js that will define a bundle:
run(
"my.simplething",
{
color: "red",
size: "large"
}
);
Then define a file at my/nls/fr-fr/colors.js that has the following contents:
run(
"my.nls.colors",
[{
"root": {
"red": "red",
"blue": "blue",
"green": "green"
},
"fr-fr": "my.nls.fr-fr.colors"
}]
);
See the documentation for more information.
run(
"my.nls.fr-fr.colors",
{
"red": "rouge",
"blue": "bleu",
"green": "vert"
}
);
If you want to try out the latest code, you can use one of the following URLs to fetch the code:
In addition to the documentation, some of the test files might be of interest to see how RunJS can be used.
RunJS is still nice and small with these new features, around 2.7KB, when minified via YUICompressor and gzipped.
Dojo 1.4 Beta
We just released our [first] beta for dojo 1.4. There are a lot of new features in this release and we are really excited about it. Please help us test it, particularly for regressions from 1.3.
There are too many changes to mention here but they include a bunch of new plugins for the Editor, a lot of new functionality for the Grid (called EnhancedGrid), scrolling tab labels, and a number of enhancements for the Tree.
Bill
PS: As usual, file any bugs you find in our bug database I created a 1.4.0b version to mark bugs found in the beta.
WebKit, Mobile, and Progress
PPK posted some great new compat tables for various flavors of WebKit-based browsers the other day, editorializing that:
…Acid 3 scores range from a complete fail to 100 out of 100.
This is not consistency; it’s thinly veiled chaos.
But I’m not convinced that the situation is nearly that bad.
The data doesn’t reflect how fast the mobile market changes. The traditional difference between mobile and desktop, after all, has been that mobile is moving at all. If you figure a conservative 24 month average replacement cycle for smartphones, then the entire market for browsers turns over every two years. And that’s the historical view. An increasing percentage of smartphone owners now receive regular software updates that provide new browsers even faster. What matters then is how old the WebKit version in a particular firmware is and how prevalant that firmware is in the real world. As usual, distribution and market share are what matters in determining real-world compatibility, and if that’s a constantly changing secnario, the data should at least reflect how things are changing.
So what if we add a column to represent the vintage of the tested WebKit versions? Here’s a slightly re-formatted version of PPK’s summary data, separated by desktop/mobile and including rough WebKit vintages (corrections and new data much appreciated if you happen to know!):
Desktop Browser Score (max 216) Vintage Safari 4.0 204 2009 Chrome 3 192 2009 Chrome 2 188 Early 2009 Safari 3.1 159 2008 Chrome 1 153 2008 Safari 3.0 108 2007 Konqueror 3.5.7 103 2007 Konqueror (newer, untested) 0 ?? Mobile Browser Score (max 216) Vintage Ozone (version?) 185 (?) Late 2009 iPhone 3.1 172 2009 Iris (version?) 163 (??) 2008 JIL Emulator (version?) 162 ?? Bolt (version?) 155 ?? iPhone 2.2 152 2008 Android G2 (version? 1.6?) 144 (??) Late 2008 Palm Pre (version?) 134 ?? Android G1 (1.5?) 108 (??) 2008 Series 60 v5 93 (??) 2008 Series 60 v3 (feature pack?) 45 2005PPKs data is missing some other columns too, namely a rough estimate of the percent of mobile handsets running a particular version, rates of change in that landscape over the past 18 months, and whether or not these browsers are on the whole better than the deployed fleet of desktop browsers. Considering that web devs today still can’t target everything in Acid2, knowing how the mobile world compares to desktops will provide some much-needed context for these valuable tables. Perhaps those are things that we as a community can chip in to help provide.
Even without all of that, just adding the rough vintages adds an arc to the story; one that’s not nearly so glum and dreary. What we can see is that newer versions of WebKit are much more capable and compatible, even at the edges. None of PPK’s data yet tests where the baseline is, so remember that the numbers presented mostly describe new-ish features on the platform. We also see clearly that the constraints of the mobile environment force some compromises vs. desktop browsers of the same lineage. This is all in line with what I’d expect from a world where:
- WebKit is becoming the dominant smartphone rendering engine, finding its way into myriad devices due to its performance, compatibility with web content, clean C++ codebase, and straightforward API
- Vendors upgrade the version of WebKit they ship when they release new OS versions. Very few mobile devices enjoy long-term OTA updates (yet).
- Deployed smartphone stock turns over every 2 years
The important takeaway for web developers in all of this is that WebKit is winning and that that is a good thing. The dynamics of the marketplace have thus far ensured that we don’t get “stuck” the way we did on the desktop. That is real progress.
Where do we go from here? Given that the mobile marketplace is changing at a rate that’s nearly unheard of on the desktop, I think that when new charts and comparisons are made, we’ll need to couch them in terms of “how does this affect the difference in capabilities across the deployed base”, rather than simply looking at instantaneous features. Mobile users are at once more likely tied to their OSes choice of browser and more likely to get a better browser sooner. That combination defies how we think about desktop browsers, so we’ll need to add more context to get a reasonable view of the mobile world.
100 Wonderful Battle Art Illustrations
People don’t like wars, but illustrations featuring battles are very popular, because concept artists create them for games and movies that people love to play or watch.
Let’s keep our battles in the art world, real ones have devastating effects, instead let’s declare a war against our excessive laziness. The laziness can be good too, it all depends how you manage it.
To help you in this mission, we are showcasing 100 wonderful battle art illustrations to inspire you to fight for your goals.
Pay attention to this very wise quote from The Art of War book:
“If you know the enemy and know yourself, you need not fear the result of a hundred battles. If you know yourself but not the enemy, for every victory gained you will also suffer a defeat. If you know neither the enemy nor yourself, you will succumb in every battle.” Sun Tzu, The Art of War.
Feel free to suggest more illustrations and to tell me the ones you find more interesting. Follow our updates on @zeemp twitter.
What inspires you to fight and what keeps you motivated?
Add-on Guidelines in action – AVG Security Toolbar
The AVG Security Toolbar team has recently released a new version of their toolbar. It has a more predictable user experience and does a better job of allowing users to stay in control of their browser. It’s a great example of the Guidelines for add-on developers in action.
It’s encouraging to see the example set by the AVG Security Toolbar team. They’re building valuable add-ons for people and at the same time they’re respecting user choice. Here are some high level examples of the changes they’ve made in the new version of their toolbar:
- It no longer takes over the search provider. Instead it uses the proper IE8 set default provider API so that users can choose their default.
- The close button is visible so that users can manage it like other toolbars. Additionally, the toolbar is positioned in a supported location which improves stability and performance.
- It no longer modifies the new tab page to maintain a predictable new tab experience for users.
Kudos goes out to the AVG Security Toolbar team. On behalf of our shared customers, thanks. Following the Guidelines and using supported extensibility points in this way means that people have a consistent and reliable experience that allows them to stay in control of their browser. This is exactly what we’d like to see from all add-on developers.
Before: Previous version of AVG Security Toolbar
After: Newest version (2.507.24.1) of the AVG Security Toolbar provides a predictable experience and lets users stay in control of their browser
-Paul Cutsinger and Herman Ng
One more twit goes a-twittering
Ok, I gave in, I’m on Twitter – http://twitter.com/chofter , user @chofter. I promised myself I wouldn’t join, because I didn’t see the point. Hmpfh, well, there that goes. I’ve now promised myself I’ll only write pertinent updates, not the inane crap people post about what kind of soup they had that morning.
If you’re interested in seeing how long this latest resolution lasts, or if you want to hear whatever craziness I have to impart on the tech world, dojo toolkit, or open source worlds, feel free to follow my posts (I refuse to say tweets. Damn, I just said tweets. Damn, said tweets again. Damn it…. etc)

Dijit Tree now ultra-stylable
The Dojo Tree has always been easy to make look just like you want, from changing the icons to changing the labels.
However there was always a limitation in that an entire row could not be styled. Well, today I put through a fix for that, and you can now specify a CSS class and style for each row using the getRowClass and getRowStyle functions.
You can see a simple test of this at http://archive.dojotoolkit.org/nightly/dojotoolkit/dijit/tests/tree/test_Tree_Styling.html , available from Oct 2nd 2009, and it’ll be included in version 1.4, which goes into beta any day now. It shows how you can easily make the tree appear like an expandable, nestable list widget, with just a tiny bit of CSS.
I also plan on writing up a number of dojo.cookie articles over at dojocampus.org in the coming weeks on all the cool things you can do with the tree.



RunJS
I would like to see it used for any project that needs JS code loading, particularly since it handles dependencies, can load regular JavaScript files, handles multiple versions of modules, and is a compact 2.2KB (minified and gzipped). It is JavaScript toolkit-agnostic and has no dependencies.
Enjoy!
Ubuntu – good enough for grannies and girlfriends
I recently installed Ubuntu Linux 9.04 on my girlfriends lovely new EEE Netbook (I highly recommend the 1005HA + EEEBuntu), but left the original Windows install intact, because, well, I’ve always had a need to go back to Windows for 30 minutes at some point for some reason or another.
The one problem I foresaw with this Ubuntu install was that if she ever had to use the Huawei Mobile Broadband modem I have, she’d have to boot into Windows. I’d read a year ago that Ubuntu supported it, but when I tried with Ubuntu 8.10, it failed miserably.
So today I was using her netbook and needed mobile broadband, and was about to boot into Windows, when I thought “what the hell”, and tried it in Ubuntu first, fully anticipating the same failure as before, or at least 10 hoops that had to be jumped through before I could get it working.
But no – I was presented with a list of operators for my country (Ireland), asked if I was bill pay or pre-pay, I clicked once and I was connected! No install required, unlike with windows, just enter your PIN and away you go.
The main argument against Ubuntu, and Linux in general, is that it doesn’t have enough driver support, making it impossible for non-computer literate people to simply plug in their devices and do what they need to do. It’s great to see that the community is adding in new drivers at a great rate, and that things like cameras, wireless (which is also vastly improved recently) and now mobile broadband now “just work”, and in this case work much better than Windows.
My girlfriend, who is in no way interested in computers or open source, now complains about having to use Windows in university, because Ubuntu is so much easier and faster to use. I can imagine the same story is playing out all over the world. Hopefully at least

































































































































































