Refactoring JSON to FlatBuffers

Alex PuschinskyProduct Manager, technical1 Comment

Refactoring JSON to FlatBuffers

Data serialization is a very common process in web applications. So common that no one gives it a second thought. You just pull data from the DB, and your server and client frameworks just handle this thing for you. The server serializes the data into JSON, and the client parses it to JS object. This flow is simple and natural but, as everything, when taken to the extreme start to show scaling issues. What is an ‘extreme’ for data serialization? A lot of data. Serializing and deseriazling tens of thousands … Read More

The Ten Years Bug: Our Experience Solving a Bug That Won’t Go Away

Alex Puschinskytechnical2 Comments

Solving a Bug That Won't Go Away

Developers often make mistakes. Bugs go unnoticed, uncaught by unit tests, overlooked by QA and reach production. Sometimes it’s just a minor issue, sometimes it’s major bug that costs you lost data and users’ confidence. Whatever it is, the issue gets fixed. You patch the bug, mend corrupt data and everything gets back on track. Surely there isn’t a bug that is unfixable right? Well, for a while, it seemed like we experienced an unfixable bug. Here’s our story of how we found it, and how we got back on … Read More

Jaco Labs: The Most Ridiculous Monkey Patches We’ve Seen

Danni FriedlandBehind The Scenes, technical0 Comments

“A monkey patch is a way for a program to extend or modify supporting system software locally. The term monkey patch seems to have come from an earlier term, guerrilla patch, which referred to changing code sneakily – and possibly incompatibly with other such patches (Wikipedia)” As a third party Javascript software provider, our code runs in the Wild Wide Web. We have to support sites that try to support IE6, shady WordPress themes, sites that were built in Dreamweaver and many other horrors as such.

Jaco Labs: NodeJS + Docker => The Missing Manual

Danni FriedlandBehind The Scenes, docker, nodejs, technical4 Comments

Preface When we started Jaco we set up a goal to be able to handle massive amounts of data (for a startup). To do that, we realized our system will need to support hundreds of thousands of events per second. As we started receiving more traffic, splitting up components into different parts started to make more sense as it provided us with an easier way to reason about code and scale different parts of the application depending on specific load.