Dicko Azrinaldi

I build spatial platforms, browser tools, and network adapters. I care about low overhead, clean APIs, and software that stays out of your way. Saya membangun platform spasial, alat berbasis browser, dan adaptor jaringan. Fokus pada konsumsi resource rendah, API bersih, dan software yang tidak membebani.

Selected Work Karya Pilihan

  1. Geoportal Petafora homepage listing 15 spatial domains and 1,226 index sheets
    Geoportal catalog — 1,226 sheets across 15 domains, normalised to EPSG:4326.

    ProblemMasalah

    Regional spatial datasets are scattered across incompatible government portals, inconsistent coordinate systems, and opaque manual procurement. Teams burn days confirming whether a layer even exists for their area of interest. Data spasial daerah tersebar di portal instansi yang tidak seragam, sistem koordinat berbeda, dan alur permohonan manual yang tertutup. Tim menghabiskan berhari-hari hanya untuk memastikan sebuah layer tersedia di wilayah kajian mereka.

    ApproachPendekatan

    Separated instant visual verification from engineering fulfillment. Built an indexed catalog where every sheet carries region, scale, and an attribute dictionary, paired with a brief workspace for custom AOIs, output formats, and project scope. Memisahkan verifikasi visual cepat dari pengerjaan teknis. Membangun katalog terindeks di mana setiap lembar membawa informasi wilayah, skala, dan kamus atribut, dipadukan dengan ruang kerja brief untuk AOI kustom, format keluaran, dan lingkup pekerjaan.

    ScopeLingkup
    Catalog + request workflowKatalog + alur pengajuan
    Stack
    SvelteKit · PostGIS · EPSG:4326
    OutcomeHasil
    1,226 sheets · 15 domains · SHP / GPKG / GeoJSON
  2. Napakota Urban Lab homepage
    Napakota — reading the city as it is inhabited, not as it is planned.

    ProblemMasalah

    Urban planning research is locked inside static reports or proprietary municipal dashboards. Citizens who experience the street every day have no readable medium to inspect the data shaping their city. Riset perencanaan kota terkunci di laporan statis atau dashboard instansi yang tertutup. Warga yang setiap hari mengalami jalan dan ruang kotanya tidak punya medium terbaca untuk memeriksa data yang membentuk kota mereka.

    ApproachPendekatan

    Built a four-lens research structure — Mobility, Living, Ecology, Resilience — where each lab publishes its method and its status honestly. The Resilience lab runs live PostGIS analysis across 104 kelurahan and 11 kecamatan, turning administrative boundaries into an instrument for reading the city. Membangun struktur riset empat lensa — Mobilitas, Hunian, Ekologi, Resiliensi — di mana setiap lab mempublikasikan metodenya dan statusnya secara jujur. Lab Resiliensi berjalan dengan analisis PostGIS atas 104 kelurahan dan 11 kecamatan, mengubah batas administrasi menjadi instrumen membaca kota.

    ScopeLingkup
    Research platform + spatial analysisPlatform riset + analisis spasial
    Stack
    Svelte 5 · PostGIS · MapLibre GL
    OutcomeHasil
    104 kelurahan · 11 kecamatan · 4 lab domains
  3. Mapic poster studio editing a Jakarta map poster
    Mapic Poster Studio — one editing surface, 9:16 at 1080 × 1920, drafts kept locally.

    ProblemMasalah

    Producing one clean, publication-grade map usually forces people into a heavy desktop GIS suite just to style a basemap, drop in a GeoJSON file, and set margins, scale, and a north arrow. Membuat satu peta rapi siap publikasi biasanya memaksa orang membuka software GIS desktop yang berat hanya untuk menata basemap, menumpangkan GeoJSON, lalu mengatur margin, skala, dan kompas.

    ApproachPendekatan

    Designed strictly as a single editing surface with zero dead UI: themes, typography, layers, markers and routes, then a high-DPI export. Imports happen client-side, drafts stay in the browser, and place search is cached so the canvas never waits on the network. Dirancang sebagai satu permukaan kerja tanpa UI mubazir: tema, tipografi, layer, marker dan rute, lalu ekspor resolusi tinggi. Impor berjalan di sisi klien, draf tersimpan di browser, dan pencarian lokasi di-cache agar kanvas tidak menunggu jaringan.

    ScopeLingkup
    Product design + buildDesain produk + build
    Stack
    SvelteKit 5 · MapLibre GL · OpenFreeMap
    OutcomeHasil
    1080 × 1920 export · client-side import · local drafts
  4. gemini-stealth-bridge control plane showing account pool and quota windows
    The control plane — account onboarding, quota windows and runtime config in one binary.

    ProblemMasalah

    Pointing coding agents at an authenticated Gemini Web account usually means a headless Chrome or CDP wrapper, and still no clean adapter for Chat Completions, Responses, tool calls, or multi-account quota. Menghubungkan coding agent ke akun Gemini Web biasanya berarti headless Chrome atau pembungkus CDP, dan tetap tanpa adaptor bersih untuk Chat Completions, Responses, tool call, maupun kuota multi-akun.

    ApproachPendekatan

    Treated browserless transport as an implementation detail behind a clean API. A Go daemon serves /v1/chat/completions and /v1/responses over per-account uTLS and HTTP/2 sessions, pools accounts with rolling 5-hour and 7-day quota windows, validates tool arguments against JSON Schema, and ships an MCP endpoint and a control plane inside the same binary. Menjadikan transport tanpa browser sebagai detail implementasi di balik API yang bersih. Daemon Go menyediakan /v1/chat/completions dan /v1/responses di atas sesi uTLS dan HTTP/2 per akun, mengelola pool akun dengan jendela kuota 5 jam dan 7 hari, memvalidasi argumen tool terhadap JSON Schema, serta menyertakan endpoint MCP dan control plane dalam satu binary.

    ScopeLingkup
    Protocol adapter + daemonAdaptor protokol + daemon
    Stack
    Go · uTLS · HTTP/2 · SSE · MCP
    OutcomeHasil
    Zero browser · pooled accounts · 5h / 7d quota windows
  5. TLS ClientHello comparison table between the OpenCode CLI, the Bun bridge, and Node.js
    Measured against the live gateway from the same IP within one minute — the bridge reproduces the CLI handshake; Node.js does not.

    ProblemMasalah

    OpenCode's free tier changes its model catalog dynamically, reasoning models burn small output budgets before emitting any text, and the upstream gate inspects the TLS handshake — so a perfectly correct Node.js server is rejected outright. Katalog model gratis OpenCode berubah dinamis, model penalaran menghabiskan anggaran output sebelum menghasilkan teks, dan gerbang upstream memeriksa handshake TLS — sehingga server Node.js yang benar sekalipun langsung ditolak.

    ApproachPendekatan

    Matched the transport fingerprint instead of fighting it: the bridge runs on Bun, verifies its ClientHello against a recorded baseline, discovers free models hourly, routes each model to the protocol it actually speaks, and applies an additive reasoning-token floor so answers never come back empty. Menyamakan sidik transport alih-alih melawannya: bridge berjalan di Bun, memverifikasi ClientHello terhadap baseline terekam, mendeteksi model gratis tiap jam, merutekan tiap model ke protokol yang benar-benar ia pakai, dan menerapkan batas token penalaran agar jawaban tidak pernah kosong.

    ScopeLingkup
    Transport + request routingTransport + routing request
    Stack
    Bun · Node stdlib · SSE
    OutcomeHasil
    17/17 ciphers matched · 6/6 gate vs 0/6 on Node

About Tentang

I treat software engineering as the discipline of structuring messy reality into fitting systems. Rather than locking into one stack, I start from the bottleneck — indexing a thousand regional map sheets so a non-GIS team can verify a layer in seconds, or writing a native uTLS daemon so nobody has to run a 700 MB browser. Saya memandang rekayasa perangkat lunak sebagai disiplin menyusun realitas yang berantakan menjadi sistem yang pas. Alih-alih mengunci diri pada satu stack, saya berangkat dari titik sumbatnya — mengindeks ribuan lembar peta daerah agar tim non-GIS bisa memverifikasi layer dalam hitungan detik, atau menulis daemon uTLS native agar tidak ada yang perlu menjalankan browser ratusan megabita.

Spatial & Urban Systems Sistem Spasial & Kota

WebGIS architecture, vector tiling, PostGIS spatial indexing, automated geospatial pipelines, and urban mobility analytics. Arsitektur WebGIS, vector tiling, spatial indexing PostGIS, pipeline geospasial otomatis, dan analitik mobilitas perkotaan.

Systems & Protocol Bridges Sistem & Jembatan Protokol

Go network daemons, TLS fingerprint parity, HTTP/2 multiplexing, SSE stream translation, and LLM tool-calling adapters. Daemon jaringan Go, paritas sidik TLS, multiplexing HTTP/2, translasi stream SSE, dan adaptor tool-calling LLM.

Product & Interfaces Produk & Antarmuka

Svelte 5 / SvelteKit, TypeScript, Python (FastAPI), and calm, high-density interfaces built for real operational workflows. Svelte 5 / SvelteKit, TypeScript, Python (FastAPI), serta antarmuka tenang dan padat untuk alur kerja nyata.

CurrentlySaat ini

  • Building geospatial data infrastructure at Petafora Membangun infrastruktur data geospasial di Petafora
  • Researching civic spatial literacy at Napakota Meneliti literasi spasial warga di Napakota
  • Writing protocol bridges in Go and Bun Menulis bridge protokol dalam Go dan Bun

Contact Kontak

If you're working on spatial infrastructure, protocol-level tooling, or a problem that doesn't have a clean shape yet — I'd like to hear about it. Jika Anda mengerjakan infrastruktur spasial, tooling level protokol, atau masalah yang bentuknya belum jelas — saya ingin mendengarnya.

[email protected]