Showcase of my craft.
Crafting strong systems requires skill — and skill comes from hard-won experience
Used programming language
JavaScript, Golang, Java, Clojure, Ruby, Python
Built systems on top of
Apache Flink, Apache Kafka, Websocket, Rest, BigQuery, PostgreSQL, React, Kubernetes, Terraform, GCP, MaxCompute
Systems I've crafted
Web UI, Data Ingestion, Analytics, ETL, Deployment solution, Streaming Engine
7+
Years in Engineering
3 Mio +
Of Dollars Saved From Successful Projects
50+
People Mentored
organizations where I honed my craft as engineer and mentor
In an organization that heavily adopts Apache Kafka and event-driven architecture, Kafka events become a critical asset — enabling the development of various applications that react to real-time data.
However, not every developer wants or needs to interact with Kafka directly. To make Kafka more accessible and unlock its full potential across the organization, we built a platform called Firehose.
Firehose simplifies Kafka consumption by exposing events through a familiar interface: HTTP webhooks. Developers can use a self-serve UI to select the Kafka events they want to subscribe to, and Firehose will automatically deliver those events to their configured webhook endpoint. It also handles scaling, monitoring, and lifecycle management out of the box — all self-serve from the UI.
While Firehose empowers teams to consume events using their own logic, we also built Dagger — a no-code stream processing platform. With Dagger, developers can transform Kafka events using SQL, without writing or deploying custom application code. Dagger powers many critical systems, including supply-demand aggregation for surge pricing, fraud detection, and ad impression pipelines — all through declarative SQL, without the overhead of managing services.
[Java Apache Flink Apache Kafka]
Migrated fraud detection rules from batch to stream processing, enabling immediate fraud detection through Apache Flink. Improved system responsiveness and detection accuracy.
[Nodejs Javascript]
Developed a one-click deployment tool to simplify and streamline application release workflows, reducing manual steps and improving developer productivity.
[Java Apache Flink Kafka]
Maintained and extended a Flink-based stream processing platform. Developed custom UDFs and introduced long-window aggregation support to meet complex analytics needs.
[Telegraf Influx Grafana]
Improved observability of Firehose by enhancing monitoring and metrics collection. Enabled better support for multiple sinks through Telegraf and InfluxDB instrumentation.
Clickstream data is essential for marketing analytics and product development. However, collecting and managing this data presents several challenges. The ingestion system must be scalable to handle the high volume of user-generated events. It must also support flexible schemas to accommodate variations across event types. Additionally, the high frequency of incoming data requires careful selection of the communication protocol to ensure efficiency.
To address these challenges, we developed a clickstream ingestion platform called Raccoon.
Raccoon is a horizontally scalable, Go-based service that ingests clickstream data over the WebSocket protocol. It receives events from clients and routes them to Kafka topics for downstream processing. Built for scale and flexibility, Raccoon became the foundation for Gojek’s internal clickstream pipeline — enabling the company to replace a third-party SaaS solution that previously cost over $5 million USD annually.
[Go WebSocket Apache Kafka]
Developed a Go-based ingestion service to collect clickstream data via WebSocket and forward it to Kafka. Built according to a technical RFC and designed to scale for petabytes of daily traffic per data partition. Later extended to support additional protocols.
[Go Kafka WebSocket]
Open-sourced the Mercury ingestion service as [Raccoon](https://github.com/goto/raccoon), enabling broader community use for scalable event ingestion. Contributed to documentation, production hardening, and feature generalization to support various protocols.
Being able to define customer segments based on user behavior and attributes is essential for effective marketing. Traditionally, creating these segments requires marketers to identify data sources, write SQL queries, and manually execute them — a process that is tedious, error-prone, and time-consuming.
To remove this burden, we developed the Customer Segmentation Engine — a system that enables marketers to define segments declaratively based on customer properties and past behaviors, without writing SQL. Once defined, a segment can be executed to generate a list of customers who match the criteria. Segment definitions are reusable and can be saved for future campaigns, allowing marketers to focus on evaluation and optimization rather than data wrangling.
The engine accepts a segment definition in JSON format. When executed, it compiles the definition into SQL, runs the query, and prepares the result as downloadable CSV files. The engine supports complex logic including nested conditions, logical operators, time-based user behavior filters, and inclusion/exclusion rules.
This system has become a foundational tool for segmentation across the organization, saving hundreds of hours in manual effort and significantly accelerating campaign execution.
[Golang PostgreSQL BigQuery]
Designed and developed a scalable user segmentation engine to power marketing use cases. Replaced a 3rd-party tool, resulting in millions of dollars in annual savings.
An internal platform was developed to support analytics on top of clickstream data, primarily for product analytics. It allowed users to visualize trends, build dashboards, browse a catalog of clickstream events, and trace individual user activity.
While the platform had some adoption, it suffered from critical issues:
Data accuracy was significantly improved, restoring trust in reported metrics.
[Golang BigQuery PostgreSQL]
Redesigned key features of an internal analytics platform by identifying and resolving performance bottlenecks. Improved performance and significantly reduced operational costs.
A/B testing allows product teams to optimize experiences based on data rather than assumptions. To enable this, an internal A/B testing platform was developed.
The platform provides:
This platform empowers product managers to run experiments at scale, make data-driven decisions, and iterate quickly based on measurable impact.
[React Golang]
Revamped the UI of an internal A/B testing platform, significantly improving usability and user experience for experiment owners and analysts.
[Go BigQuery PostgreSQL]
Collaborated with the experimentation team to reverse-engineer Eppo and design an in-house experimentation analytics platform. Led system design and oversaw implementation, replacing a third-party solution with a custom architecture tailored to internal needs.