Blog

Articles, guides, and notes on software engineering.

Unix Command Notes
Operating Systems 2018-07-07

Unix Command Notes

Master Unix commands including jq for JSON processing, lsof for monitoring, and nmap for network port analysis.

#unix commands#jq#tee

Recent Posts

Processes vs Threads: Key Differences Every Developer Should Know
Operating Systems 2018-06-25

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.

#OS#Thread#Process#Stack#Heap
What is GraphQL
Application 2018-06-14

What is GraphQL

Understand GraphQL as a query language for APIs with flexible data selection, single endpoint, and type system advantages.

#API#HTTP#REST#GraphQL
Starting Live Coding with Atom×TidalCycles×SuperCollider
Application 2018-06-11

Starting Live Coding with Atom×TidalCycles×SuperCollider

Create music through live coding using Atom editor, TidalCycles language, Haskell functions, and SuperCollider sound synthesis engine.

#Atom#Git#Haskell#homebrew#tidalcycles
Setting Up a Docker Environment on Sakura VPS
Infrastructure 2018-06-09

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.

#Docker#Sakura VPS
Challenges Faced When Building an SPA
Application 2018-06-06

Challenges Faced When Building an SPA

Fix SPA routing and resource path issues with nginx try_files configuration for single-page application development.

#Nginx#SPA
DI and Service Locator
Application 2018-06-05

DI and Service Locator

Implement dependency injection patterns. Compare DI and Service Locator with constructor injection examples for loosely coupled code.

#DI#Service Locator#Design Pattern
Symbolic Links vs Hard Links: Key Differences on Linux
Operating Systems 2018-05-24

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.

#Symbolic Links#Hard Links
Getting Started with tmux
Tools 2018-05-22

Getting Started with tmux

Discover tmux terminal multiplexer essentials with keybindings for sessions, windows, panes, and copy mode operations.

#tmux
Revamping My Development Environment to be Vim-like
Tools 2018-05-22

Revamping My Development Environment to be Vim-like

Streamlining development efficiency by integrating Vim and refreshing the development environment.

#tmux#vim#Atom#iTerm
The UNIX Philosophy
Operating Systems 2018-05-18

The UNIX Philosophy

The UNIX Philosophy

#UNIX#Book Review
The N+1 Problem Explained: How to Detect and Fix It in Go/Rails
Database 2018-05-12

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.

#N+1
OS Notes
Operating Systems 2018-05-11

OS Notes

Explore OS fundamentals including swap memory, page cache, buffer cache, slab cache, dentry/inode structures, hard links, and symbolic links.

#OS
Laws of Software Development
Application 2018-05-07

Laws of Software Development

Master Postel's Law, Parkinson's Law, and Pareto Principle in software development for better architectural and design decisions.

#Software Development
What is Duck Typing? How Dynamic Type Checking Works in Python, Ruby, and Go
Application 2018-05-07

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.

#Duck Typing
Polymorphism Explained: How Object-Oriented Code Stays Flexible
Application 2018-05-07

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.

#Polymorphism
Learning Software Testing Techniques for the First Time
Testing 2018-05-04

Learning Software Testing Techniques for the First Time

Learning Software Testing Techniques for the First Time

#Book Review
Road to Vimmer
Tools 2018-04-22

Road to Vimmer

Master vim navigation, editing, and text manipulation commands for efficient terminal-based text editing without GUI shortcuts.

#vim#Editor
Order Notation and How to Determine Algorithm Complexity
Algorithms and Data Structures 2018-04-18

Order Notation and How to Determine Algorithm Complexity

An overview of the basics of calculating algorithm performance using Big O notation and complexity.

#Big O Notation
HTTP and SSL/TLS
Network 2018-04-18

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.

#HTTP#HTTPS#SSL#TLS