11 puan yazan GN⁺ 2026-01-02 | 1 yorum | WhatsApp'ta paylaş
  • 73 adet programlama projesi fikri, geliştiricilerin hem öğrenme hem de yaratıcı meydan okumayı aynı anda deneyimleyebilmesi için derlendi
  • Her proje ağ iletişimi, sistemler, yapay zeka, grafikler, güvenlik, veritabanları gibi farklı alanları kapsıyor
  • Fikirlerin çoğu, temel teknik prensipleri doğrudan uygulamayı hedefleyecek şekilde tasarlandığından, teori ve pratiği birlikte öğrenmek mümkün
  • Her maddede ilgili makaleler, resmi belgeler, eğitim bağlantıları yer alarak öğrenme yolunu netleştiriyor
  • Programlamayı basit bir kodlama işi değil, keşif ve yaratım sanatı olarak görmeyi sağlayan bir vesile sunuyor

Genel bakış

  • Birçok geliştirici ne yapacağını bilmeden bir yan projeye başlamak istiyor
    • İnternette yaygın ve sıkıcı pek çok fikir var
  • Bu yazı, öğrenme değeri yüksek ve eğlenceli 73 proje sunuyor
    • Her proje, belirli teknik kavramları doğrudan uygulayarak öğrenmeye yardımcı olacak şekilde kurgulanmış

Ağ iletişimi ve sistem projeleri

  • BitTorrent istemcisi: P2P ağ iletişiminin nasıl çalıştığını öğrenmek için dosya indirme istemcisi geliştirme
  • DNS sunucusu: Sorgu alma, paket ayrıştırma, alan adı çözümleme ve önbellekleme işlevlerini içeren bir sunucu kurma
  • Container runtime: Docker olmadan kernel namespace'leri, chroot ve süreç yalıtımını öğrenme
  • TCP/IP stack: Linux kullanıcı alanında TCP/IP protokolünü doğrudan uygulama
  • Load balancer: Arka uç sunucuları arasında istek dağıtımı, sağlık kontrolü ve oturum sürekliliği işlevlerini uygulama

Veri ve dağıtık sistemler

  • RAFT protokolü: Dağıtık uzlaşma ve hata kurtarmayı destekleyen bir sistem uygulama
  • Redis klonu: Temel komutlar, RDB kalıcılığı, replikasyon ve transaction içeren bellek içi veritabanı kurma
  • Kafka broker'ı: Topic oluşturma, mesaj üretme/tüketme isteklerini işleyen dağıtık günlük sistemi uygulama
  • SQL motoru ve optimizer: SQLite yapısını taklit ederek sorgu yürütme ve optimizasyon sürecini öğrenme
  • CI sistemi: Git deposunu izleme, test çalıştırma ve sonuç raporlamayı otomatikleştiren entegre sistem kurma

Yapay zeka ve algoritmalar

  • Wordle çözücüsü: Bilgi teorisi ve entropi kavramlarını kullanan bir kelime tahmin programı
  • Deepfake üreticisi: Optimal Transport kullanarak yüz dönüşümü gerçekleştirme
  • Random forest: Karar ağaçları ve random forest'ı doğrudan uygulayarak sınıflandırma problemlerini çözme
  • Sinir ağı framework'ü: Tensor, autograd ve optimizer içeren bir derin öğrenme framework'ü kurma
  • Evrimsel tasarım: Genetik algoritmalar kullanarak mekanik yapıları otomatik olarak evrimleştiren bir simülasyon

Grafikler ve oyun geliştirme

  • Ray tracer: Küreler, düzlemler ve ışıklardan oluşan 3D bir sahneyi render etme
  • OpenGL renderer: Grafik programlamanın temellerini öğrenmek için mini bir renderer uygulama
  • Dangerous Dave yeniden yapımı: SDL kullanarak klasik oyunu yeniden oluşturma
  • Satranç motoru: UCI motoru dahil bir satranç oyunu geliştirme
  • Procedural Crossword: Kısıt yayılımını kullanarak otomatik bulmaca üretimi

