Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

malte (1708)

  (email not shown publicly)

Working on Joose JavaScript meta system (Blog) [] and blok [], a web based application for collaborative ui prototyping.

Journal of malte (1708)

Tuesday February 03, 2009
02:23 AM

Joose 2.0 released

Just wanted to let you guys know that we released a new version the JavaScript meta object system Joose which was heavily inspired by Moose.

The major new feature of this release is the support for type constraints and type coercions for attributes and method parameters. There is also experimental support for multi method. We'll see how that evolves.

Monday November 10, 2008
06:09 AM

Joose release and job openings

The development of Joose, a meta object system for JavaScript with great similarities (and interoperability) to Moose continues at great pace. We just released a new release candidate and the release should happen today or tomorrow.

Meanwhile I started a new job at sinnerschrader (Hamburg, Germany) and we have quite a few job openings in all things software engineering. Especially if you are tired of body leasing, you might find this video interesting.

Thursday September 25, 2008
11:57 AM

New version of Joose and blok

While staying in the US I got a lot of hacking time in. The first result is a new version of Joose the JavaScript meta system that should feel very familiar to everybody who uses Moose :)

The new feature I find most useful is the ability to add custom class builder methods:

Class("MyClass", {
     methods: {

     primaryKey: "id"

The "class builder methods" in this example methods and primaryKey are just methods on the meta class and can be freely defined and overwritten.

Secondly, I put a lot of work into blok. blok is an application build on Joose that enables collaborative editing of simple flow charts and user interface prototypes.

Back to hacking...

Saturday August 30, 2008
10:46 AM

Recent Journals

The recent journals module seems to be deactivated when you go to use.perl without a login cookie
Thursday June 19, 2008
03:02 PM

Joose applications

Development of Joose has recently focused in using it in real applications and refining the API on the go.

The most complex application to date is Blok which supports collaborative editing of user interface prototypes. Blok uses Google App Engine on the server side but almost all the code is running on the client side using Joose and jQuery (especially jQuery UI). At the core of blok lies a component system that uses roles to apply behavior to different shapes. For more information see the Joose blog..

Sunday April 06, 2008
01:52 PM


Joose has turned from an experiment to something really cool. It has pretty much the same effect of JS programming like Moose has on Perl-Programming. There is now some some documentation on Google code. If you want to join in on the development just email me at malte.ubl (at) or drop by at #moose, so I can get you a commit bit for the repository and the wiki.
Wednesday March 26, 2008
05:32 PM

Joose Blog

I moved by JavaScript and Joose-related blogging to a new blog to give it more wide exposure to the general non-perl-related internet community.
Monday March 24, 2008
07:14 AM

Attribute meta classes

Attributes now have their own meta class in Joose. Support for attribute traits is currently quite limited, but you can say:

Class("Car", {
    has: {
        leftRearWheel: {
            init: new Wheel(),
            isa: Wheel,
            is: rw,
            handles: "*"

to only allow Wheels in the attribute leftRearWheel and to delegate all of Wheel's methods to the leftRearWheel.

In other news:

  • Joose is now hosted in the Moose svn
  • Joose now supports the Moose JSON Storage format and allows round trips between Moose and Joose (at least for basic tests)
  • Joose now works in IE and Opera
  • Joose now supports class methods
Saturday March 22, 2008
07:52 AM

Joose can write TPS-Reports

While advancing at least two computer science zen levels I augmented my brain enough to implement the augment method modifier in Joose.

Class("HTMLDoc", {
    augment: {
        html: function () { return "<html>"+this.INNER()+"</html>" }

Class("HTMLDocBody", {
    isa: HTMLDoc,
    augment: {
        html: function () { return "<body>"+this.INNER()+"</body>" }

Class("TPSReport", {
    isa: HTMLDocBody,
    augment: {
        html: function () { return "<h1>TPS-Report</h1>" }

While making method modifiers stackable was really easy for all the other modifiers, I had to roll my own reverse call stack to make it happen with augment.

Friday March 21, 2008
01:34 PM

Google Gears support in Joose

You can now automatically execute methods of a Joose.Class in a different thread using Google Gears. All you need to do is use the meta class Joose.Gears and add a worker method. All the Gears-Interfacing is handled for you. If Gears is not present, the worker is executed in the main thread. The workers result will be sent to a method called "on".ucfirst($worker_name) if available:

Class("HardWork", {
    meta: Joose.Gears,
    has: {
        data: {is: rw, init: {}}
    methods: {
        onDoWork: function (result) {
            ok(result == 1001, "Gear Worker returns correct result")
    workers: {
        doWork: function (start) {
            var counter = start;
            for(var i = 0; i < 1000; i++) {
            return counter

var hw = new HardWork();