PavingWays

We build JavaScript applications

Webinos: New Project to enable Cross-Platform Apps

Webinos is a pan-European initiative trying to build a ”Secure WebOS Application Delivery Environment”. It aims to create an open source platform that will “enable web applications and services to be used and shared consistently and securely over a broad spectrum of converged and connected devices, including mobile, PC, home media (TV) and in-car units”.

The consortium is led by the Frauenhofer Institute for Open Communication Systems and has already 22 partners including W3C, Samsung, Sony Ericsson, Telefonica, docomo, Deutsche Telekom, BMW and the University of Oxford. It has received a €10m funding from the EU and will run over three years.
Will webinos solve the fragmentation problem?

As many developers know there are a lot of different application platforms out there already (Android, iPhone, Symbian, Web … you name it). Fragmentation and porting applications are huge issues for developers and expensive in regards to development cost and time.

The new consortium wants to solve this problem by creating an open source, web-based platform that would allow the same application to run across a very wide variety of device types. The platform can be used on any handset regardless of the OEM or carrier. Basically a universal OS or runtime environment to write once, run anywhere.
A very ambitious goal! Especially considering that maximum compatibility usually comes in a least common denominator package.

For us this project first and foremost raises some questions:
  • How do other projects like JIL/the Wholesale Applications Community (WAC) fit into the picture? They also aim to create open platforms for mobile apps and solve the fragmentation problem.
  • Is this gonna be a corporate-driven PhoneGap?
  • Comparable to other approaches like Mobile OpenLaszlo?
  • Will HTML5 have a big part in this? (probably it will)
  • How small will the least common denominator really be?
  • No matter how web-based you are you need to deal with browser issues and fragmentation - how is this solved?
  • Are there too many cooks in the kitchen?
  • Where do Google, Apple and Nokia (and many others) fit into this?
  • Where are the developers? It is a tough task to convince developers to develop for your platform, no matter how great it might be. Other companies are already spending millions on this (some more successful than others).
  • Is someone of webinos going to present the project at the Mobile Unconference in November?
What we think:

A well funded project with a noble goal. Lots of players involved, many obstacles to take, many people to convince. The goal is very, very ambitious and the resulting platform will depend on making compromises. The Web is the platform of the future - this is another proof.
Sources and References:
webinos.orgwholesaleappcommunity.comgeek.comheise.de

Mobile Unconference coming to Germany

As you might have seen we collect and blog about many different events.
This event is special, because we are helping to organize this one!


The Mobile Unconference is a one-day event, a bit like a BarCamp, a bit like a conference, entrance free or very low (around 30 EUR). Our goal is to bring developers together in a very informal way and give those who want to share their story the possibility to take the microphone and do a presentation, so:
  • anyone can come, as a speaker or just as a guest
  • sessions can be submitted before the conference
  • anyone can take the stage and can do a session at the event
  • there will be a schedule to sign up for a session during the event
  • sessions can be anything: talks, workshops, discussion rounds, artistic performances ;)
  • product pitches are strictly forbidden
  • cool stories about your experiences developing mobile applications or doing business in the mobile space are very welcome
  • networking is encouraged
  • there will be free food and drinks
We went to the Mobile Unconference in Rotterdam this May and came back with the impression of a really cool event and many contacts to developers from the Netherlands - an overall great experience.

Now we joined forces with Syntens and are bringing the Mobile Unconference to Germany. The event is targeted to take place in early November in Düsseldorf. The location allows us to invite attendees from Holland, we are even planning to hire a bus from Utrecht to Düsseldorf to make traveling simple and fun.

With this event we want to fuel innovation and cooperations between Dutch and German developers/companies and hopefully some more attendees will join in from Sweden and Denmark (we’re working on this).

If you want to be a part in this, you can help us now! Specifically we need:
  • attendees - can you make it to Düsseldorf in early November? Do you know anyone that might be interested in coming?
  • sessions - do you have an interesting story to tell, want to do a workshop?
  • location - we need a location, can you recommend anything in Düsseldorf?
  • sponsors - do you want to support us or know someone wo has some sponsoring budget?
  • news coverage - please tell anyone you know about this!
If so, then please:
Thank you very much and hopefully we’ll see you there!

HTML5/CSS3 Meetup June Recap

Our June meetup for HTML5/CSS hackers was a hot one! We had around 30 degrees around here, and were sweating like crazy. Drinking hot tea apparently is a good helper (thanks Björn).

Again, less people attended than anticipated (learning there again). Luckily there were also two new attendees, thanks for coming Jens and Christoph!

