Halaman ini udah nggak dipakai dan nggak diperbarui lagi. Tulisan yang masuk ke sebuah seri sekarang menampilkan seri lengkapnya di bagian atas tulisan, jadi daftar di sini mungkin udah ketinggalan.

Jalur Baca

Seri

Rute pilihan lewat tulisan-tulisan yang saling nyambung. Mulai dari sebuah seri kalau kamu mau konteks, bukan arsip urut tanggal terbaru.

Kafka vs Redis Streams

Bikin stock ticker yang sama dua kali di broker beneran: partition, consumer group, delivery semantics, co-partitioning, replikasi, stream processing, dan benchmark yang jujur.

16 tulisan
Software Engineering

Kafka atau Redis Streams: Gimana Cara Memilihnya

Memilih antara Kafka dan Redis Streams dengan mengecek kebutuhan ordering, replay, recovery, kapasitas, dan operasional.

KafkaRedisSystem Design
Software Engineering

Benchmark Kafka vs Redis Streams: Throughput dan Latency

Tes Kafka dan Redis Streams saya memisahkan throughput dari latency dan menjelaskan dengan gamblang batasan dari sebuah benchmark lokal.

KafkaRedisSystem Design
Software Engineering

Membangun Live Market Dashboard dengan SSE dan Next.js

Menghubungkan ticker engine bersama ke dashboard Next.js lewat Server Sent Events.

KafkaRedisStreaming
Software Engineering

Stateful Streams: Trigger Edge vs Level dan Window OHLC

Menyimpan harga sebelumnya untuk alert edge dan mengelompokkan tick ke dalam time window untuk candle OHLC.

KafkaRedisStreaming
Software Engineering

Kafka ISR vs Redis Cluster: Replication dan Failover

Mematikan satu broker Kafka untuk menguji failover replica, lalu membandingkan perilakunya dengan sharding di Redis Cluster.

KafkaRedisDistributed Systems
Software Engineering

Menulis Custom Partition Assigner KafkaJS untuk Local Join

Memberikan partition yang cocok dari dua topic ke consumer KafkaJS yang sama, supaya consumer itu bisa join record-nya secara lokal.

KafkaNode.jsSystem Design
Software Engineering

Co-Partitioning: Key Sama, Partition Sama, di Kedua Topic

Key, jumlah partition, dan partitioner yang sama menyelaraskan record antar topic, sementara join lokal juga butuh consumer assignment yang cocok.

KafkaRedisDistributed Systems
Software Engineering

Redis Pub/Sub vs Streams: Ephemeral atau Durable

Membandingkan delivery Pub/Sub yang langsung dengan retention stream dan pembacaan belakangan, termasuk batasan persistence Redis.

RedisDistributed SystemsSystem Design
Software Engineering

Exactly-Once di Kafka: Idempotent Producer dan Transaction

Menguji idempotence di producer dan Kafka transaction, termasuk hasil mana yang bisa dilihat oleh committed reader.

KafkaDistributed SystemsSystem Design
Software Engineering

Redis Streams: Message Nyangkut, XAUTOCLAIM, dan Dead Letter

Memeriksa entry Redis yang pending, mengambil alih delivery yang idle dengan XAUTOCLAIM, dan menangani kegagalan berulang dengan dead letter stream.

RedisDistributed SystemsSystem Design
Software Engineering

At-Least-Once di Kafka: Retry dan Dead Letter Queue

Menguji timing commit di Kafka, retry yang dibatasi, pemrosesan duplikat, dan dead letter queue.

KafkaDistributed SystemsSystem Design
Software Engineering

Consumer Group Redis Streams: Competing Consumer dan PEL

Pakai XREADGROUP, Pending Entries List, dan XACK untuk membagikan entry stream Redis dan melacak pekerjaan yang belum selesai.

RedisKafkaDistributed Systems
Software Engineering

Kafka Consumer Group: Lag, Draining, dan Rebalancing

Mengamati partition assignment, consumer lag, dan rebalancing saat member bergabung ke sebuah Kafka consumer group.

KafkaDistributed SystemsSystem Design
Software Engineering

Dasar-Dasar Redis Streams: XADD, Entry ID, dan MAXLEN

Pakai XADD, entry ID, stream key, dan MAXLEN untuk menulis, membaca, dan menyimpan data stream Redis.

RedisKafkaStreaming
Software Engineering

Kafka Partition dan Key: Menjaga Simbol Tetap Berurutan

Menguji cara key di Kafka memilih partition dan menjaga urutan append setiap simbol.

KafkaDistributed SystemsSystem Design
Software Engineering

