About
I am a software engineer experienced in developing microservices and monolith-based applications from my past experiences and projects. Currently interested in media streaming protocols and video processing, and I am always open to any opportunities in this domain.
Skills
Featured Projects
Lox Interpreter
Writing a tree-walking interpreter for Lox
Lox is the toy language from Crafting Interpreters. This build scans, parses, and evaluates it end to end — no external parser libraries. I implemented the lexer, parser, and abstract syntax tree evaluators completely from scratch, giving me a deep understanding of language implementation.
Implementing the Lexer and Parser
The first phase of the interpreter reads the raw source code string and converts it into a series of tokens, then builds an Abstract Syntax Tree (AST). It handles error reporting accurately by tracking line numbers and column positions during scanning.
Resolving Variables and Environment
Variables in Lox are lexically scoped. I implemented a robust environment system to handle variable assignment, shadowing, and resolution during runtime, ensuring that closures capture their surrounding scope accurately without memory leaks.
Control Flow and Loops
To make Lox Turing-complete, I added support for control flow including 'if' statements, 'while' loops, and 'for' loops. The AST nodes for these constructs are evaluated dynamically, maintaining correct branching paths and execution state.
Redis-go
Implementing the RESP protocol
redis-go speaks the real Redis wire protocol over TCP, with an in-memory store behind it, so the official redis-cli can talk to it directly. It supports parsing and serializing simple strings, bulk strings, arrays, integers, and errors using the REdis Serialization Protocol (RESP).
Handling concurrent client connections
The server handles multiple simultaneous client connections efficiently. It utilizes Go routines to process commands concurrently while maintaining a thread-safe in-memory key-value store using synchronization primitives like sync.RWMutex to prevent race conditions during reads and writes.
In-Memory Store and Expirations
I implemented TTL (Time-To-Live) functionality for keys, mirroring Redis' EXPIRE command. A background goroutine periodically cleans up expired keys to free up memory, while reads actively check and purge keys that have passively expired.
AOF Persistence Strategy
To prevent data loss on restart, I implemented an Append-Only File (AOF) persistence layer. Every write command is logged to disk. On boot, the server replays the AOF log to reconstruct the dataset completely from scratch.
SQLite-go
Parsing the database header and page structure
A from-scratch reimplementation of SQLite's file format and query engine in Go. This first phase reads the binary SQLite database file, parsing the 100-byte database header and navigating the B-Tree page structure to extract table schema information and row counts.
Executing SQL SELECT queries via B-Tree traversal
To retrieve data, the engine parses basic SQL statements and translates them into B-Tree traversal operations. It scans interior and leaf pages, decoding the varint payload formats to reconstruct cell records based on the table's column definitions.
Decoding Varint Payloads and Records
SQLite encodes row data tightly using variable-length integers (varints) and a specialized record format. I implemented a robust decoder to parse this binary stream back into native Go types like strings, floats, and integers based on the schema.
Index Traversals for Fast Lookups
To speed up 'WHERE' clause evaluations, I integrated B-Tree index scanning. By traversing index interior pages to quickly zero-in on matching keys, the engine avoids full table scans, drastically reducing disk I/O.
Other Projects
public-moq-demo
An open-source project of an adaptive video streaming application utilizing QUIC
MEDIS
A webinar marketplace for Doctors and medical staff in Indonesia
Http-go
Simple implementation of HTTP Server made from scratch using Go
Agroaid
An application for detecting diseases in plants
Work Experience
CIMB Niaga
Software Engineer
- Improved document discovery and accessibility by building a file exploration page with full-text and fuzzy search, plus an embedded PDF viewer using pdf.js.
- Ensured data consistency for RAG-based applications by building an automated BullMQ pipeline to ingest and reconcile daily master data updates from an external source.
- Increased transparency of internal AI usage by developing a report dashboard page to visualize internal chat AI application usage for stakeholders.
- Streamlined document ingestion in the internal RAG platform by integrating SharePoint and automating daily synchronization jobs to ensure data consistency.
AwanTunai
Backend Engineer
- Achieved a 60% and 50% reduction in memory and CPU consumption by upgrading multiple services from Java 8 to Java 21 and Spring Boot 2 to Spring Boot 3.
- Improved homepage load time by 50%, reducing p50 latency from 1.4s to 0.7s by rewriting slow MongoDB queries and utilizing asynchronous processing.
- Automated invoice validation and fraud detection by developing a feature to allow users to upload invoices, assess data accuracy, and flag suspicious submissions using machine learning.
- Increased loan applications by developing an automated location-based application feature, enabling users in assigned regions to submit loan applications without requiring sales assistance.
AwanTunai
Backend Engineer Intern
- Satisfied regulatory (OJK) compliance by developing a lender login and registration page and enhancing the risk and compliance verification feature using Spring Boot and MongoDB.
- Satisfied regulatory (OJK) compliance by developing a notification centre for the whole loan submission and disbursement flow using Firebase Cloud Messaging and RabbitMQ.
- Automated loan document signing for lenders by integrating the internal service with a digital identity and signature provider, Privy.
Faculty of Medicine
Software Developer Intern
- Enabled end-to-end medical webinar delivery by developing MEDIS using Spring Boot and integrating with the Zoom Meeting API for automated webinar creation, access, and live session management.
- Automated webinar ticket payments by integrating the platform with the Midtrans Payment Gateway to handle transactions, payment status updates, and purchase history.
- Improved security and usability for multiple user roles by implementing role-based access control workflows across webinar management features.
Bangkit Academy
Cloud Computing Cohort
- Built a plant disease detection application using Node.js, integrating machine learning models for real-time automated diagnosis.
- Deployed and managed containerized applications on Google Kubernetes Engine as part of the Google Cloud Engineer learning path.
- Managed Google Cloud Platform resources across computing, storage, networking, and machine learning, completing 900+ hours of coursework.
Education
University of Indonesia
Bachelor's Degree in Computer Science
- Relevant Coursework: Information System Development Project, Enterprise Applications & Architectures, Data Structures & Algorithm, Databases, Computer Network, Operating System.
Exam Certification Passed

Associate Cloud Engineer
Passed the Associate Cloud Engineer Exam from Google Cloud

Problem Solving (Intermediate)
Passed the Problem Solving Intermediate Exam from Hackerrank

Java (Basic)
Passed the Java Basic Exam from Hackerrank
Course Completed

Google Cloud Skills Boost
Completed courses and lab challenges about Google Cloud Platform, Kubernetes, and Terraform

Coursera
Completed courses about Computer Networking, System Administration, and Machine Learning

Dicoding
Completed courses about Back End Engineering, Cloud Engineering, and Programming Languages

Udemy
Completed a course about backend communication design patterns, protocols, execution and proxying

AWS Skill Builder
Completed courses and assessment about cloud essentials in AWS

Cisco Networking Academy
Completed a course about introduction to Cybersecurity