Blog
Articles, guides, and notes on software engineering.
Starting Live Coding with Atom×TidalCycles×SuperCollider
Create music through live coding using Atom editor, TidalCycles language, Haskell functions, and SuperCollider sound synthesis engine.
Recent Posts
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.
Stateless and Stateful
Learn the difference between stateless and stateful protocols. HTTP, UDP, and IP are stateless; FTP, TCP, and SMTP are stateful. Covers session-based state management implications.
Setting Up a Laravel Environment with Laravel Homestead
Set up Laravel Homestead development environment using Vagrant and VirtualBox with SSH key configuration.
Types of Test Cases and Identification
A concise summary of basic types of test cases and how to identify them.