Blog

Articles, guides, and notes on software engineering.

Learning Software Structure and Design from Clean Architecture Experts
Architecture 2018-08-01

Learning Software Structure and Design from Clean Architecture Experts

A review of Clean Architecture. Rather than giving a strict definition, it describes the traits and rules of a design that can be called clean. It frames the goal of software architecture as minimizing the people needed to build and maintain a system, explaining dependency inversion through polymorphism and independent deployability and developability.

#Clean Architecture#Book Review

Recent Posts

ER Diagram Relationship Types: Dependent, Independent, and Many-to-Many
Database 2018-07-31

ER Diagram Relationship Types: Dependent, Independent, and Many-to-Many

Understand the three types of ER diagram relationships: dependent (parent-child, solid line), independent (dotted line), and many-to-many. Includes SQL table design examples for each.

#ER
How to Read and Set Linux Permissions
Operating Systems 2018-07-18

How to Read and Set Linux Permissions

A summary of how Linux permissions work. It covers how to read permission strings, including the leading file-type character and the rwx (read, write, execute) bits shown in three-character groups for owner, group, and others, as well as numeric notation and practical use of the chmod command.

#Linux#Authorization
MySQL JOIN vs UNION: Differences, Use Cases, and Examples
Database 2018-07-18

MySQL JOIN vs UNION: Differences, Use Cases, and Examples

Learn the difference between MySQL JOIN and UNION with practical SQL examples. Covers INNER JOIN, LEFT JOIN, FULL OUTER JOIN, and how to combine result sets correctly.

#MySQL#join#union
Starting Algorithms with JavaScript
Algorithms and Data Structures 2018-07-13

Starting Algorithms with JavaScript

Master fundamental JavaScript algorithms including linear and binary search, plus selection and bubble sort implementations.

#Algorithms
Understanding System Performance Through Illustrations
Performance 2018-07-12

Understanding System Performance Through Illustrations

A review of Understanding System Performance Through Illustrations. A book that clearly explains the basics of system performance with diagrams. From how to think about bottlenecks onward, it helps you build a foundation for performance-aware design and tuning.

#Book Review#System Performance#ISUCON
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
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#Data Structures
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 Patterns
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
Architecture 2018-05-18

The UNIX Philosophy

A review of The UNIX Philosophy. A book that distills the thinking and philosophy behind UNIX into just 150 pages. Packed with ideas applicable to coding and design in general, like small is beautiful, it is something you will want to revisit whenever you face a design challenge.

#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