There was planned another one for Fabian. This time a deeper insight to the internals of qooxdoo's Widget system. Because the first workshop took too long there was no more time for this one. Without the oral narrative this is quite lightweight. Hope this is still interesting for you. More detailed documentation is planned for 0.8 in the next weeks.
There was another workshop at the Webinale 2008 in Karlsruhe, Germany hold by me: Web Application Development with qooxdoo. The intention was to show the needs and possibilities to solve enterprise needs in web application development. This was done using the qooxdoo tool chain.
The workshop went quite good. Some people did the stuff practically during the workshop with great success. Others just followed the presentation theoretically.
For all of you who want to try it on your own, I have uploaded the workshop material to our server. The downloadable archive (about 12 MB) contains a prepared qooxdoo distribution (contains the API viewer, the framework sources and the tool chain).
Inside the archive you can find a folder Snapshots which contains three interesting folders:
app1: Feed Reader
app2: Feed Reader with usage of parts (only for build target)
app3: Feed Reader with usage of browser variants (only for build target)
Please have a look at the file config.json for the configuration data of the build system. This really might to be a good chance to all of you who want to learn the new generator features practically in a safe, prepared environment.
In each folder you can find a shell script and a batch file to execute the new generator (generator II). You should be able to execute all offered jobs (source, build, api and clean). For the batch files you need to have a Python installation under C:\Python25. Please install Python natively under this path (This is the default path for the Python installer). There is no need for Cygwin when using these batch files.
Due to the fact that the topic is quite advanced, the workshop ended without showing the last third of the presentation.
If you were in the presentation or are interested in a qooxdoo 0.8 workshop, please feel free to download the prepared material (about 13MB). The archive contains a snapshot of the framework folder of qooxdoo. The prebuilt application steps make use of this qooxdoo version (Due to the trunk's nature to change rapidly newer or older versions may not work by the way). You do not need to have a current checkout of qooxdoo's trunk.
Try to follow the described steps on your own. Each snapshot (in the Snapshots folder) contains the full implementation done the corresponding slide. You can find step-by-step code blocks in the Steps folder. At the bottom of some slides you can find a small area where the current step is mentioned. Use this to keep in sync with the snapshot or code block.
If you have questions or comments feel free to post them here or on our mailing list. We are really interested in any feedback for this quite new presentation style (at least for us).
The following slides were part of a talk about features and implementation of object-oriented JavaScript. The talk was given at Dynamic Languages World, the first European conference dealing with the shared concepts and frameworks of all important dynamic languages (including Ruby, Groovy, PHP, Python and, of course, JavaScript).
The talk attracted quite a number of people. Interestingly, while most of the audience was familiar with JavaScript, some important concepts like closures still seem not to part of the everyday programming arsenal. The native capabilities of JavaScript as a programming language are really fascinating, and frameworks like qooxdoo try to make them as powerful yet comprehensible and practical as possible. Especially if you are new to qooxdoo or object-oriented JavaScript, make sure to read about and also try out qooxdoo's OO syntax and features:
After Sebastian's presentation on Monday (as part of the Power Workshops) Alexander, Martin and I had our presentations as guest experts.
Alexander's and my presentation covered the low level parts of qooxdoo. Alexander talked about the browser object model a normalized and extended layer for DOM manipulation, event handling and cross browser XMLHTTP communication. After that I continued with a presentation about qooxdoo animation a low level animation package, using the BOM layer.
Here is the presentation about testing Web apps with Selenium RC.
The presentation has three parts. The first is a very generic introduction to Web testing in general and should be beneficial to people who want to get an orientation in the field; the second part introduces Selenium RC, this should be beneficial for people looking at concrete test products; and the third part shows how to extend Selenium RC with custom code, which should be beneficial for people committed to Selenium RC.
The slide show is double length, first the normal presentation slides for a quick overview, and then all the slides again with notes which should make it easier to get to grips with the material without the oral narrative.
In one of the last sessions of the Dynamic Languages World I did a talk about JavaScript tooling. My objective was to give a general overview over some current JavaScript tools.
I covered JavaScript linker, tools to generate API documentation, lint tools and JavaScript packer.
qooxdoo 0.8 will include a new, sophisticated low-level event layer. Not only does this separate layer allow for a clean architectural design (with a high-level GUI toolkit on top), it will also make it possible to use this reduced set of low-level DOM features without qooxdoo's advanced widget system. Particularly for rather traditional web pages instead of full-featured rich internet applications, such a light-weight, standalone qooxdoo built might be more favorable. One central element for such a low-level layer is DOM event handling.
In qooxdoo 0.7, event handling is tightly integrated, rather intermingled, with the widget system. We have now taken the best parts of the old event handler, like key and mouse event normalization, and integrated them into a new standalone event layer.
This event layer has many interesting features. Unlike event layers commonly seen in other JavaScript libraries it does much more than just providing a cross-browser API wrapper for attaching event listeners:
Last Monday I did a presentation about the new layout managers we already started to implement for qooxdoo 0.8. The presentation is meant as an overview of what we propose to do, are actually doing already and why we do it. I think the slides give a good overview even if my spoken comments are missing. If you have any questions or comments feel free to post them as comments to this blog entry, and -- even better -- also to our mailing list to have a better basis for discussion.