-
Node.js

Containerize a Node.js App with Docker and Deploy with GitHub Actions
Building an application is only one part of the software development process. Once an application is ready, it needs to…
Read More » -
Core Java

Diagrams from Java
Understanding the structure of a Java application becomes more challenging as the codebase grows. Generating diagrams from source code helps…
Read More » -
Software Development

Go’s Implicit Interface Satisfaction: Structural Typing Without a Keyword
A type satisfies a Go interface just by having the right methods. No declaration, no keyword, no explicit contract. That’s…
Read More » -
JavaScript

The Abstract Equality Algorithm: What == Actually Does in JavaScript
Not a list of quirks to memorize, a walk through the specification steps that produce them. Most explanations of JavaScript’s == operator…
Read More » -
Software Development

Rust’s Borrow Checker as Applied Type Theory
Ownership and borrowing are usually pitched as “smart pointers with extra steps.” They’re actually a decades-old branch of mathematics, put…
Read More » -
Core Java

Tail Call Optimization: Why the JVM Doesn’t Do It
A bytecode-level look at why recursive calls can’t quietly collapse their stack frames on the JVM, and why Scheme and…
Read More »






