I am software engineer passionate about building highly available, scalable, and autonomous software platforms.
Code Review Guidelines
TL;DR Seek to understand the context of the change (what, why, and how). Seek to understand the author’s perspective. Check out the branch and test the changes locally on your own. Consider using the Conventional Commenting style to better convey your intent. Try to be thorough in your reviews to reduce the number of iterations. Ensure the author is clear on what is required from them to do. Communicate which ideas you feel strongly about and which you don’t....
What is Nix?
TL;DR Nix is a purely functional package manager. It treats packages like values in purely functional programming languages. Packages are built by functions that do not have side-effects, and they never change after they have been built. Concepts Everything on your computer implicitly depends on a whole bunch of other things on your computer. Your computer is trusted to have acceptable versions of acceptable libraries in acceptable places. Nix removes these assumptions and makes the whole graph explicit....
What is a Rules Engine?
TL;DR A Rule is a set of conditions triggering a set of actions (if <conditions> then <action>). A domain expert models the domain knowledge (buisness rules) by defining the set of all the rules. Rules are usually defined using a domain-specific lanaguage also known as DSL. Using these sets of rules, we can build an expert system that can make decisions on behalf of domain experts. A rules engine is in the core of an expert system....
Stream Processing
TL;DR Stream Processing is a big data paradigm. In Batch Processing, We need to have all data stored ahead of time. We process data in batches. We aggregate the results across all batches at the end. Batch processing tries to process all the data at once. In Stream Processing, Data come as a never-ending continuous stream of events. Stream processing naturally fits with time series data. Data are processed in real-time and we can respond to the events faster....
OAuth 2.0 and OpenID Connect
TL;DR OAuth 2.0 OAuth 2.0 is used for authorization. Terminology: Roles: Client: the application that wants to access the data. Confidential Clients: the clients with the ability to maintain the confidentiality of the client_secret. Public Clients: the clients that cannot maintain the confidentiality of the client_secret. Resource Owner: the user who owns the data. Resource Server: the system that authorizes access to the data. Authorization Server: the system which has the data that the client wants to access....