Güvenlik ve kriptografi

  • Kimlik doğrulama sunucusu (JWT/Sessions): Kriptografi, token süresinin dolması ve oturum yönetimini uygulama
  • Anonim oylama sistemi: Sıfır bilgi ispatı (ZKP) kullanan kriptografik oylama tasarımı
  • VPN: Merkezi sunucu olmadan trafiği aktaran bir mesh VPN kurma
  • Kötü amaçlı yazılım deneyi: Sanal makine ortamında güvenlik duvarı tepkilerini test etme
  • Zip arşivleyici: Sıkıştırma, şifreleme ve paketleme işlevlerini doğrudan uygulama

Web ve uygulama geliştirme

  • Web sunucusu: HTTP isteklerini işleme, statik dosya sunma, routing ve reverse proxy desteği
  • İşbirlikçi düzenleyici: CRDT tabanlı dağıtık bir metin düzenleyici uygulama
  • Tarayıcı motoru: HTML/CSS ayrıştırma ve render işlemi yapan basit bir motor kurma
  • Video düzenleyici: Tarayıcı içinde çalışan istemci taraflı bir düzenleyici
  • Tarayıcı eklentisi: Parola, form ve clipboard durumunu kaydetme ve otomatik doldurma

Veri görselleştirme ve arama

  • Googlebot: Bir web crawler oluşturarak arama sistemlerinin temel yapısını öğrenme
  • Wikipedia arama motoru: İndeksleme, tokenization ve ranking algoritmalarını uygulama
  • Bilgi grafiği: Varlıklar arası ilişkileri görselleştirme ve web üzerinden otomatik güncelleme
  • Google Maps motoru: Yol, arazi ve yer verilerini indeksleyen bir harita sistemi
  • CDN caching sistemi: Statik varlıklara yönelik tekrar eden istekleri önleyen bir cache yapısı tasarlama

Donanım ve gömülü sistemler

  • Laser tag sistemi: IR encoding ve MQTT iletişimini kullanan gerçek zamanlı algılama sistemi
  • Akıllı ev uygulaması: IR cihaz kontrolü, zamanlama ve otomasyonu destekleyen bir IoT projesi
  • Game Boy Advance emülatörü: CPU, bellek, grafik ve giriş yapısını yeniden oluşturma

Blokzincir ve finans

  • Bitcoin düğümü: Blok indirme ve doğrulama işlevlerini uygulama
  • Hisse senedi alım satım botu: Olay güdümlü bir sistemle otomatik işlem yürütme
  • Anonim oylama ve akıllı sözleşmeler: Blokzincir tabanlı güvenilir bir oylama sistemi

Sonuç

  • 73 proje, temel teknolojileri doğrudan uygulayarak öğrenmeye dayalı deneysel yaklaşımı vurguluyor
  • Her fikir, resmi belgeler, makaleler ve eğitim bağlantılarıyla uygulama odaklı öğrenmeyi teşvik ediyor
  • Programlamayı keşif ve yaratım sanatı olarak yeniden keşfetmeyi sağlayan pratik bir öneri sunuyor