The restaurant we picked was rather noisy, in part because they had all their windows open, which again also was rather unproductive air-condition wise…so maybe a restaurant is not a good place to do a tech meetup after all. That also did not help listening to Dennis from Hamburg, who joined us to present a project over Teamviewer/speakerphone.

The project was pretty interesting though: Dennis is using a Kaazing server for his Facebook-based Tic-Tac-Toe game. The game logic runs inside a JSP web application on the server and is using the Kaazing component for messaging with the clients. Clients connect either via a WebSocket connection (here’s the HTML5 part) or a fallback mechanism using Flash. The only thing to do for the developer is to include the Kaazing iframe component into the HTML of the game. Kaazing itself is a Java-based and enterprise-oriented product. WebSocket capabilities with fallback mechanisms and simple integration into web applications are underlining this.
Thanks Dennis for the demo! Unfortunately there is no version of this online, it’s all only working on a local machine. By the way Kaazing apparently runs on the AppEngine.

We also covered some other topics, SASS was one of it. Opinions about using it diverted and some attendees were reluctant to it because it is ruby-based (workarounds are there) and because it forces you to learn another non-standard CSS language - valid points I think.

Jens was kind enough hinting us towards the WebTech Conference in Mainz, taking place October 11th to 13th. Christian Heilmann is one of the speakers, so this surely becomes an interesting conference.

Finally we have been looking at some interesting HTML5-related links that I have been collecting lately. Here’s the list:
Thanks to all attendees and until next time.

Updated: iPhone 4 Gets NO Dashboard Widgets!?

Update: now that Steve Jobs’ keynote is over we can confirm that our hopes from below have not been fulfilled (again) and the new iPhone 4 will not feature a dashboard or home screen widgets. This rumor has actually been around for quite a while - we’ll not stop hoping though and we all should not forget that there are tons of other great devices out there that are well worth looking into developing for (see below)!

What else is new with the iPhone 4? Not much actually, except yet another screen size AND resolution we have to keep in mind when developing apps: 960 x 640 at 326 dpi.

