What is a Journal Table?
October 31, 2024Discover how journal tables track data changes in your database, enhancing auditing processes, maintaining data integrity, and enabling you to reconstruct historical data states.
Working with APIs
September 25, 2024This post describes what someone who is new to working with APIs should be aware of.
Python Custom Sorting
August 05, 2024On the surface, Custom Sorting in Python can be achieved primarily in two ways. However, if we look closer, we'll find out that both of these ways use the same thing.
Cloud Ingress Egress
June 26, 2024This post explores the entry (ingress) and exit (egress) flows of traffic in Cloud environments. There exists ambiguity where traffic could be either or neither.
gRPC Interceptor
May 12, 2024gRPC Interceptors are middleware that wrap your server or client. They're a great way to ensure that all of your gRPC servers and clients provide the same functionality without code repetition.
Linear vs Logistic Regression
April 07, 2024Linear and Logistic Regression are mathematical techniques that are used in the context of line of best fit of a cluster of data and binary classification, respectively, in various fields, including Machine Learning.
Authorization Middleware
March 17, 2024Authorization Middleware is code that sits at the very front of an application between the entrypoint and before any data is accessed.
What is Recursion?
March 16, 2024In computer science, Recursion is when a function calls itself. This process can repeat until the size of the call stack.
What is a Service Mesh?
March 15, 2024Service Meshes (e.g. Istio) solve security and scaling challenges that distributed systems like Kubernetes encounter once they reach a certain scale.
Minmax Tree
March 14, 2024A Minmax (a.k.a. Minimax) Tree is a tree data structure that is meant to represent a two-sided game where each row represents alternating choices between each side back-and-forth from the root.
A-Star Pathfinding
March 13, 2024A-Star (A*) is a pathfinding algorithm that is optimized from Dijkstra's algorithm. The difference is that it uses a heuristic to help decide which node to evaluate next.
DFS Backtracking
March 12, 2024DFS (Depth-First Search) Backtracking is a brute force method of solving optimization problems.
InOrder vs PreOrder vs PostOrder
March 11, 2024In-Order, Pre-Order, and Post-Order are the three primary DFS binary tree traversal methods.
Tail Latency
March 10, 2024When measuring the latency of anything, Tail Latencies typically refer to the data points at the slow end of a distribution of latencies.
TLS 1.2 Vulnerability
March 09, 2024TLS 1.2 has several vulnerabilities that have been addressed in 1.3.
Maximum Flow Algorithm
March 08, 2024Maximum Flow Algorithms are intended to solve the problem of how to optimally move something with discrete quantities through a network of connected nodes with fixed capacities.
Protobuf Encoding
March 07, 2024Protocol Buffers (a.k.a. Protobufs) are the preferred messaging construct to use for communication over gRPC. Data is encoded in a highly efficient format that is discussed in this blog post.
Framework vs Library vs Package
March 06, 2024Framework and Library have a distinct meaning whereas Package is generic. In this blog post, we explore the possible meanings of Package alongside the distinct meanings of Framework and Library.
What are Distributed Systems?
March 05, 2024In the typical context, a Distributed System is a network of services that work together as a single application. However, the entire internet can also be considered a Distributed System.
Dynamic Programming Matrix
March 04, 2024More correctly referred to as Tabulation, it is an algorithmic method of Dynamic Programming for breaking down a problem into its sub-problems.
What is DevOps?
March 03, 2024DevOps is a model where development and operations teams are one, but it has another meaning as well (discussed at the end of this blog post).
What is Cloud Migration?
March 02, 2024Cloud Migration is the process of moving digital resources to a Cloud Platform (the destination). The source of this migration decides how we categorize the process.
What is Clean Code?
March 01, 2024The definition of clean code can be very subjective on the margins, but very obvious from an absolute perspective.
Git vs GitHub
February 29, 2024Git and GitHub are completely different things. Git is version control software and GitHub is the largest host of source code that uses some form of version control.
Agile vs Waterfall
February 28, 2024Agile and Waterfall are popular alternatives to the organization of tasks in project management.
What is Refactoring?
February 27, 2024Refactoring is the process of updating code without changing its API or underlying functionality.
Edge Computing
February 26, 2024Edge Computing can be seen as a natural and ongoing expansion of the location of processing from data centers... to you.
Generative Coding
February 25, 2024Generative Coding breaks new ground in the fight against information asymmetry, helping to increase productivity by providing an advanced form of autocomplete.
SQL vs NoSQL
February 24, 2024SQL vs NoSQL is a very broad choice that branches out into more narrow choices. This blog post navigates this tree of choices.
Strategy vs Factory Pattern
February 23, 2024The Strategy and Factory design patterns are distinct and intended for different use cases. One is intended to polymorphically alter behavior of an existing object, while the other is intended for variations in object creation. Is there any overlap?
Symmetric vs Asymmetric Encryption
February 22, 2024Encryption techniques can be broadly categorized as either symmetric or asymmetric. Each has a specific use case, but they are often used together.
Load vs Stress Testing
February 21, 2024Load Testing and Stress Testing both fall under the umbrella of Performance Testing. Their primary objectives are slightly different.
Concurrency vs Parallelism
February 20, 2024Concurrency and Parallelism are similar but distinct concepts. The former is possible with a single core while the latter is not.
CockroachDB vs Postgres
February 19, 2024CockroachDB is a distributed database that uses the same SQL dialect as Postgres. The primary difference between them is the fact that a CockroachDB cluster's write nodes can be distributed around the world (rather than just its read nodes).
OOP vs Functional
February 18, 2024Object-Oriented Programming and Functional Programming are both foundational paradigms that every developer should know.
Functional vs Procedural
February 17, 2024Functional and Procedural are among the earliest and most integral programming paradigms. It's nearly impossible to write code without using these paradigms to some extent.
gRPC vs Kafka
February 16, 2024When comparing gRPC and Kafka, we're likely comparing gRPC's streaming feature rather than its unary RPC.
gRPC vs REST
February 15, 2024gRPC and REST are among the most prominent protocols for web communication. Their use cases are what set them apart.
Software.Land's Alignment with Society
February 14, 2024Other blog posts have touched on the goals and mission of Software.Land at various levels of scope. This blog post speaks to the socioeconomic alignment.
What is IO?
February 13, 2024I/O (or IO) stands for Input / Output, and it can be interpreted in two contexts.
Process vs Thread
February 12, 2024A thread is a series of instructions in a machine that was spawned by a process. A process is an instance of an application.
What is IoT?
February 11, 2024Internet of Things are considered to be embedded devices that have internet connectivity capabilities (directly or indirectly).
OLTP vs OLAP
February 10, 2024OLTP (Online Transaction Processing) and OLAP (Online Analytical Processing) are two different architectural designs for relational databases that serve very different purposes.
Distributed Cloud
February 09, 2024Distributed Cloud is not a term that is commonly used in the industry. However, it does point to a set of Cloud services that are distributed in nature.
Metrics Monitoring
February 08, 2024Metrics Monitoring is not a standard term used in the industry, but it does point to the greater domain of Observability.
CI/CD
February 07, 2024CI/CD (Continuous Integration / Continuous Development) is the ongoing cycle of developing and releasing software in a scalable manner. CI and CD can be broken down further into smaller pieces.
Bearer Token
February 06, 2024A Bearer Token is a long-lived token that belongs to an authorized entity following authentication.
SAML vs OAuth
February 05, 2024SAML and OAuth are orthogonal concepts. SAML is designed to be used as both Authentication and Authorization. OAuth is designed to be used as Authorization, but can be used as Authentication as a hack (this is not desirable). In this blog post, we explore.
Class vs Interface
February 04, 2024Classes are the hallmark of Object-Oriented Programming. On the other hand, Interfaces exist in languages that don't support OOP (e.g. Golang).
Dependency Graph
February 03, 2024Dependency Graphs are networks of relationships between dependencies in an application. These relationships are created when one package is imported into another.
Build Time
February 02, 2024Build Time is a window of time in the Application Development and Release Lifecycle. In this post, we look at its steps.
Object
February 01, 2024One of the most fundamental building blocks of programming languages and the foundation of Object-Oriented Programming, Objects are explored in this blog post, inside and outside the context of OOP.
Cloud Infrastructure
January 31, 2024Cloud Infrastructure can be thought of as building blocks, puzzle pieces, or primitives. In this blog post, we lightly explore.
App Sec
January 30, 2024Application Security (App Sec) is a very broad topic with many sub-topics. In this blog post, we make a cursory tour.
Zero-Trust Security
January 29, 2024Zero-Trust Security is a very misleading term as it exists today. It would be better known as Minimal-Trust Security. In this blog post, we explain why.
Information Asymmetry
January 28, 2024Information Asymmetry exists all around us. Everyone knows something that others don't. This phenomenon exists with groups as well, and this blog post examines the impacts.
What is Docker?
January 27, 2024Docker did not introduce the concept of containerization, but significantly popularized and simplified the concept. It is now the most popular containerization platform.
What is VPN?
December 31, 2023VPNs (Virtual Private Networks) are sets of servers that route (a.k.a. tunnel) internet traffic from the user to the user's web destination.
TCP vs UDP
December 30, 2023TCP and UDP are complete opposite transport protocols in terms of both delivery accuracy and speed. This post dives into the differences.
Request Response
December 29, 2023The classic communication paradigm between a client and server.
Asynchronous vs Synchronous
December 26, 2023All communication can be categorized as either Asynchronous or Synchronous. Some can even be categorized as both, where it depends on whether we're looking at it from a high or low-level perspective.
Event Driven Architecture
December 22, 2023Event-driven systems are typically asynchronous and decoupled in nature, and they have some advantages over their synchronous request/response counterparts.
Declarative vs Imperative
December 16, 2023In the context of programming, 'declarative' and 'imperative' are words used to describe opposite ends of a programming paradigm that we dive into in this post.
Vertical vs Horizontal Scaling
November 19, 2023Scaling is the process of growing or shrinking capacity. It primarily happens in two directions: horizontally or vertically. There are different flavors which we explore in this post.
Sharding
October 30, 2023The concept of vertical vs horizontal scaling doesn't only exist with application servers. It exists with database servers as well, and we explore that in this post.
Rate Limiting
October 15, 2023Rate-limiting serves as an important mechanism in more than just distributed computing, but that is the focus of this blog post.
Retries (Retry Patterns)
September 17, 2023Retries are exactly what it sounds like: retrying an operation after a failure. This blog post is a short intro into the concept.
RBAC (Role Based Access Control)
August 31, 2023Role-Based Access Control is a common mechanism for assigning a set of privileges to users of an application via roles.
Staying Ahead of the AI Revolution
July 22, 2023People adapted to the earlier industrial revolutions. The tools for adapting to the AI Revolution are available at our fingertips.
Encapsulation
June 30, 2023Encapsulation is a concept that exists at all levels of systems -- from a global scope down to the scope of application constructs. It exists in both physical and digital contexts. This post breaks it down.
What is Code?
June 04, 2023Code is everywhere. You're made of it. It exists in biology, literature, and certainly computer science.
Microservices vs Monolithic
May 22, 2023There exists a spectrum for the granularity of services in a distributed system from nano-services to a single monolith. In this post, we explore the trade-offs.
What is OOP (Object-Oriented Programming)?
April 29, 2023Also known as Object-Oriented Design, it is a paradigm for writing code where data and behavior are encapsulated by objects that leverage polymorphism.
What is a Data Structure?
March 26, 2023There's something special about data structures. Everything in the world can be modeled by some type or combination of data structures. It really makes you wonder.
What is Serverless?
March 05, 2023The term "Serverless" is actually a misnomer. Your code definitely is running on servers, but their management is so removed from the developer, that it feels "Serverless".
What is Kubernetes?
February 21, 2023Kubernetes is a container orchestration system that has exploded in popularity over the past few years. This trend is unlikely to stop.
What is a Container?
February 06, 2023The term 'container' has one prevalent usage in the context of containerized environments, which are similar to virtual machines. There is a more generic, but seldom addressed, use of the term that we also explore.
What is the Cloud?
January 30, 2023'The Cloud' is a very common term used today that may invoke imagery that is not based in reality for many people. This post aims to clarify its true meaning.
Software Engineer vs Software Developer
January 21, 2023This is a fairly innocuous question on the surface, but once you dive deeper, it becomes complicated. Is there no difference between the two terms? Is the difference in the scope of work? Or, is it about the credentials?
Testing in Software Engineering
January 15, 2023The number of different testing methodologies in software is endless. The timing of introducing new forms of testing is difficult to get right. This post attempts to provide a birds-eye view on these topics.
Static vs Dynamic Websites
January 03, 2023Historically, websites are dynamic where the HTML is rendered on a server, even if the content is static. With static websites, that content can be rendered beforehand and delivered to the user all at once on page load.
About this Blog
November 06, 2022This post describes Software.Land's mission and roadmap.
REST API vs GraphQL
October 05, 2022GraphQL and REST APIs are two of the most popular network APIs and in this blog post, we'll explore the differences.
Throughput vs Latency
July 24, 2022Low latency is easy to achieve if high throughput is not a requirement. Similarly, high throughput is easy to achieve if low latency is not a requirement. If both are a requirement, then complexity must increase to alleviate inherent structural bottlenecks.
Why Learn to Code?
May 08, 2022In this post, we explore different considerations when asking if learning to code is an effective use of time.
High-Level vs Low-Level
March 29, 2022What does it mean when someone is describing something at a high-level vs a low-level? Let's explore it in the context of software.
Which Programming Language to Start?
February 22, 2022A common first question when someone dips their toes into the world of software is 'which programming language should I try to learn first?'
Previous Page Token for Cursor Pagination
December 06, 2021We dive into previous page tokens for Cursor Pagination and examine their time complexity. We also touch on why the intuitive approach doesn't work.
Best Learn to Code Platforms
June 01, 2020This post breaks down the differences between the top 'learn to code' platforms based on 6 categories.
CodeCademy Review
May 27, 2020Review of CodeCademy based on 6 comparison categories: cost, teacher feedback, range of tools, computer science, real-world projects, and beginner environments.
Coursera Review
May 27, 2020Review of Coursera based on 6 comparison categories: cost, teacher feedback, range of difficulties, range of tools, computer science, real-world projects, and beginner environments.
edX Review
May 27, 2020Review of edX based on 6 comparison categories: cost, teacher feedback, range of tools, computer science, real-world projects, and beginner environments.
freeCodeCamp Review
May 27, 2020Review of freeCodeCamp based on 6 comparison categories: cost, teacher feedback, range of tools, computer science, real-world projects, and beginner environments.
Khan Academy Review
May 27, 2020Review of Khan Academy based on 6 comparison categories: cost, teacher feedback, range of tools, computer science, real-world projects, and beginner environments.
LinkedIn Learning Review
May 27, 2020Review of LinkedIn Learning based on 6 comparison categories: cost, teacher feedback, range of tools, computer science, real-world projects, and beginner environments.
PluralSight Review
May 27, 2020Review of PluralSight based on 6 comparison categories: cost, teacher feedback, range of tools, computer science, real-world projects, and beginner environments.
Treehouse Review
May 27, 2020Review of Treehouse based on 6 comparison categories: cost, teacher feedback, range of tools, computer science, real-world projects, and beginner environments.
Udacity Review
May 27, 2020Review of Udacity based on 6 comparison categories: cost, teacher feedback, range of tools, computer science, real-world projects, and beginner environments.
Udemy Review
May 27, 2020Review of Udemy based on 6 comparison categories: cost, teacher feedback, range of tools, computer science, real-world projects, and beginner environments.
What is an Interface?
March 05, 2020Software (and all technology) is just tools connected to other tools. Interfaces are the points of connection and they come in different shapes and sizes.
Glossary
February 10, 2020Concise definitions of common terms in software. This post is intended as reference.
What is an API?
February 10, 2020APIs can be found all over software. This post describes APIs and presents examples.
Author
Sam Malayek works in Vancouver, using this space to fill in a few gaps. Opinions are his own.