Moin Moin,

yesterday, the first HH.js meet up took place in the nice lounge of SinnerSchrader in Hamburg. About 30 JavaScript geeks (some of them called them self newbie) attended and expected a cool first meeting.

First of all I wanna say thank you (again ;-) ) to Malte for organizing this and thanks to SinnerSchrader for letting the people use their lounge and supporting the meetup with Pizza and drinks. #awesome!

The first topic was Node. Felix Geisendörfer was traveling from Berlin to Hamburg to give his talk. Actually he’s taking part in the project with bugfixing and further development. It’s a good idea to have look at the slides he uploaded at his blog.

Node was invented by Ryan Dahl and is made for serverside JavaScript. It is built on Google’s Open Source JavaScript engine V8 which is in these day’s the fastest engine available (it does not build binary code but immediately machine code). The big thing is the fact, that Node is providing asynchronous I/O. This is implemented with callback functions and is giving a big advantage compared to other implementations. Read more about Node and it’s functionality here.

Felix took us on a journey through Node. He explained the way Node works and showed some examples like an simple http or tcp server. It’s written just in a few lines of code. He also introduced future goals namely the support for web workers, readable and writable streams, better socket support and so on.

Within the bonus slides he introduced his project Dirty which is basically a mixture of the principle ideas behind CouchDB (document based database with a RESTful API) and Redis (an advanced key-value store) to provide a “scriptable key-value store”. The sources can be found at github.

Node is still Alpha and the API is changing a lot without backwards compatibility. It is planned that version 0.2 will be released in between the next 4 - 6 weeks. But Felix mentioned a s a side note, that this goal was set up already half a year ago ;-). When Version 0.2 comes out, a freeze will ensure backwards compatibility for the first time. After that it will be possible to use it in production - for sure at your own risk.

So this was really interesting and for sure in many parts kind of “JavaScript - advanced”.

After a short break and another beer, Malte introduced Joose. Joose is a meta object system for JavaScript including classes, inheritance, mixins, traits, method modifiers and other stuff. In his slides, he is taking the idea of M.C. Escher pictures to explain, that Joose is “programmed in itself (self-hosting)” and cannot crash. Better said, it works completely or does not work at all. To find out more about metaprogramming, refer to this Wiki page - to be honest, I am not able to explain it in depth ;-).

After meeting Malte the first time I played around with Joose in some smaller projects. For me coming from OOP in PHP, it was really cool to have the same paradigms in a simple way available in JavaScript. It is helping a lot to develop good structured code. But furthermore there are cool things like before or after methods. Using them in a child class is giving the possibility to do something before or after a method from the parent class is fired.

Joose in depth is really powerful and is providing a lot of mechanisms to write really wicked stuff.

After Felix and Malte’s talks, some discussions arose. Basically everybody was kind of “enlightened” with the possibility’s available with JavaScript. One setup could be Node as the server (e.g. http) + Joose for coding + CouchDB as the storage engine. Pure, damn’ JavaScript. A lot of fun … ;-)

While writing this, I found another Joose manual here. It’s good and you should take a look here also.

I am looking forward for the next meet up and hope, that it will take place maybe next month?