Writing

Articles about backend development, distributed systems, databases, and things I’m learning.

31 articles
ArticlesNewest first
  1. 13 min read

    Building Your First LLM Career Assistant: A Beginner's Guide

    Build a resume-based chatbot with Python, FastAPI, and the OpenAI API, including PDF parsing, conversation memory, token limits, and rate limiting.

  2. 6 min read

    How AI Change The Way I Work as A Software Engineer

    How I use AI tools for prototyping and research, and my observations on code generation, technical learning, and the role of software engineers.

  3. 9 min read

    Mastering Race Conditions: Strategies for Reliable Software Systems

    Understand race conditions in multithreaded and distributed systems, with locking strategies, detection methods, and a banking transaction example.

  4. 9 min read

    A Developer’s Guide to Circuit Breakers: Protect Your Service from Failure

    How circuit breakers isolate downstream failures, with state transitions, configuration, monitoring, and a Go example using Hystrix.

  5. 5 min read

    What Is API Versioning

    Compare API versioning through URL paths, query parameters, request headers, and media types, and plan how to communicate breaking changes to consumers.

  6. 10 min read

    Understanding Database Locks: Managing Concurrency in Databases

    Database concurrency explained through shared and exclusive locks, isolation levels, pessimistic and optimistic locking, MVCC, and a seat-booking example.

  7. 16 min read

    Understanding How Java's Garbage Collector Works

    How Java manages memory and reclaims objects, with an overview of Serial, Parallel, G1, and ZGC collectors and their performance tradeoffs.

  8. 12 min read

    How a Database Index Works and How to Use It Effectively

    How database indexes speed up queries, their storage and write costs, and when to use single-column, compound, unique, and partial indexes.

  9. 9 min read

    Why You Should Use Caching - Improve User Experience and Reduce Costs

    Backend object caching explained: write patterns, cache misses, invalidation, replacement policies, performance tradeoffs, and when caching is unsuitable.

  10. 10 min read

    The Essential Skills of a Software Engineer

    My view of the skills software engineers need: technical fundamentals, clear communication, ownership, and understanding the people using the product.

  11. 8 min read

    Incident Management Platform in Blibli.com

    How we built an incident management platform at Blibli, from the earlier response process to requirements, implementation, incident flow, and results.

  12. 11 min read

    Designing A Retry Mechanism For Reliable Systems

    Design retries for transient failures: choose retryable requests, set backoff periods, manage retry state, and account for timeouts and idempotency.

  13. 7 min read

    How To Better Store Password In Database

    Why plain-text passwords and fast hashes are unsafe for database storage, how salts work, and how bcrypt balances hashing cost with login latency.

  14. 9 min read

    How to Implement JSON Web Token (JWT) in Java Spring Boot

    Implement signed and encrypted JSON Web Tokens in Java Spring Boot with jose4j, covering JWS creation and validation, JWE, and key handling.

  15. 12 min read

    Introduction to JWT (Also JWS, JWE, JWA, JWK)

    An introduction to JWT and related JOSE standards: token structure, signatures, encryption, algorithms, keys, and the differences between JWS and JWE.

  16. 19 min read

    Get Started With Docker

    A practical introduction to Docker containers, images, commands, volumes, networking, Dockerfiles, and running multiple services with Docker Compose.

  17. 6 min read

    Updating Code Curated to Ghost Version 4

    Notes from upgrading a self-hosted Ghost blog from version 3 to 4, covering theme checks, backups, the upgrade process, and performance comparisons.

  18. 15 min read

    Getting Started With Elasticsearch in Java Spring Boot

    Connect Spring Boot 2 to Elasticsearch using Spring Data repositories, ElasticsearchRestTemplate, and the REST high-level client, with CRUD examples.

  19. 13 min read

    How to Set up a Self-Hosted Ghost Blogging Platform

    A walkthrough of self-hosting Ghost on DigitalOcean, including domain setup, Cloudflare DNS and TLS, server configuration, and the Ghost admin account.

  20. 3 min read

    Using XOR For Swapping Variable

    How exclusive OR works and why XOR can swap two variable values without a temporary variable, with binary examples and a Python implementation.

  21. 6 min read

    Reasons I Changed From WordPress to Ghost

    Why I moved my blog from WordPress to Ghost in 2020, including the Node.js stack, resource usage, plugin tradeoffs, and writing interface.

  22. 10 min read

    Introduction to Analyzer in Elasticsearch

    How Elasticsearch analyzers turn text into searchable tokens, with examples of character filters, tokenizers, token filters, and custom analyzers.

  23. 10 min read

    How to Handle Typos in Elasticsearch Using Fuzzy Query

    Handle typos in Elasticsearch with fuzzy and match queries, using edit distance, fuzziness, transpositions, prefix length, and query tuning examples.

  24. 9 min read

    5 Software Engineering Beginner Mistakes I Did

    Five mistakes from my early software engineering work: skipping tests and design, writing complex code, neglecting documentation, and missing soft skills.

  25. 7 min read

    Avoiding the Null Pointer Exception With Optional in Java

    How to use Java Optional to handle missing values, with examples of map, flatMap, filter, fallback methods, and common mistakes to avoid.

  26. 7 min read

    Create a Simple Autocomplete With Elasticsearch

    Build a simple Elasticsearch autocomplete using match_phrase_prefix, from index mappings and sample documents to query behavior and limitations.

  27. 5 min read

    Why I Took a Machine Learning Course as a Software Engineer

    Why I took a machine learning specialization as a software engineer, how I chose the course, and what I learned from completing it over five months.

  28. 9 min read

    Functional Programming in Java, Explained

    Java functional programming with lambda expressions and functional interfaces, including built-in interfaces and a small custom Stream implementation.

  29. 9 min read

    Elasticsearch: Text vs. Keyword

    Compare Elasticsearch text and keyword fields: how analysis changes indexing, how term and match queries behave, and when to use each field type.

  30. 9 min read

    Should You Use a Password Manager?

    An overview of password managers, password reuse risks, the benefits and risks of storing credentials, and ways to protect a password vault.

  31. 7 min read

    Basics of Elasticsearch for Developer

    An introduction to Elasticsearch for developers, covering inverted indexes, field types, analyzers, document writes, queries, and aggregations.