Original: Apple has supposedly started to pull applications from the app store that implement Dashboards or interactive home screens (see here (same here, here too, at first).

These apps enable their users to put several Widgets on one screen, same as in Apple’s own Dashboard Application for Mac OSX. With these the lack of multitasking can be overcome, at least to some extend, and users get an interactive overview for different applications. MyFrame from Groundhog Software or DashPad from PXL Creations are examples for these. .

Ever since we saw the first iPhone and its non-interactive idle screen / home screen we thought it would be great to have really interactive widgets on there. Wouldn’t it be nice to see the actual weather forecast for the next 8 hours in the icon itself without having to open the actual application?

Meanwhile the Nokia N97, N900 and Android phones have this feature and I would assume Apple needs to improve in this direction as well.

So, you realize this is a question mark up there in the header, right? We just speculate, but it might well be possible that the iPhone 4G, already featuring multitasking, might also feature an interactive home screen or at least some kind of dashboard for widgets. It would be a logical step and Apple would probably do this in their own manner and most probably do it right (from a user and Apple’s perspective at least).

Still, the big question, at least for us as web technology fanatics would be if such a dashboard would be filled with web-based widgets (just like Nokia) or native applications (as in the case of Android). It’s hard to foresee, because Apple tends to go both ways from time to time, Mac OSX Dashboard widgets rely on web technology. However iPhone Applications are strictly native by design.

Let’s wait and see, within the next 3-5 hours we will probably know more.

Chrome Extension with 1500 installs

Jesse and I took part in Germany’s GTUG Chrome Extension Battle back in March. GTUG stands for ”Google Technology User Group” and the Extension Battle was a hacker competition to create some kind of Extension for the Google Chrome browser. This is rather simple to get started with and very similar to creating web-based widgets.

We had been playing around with gameQuery and some CSS3 hacks back then, so we decided to use what we had and created a Space-Invaders clone as a Chrome Extension. The outcome is called ”CSS3 in Space” and it can be downloaded in the Chrome extension repository. Too bad I never found the time to finalize the multiplayer part :( But the game works pretty well as it is - especially given the few days we used to hack this together.

In the battle, we won 2nd place in Germany and scored Ogio Neoprene Laptop Sleeves…that’ nothing compared to 1st place and Nexus Ones but better than nothing, right? Currently we are at 1443 total and around 400 weekly installs, which is not too bad. This includes a “Top Picks” placement during the first few days which was part of the winning prize, so it will go down. It is actually strange how the “weekly installs” are calculated - the Extension is available for 10 weeks now so you should really see 144 installs per week.

Still, if we manage to stay at around 100 installs per week, we will be at 5k users in a year - that’s not bad and it makes me conclude that Chrome extensions, along with other browser Extensions such as the ones for Firefox or Opera can be considered a good channel for web-based apps and widgets. Monetization is tougher than in app stores, but that’s a whole other story.

Mobile Unconference Rotterdam - Recap

Last Friday we attended the Mobile Unconference in Rotterdam. The topics at this event were mostly game related and over 90% of the attendees were Dutch. We really liked the unconventional style. There were some presentations, some discussion slots and a lot of space to get in touch with people.

The first presentation was held by Scoreloop. They have an SDK which allows game developers to build a community around their iPhone or Android game. Developers can integrate features like leaderboards, achievements or social networks. Apple’s Game Center does not give them an headache yet.

The second presentation was about Microsoft’s Windows Phone 7. The UI of the WP7 phone looked nice. Microsoft wants to make it easy for developer to develop apps (of course). On June 2, Microsoft will be organizing a free developer event called ”Windows Phone Developer Hub” in Utrecht, The Netherlands.

PavingWays’ Rocco was presenting a concept about a new cross-platform e-reader for mangas and comics. The reader allows interactivity as well as community features amongst some more cool things. More about that soon right here on our blog. The session was intended to be a feedback channel for us and we did indeed receive a lot of feedback and food for thought from the attendees. Thanks to all and thanks to Arjan from MobileGamesBlog.com for mentioning it on his blog, too!

UPDATE: Mobile Unconference & Some Other Events

Tomorrow we will attend the Mobile Unconference in Rotterdam. We are really looking forward to the one day event. Some of the topics: Windows Phone 7 & Marketplace and mobile gaming communities - interesting stuff for us. We try to keep you updated through our blog or via Twitter (@pavingways).

There are also some other mobile related events coming up in the next weeks/months that might interest you:Are you aware of some other events? Please let us know!

HTML5/CSS3 Meetup April Recap (updated)

It has been a few days ago, but I still wanted to provide a little recap of our last HTML5/CSS3 meetup.
We were set up for eight people this time but only had a turnout of five. It was still a nice evening at Frollein in Sachsenhausen. Additional to great food there was some HTML5 with Modernizr presented by Jesse and a lot of Node.js. Modernizr is a tool you can use as a fallback mechanism for new HTML5 pages. You include the JavaScript file in your HTML5 page and it detects the browser’s compatibility for all sorts of new features. The tool adds classes for each supported HTML5 attribute to the document’s body so you can take care of these document parts with special CSS classes. Modernizr also creates a special JavaScript object to do things like: if (Modernizr.geolocation){ …do geolocation stuff … } - kinda neat. It would be great to have this as a jQuery plugin or even better within the jQuery.support feature.

Both Andreas and myself had prepared a WebSocket demo. My demo did not work, Andreas’ did, at least halfway… There was incoming data from Twitter’s brand new streaming API to Node.js. The WebSocket connection to Chrome did not really want to work completely that evening, but we could see #fail-tagged tweets streaming in on the console :) I can not really recall the context, but there were also talking about Strophe, a JavaScript XMPP library framework well worth looking into.
I don’t have access to Andreas’ presentation (see below), but I also created one, so here’s another introduction to Node.js:


We were thinking of getting a small HTML5/CSS3 project going within the meetup group, so everybody has something to work on until the next meetup - I still think this is a good idea, now if I could just come up with something useful…The next meetup will be around the end of May, stay tuned!

UPDATE: Andreas provided Links to his slides and the project itself, it’s called tweamer and it is available on GitHub. Here are the slides:


If you want to attend the HTML5/CSS3 Meetup in Frankfurt in May, please sign up here: http://bit.ly/aVEmCm

Happy Easter!


We wish all our readers an enjoyable and a wonderful Easter time!

Node.js is Important. An Introduction

Once in a while you come across a new technology and are just blown away by it. You feel that something like this should have been around much earlier and that it is (gonna be) a significant milestone, not just in your own live as a developer but in general.

The last time this happened to me was when I dug a bit deeper into a project called node.js or just “node” as the binary is called. In case you have not heard about this don’t worry. However, if you are a developer, especially if you are working with JavaScript, then you should be concerned and maybe check your news sources, because it is a couple of months old already and it is drawing a lot of attention lately! If you’re not a developer this might get a bit techy from here, but maybe you get something out of it after all…

What is node.js?


It’s actually not too easy to explain, but basically node.js is an:
It is written in C and JavaScript, it contains the V8 JavaScript engine, a CommonJS module system and it helps you to implement highly concurrent web servers by handling I/O very efficiently, namely in a non-blocking way. Support for TCP, DNS and HTTP is included and many HTTP features are supported that are important for Comet-style web applications - things like hanging requests.

Node.js itself is a program that will have to be compiled and installed on your machine. Then you can use JavaScript to write programs that use the API of node.js and that are executed through the node binary as simple as this: “node yourprogram.js”.
Due to the included V8 you have the complete JavaScript API available, it’s just that you are not running your JavaScript program inside of a browser context, but as a program within the node.js environment. Node extends the JS API by several things like access to the file system and such. All of this is what server-side JavaScript is all about.

What is Special about node.js?


There are other implementations for this kind of stuff, but what Ryan Dahl et al do differently with node.js is to use JavaScript as the main programming language and the strict paradigm of exclusively working with callbacks andnon-blocking I/O. This means that basically any function you are executing in a node.js program does work in the background after calling, executing a callback function once it is done. This enables the program itself to continue and not to block any resources while it is waiting for the function to finish whatever it does.

A Practical Example: The Web Server


Ok, this is a bit dry and mind-bending maybe, but it all makes a lot of sense: Think about thousands of internet users entering the URL of your website causing their web browsers to hit your web server at the same time (maybe they fire Ajax requests too). Each of these requests would cause a thread in your regular web server (= Apache) to spawn that executes a script (PHP maybe) which does DB queries and such before finally returning the response to the browser. Here we have 2 things to look at: memory usage and blocking I/O.

Each of these threads uses memory. Many threads use a lot of memory. Thousands of users would cause thousands of threads to use a lot of memory…you see where this is going…you will run out of memory soon and your page or service will not respond anymore.
Blocking I/O is the cause for that problem: each one of these threads does things like DB access which takes some time to finish. This is normal because the DB tables might be huge and queries might take long to find the result you are looking for.
Now the script on your web server would usually execute a DB query, then wait until it gets a result from the DB server and then continue. While the DB server fetches your data your whole script is blocked. It does not continue to run until the result has come back and it is using memory and other resources while waiting. If this happens several thousand times at once this blocks a lot of resources and your server goes into a memory dry spell.

If it would be possible to get rid of all these threads and to put them all into a big pool this would solve some memory issues. If it on top of that would be possible to continue doing other tasks while waiting for DB queries this would surely help performance to increase - and that’s what node.js does.

Event Loop to the Rescue


A node-based server will pool all incoming connections and the underlying node framework can do things like hanging these connections to a “waiting” state while allowing the server to continue working on creating the response. The event loop and the callback paradigm in node.js is used to execute a DB query, but not wait for a response blocking a lot of resources. Rather a callback is attached to the DB result and node.js goes on with other tasks (saving CPU cycles). For the browser on the other side this results simply in a “waiting for response” situation, same as for the threaded server.

So, whenever the result from the DB comes back, node.js is executing whatever callback function was attached to the querying function and once the request is ready it will get the related connection from the pool, end its “waiting” state and return it to the browser. This is causing way less memory usage and allows for much faster response times.

This is just a tiny bit of the whole story, so make sure you get into this!

But Why is this Important?


Well, Ajax and Comet-driven web applications are generating heavy load on web servers, especially if you look at chat applications or multiplayer browser games where there are many concurrent connections and small response times are essential. Here lays the strength of node.js.

In the past to me it felt like we had reached a time where the traditional way to implement our web servers would not fit to the demands that we had on the client-side during the last months. Comet and Ajax-Push is a big hack, HTML5 Web Sockets are knocking at our door and we want to do things like real time data streaming.

Node.js can fill this need. Sure, it takes some time of getting used to for developers that have been working with “traditional” Ajax paradigms for the past years. It also seems like we would walk into a time where regular websites and Ajax driven web applications would get their own servers. But it surely feels like we would finally have a toolkit which solves many of our newly developed needs and which brings the web as a whole a big step further. It might well be the best thing since sliced bread.

On top of that it is now possible to write a simple web server and basically all the server side logic in JavaScript, which is great if you are working with JavaScript on the client side as well.

To close this I can just encourage anybody working with Ajax or Comet or even just JavaScript in any way to look into node.js - it helped me to understand web server issues in more detail and I will be working with this and see where it goes. As it seems some others are working with this already too and even Simon Willison was excited after Ryan Dahl gave a good introduction to node.js at last year’s JSConf: