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.
src klasöründe yer alan uygulamalar ne ile ilgili olduklarına dair aşağıdaki özet tablosundan yararlanabilirsiniz.
Id | Program Adı | Açıklama | Tags |
---|---|---|---|
00 | about_ecs | Entity Component System kavramının Rust dili ile ele alındığı basit bir uygulamadır. Composition over Inheritance kavramının yanı sıra Bevy iç çalışma dinamikleri de ele alınmıştır. | ecs, rust, composition-over-inheritance |
01 | ast-test | Bu örnekte C# sınıflarından interface üretimi için rust dilinden ve tree-sitter-csharp küfesinden yararlanılmıştır. Amaç .net modernizasyon işlemlerinde rust ile bir şeyler yapılıp yapılamayacağının araştırmaktır. UC04 kodlu use case' de detaylar yer almaktadır. | abstract-syntax-tree, rust, tree-sitter, code-refactoring, use-case |
02 | InterfaceExtractor | ast-test projesinden ilham alınarak geliştirilmiştir. Bu örnekte ise .Net 9.0'da roslyn paketleri kullanılarak bir sınıftan interface üretilmesi işi ele denenmiştir. UC04 kodlu use case' de detaylar yer almaktadır. | roslyn, c#, dotnet-9, abstract-syntax-tree, code-refactoring, use-case |
03 | azon-insurance-api | İlk use case olarak tanımlanan CallMeSDK için rust ile geliştirilmiş rest tabanlı dummy api servisidir. | actix-web, rest-api, rust, dummy-service |
04 | cpu-mem-service | Rust ile yazılmış bir sistem monitör servisidir. sysinfo küfesini kullanarak cpu, memory kullanımı değerlerini rest tarzı bir servis şeklinde sunar. | sysinfo, actix-web, rest-api, rust |
05 | mach-dash-app | cpu-mem-service hizmetini kullanan WASM tabanlı basit bir dashboard uygulamasıdır. İlgili servisin çalıştığı makinedeki cpu, memory kullanım değerlerini blok olarak(son 50 ölçüm gibi) bir grafik şeklinde gösterir. (RustAndWasmRoundTwo.md) dokümanında nasıl yapıldığı anlatılmıştır. | wasm, rust, webpack, javascript, dashboard |
06 | EcoFriendlyApi | CallMeSDK uygulamasına hizmet etmek üzere C# ile yazılmış Controller kullanan bir Web Api hizmetidir. En çevreci yarışmacılar listesini rastgele sıralarda döndürür. | c#, rest-api, web-api, dummy-service |
07 | GoodOrBadCode | Basit bir senaryo için C# ile yazılmış kod parçasını birkaç kademede daha ideal hale getirmeye çalıştığımız giriş seviyesi örnektir. | c#, clean-code, code-refactoring |
08 | GrpcScenario | UC03 kodlu Use Case'e ait örnek projedir. Üç farklı iş icra eden grpc servislerinin bir arada ele alındığı bir senaryo söz konusudur. Detaylar UseCases dosyasında. | c#, grpc, use-case |
09 | hello_rapier | Bevy ile kullanılabilen fizik motorlarından rapier küfesinin ele alındığı bir örnektir. Serbest düşen bir topun, belli bir ivme ile hareket eden topla çarpışması ele alınmıştır. | rust, game-engines, physics-engines, bevy, rapier, 2D |
10 | HelloOllama | Microsoft AI genişletme kütüphaneleri Ollama Api'si ve sisteme indirilmiş dil modelleri kullanılarak kod analizinin nasıl yapılabileceğinin test edildiği örnektir. Konu ile ilgili detaylar OllamaWithDotNet isimli dokümanda yer almaktadır. | c#, ollama, llm, deepseek, codellama, code-analysis, code-refactoring, gen-ai |
11 | light_mail_server | Rust ile yazılmış ve SMTP mail server taklidi yapan tüy siklet bir örnektir. | rust, mocking, mock-mail-server, smtp, tokio |
12 | LightMailClient | light_mail_server uygulaması için C# ile yazılmış istemcidir. Gerçek bir mail sunucusu ile onu taklit eden mail sunucusu ile konuşulma senaryosunu icra eder. | c#, smtp-client, smtp, mocking |
13 | MemorySafety | Rust'ın öne çıkan bellek yönetim mekanizmasının C++ tarafındaki hangi yaygın ve bilinen sorunları çözdüğünün ele alındığı klasördür. Konu ile ilgili detaylara şu yazıdan ulaşılabilir. Klasörde yer alan no_dangling_pointers, no_double_frees, no_use_after_frees ve buffer_overflow isimli örnek rust projeleri de bu sorunlara rust'ın yaklaşımını gösterir. | c++, memory-management, double-frees, use-after-frees, dangling-pointers, rust |
14 | NetBevy | Rust bevy küfesindeki Entity Component System ilkelerini .Net tarafında uygulamak istesek nasıl yazabilirdik sorusuna cevap aradığım projedir. | c#, ecs, bevy |
15 | MinIOBucketsApi | MinIO isimli AWS S3 uyumlu hafifsiklet bucket storage' ın örnek kullanımının ele alındığı bir C# ile yazılmış bir web apidir. | c# , web-api, rest-api, minIO, aws-s3, bucket-server, storage-services |
16 | power_of_enum | Rust dilindeki enum veri türünün gücünü göstermek için kullanılan örnektir. UsefulEnumInRust.md dosyasında detaylı anlatım mevcuttur. | rust, enum, algebraic-data-types |
17 | projects_api | İTÜ ders döneminde öğrencilere verdiğim projeleri takım bazında yönetmek için başlattığım deneysel servistir. Excel yerine geçebilecek alternatif bir çözüm için Rest servis desteği sunar. | rust, rest-service, actix-web, sqlite |
18 | ProjectsManager | projects_api servisini kullanan C# ile yazılmış Razor tabanlı proje yönetim arayüzü uygulamasının başlangıç noktasıdır (Excel'den daha iyi olamayacağı anlaşılıp yarım bırakılmıştır :D ) | c#, razor, |
19 | nats_center ve nats_client | Hafifsiklet mesajlaşma araçlarından birisi olan Nats'ın rust tarafında kullanımının örneklendiği programlardır. Birisi sunucu diğer istemci görevini üstlenir ve pub/sub modelinde bir iletişim denenir. Detaylar için HowToNats.md isimli dokümana bakılabilir. | rust, nats, pub-sub, message-queue |
20 | bug-fix-with-ai | Burada AI araçları için çok basit SWE-Bench testleri yer alıyor. Rust ile yazılmış örnek kodları Copilot ile belli dil modellerine soruyoruz. Hata bulup ayıklama, kod tamamlama, dokümantasyon çıkarma, birim test yazdırma, kodu yeniden düzenleme gibi bir takım işler yaptırıp becerilerini değerlendiriyoruz. | rust, gen-ai, swe-benchmark |
21 | memory-management | Bellek yönetimi konusunda Cow, String Interning, Area Allocator, Memory/Object pooling gibi konulara ait basit kod kırıntılarının yer aldığı programdır. | rust, memory-management |
22 | metrics | Ratutui 'nin önemli Maintainer' larından Rustacean Orhun Parmaksız'ın Code Maven ile gerçekleştirdiği yayındaki örnekten yararlanılarak geliştirilmiş terminal bazlı uygulamadır | rust, ratutui, tui, terminal-app |
23 | norris-facts | Bu örnekte tuono isimli web framework'ü deniyorum. Tuono (İtalyan'cadan çevrilinde gök gürültüsü anlamına geliyormuş) React kullanan ama bunu yaparken server-side rendering işlerinde hiçbir javascript runtime kullanmayan bir ürün olarak lanse edildi. Hatta iddiasına göre sunucu tarafı rust ile yazılmış olan ilk full-stack React framework. | rust, web-framework, react |
24 | micro-lights | BBC Micro:bit V2.2 üzerinde hello world mahiyetinde yazmaya çalıştığım örnek kodları içerir | rust, embedded-rust, bbc-micro-bit, bare-metal-programming |
25 | micro-hello | BBC Micro:bit V2.2 üzerindeki 5x5 LED Matris'te yazı yazdırma üzerine bir örnek. İlk etapta R, U, S, T harflerini yazdırıyoruz. Micro:bit V2 ile ilgili diğer deneyler için MicroRust reposunu inceleyebilirsiniz. | rust, embedded-rust, bbc-micro-bit, bare-metal-programming |
26 | maud-exp | Maud rust ile yazılmış bir HTML template engine'dir. Bu uygulama küfe ile ilgili deneysel bir çalışma içeriyor. | rust, template-engine, html |
27 | OutboxDemo | Bu .Net solution içerisinde Outbox Pattern'in çok basit bir simülasyonuna yer verilmektedir | dotnet, #c, outbox-pattern, rabbitMq |
28 | rust-com | Rust ile yazılmış bir backend (server-side) runtime denemesi | rust, html, bootstrap, web-framework, server-side |
29 | book-form | Nuxt.js framework ile ilk bebek adımları | javascript, typescript, vue, nuxt, web-framework |
30 | issue-app | Yine Nuext.js kullanılarak yapılan bir uygulama. Amaç bir yazılım destek talebi açılışında formlar arası veri taşıma senaryosunu işletmek. | javascript, typescript, vue, nuxt, web-framework |
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.
- Outbox Pattern Demo
- BBC Micro:bit - Rust ile Hello Light
- Bellek Yönetimi Üzerine Notlar
- Programcı AI Araçları için Basit Bir SWE-Bench
- 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.
İşte bölümler ve onlara ait bilgiler.
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.
Bu yayın sırasında üzerinde durduğumuz konular kısaca şunlar.
- Microsoft' un Majorana 1 Kuantum çipi ile ilgili tartışmalar farklı boyutlar kazandı. Birçok kaynak bunun aslında bilimsel bir makale olarak yayınladığını ve sadece bir roadmap sunduğunu belirtiyor. Bu doğal olarak bilginin çok kolay bozulup yayılabileceğinin de iyi bir kanıtı. Dünya Ekonomi Formunun küresel risk raporunda bilgi bozulması ve yanlış bilginin yayılması sonraki ilk iki yılın bir numaralı riski. Rapor'un tamamı burada AI araçlarının da yanlış bilgi yayma potansiyeli bulunuyor elbette. Her zaman sorgulayıcı yaklaşmak da yarar var.
- AI demişken yazılımcıları endişelendirip endişelendirmediği üzerine görüşler toplamaya çalıştım. Az bir katılım olsa da üzerinde konuşmaya değer yorumlar oluştu diyebilirim. Ankete buradan bakabilirsiniz. Ayrıca kodlama üzerine kullanılabilecek epeyce fazla araç olduğu dile getiriliyor. Bunu özetleyen bir yazı da bırakalım.
- Haftanın oyununda bu sefer bir farklılık yaptım. Çok sevdiğim çalışma arkadaşım Cihat Yüce ve üniversiteden sınıf arkadaşı Cihan Gürtürk yaklaşık sekiz saat zaman ayırarak eğlenceli bir oyun yazmışlar yakın bir tarihte. Şuraya adresini bırakıyorum. Önyüz tarafında React, backend servislerinde .Net ve veri kanyağı olarak da Postgresql kullanılmış. Şu anda meslekler üzerine ama bu fikir farklı alanlara da uygulanabilir. Örneğin sadece yazılımla ilgili kavramların olduğu bir veritabanı kullanılabilir.
- Oyunlar demişken geçtiğimiz bölüm incelediğimiz Jetbrains'in Bevy ile oyun geliştirme yazısı üzerine bende ufak bir deneme yaptım. fly Duvara tosladığım yer ise zıplama sonrası bir platformun üstünde kalabilmek. İşte buralarda hazır fizik motorları kullanmak gerekiyor gibi. Bevy için Rapier öneriliyor. Ancak işin temelinde her zaman matematik var. Oyun mekaniklerini anlamak için vektörler, pisagor, trigonometri, fizik kuralları vs birçok şey işin içerisin giriyor. Matematik ile ilgili şu sitelere de değindik.
- Microsoft cephesinden yine yeni bir AI haberi. Oyunlardaki hareketleri, görselleri öğrenip taklit edebilen veya yeni kareler hazırlayabilen MUSE isimli bir yapı geliştirmişler. Haberi burada
- Geçen program kaçırdığımız AST kullanılarak bir sınıftan interface çıkarmak konusuna da detaylıca değindik. İki örneğimiz var. Birisi rust ile diğeri c# roslyn ile geliştirildi. Burada Abstract Syntax Tree mevzusunu anlamak için kullandığımız bir araç da var, SharpLab.
- Bu şubat ayında Youtube 20 yaşına girdi ve severek takip ettiğim gazetecilerden Serdar Kuzuloğlu' nun bu konuda yazdığı güzel bir makale var. Detayları ile youtube' un nereden nereye geldiğini bilmek isteyenlere.
Bu bölümde ele aldığımız konular.
- Pratikler
- bug-fix-with-ai program kodları ile ilgili olarak Copilot üzerinden Claude 3.5 Sonnet Preview sürümünü denedik.
- fly isimli oyunda gelinen son noktaya değindik ve Rapier fizik motorunun basit kullanımlarına baktık.
- UseCase #00'a konu olan CallMe SDK projesin önemli mesafe kat ederek tamamen gönüllü bir şekilde ileriye taşıyan Eser Şahin'in reposuna göz attık.
- AWS S3 uyumlu hafifsiklet ve açık kaynak kodlu MinIO ile geliştirilmiş bir API 'nin kullanımını ele aldık.
- Ana Konu Başlıkları
- Electronic Arts Command and Conquer serisindeki bazı oyunların kaynak kodlarını açmış. Ne zaman açtı bilmiyorum ama açmış. Zamanında severek oynadığım Command and Conquer: Red Alert ve halen daha oynadığım Command and Conquer: Generals - Zero Hour sadece birkaçı. Repoda dikkatimi çeken ayrıntılardan birisi ise Rust ile geliştirdikleri ve Kubernetes tarafında kullanılan helmci isimli araç.
- Oyun geliştiriciler yapay zeka ile ilgili ne düşünüyor öğrenmek isterseniz Developers still aren't warming up to generative AI isimli yazıya bakabilirsiniz.Bu yazı kaynak olarak çok daha fazla detay içeren GDC 2025 State of the Game Industry: Devs weigh in on layoffs, AI, and more raporunu baz alıyor.
- Anthropic' in Claude 3.7 Sonnet ve Claude Code sürümü oldukça ses getirdi. Özellikle kodlama üzerine çeşitli SWE-Bench testlerinden çok yüksek başarım oranları aldığı iddia ediliyor. Şu yazıda detayları bulabilirsiniz.
- AI motorlarının yetkinliklerinin ölçmek için kullanılan matematik soruları için 2025 AIME I - Aops Wiki adresine bir uğrayın derim.
- Blog Yazıları/Faydalı Linkler
- Uğur (Vigo) Özyılmazel'in ortam değişkenleri yönetiminde karşılaştığı zorlukları ve çözmek için kullandığı Go ile yazılmış direnv aracını kalame almış.
- Erhan Kocabuğa kişisel bloğunda gRPC ve Protobuf ile yüksek performanslı uygulamalar geliştirilmesi üzerine önemli noktalara değindiği bir yazı kaleme almış.
- Rust ile gömülü sistem geliştirmek üzerine çalışmak isteyenler için herşeyin bir arada yer aldığı iddialı bir github reposu, Awesome Embedded Rust
İptal edildi