11 poin oleh GN⁺ 2026-01-02 | 1 komentar | Bagikan ke WhatsApp
  • Disusun agar para developer dapat merasakan pembelajaran sekaligus tantangan kreatif melalui 73 ide proyek pemrograman
  • Setiap proyek mencakup berbagai bidang seperti jaringan, sistem, AI, grafis, keamanan, database, dan lainnya
  • Sebagian besar ide dirancang agar pengguna mengimplementasikan langsung prinsip inti teknologi, sehingga teori dan praktik dapat dipelajari bersama
  • Setiap item menyertakan tautan ke paper, dokumentasi resmi, dan tutorial sehingga jalur belajar menjadi lebih jelas
  • Memberikan kesempatan untuk memandang pemrograman bukan sekadar coding, melainkan seni eksplorasi dan penciptaan

Gambaran umum

  • Banyak developer ingin memulai side project tetapi tidak tahu harus membuat apa
    • Di internet ada banyak ide yang umum dan membosankan
  • Artikel ini menyajikan 73 proyek yang bernilai tinggi untuk belajar dan juga menyenangkan
    • Setiap proyek disusun agar pembaca dapat belajar dengan mengimplementasikan langsung konsep teknis tertentu

Proyek jaringan dan sistem

  • Klien BitTorrent: mengimplementasikan klien unduh file untuk mempelajari cara kerja jaringan P2P
  • Server DNS: membangun server yang mencakup penerimaan kueri, parsing paket, resolusi domain, dan caching
  • Runtime container: mempelajari kernel namespace, chroot, dan isolasi proses tanpa Docker
  • Stack TCP/IP: mengimplementasikan langsung protokol TCP/IP di user space Linux
  • Load balancer: mengimplementasikan distribusi permintaan antar server backend, health check, dan session persistence

Data dan sistem terdistribusi

  • Protokol RAFT: mengimplementasikan sistem yang mendukung konsensus terdistribusi dan pemulihan gangguan
  • Klon Redis: membangun database in-memory dengan perintah dasar, persistensi RDB, replikasi, dan transaksi
  • Broker Kafka: mengimplementasikan sistem log terdistribusi yang menangani pembuatan topik serta permintaan produksi dan konsumsi pesan
  • Mesin SQL dan optimizer: mempelajari eksekusi kueri dan proses optimisasi dengan meniru struktur SQLite
  • Sistem CI: membangun sistem terintegrasi yang mengotomatiskan pemantauan repositori Git, eksekusi tes, dan pelaporan hasil

Kecerdasan buatan dan algoritme

  • Solver Wordle: program penebak kata yang memanfaatkan konsep teori informasi dan entropi
  • Generator deepfake: mengimplementasikan transformasi wajah menggunakan Optimal Transport
  • Random forest: menyelesaikan masalah klasifikasi dengan mengimplementasikan langsung decision tree dan random forest
  • Framework jaringan saraf: membangun framework deep learning yang mencakup tensor, autograd, dan optimizer
  • Desain evolusioner: simulasi yang secara otomatis mengevolusikan struktur mesin menggunakan algoritme genetika

Grafis dan pengembangan game

  • Ray tracer: merender adegan 3D yang terdiri dari bola, bidang, dan pencahayaan
  • Renderer OpenGL: mengimplementasikan renderer mini untuk mempelajari dasar-dasar pemrograman grafis
  • Remake Dangerous Dave: merekreasikan game klasik menggunakan SDL
  • Mesin catur: mengimplementasikan permainan catur termasuk mesin UCI
  • Procedural Crossword: membuat teka-teki silang otomatis menggunakan constraint propagation

Keamanan dan kriptografi

  • Server autentikasi (JWT/Sessions): mengimplementasikan kriptografi, kedaluwarsa token, dan manajemen sesi
  • Sistem voting anonim: merancang voting terenkripsi dengan zero-knowledge proof (ZKP)
  • VPN: membangun mesh VPN yang meneruskan trafik tanpa server pusat
  • Eksperimen malware: menguji respons firewall di lingkungan virtual machine
  • Arsip Zip: mengimplementasikan sendiri kompresi, enkripsi, dan bundling