Kafka vs Redis Streams: Bikin Stock Ticker Dua Kali

Saya bikin stock ticker pakai Kafka dan Redis Streams untuk membandingkan ordering, recovery, dan local join dengan broker sungguhan.

KafkaRedisSystem Design

Crypto: age

Membongkar satu file age kecil lapis demi lapis: header passphrase, scrypt, ChaCha20-Poly1305, key pair, dan ngukur berapa lama serangan brute-force bakal makan waktu.

6 tulisan

Sistem Backend dan Arsitektur

Queue, caching, lock, API, dan tradeoff yang muncul waktu sistem nanggung traffic beneran.

24 tulisan
Software Engineering

Kafka atau Redis Streams: Gimana Cara Memilihnya

Memilih antara Kafka dan Redis Streams dengan mengecek kebutuhan ordering, replay, recovery, kapasitas, dan operasional.

KafkaRedisSystem Design
Software Engineering

Benchmark Kafka vs Redis Streams: Throughput dan Latency

Tes Kafka dan Redis Streams saya memisahkan throughput dari latency dan menjelaskan dengan gamblang batasan dari sebuah benchmark lokal.

KafkaRedisSystem Design
Software Engineering

Membangun Live Market Dashboard dengan SSE dan Next.js

Menghubungkan ticker engine bersama ke dashboard Next.js lewat Server Sent Events.

KafkaRedisStreaming
Software Engineering

Stateful Streams: Trigger Edge vs Level dan Window OHLC

Menyimpan harga sebelumnya untuk alert edge dan mengelompokkan tick ke dalam time window untuk candle OHLC.

KafkaRedisStreaming
Software Engineering

Kafka ISR vs Redis Cluster: Replication dan Failover

Mematikan satu broker Kafka untuk menguji failover replica, lalu membandingkan perilakunya dengan sharding di Redis Cluster.

KafkaRedisDistributed Systems
Software Engineering

Menulis Custom Partition Assigner KafkaJS untuk Local Join

Memberikan partition yang cocok dari dua topic ke consumer KafkaJS yang sama, supaya consumer itu bisa join record-nya secara lokal.

KafkaNode.jsSystem Design
Software Engineering

Co-Partitioning: Key Sama, Partition Sama, di Kedua Topic

Key, jumlah partition, dan partitioner yang sama menyelaraskan record antar topic, sementara join lokal juga butuh consumer assignment yang cocok.

KafkaRedisDistributed Systems
Software Engineering

Redis Pub/Sub vs Streams: Ephemeral atau Durable

Membandingkan delivery Pub/Sub yang langsung dengan retention stream dan pembacaan belakangan, termasuk batasan persistence Redis.

RedisDistributed SystemsSystem Design
Software Engineering

Exactly-Once di Kafka: Idempotent Producer dan Transaction

Menguji idempotence di producer dan Kafka transaction, termasuk hasil mana yang bisa dilihat oleh committed reader.

KafkaDistributed SystemsSystem Design
Software Engineering

Redis Streams: Message Nyangkut, XAUTOCLAIM, dan Dead Letter

Memeriksa entry Redis yang pending, mengambil alih delivery yang idle dengan XAUTOCLAIM, dan menangani kegagalan berulang dengan dead letter stream.

RedisDistributed SystemsSystem Design
Software Engineering

At-Least-Once di Kafka: Retry dan Dead Letter Queue

Menguji timing commit di Kafka, retry yang dibatasi, pemrosesan duplikat, dan dead letter queue.

KafkaDistributed SystemsSystem Design
Software Engineering

Consumer Group Redis Streams: Competing Consumer dan PEL

Pakai XREADGROUP, Pending Entries List, dan XACK untuk membagikan entry stream Redis dan melacak pekerjaan yang belum selesai.

RedisKafkaDistributed Systems
Software Engineering

Kafka Consumer Group: Lag, Draining, dan Rebalancing

Mengamati partition assignment, consumer lag, dan rebalancing saat member bergabung ke sebuah Kafka consumer group.

KafkaDistributed SystemsSystem Design
Software Engineering

Dasar-Dasar Redis Streams: XADD, Entry ID, dan MAXLEN

Pakai XADD, entry ID, stream key, dan MAXLEN untuk menulis, membaca, dan menyimpan data stream Redis.

RedisKafkaStreaming
Software Engineering

Kafka Partition dan Key: Menjaga Simbol Tetap Berurutan

Menguji cara key di Kafka memilih partition dan menjaga urutan append setiap simbol.

KafkaDistributed SystemsSystem Design
Software Engineering

