Workshops
I design and facilitate hands-on, deep-dive workshops focused on mastering software craftsmanship and storage internals.
Gamifying Refactoring
Format: Instructor-led workshop
Availability: On request
Turn the art of refactoring into a measurable science. This workshop turns code cleanup into a challenge: can you justify a code smell without using vague terms like "readability" or "maintainability"?
The Game Rules
- 1. Identify smells using concrete evidence, not gut feelings.
- 2. Justify your refactoring without using "ilities" (readability, flexibility).
- 3. Go Beyond abstract reasoning to find measurable problems.
"Don’t state ‘Long method is a smell because it is not readable’. Consider this an opportunity to find reasoning that is measurable."
Internals of key-value storage engines: LSM-trees and beyond
Format: Instructor-led workshop
Availability: On request
Participants build an LSM-based storage engine to understand the core components of a key–value store.
Day 1: Foundations & Core Structures
Building the theoretical ground and starting the engine.
Section 1
Introduction: Theory
- Overview of a storage engine
- Introduction to block storage devices (HDD)
- File organization on disk
- Standard IO & Kernel Page Cache
- Storage hierarchy & Block data structure goals
Section 2
B+Tree: Theory and Maths
- Binary Search Tree (BST) & Height Calculation
- Can BST be used for disk persistence?
- B+Tree Architecture & Use-cases
- Disk access patterns: Random vs Sequential
Section 3
LSM Introduction: Hands-on
- Intro to LSM-tree components
- Implementing Memtable + Iterator
- Implementing Write Ahead Log (WAL)
- Recovering from WAL
- Understanding WAL implementation patterns
Day 2: Advanced Data Structures & Transactions
Moving to disk, optimization, and ACID properties.
Section 4
SSTables: Hands-on
- Understanding SSTable structure
- Revising Binary Search
- Encoding & Endianness
- Implementing SSTable + Iterator
Section 5
Bloom Filters: Hands-on
- Naive Bloom Filter implementation
- Theory behind Bloom Filters
- Robust Bloom Filter implementation
- Integrating into SSTable
Section 6
Transactions (ACID): Hands-on
- Understanding A.C.I.D properties
- Atomicity & Durability implementation
- Isolation Levels explained
- Serialized Snapshot Isolation (Theory)
Section 7
Concurrency: Hands-on
- Singular Update Queue
- Implementing Serialized Snapshot Isolation
- Transactions + Iterators
- Introduction to Concurrency
Section 8
Compaction
- Why do we need compaction?
- Simple-Leveled Compaction (Theory)
- Implementing & Integrating Compaction
- Concurrency + Compaction Revision