Pengembangan web dan aplikasi

  • Server web: menangani permintaan HTTP, menyajikan file statis, routing, dan dukungan reverse proxy
  • Editor kolaboratif: mengimplementasikan editor teks terdistribusi berbasis CRDT
  • Mesin browser: membangun mesin sederhana yang melakukan parsing dan rendering HTML/CSS
  • Editor video: editor sisi klien yang berjalan di dalam browser
  • Ekstensi browser: menyimpan dan mengisi otomatis status kata sandi, formulir, dan clipboard

Visualisasi data dan pencarian

  • Googlebot: membuat web crawler untuk mempelajari struktur dasar sistem pencarian
  • Mesin pencari Wikipedia: mengimplementasikan indexing, tokenisasi, dan algoritme ranking
  • Graf pengetahuan: memvisualisasikan relasi antar entitas dan memperbaruinya otomatis dari web
  • Mesin Google Maps: sistem peta yang mengindeks data jalan, medan, dan lokasi
  • Sistem caching CDN: merancang struktur cache yang mencegah permintaan duplikat untuk aset statis

Hardware dan embedded

  • Sistem laser tag: sistem deteksi real-time yang memanfaatkan encoding IR dan komunikasi MQTT
  • Aplikasi smart home: proyek IoT yang mendukung kontrol perangkat IR, penjadwalan, dan otomasi
  • Emulator Game Boy Advance: merekreasikan struktur CPU, memori, grafis, dan input

Blockchain dan finansial

  • Node Bitcoin: mengimplementasikan fungsi pengunduhan dan verifikasi blok
  • Bot trading saham: melakukan perdagangan otomatis dengan sistem berbasis event
  • Voting anonim dan smart contract: sistem voting andal berbasis blockchain

Penutup

  • Ke-73 proyek menekankan pendekatan eksperimental untuk belajar dengan mengimplementasikan langsung teknologi inti
  • Setiap ide terhubung ke dokumentasi resmi, paper, dan tutorial untuk mendorong pembelajaran berbasis praktik
  • Sebuah usulan praktis untuk menemukan kembali pemrograman sebagai seni eksplorasi dan penciptaan

