Blog

  • Superwhisper: Dikte Kode dengan Suara, Benar-benar Bisa?

    Superwhisper: Dikte Kode dengan Suara, Benar-benar Bisa?

    Saya masih ingat pertama kali coba voice dictation untuk menulis kode. Itu sekitar 2019, dan hasilnya? Bencana. “if open parenthesis” tertulis literally sebagai “if open parenthesis”, bukan if (. Saya menyerah setelah 10 menit.

    Tapi sekarang 2026, dan teknologi speech recognition sudah jauh berbeda. Whisper dari OpenAI mengubah game. Dan Superwhisper adalah salah satu aplikasi yang paling polished yang manfaatkan teknologi ini.

    Setelah beberapa minggu pakai serius — ini laporan jujurnya.

    Apa Itu Superwhisper?

    Superwhisper adalah aplikasi macOS yang menjalankan speech-to-text menggunakan model Whisper (dan varian yang lebih baru) secara lokal atau via API. Intinya: tekan shortcut, ngomong, teks muncul di mana kursor kamu berada — di email, Slack, code editor, dokumen, di mana saja.

    Yang membuat ini beda dari voice typing built-in macOS atau Windows:

    • Akurasi jauh lebih tinggi, terutama untuk bahasa dengan aksen
    • Bisa custom vocabulary — kamu bisa beri tahu model kata-kata teknis atau nama yang sering kamu sebut
    • Modes yang berbeda untuk konteks yang berbeda
    • Processing bisa local — data kamu tidak keluar ke server
    • Diksi multi-bahasa dalam satu session

    Setup Awal

    Superwhisper butuh setup awal yang sedikit lebih dari install-and-go:

    1. Download dari superwhisper.com
    2. Pilih mode: local (pakai compute lokal, lebih privat) atau cloud (lebih cepat dan akurat)
    3. Download model yang kamu mau — ada beberapa ukuran, dari kecil (cepat tapi less accurate) sampai large (lebih akurat tapi butuh lebih banyak RAM)
    4. Set global shortcut

    Saya pakai mode cloud dengan model terbesar untuk daily driver. Kalau ada concern privasi untuk content sensitif, mode local tersedia.

    Untuk Menulis Teks Biasa: Sangat Impressed

    Untuk menulis email, Slack message, dokumen, komentar di PR — Superwhisper bekerja luar biasa. Akurasinya tinggi, bahkan untuk bahasa Indonesia yang saya campur dengan istilah Inggris teknis.

    Workflow yang saya temukan efektif:

    • Draft email panjang dengan suara, edit typo kecil secara manual
    • Slack message informal — langsung ngomong, tidak perlu edit
    • Meeting notes — rekam dan dikte poin-poin sambil meeting
    • Komentar di code review — lebih cepat dari mengetik panjang-panjang

    Speedup yang saya rasakan untuk text biasa: sekitar 2-3x lebih cepat dari mengetik, terutama untuk paragraf panjang.

    Untuk Koding: Realistis

    Ini yang paling banyak orang penasaran. Bisa tidak dikte kode?

    Jawaban jujur: bisa, tapi untuk hal-hal tertentu saja.

    Yang Berhasil dengan Baik

    Komentar dan dokumentasi dalam kode. Ini yang paling natural dan paling sering saya pakai. Daripada mengetik komentar panjang, saya ngomong saja.

    // saya: "tambahkan fungsi ini menerima parameter user object yang berisi id, email, dan role, lalu return boolean apakah user memiliki permission yang diperlukan"
    

    // output: // Fungsi ini menerima parameter user object yang berisi id, email, dan role, lalu return boolean apakah user memiliki permission yang diperlukan

    Variable dan function names. “isUserAuthenticated”, “fetchUserProfile”, “handleFormSubmit” — ini bisa dikte dengan cukup akurat.

    String literals. Teks yang masuk ke dalam string, pesan error, label UI — ini natural untuk diucapkan.

    Prompt untuk AI coding assistant. Saya sering pakai Superwhisper untuk ngomong instruksi ke Cursor atau GitHub Copilot. Daripada mengetik panjang lebar apa yang mau saya buat, saya ngomong saja dan AI yang menulis kode-nya.

    Yang Masih Susah

    Syntax yang sangat symbolic. {}, (), =>, &&, || — ini awkward untuk diucapkan dan hasilnya seringkali salah. Kamu harus bilang “curly brace” atau pakai shorthand yang butuh customization.

    Indentation dan whitespace. Kode sensitif terhadap indentation. Voice dictation tidak handle ini dengan baik secara default.

    Long chained expressions. array.filter(x => x.active).map(x => x.name).join(', ') — ini lebih cepat diketik dari diucapkan.

    Workaround yang Saya Pakai

    Daripada dikte kode secara langsung, saya gabungkan dengan AI:

    1. Dikte instruksi ke AI coding assistant (Cursor, Copilot, Claude)
    2. AI yang generate kode
    3. Review dan edit manual kalau perlu

    Ini terasa lebih natural. Saya berbicara seperti menginstruksikan junior developer: “Buatkan fungsi yang ambil list user dari API, filter yang aktif saja, lalu return sorted by last login.” AI yang terjemahkan ke kode.

    Custom Modes — Fitur yang Underrated

    Superwhisper punya fitur “Modes” yang memungkinkan kamu setup konteks berbeda untuk situasi berbeda:

    • Mode “Email”: Otomatis format paragraf, tambahkan greeting/closing
    • Mode “Coding”: Aktifkan vocabulary teknis khusus
    • Mode “Meeting Notes”: Format output sebagai bullet points
    • Mode “Bahasa Indonesia”: Pastikan output dalam Bahasa Indonesia walau kamu sesekali sebut kata Inggris

    Saya punya mode custom untuk developer context yang include vocabulary seperti nama-nama framework yang sering saya pakai.

    Perbandingan dengan Alternatif

    Whisper.cpp (self-hosted) — Gratis, privat, tapi butuh setup teknis dan tidak se-polished Superwhisper.

    macOS built-in Dictation — Terintegrasi, tapi akurasi jauh di bawah Whisper-based apps.

    Dragon NaturallySpeaking — Veterans di kategori ini, lebih mature untuk koding dengan banyak syntax support, tapi mahal dan Windows-focused.

    Whisper Flow — Mirip Superwhisper, lebih sederhana, lebih murah. Pilihan bagus kalau kamu mau sesuatu yang less feature-rich.

    Biaya

    Superwhisper punya free tier dengan batasan waktu transkripsi per bulan. Paid plan sekitar $8-10/bulan untuk unlimited penggunaan.

    Kalau pakai mode cloud dengan model besar, ada biaya API di atasnya (biasanya sangat kecil — sen per request).

    Siapa yang Paling Benefit?

    Berdasarkan pengalaman saya, Superwhisper paling valuable untuk:

    • Developer yang banyak menulis dokumentasi dan komentar — ROI langsung terasa
    • Orang yang lebih cepat berpikir dengan ngomong daripada mengetik
    • Developer yang punya kondisi fisik yang membuat ngetik lama jadi melelahkan — RSI, misalnya
    • Orang yang sering harus multitask dan tidak bisa selalu pegang keyboard
    • User AI coding assistant — dikte prompt jauh lebih cepat

    Kesimpulan

    Superwhisper bukan magic wand yang membuat kamu bisa coding 100% tanpa keyboard. Untuk syntax-heavy coding, keyboard masih lebih efisien.

    Tapi untuk semua yang di sekitar coding — dokumentasi, komunikasi, instruksi ke AI, planning, dan note-taking — ini adalah tools yang genuinely mengubah workflow saya menjadi lebih cepat. Dan untuk developer yang pakai AI coding assistant, kombinasi voice dictation + AI adalah combo yang powerful.

    Worth dicoba, terutama dengan free tier yang tersedia.


    Punya pertanyaan tentang tools produktivitas developer yang lain? Atau mau diskusi setup workflow yang optimal? Yuk ngobrol — hubungi mafadev.

  • Edge Computing untuk Developer Indie: Apa yang Perlu Diketahui?

    Edge Computing untuk Developer Indie: Apa yang Perlu Diketahui?

    Waktu pertama dengar “edge computing”, saya pikir ini jargon enterprise yang tidak relevan buat developer indie seperti saya. CDN sudah ada, server sudah ada, ngapain rumit-rumingin lagi?

    Ternyata saya salah — dan deep dive ke dunia edge computing dalam 6 bulan terakhir cukup mengubah cara saya pikir tentang infrastruktur.

    Edge Computing Itu Apa Sebenarnya?

    Konsep dasarnya: daripada request user selalu pergi ke server pusat (misalnya di us-east-1 di Virginia atau server VPS kamu di Singapura), kode dan data dijalankan lebih dekat ke user — di “edge”, yaitu server yang tersebar di ratusan lokasi di seluruh dunia.

    Hasilnya: latensi lebih rendah karena data tidak harus melakukan perjalanan jauh.

    Ini berbeda dari CDN yang cuma serve static files. Edge computing menjalankan kode di edge location — logika bisnis, database queries, personalisasi, semuanya bisa terjadi di server yang fisiknya dekat dengan user.

    Platform Edge yang Relevan untuk Developer Indie

    Cloudflare Workers

    Ini yang paling saya rekomendasikan untuk mulai. Cloudflare Workers menjalankan JavaScript (dan bahasa lain via WebAssembly) di 300+ lokasi di seluruh dunia.

    Yang membuat menarik untuk indie developer:

    • Free tier yang generous: 100.000 request/hari gratis
    • Latency sangat rendah: Kode dieksekusi < 1ms dari lokasi terdekat user
    • KV Store: Key-value storage yang tersedia di semua edge location
    • D1 Database: SQLite yang tersebar di edge
    • R2: Object storage (seperti S3 tapi tanpa egress fee)

    Biaya paid plan mulai $5/bulan untuk 10 juta request — untuk banyak indie project, ini lebih dari cukup.

    Vercel Edge Functions

    Kalau kamu sudah pakai Vercel untuk deployment, Edge Functions adalah natural extension. Bisa ditulis dengan syntax Next.js middleware yang familiar.

    // app/middleware.ts
    

    import { NextResponse } from 'next/server';

    import type { NextRequest } from 'next/server';

    export function middleware(request: NextRequest) {

    // Ini dijalankan di edge, bukan di origin server

    const country = request.geo?.country || 'ID';

    // Redirect berdasarkan lokasi user

    if (country === 'ID') {

    return NextResponse.rewrite(new URL('/id' + request.nextUrl.pathname, request.url));

    }

    return NextResponse.next();

    }

    Deno Deploy

    Deno, runtime JavaScript alternatif, punya hosting service-nya sendiri dengan edge deployment. Kalau kamu suka Deno (dan banyak developer yang mulai suka), ini pilihan yang clean.

    Use Case Nyata yang Bisa Kamu Implementasikan

    1. Geolocation-based Routing

    Redirect user ke versi bahasa/region yang tepat tanpa roundtrip ke origin server. Deteksi country di edge, serve konten yang sesuai.

    2. A/B Testing di Edge

    Daripada run A/B test di client (yang lambat dan bisa di-block) atau di origin server (tambah latency), run di edge. User dapat variasi yang tepat sebelum request bahkan sampai ke origin kamu.

    // Cloudflare Worker untuk A/B test sederhana
    

    export default {

    async fetch(request) {

    const url = new URL(request.url);

    const userId = getCookie(request, 'user_id') || generateId();

    // Assign ke group berdasarkan hash dari userId

    const group = parseInt(userId.slice(-1), 16) < 8 ? 'A' : 'B';

    if (group === 'B') {

    url.pathname = '/variant-b' + url.pathname;

    }

    return fetch(url);

    }

    };

    3. Rate Limiting di Edge

    Block excessive request sebelum mereka sampai ke server kamu. Lebih efisien karena tidak buang compute di origin.

    4. Image Optimization On-the-Fly

    Cloudflare Images dan Vercel Image Optimization sudah pakai edge untuk resize/compress gambar sesuai device yang request. Kamu bisa implement logic serupa.

    5. Auth Token Validation

    Validasi JWT token di edge sebelum request diteruskan ke API kamu. Ini mengurangi load di origin server secara signifikan.

    // Validasi JWT di Cloudflare Worker
    

    export default {

    async fetch(request, env) {

    const token = request.headers.get('Authorization')?.replace('Bearer ', '');

    if (!token) {

    return new Response('Unauthorized', { status: 401 });

    }

    try {

    // Verify JWT di edge

    const payload = await verifyJWT(token, env.JWT_SECRET);

    // Forward request dengan user info di header

    const modifiedRequest = new Request(request, {

    headers: {

    ...Object.fromEntries(request.headers),

    'X-User-Id': payload.sub,

    'X-User-Role': payload.role,

    }

    });

    return fetch(modifiedRequest);

    } catch {

    return new Response('Invalid token', { status: 401 });

    }

    }

    };

    Batasan yang Perlu Kamu Tahu

    Edge computing bukan tanpa batasan:

    Cold start yang berbeda. Edge workers biasanya tidak punya cold start seperti serverless konvensional, tapi ada batasan CPU time yang ketat (biasanya 50ms per request di tier gratis).

    Tidak semua library bisa jalan. Beberapa npm packages yang bergantung pada Node.js APIs spesifik tidak bisa dipakai di edge runtime. Workers runtime itu subset dari browser runtime, bukan full Node.js.

    Stateful operations lebih rumit. Edge workers secara default stateless. Untuk state, kamu harus integrasikan dengan KV store atau database — ada overhead ini.

    Debugging lebih susah. Troubleshoot kode yang jalan di 300+ lokasi berbeda itu lebih complex dari debug server tunggal.

    Kapan Edge Computing Worth It untuk Project Indie?

    Worth it kalau:

    • User kamu tersebar global — ini impact-nya paling besar
    • Ada operasi yang bisa di-offload (auth, routing, rate limiting) dari origin
    • Budget infrastruktur terbatas — free tier Cloudflare Workers sangat generous
    • Kamu sudah pakai Cloudflare/Vercel — adopsi edge jadi lebih natural

    Mungkin belum worth it kalau:

    • User kamu concentrated di satu region — benefit latensi jadi minimal
    • App kamu sangat database-heavy — bottleneck tetap di database, bukan network
    • Tim kamu belum familiar dengan edge paradigm

    Langkah Pertama yang Konkret

    Kalau mau mulai eksperimen:

    1. Buat Cloudflare account (gratis)
    2. Install Wrangler CLI: npm install -g wrangler
    3. Buat worker sederhana: wrangler generate my-worker
    4. Deploy: wrangler deploy

    Untuk project yang lebih structured, Hono adalah framework yang ringan dan optimal untuk edge environment. Mirip Express, tapi dirancang untuk edge runtime.

    Kesimpulan

    Edge computing bukan lagi domain eksklusif perusahaan besar. Dengan Cloudflare Workers, Vercel Edge Functions, dan platform serupa — ini sekarang accessible untuk developer indie dengan biaya yang sangat masuk akal.

    Untuk project yang butuh performa global, atau ingin offload logika tertentu dari origin server — ini layak dieksplor. Mulai kecil: implementasikan rate limiting atau auth di edge, rasakan bedanya, baru expand dari sana.


    Tertarik eksplorasi edge computing untuk project kamu? Atau mau diskusi arsitektur infrastruktur yang tepat untuk skala project kamu? Yuk ngobrol — hubungi mafadev.

  • AI dan Masa Depan Pekerjaan Developer: Jujur-jujuran

    AI dan Masa Depan Pekerjaan Developer: Jujur-jujuran

    Oke, kita ngobrol jujur.

    Pertanyaan ini ada di kepala hampir semua developer sekarang: “Seberapa aman pekerjaan saya di era AI ini?” Dan saya lihat dua ekstrem reaksinya — ada yang denial total (“AI tidak akan pernah gantiin programmer!”), ada yang panik berlebihan (“semua developer akan jadi pengangguran dalam 5 tahun!”).

    Keduanya salah. Realitanya lebih nuanced, dan saya mau share sudut pandang saya — bukan sebagai akademisi, tapi sebagai developer yang sehari-hari kerjanya bersinggungan langsung dengan AI.

    Apa yang Sudah Berubah

    Jujur: AI sudah mengubah cara saya bekerja secara signifikan.

    Hal-hal yang dulu butuh waktu lama sekarang jauh lebih cepat:

    • Menulis boilerplate code? AI yang handle.
    • Debugging error yang annoying? Paste ke Claude, dapat penjelasan dan solusi.
    • Dokumentasi? Draft pertama dari AI, saya edit.
    • Convert data dari satu format ke format lain? Selesai dalam detik.
    • Unit test untuk fungsi yang sudah ada? AI generate, saya review.

    Kalau saya jujur menghitung, mungkin 30-40% dari aktivitas coding sehari-hari saya sudah sangat terbantu — bahkan sebagian sudah bisa didelegasikan ke AI. Dan ini tren yang akan terus berlanjut.

    Apa yang Belum Bisa Digantikan

    Tapi ada hal-hal yang AI masih kesulitan, dan ini bukan karena AI “bodoh” — ini karena sifat pekerjaannya berbeda.

    Understanding Context Bisnis

    AI tidak tahu bahwa client kamu punya constraint khusus, budget yang terbatas, tim yang kecil, atau legacy system yang harus dikompatibeli. Kamu yang duduk di meeting, dengarkan pain point mereka, dan terjemahkan itu ke keputusan teknis.

    “Fitur ini secara teknis bisa dibuat, tapi apakah worth effort-nya?” — ini adalah judgment call yang butuh konteks manusiawi.

    Navigasi Ambiguitas

    Requirement yang ambigu, stakeholder yang punya expectation berbeda-beda, spec yang berubah di tengah jalan — ini adalah realita project. Developer yang berpengalaman tahu cara navigasi ini. AI belum bisa menelepon product manager untuk klarifikasi.

    Arsitektur dan Keputusan Jangka Panjang

    “Pakai microservices atau monolith untuk project ini?” bukan cuma pertanyaan teknis — ini pertanyaan tentang team size sekarang, projection growth, budget infrastruktur, expertise tim, dan banyak faktor lain. AI bisa beri opsi, tapi keputusan akhir butuh judgment manusia dengan konteks lengkap.

    Relasi dan Trust

    Klien percaya ke kamu, bukan ke AI. Dalam banyak engagement profesional, hubungan personal dan track record adalah aset terbesar. AI tidak bisa bangun trust itu.

    Yang Paling Terancam

    Kalau saya harus jujur tentang siapa yang paling terancam:

    Junior developer dengan skill yang sangat narrow. Kalau keahlian utama kamu adalah “bisa menulis CRUD API dalam framework X” — ya, AI sudah bisa melakukan itu. Ini bukan berita bagus untuk junior yang baru mau masuk industri dengan skill dasar.

    Pekerjaan yang highly repetitive. Data entry, simple script, template-based work — ini yang paling mudah di-automate.

    Outsourcing model tertentu. Banyak bisnis outsourcing yang hidup dari “cheap labor untuk task sederhana” — ini yang paling terdisrupsi.

    Yang Justru Naik Nilainya

    Di saat yang sama, beberapa hal justru makin berharga:

    Developer yang bisa “direct” AI dengan baik. Ini bukan cuma soal prompt engineering — ini soal tahu APA yang mau dicapai, bisa validasi output AI, dan tahu kapan AI salah. Skill ini butuh pengalaman dan judgment.

    Problem solving dan arsitektur tingkat tinggi. Ketika coding mekanis bisa di-delegate ke AI, skill yang tersisa adalah kemampuan berpikir sistemik.

    Komunikasi dan pemahaman domain. Developer yang bisa berbicara bahasa bisnis, memahami kebutuhan user, dan menterjemahkan itu ke solusi teknis — ini makin langka dan makin valuable.

    Spesialisasi dalam domain yang butuh akuntabilitas. Healthcare tech, fintech, sistem kritis — di sini manusia tetap dibutuhkan karena ada accountability legal dan etika yang tidak bisa didelegasikan ke AI.

    Skenario yang Paling Mungkin: Augmentation, Bukan Replacement

    Saya percaya skenario yang paling likely bukan “AI gantiin semua developer” — tapi “developer yang pakai AI dengan baik akan menggantikan developer yang tidak.”

    Analoginya: ketika kalkulator ditemukan, apakah semua akuntan kehilangan pekerjaan? Tidak. Tapi akuntan yang bisa pakai kalkulator (dan kemudian software akuntansi) jauh lebih produktif dari yang tidak, dan yang tetap manual memang terpinggirkan.

    Bedanya sekarang: AI mengambil tidak hanya pekerjaan repetitif, tapi mulai menyentuh pekerjaan kognitif. Ini lebih besar dampaknya. Tapi analoginya tetap relevan.

    Yang Perlu Kamu Lakukan Sekarang

    Bukan untuk panik, tapi untuk adaptasi:

    Belajar pakai AI tools dengan serius. Bukan cuma “ah saya sudah pernah coba ChatGPT”. Integrasikan ke daily workflow. Eksperimen dengan GitHub Copilot, Cursor, Claude. Temukan di mana AI benar-benar saving your time.

    Investasi di soft skills yang AI tidak bisa. Komunikasi, leadership, kemampuan memahami bisnis, empati ke user — ini yang makin berharga.

    Bangun domain expertise. Jangan cuma jadi “web developer generik”. Jadilah developer yang paham deep di industri tertentu — fintech, edtech, healthcare, atau lainnya. Context domain ini adalah moat yang sulit di-automate.

    Jangan berhenti belajar fundamentals. Justru ketika AI handle surface-level coding, kamu perlu lebih paham apa yang terjadi di bawah — supaya bisa evaluate, debug, dan improve output AI.

    Pendapat Jujur Saya

    Saya tidak mau jual optimisme palsu. AI memang akan menghilangkan beberapa jenis pekerjaan. Ini sudah terjadi. Beberapa posisi junior yang dulu ada, sekarang tidak lagi karena satu senior developer dengan AI tools bisa handle pekerjaan beberapa orang.

    Tapi saya juga tidak percaya developer sebagai profesi akan hilang dalam jangka yang relevan. Selama teknologi berkembang, selama ada masalah baru yang butuh solusi, selama bisnis butuh sistem yang reliable — ada kebutuhan untuk manusia yang bisa berpikir, membuat keputusan, dan bertanggung jawab.

    Yang berubah adalah apa yang diharapkan dari developer, dan bagaimana kita bekerja. Dan adaptasi terhadap perubahan itu sudah selalu jadi bagian dari being a developer.


    Mau diskusi tentang bagaimana AI bisa masuk ke project atau bisnis kamu? Atau punya pertanyaan tentang navigasi karir di era AI? Yuk ngobrol — hubungi mafadev.

  • PWA di 2026: Masih Relevan atau Sudah Digantikan?

    PWA di 2026: Masih Relevan atau Sudah Digantikan?

    Tahun 2018-2019, semua orang ngomong PWA. “Web yang bisa jadi native app!” katanya. Google push habis-habisan, Twitter Lite jadi studi kasus andalan, dan banyak yang prediksi PWA akan gantiin native apps.

    Lalu apa yang terjadi? iOS support-nya setengah-setengah, Apple tidak mau beri akses ke fitur native dengan alasan yang kadang tidak masuk akal, dan adopsi yang terjadi kurang dari yang diharapkan.

    Tapi sekarang 2026. Banyak yang berubah. Mari kita lihat kondisi PWA sekarang dengan jujur.

    Apa yang Sudah Membaik

    Apple Akhirnya Lebih Serius

    Ini yang paling significant. Selama bertahun-tahun, iOS menjadi bottleneck terbesar adopsi PWA. Safari tidak support Push Notifications, tidak support Background Sync, dan banyak Web API yang sudah ada di Chrome tapi tidak ada di Safari.

    Di iOS 16.4 ke atas, Apple akhirnya enable Web Push untuk PWA yang diinstall dari home screen. Di versi-versi berikutnya, dukungan terus diperluas. Ini bukan perfect, tapi jauh lebih baik dari sebelumnya.

    Web APIs Makin Lengkap

    Fitur yang dulu cuma native app yang bisa:

    • Web Bluetooth — connect ke perangkat Bluetooth
    • Web NFC — baca/tulis NFC tags
    • File System Access API — akses file system user
    • Web Share API — share native di berbagai platform
    • Badging API — set badge di icon app
    • Screen Wake Lock — prevent screen dari sleep

    Semua ini sekarang ada di web. Masih ada gap dengan native, tapi gap-nya semakin kecil.

    Performance yang Makin Baik

    V8 engine terus dapat optimasi. WebAssembly makin mature. Kalau dulu PWA terasa laggy dibanding native, sekarang untuk sebagian besar use case perbedaannya sudah tidak terlalu terasa.

    Apa yang Masih Jadi Tantangan

    App Store Discovery

    Kalau kamu build PWA, user harus menemukan website kamu terlebih dahulu. Kamu tidak bisa “listing di App Store” seperti native app.

    Ada workaround — Google Play Store menerima TWA (Trusted Web Activity) yang essentially adalah PWA yang di-wrap. Microsoft Store juga terima PWA. App Store Apple? Belum, dan kemungkinan kecil akan berubah.

    Push Notification di iOS Masih Terbatas

    Walaupun sudah support, push notification di iOS untuk PWA masih ada batasan. User harus install dulu ke home screen, dan ada permission flow yang berbeda dari native.

    Akses ke Hardware Spesifik

    Kamera, mikrofon, GPS sudah bisa. Tapi untuk hardware yang lebih spesifik — sensor khusus, akselerometer dengan presisi tinggi untuk gaming, Bluetooth Low Energy dengan control penuh — native masih unggul.

    Gap di Ekosistem Enterprise

    Banyak enterprise tools dan MDM (Mobile Device Management) lebih mudah manage native apps. Kalau kamu target B2B dengan keamanan tinggi, ini bisa jadi blocker.

    Kapan PWA Masih Sangat Worth-it di 2026?

    1. Konten dan Data-Heavy Apps

    News apps, e-commerce, dashboard, social media — ini adalah sweet spot PWA. Fitur offline dengan service worker, performance caching, dan install ke home screen bisa beri pengalaman yang sangat baik tanpa harus maintain dua codebase.

    2. Audience yang Tersebar Luas

    Kalau kamu target user di negara berkembang dengan device yang beragam dan koneksi yang tidak stabil — PWA adalah pilihan terbaik. Satu URL, bisa diakses dari device apapun, dengan offline capability.

    3. Budget Terbatas

    PWA = satu codebase untuk semua platform. Dibanding maintain native iOS + native Android + web, PWA bisa memangkas biaya development secara significant. Untuk startup atau project indie, ini huge.

    4. B2C App dengan Fungsi yang Tidak Perlu Deep Native Access

    Kalau user kamu tidak butuh akses kamera intens, augmented reality, payment NFC, atau hardware yang sangat spesifik — PWA sudah lebih dari cukup.

    Kapan Tetap Pilih Native?

    Ada kondisi di mana native masih pilihan yang lebih masuk akal:

    Game mobile — performa rendering, akses GPU, dan kontrol hardware yang dibutuhkan game masih lebih baik di native.

    App yang sangat hardware-intensive — kamera AI, AR/VR experience, fitness tracker dengan sensor presisi.

    App yang butuh deep OS integration — widget, shortcut di home screen yang kompleks, system-level integration.

    Regulated industries — banking, healthcare, dengan compliance ketat yang mungkin mewajibkan native.

    Framework untuk Membuat PWA di 2026

    Kalau kamu mau mulai, beberapa pilihan populer:

    Next.js + PWA plugin — Paling populer untuk React developer. next-pwa atau @ducanh2912/next-pwa handle service worker secara otomatis.

    Nuxt.js + @vite-pwa — Equivalent untuk Vue developer.

    SvelteKit — Lightweight dan PWA-friendly secara default.

    Vite PWA Plugin — Agnostik framework, bisa dipakai dengan Vite-based setup apapun.

    Checklist PWA minimal:

    • [ ] Web App Manifest (icons, name, theme color)
    • [ ] Service Worker (caching strategy)
    • [ ] HTTPS
    • [ ] Responsive design
    • [ ] Offline fallback page

    Cara Cek “PWA Score” App Kamu

    Chrome DevTools punya Lighthouse yang bisa audit PWA score. Buka DevTools → tab “Lighthouse” → run audit. Kamu akan dapat skor dan rekomendasi spesifik apa yang perlu diperbaiki.

    Realita di Lapangan

    Saya sudah bangun beberapa PWA untuk klien, dan kondisinya begini:

    • User yang install ke home screen itu retention-nya jauh lebih tinggi dari yang akses via browser biasa
    • Install rate dari browser ke home screen masih rendah — user perlu diedukasi atau di-nudge
    • Untuk proyek dengan target Android-heavy, PWA bekerja sangat baik
    • Untuk proyek yang sangat iOS-centric, native masih lebih smooth experience-nya

    Kesimpulan

    PWA di 2026 tidak “menggantikan” native apps, tapi juga tidak mati. Yang lebih tepat: PWA sekarang adalah pilihan yang legitimate untuk banyak use case, bukan compromise yang dipaksakan.

    Kalau proyek kamu adalah app content/data-heavy, budget terbatas, atau audience yang tersebar luas — PWA adalah pilihan yang solid. Kalau butuh deep hardware access atau game mobile — native masih lebih tepat.

    Kuncinya: pilih berdasarkan use case, bukan hype atau counter-hype.


    Lagi planning project mobile dan bingung pilih PWA atau native? Mau diskusi tradeoff yang sesuai situasi spesifik kamu? Yuk ngobrol — hubungi mafadev.

  • WebSocket vs SSE: Pilih Mana untuk Real-time App?

    WebSocket vs SSE: Pilih Mana untuk Real-time App?

    Waktu pertama kali membuat fitur notifikasi real-time, saya langsung buka tutorial WebSocket. Kelihatannya WebSocket itu “jawaban” untuk semua hal real-time. Ternyata tidak selalu begitu.

    Setelah membuat beberapa project yang melibatkan real-time data — live dashboard, chat sederhana, streaming AI response — saya jadi lebih paham kapan harus pilih WebSocket dan kapan SSE (Server-Sent Events) adalah pilihan yang lebih tepat.

    Bedanya dari Konsep Dasar

    WebSocket adalah protokol komunikasi dua arah (bidirectional). Setelah koneksi terbentuk, client dan server bisa saling kirim data kapan saja, tanpa perlu request baru.

    SSE (Server-Sent Events) adalah mekanisme komunikasi satu arah — dari server ke client. Client cukup buka koneksi HTTP biasa, dan server bisa push update kapanpun.

    Analogi simpelnya:

    • WebSocket = telepon. Dua orang bisa ngomong bergantian kapan saja.
    • SSE = radio. Stasiun broadcast, pendengar terima. Pendengar tidak bisa reply lewat channel yang sama.

    Cara Kerja WebSocket

    1. Client kirim HTTP request dengan header Upgrade: websocket
    2. Server setuju, koneksi “upgrade” jadi protokol WebSocket
    3. Sekarang ada koneksi persistent yang bisa dipakai dua arah
    4. Baik client maupun server bisa kirim “frame” data kapanpun
    5. Koneksi tutup kalau salah satu pihak menutupnya
    // Client side
    

    const ws = new WebSocket('wss://example.com/ws');

    ws.onopen = () => {

    ws.send(JSON.stringify({ type: 'subscribe', channel: 'updates' }));

    };

    ws.onmessage = (event) => {

    const data = JSON.parse(event.data);

    console.log('Received:', data);

    };

    // Bisa juga kirim dari client ke server kapanpun

    ws.send(JSON.stringify({ type: 'ping' }));

    Cara Kerja SSE

    1. Client buka HTTP GET request ke endpoint SSE
    2. Server balas dengan header Content-Type: text/event-stream
    3. Koneksi tetap buka, server bisa kirim event kapanpun
    4. Kalau koneksi putus, browser otomatis reconnect (built-in!)
    // Client side — sesimpel ini
    

    const eventSource = new EventSource('/api/updates');

    eventSource.onmessage = (event) => {

    const data = JSON.parse(event.data);

    console.log('Received:', data);

    };

    eventSource.onerror = (error) => {

    console.error('SSE error:', error);

    // Browser otomatis reconnect, kamu tidak perlu handle manual

    };

    // Server side (Node.js/Express)
    

    app.get('/api/updates', (req, res) => {

    res.setHeader('Content-Type', 'text/event-stream');

    res.setHeader('Cache-Control', 'no-cache');

    res.setHeader('Connection', 'keep-alive');

    const sendUpdate = (data) => {

    res.write(data: ${JSON.stringify(data)}\n\n);

    };

    // Kirim data setiap 5 detik sebagai contoh

    const interval = setInterval(() => {

    sendUpdate({ time: new Date(), value: Math.random() });

    }, 5000);

    req.on('close', () => {

    clearInterval(interval);

    });

    });

    Perbandingan Head-to-Head

    | Aspek | WebSocket | SSE |

    |—|—|—|

    | Arah komunikasi | Bidirectional | Server → Client only |

    | Protokol | ws:// atau wss:// | HTTP biasa |

    | Browser support | Semua modern browser | Semua kecuali IE |

    | Auto reconnect | Harus implementasi sendiri | Built-in |

    | Multiplexing (banyak channel) | Ya, tapi manual | Pakai event types |

    | Load balancer friendly | Perlu sticky session | Yes (stateless HTTP) |

    | Overhead | Lebih rendah setelah handshake | Header HTTP tiap batch |

    | Kompleksitas setup | Lebih tinggi | Lebih rendah |

    Kapan Pakai WebSocket?

    Pilih WebSocket kalau:

    Butuh komunikasi dua arah yang sering. Contoh paling klasik: aplikasi chat. User kirim pesan, server forward ke user lain. Kalau pakai SSE, kamu masih butuh endpoint POST terpisah untuk kirim pesan dari client — jadi awkward.

    Online game atau collaborative editing. Google Docs-style editing, whiteboard kolaboratif, game multiplayer — semua butuh latensi rendah dan dua arah.

    Banyak aksi dari client yang perlu real-time feedback. Kalau user sering trigger action dan butuh response cepat, WebSocket lebih natural.

    Use case bagus untuk WebSocket:
    
    • Chat app
    • Multiplayer game
    • Collaborative editor (Figma, Google Docs)
    • Live trading/bidding platform
    • Video call signaling

Kapan Pakai SSE?

Pilih SSE kalau:

Server yang push, client yang dengarkan. Live dashboard dengan chart yang update otomatis, feed berita real-time, notifikasi, status monitoring — ini semua SSE territory.

Streaming AI response. Ini yang paling relevan sekarang. ChatGPT, Claude — mereka streaming response karakter per karakter. Itu SSE! Server push token satu-satu, browser tampilin seiring datang.

Mau simpel dan HTTP-native. SSE bekerja di atas HTTP biasa. Tidak perlu library khusus di server, tidak perlu handle upgrade protocol, lebih mudah di-debug.

Load balancer standar. WebSocket perlu sticky session atau konfigurasi khusus di load balancer. SSE cukup HTTP standar — lebih friendly di infrastructure yang sudah ada.

Use case bagus untuk SSE:
  • Live dashboard / analytics
  • Streaming AI output
  • Notifikasi real-time
  • Live score/update olahraga
  • Log streaming
  • Progress bar untuk long-running task

SSE untuk Streaming AI Response: Contoh Nyata

Ini pattern yang sekarang banyak dipakai:

// Endpoint streaming AI response

app.post('/api/chat', async (req, res) => {

const { message } = req.body;

res.setHeader('Content-Type', 'text/event-stream');

res.setHeader('Cache-Control', 'no-cache');

const stream = await openai.chat.completions.create({

model: 'gpt-4',

messages: [{ role: 'user', content: message }],

stream: true,

});

for await (const chunk of stream) {

const token = chunk.choices[0]?.delta?.content || '';

if (token) {

res.write(data: ${JSON.stringify({ token })}\n\n);

}

}

res.write('data: [DONE]\n\n');

res.end();

});

Clean, straightforward, dan tidak perlu maintain koneksi WebSocket yang stateful.

Mitos: “WebSocket Selalu Lebih Baik karena Lebih Powerful”

Powerful bukan berarti lebih cocok. Kalau kamu pakai WebSocket untuk use case yang sebetulnya cukup SSE, kamu nambah kompleksitas tanpa benefit:

  • Harus handle reconnection logic sendiri
  • Perlu manage WebSocket state di server
  • Load balancer jadi lebih ribet
  • Library/dependency tambahan

SSE itu “cukup” untuk banyak kasus, dan “cukup” sambil lebih simpel adalah pilihan yang bagus.

Hybrid Approach

Kamu juga bisa kombinasikan keduanya:

  • SSE untuk push dari server (update, notifikasi)
  • Regular HTTP POST/fetch untuk aksi dari client

Ini bahkan lebih sederhana dari WebSocket dalam beberapa kasus, karena request-response tetap familiar dan mudah di-debug.

Kesimpulan

  • WebSocket untuk komunikasi dua arah yang intens dan real-time (chat, game, collaborative tools)
  • SSE untuk server push yang satu arah (dashboard, notifikasi, AI streaming)

Mulai dari SSE kalau kamu belum yakin — lebih mudah diimplementasikan, lebih friendly di infrastructure, dan auto reconnect sudah built-in. Upgrade ke WebSocket hanya kalau kamu benar-benar butuh bidirectionality.


Lagi bangun fitur real-time dan bingung pilih mana? Atau ada arsitektur yang mau didiskusikan? Yuk ngobrol — hubungi mafadev.

  • Buat Chatbot WhatsApp untuk Bisnis dengan AI + No-Code

    Buat Chatbot WhatsApp untuk Bisnis dengan AI + No-Code

    Cerita ini familiar: kamu punya bisnis kecil, WhatsApp jadi channel utama komunikasi dengan pelanggan, dan setiap hari ada pertanyaan yang sama berulang — “Stok ada?”, “Ongkir ke mana saja?”, “Bisa bayar apa?”. Kamu harus jawab manual satu-satu, dan kalau telat reply, calon pembeli kabur.

    Chatbot WhatsApp adalah solusinya. Dan yang menarik: kamu tidak harus jago coding untuk membuat ini.

    Sebelum Mulai: Pahami Dulu Opsinya

    Ada beberapa jalur untuk membuat chatbot WhatsApp:

    1. WhatsApp Business App — bisa setup auto-reply, tapi sangat terbatas. Ini bukan chatbot proper, cuma auto-responder sederhana.
    2. WhatsApp Business API + platform no-code — ini yang kita bahas. Lebih powerful, bisa integrasikan AI.
    3. Custom development — fullstack, bisa paling fleksibel tapi butuh developer dan waktu.

    Artikel ini fokus ke jalur kedua: WhatsApp Business API + platform no-code + AI.

    Tools yang Akan Kita Pakai

    Untuk setup yang accessible dan tetap powerful, kombinasi yang saya rekomendasikan:

    • Twilio atau WATI — sebagai gateway WhatsApp Business API
    • n8n atau Make (Integromat) — sebagai automation platform
    • OpenAI API atau Claude API — sebagai otak AI-nya
    • Airtable atau Google Sheets — sebagai “database” sederhana untuk data produk/FAQ

    Kalau mau yang lebih plug-and-play (dan budget lebih longgar), ada platform all-in-one seperti WATI, Respond.io, atau Tidio yang sudah bundle semuanya.

    Langkah 1: Setup WhatsApp Business API

    Ini bagian yang paling “teknis” dan perlu waktu.

    Opsi A: Pakai WATI (Recommended untuk Pemula)

    WATI adalah partner resmi WhatsApp Business API. Mereka sudah handle setup API, dan kamu langsung dapat dashboard untuk manage conversation.

    1. Daftar di wati.io
    2. Hubungkan nomor WhatsApp bisnis kamu (nomor baru, bukan yang sudah ada di WA biasa)
    3. Submit untuk verifikasi bisnis — biasanya 1-3 hari kerja
    4. Setelah approved, kamu sudah punya akses API

    Opsi B: Twilio WhatsApp Sandbox

    Untuk testing dulu sebelum production:

    1. Daftar Twilio, aktifkan WhatsApp Sandbox
    2. Join sandbox dengan kirim kode ke nomor Twilio yang diberikan
    3. Kamu bisa test webhook dan flow sebelum pakai nomor resmi

    Langkah 2: Desain Conversation Flow

    Sebelum setup di platform, desain dulu alur percakapannya. Pertanyaan kunci:

    • Apa skenario utama yang mau dihandle chatbot? (FAQ, order status, booking, dsb.)
    • Kapan chatbot harus handover ke manusia?
    • Tone komunikasinya seperti apa? (formal, santai, campuran?)

    Contoh flow sederhana untuk toko online:

    User: Halo / Hi / Permisi
    

    Bot: "Halo! Selamat datang di [Nama Toko]. Saya bisa bantu apa?

    1. Cek stok produk

    2. Cek ongkir

    3. Status pesanan

    4. Tanya yang lain"

    User: 1

    Bot: [Tanya nama/kode produk yang ingin dicek]

    Bot: [Check database/spreadsheet, reply dengan info stok]

    Untuk pertanyaan di luar flow yang sudah ditentukan, inilah AI masuk.

    Langkah 3: Setup Automation di n8n

    n8n adalah automation platform open-source yang bisa kamu self-host atau pakai cloud version-nya.

    Buat Workflow WhatsApp → AI → Reply

    1. Trigger Node: Webhook

    – n8n akan menerima pesan dari WhatsApp via webhook

    – Copy webhook URL, paste ke konfigurasi WATI/Twilio

    1. Switch Node: Route berdasarkan isi pesan

    – Kalau pesan adalah angka menu (1, 2, 3, 4) → route ke flow yang sesuai

    – Kalau pesan bebas → route ke AI node

    1. OpenAI/Claude Node: Generate jawaban

    – Setup system prompt yang menjelaskan konteks bisnis kamu

    – Pass pesan user sebagai input

    – Contoh system prompt:

    Kamu adalah customer service untuk [Nama Toko], toko online yang jual [produk].
    

    Jawab pertanyaan pelanggan dengan ramah dan singkat.

    Jam operasional: Senin-Sabtu 09.00-17.00 WIB.

    Kalau pertanyaan di luar kemampuanmu, minta pelanggan untuk hubungi WhatsApp admin.

    1. HTTP Request Node: Kirim balasan ke WhatsApp

    – Gunakan API WATI/Twilio untuk kirim pesan kembali ke user

    Langkah 4: Tambahkan “Memory” dengan Spreadsheet

    Supaya chatbot bisa jawab pertanyaan spesifik tentang produk kamu, integrasikan database sederhana:

    1. Buat Google Sheets dengan kolom: nama_produk, stok, harga, deskripsi
    2. Di n8n, tambahkan node Google Sheets yang fetch data ini
    3. Pass data ini ke context prompt AI

    Contoh prompt dengan konteks:

    Kamu adalah CS [Nama Toko]. Berikut data produk kami:
    

    [DATA_PRODUK_DARI_SHEETS]

    Jawab pertanyaan pelanggan berdasarkan data di atas.

    Kalau stok 0, bilang sedang kosong dan tawari untuk notify ketika ready.

    Dengan cara ini, ketika pelanggan tanya “Sepatu size 40 ada tidak?”, AI bisa cek data dan jawab akurat.

    Langkah 5: Handover ke Human Agent

    Ini penting: chatbot bukan untuk replace manusia sepenuhnya.

    Setup kondisi handover:

    • Kalau user bilang “mau beli” atau “mau order” → forward ke human
    • Kalau ada complain atau pertanyaan kompleks → forward ke human
    • Kalau di luar jam operasional → simpan request, notifikasi tim saat jam buka

    Di WATI, kamu bisa assign conversation ke agent tertentu. Di n8n, bisa tambahkan notifikasi ke Slack/email ketika handover terjadi.

    Estimasi Biaya

    | Komponen | Biaya Estimasi |

    |—|—|

    | WATI (starter) | ~$40/bulan |

    | n8n cloud | ~$20/bulan (atau free kalau self-host) |

    | OpenAI API | Pay per use, ~$0.002/1K token |

    | Total estimasi | ~$60-80/bulan |

    Kalau traffic masih rendah (ratusan pesan/hari), biaya OpenAI API-nya sangat kecil — mungkin hanya $2-5/bulan.

    Limitasi yang Perlu Kamu Tahu

    Verifikasi bisnis WhatsApp bisa lama. Meta kadang strict soal approval. Siapkan dokumen bisnis yang lengkap.

    Template message untuk outbound. Kalau kamu yang initiate pesan ke user (bukan reply), harus pakai template yang sudah diapprove Meta. Ini ada prosesnya.

    AI bisa salah. Selalu ada fallback ke human agent, dan monitor conversation secara berkala terutama di awal.

    Kesimpulan

    Membuat chatbot WhatsApp dengan AI dan no-code itu feasible. Dengan kombinasi WATI + n8n + OpenAI, kamu bisa punya sistem yang handle ratusan percakapan tanpa capek — dan tetap bisa masuk loop manusia ketika diperlukan.

    Kuncinya: mulai dari flow yang simpel, test dulu, baru expand. Jangan mau langsung sempurna di awal.


    Punya bisnis yang butuh chatbot WhatsApp? Atau mau setup otomasi yang lebih kompleks? Yuk ngobrol — hubungi mafadev.

  • Cara Tetap Update dengan Teknologi Tanpa Overwhelmed

    Cara Tetap Update dengan Teknologi Tanpa Overwhelmed

    Jujur saja — pernah tidak kamu buka Twitter/X pagi-pagi dan langsung ketemu notifikasi: “Framework X baru rilis v2.0 dengan perubahan breaking change besar”, “AI model baru lebih kencang dari sebelumnya”, “Approach Y sudah deprecated, ganti ke Z”?

    Dan di saat yang sama kamu masih punya deadline proyek, email yang belum dibales, dan kopi yang belum diminum.

    Saya merasakan ini. Dan saya pernah mencoba solusi yang salah: belajar semua hal. Hasilnya? Burnout, shallow knowledge di banyak hal, dan paradoxnya — tetap merasa ketinggalan.

    Masalahnya Bukan Kamu yang Lambat

    Kecepatan perubahan teknologi sekarang, terutama di ekosistem AI, memang tidak wajar. Ini bukan persaingan yang fair antara kamu dan “developer yang selalu update”. Ini adalah firehose yang tidak ada manusianya bisa minum semua sekaligus.

    Yang perlu berubah bukan kecepatan belajar kamu — tapi strategi belajar kamu.

    Strategi yang Saya Pakai: T-Shaped + Perimeter Awareness

    Konsep T-shaped knowledge sudah lama: punya kedalaman di satu-dua area, dan keluasan di banyak area. Ini masih relevan.

    Tapi saya tambahkan satu konsep: perimeter awareness. Artinya, kamu tidak perlu tau cara pakai semua tools baru — tapi kamu perlu tau bahwa tools itu ada dan untuk apa.

    Contoh konkretnya: Saya tidak bisa deploy model ML dari nol. Tapi saya tau bahwa ada tools seperti Replicate atau Hugging Face Inference API yang bisa handle itu dengan minimal kode. Kalau ada project yang butuh itu, saya tau ke mana harus mulai belajar.

    Perimeter awareness itu cheap dan valuable. Depth itu mahal dan harus dipilih dengan hati-hati.

    Sistem Curation yang Benar-Benar Saya Pakai

    1. Batasi Sumber, Bukan Konten

    Alih-alih follow 200 akun teknologi, saya selektif: cukup 10-15 orang/akun yang punya sinyal noise-to-signal ratio bagus. Mereka yang saya pilih adalah orang-orang yang:

    • Praktisi, bukan cuma komentar
    • Jujur soal tradeoff, bukan hype semua
    • Sesekali bilang “ini overrated” atau “jangan ikut tren ini dulu”

    Kalau satu informasi penting, biasanya tetap akan muncul dari multiple sumber yang saya follow. Natural filtering.

    2. Weekly Review, Bukan Daily Anxiety

    Saya stop scroll berita teknologi setiap hari. Sebaliknya, saya punya ritual Jumat sore: 30 menit baca digest mingguang. Beberapa yang saya pakai:

    • TLDR Newsletter — singkat, padat, multi-topik
    • JavaScript Weekly / Node Weekly — kalau kamu di ekosistem JS
    • ByteByteGo newsletter — untuk system design dan infrastructure

    30 menit seminggu lebih efektif dari 10 menit setiap hari yang penuh anxiety.

    3. Learn-by-Doing dengan “Spike” Project

    Cara saya benar-benar internalize teknologi baru: buat proyek kecil yang tidak ada tekanan. Saya sebut ini “spike” — istilah dari Agile yang artinya eksplorasi terbatas waktu.

    Aturannya: maksimal 2 jam, satu tujuan konkret. Misalnya, “Dalam 2 jam, saya mau bisa deploy REST API sederhana pakai Bun runtime”. Kalau 2 jam dan belum kelar — ya sudah, saya sudah tau cukup untuk memutuskan apakah worth dilanjutkan atau tidak.

    Ini hindarin rabbit hole yang membuat satu hari hilang cuma buat setup environment.

    4. Second Brain yang Minimal

    Saya simpan catatan di Obsidian, tapi dengan disiplin: hanya hal yang sudah saya pakai atau sudah saya validasi sendiri. Bukan setiap artikel menarik yang saya baca.

    Struktur folder saya simpel:

    • /stack — tools dan tech yang aktif saya pakai
    • /explored — hal yang sudah saya spike, dengan catatan singkat
    • /radar — hal yang ingin saya explore nanti

    Kalau /radar sudah lebih dari 20 item, saya delete yang paling bawah. Kalau 6 bulan tidak saya sentuh, kemungkinan besar saya tidak akan pernah sentuh.

    Red Flags: Tanda-tanda Kamu Terjebak “Learning Theater”

    Learning theater adalah kondisi di mana kamu merasa belajar tapi sebetulnya cuma konsumsi konten tanpa tujuan konkret.

    Cirinya:

    • Bookmark artikel tapi tidak pernah dibaca lagi
    • Ikut kursus tapi tidak pernah selesai
    • “Save for later” di YouTube yang numpuk ribuan
    • Nonton tutorial tapi tidak pernah menulis kode sendiri

    Kalau ini kamu — kamu tidak sendirian. Solusinya bukan tambah sumber belajar, tapi kurangi dan aktifkan.

    Framework Keputusan: Mana yang Worth Dipelajari?

    Kalau ada teknologi baru dan kamu tidak yakin worth dipelajari atau tidak, tanya diri sendiri:

    1. Ada tidak project konkret yang butuh ini dalam 3 bulan ke depan? Kalau iya, prioritaskan. Kalau tidak, masuk radar.
    2. Apakah ini solving problem yang saya punya, atau solving problem yang belum ada? Banyak teknologi keren tapi untuk masalah yang belum kamu hadapi.
    3. Apakah ada yang sudah pakai ini di production dan happy? Tunggu tech matang sebelum all-in.
    4. Apakah ini replacement atau addition? Replacement (misalnya Bun vs Node) butuh lebih banyak consideration. Addition (tools baru) bisa coba lebih santai.

    Tentang AI: Ketika Perubahan Lebih Cepat dari Kemampuan Adaptasi

    Di era AI sekarang, satu model baru bisa membuat workflow kemarin jadi obsolete. Saya pilih pendekatan ini: pelajari caranya berpikir dan prompt dengan baik, bukan hafalkan spesifik setiap model.

    Prompt engineering yang baik, pemahaman kapabilitas dan limitasi AI, dan kemampuan evaluasi output — ini lebih durable dari tau spesifik versi model tertentu.

    Kesimpulan

    Tetap update bukan berarti tahu segalanya. Ini soal sistem yang sustainable: curate sumber yang baik, belajar dengan konteks konkret, dan punya awareness tentang apa yang ada tanpa harus menguasai semuanya sekaligus.

    Kamu tidak bisa minum lautan. Tapi kamu bisa tau di mana lautan itu ada, dan tau bagaimana cara renang ketika kamu butuh.


    Mau diskusi tentang sistem belajar yang efektif untuk developer? Atau butuh guidance teknologi apa yang worth diprioritaskan untuk project kamu? Yuk ngobrol — hubungi mafadev.

  • Raycast AI: Launcher yang Membuat Produktivitas Naik 2x Lipat

    Raycast AI: Launcher yang Membuat Produktivitas Naik 2x Lipat

    Pertama kali saya dengar Raycast, saya pikir: “Ah, launcher lagi. Emangnya ada yang kurang dari Spotlight?” Ternyata saya salah besar. Setelah tiga bulan pakai Raycast — dan sekarang plus fitur AI-nya — saya tidak bisa bayangin kerja tanpa ini.

    Ini bukan artikel berbayar, bukan review palsu. Ini cerita jujur dari pemakaian sehari-hari.

    Raycast Itu Apa, Sebetulnya?

    Raycast adalah application launcher untuk macOS. Fungsi dasarnya mirip Spotlight (Command + Space): buka app, cari file, lakukan quick action. Tapi bedanya ada di kedalaman customization dan ekosistem extension-nya.

    Yang membuat Raycast menonjol:

    • Extensions marketplace yang isinya ratusan integrations — GitHub, Jira, Notion, Linear, Vercel, kamu sebut apa saja
    • Script commands — kamu bisa membuat shortcut ke bash/Python/Node script sendiri
    • Window management built-in yang menggantikan apps seperti Magnet
    • Clipboard history yang bisa disearch
    • Dan sekarang: Raycast AI

    Raycast AI: Lebih dari Sekadar ChatGPT di Launcher

    Raycast AI diluncurkan dan langsung jadi alasan saya upgrade ke Pro. Konsepnya simpel: AI yang terintegrasi langsung ke workflow kamu, bukan di tab browser terpisah.

    AI Commands

    Kamu bisa highlight teks di mana saja — di Slack, di VS Code, di browser — tekan shortcut, dan Raycast AI langsung munculkan action: improve writing, fix grammar, explain code, translate, summarize. Ini yang paling sering saya pakai.

    Contoh workflow nyata yang saya lakukan:

    • Menulis email kasar → highlight → “Improve writing” → jadi lebih sopan dan profesional
    • Ada error message aneh → highlight → “Explain this” → langsung dapat penjelasan kontekstual
    • Ada code snippet dari Stack Overflow → “Explain this code” → paham sebelum saya copy-paste

    AI Chat dalam Konteks

    Yang membedakan Raycast AI dari buka ChatGPT di browser: kamu bisa pakai “Quick AI” dari mana saja tanpa meninggalkan workflow. Tekan shortcut, tanya, dapat jawaban, lanjut kerja. Tidak ada context switching ke tab lain.

    Saya pakai ini buat:

    • Quick fact check saat menulis
    • Generate regex pattern yang saya males mikir
    • Tanya “bagaimana cara rename branch di git” saat lupa syntax
    • Draft pesan Slack yang tidak mau keliatan grumpy

    AI Extensions

    Extensions pihak ketiga juga mulai integrasikan AI. Misalnya extension untuk Linear bisa generate task description dari natural language. Extension GitHub bisa summarize PR.

    Fitur Non-AI yang Juga Saya Sering Pakai

    Jangan lupa, Raycast tanpa AI saja sudah powerful:

    Clipboard History: Berapa kali kamu copy sesuatu lalu tertimpa copy lain dan panik? Raycast simpen history clipboard kamu dan bisa disearch. Ini satu fitur yang sudah hemat berkali-kali.

    Snippets: Shortcut untuk teks yang sering dipakai. Saya punya snippet untuk email template, code boilerplate, bahkan emoji kombinasi yang sering saya pakai di PR review.

    Window Management: Tidak perlu beli Magnet atau Mosaic lagi. Raycast punya built-in window tiling yang bisa dikasih keyboard shortcut.

    File Search: Lebih cepat dari Spotlight, lebih pintar dalam nemu file yang baru-baru saja dipakai.

    Kekurangan yang Jujur

    Saya tidak mau beri review manis-manis saja.

    Raycast AI butuh koneksi internet. Ini obvious, tapi kalau kamu kerja di tempat dengan internet flaky, ini bisa jadi masalah.

    Harganya bukan murah. Raycast AI masuk tier Pro yang harganya sekitar $8-10/bulan. Buat developer yang sudah langganan berbagai tools, ini bisa membuat daftar tagihan makin panjang.

    macOS Only. Kalau kamu pakai Windows atau Linux, sorry, ini bukan buat kamu. Raycast belum ada di platform lain.

    Learning curve di awal. Raycast punya banyak fitur dan customization. Kalau kamu tipe yang tidak suka setup, mungkin butuh effort di minggu pertama sebelum bisa produktif.

    Versus Alfred

    Alfred sering disebut sebagai kompetitor utama. Keduanya bagus, tapi beda filosofi:

    • Alfred lebih mature, punya Powerpack (one-time purchase), lebih banyak advanced scripting
    • Raycast lebih modern UI, extensions-nya lebih mudah dibuat dan diinstall, AI integration lebih seamless

    Untuk developer yang sering pakai tools modern (GitHub, Linear, Notion), Raycast terasa lebih natural.

    Cara Setup Cepat untuk Developer

    Kalau kamu mau coba:

    1. Download dari raycast.com (gratis untuk tier dasar)
    2. Install extension yang relevan dengan workflow kamu: GitHub, VS Code, Terminal
    3. Setup beberapa snippets untuk teks yang sering kamu ketik
    4. Coba Raycast AI dengan shortcut default, biasakan highlight-then-ask
    5. Kalau nyaman, explore window management untuk gantiin Magnet

    Satu minggu pakai serius, kamu akan sudah tidak mau balik.

    Kesimpulan

    Raycast AI bukan cuma launcher yang ditambahin fitur AI sebagai gimmick. Integrasi-nya terasa natural karena AI hadir tepat di titik-titik workflow kamu butuhkan, bukan di aplikasi terpisah yang harus kamu buka sendiri.

    Buat developer macOS yang ingin tingkatkan produktivitas tanpa harus ganti seluruh workflow — ini adalah tools yang worth it dicoba.


    Punya project yang butuh setup tools dan workflow yang efisien? Atau mau diskusi soal stack produktivitas developer? Yuk ngobrol — hubungi mafadev.

  • Monorepo vs Polyrepo: Pengalaman Nyata dari Project Kecil

    Monorepo vs Polyrepo: Pengalaman Nyata dari Project Kecil

    Kalau kamu pernah tanya ke developer soal monorepo vs polyrepo, siap-siap dapat jawaban panjang yang isinya semua teori. Saya juga dulu begitu — baca dokumentasi, nonton talk dari engineer Google atau Meta, lalu bingung sendiri karena situasi mereka beda jauh sama kondisi proyek saya.

    Jadi saya mau cerita dari pengalaman nyata. Bukan dari skala perusahaan raksasa, tapi dari proyek kecil-menengah yang kamu dan saya mungkin hadapi sehari-hari.

    Dulu Saya Polyrepo Fanatik

    Waktu pertama kali membuat beberapa proyek bersamaan — katakanlah ada REST API, ada frontend React, ada library util yang dipakai keduanya — saya instinctively membuat tiga repo terpisah. Kelihatannya rapi kan? Setiap repo punya tujuan jelas, pipeline CI/CD sendiri, dan tim bisa kerja sendiri-sendiri.

    Masalah mulai muncul ketika library util-nya perlu update. Alurnya jadi:

    1. Update kode di repo utils
    2. Bump versi, publish ke npm (atau npm link kalau lokal)
    3. Buka repo api, update dependency
    4. Buka repo frontend, update dependency juga
    5. Test dua-duanya
    6. Baru deploy

    Buat perubahan sekecil apapun. Ini makan waktu dan membuat frustrasi.

    Monorepo Bukan Sekedar “Satu Folder Gede”

    Saya kemudian coba monorepo, dan yang penting dipahami dulu: monorepo bukan berarti kamu taruh semua kode dalam satu folder tanpa struktur. Itu namanya “mudball” dan itu bencana.

    Monorepo yang proper punya struktur seperti ini:

    my-workspace/
    

    ├── apps/

    │ ├── api/

    │ └── frontend/

    ├── packages/

    │ └── utils/

    ├── package.json # root workspace

    └── pnpm-workspace.yaml

    Dengan workspace (pnpm, yarn, atau npm workspaces), ketika saya update packages/utils, apps/api dan apps/frontend langsung kebagian perubahan itu tanpa perlu publish ke npm dulu. Ini game changer.

    Apa yang Saya Rasakan Setelah Pakai Monorepo

    Yang Enak

    Refactor jadi lebih berani. Kalau saya rename function di utils, TypeScript langsung beri tahu di mana saja breakage-nya — di api, di frontend, semuanya sekaligus. Dulu? Saya harus test manual satu-satu.

    Satu PR untuk perubahan lintas repo. Sebelumnya, kalau ada fitur yang ngejalanin perubahan di tiga tempat, saya harus koordinasi tiga PR di tiga repo berbeda. Sekarang satu PR, satu review, satu merge.

    Konsistensi config lebih mudah. ESLint, Prettier, TypeScript config — bisa di-share dari root. Tidak ada lagi kejadian tsconfig di satu repo beda sama yang lain karena lupa sinkronisasi.

    Yang Tidak Enak

    Clone pertama kali itu berat. Kalau proyeknya sudah gede, git clone bisa makan waktu lama. Ini serius, terutama kalau di-onboard developer baru.

    CI/CD jadi lebih kompleks. Kamu harus setup “affected builds” — supaya kalau yang berubah cuma frontend, pipeline buat api tidak ikut jalan. Tools seperti Turborepo atau Nx bisa bantu, tapi ada learning curve-nya.

    Semua orang lihat semua kode. Ini bisa jadi masalah kalau ada bagian kode yang seharusnya restricted. Di polyrepo, access control lebih granular by default.

    Kapan Pilih Monorepo?

    Pilih monorepo kalau:

    • Kamu developer solo atau tim kecil yang ngelola beberapa app yang saling berbagi logika
    • Banyak shared code antara app-app yang ada
    • Kamu yang deploy semuanya — tidak ada tim lain yang punya control terpisah
    • Ingin refactor lintas-modul lebih sering

    Kapan Tetap di Polyrepo?

    Tetap polyrepo kalau:

    • Setiap repo benar-benar independent — beda tech stack, beda tim, tidak ada shared code sama sekali
    • Ada kebutuhan access control ketat per service
    • Tim-nya besar dan tersebar, dan setiap tim butuh otonomi deploy penuh
    • Tech stack-nya heterogen — satu Python, satu Go, satu JavaScript. Monorepo lebih awkward di sini.

    Tool yang Membuat Monorepo Lebih Enak

    Kalau kamu mau coba monorepo, jangan bare-bone. Pakai salah satu dari ini:

    • Turborepo — dari Vercel, ringan, bagus buat task pipeline dan caching build
    • Nx — lebih feature-rich, ada code generator, tapi lebih berat setup-nya
    • pnpm workspaces — kalau mau minimalis, ini saja cukup sebagai fondasi

    Saya personally sekarang pakai Turborepo + pnpm workspaces. Setup-nya sekitar setengah hari, dan setelah itu hidup jadi lebih mudah.

    Kesimpulan: Tidak Ada yang Selalu Benar

    Monorepo bukan peluru ajaib, polyrepo juga bukan. Ini soal context.

    Kalau proyeknya punya banyak shared code, kamu atau tim kamu yang manage semuanya, dan sering refactor lintas-modul — monorepo akan memberi ROI yang bagus. Kalau proyeknya benar-benar independent dan tim-nya besar dengan otonomi masing-masing — polyrepo lebih masuk akal.

    Yang paling penting: jangan terlalu overthink di awal. Mulai dengan yang paling simple, dan migrate kalau sudah ada pain point nyata. Arsitektur yang paling baik adalah yang kamu dan timmu bisa maintain dengan nyaman.


    Punya project yang strukturnya lagi membuat pusing? Atau mau diskusi soal setup monorepo dari nol? Yuk ngobrol — hubungi mafadev.

  • Open Source AI Models di 2026: Alternatif yang Sudah Matang?

    Open Source AI Models di 2026: Alternatif yang Sudah Matang?

    Dua tahun lalu, kalau ada yang bilang “pakai model open source untuk production”, reaksi yang wajar adalah skeptis. Kualitasnya masih jauh di bawah GPT-4, halusinasi sering, dan untuk use case bisnis nyata — terlalu berisiko.

    2026? Ceritanya sudah sangat berbeda.

    Saya sudah coba berbagai model open source selama beberapa bulan terakhir untuk keperluan nyata — bukan benchmark sintetis, tapi task yang ada di proyek sehari-hari. Dan hasilnya mengejutkan, bahkan bagi saya sendiri.

    Lanskap yang Berubah Cepat

    Ekosistem AI open source berkembang dengan kecepatan yang sulit diikuti. Beberapa perkembangan kunci yang membentuk kondisi sekarang:

    Meta terus riliskan Llama — dari Llama 2 yang mengecewakan (karena lisensi yang restrictive), ke Llama 3 yang kompetitif, ke iterasi berikutnya yang terus memperbaiki benchmark dan kemampuan following instruction.

    Mistral AI dari Prancis membuktikan bahwa model yang lebih kecil bisa sangat efisien. Mixtral (mixture-of-experts architecture) menunjukkan cara yang lebih efisien untuk scale kemampuan tanpa scale parameter secara linear.

    Pemain dari Asia — Alibaba dengan Qwen, DeepSeek dari China, dan lainnya — masuk dengan model yang mengejutkan secara kualitas, beberapa bahkan outperform model barat di benchmark tertentu.

    Komunitas fine-tuning yang aktif — ribuan model fine-tuned untuk task spesifik tersedia di Hugging Face. Mau model yang bagus untuk coding? Ada. Untuk role-play? Ada. Untuk bahasa spesifik? Ada.

    Model-model yang Layak Diperhatikan

    Llama 3.x Series (Meta)

    Llama 3 adalah titik balik di mana model open source mulai terasa “cukup baik” untuk banyak use case production. Tersedia dalam berbagai ukuran: 8B untuk hardware ringan, 70B untuk yang butuh kualitas tinggi.

    Kelebihan:

    • Instruction following yang solid
    • Context window yang panjang (128K tokens)
    • Komunitas dan ekosistem fine-tune yang besar
    • Tersedia di hampir semua platform (Ollama, HuggingFace, Replicate, dll)

    Keterbatasan:

    • Untuk task yang butuh nuanced reasoning, masih di bawah frontier models
    • Multimodal capabilities terbatas di model base

    Best for: General purpose chatbot, summarization, klasifikasi, coding assistance sederhana.

    Mistral & Mixtral (Mistral AI)

    Mistral AI konsisten menghasilkan model yang “punch above their weight” — kecil tapi performa mengejutkan. Mixtral 8x7B menggunakan mixture-of-experts yang mengaktifkan hanya sebagian parameter per token — efficient dan capable.

    Kelebihan:

    • Sangat efisien secara komputasi
    • Mistral-Nemo (12B) dan Mistral-Large performanya impressive untuk ukurannya
    • Apache 2.0 license — bebas pakai komersial tanpa restriksi

    Best for: Deployment di edge/on-premise dengan constraint hardware, atau kalau butuh cost-efficient production deployment.

    Qwen 2.5 Series (Alibaba)

    Qwen 2.5 dari Alibaba adalah salah satu yang paling mengejutkan. Benchmark-nya kompetitif dengan model jauh lebih besar, terutama untuk:

    • Code generation
    • Mathematical reasoning
    • Multilingual (termasuk bahasa Asia yang underrepresented di model lain)

    Tersedia dari 0.5B sampai 72B, ada model khusus code (Qwen2.5-Coder) dan math (Qwen2.5-Math).

    Best for: Coding tasks, task yang butuh multilingual support, atau mathematical reasoning.

    DeepSeek Coder / DeepSeek-V2

    DeepSeek dari China membuat gelombang besar ketika model coding mereka mengungguli banyak model lebih besar di HumanEval dan benchmark coding lainnya. DeepSeek-V2 dengan MoE architecture juga sangat efisien.

    Best for: Code completion, code review, debugging assistance — kalau coding adalah primary use case, ini sangat worth trying.

    Phi-3 / Phi-4 (Microsoft)

    Microsoft Research’s “small language model” series membuktikan bahwa model 3-14B bisa sangat capable kalau dilatih dengan data berkualitas tinggi. Phi-3 dan Phi-4 sangat baik untuk:

    • Task yang bisa dirun di hardware minimal
    • Edge deployment (mobile, IoT)
    • Task reasoning yang tidak butuh knowledge luas

    Best for: Deployment di resource-constrained environment, atau production yang butuh latency sangat rendah.

    Gemma 2 (Google)

    Google’s open source contribution via Gemma 2 — tersedia dalam 2B, 9B, dan 27B. Architecture yang clean, performa solid, dan dioptimasi untuk inference efisien.

    Kelebihan:

    • Performa strong di kelasnya
    • Support yang bagus dari Google infrastructure (bisa run di TPU)
    • License yang friendly untuk commercial use

    Benchmark vs Real-World Performance: Jangan Tertipu

    Ini catatan penting: benchmark akademik dan performance di task nyata bisa sangat berbeda.

    Model yang score tinggi di MMLU atau HumanEval tidak selalu berarti terbaik untuk use case kamu yang spesifik. Saya pernah menemukan model dengan benchmark sedang tapi sangat konsisten untuk task extraction spesifik yang saya butuhkan, dan sebaliknya.

    Cara evaluasi yang lebih jujur:

    1. Ambil 20-50 sampel dari data nyata kamu
    2. Buat prompt yang representatif dengan use case kamu
    3. Run semua candidate model dengan setting yang sama
    4. Evaluate secara manual atau dengan LLM judge
    5. Baru putuskan

    Jangan percaya benchmark saja. Test sendiri.

    Cara Cepat Coba: Ollama

    Untuk development dan eksperimen lokal, Ollama adalah cara paling mudah:

    # Install Ollama
    

    curl -fsSL https://ollama.ai/install.sh | sh

    Download dan run model

    ollama pull llama3.2

    ollama pull mistral-nemo

    ollama pull qwen2.5-coder:7b

    ollama pull deepseek-coder-v2

    Chat langsung di terminal

    ollama run llama3.2

    Atau gunakan API (compatible dengan OpenAI format)

    curl http://localhost:11434/api/chat -d '{

    "model": "llama3.2",

    "messages": [{"role": "user", "content": "Halo!"}]

    }'

    Semua itu gratis, lokal, dan tidak ada data yang keluar dari laptop kamu.

    Fine-tuning: Dari Generic ke Spesifik

    Salah satu keunggulan terbesar open source vs cloud API: kamu bisa fine-tune.

    Kalau kamu punya data training yang spesifik untuk domain kamu — support tickets, FAQ, product descriptions, kode codebase kamu — fine-tuning bisa menghasilkan model yang jauh lebih baik dari model generic untuk task tersebut.

    Framework untuk fine-tuning yang accessible:

    • Unsloth — fine-tuning yang jauh lebih cepat dan hemat VRAM
    • Axolotl — konfigurasi berbasis YAML yang fleksibel
    • LLaMA Factory — GUI-friendly untuk yang tidak mau setup script

    Untuk fine-tuning ringan di GPU consumer (RTX 3090/4090 atau bahkan 3060), LoRA dan QLoRA adalah teknik yang memungkinkan fine-tune model besar tanpa butuh full GPU cluster.

    Kapan Open Source Masuk Akal, Kapan Tidak

    Gunakan open source AI kalau:

    • Privasi data adalah prioritas (data tidak boleh keluar)
    • Volume inference tinggi dan cost API jadi signifikan
    • Butuh customize perilaku model (fine-tuning, system prompt yang tidak bisa diubah user)
    • Mau kontrol penuh atas versioning model
    • Task yang spesifik dan repetitif dimana specialized model bisa outperform general model

    Pertimbangkan cloud API kalau:

    • Butuh kualitas tertinggi untuk task yang kompleks
    • Tim kecil, tidak ada bandwidth untuk manage model deployment
    • Butuh multimodal yang mature (vision, audio)
    • Skalanya unpredictable

    Realita di 2026: Banyak production system yang sukses pakai hybrid — open source untuk pre-processing dan task volume tinggi, cloud API untuk final step yang butuh kualitas tertinggi.

    Ekosistem yang Terus Tumbuh

    Salah satu hal yang membuat saya optimis tentang open source AI: ekosistemnya tumbuh secara eksponensial.

    HuggingFace sudah punya ratusan ribu model. Tools untuk deployment (vLLM, TGI, Ollama) semakin mature. Framework untuk fine-tuning semakin accessible. Hardware inference semakin terjangkau.

    Gap antara open source dan frontier models masih ada — untuk reasoning yang sangat kompleks, analisis yang nuanced, atau multimodal yang berat. Tapi gap itu menyempit setiap bulan.

    Untuk developer, ini artinya: sudah saatnya eksperimen serius dengan open source AI, bukan hanya sebagai sandbox tapi sebagai kandidat production yang nyata untuk banyak use case.


    Mau eksplorasi atau implementasikan open source AI di project kamu? Dari pemilihan model sampai deployment di production, yuk diskusikan — hubungi mafadev.