1 yorum

 
GN⁺ 2026-01-02
Hacker News görüşleri
  • Bazıları bu listenin yapay zeka tarafından üretilmiş gibi göründüğünü söylüyor, ama bence tam tersine, ‘en baştan kendin yapma’ yaklaşımı yapay zekaya bağımlılığı azaltmanın en iyi yolu
    Japonya’da buna ‘şugyo (修行, Shugyo)’ deniyor. Ustalar verimlilik için değil, çeliğin özünü anlamak için uzun zaman boyunca aletlerini biler
    Redis ya da Git’i bizzat yapmak, ortaya çıkan üründen çok süreçteki sürtünme sayesinde bir düşünme modeli inşa etmek demek. Yapay zekanın yerini dolduramayacağı kısım tam da bu

    • Japonların ayrıntılara odaklanması her zaman hayranlık uyandırıyor. Ben de bu tavrı kendi hayatıma uygulamaya çalışıyorum
    • Bunun tekrar içerip içermediğini merak ediyorum. Redis’i mesela 20 kez yeniden yapmak gibi mi?
    • Biraz pazarlama unsuru var ama yine de kendi ücretli eğitimleri yerine Redis’in resmi belgelerine yönlendirmelerini olumlu buluyorum
    • Her yorumda Japonya’da kullanılan bir kavramdan söz etmesi biraz fazla gibi. Hesabın yaşı da düşünülünce hafif bot havası veriyor
    • En iyi görüntü yönetmenlerinin çoğu eskiden ışık ekibindeydi. Bence aynı ilke burada da geçerli
  • Kendi hazırladığım proje fikirleri derlemesi olan Challenging programming projects every programmer should try yazısını paylaşıyorum

    • Bu liste daha derli toplu ve her projede ne öğrenileceğini açıkça anlattığı için çok daha iyi. Orijinal yazı ise biraz ‘okunması gereken 100 kitap’ listesi gibi; uygulamadan çok sıralama hissi veriyor
    • Lisans döneminde Zync FPGA ile Space Invaders yaptım; donanım ve yazılımı ayrı tasarlamak gerçekten çok eğlenceliydi. Bir arkadaş da mikrofon frekans analizi bloğu yapıp oyunu blok flütle kontrol etmişti
    • Bu liste daha çok hoşuma gitti. Elektronik tablo yapmayı henüz denemedim ama açıkçası onu özellikle yapmak da istemiyorum
    • Zamanında yer imlerine eklediğim bir yazıydı, yeniden görmek güzel oldu
  • Liste codecrafters.io kaynaklı. Bu platform, projeleri adım adım uygulatırken entegrasyon testleri ve topluluk da sunuyor
    Ben de şu anda ‘Build your own Redis’ projesini yapıyorum ve epey eğlenceli. Yapay zekanın yazdığı bir şey değil; daha çok topluluktan gelen fikirlerin derlenmiş hali gibi görünüyor

  • Kendi BitTorrent istemcinizi yazmayı güçlü biçimde tavsiye ederim. Spesifikasyon basit, ayrıntıdaki problemler ise ilginç. Bitirdikten sonra Debian kernel’ini gerçekten onunla indirmek çok tatmin edici
    Magnet bağlantıları ya da seeding desteği eklerseniz daha da derin öğrenebilirsiniz. Bu deneyim bende P2P sistemleri ve DHT’ye (Chord vb.) karşı ilgi uyandırdı

    • Üniversitedeyken ‘P2P istemcisi’ yapma projem olmuştu; handshake ya da parça boyutu tasarımı gibi şeyleri doğrudan uygulamak gerçekten çok keyifliydi
  • Bu liste biraz garip. Örneğin #58 malloc gerçekleştirmesi; yeni başlayanlar için oldukça zor bir konu, ama hemen sonraki #59’da akış protokolünü sıfırdan yazmanızı istiyor. Zorluk seviyesi farkı fazla büyük

    • Ortalara doğru gelince yapay zeka yazmış gibi duran bir üslup hissediliyor. Doğal değil
  • 4chan’in /g/ programlama meydan okumaları hakkındaki görüşleri merak ediyorum. Zorluk sınıflandırması biraz keyfi gibi. Mesela bootloader’ın C derleyicisinden daha zor sayılması tuhaf geliyor
    Referans görsel bağlantısı

    • Bağlantı görseli doğrudan açmıyor. Bir .md dosyasına bağlansa daha iyi olurdu
  • Küçük ama tamamlanmış bir araç ya da protokolü bizzat yapmak iyi olur. Ölçekten çok netlik ve tamamlanmışlık hissi daha büyük tatmin veriyor

  • Acaba bu bir tür astroturfing mi diye düşündüm

  • Bazı projeler bir günde biterken bazıları lisans bitirme projesi ya da yüksek lisans tezi ölçeğinde

  • Bu listeye bakınca iyi bir programcı olmadığımı düşünüyorum

    • Projelerin çoğu ilk bakışta göz korkutucu gelir ama küçük parçalara bölerseniz gayet yapılabilir hale gelir
    • Aslında deneyimli geliştiriciler için bile zor olan çok görev var. Ama zaten meydan okuma olmalarının nedeni de bu. Kendinizi başkalarıyla kıyaslamayın; öğrenme sürecine odaklanın
      Başlamak için ilgi duyduğunuz alandaki önceki çalışmalara bakmak iyi olur. Örneğin Adam Dunkels’in çalışmaları faydalı olabilir. Gömülü sistemler için olduklarından küçük ve anlaşılması kolay
      Gerekirse kodu anlamak ya da üretmek için yapay zeka araçlarından yardım almak da tavsiye edilir