Archive for October 25th, 2006
Hands on DWR
Especially because I’m currently using DWR for some minor projects and I just love itJoe Walker (Getahead-DWR) and Bram Smeets (Interface 21-Spring) took a novel approach to their “Hands on DWR†talk at The Ajax Experience: Creating a game – “Multi Player Battleships†live in the session.
The concept was very well received – many smiles around the room when the idea was introduced. With Joe talking and Bram typing they took a pre-created boilerplate (configuration and some of the simpler tasks completed beforehand due to the time constraint) and turned it into a simple, but fully functional, multiplayer game.
I’m happy to report that I don’t have an awful lot to report regarding the complex inner workings of the application. Those familiar with DWR will find that the code contains few things unfamiliar or even ‘advanced’. As someone with only an intermediate DWR skillset – I had no trouble following the code Joe and Bram were creating. The final product was simple but functional – intentionally avoiding features that would improve the game but cloud the demo. Joe and Bram were able to hide from each other, fire, and even chat as they played. The code for the demo can be found here (near the bottom at the time of this post).
The most contested point was the use of “reverse ajax†to sync with the current server status at timed intervals. Reverse Ajax was introduced in v2.0 m1 (current stable release is v1.1.3) Concerns centered on potential security issues – Joe explained that they do as much as reasonably possible to stop malicious users, but in the end if you are a malicious user: there are many ways that you can bring the server down without DWR.
image stolen from this post on Joe’s blog where he also talks about the concept of developing the game live in a session
![]()
JSONRequest Proposal
Yesterday they posted an article about the JSONRequest Proposal by Douglas Crockford and they all started dreaming about how nice a world with simple, easy to use objects would be, a world where every browser had the JSONRequest implemented…
JSONRequest is just a proposal (for now) and although I’d like to see it realised, it won’t in the next few years, or at least it won’t be adopted on a large scale for some time. Ajax isn’t easy, if we’d all go the easy way we wouldn’t have chosen Ajax in the first place. But its a good thing to dream
Dojo 0.4 has been released
Core
- GFX library – graphics library (see demos and tests)
- New charting engine, details To Be Announced.
- JS Linker – essentially done as alpha release, won’t be integrated into dojo build process for 0.4 release
- I18N Infrastructure
- event normalization of keyboard events (new “onKey” event)
- html-refactor
- onDomLoad – dojo is initialized as soon as DOM finishes loading w/out waiting for images etc. to finish downloading
- jum – Various enhancements being made in combination with new unit test runtime tool using rhino api directly. Unit tests can now be written and used on projects outside dojo. Semantics for grouping/setup/teardown/etc still being designed/thought about.
- major dojo.lfx improvements. Wipe and fade animations are now chain()-able among other improvements.
- dojo.html.metrics – scrollbar width measurement, current font size measurements, the ability to get how much of an HTML fragment will fit on a single line in a container, and to populate a container node with as much of an HTML fragment as will fit into it. Also included is a way of measuring the dimensions of a node if one was to populate it with a specific HTML fragment.
- dojo.debug.console – improved debugging with Firebug on FF/Safari, with fallback to Opera error console, if available.
- HtmlDragCopy? – copy an element instead of moving it from source to target, with ability to specify if a copy can be copied again.
- dojo.debug.console – console logger for Firefox (using Firebug), Safari and Opera. Deprecated dojo.debug.Firebug.
- API documentation -inline code docmentation) added to many files.
Widget Infrastructure
- Namespace support and refactoring of how to declare widgets, and automatic widget/manifest loading feature
- high-contrast mode infrastructure, and support for a few widgets (checkbox and tab container complete)
- subwidgets in templates
- widget-refactor – changing everything to widget/ directory, etc.
Widgets
- Improvements to Chart, including VML support and Area plotting
- FilteringTable widget
- Slider widget
- Spinner widget
- Toaster widget
- DropDownTimePicker? widget
- RadioGroup? widget
- Clock widget
- ProgressBar widget
- treeV3 (still experimental because DnD? not working)
- Datepicker enhancements
- Editor2 enhancements
- AccordionContainer? fixed so sliding of panes works, and so it works like other layout widgets
- I18N updates: DatePicker, TimePicker?, DropdownDatePicker?, Validation widgets?
- Soria – a few more widgets converted
- keyboard handling for a few widgets (checkbox, tab container, tree – complete. Button, dropdownbutton, combobutton, some menu – nearly complete)
