React.js fundamentals

Posted by & filed under Javascript, Work.

Yesterday I did my first ever technical presentation at Code District meetup on fundamentals of React.js library, which my team have been using in production for about 14 months now. Below is the slideshow for my presentation: I appreciate Phillip North for inviting me to speak at this meetup.

Building React.js with Grunt

Posted by & filed under Javascript, Work.

About two months ago our Core team at Teradek has switched front-end to a single-page application on a new stack. Previous stack included server-side templates, Require.js, Underscore, Backbone, Handlebars for JavaScript and HTML, and Compass for CSS. Current stack is a little different: one static HTML file, Require.js, Lodash, Backbone + Chaplin + React for JS and HTML, and Stylus… Read more »

4.5 months later

Posted by & filed under Life, Work.

It’s been 4.5 months since my last post — some of the busiest time ever. Now, after 3 trips to Eastern Europe, Teradek R&D office in Odessa, Ukraine has become a reality, counting 1 UI/UX designer and 4 software engineers. It’s been quite a learning experience in itself, and I will share about it in latter… Read more »

Asynchronous mindset

Posted by & filed under Work.

It so happened that the system I am currently working on has a lot of parts that communicate in asynchronous manner. In part it’s a result of technology choice, in part — of environment in which system operates. All projects I’ve worked on before have been synchronous and fairly straightforward: to each request we always… Read more »

Dispatcher

Posted by & filed under Javascript, Node.js, Work.

In our application architecture we have multiple servers that handle different types of connections, namely: Requests from web clients (www and REST) over HTTPS Socket.io connections from web clients over HTTPS Socket.io connections from devices TCP connections from proxy servers for devices over TLS Above servers are spawned as processes by a manager app, and… Read more »

Adding permissions to models in my ODM #2

Posted by & filed under Javascript, Node.js, Work.

I’ve spent about a day working on adding permissions to the model. Here are intermediary conclusions: We need to pass user session to model’s permission checker method is_allowed() in order to know session user roles and other data (e.g. company ID). We need to check permissions and cache results at the same time we initialize model… Read more »

Adding permissions to models in my ODM #1

Posted by & filed under Javascript, Node.js, Work.

I just started working on adding permissions to models in my WIP Prometheus ODM. The idea is that I, a developer, want to describe granular access rules to resources. I am going to deal with the most common access types: CRUD (Create, Read, Update, Destroy) + Transfer. In a typical system there also most generic role… Read more »

Scaling Socket.io with Node.js cluster: unresolved

Posted by & filed under Node.js, Work.

Earlier this week I’ve spent some time on a problem of scaling Socket.io in a Node.js cluster. Essence of the problem is, when you run multiple Node app threads (workers) on a server, or multiple servers, socket.io clients connections are routed by cluster in a random round-robin manner, and handshaken / authorized io client requests… Read more »

Node.js ORM: work in progress

Posted by & filed under Javascript, Node.js, Work.

This is about a WIP project of making an ORM for Node.js with pluggable adapters, with code name “Prometheus”: https://github.com/shubik/prometheus The idea was to make a simple ORM with a fairly standard API (get, set, save, destroy, etc.) with adapters for different databases which pretty much offer CRUD and a couple extra convenience methods. We… Read more »