Reactive Manifesto

Reactive Manifesto

The Reactive Manifesto describes how to design and architect Reactive systems according to your needs.Systems built as Reactive Systems are more Reliable, flexible, loosely coupled, scalable and resilient. This makes them easier to develop and amenable to change. Reactive systems are more tolerant of failure and when failure does occur, they meet it with elegance rather than disaster.

September 9, 2018 · (updated December 5, 2023) · 6 min · Pradeep Loganathan

Non Static class with Static methods Vs Static class

During a design session a few folks in my team had questions on using a static class vs a class with static methods. We hit upon this when designing utility classes and extension methods.During the course of this discussion some of us were surprised about what I felt was basic knowledge and I was also caught out on a few which led me to documenting this down below. Static Class Marking a class as static means that a compile time check will be conducted to ensure that all members of the class are static. Since the CLR does not have a notion of static, marking a class as static translates it to an abstract sealed class. ( conversly you cannot mark a static class as abstract) Static classes always inhert from Object and you cannot have it derive from another class. You cannot inherit from a static class. Static classes cannot implement an interface. You cannot obviously instantiate a static class. It cannot have constructors and the compiler also does not create a default parameterless constructor. Defining extensions in C# requires us to implement the static extension methods in a static class. There is a minor performance gain to using static methods as documented in this code analysis performance tip. The performance gain is due to the fact that instance methods always use the this instance pointer as the first parameter which is a small overhead. Instance methods also implement the callvirt instruction in IL which also leads to a very small overhead. Non Static Class A non-static class can have static members. ( both methods and fields ). You can create an instance of a Non static class with static methods. Factory pattern is an example of a Non Static class implementing a static method to control object instatiation. Microsoft docs has an article on this topic here . ...

October 25, 2017 · (updated January 16, 2022) · 2 min · Pradeep Loganathan
Consensus Algorithms

Consensus algorithms

Consensus is one of the most important and fundamental problems in distributed computing. Simply put, the goal of consensus is to get several nodes to agree on something. It is a distributed computing concept that is used to provide a means of agreeing to a single version of truth by all peers on the distributed network.

July 12, 2017 · (updated February 5, 2024) · 9 min · Pradeep Loganathan

Merkle Trees

A Merkle tree, named for its inventor, Ralph Merkle, is also known as a “hash tree". It’s a data structure represented as a binary tree, and it’s useful because it summarizes in short form the data in a larger data set. In a hash tree, the leaves are the data blocks (typically files on a filesystem) to be summarized. Every parent node in the tree is a hash of its direct child node, which tightly compacts the summary. ...

July 12, 2017 · (updated January 16, 2022) · 3 min · Pradeep Loganathan
Hexagonal architectures

Hexagonal Architectures

Hexagonal architecture aims to decouple business logic from other parts of the component, especially the persistence, eventing and services layers. A component, built on the ports and adapters pattern, exposes a set of ports to which one or more adapters can be added as necessary.

July 10, 2017 · (updated February 2, 2024) · 4 min · Pradeep Loganathan

Handling common input validation - Guard.cs

A fairly simple but common task across all application code that I have written is simple validation of parameters and inputs. Everybody has thier own way of handling this and here is mine. Can I do it better? You Bet. View this gist on GitHub

October 25, 2016 · (updated January 16, 2022) · 1 min · Pradeep Loganathan
Representational State Transfer - REST

Demystifying REST: How API-First Design is Redefining Web Interactions

Rest is a client server communication model which is stateless, resource based, and Idempotent.

September 18, 2016 · (updated February 9, 2024) · 8 min · Pradeep Loganathan