Bu sene boyunca yapacağımız Friday Night Programmer çalışmalarını toplayacağımız genel repodur.
Yeni yıl planlarım arasında yer alan ve çok uzun zamandır gerçekleştirmek istediğim bir canlı yayın serisi var. Her cuma gecesi kendimi geliştirmek, tecrübelerimi aktarmak, bilgilerimi pekiştirmek ve tartışmak için çalışma masamın başında olmayı planlıyorum. Programın misyonu ve içeriği aşağıdaki gibidir.
Friday Night Programmer uzun soluklu bir çalışma alanı. Tek bir proje değil de birden fazla konuyu ele almak için, çeşitli pratikler ve kod antrenmanları yapmak için kullandığım bir alan. Bu oyun sahasında zaman içerisinde birçok eklenti, yardımcı araç veya fikir gündeme gelecek. Bu eklemeler yeni ihtiyaçları da beraberinde getirecek. Örneğin sisteme eklediğim bağımsız servis sayısı arttıkça bunların kolayca keşfedilmesini sağlamak için (Service Discovery) Consul aracına ihtiyaç olacak. Ya da genel bir ftp ortamı için bir docker imajı gerekecek. Dolayısıyla oyun sahası zamanla genişleyecek. İçeriye alınan enstrümanları göz önüne aldığımızda aşağıdaki gibi bir High Level Diagram göz önüne alabiliriz.
Genel Ortamlar başlığı altında yer alan enstrümanlar docker-compose üzerinden kullanılır. docker-compose.yml dosyasını inceleyebilirsiniz. Docker içeriklerini ayağa kaldırmak için aşağıdaki komutu çalıştırmak yeterlidir. Elbette sistemde docker'ın yüklü olduğunu varsayıyorum.
docker-compose up -d
Bununla birlikte servislerin sayısı arttıkça onları nasıl çağırdığımızı da unutabiliriz. Var olan ve ilerleyen zamanlarda eklenemsi düşünülen servisler için bir Postman koleksiyonundan yararlanılması iyi olacaktır. İlgili dosyaya buradan ulaşabilirsiniz. Bu arada yer yer api adreslerini Environment değişkenleri ile de tutmak yararlı olabilir. Örneğin project_api servisi için docker adresi environment değişkeni olarak eklenmiştir. Bu anlamda Environment dosyasını Postman ortamına aktarmakta yarar var.
Sezon boyunca yardımcı olabilecek bazı dokümanlar, araçlar, gereçler...
- Bölümlerde ele alınacak ana senaryolar Use Cases isimli dokümanda yer almaktadır.
- Sezon boyunca birçok dummy uygulamaya ihtiyacımız olacak. Dummy servisler, veritabanları, docker imajları vs Bunlara ait özet bilgileri Utilities dokümanında bulabilirsiniz.
Diğer yandan bazı işlerimizi kolaylaştıracak rehber niteliğindeki how to dokümanları da aşağıdaki listede toplanabilir.
- Oyun Programlamada ECS Kullanımı
- Rust ve Bellek Güvenliği
- Enum Veri Türünün Rust Tarafında Etkili Kullanımı
- Ollama Yardımıyla Deepseek Dil Modelini .Net Platformunda Kullanmak
- Pub/Sub mesajlaşma için Nats Kullanımı(Rust ile)
- Rust ile WASM Kullanımında İkinci Round
- Rust ile WASM Kullanımı
- Popüler git branch stratejilerinden olan git flow hakkında bilgi almak için GitFlowIntroduction isimli dokümana bakabilirsiniz.
Bu ilk yayınımız tanışma ile geçti. Yayın sırasında aşağıdaki başlıklara değindiğimiz oldu.
- Northwind veritabanı Hatta Microsoft github reposunda çalışabileceğimiz popüler veritabanları için script'ler de yer alıyor. Northwind, Contoso, pubs
- İlk paramı kazandığım zamanının ötesinde olan geliştirme aracı Delphi
- Yayın sırasında önerdiğim Mark J.Price'ın Tools and Skills for .NET 8 kitabı
Yayının ilerleyen kısımlarında şu konu üzerinde durmaya çalıştık. Managed/Unmanaged ortamlar ve burada Rust'ın konumu. C# ve Java gibi managed environment'ler üzerinde koşan diller esasında line of business diye ifade edebileceğimiz iş çözümlerinin hızlı, az hatayla geliştirilmesinde endüstriyel olarak kendilerini kanıtlamış diller. Bu ortamlar belleği bizim için yönetir ve GC (Garbage Collector) gibi mekanizmalar kullanılmayan referansların bellekten düşürülmesini unutmamızı engeller (en basit anlamda) Java ve C# kodları derlendiğinde bir ara kod çıktısı oluşur ve bir çalışma zamanı (runtime) bu kodları yürütür. Bu çalışma zamanı olası program çökmelerine karşı istisnaları (exception) yönetmemizi de sağlar. Tür güvenliği (type safety) söz konusudur, geniş kütüphane desteği ile birçok işlevi kolayca gerçekleştirmemizi sağlarlar.
Ancak uzaya gönderdiğimiz bir mekiğin yörünge hesaplama modülü ve bağlı sistemlerinde, ya da az enerji tüketimi ile yüksek hesaplama sürelerine çıkmamız beklenen akıllı bir donanım modülünde, gömülü sistemlerin çoğunda, makinelerin programlamasında pek fazla tercih edilmezler. Burada devreye unmanaged ortamlarda koşan C, C++ gibi diller giler. Ne varki bu dillerde kodlama yapmak epey külfetli olabilir. Memory optimazasyonunu çok ileri seviyede yapabilsekde referansların yönetimi kolay değildir. Kullanılmayan bir referansı bellekte düşürmeyi unutmaya görün veya boşaltılmış bir bellek alanına referans eden başka bir atamayı gözden kaçırmaya görün... Olaylar karışabilir ve aşağıdaki gibi bir çok sorun tarihe altın harflerle kazınabilir.
Görsel DevNot Summit 2023'te yaptığım Rust dili sunumuna aittir. İşte tam bu notkada hızlı geliştirme yapmamızı sağlayan güvenli ortamlarla, yüksek hız ve performansa kavuşabildiğimiz ama geliştirmenin görece zor olduğu ortamlar arasında kalırız. Rust tam orta noktada her iki tarafın ihtiyaçlarını giderebilecek kadar güçlü çözümlerle gelir. Unmanaged ortamlarda karşılaşabileceğimiz ve yukarıdaki görselde ifade edilen birçok hatayı henüz derleme _(compile time) aşamasında engeller. Rust dilinin Sustainability Software Engineering tarafında da önemli bir yeri vardır hatta bu konuyu ilk olarak Amazon şu makalesinde ele almıştır. Diğer yandan rust dilinin yazılım güvenliği açısından birçok açığa karşı etkili bir çözüm olduğu ifade edilebilir.
Yayın sırasında Rust programlama dilinin bu kadar çok reklamını yapmadım elbette.
İlk programımız bu şekilde sonlandı diyebilirim. Yayın sırasında her ne kadar sürçü lisan ettiysem affola diyeyim. Bir sonraki canlı yayında görüşmek ümidiyle.
Bu programda aşağıdaki konulardan bahsettik.
- 20 Nisan 2025'te Rust Türkiye konferansı gerçekleştirilecek. Uluslararası diğer konferansları da takip etmek için bu adrese bakabilirsiniz.
- Özellikle yurt dışında Rust diliyle ilgili farklı ve heves uyandıran iş ilanları var. Burada uydu sistemleri için, şurada NASA'nın çekirdek uçuş yazılım çatısı için ilgili ilanlar bulunuyor. Ayrıca MIT tarafında da epeyce Rust geliştiricisi aranmakta. (Yalnız şunu belirtmek isterim. İlanlar güncelliğini yitirebilir ve sayfalara ilerleyen zamanlarda erişilemeyebilir)
- Rust In Space! How Rust is powering next-generation space mission simulators isimli oturum hakkında bilgiler verildi.
- Doom oyununu uzayda bir uyduda çalıştırdılar :) Bu keyifli sunumu kaçırmayın derim.
- Bu bölüm tavsiye ettiğim kitap Karel Çapek'ten Rossum'un Uluslararası Robotları.
- Akışın kalan kısmında Git Flow stratejisinden bahsettik. Bu konu ile ilgili Git Flow Introduction dokümanına bakabilirsiniz.
- Son bölümde Çağrı Merkezi vakasını ele almaya başladık. Geliştirmeleri genel olarak call-me-sdk isimli feature üstünde yapacağız.
Bu programda aşağıdaki konulardan bahsettik.
- Tavsiye edeceğim kitap Harry Harrison'dan Yer Açın! Yer Açın! Hatta 1973 yılında Soylent Green olarak da sinemaya uyarlanmış.
- Bahsettiğimiz 1984 Eylül tarihli Sinclair Programs dergisi için şu adrese uğrayabilir ve derginin tamamına ulaşabilirsiniz.
- Dotty The Kangroo isimli oyun üzerine güzel bir video ve Ian McTavish'i bulma macerası için şu videoya bakılabilir. İlgili oyunu oynamak isterseniz de buradaki emulatorlerden yararlanabilirsiniz.
- Rust'ı 100 örnek ile öğrenmek isterseniz güzel bir doküman var. İşte burada
- Google'ın Android takımı için hazırladığı Rust eğitim dokümanı oldukça doyurucu.
- Google'ın kapattığı projeleri öğrenmek isterseniz bir mezarlık var.
- Web sitelerinde kullanıcıların en sevmediği şey sanırım 404 hatası almak. Ancak bunu da kullanıcı dostu hale getiriyorlar.
- Readme dokümanlarını hazırlarken yazı stillerini düzenlemekte kullanabileceğimiz kavramların özetine buradan ulaşabilirsiniz.
- .Net platformu için kullanılabilecek araçların derlenmiş bir listesi Arada sırada güncellense de topluca türlü bilgilere ulaşabileceğimiz bir alan.
Bu programda aşağıdaki konulardan bahsettik.
- Futbol ekonomisinin büyüklüğünü gözler önüne seren Deloitte analizi ile başladık. Detaylar burada. Ayrıca La Liga'nın Microsoft CoPilot ile olan işbirlikteliğine baktık.
- Dünyanın ilk ev içi oyun konsolu olan Magnavox'u ve 1972 yılı yapımı Tennis oyununa baktık. Youtube videosu burada. Oyun konsolunun kullanım kılavuzuna da Internet Arşivinden bakılabilir. Ayrıca diğer oyun konsolları ile ilgili detaylı bir sitede var. Teknoloji tarihçesini sevenler için tam bir hazine, Video Game Console Library
- Bu bölüm değindiğim iki kitap var. Birisi The Nostalgia Nerd's Retro Tech diğeri ise System Programming with Rust
- Rust'ın Linux çekirdeğindeki kullanımı da artıyor. Bilgilendirme yazısı şurada
- Eğer Rust ile bir işletim sistemi yazmayı düşünüyorsanız hangi yollardan ilerleyebileceğinizi anlatan dolu dolu bir blog var. İlk bölümde bare metal programming'e giriş yapıyor ardından VGA kartının belleğine doğrudan erişerek işletim sisteminin terminal ekranını tasarlıyorsunuz. Kaçırmayın
- Rust ile C# ın belli noktalarda kıyaslandığı bir yazıya da değindik. Hatta sevgili Salih Cantekin hocanın blog yazısına da uğradık, In place string reverse in Rust Bora Kaşmer hocamızı unutur muyuz? Microsoft Teams’e bir Worker Üzerinden Mesaj Atmak
- Eğer 2025 yılında bir yazılım geliştirici olarak kendinize çeşitli challenge'lar arıyorsanız bu yazı size birkaç fikir verebilir.
- Sıklıkla ThoughtWorks firmasının teknoloji radarını takip etmenizi öneriyorum. Bu son yazıda en çok dikkatimi çeken Replacing pair programming with AI tekniğinin uzun vadede zarar vereceğini ve kullanılmamasının tavsiye edildiğini belirten kısım oldu.
- Repodaki gelişmelere de değindik. Yeni bir Use Case' imiz var. Use Case dokümanındaki UC01 kodlu vaka. Projemizde src klasöründe yer alıyor. İlk etapta servis tarafının geliştirilmesi söz konusu. projects_api isimli rust uygulamasına bakabilirsiniz. Test için gerekli postman dosyası ise burada. Ayrıca Rust ile WASM kullanımının ele alındığı basit bir senaryodan da bahsettik. Detaylara bu yazıdan ulaşabilirsiniz.
- Gelen bir soru üzerine ufakta olsa CAP teoremi üzerine konuştuk. Kısaca bir dağıtık sistemde Consistency, Availability ve Partition Tolerance kavramlarının üçü bir arada olamaz üzerine dayalı.
Sonraki yayında yazılım mimarilerine de değineceğiz.
Bu programa geçen bölümden gelen bir soru üzerine yazılım mimarisi seçiminde yaparken nelere dikkat ederiz ile başlıyoruz. Ben bu konu ile ilgili referans kitap olarak Richards & Ford’ un Fundamentals of Software Architecture kitabını öneriyorum.
- Mimariler, servisler vs demişken kullandığımız çatıların her zaman kontrol altında tutulması da gerekiyor. Bu haftanın gündemine düşen bir diğer konuda güvenlik açıkları ile ilgili. CISA tags Microsoft .NET and Apache OFBiz bugs as exploited in attacks yazısında belirtildiğine göre eski dostumuz .Net Remoting ile ilgili bir açıkda varmış. Diğeride Apache'nin Open For Business ürününe ait.
- Haftanın oyunu (Airborne Empire) Oyunla alakalı Steamdb üstünden de bilgi alınabilir. Oyun Unity ile geliştirilmiş bir koloni simülasyon oyunu. Diğerlerinden farklı olarak koloniniz havada uçan bir şehir ve sizi sık sık bela olan korsan pilotlar mevcut.
- O'Reilly, kendi öğrenim platformundaki bilgilerden yararlanarak yıllık bir rapor yayınlamış ve 2025 yılı teknoloji trendlerinden bahsetmiş. Programda yazının detayları (Özellikle programlama dilleri bölümü) üzerinde durduk. Buradan okuyabilirsiniz.
- The Angry Dev'in C# geliştiricilerinin neden Rust öğrenmesi gerektiğini vurguladığu güzel bir karşılaştırma yazısına denk geldim; Why C# Developers Should Also Learn Rust, and What It Can Teach Them
- Bir başka güzel yazıda Rust'ın özelliklerinin hangi dillerden esinlenilerek alındığını da içeren şu yazı. Stop saying Rust is Complicated. Bu yazıda Rust'ın sadece bir sistem programla dili olarak değil birçok alanda kullanılabileceği de belirtiliyor. Mesela WASM ile birlikte. Bende ilkel bir WASM oyunumu paylaşayım. Yarıda bırakmış olsam da ilgilenenler daha ileri bir seviyeye taşıyabilirler.
- Gömülü sistemler ve emniyet-kritik olanlar demişken güzel bir podcast'e de denk geldim. Volvo' da bir Rust eko sisteminin oluşturulmasının hikayesini merak ediyorsanız buyrun. Volvo with Julius Gustavsson - Rust in Production Podcast
- Gömülü sistemlerde Rust ile geliştirme yapmayı öğrenmek istiyorsanız A 5-Step Guide For Learning Embedded Rust iyi bir giriş noktası olabilir (Bu arada pek çok noktada HAL diye bir kavram geçiyor. Bu tabii Kubrick' in Space Odyssey filmindeki HAL 9000 değil :D Hardware Abstraction Layer manasında geçen bir kavram)
- Emniyet-kritik sistemler (Safety-Critical Systems) açık kaynak yazılımların belirli güvenlik standartlarına göre sertifikalandırılmasını ifade eder. Bu tür yazılımlar, hataların ciddi sonuçlar doğurabileceği alanlarda kullanılır, örneğin:
- Otomotiv ISO 26262-1:2018 Road vehicles — Functional safety
- Havacılık DO-178C - DO-178C - Wikipedia
- Tıp teknolojileri IEC 62304 - IEC 62304:2006 - Software life cycle processes
- Endüstriyel otomasyon IEC 61508 - IEC 61508 - Wikipedia
- ESP kodlu mikro denetleyicilerde Rust ile geliştirme yapmak isterseniz genele açık şu kitabı tavsiye ederim. Introduction - The Rust on ESP Book ESP
- Mikrodenetleyicilerde genellikle farklı bir işletim sistemi çalışır. RTOS (Real Time Operating System) olarak adlandırılır. Temelleri için RTOS Fundamentals - FreeRTOS™ isimli dokümana bakılabilir. Ayrıca iki örnek işletim sistemi şunlar; Zephyr Project ve FreeRTOS
- Bu bölümde yer verdiğim kitap ise Sovyetler döneminin en önemli bilim kurgu yazarlarından olan Arkadi ve Boris Strugatski kardeşlerin 1997 yılında kaleme aldığı Kıyamete Bir Milyar Yıl
Programda ayrıca Örnek Senaryolar dokümanındaki UC02 - İzole Edilmiş SMTP Server ve UC03 - Servisler Arası İletişim içim gRPC Kullanımı konularına da değinildi.
- Bu programda Stanley G. Weinbaum' un Bir Mars Destanı isimli bilim kurgu öyküsünü ve başka öykülerini de içeren kitabı tavsiye ettik. Kitapla ilgili Bilimkurgu.com sitesinde güzel de bir bilgilendirme mevcut. 1930'larda bilim kurgu dergilerini merak ediyorsanız şuraya ve buraya da bakabilirsiniz. Ayrıca Türkiye Bilişim Derneği'nin de bilim kurgu öyküleri üzerine yarışması olduğunu biliyor muydunuz? Detaylar burada
- Haftanın oyunu yine Unity ile yazılmış olan Kingdom two Crowns. Ayrıca oyunun OST müziklerine de buradan ulaşabilirsiniz.
- Yayında değindiğimiz, Primitive Obsession olarak bilinen ve DDD içinde ayrı bir yeri olan Value Object konusuna ait Nuget paketine buradan erişebilirsiniz. Github reposu ise şurada
- Asp.Net Middleware konusunu tekrar etmek isterseniz şu adresteki yazıya bakabilirsiniz.
- Programda ayrıca Ollama üzerinden deepseek-r1 modelini kullanarak kod kalite ölçümüne değindik. Detaylar şurada
- Diğer yandan Rust dilinde enum türünün etkili kullanımına da baktık ki bu konuyla ilgili şu yazıya bakabilirsiniz.
Bu bölümde sırasıyla aşağıdaki konulara yer verdik.
- Microsoft geliştirdiği yeni malzeme ve ünlü teorik fizikçi Ettore Majarona'nın fermiyonlarını bir araya getirerek milyon seviyede qubit' i avuçiçi büyüklüğünde bir işlemciye yerleştirmeyi başarmış. Detaylar burada Tabii bu konuya giriş noktamız ise Microsoft Q# oldu
- Free Open Source Developers European Meeting (FOSDEM) organizasyonun tüm sunumlarına bu adresten erişiliebilir.
- Haftanın oyunu yine Unity ile geliştirilmiş olan Windows, MacOs, Linux, Steam Deck gibi tüm platformlardan çalışan Rouge-like turn based combat game olarak ifade edilen Shogun Showdown
- Bu hafta radarıma takılan yazılar ise şöyle; Salih Cantekin Rust türlerine yeni davranışlar eklerken trait'lerin nasıl kullanıldığına değinmiş. Farklı seviyeden C# geliştiricileri için olası mülakat soruları ve cevaplarını da buradaki blog yazısından okuyabiliriz. Rust ile oyun geliştirme tarafında en çok kullanılan motorlardan birisi Bevy Game Engine. Jetbrains tarafından Vitaly Bragilevsky' nin bu konu ile ilgili çok güzel bir yazısına denk geldim.
- Ayrıca Unity benzeri arabirimi ile oyun geliştirmeye farklı bir boyut kazandıran Fyrox Game Engine ile ilgili bir deneme yaptık. Bu oyun geliştirme motoru ile ilgili detaylı bilgi için resmi kitabına bakılabilir.
- Rust ile ilgili en çok gelen sorulardan birisi de iş alanının ne kadar geniş olduğu. Bu konuda güzel bir raporlama sitesi var.
- Bu yayın Entity Component System konusuna da değindik. Özellikle Composition over Inheritance prensibi üstünde de durduk. Burada kısa bir özeti yer alıyor.
- Yayınımızda bir kuple de mono-bird oyunuma değindik. Rust ve SDL2 kullanılarak yazılmış oyun kodlarına repodan bakabilirsiniz.