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....

Dec 14, 2021 · 3 min · Milad Irannejad

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....

Aug 11, 2020 · 2 min · Milad Irannejad

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....

Mar 26, 2020 · 3 min · Milad Irannejad

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....

Mar 26, 2020 · 2 min · Milad Irannejad

Multi-Tenancy in Microservice Architecture

TL;DR Microservices architecture encompasses a few services to thousands of services that communicate with each other through APIs. Microservices should NOT introduce any breaking changes to their APIs. Every change in one microservice should be tested against other microservices that rely on it. There are two approaches for integration testing in a microservices architecture: Replica Environments (Parallel Testing) Creating a copy of the production environment for handling test traffic (integration or staging environment)....

Mar 23, 2020 · 4 min · Milad Irannejad