1 komentar

 
GN⁺ 2026-01-02
Opini Hacker News
  • Ada yang merasa daftar ini terlihat seperti dibuat oleh AI, tetapi menurut saya justru "membangun sendiri dari nol" adalah cara terbaik untuk mengurangi ketergantungan pada AI
    Di Jepang, proses seperti ini disebut 'shugyo (修行)'. Seorang perajin mengasah alatnya dalam waktu lama bukan demi efisiensi, melainkan untuk memahami hakikat baja
    Membuat Redis atau Git sendiri bukan soal hasil akhirnya, melainkan membangun model berpikir lewat gesekan dalam prosesnya. Inilah bagian yang tidak bisa digantikan AI

    • Fokus Jepang pada ketelitian selalu mengagumkan. Saya juga sedang berusaha menerapkan sikap seperti itu dalam hidup saya
    • Saya jadi penasaran apakah ini berarti mencakup pengulangan. Apakah maksudnya membuat ulang Redis sampai sekitar 20 kali?
    • Ada sedikit unsur pemasaran, tetapi tetap bagus karena mereka menyarankan melihat dokumentasi resmi Redis alih-alih tutorial berbayar mereka sendiri
    • Menyebut-nyebut Jepang di setiap komentar terasa agak berlebihan. Dilihat dari umur akunnya, sedikit terasa seperti bot
    • Banyak sinematografer terbaik ternyata berasal dari tim pencahayaan. Menurut saya prinsipnya sama
  • Memperkenalkan kumpulan ide proyek yang saya buat: Challenging programming projects every programmer should try

    • Daftar ini jauh lebih bagus karena ringkas dan menjelaskan dengan jelas apa yang dipelajari dari tiap proyek. Sebaliknya, tulisan aslinya terasa seperti "100 buku yang harus dibaca", lebih mirip daftar daripada sesuatu yang benar-benar bisa dipraktikkan
    • Waktu kuliah saya pernah mengimplementasikan Space Invaders dengan Zync FPGA, dan sangat menyenangkan merancang pemisahan antara hardware dan software. Ada teman yang membuat blok analisis frekuensi mikrofon sehingga gamenya bisa dikendalikan dengan recorder
    • Saya lebih suka daftar ini. Saya belum pernah mencoba membuat spreadsheet, tetapi itu juga bukan sesuatu yang benar-benar ingin saya lakukan
    • Senang melihat tulisan ini lagi karena dulu pernah saya bookmark
  • Ini adalah daftar dari codecrafters.io. Platform ini membuat kita mengimplementasikan proyek langkah demi langkah sambil menyediakan integration test dan komunitas
    Saya juga sedang mengerjakan proyek 'Build your own Redis' dan cukup menyenangkan. Ini bukan buatan AI, sepertinya hanya kumpulan ide yang didapat dari komunitas

  • Saya sangat merekomendasikan mencoba membuat klien BitTorrent sendiri. Spesifikasinya sederhana dan persoalan detailnya menarik. Setelah selesai, ada kepuasan tersendiri saat mengunduh kernel Debian secara langsung
    Jika menambahkan implementasi tautan Magnet atau fitur seeding, pembelajarannya bisa lebih dalam lagi. Dari pengalaman ini saya jadi tertarik pada sistem P2P dan DHT (seperti Chord)

    • Waktu kuliah saya pernah mengerjakan proyek membuat 'klien P2P', dan proses mengimplementasikan sendiri hal-hal seperti handshaking atau desain ukuran chunk benar-benar menyenangkan
  • Daftar ini agak aneh. Misalnya #58 adalah implementasi malloc, yang cukup sulit bagi pemula, lalu tepat setelahnya #59 menyuruh membuat protokol streaming dari nol. Rentang tingkat kesulitannya terlalu besar

    • Saat dibaca sampai pertengahan, mulai terasa ada gaya penulisan seperti AI. Tidak alami
  • Saya penasaran bagaimana pendapat orang tentang tantangan pemrograman /g/ dari 4chan. Pembagian tingkat kesulitannya terasa agak sewenang-wenang. Misalnya, mengatakan bootloader lebih sulit daripada compiler C terasa agak aneh
    Tautan gambar referensi

    • Tautannya tidak langsung membuka gambar. Mungkin lebih baik diarahkan ke file .md
  • Ada baiknya mencoba membuat sendiri alat atau protokol yang kecil dan lengkap. Kepuasan yang didapat dari kejelasan dan rasa tuntas, bukan dari skalanya, itu besar

  • Saya jadi bertanya-tanya apakah ini 'astroturfing' (promosi yang direkayasa)

  • Ada proyek yang bisa selesai dalam sehari, tetapi ada juga yang skalanya setara tugas akhir sarjana atau tesis master

  • Melihat daftar ini membuat saya merasa seperti bukan programmer yang baik

    • Kebanyakan proyek memang terasa berat di awal, tetapi kalau dipecah menjadi bagian-bagian kecil, sebenarnya sangat mungkin untuk dikerjakan
    • Bahkan bagi developer berpengalaman pun, banyak tugas di sini yang sulit. Tapi justru itu alasan mengapa ini menantang. Jangan membandingkan diri dengan orang lain, fokuslah pada proses belajar
      Untuk mulai, ada baiknya melihat riset atau karya pendahulu di bidang yang Anda minati. Misalnya, Anda bisa merujuk ke karya Adam Dunkels. Karena untuk embedded, ukurannya kecil dan mudah dipahami
      Jika perlu, saya juga merekomendasikan memanfaatkan alat AI untuk membantu memahami atau menghasilkan kode