Back to blog

Rendr, Lazo, Flux, Backbone

2014-10-06 - Posted in Uncategorized Posted by:

Many people have opinions on node. Its not the pretties language in the world. Callback hell can create complexity out of the simplest use-cases. But it is seriously going strong.

Sometimes I’m wondering if we will have another javascript in the browser. Crockford said that we need to have otherwise we did a pretty terrible job if the web is forever gonna live on the foundation of javascript. I do agree that it has its serious flaws. What would be great is if the continuum can continue to grow in a back compatible way but redefining the code of javascript to solve the real problems we have in the browser.

For instance to let a event loop bleed up to the programming language makes no sense at all, just take a look at how well erlang, golang, rust ect all solves it by mentally allowing users to use sequential concepts but allowing the problem to be pushed down to the scheduler / language details.

The most important thing for a programming language to have a successful way of handling a lot of IO belongs to the semantics of the language / runtime. There should not be a way to sync block a thread / co routine / actor ect. If that is not enforce by the language and is rather a library, there may come problems as in the Python ecosystem where not all libraries are able to be used with the GEvent because it was written in a blocking way.

Any how enough with the thoughts. Last week we spent a great deal improve our use-cases for the web tier. When it comes to reactive updates in a ui. How to handle performant reuses from our optimised backend server and create models on the fly in Backbone.

Rinat did a great work on the chat part in HPC2 and we will need to polish it with a few last concepts when it comes transient notifications as such typing notifications, if messages got read ect.

We all enjoy coming up form the rest fest to UI and getting alignment between the backend and the frontend. Pieter and I did some magic to enhance the experience within Lazo to get reusable components and model instances created.

It is funny how the web frameworks on nodejs land now starts to do what AirBNB calls isomorphic javascript. That is js which doesn’t depend on its context let it be node or browser. It allows for greater reuse of libraries.

We always saw a great benefit by this, to allow templates to be reused between server and client, same with routes and validation ect. We started out with rendr the project from AirBnB which is based on backbone and lets you render it on the server which then also serialises the data on the response which allows the client to hook up all event handlers within the particular view. This allows the server to render a fast response and then build a SPA on top of it.

Since then we’ve been working with Lazo which is a very similar framework from Wallmart Labs. And I must say that their documentations totally rocks!

Lately I’ve been looking into the Flux architecture and the stuff that comes out from Facebook (ReactJS). ReactJS solves the critical rendering path by doing diffs between old and current snapshot and turns it into imperative updates instead of rendering large portions of the screen (which would cause some serious reflows / repaints). And I must say since Yahoo released their Dispatchr, Fetchr and Routr I think this will kick of pretty seriously.

This week will launch like button for the presentation text, various fixes to the mobile page and some minor updates across HPC1. The project never stops we just keep adding awesomeness to it! There is a few larger things we must look into in the short period of time and thats tuning the load balancer HAProxy since it seems to have some leakage when it comes to keep-alives.

by Tomas Roos

Leave a Reply

Your email address will not be published. Required fields are marked *