Blog
Articles, guides, and notes on software engineering.
Unix Command Notes
Master Unix commands including jq for JSON processing, lsof for monitoring, and nmap for network port analysis.
Recent Posts
Processes vs Threads: Key Differences Every Developer Should Know
Understand the key differences between processes and threads—memory isolation, context switching costs, and when to use multi-processing vs multi-threading in your code.
What is GraphQL
Understand GraphQL as a query language for APIs with flexible data selection, single endpoint, and type system advantages.
Starting Live Coding with Atom×TidalCycles×SuperCollider
Create music through live coding using Atom editor, TidalCycles language, Haskell functions, and SuperCollider sound synthesis engine.
Setting Up a Docker Environment on Sakura VPS
Step-by-step guide to installing Docker CE on Sakura VPS running CentOS. Covers yum repository setup, stable vs. edge channel configuration, and Docker CE installation commands.
Challenges Faced When Building an SPA
Fix SPA routing and resource path issues with nginx try_files configuration for single-page application development.
DI and Service Locator
Implement dependency injection patterns. Compare DI and Service Locator with constructor injection examples for loosely coupled code.
Symbolic Links vs Hard Links: Key Differences on Linux
Understand the difference between symbolic (soft) links and hard links on Linux. Learn about inodes, how each link type behaves on deletion, and practical use cases.
Getting Started with tmux
Discover tmux terminal multiplexer essentials with keybindings for sessions, windows, panes, and copy mode operations.
Revamping My Development Environment to be Vim-like
Streamlining development efficiency by integrating Vim and refreshing the development environment.
The UNIX Philosophy
The UNIX Philosophy
The N+1 Problem Explained: How to Detect and Fix It in Go/Rails
Learn what the N+1 query problem is, why it degrades application performance, how to detect it with query logs, and how to fix it with eager loading in Go and Rails.
OS Notes
Explore OS fundamentals including swap memory, page cache, buffer cache, slab cache, dentry/inode structures, hard links, and symbolic links.
Laws of Software Development
Master Postel's Law, Parkinson's Law, and Pareto Principle in software development for better architectural and design decisions.
What is Duck Typing? How Dynamic Type Checking Works in Python, Ruby, and Go
Learn what duck typing is, how structural typing enables flexible code, and how Python, Ruby, and Go each implement duck typing—with real code examples for each language.
Polymorphism Explained: How Object-Oriented Code Stays Flexible
Understand polymorphism in object-oriented programming—subtype, parametric, and ad-hoc polymorphism—with examples in Go, Java, and Python to show how each language applies it.
Learning Software Testing Techniques for the First Time
Learning Software Testing Techniques for the First Time
Road to Vimmer
Master vim navigation, editing, and text manipulation commands for efficient terminal-based text editing without GUI shortcuts.
Order Notation and How to Determine Algorithm Complexity
An overview of the basics of calculating algorithm performance using Big O notation and complexity.
HTTP and SSL/TLS
Understand how HTTPS works: TLS handshake after TCP, confidentiality/integrity/authenticity, the history from SSL vulnerabilities to TLS 1.2/1.3, and why universal HTTPS adoption happened.