Jag fick just reda på av DFS att vi stänger dörrarna i morgon för registreringar till Scandinavian Web Developer Conference 2009. Så om ni har funderat på att ta del av världens Webutvecklar-stjärnor på Måndag, registrera er _nu_ :)
Mvh,
PS
Mostly JavaScript Ramblings
Jag fick just reda på av DFS att vi stänger dörrarna i morgon för registreringar till Scandinavian Web Developer Conference 2009. Så om ni har funderat på att ta del av världens Webutvecklar-stjärnor på Måndag, registrera er _nu_ :)
Mvh,
PS

Here's a little something for anyone wavering about getting "Learning Dojo" or not. To get a 12% discount, do the following;
1.) Visit the book page: http://www.packtpub.com/tutorial-for-building-interactive-interfaces-with-dojo/book.
2.) Click the "ADD TO CART" button to add the book to your shopping cart.
3.) Enter your promotion code: Dojo2688 in the Promotion Code field in your shopping cart, and click the Update button. The discounted price should now be reflected in your order.
Cheers,
PS

I was super-excited this morning, when I saw the announcement that Google had released a Java version of their App Engine environment. My heart sank a bit when I read that they had a class white-list for security reasons, and told myself that I wouldn't be surprised if that means that you cant run Server-side JavaScript at all.
However, after reading Ola Bini's quick article on how to enable JRuby, I felt that it might be doable, after all, JS doesn't even have Threads (which more or less thankfully are disabled in GAE). It _should_ work.
So I went and downloaded the eclipse plugin, created a new project, which came with its own "Hello World" servlet and dropped the Mozilla labs JS version 1.7 jar (from the Dojo Ajax Toolkit's util/shrinksafe folder) into the lib/ folder of the GAE project, added some paths here and there -- and it worked.
I tried something really simple like this;
...
String s = "var foo = {foo: 17, bar: 4711}; foo.foo;";
Object result = cx.evaluateString(scope, s, "
resp.getWriter().println(Context.toString(result));
...
And out I got a
17
:)
I just saw that Google has limited the Java GAE SDK for the 10 first to register. I guess Sweden was the right place to be :) If you want to see my sample project, you can download it from here;
http://genericwitticism.com/rhino.zip
Cheers,
PS

So, I attended this seminar recently, in which the usual suspects were paraded in front of a saucer-eyed audience; There was Amazon, Salesforce, local hopes and established players in equal measures. The first presentation was by a Swedish guy named Joakim Lindbom, CTO at Cap Gemini in Sweden - a really sharp guy, by the way.
His talk was about Amazon EC2, and I had heard a lot of it before, but not everything. Joakim focused on the architectural choices that Amazon had made when creating their different services, being an architect himself. He argued successfully the common knowledge that it really isn't possible to scale a relational database to do what Amazon have to do, and that the same apply to services.
In general a cloud-based architecture means that you use a distributed queueing service both to store incoming requests and to communicate between system parts. Yes, a kind of ESB, if you will, but simple!
It also means using schemaless databases that don't mind adding another column even though there's already 1.0E9 items in the table.
And then it struck me; If it is absolutely critical to use ___SIMPLE___ (meaning non-complex, OK?) services which are both asynchronous (queued, event-driven) and dynamically or non-typed, to be able to build a system over a certain size - why is this not critical when building smaller system?
Or, to phrase the questions differently; How comes it is possible to build systems that does not comply with these traits, since they have been proven to be just critical? Size, is the answer of course.
But to expand that answer is to get to the core of the problem; Smaller sized systems can skimp on doing things right, because it doesn't show up until they get larger. And what small system doesn't?
So, essentially, what has been discovered to be critical in building large-scaled 'cloud' systems is just as essential in building smaller system, it just isn't as evident. Which of course can be translated as saying that it isn't critical. And, no, sure, it isn't critical. But what I'm saying is that even smaller system will by necessity cost less to build, if built according to the same principles the larger-scale system use, if nothing else but the simple fact that they will grow over time.
One of the successes of Erlang has been the reational approach to distributed proecessing; Since interprocess communication in Erlang is message-based, putting those messages on a bus á la Amazon's simple queue service, will be transparent to the processes using it, and also, those very processes need not know where they are and can so be safely dotted out in the cloud somewhere.
Imagine if someone would do that kind of stuff to another cool language, maybe one with first-class and anonymous functions, duck-typing (Simple, 'schemaless'), closures and late binding (i.e. easy to code in), like ... JavaScript? Maybe someone already has? :)
No wait, nobody has to, right. It usable that way right off the bat.
Have a nice weekend all y'all.
Cheers,
PS
Why is that a big deal?