15 puan yazan GN⁺ 2025-09-08 | 1 yorum | WhatsApp'ta paylaş
  • ftape sürücüsü, 1990'lardan kalma yedekleme teyplerinden (QIC-80) veri kurtarabilen tek Linux açık kaynak kernel sürücüsüydü
  • Ancak bu sürücü 2000'den sonra artık bakım görmediği için yalnızca eski Linux ortamlarında kullanılabiliyordu
  • Claude Code kullanılarak eski kaynak kod, modern Linux kernel sürümlerine uygun olacak şekilde yeniden düzenlendi ve bağımsız bir kernel modülüne başarıyla dönüştürüldü
  • Bu süreçte Claude, eski işlevleri ve yapı türlerini otomatik olarak modern API'lere dönüştürdü; kullanıcı da çıktı sonuçlarını elle analiz ederek bazı yapılandırma hatalarını düzeltti
  • AI kodlama ajanı kullanım deneyimi, programcı yeteneklerinin artırılması ve yeni teknoloji ya da framework'lere hızlı onboarding konusunda içgörüler sundu

Arka plan: eski yedekleme teyplerini kurtarma ve ftape sürücüsü

  • QIC-80 gibi teyp kartuşlarından veri kurtarmak, yazarın hobilerinden biri
  • Bu teyplerin çoğu, floppy denetleyicisine bağlı özel bir teyp sürücüsü gerektiriyor
    • Bu sürücüler çoğunlukla 1990'larda küçük işletmeler veya bireyler tarafından yedekleme amacıyla kullanıldı
    • Floppy denetleyicisi kullanımı, ayrı bir SCSI adaptörü gerektirmeden düşük maliyetli bir çözüm sunuyordu; ancak hız sınırı (500Kbps) ve standart dışı protokol gibi çeşitli dezavantajları vardı
  • Bu teyp aygıtlarıyla iletişim kurmak için Linux tarafında ftape kernel sürücüsü zorunlu
    • Saf ham ikili veriyi yalnızca ftape okuyabildiği için kurtarma sürecinde buna mutlaka ihtiyaç var
  • Ancak ftape sürücüsü 2000'ler civarından beri bakım almadığı için modern Linux kernel sürümlerinde kullanılamıyordu
    • Bu nedenle veri kurtarmak gerektiğinde her seferinde eski bir Linux'u (ör. CentOS 3.5) doğrudan açmak gerekiyordu
Reklam

Claude Code ile kernel sürücüsünü modernize etmeye başlamak

  • Yazarı, Claude Code'dan depo açıklamasıyla birlikte "sürücüyü modern kernel üzerinde derlenebilir hale getirmesini" istedi
  • Claude, güncel kernel API'lerine ve yapılara uygun biçimde eski işlevleri ve yapı türlerini bulup değiştirdi
    • Birkaç tur geri bildirim ve manuel düzeltmenin ardından, hatasız derlenen bir sürücü kodu ortaya çıktı
  • İlk kod yalnızca tüm kernel kaynak ağacı içinde derlenebiliyordu; ancak ek istekle bağımsız harici modül derleme sistemi de otomatik olarak üretildi
    • Böylece .ko dosyası olarak ayrı bir kernel modülü oluşturmak mümkün oldu ve gerçek donanım bağlantı testlerine geçildi

Sorun çözme süreci

  • Kernel modülü sorunsuz yüklendi, ancak sürücüyü tanıma ve iletişim kurma sorunları ortaya çıktı
    • İşlemler sudo yetkisi gerektirdiği için Claude bunları doğrudan tekrar tekrar çalıştıramadı; bu yüzden dmesg logları elle iletilerek sorunların izini sürüldü
  • Claude, logları ve önceki başarılı örnekleri karşılaştırarak varsayılan I/O port adresinin ayarlanmamış olması ve parametre başlatmayla ilgili bir hatayı buldu
    • Varsayılan değer -1'den 0xffff'e dönüşmüş ve bu da algılamanın başarısız olmasına yol açmıştı; doğru adres yeniden ayarlanarak sorun çözüldü
  • Sonunda modül düzgün şekilde yüklendi ve test teybinden veri dökümü alma işlemi başarıyla tamamlandı
Reklam

