We are actively using open source software to implement final solutions for our customers. This is not the way to save on something, in fact some commercial solutions might cost less on first look. This is a way to implement a future proof product that is guaranteed for future maintenance. And of course nowadays open source is also the key solution for security (well, when used right).
We do believe that common and widely used solutions should be free and open source. As it is known, free does not mean something will come without money. In some cases it might be worth it to pay money for support, maintenance and adaptations. We prefer to make our own contributions to open source communities. This typically happens in the form of finding, submitting and in some cases fixing of bugs. Or adding new functionality. However, what we are mostly proud about, is full projects that we contributed to the community.
Initially the module was designed to provide a set of handy functions to deal with thrown errors, callbacks and nodejs alike error passing (first function argument). The goal was to make code more stable, readable and avoid some routine calls. Idea is inspired by the Step library which catches thrown errors and converts them into callback function calls. Later was library was extended with full set of Async(js) library but with speed improvements and safe(js) error handling out of the box
We are developers. We see a lot of benefits from using error reporting and app monitoring software. We tried to use many tools and nothing satisfied us. We tried to improve some of them but in the end we built our own. Everybody does the same ;). Tinelic is Node.JS application which works as backend for application and error reporting agents and as GUI. In order to simplify things we didn't do any complex data processing and fully relied on MongoDB scalability. It gives us flexibility and enough capacity for middle sized apps. For data collection Tinelic uses following agents:
Library was created with a single goal - to provide reliable and lightweight distributed EventEmitter implementation. EventEmitter is a conceptual Node.JS interface for distributing events. Reliable for us means that an application should be able to consist of dozens of processes running hooks and handle millions of messages a day without issues, high CPU usage and high memory consumption.
Very soon network latency might not be an issue anymore. However as of now executing of functions (REST calls) are suffering from network latency. This is especially concerning when functions can not be executed in parallel and have dependency on each other. We've made multiple attempts to solve this problem taking different approaches like preapproved or signed scripts pushed from client to server. Or "flexible" data retrieval approaches like graphql (which actually nailed down to available implementation and are more exploration friendly rather than flexible). Or use of limited scripting using Lua or Lisp. Primary challenge here is to provide flexible yet secure functionality which will also be safe to execute in server context in terms of resource use.