All Logs

Browse every knowledge log ordered by newest date first. 28 logs published so far.

Logs by Date

FinanceBroker Platform Selection
June 8, 20267 min read

Malaysia US Stock Trading Platform Comparison

A practical comparison of platforms for Malaysian traders who want to trade American stocks.

TradingMalaysiaUS StocksBrokerage
FinanceS&P 500 ETF Selection
June 8, 20267 min read

S&P 500 ETF Codes: VOO, IVV, SPY, CSPX, VUAA, and Withdrawal Impact

A practical explanation of why S&P 500 has many ETF codes, how domicile changes dividend tax, and what happens when a Malaysian investor sells or withdraws money.

S&P 500ETFInvestingTax
FinanceS&P 500 ETF Selection
June 8, 20267 min read

S&P 500 Monthly Investing: RM2000 Per Month For 10, 15, and 20 Years

A practical simulation of investing RM2000 monthly into S&P 500 ETFs and what may happen when a Malaysian investor sells, converts, and withdraws the money.

S&P 500ETFInvestingTax
Learning
June 7, 20267 min read

The Delayed Effect of Learning

Learning large subjects often feels stuck at first because the useful progress appears only after the first messy exposure.

LearningProjectsSkill BuildingReflection
Software DevelopmentProblem I Meet
June 7, 20268 min read

Cloudflare Deployment Models: Pages, Workers, and Static Export

A practical note on why Cloudflare Pages, Workers, OpenNext, and Next.js static export feel confusing during deployment.

CloudflareNext.jsFrontendDeployment
Software DevelopmentEngineering Field Notes
June 7, 20268 min read

OpenNext as a Platform Adapter

A practical explanation of how OpenNext converts Next.js build output into deployable packages for non-Vercel platforms.

FrontendNext.jsCloudflareDeployment
Software DevelopmentStep By Step Build Your RAG
June 6, 20268 min read

Step By Step Build Your RAG: System Overview

A short overview of the full RAG build path, from why RAG is needed to indexing, retrieval, reranking, LLM design, and debugging.

RAGBackendAISystem Design
Software DevelopmentStep By Step Build Your RAG
June 6, 20268 min read

RAG Parsing and Structure Design

A practical introduction to parsing and why structured data design improves RAG retrieval, generation, and debugging.

RAGBackendAISystem Design
Software DevelopmentStep By Step Build Your RAG
June 6, 20269 min read

RAG Chunking Strategies

A practical guide to common RAG chunking strategies and how to choose the right one based on document type and retrieval behavior.

RAGBackendAISystem Design
Software DevelopmentStep By Step Build Your RAG
June 6, 20268 min read

RAG Metadata Design

A practical explanation of metadata, how it differs from structure, and why it improves retrieval, filtering, tracing, and debugging in RAG systems.

RAGBackendAISystem Design
Software DevelopmentStep By Step Build Your RAG
June 6, 20269 min read

RAG Vector Database Selection

A practical guide to choosing a suitable vector database for storing embeddings, metadata, and retrieval-ready RAG data.

RAGBackendAISystem Design
Software DevelopmentStep By Step Build Your RAG
June 6, 20269 min read

RAG Retrieval Strategies

A practical comparison of common RAG retrieval strategies and how to choose the right one based on data type and query behavior.

RAGBackendAISystem Design
Software DevelopmentStep By Step Build Your RAG
June 6, 20268 min read

RAG Reranking

A practical introduction to reranking in RAG systems, why it is different from retrieval, and when to add it.

RAGBackendAISystem Design
Software DevelopmentStep By Step Build Your RAG
June 6, 20269 min read

RAG LLM Prompt Design

A practical guide to designing LLM prompts for RAG systems so answers stay grounded, scoped, traceable, and stable.

RAGBackendAISystem Design
Software DevelopmentStep By Step Build Your RAG
June 6, 20269 min read

RAG Debugging System Design

A practical guide to designing a RAG debugging system that can locate failures across indexing, retrieval, reranking, and LLM generation.

RAGBackendAISystem Design
Software DevelopmentArt of Middleware
June 5, 202610 min read

AOP and Middleware: Injecting Logging Without Touching Business Logic

A practical comparison of Java AOP and Node.js middleware for adding performance logging, request tracing, and error observation without polluting core service logic.

BackendHTTPNode.jsSystem Design
Software DevelopmentArt of Middleware
June 5, 20269 min read

The Art of Middleware: Turning Requests Into Performance Signals

A practical guide to using middleware for request lifecycle logging, performance diagnostics, error tracing, and production observability.

BackendHTTPNode.jsSystem Design
Software DevelopmentTraffic Control
June 5, 20268 min read

Nginx as a Traffic Controller

A practical introduction to what Nginx does, why it usually sits in front of application servers, and how it controls HTTP traffic.

BackendHTTPNode.jsSystem Design
Software DevelopmentTraffic Control
June 5, 20269 min read

Nginx vs Application Rate Limiting

A practical guide for deciding whether rate limiting should happen in Nginx, inside application code, or both.

BackendHTTPNode.jsSystem Design
Software DevelopmentTraffic Control
June 5, 20269 min read

Rate Limiting with Nginx

A practical explanation of how Nginx rate limiting protects backend applications by controlling request frequency before traffic reaches application code.

BackendHTTPNode.jsSystem Design
Software DevelopmentDatabase Performance
June 4, 202614 min read

A Practical Roadmap for Database Performance Optimization

A practical escalation path for improving database performance, from better queries and indexes to replicas, partitioning, and distributed storage.

BackendHTTPNode.jsSystem Design
Software DevelopmentDatabase Performance
June 4, 202610 min read

Two Cheapest Way To Increase Database Searching Performance

A practical explanation of how indexes and partitions reduce unnecessary database reads before more expensive scaling strategies are needed.

BackendDatabasePostgreSQLPerformance
Software DevelopmentTraffic Control
June 4, 20269 min read

Short Polling vs Long Polling: Choosing a Status Update Strategy

Understand how short polling and long polling retrieve changing server state, how their code differs, and when each strategy is appropriate.

BackendHTTPNode.jsSystem Design
Software DevelopmentDatabase Performance
June 4, 202614 min read

Database Query Performance Analysis

A practical PostgreSQL workflow for identifying expensive queries and reading execution plans before choosing an optimization.

BackendHTTPNode.jsSystem Design
Software DevelopmentMessage Broker
June 4, 202611 min read

Kafka vs RabbitMQ: Event History or Task Delivery?

A practical comparison of Kafka and RabbitMQ based on retention, replay, routing, consumer behavior, and backend system design.

BackendHTTPNode.jsSystem Design
Software DevelopmentServer Performance
June 3, 20267 min read

What Is CPU Overhead and How Do You Reduce It?

A practical guide to finding unnecessary CPU work and reducing it through profiling, smaller workloads, and controlled concurrency.

CPUOptimizationBackend
Software DevelopmentServer Performance
June 3, 20269 min read

How to Resolve I/O Overhead in Database-Driven Applications

A practical PostgreSQL-focused guide to reducing storage pressure through query analysis, indexing, read replicas, write control, and data-access design.

DatabasePostgreSQLPerformance
Software DevelopmentServer Performance
June 3, 20266 min read

How to Diagnose Server Performance: CPU vs I/O Overhead

A practical Linux workflow for identifying whether server slowness comes from CPU execution or storage I/O waits.

LinuxPerformanceObservability