Skip to main content

Experience

Seven years building production backend systems.

Backend-first engineering across APIs, integrations, payments, search, data synchronization, and operational software, with full-stack delivery when features cross the API boundary.

How I work

I trace the current behavior before changing it, keep existing configuration working, and check the result in production after release.

About

I care about clean code and good abstractions, but I would rather leave something understandable and appropriate to the codebase than add complexity to make it look clever.

Backend is where I have stayed because the problems hold my attention longer: how data moves through a system, how services talk to each other, how business rules get represented, and what happens when something fails. I like taking a messy requirement and turning it into something predictable that the rest of the system can rely on.

Five years in, my scope has changed more than the systems have. On MyChatLab in 2021 I was the junior engineer on an established team, raising issues for other people to pick up. By Leadplus I was leading planning across several microservices and engineers, where delivery depended on technical direction as much as on the changes I made myself. On Funraisin I review the team's pull requests and carry release feedback back to the pod.

Outside work, it is family, some gaming, and a homelab. The homelab is the least convincing example of not working, since it is still Linux servers, Docker containers, networking things together, and breaking something so I have to work out how to fix it.

Engineering profile

My work is primarily backend engineering: APIs, business workflows, integrations, background jobs, payment systems, and data synchronization between services. I am comfortable working in mature codebases where new features have to coexist with existing behavior and production constraints. I have worked this way remotely since 2021, for clients in Australia, New Zealand, and the UK, from Yogyakarta.

Most of my work has been client assignments, so I have joined existing codebases cold more often than started new ones, and taken assigned work through planning, implementation, review, and release. On each assignment the first job is working out which constraints are fixed and which are open. The revenue rules at e-PNBP and the established fundraising defaults at Funraisin had to stay as they were. The token contract and the matched-giving calculation were the parts I could change.

My deepest production stack is PHP and Laravel, supported by Node.js and TypeScript for integration-heavy services. I also work across React, Vue, and server-rendered interfaces when a feature needs both backend and frontend changes.

Backend systems

APIs, business workflows, background jobs, payments

Integrations and data

Webhooks, external APIs, synchronization, data normalization

Production engineering

Reliability, observability, migrations, legacy compatibility

Remote delivery

Australian, New Zealand, and UK clients since 2021, mostly async through tickets and pull requests, with daily standups where the team ran them

Full-stack delivery

Backend APIs, admin tools, and the user-facing interfaces that depend on them

Joining a codebase

Six of the nine systems in the work archive were already in production when I joined

Employment and client assignments.

SoftwareSeni assignments are nested under one employer. Direct freelance work is listed separately.

Employment

Aug 2021 - Present

SoftwareSeni

Backend and full-stack engineering across client assignments

Five assignments, one continuing role — Funraisin, Leadplus, and more.

FunraisinJun 2025 - Present

Full-stack Engineer

Protected the matched-giving and raffle payment paths with MySQL locks, transactions, and row-level locking. Also shipped giving, Salesforce synchronization, ticketing, import, and scheduled-processing changes to production.

LeadplusOct 2022 - May 2025

Backend Engineer

Improved CRM integration reliability through provider-specific throttling, webhook recovery, identity resolution, direct-to-R2 uploads, and Laravel and PHP upgrades.

Moladin Warehouse ManagementAug 2022 - Sep 2022

Backend Engineer

Added separate response and arrival deadlines to the interwarehouse flow, with scheduled cancellation, audit history, warehouse-scoped authorization, and mobile capability flags.

PepyMar 2022 - Aug 2022

Backend Engineer

Built an explicit MySQL-to-Elasticsearch synchronization contract and repeatable alias-backed reindexing, plus Trello, GitLab, and Google OAuth integrations.

MyChatLabAug 2021 - Feb 2022

Full-stack Engineer

Owned subscription state across Stripe, Midtrans, and WooCommerce. Traced a two-to-four-minute production operation to cross-region database latency amplified by query count.

Freelance

May 2022 - Jan 2024

Prasetiya Mulya University

Full-stack Engineer

Connected verified Midtrans payments to enrollment and invoicing, and integrated application-side SSO and CoursePlayer provisioning across the Vue V0 and Laravel-rendered V1 applications.

Employment

Jul 2019 - Jul 2021

Java Multi Mandiri

Software Engineer

Built Shopee marketplace workflows alongside invoice and payment features, and contributed across the ERP, CRM, reporting, order, and permission workflows.

StockrakenJul 2019 - Jul 2021

Backend Engineer

Isolated partial Shopee provider failures and built marketplace stock mapping, queued synchronization, and inventory reconciliation around one stock model.

ES3-KULAJul 2019 - Jul 2021

Full-stack Engineer

Built invoice and partial-payment correctness, internal-sales-order relationships, and multi-assignee IT issue workflows. Also contributed to delivery, reporting, and permission-aware interfaces.

Freelance

Sep 2019 - Jul 2020

Reksa Karya

Software Engineer

Extended the Flutter client and its Laravel API across authentication, coklit, correspondence, and receivables. The device-token migration stayed backward compatible with older clients.

Case studies for the assignments above.

View work