AI kodlama ajanlarıyla iş birliği deneyiminin düşündürdükleri

  • Claude Code ile etkileşim, gerçekten bir mühendisle çalışıyormuş gibi, "junior bir geliştiriciyle iş birliği" hissi veriyor
    • Kullanıcının mimari kararları, sorun tespiti ve yön belirleme konularında inisiyatifi elinde tutması gerekiyor
  • Alan odaklı anahtar kelimeler ve somut istekler verildikçe daha etkili çalışıyor
  • AI ajanları, uygun türde işler verildiğinde üretkenliği keskin biçimde artırıyor; bu yüzden sınırlarını ve güçlü yanlarını anlamak önemli
  • AI, yazarın kapasitesini adeta ikiye katladı. Elle yapılsa haftalar sürebilecek iş, günlük konuşmalar ve geri bildirimlerle birkaç günde tamamlandı
    • Bu süreçte modern kernel geliştirme pratikleri, x86 mimarisi, yeni komut satırı araçları gibi gerçekten faydalı beceriler de öğrenildi
  • Rust, Flutter gibi yeni framework'lerde ilk onboarding ve uyum sürecini büyük ölçüde hızlandırdığı özellikle vurgulanıyor

Sonuç: ftape yeniden hayata dönüyor

  • 25 yıl sonra ftape yeniden modern Linux'ta derlenebilir ve kullanılabilir hale geldi
  • Yazar ek özellik geliştirmeleri ve testler yapmayı sürdürüyor; floppy tabanlı sürücülerin yanında paralel port tabanlı aygıtlar için de desteği doğruladı
  • Fiziksel aygıt neredeyse eskisiyle aynı kalsa da işletim sistemi CentOS 3.5'ten Xubuntu 24.04'e geçmiş durumda

Referans

  • ftape proje kaynak kodu GitHub'da açık
  • Yazarın toplama ekipman listesi gibi ayrıntılar kişisel blogunda görülebilir