Kafka vs Redis Streams: Bikin Stock Ticker Dua Kali

Saya bikin stock ticker pakai Kafka dan Redis Streams untuk membandingkan ordering, recovery, dan local join dengan broker sungguhan.

KafkaRedisSystem Design
Software Engineering

Memilih Sistem Queue yang Tepat

Membandingkan job queue, message broker, event log, dan workflow engine berdasarkan kebutuhan delivery dan recovery-nya.

System DesignQueuesMessaging
Software Engineering

Strategi Caching: Dari Cache-Aside sampai Write-Behind

Membandingkan pattern cache dari read path, write path, perilaku saat gagal, dan risiko stale data.

CachingSystem DesignSoftware Engineering
Software Engineering

PostgreSQL Advisory Lock: Fungsinya dan Kapan Memakainya

Pakai PostgreSQL advisory lock untuk mengoordinasikan pekerjaan aplikasi, dengan pilihan yang eksplisit soal kepemilikan dan masa hidup lock.

PostgreSQLDatabaseSystem Design
Software Engineering

PgBoss vs BullMQ: Arsitektur Job Queue di Balik Layar

Membandingkan cara PgBoss dan BullMQ menyimpan, mengambil, menyelesaikan, dan memulihkan background job.

PostgreSQLRedisSystem Design
Software Engineering

Desain API: Design-First vs Code-First

Membandingkan menulis kontrak API sebelum implementasi dengan menurunkan kontraknya dari kode.

API DesignAPI DevelopmentSoftware Engineering
Software Engineering

Selamat Datang di Blog Baru: Migrasi WordPress ke Next.js

Saya memindahkan blog ini dari WordPress ke Next.js supaya bisa mengontrol desain, konten, dan performanya.

Software EngineeringNext.jsTypeScript
Algorithms

Solusi Leetcode - Logger Rate Limiter

Simpan timestamp terakhir setiap pesan dicetak untuk menerapkan interval logging sepuluh detik.

LeetCodeAlgorithmsSystem Design
Software Engineering

SOLID: Prinsip OOP yang Baik

Contoh lima prinsip SOLID dan masalah desain yang diselesaikan oleh masing-masing prinsip.

OOPDesign PatternsSoftware Engineering

Pola Algoritma

Pola problem solving dari LeetCode, dikelompokkan seputar array, linked list, heap, stack, dan pointer.

28 tulisan
Algorithms

Solusi Leetcode - Merge k Sorted Lists

Membandingkan metode sequential, pairwise, dan heap untuk merge beberapa linked list yang udah terurut.

AlgorithmsLeetCodeLinked Lists
Algorithms

Solusi Leetcode - N-Queens II

Menghitung susunan queen yang valid dengan backtracking, pengecekan kolom, dan mask diagonal.

AlgorithmsLeetCodeBacktracking
Algorithms

Solusi Leetcode - Valid Number

Membandingkan regular expression, parsing eksplisit, state machine, dan boolean flags untuk memvalidasi string angka.

AlgorithmsLeetCodeString Processing
Algorithms

Solusi Leetcode - Rotate Array

Rotate array ke kanan dengan tiga kali reversal dan extra space yang konstan.

AlgorithmsLeetCodeArray Manipulation
Algorithms

Solusi Leetcode - N-Queens

Pakai backtracking untuk mencari susunan papan catur tanpa dua queen yang saling menyerang.

AlgorithmsLeetCodeBacktracking
Data Structures

Memahami Priority Queue (Min-Heap)

Membangun min heap dan memakainya untuk memasukkan item dan mengambil item terkecil berdasarkan prioritas.

Data StructuresAlgorithmsPriority Queue
Algorithms

Solusi Leetcode - Candy

Pakai dua pass untuk membagi permen sambil memenuhi perbandingan rating setiap anak dengan tetangganya.

AlgorithmsLeetCodeGreedy
Algorithms

Solusi Leetcode - Best Time to Buy and Sell Stock II

Jumlahkan setiap kenaikan harga untuk mendapatkan profit maksimum dari transaksi saham yang jumlahnya tanpa batas.

AlgorithmsLeetCodeGreedy
Algorithms

Solusi Leetcode - Best Time to Buy and Sell Stock

Lacak harga terendah sejauh ini untuk mencari profit terbaik dari satu transaksi saham.

AlgorithmsLeetCodeTwo Pointers
Algorithms

Solusi Leetcode - Reverse Linked List

Membandingkan cara membangun ulang linked list dengan membalik link yang udah ada, pakai extra space yang konstan.

AlgorithmsLeetCodeLinked Lists
Algorithms

