[{"data":1,"prerenderedAt":212},["ShallowReactive",2],{"\u002Fwork":3,"github-repos":168},{"id":4,"title":5,"body":6,"description":159,"extension":160,"meta":161,"navigation":162,"path":163,"seo":164,"sitemap":165,"stem":166,"__hash__":167},"pages\u002Fwork.md","Work — Eko Susilo",{"type":7,"value":8,"toc":151},"minimark",[9,13,16,21,28,34,45,51,53,56,61,66,71,76,78,82,87,92,97,102,104,107,112,137,146],[10,11,12],"p",{},"A mix of production systems and open-source tools built over the last several years. Infrastructure-heavy work at Privy, utilities everywhere else.",[14,15],"hr",{},[17,18,20],"h2",{"id":19},"iamucilsite","iamucil.site",[10,22,23,27],{},[24,25,26],"strong",{},"Problem:"," Personal brand site was a single-page profile card with no routing, broken social links, and an AdSense dependency that clashed with a minimalist positioning.",[10,29,30,33],{},[24,31,32],{},"Approach:"," Rebuilt as a multi-page Nuxt 3 portfolio with Cloudflare Pages deployment — re-enabled routing, wired Nuxt Content v3 with a Cloudflare D1 backend for markdown-driven pages, added a cookie-based dark mode with FART prevention, and set up a three-job CI pipeline (unit tests → build\u002Fdeploy → Playwright smoke).",[10,35,36,39,40,44],{},[24,37,38],{},"Outcome:"," Five prerendered routes with Web Vitals in the \"Good\" band (LCP, CLS, INP) at P75 mobile. ",[41,42,43],"code",{},"_worker.js"," bundle at 767 KB — well under the 1 MiB Cloudflare free-tier ceiling. Full WCAG AA across all pages.",[10,46,47,50],{},[24,48,49],{},"Stack:"," Nuxt 3, Cloudflare Pages, Nuxt Content v3, D1, @nuxt\u002Fui, Vitest, Playwright",[14,52],{},[17,54,55],{"id":55},"go-whatsapp",[10,57,58,60],{},[24,59,26],{}," No lightweight Go client existed for the WhatsApp Web protocol that teams could embed directly in backend services without spinning up a headless browser.",[10,62,63,65],{},[24,64,32],{}," Implemented the WhatsApp Web WebSocket protocol in pure Go — binary message framing, HMAC-SHA256 authentication, QR-code pairing flow, and a persistent session store. Designed the API to be embeddable as a library rather than a sidecar.",[10,67,68,70],{},[24,69,38],{}," Used in several internal notification pipelines. Handles reconnect and session refresh automatically so callers don't need to manage WebSocket state.",[10,72,73,75],{},[24,74,49],{}," Go, WebSocket, Protocol Buffers",[14,77],{},[17,79,81],{"id":80},"privy-identity-infrastructure","Privy Identity Infrastructure",[10,83,84,86],{},[24,85,26],{}," Privy's signing and identity verification flows needed to scale to millions of documents per month while maintaining legally-binding audit trails and sub-second response times at the API layer.",[10,88,89,91],{},[24,90,32],{}," Designed and operated the core signing microservices — certificate lifecycle management, digital signature orchestration, and webhook delivery. Introduced structured logging and distributed tracing to surface latency hotspots across the verification chain.",[10,93,94,96],{},[24,95,38],{}," Reduced average signing API latency by 40% after profiling and eliminating redundant certificate validation round-trips. Audit trail completeness holds at 100% — a compliance requirement for Indonesian electronic signatures under POJK regulations.",[10,98,99,101],{},[24,100,49],{}," Go, gRPC, PostgreSQL, Redis, Kubernetes",[14,103],{},[17,105,106],{"id":106},"nuxt-starter",[10,108,109,111],{},[24,110,26],{}," Spinning up a new Nuxt 3 project with TypeScript, ESLint flat config, Prettier, and Cloudflare Pages targeting took 30–60 minutes of boilerplate every time.",[10,113,114,116,117,120,121,124,125,128,129,132,133,136],{},[24,115,32],{}," Extracted the repeatable setup into a template repository — ",[41,118,119],{},"@nuxt\u002Feslint"," flat config wired with ",[41,122,123],{},"withNuxt",", Prettier standalone (not via ESLint plugin), ",[41,126,127],{},".node-version"," pinned for Cloudflare Build system v3, and ",[41,130,131],{},"nitro.preset: 'cloudflare_pages'"," in ",[41,134,135],{},"nuxt.config.ts"," from the start.",[10,138,139,141,142,145],{},[24,140,38],{}," New projects reach a clean ",[41,143,144],{},"npm run build"," and deploy in under five minutes. The template has been used as the baseline for three internal Privy tooling sites.",[10,147,148,150],{},[24,149,49],{}," Nuxt 3, TypeScript, ESLint, Prettier, Cloudflare Pages",{"title":152,"searchDepth":153,"depth":153,"links":154},"",2,[155,156,157,158],{"id":19,"depth":153,"text":20},{"id":55,"depth":153,"text":55},{"id":80,"depth":153,"text":81},{"id":106,"depth":153,"text":106},"Selected case studies and public OSS work by Eko Susilo, System Engineer at Privy.","md",{},true,"\u002Fwork",{"title":5,"description":159},{"loc":163},"work","5L3u7D0C4RSx1yd56AKlfyGqcAjIhPHJyHyG4APbQ08",[169,174,179,184,188,192,196,201,204,208],{"name":170,"description":171,"language":172,"github":173},"setafonts","List of setafont for seta-sign","Makefile","https:\u002F\u002Fgithub.com\u002Fiamucil\u002Fsetafonts",{"name":175,"description":176,"language":177,"github":178},"telebot","whoami for telegram bot","Go","https:\u002F\u002Fgithub.com\u002Fiamucil\u002Ftelebot",{"name":180,"description":181,"language":182,"github":183},"py-icrawler","python web crawler with python django and scrappy","HTML","https:\u002F\u002Fgithub.com\u002Fiamucil\u002Fpy-icrawler",{"name":185,"description":186,"language":177,"github":187},"tbot","telegram bot client","https:\u002F\u002Fgithub.com\u002Fiamucil\u002Ftbot",{"name":189,"description":152,"language":190,"github":191},"espresso","PHP","https:\u002F\u002Fgithub.com\u002Fiamucil\u002Fespresso",{"name":193,"description":194,"language":190,"github":195},"tcc","Praktikum Teknik Cloud Computing - TI-9","https:\u002F\u002Fgithub.com\u002Fiamucil\u002Ftcc",{"name":197,"description":198,"language":199,"github":200},"nginx-docker","Run nginx with custom configuration in docker container","Dockerfile","https:\u002F\u002Fgithub.com\u002Fiamucil\u002Fnginx-docker",{"name":202,"description":152,"language":172,"github":203},"toolbox","https:\u002F\u002Fgithub.com\u002Fiamucil\u002Ftoolbox",{"name":205,"description":206,"language":152,"github":207},"iamucil","My special repository","https:\u002F\u002Fgithub.com\u002Fiamucil\u002Fiamucil",{"name":209,"description":210,"language":172,"github":211},"rails-toolbox","Ruby on Rails tollbox","https:\u002F\u002Fgithub.com\u002Fiamucil\u002Frails-toolbox",1780134919528]