Category: Software Engineering

The Dependency Inversion Principle

The dependency inversion principle(known as DIP from here on out) is one of the core tenants of the S.O.L.I.D principles and probably my favorite. This principle underlies so many of the design patterns we see in software and system design and as a result if you understand it then you begin to see systems all

Private/Public Key Cryptography

Lets dive into private/public key cryptography today. This is a simple concept that can seem a lot more complex than itreally is. 1. Symmetric cryptography This is the most simple form of cryptography to grasp. In this case we have one private key and it is shared by the server and the client. Lets say

two’s complement

I thought I’d do a quick write up on how to convert positive number to negative in two’s complement. This topic because it’s really simple and some sources make it more complicated that it should be. As you know, two’s complement is by far the most widely used binary scheme used by computers today. Its

How do software version numbers work?

OVERVIEW Software Version numbers are everywhere when we deal with software so its worth it to take a little time to understand their semantics when we start out. Lets take a look at two simple version numbers.   EXAMPLES 1.2.3 1.2.18   HOW TO READ VERSION NUMBERS Intuitively you might think that 1.2.3 is a