Pengantar Manipulasi In-Place pada Linked List

Membalik linked list dengan mengubah link-nya sambil tetap menjaga akses ke node yang tersisa.

Data StructuresAlgorithmsLinked Lists
Data Structures

Pengenalan Priority Queue

Priority queue memilih item berikutnya berdasarkan prioritas, dengan heap sebagai implementasi yang umum.

Data StructuresAlgorithmsPriority Queue
Algorithms

Solusi Leetcode - Container With Most Water

Geser dua pointer saling mendekat untuk mencari luas container terbesar dalam waktu linear.

AlgorithmsLeetCodeTwo Pointers
Algorithms

Solusi Leetcode - Trapping Rain Water

Hitung air yang terperangkap dari bar tertinggi di tiap sisi, lalu kurangi storage tambahan dengan two pointers.

AlgorithmsLeetCodeTwo Pointers
Algorithms

Solusi Leetcode - Palindrome Permutation

Hitung frekuensi tiap karakter untuk mengecek apakah sebuah string punya permutasi yang berupa palindrome.

AlgorithmsLeetCodeFrequency Counting
Algorithms

Pengenalan Knowing What to Track

Pilih state yang dibutuhkan sebuah algoritma, misalnya jumlah kemunculan, value yang udah dikunjungi, atau hasil terbaik sejauh ini.

Data StructuresAlgorithmsPatterns
Algorithms

Solusi Leetcode - Logger Rate Limiter

Simpan timestamp terakhir setiap pesan dicetak untuk menerapkan interval logging sepuluh detik.

LeetCodeAlgorithmsSystem Design
Algorithms

Solusi Leetcode - Design HashMap

Bikin HashMap pakai bucket dan tangani collision lewat separate chaining.

LeetCodeAlgorithmsData Structures
Data Structures

Pengenalan Hash Map

Hash map menyimpan pasangan key dan value untuk lookup, insertion, dan deletion.

Data StructuresAlgorithmsHashMap
Algorithms

Solusi Leetcode - Implement Queue Using Stacks

Pakai dua stack untuk menjaga urutan queue dan bikin setiap operasi berjalan dalam amortized constant time.

LeetCodeAlgorithmsData Structures
Algorithms

Solusi Leetcode - Remove All Adjacent Duplicates In String

Pakai stack untuk menghapus pasangan duplikat yang bersebelahan, termasuk pasangan baru yang muncul dari penghapusan sebelumnya.

AlgorithmsLeetCodeStack
Data Structures

Pengenalan Stack

Stack mengeluarkan item yang terakhir ditambahkan lebih dulu, dan ini berguna untuk pencocokan, membalik urutan, dan operasi bersarang.

Data StructuresAlgorithmsStack
Algorithms

Solusi Leetcode - Linked List Cycle

Membandingkan set berisi node yang udah dikunjungi dengan algoritma Floyd untuk mendeteksi cycle di linked list.

AlgorithmsLeetCodeLinked Lists
Algorithms

Solusi Leetcode - Happy Number

Pakai cycle detection untuk mengecek apakah jumlah kuadrat digit yang dihitung berulang-ulang bakal sampai ke 1.

AlgorithmsLeetCodeCycle Detection
Algorithms

Teknik Fast and Slow Pointers

Pakai dua pointer dengan kecepatan berbeda untuk mendeteksi cycle tanpa menyimpan kumpulan node yang udah dikunjungi.

AlgorithmsData StructuresLinked Lists
Algorithms

Solusi Leetcode - Sum of Three Values

Urutkan array, tetapkan satu nilai, lalu pakai two pointers untuk mencari tiga nilai yang jumlahnya sama dengan target.

AlgorithmsLeetCodeTwo Pointers
Algorithms

Solusi Leetcode - Valid Palindrome

Bandingkan karakter dari kedua ujung sambil melewati tanda baca dan mengabaikan huruf besar kecil.

AlgorithmsLeetCodeTwo Pointers
Data Structures

Pengenalan Two Pointers

Pakai dua posisi di array untuk mengurangi pencarian berulang, kalau struktur input-nya memungkinkan.

Data StructuresAlgorithmsTwo Pointers

Karier, Ketahanan, dan Kerja

Tulisan personal soal masa-masa berat, berkembang, cocok-nggaknya sama tim, kepemimpinan, dan bangkit lagi setelah jatuh.

3 tulisan

Hidup, Cinta, dan Musik

Tulisan personal lama soal musik, hubungan, keluarga, dan emosi yang membentuk orang di balik kerjaan ini.

5 tulisan