I connect field protocols to reliable backend services: OPC UA, IEC 104, Kafka, and the dashboards operators use to see what is happening.
At PLN Icon Plus, I build and maintain SCADA platform services across device communication, notification delivery, and monitoring. Based in the Jakarta area, open to remote.
I have spent the last years between two worlds: operational technology (SCADA, PLCs, IEC 60870-5 protocols, OPC UA) and modern backend engineering (Python, Go, Java Spring Boot, Kafka, PostgreSQL, Docker). My job is making those two talk to each other reliably.
At PLN Icon Plus I built and maintain industrial communication services: an OPC UA front-end processor, a smart modem service, and a digital SMS notification gateway. Before that I worked on HRIS backends and application QA at Mutiara Solusindo.
I prefer boring technology that can be monitored: small binaries, clear protocols, tests, and logs that explain themselves.
Work
May 2024 - Present
Software Engineer
PLN Icon Plus · Contract
Built and maintained industrial communication services in Python and Java Spring Boot, connecting field telemetry to SCADA platform services.
Delivered an OPC UA front-end processor, smart modem service, and SMS notification gateway that bridge device events into digital workflows.
Added network monitoring tools and a configurable OPC UA simulator to make integration work easier to inspect and test.
Aug 2023 - Apr 2024
Full Stack Developer
Mutiara Solusindo · Contract
Maintained and tested HRIS backend workflows for employee data, compliance reporting, and bug resolution.
Private repositories are summarized here. The counts come from the GitHub API and are re-counted by a script; the snapshot date is shown below.
Snapshot: 2026-09-15
Selected projects
Public source code on GitHub. Summaries here describe what the code actually does; the long-form engineering write-ups live in the case studies.
Flagship
pocketkafka
Go
A Kafka-compatible event broker written from scratch in Go. Wire protocol, consumer-group coordination, log compaction, tiered storage, a schema registry, and REST plus MQTT gateways all ship in one static binary with no third-party dependencies.
Verified in repository
Zero third-party Go dependencies
15 test files across protocol, storage, gateways, and e2e
CI runs build, vet, and test on push and pull request
The presentation layer of an OPC UA to Kafka to WebSocket pipeline. It renders 3-phase voltage, current and power analytics, a digital I/O and breaker state panel, and a threshold alarm log, driven either by live WebSocket telemetry or a built-in mock simulator.
A Kafka alarm consumer that fans notifications out to Telegram and WhatsApp. A FastAPI backend handles JWT-authenticated user management, a React dashboard edits recipients and channel preferences, and PostgreSQL stores them, with an audit trail published back to Kafka.
A FastAPI service that bridges Kafka topics to WebSocket clients with topic-based routing. Connected clients subscribe per topic, an HTTP endpoint publishes back to Kafka, and health and metrics endpoints expose the service state.
An OPC UA server simulator built on Node-OPCUA for exercising clients, SCADA systems and gateways without physical hardware. Address space and node behaviour come from JSON config, it generates sine, cosine and random sensor values, and it ships with Docker Compose and a Kubernetes manifest.
A native Go rewrite of a coding-agent CLI: no Node or Bun runtime, an interactive Bubbletea TUI plus print and headless RPC modes, multi-provider LLM clients, native tool execution with context cancellation, and JSONL session trees.