1 yorum

 
GN⁺ 2025-09-08
Hacker News görüşleri
  • Modülü bizzat yükleyip dmesg çıktısını tekrar tekrar Claude’a elle yapıştırdım
    Claude’u tercih etmemin başlıca nedenlerinden biri, uzun süren süreçleri başlatıp çıktılarını okuyarak debug edebilmesi
    Burada manuel adımı atlamak için çeşitli hack yöntemleri vardı — örneğin dmesg’i yerel bir UDP portuna pipe edip Claude’un bir listener başlatmasını sağlamak gibi

  • Bence iyi bir örnek
    Bu tür araçları kullanırken iki ana etki görüyorum
    Birincisi, zaten aşina olduğum framework’lerde Claude tekrar eden kısımlarda hızlı pattern matching yaparak üretkenliği ciddi biçimde artırıyor
    İkincisi, yeni bir framework öğrenirken de çok daha hızlı onboarding sağlıyor — bu özellikle farklı stack’ler kullanan büyük şirketlerde çok faydalı
    Yapay zekanın kapasitesini gerçekten anlamak için hızla değişen teknolojilere ve framework’lere ciddi zaman yatırmak gerekiyor
    Claude Code ya da Claude 4.0’ı 100 saatten fazla kullanmadıysanız potansiyelini tam olarak kavramamış olabilirsiniz
    “Yazılımcı olmayan birinin hissiyatla kod yazıp başını belaya sokması” senaryosu X’te (eski Twitter) yaygın olabilir, ama deneyimli bir geliştirici istikrarlı biçimde zaman ayırırsa bambaşka bir deneyim yaşıyor

    • Asıl kilit nokta bu
      Ben Claude Code’u her gün mevcut codebase değişikliklerinde ana araç olarak kullanıyorum
      Deneme yanılmayla kendi sürecimi oluşturdum; bunun sonucunda hem üretkenliğim hem de büyük deneylere girişme isteğim belirgin biçimde arttı
      Özellikle veri yapıları, şema ve iç API’leri önceden ben tasarladığımda, Claude Code’un iç araçların UI’ını neredeyse tek seferde iyi çıkarmasını gerçekten seviyorum
      Basit tekrar işlerinden ve framework karmaşıklığından sıyrılıp daha soyut düşünmeye imkân vermesi, 16 yıllık kariyerimde büyük bir dönüm noktası oldu

    • Evet
      Yazar aslında Claude’dan Linux 2.4 sürücüsünü 6.8’e port etmesini istemiş
      İnternette yeterince ilgili kaynak olduğu için işin çoğunu Claude halletmiş, gerçekten karmaşık ve çekirdek kısımlarda ise yazarın uzmanlığı gerekmiş
      “Yapay zekayı kendi becerilerini katlayarak artıran bir araç olarak kullanmak” sözü burada gerçekten anlam kazanıyor
      Burada sahip olduğunuz beceri 0 ise, yapay zekayla çarpsanız da sonuç 0’a yakın olur, hatta eksi üretkenlik bile çıkabilir

    • Bizim ekipte de LLM üzerinden yeni alanlara cesurca giren insanlar var, ama herkese Claude 4 thinking agent kullandırsak bile ortaya hâlâ inanılmaz miktarda alakasız kod çıkabiliyor
      Kodlama kariyerinin büyük kısmında pattern matching’e alıştıysanız, LLM agent bunun üstüne bir kat daha pattern matching yapıyor; ama bu deneyime sahip olmayan ekip arkadaşları için bu daha çok baş ağrısı yaratıyor
      LLM agent’lar insanların yapabildiği pattern matching’i çok daha hızlı yapıyor, ama genel anlamda insandan belirgin biçimde üstün olduklarını sanmıyorum

    • Sadece yeni framework’leri keşfetmekte değil, yeni dillerde de faydalı
      Bizim ekip Ruby kullanıyor ve Ruby okunması kolay olduğu için sözdizimini ayrıca öğrenmeden LLM’e kod yazdırıp kararları kendimiz veriyoruz
      Ruby bilmeseniz bile ekibin kabul edeceği seviyede kodu hemen yazabilir hâle geliyorsunuz; bu da yabancı bir ortamda bile hızla üretken olmayı sağlıyor
      (Not: Pull Request’leri ekip arkadaşları inceliyor)

    • “Kendi becerilerini katlayarak artıran araç” sözü bu hafta küçük bir projeyi 10 kez tekrar tekrar kurarken bana gerçekten çok şey hissettirdi
      Yapay zekanın biraz dağınık ürettiği şeyleri benim yönlendirmemle markup, stil ve JS açısından temizce birleştirip konsolide etmede asıl gücü ortaya çıkıyor
      Startup’lar gibi kodlama konvansiyonlarının zayıf olduğu ortamlarda pattern matching taleplerini uygulamak zor olabilir, ama güçlü ve olgun bir codebase’de etkisinin tamamen farklı olacağını hayal edebiliyorum

  • Prompt’ları mümkün olduğunca somut, alana özgü anahtar kelimelerle kurmak gerektiğini düşünüyorum
    Belirli bir dil ya da framework hakkında teknik anlayışınız yetersizse prompt’ta belirsizlik oluşuyor ve LLM bu boşlukları kafasına göre doldurduğu için niyetinizden farklı sonuçlar çıkması kolaylaşıyor
    İşte bu belirsizlik bug’ların kaynağı oluyor
    “Patlayıcı biçimde artırma”nın arka yüzü de bu

    • Sadece “C sınıfına tuple constructor lazım” derseniz, Claude’un “Bir dakika…” diye cevap vermesini umarım
  • Böyle yazıları okuyunca, LLM’lerden önce talebe kıyasla gerçekte yapılan iş miktarının aslında çok düşük olduğunu düşündürüyor

    • Ben hâlâ darboğazın “icra” değil “pazarlanabilir fikir” olduğunu düşünüyorum
      İnsanların gerçekten para ödemek isteyeceği işlerin sayısı o kadar da fazla değil

    • Sorun her zaman iş eksikliği değil; o işi yapacak ön bilgiye ve deneyime sahip insanların azlığı
      Kernel geliştirme deneyiminiz yoksa, prompt’ları ne kadar iyi yazarsanız yazın yazarın ulaştığı sonuca ulaşmanız zor
      Teoride tüm eski sürücüleri en güncel kernel’e “modernize etmek” LLM’lerle mümkünmüş gibi görünebilir, ama pratikte mutlaka insan denetimi gerekir ve özellikle de uzman biri gerekir; gerçekte bu tür uzmanların sayısı, bakımı gereken sürücü sayısına göre çok az
      Alan Kay ve Joe Armstrong’un iyi bir tartışması ve röportajı var; burada çoğu kodun, bir hedefi değiştirip tekrar derlemeye elverecek bir spesifikasyon olmadan yazılmış olmasının yarattığı sorunlara değiniyorlar
      Eğer resmi bir spec kodun dışında da var olsaydı, sürücüyü yeni kernel hedefine taşımak “spec’i yeniden derlemek” kadar kolay olabilirdi
      Ama bugün elde olan şey spec değil eski kod olduğu için, LLM eski kodu modern koda taşırken yalnızca benzer kodlar arasında pattern matching yapıyor; gerçek anlamı anlayıp garanti edemiyor — bu yüzden insan becerisi kesinlikle gerekli

  • Yapay zeka sayesinde kernel hacking’e giriş bariyerinin düşeceğine dair bir hisse kapılmıştım
    Her seferinde bunun doğru olduğunu hissediyorum
    Yakında embedded/ARM donanım desteği daha da genişleyebilir ve yeni hafif akıllı cihazlara yönelik OS’ler ortaya çıkabilir

    • Yapay zekayı iyi kullanırsanız becerilerinizi hızlıca yükseltebilirsiniz
      Ama çoğu kişi yapay zekadan “evi tamamen inşa etmesini” istiyor; oysa onu “çekiç sallamaya yardım eden bir araç” gibi kullanmak çok daha etkili
  • Bence bu, yapay zekanın rolünü ve sınırlarını doğru anlayıp uygun şekilde kullanan bir geliştiriciye iyi bir örnek
    Özellikle de şüpheciliği sayesinde sürücüyü ayrı bir modül olarak yapmış olması etkileyici

  • Başkalarının değinmediği “önemli bir ipucuna” dikkat çekmek istiyorum
    Yazar açıkça, “Biraz kernel modülü deneyimim var ve C dilini iyi biliyorum; o yüzden Claude’un sonucunu gereğinden fazla büyütmemek gerekir” diyor
    Yani gerçekten üç kez sorup çalışan bir kernel modülü elde etmiş değil; birçok kez konuşup kodu da defalarca elle düzeltmiş
    Temel kernel modülü iç yapısını anlamadan modernizasyonun asla mümkün olmayacağını da söylüyor — bu, hangi kod üretim aracını kullanırsanız kullanın akılda tutulması gereken bağlam
    Ayrıca Claude Code ile çalışmanın “junior bir mühendisle birlikte çalışma” deneyimine benzediğini yazmış; ne istersen yapıyor, hata gösterilince hemen özür diliyor ve övüyor, bu da gerçek bir mühendislikten çok biraz dalkavuk bir stile benziyor diye değerlendirmiş
    Son olarak yazarın, “Gerçekten isteseydim bu işi tek başıma da yapabilirdim, ama 25 yıl önceki kernel geliştirme tarzını yeniden öğrenmem gerekirdi” demesi
    Sonuçta modernizasyonun özünün “legacy çözümü doğru anlamak ve neye ihtiyaç olduğunu kavramak” olduğunu yeniden hatırlatıyor
    Özellikle de öğrenmeden geçebilmenin bir avantaj olarak görülmesi bence ayrıca ilginç

    • Sınır çizer gibi davranan tutumlar zararlı
      Agent’ın bana bilmediğim projeleri açıklamasını çok faydalı buluyorum
      Geçenlerde Firefox kaynak kodunu clone edip qwen-code ile Firefox’un yapay zeka özelliklerini ve nasıl implemente edildiğini sordum; gerçekten harika şeyler öğrendim
      Öğrenme biçimi çok daha iyi hâle geldi
  • Bunun insanlara daha fazla güç veren bir değişim olduğunu düşünüyorum
    Yazar uzun zamandır tutkuyla yan projeler yapıyor ve araçların gelişmesi gerçekten güzel bir şey
    Ancak alan çok niş olduğunda topluluk desteği zayıf kalabiliyor; burada LLM’ler devreye girip özelleşmiş sorunların çözümüne yardımcı olabiliyor
    Giriş bariyeri giderek düşüyor ve teknik altyapısı daha zayıf olan insanlar bile daha basit özel durum problemlerini kendileri çözebilecek bir döneme giriyoruz
    Daha fazla insanın deneme yapabilmesini sağlayan olumlu bir değişim

  • Yükseltmeden sonra hızın nasıl değiştiğini merak ediyorum

    • Aynı donanımı aynı sürücüyle kontrol ettiği için hız muhtemelen aynıdır