Yazılımcılar İçin Hafta Sonu Okumaları - Sezon #2 / Sayı #55(2019 Derlemesi)
Merhabalar. Aralık sonu Ocak başı geçmiş yılın muhasebesi, değerlendirmeleri, özetleri, raporları, al
By Muhammed Hilmi Koca • Issue #55 • View online
Aralık sonu Ocak başı geçmiş yılın muhasebesi, değerlendirmeleri, özetleri, raporları, almanakları; gelecek senenin öngörüleri gibi içeriklerle doluyor. Ben de geçen sene yaptığım gibi bu sene de geçen yılın sayılarından bir derleme ile karşınızdayım. Bu da 25 sayıdan yapılan bir derlemeye tekabül ediyor. (Bu noktadan sonra geçen sene yayımladığım derlemeden kopya çekerek devam ediyorum.)
Derleme yapmaya karar vermemin akabinde büyük bir özenle(kopyala-yapıştır marifetiyle) okumakta olduğunuz bu sayıyı hazırladım. Binâenaleyh bu sayı yeni bir sayı değil. Yani yeni bir sayı ama içeriği yeni değil(şu anda kafanıza şişiren bu giriş kısmı hariç). Bir nevi özel sayı(böyle daha havalı oldu sanki). Buradan da 2 sonuç çıkarmamız gerekiyor:
Çocuklara Yapay Zeka Öğretimi
Geçen sayıda Zafer Demirkol‘un 10 yaşındaki oğluyla yapay zeka çalışma serüveninden bahsetmiştim. Bu kez de “çocuklara nasıl yapay zeka öğretilir?” sorusunu cevaplamak için bir seriye başlamış(2, 3, 4). Yine emek verilmiş enfes bir yazı ortaya çıkarmış. Okurken girift konuların bir nevi oyunlaştırma ile nasıl basitçe anlatılabileceğini görmenin yanı sıra henüz aşina değilseniz yapay zekanın temellerini de anlayabiliyorsunuz. Yapay zeka öğretimine gelmeden önce direkt öğretimle alakalı anlattıkları da ekstra faydalı.
Kendi ifadesiyle “pinpon topu gibi bir kariyer"e sahip olan Umut Gökbayrak, 3 kez kurumsal dünyaya 4 kez de girişimcilik dünyasına göç etmiş. Aynı zamanda uzun yıllara yayılan bu süreçte edindiği tecrübeleri, ”beyaz yakadan girişimciliğe geçiş“ başlıklı her yönüyle enfes yazısında bize aktarmış.
Geliştirdiğimiz yazılımlardaki teknik borçlar hayatımız gerçeği. Yüzde yüz kendi yağında kavrulan bir yazılım geliştirmek neredeyse imkansız. Ama ne kadar az borçla ilerlersek yarınlarımızı o kadar az ipotek ederiz ve başımız o kadar az ağrır. Burak Selim Şenyurt, geçtiğimiz haftalarda yayımladığı yazısında genişçe teknik borçlardan bahsetmiş; nasıl kaçınacağımızı ve önceden birikmiş borçları nasıl ödeyeceğimizi anlatmış.
CRISPR, son yıllarda ciddi biçimde gelişen, kuvvetle muhtemel çok yakında günlük hayatımıza etki edecek ve biz yazılımcıların henüz pek aşina olmadığı bir teknoloji. Basitçe genom düzenlemeye yarayan, mesela DNA'daki hastalığa neden olan genin çıkarılmasına imkan veren bir teknoloji. Bu teknolojiyi anlamak için güzel bir Türkçe içerik hazırlanmış.
Ayrıca Feyzullah Ünnü de konuya distopik açıdan yaklaşan bir yazı kaleme almış.
Girişimciler ve Yatırım
Çoğunluğumuz itibariyle içimizde bir girişim başlatma hayali/niyeti/planı var. Başlattıktan sonra da önemli merhalelerden biri yatırım bulma meselesi. Ali Karabey, yatırımcı penceresinden girişimcilere bol miktarda altın tavsiye sıralamış. Aklınızda bir yerde “girişim"in “g"si ile ilgili bir şey varsa okumanızı öneririm.
Konuyla nispeten ilişkili bir diğer içerik ise Bora Yılmaz‘ın “Girişim Sermayesi Terim ve Süreçleri” başlıklı serisi(1, 2, 3, 4).
Yazılım geliştirme hayatımızın her evresinde mücadele ettiğimiz bir kişi var: önceki yazılımcı. Saçma sapan bir yazılım tasarımı yapar, gereksiz bir ton kod yazar, doğru düzgün null kontrolü yapmaz… Bu listenin sonu yok. Ama işin acı tarafı her birimiz birer önceki yazılımcıyız. Üstelik hiç kimsenin olmasa bile kendimizin. 3-5 ay önce yazdığınız kodları inceleyin mutlaka düzenleyeceğiniz bir şeyler çıkacaktır. Dolayısıyla kim yazarsa yazsın hemen hemen tüm yazılımlar zamanla düzenlenmeye muhtaçtır. Bu düzenleme işlemine “refactoring” diyoruz.
Ali Rıza Adıyahşi, refactoring için Github'da oldukça detaylı ve güzel bir Türkçe rehber hazırlamış. İlk etapta temiz kod, teknik borç gibi konularla giriş yaparak “kokan kod"dan bahsetmiş ve tek tek tüm kötü kokuları irdelemiş. Son olarak da bunları çözmek için kullanılan refactoring yöntemlerini anlatmış. Her yazılımcının okuması gereken bu rehbere siz de katkı ve star verebilirsiniz.
Fatih Erikli, Python‘ı anlattığı “yılan hikayesi” isimli bir seriye başlamış ve geçtiğimiz hafta ilk bölümünü yayımlamış. Kendine has üslubuyla anlattığı, hikaye tadında, akıp giden, enfes bir yazı olmuş.
Sesli Asistan Yazmak
Veri bilimi alanında nitelikli içerikler üreten genç bloggerlardan Yunus Emre Gündoğmuş, bu kez Python ile bir sesli asistanın nasıl yazılabileceğini anlatmış. Yazının sonunda ise kendi yazdığı açık kaynak bir asistan olan Kavi'den bahsedip kod deposunu paylaşmış.
GPU Mimarisi ve CUDA
Python son zamanların en popüler dillerinden. Özellikle yapay zeka ve veri biliminin gelişmesiyle altın çağlarını yaşıyor. Ama muadilleri ile yapılan kıyaslamalarda 2 ila 10 kat daha yavaş olduğu ortaya çıkmış. Tahir Özdemir, İngilizce bir makaleden yararlanarak bu yavaşlığın sebeplerini anlatmış.
Bu arada Medium profilini incelerken CUDA hakkında bir yazısını gördüm. Neymiş diye araştırınca şöyle bir tanıma denk geldim: “GPU'nun donanımsal hesaplama gücünden faydalanmak amacıyla sunduğu paralel hesaplama mimarisidir.”
Bahsettiğim yazıda, CPU ve GPU'nun karşılaştırmasından başlayarak GPU'nun mimarisini ve çalışma prensibini anlatmış. Akabinde GPU'da çalışacak bir yazılım geliştirirken dikkat edilmesi gerekenlerden bahsetmiş. Henüz okuyamadığım bir devam yazısı da yazmış. CUDA'yı araştırırken denk geldiğim, Nezihe Sözen‘e ait nispeten daha detaylı yazıyı da şuraya bırakayım.
İş Görüşmesinde İşverene Sorulacaklar
Ülkemizdeki iş görüşmelerinde genelde maaş, terfi vb. kozlara sahip olduğu için işveren tarafı yukarıda, kendisine beğenilmesi gereken pozisyonda; çalışan adayı ise talep eden, kendini beğendirmek mecburiyetinde olan pozisyonda algılanıyor. (Ben de geçmişte yaşadım bu psikolojiyi) Ne var ki bir şirkette çalışma dediğimiz eylem esasında bir efendi-köle ilişkisi değil bir alışveriş. Hatta emek-sermaye ortaklığı da diyebiliriz. İşveren, çalışanına lütufta bulunmuyor bilakis satın aldığı emeğin karşılığını veriyor. Dolayısıyla ideal bir dünyada görüşmede de aynı pozisyona ve aynı değerde kartlara sahip olmalılar.
Gökhan Topçu, geçen hafta en çok paylaşılan yazılardan biri olan ve kuvvetle muhtemel sizin de denk geldiğiniz uzun yazısında, bahsettiğim bakış açısıyla işverene ait bir hak gibi görülen soru sorarak karşı tarafı değerlendirme meselesini, çalışan adayının nasıl kullanabileceğini anlatmış. Bu vesileyle, kaliteli sunumlarıyla da tanıdığımız Sayın Topçu gibi dolu dolu insanların daha fazla Türkçe blog üretmeleri için buradan talepte bulunalım.
Legacy Code Maceraları
Bir yazılımcının hayatındaki en büyük gerçekliklerden biri legacy code(miras kod) diye nitelendirdiğimiz, uzun süredir çalışan ama eskimiş, kokmaya başlamış; üzerinde değişiklik yapması yürek isteyen yapılar. Bir nevi statüko. (Hatırlayacağınız üzere geçen sayıda bu kokuları refactoring marifetiyle nasıl giderebileceğimize dair muazzam bir Türkçe kaynak paylaşmıştım.)
Burak Altın, Avustralya'da yeni başladığı işinde fevkalade bir legacy code hazinesiyle karşılaşmış. Anlatımına göre hemen her nevi kötü kodu muhtevi, düzeltmesi zor bir yapı. İşin güzel tarafı bu mücadelesini bir yazı dizisi halinde paylaşmaya başlamış. İlk yazısında durumu rapor ettikten sonra ikinci yazıda ufaktan canavarı dürtüklemeye, ortalığı toparlamaya başlamış.
Söz Legacy Code'dan açılmışken, İbrahim Kürce, konu hakkındaki kült eser “Beyond Legacy Code” kitabının Türkçe özetini çıkarmaya devam ediyor. Geçtiğimiz hafta iki yeni bölümün(1, 2) özetini yayımlamış.
Geçtiğimiz sayılarda teknik borçlardan bahseden bazı yazılardan söz etmiştim. Özcan Acar, teknik borçların nispeten bilinirliği olan bir konu olduğundan bahisle fazla üzerinde durulmayan bir diğer borçtan bahsetmiş: Alan borcu(Domain debt). Domain modellenirken yapılan tasarım hatalarından doğan bu borcun çoğu zaman daha hayati problemlere sebep olduğundan söz etmiş.
Mühendisler vs İK'cılar
Mühendisler(diplomadan bağımsız, yaptığı iş mühendislik içerenler) olarak hobilerimiz arasında yer alan faaliyetlerden biri İK'cıları(İnsan Kaynakları çalışanları) gömmek. Bunun için de elimizde bolca malzeme var. Peki bu yaptığımız pragmatik olarak ne kadar doğru? Veya bu durumu, şikayet ettiğimiz konuları nasıl düzeltebiliriz, düzeltirsek neler elde ederiz? İşte bütün bu soruların cevabını Bilgem Çakır, geçtiğimiz hafta yayımladığı yazıda irdelemiş. İK birimlerinin kuruluş nedenlerinden, mühendislik takımlarını başarılı oluşturmak için sahip olmaları gereken organizasyondan ve mühendislik ekiplerinin neden iş birliği içinde olması gerektiğinden objektif bir şekilde bahsetmiş.
Veri bilimi ile ilgili yayımlanan bir başka yazı ise Merve Bayram Durna‘nın Python‘daki veri bilimi için kullanılan kütüphanelerden Pandas'ı anlattığı makale.
Diğeri ise Betül Çolak‘ın otonom araçların yasal sorumluluğu hakkında yazdığı makale.
İnsanlık olarak doymayan para hırsımızdan dolayı dünyanın, doğanın içine etmeye ve dengesini alt üst etmeye devam ediyoruz. Ülkemizde yakinen müşahede ettiğimiz beton aşkı doğayı tahrip ederken, dünya çapında ise endüstriyel atıklar ve küresel ısınma, ekosistemdeki dengeyi bozuyor, hayvan türlerinin yok olmasına sebep oluyor. Örneğin böcek sayısının hızla azalması besin zincirinin bir üstündeki canlıları da tehdit ediyor. Geçtiğimiz hafta konuyla ilgili yayımlanan bir yazıda Can Tonbil, karanlık geleceğimizi anlatmış.
Gün geçmiyor ki yeni bir veri mahremiyeti skandalı ile karşılaşmayalım. Hatta Facebook ve Google ikilisi skandal kotasını fazlasıyla dolduruyor. Doğal olarak mahremiyetimize sahip çıkabilmemiz için çalışan insanlar da var dünyada. Enes Türk, iletişimin gizliliğini koruma hedefine hizmet eden 3 önemli Blockchain projesinden bahsetmiş.
Blockchain'den konu açılmışken, Deniz Özgür, dev bir amme hizmetine imza atarak Ethereum’da akıllı sözleşme geliştirmek için kullanılan Solidity dilinin dokümanlarını Türkçeye çevirmiş.
Bu hafta frontend geliştiriciler için elimde çok güzel mallar var.
İlk olarak dev bir amme hizmetimiz var. Frontend geliştiriciler için mülakat sorularının derlendiği çok güzel bir site varmış:h5bp.org. Daha da güzeli ise bu sitenin Türkçe çevirisi yapılmış. Katkı sağlayan herkesin eline sağlık.
Fatih Hayrioğlu, CSS'in kavranması zor konularından CSS Grid'i anlattığı bir seriye başlamış ve geçtiğimiz hafta giriş yazısını yayımlamış.
Hale Nur Çalışkan ise EcmaScript 6 için bir eğitim serisine başlamış. Şimdiye kadar 7 yazı yayımlamış.
TOR, internetin derinlerindeki gizli saklı köşelere erişim için kullanılan bir yapı. Bir nevi giriş kapısı. Anonim ve kimi zaman illegal hayatların velinimeti. Ziyahan Albeniz, Tor servislerinin tarihini ve çalışma prensibini anlatmış.
Sena Kılıçarslan, C#‘ta hafıza(memory yönetimini anlattığı bir seriye başlamış(İngilizce). İlk yazıda stack, heap, reference type ve value type; ikinci yazıda ise finalizer ve dispose kavramlarını anlatmış. Makineye ne söylediğini bilerek ve daha performanslı kod yazmayı(alt seviye diller kadar olmasa da) sağladığı için bu tip yazıları seviyorum. Devamını da bekliyorum.
Birkaç aydır geçtiğimiz yıllara nisbeten blogunda daha az yazı yayımlıyordu. Meğer bu arada Github'da büyük bir hazine meydana getirmekle meşgulmüş. Oluşturduğu repoda cumartesi geceleri çalışmalarından çıkardığı notları derlemiş. An itibariyle Angular‘dan React'e Vue'ye, TypeScript'ten Python'a, Blazor'dan GraphQL'e 29 farklı konuda makale ve örnek var. Şuradan hazineye ulaşıp, hunharca tüketip, “star"ınızı bırakabilirsiniz.
Son olarak Mert Susur‘un ve Onur Aykaç'ın Blockchain temelleri, Ethereum&Solidity ve Ethereum webinar serisi eğitim videolarını da buraya bırakayım.
Blockchain Aleminde Neler Oluyor?
Blockchain, her geçen gün popülaritesini artırıyor. Farklı farklı alanlarda farklı senaryolarda kullanılmaya çalışılıyor. Teknoloji trend/araştırma şirketleri de doğal olarak bu duruma kayıtsız değil. Recep İlkbahar, işbu araştırma şirketlerinin Blockchain hakkındaki raporlarını incelemiş ve önemli gördüğü noktaları kendi yorumlarıyla beraber paylaşmış.
Okan Yıldız ise benzer şekilde McKinsey&Company'nin Blockchain raporunu okuyup kritik noktalarını aktarmış.
Diğer yandan Enes Türk, Blockchain’in kullanım senaryolarından bahsetmeye devam ederek Blockchain üzerinde geliştirilen 2 sosyal sorumluluk projesinden bahsetmiş.
Mesut Gülecen, ilk Bitcoin transferinin alıcısı olan ve Satoshi'ye ilk destek veren kişilerden olan Hal Finney‘in “Bitcoin and Me” yazısını çevirmiş.
Bülteni uzun süredir takip edenlerin fark edeceği üzere en sevdiğim makale konularından bir şirketlerin vaka çalışması yazıları. Teknoloji geçişleri ve karşılaşılan problemler, yaşanan büyük krizlerin anatomisi vb. Türkiye'de çok yazılmayan amançok önemli ve değerli makaleler.
Bu bağlamda Çiçek Sepeti, yakın zamanda .Net Core ve Linux'a büyük bir geçiş gerçekleştirmiş. Turgay Özgür, bütün süreci detaylıca; karşılaştıkları ve aştıkları problemlerle beraber anlatmış.(.Net Core, Linux, Kubernetes)
Bu konudaki favori bloglarımdan hesapkurdu.com ise yine bir yaşanmış hikaye ile karşımızda. Bu defa Aydın Çınar, uygulamanın Frontend'ini nasıl kurguladıklarını anlatmış.
Hüseyin Kutluca, yazılım mimarisi geliştirme hakkında bir seriye başlamış. İlk yazıda “mimari nedir, ne değildir, temel kavramlar nelerdir ” tadında bir giriş yapmış. Sonraki yazılarda ise mimarinin nasıl tasarlanacağını anlatmaya başlamış.
Sezer Tanrıverdioğlu, Aspect Oriented Programming'i anlattığı bir seriye başlamış.(Java)
Osman Hömek, örnek bir proje eşliğinde MVC mimarisini ve ORM kavramını anlatmış.(Go)
Osman Korcan Andaç, antipatternleri anlattığı güzel ve önemli bir seriye başlamış. İlk yazısında 3, ikinci yazısında 4 adet çok görülen antipatterni anlatmış.
Eğlenceli Makine Öğrenmesi ve Yapay Zeka
Adam Geitgey'in “Machine Learning is Fun” isimli müthiş bir serisi var. Az çok matematik bilen hemen herkesin çok rahat anlayabileceği ve aynı zamanda eğlenceli bir şekilde makine öğrenmesini anlatıyor. Az çok yapay zeka ve makine öğrenmesi ile ilgilenen hatta -ben gibi- bunların ne olduğunu, nasıl işlediğini merak eden herkesin muhakkak okuması gereken bir seri diyebilirim.
İşin daha güzel tarafı ise serinin ilk 3 yazısı Türkçeye çevrildi. (ilkini Özgür Şahin, 2. ve 3. yazıları ise Atakan Yenel çevirmiş) Umarım kısa sürede topluluğun da katkısıyla tüm serinin çevirisi yapılır.
Özkan Doğan ise pekiştirmeli öğrenmenin popüler algoritmalarından Q-Learning‘i anlattığı bir seriye başlamış.
Hakan Arıbaş, yapay zeka & etik konusunda bir derleme yapmış.
Yazılım geliştirirken test yazmanın faydası saymakla bitmiyor. Ama diğer yandan test yazmamak için üretilen bahaneler de bitmek bilmiyor. Orhun Beğendi, bu konuda elini taşın altına koyarak yine büyük bir amme hizmetine imza atmış ve test yazma konusunda bir yazı dizisine başlamış. Seriyi 12 yazı olarak planlamış ve şu ana kadar 5 tanesini yayımlamış(1, 2, 3, 4, 5). Her zamanki gibi kendi tecrübelerini de içeren keyifli yazılar olmuş.
Son dönemde hem yazılımcılarımızın hem de yazılım firmalarımızın yurtdışına yaptığı işlerde sevindirici biçimde ciddi bir artış var. Yazılım ihraç eden firmalarımızın yanında Türkler’in yurtdışında kurduğu Countly, Netsparker, Logiwa vb. başarılı firmalar da güzel işler yapmaya devam ediyor. Ayrıca son dönemde artan bir vurgu var: her girişimin hedefinin global arena olması gerekliliği.
Countly’den Görkem Çetin, yine sektörün önemli ihtiyaçlarına yönelik güzel bir yazı kaleme almış ve kendi tecrübeleri üzerinden Fortune 2000 listesindeki firmalara nasıl yazılım satılabileceğini, satış süreçleri, bu süreçlerde dikkat edilmesi gereken noktaları anlatmış. Global düşünen herkesin okuması elzem bana göre.
Tabi globale açılmadan önce nitelikli bir ürün geliştirmiş olmamız gerekiyor. Bu konuda da Emre Mert‘in pek çok kalemde tavsiyelerini dillendirdiği 2 yazısını(1, 2) öneriyorum.
Muhtemelen önümüzdeki yıllarda bolca tartışacağımız bir başlık bu. Adından anlaşılacağı üzere hayatımıza girecek hem robotlarla hem de sürücüsüz araçlarla ilgili hukuki meselelerle ilgilenen bir alan. Selin Çetin, bu kavramın ne olduğundan başlayarak nasıl geliştiğini, Türkiye'de ve dünyada ne durumda olduğunu, bu alanda çalışmak isteyenlere tavsiyelerini ve daha pek çok konuyu ihtiva eden bir yazı kaleme almış.
Blockchain Gerçekten Bir Devrim mi?
Bitcoin'in halka inmesi, sonra değerinin çakılması, ICO'ların dolandıcılık için kullanılması vb. pek çok gelişme sonrası insanlar Blockchain'e biraz mesafeli durmaya başladı. Cemil Şinasi Türün, olumsuz görüşlere karşın Blockchain'in neden hala bir devrim olduğunu yazmış.
Kamer Elciyar ise merkeziyetsizliğin ne olduğunu sorarak, bu ifadeden ne anlamamız gerektiğini, hangi yapıların ne kadar gayrımerkezi olduğunu, hangi uygulamalarda merkeziyetsizliğe ihtiyaç duyulabileceğini vb. konuları ele aldığı bir yazı kaleme almış.
Fikir Babası Türk Profesör Olan Blockchain Projesi
Bu hafta göğsümüzü kabartan bir projeden haberdar oldum: Avalanche. Fikir babası ve ana geliştiricisi Cornell Üniversitesi'nden Türk bilim adamı Prof. Dr. Emin Gün Sirer imiş. Kendisinin ayrıca daha önce de p2p ağlar için önemli ve hala kullanılan çalışmaları varmış.
Projede Bitcoin'in maliyetli olan transfer işlemleri için çok hızlı(yaklaşık 2 saniye) ve güvenli olduğu iddiasında, madencilik gerektirmeyen bir algoritma geliştirilmiş. Ege Tekiner, kuş bakışı Emin Hoca'nın çalışmalarından ve Avalanche projesinden bahsetmiş.
SPA(Single Page Application)lar ve SSR(Server Side Rendering)
Son dönemin en gözde ön yüz yaklaşımı sanırım Single Page Application. Elbette yazılım dünyasındaki her şey gibi bu yaklaşım da kusursuz değil(yani her şey kusurlu, yani hiçbir şey kusursuz değil). Zingat'tan Üsame Fethullah Avcı, bu yaklaşımdaki rendering tekniklerinin(server side, client side ve pre-rendering) neler olduğunu, çalışma şekillerini, artı-eksilerini ve hangi durumlarda kullanılmaları gerektiğini detaylıca anlatmış.
Hayatın her alanındaki entropi, yazılımlarımızı da boş geçmiyor. Zaman geçtikçe yeni özellikler gelip kodlar büyüdükçe daha da anlaması zor ve hataya açık hale geliyor. Bu yüzden hayatımızda her an olması gereken bir kavram var: Refactoring.
Bora Kaşmer, Refactoring anlattığı bir seriye başlamış. Konsept ise Martin Fowler'ın kitabındaki bir örnek üzerinden bir laboratuvar ortamı(kokan bir proje) oluşturarak Refactoring yapmış.
Geçtiğimiz hafta “ana akım"ın dışındaki dillerle alakalı 2 güzel yazıya denk geldim. Bunların ilki Erlang. -Duyduğum, okuduğum kadarıyla- paralel çalışma ve eşzamanlılık olaylarını müthiş kotaran bir dil. WhatsApp ve RabbitMQ gibi yüksek hızın önemli olduğu uygulamaların bu dille yazılması da önemli bir gösterge. Rıdvan Nuri Göçmen, Erlang'a genel bir bakış atmış.
Gerçek hayatta kullanılan algoritmaları tanımak bana her zaman yeni bakış açıları ve ufuk katıyor. Bu algoritmalardan ikisi hakkında birer makaleye denk geldim geçtiğimiz hafta. Bunlardan birinde Alperen Özlü, eşleştirme problemleri için(karı-koca, öğrenci-üniversite, hasta-donör vb.) kullanılan “kararlı eşleşme algoritması“nı anlatmış.
Lemi Orhan Ergin'in birkaç sunumunda atıf yaptığı ve şiddetle okunmasını önerdiği bir yazı vardı: Jack W. Reeves’ın 1992 tarihli “What is Software Design” makalesi. Nesne yönelimli programlamanın yeni yeni yaygınlaştığı dönemlerde yazılım tasarımının nasıl olması gerektiğinden, Refactoring'den, test yazmaktan bahseden uzun ve önemli bir makale bu.
Bu önemli makale için yaklaşık 2 yıl kadar önce bir çeviri denemesi yapmıştım. Sosyal medyada hala zaman zaman paylaşmama rağmen burada -hatırladığım kadarıyla- hiç paylaşmadığımı fark ettim. Okumak için buradan buyurun.
10 Kaplan Gücünde Mühendis
Geçtiğimiz haftalarda yanılmıyorsam Hintli bir arkadaşın Twitter'da yaptığı “10x engineer” paylaşımı pek çok platformda bolca tartışıldı.(Ben de geçen hafta burada Gökhan Topçu'nun flooduna yer vermiştim) Hüseyin Polat Yürük, bu tartışmaya yazdığı blogla katılmış: “ezber bozan 10x mühendis”. Yazıda söz konusu paylaşımı ciddi biçimde eleştirerek sayılan maddeleri “doğru bilinen yanlışlara” canlı birer örnek olarak kullanmış. Aynı zamanda burada anlatılanların hangi konumda doğru olacağından bahsetmiş.
Bu konu aynı zamanda denk geldiğim kadarıyla 2 ayrı podcastte de tartışılmış. Bunlardan ilki Codefiction ekibinin şu yayını, diğeri ise podcast ailesinin çiçeği burnunda üyesi KodPod'da Fatih Kadir Akın ile Uğur Özyılmazel'in yayını.
Yüksek Seviye Dillerde Bellek
Donanımdan uzaklaştıkça soyutlamalar artıyor ve pek çok işlemi frameworklere terk ediyoruz.(Soyutlamalardan bahsettikçe Bilgem Çakır‘ın şu tıka basa derin bilgi dolu sunumunu hatırlıyorum) Örneğin C ve C++ gibi dillerde bellek yönetimini bizim yapmamız gerekirken yüksek seviyeli dillerde çöp toplama(Garbage Collection) mekanizmalarına devrediyoruz.
Oğuzhan Çevik, Java'da bellek yönetiminin ve söz konusu Garbage Collection mekanizmasının nasıl işlediğini anlatmış.
Berkan Şaşmaz ise C# günlüklerinin 3. sayısında C#‘ta bellek yönetimini detaylıca anlatmış.
Yapay Öğrenme İle Ters Kinematik
Yeni öğrendiğim bir kavram: kinematik. Birden fazla eklemi olan bir robot kolunun son parçasının nasıl hareket edeceğini ayarlamak için bağlantılı tüm eklemlerin yapacağı hareketleri hesaplama imiş. Aynı zamanda ters kinematik de son kolun alacağı konum ve açıdan hareketle öncekileri hesaplama imiş.
Cümle içinde kullanımı: “Ben kinematik gördüm.”
Engin Kaya, ters kinematik çözümü için yapay öğrenmenin kullanımını anlatmış.
Bir Gemiyi Hacklemek
Siber saldırı hikayeleri her zaman ufkumu açan, hiç aklıma gelmeyecek noktalardaki zekice yakalanan zafiyetleri ortaya koyan olaylar olmuştur. Geçtiğimiz hafta içeriğindekileri yine şimdiye kadar hiç düşünmediğim bir siber güvenlik yazısı okudum: o gemi bir gün hacklenecek. Eşref Erol, bir geminin hangi noktalardan ve nasıl yöntemlerle hacklenebileceğini anlatmış.
Yapay Zeka ile ilgilenmeye hazır veri setlerini kullanıp birkaç giriş örneği yazarak başlayanlar farkında olmasa da kendisi, çok yoğun matematik kullanılan bir alan. Daha önce çocuklar için yapay zeka serisini burada bolca övdüğüm Zafer Demirkol‘un, bu kez “herkes için yapay zeka matematiği"ni anlatmaya başlamış(1, 2, 3). Yine gayet anlaşılır makaleler ortaya çıkmış.
Ahmet Ataşoğlu ise Python‘da bulanık mantık modellemeyi anlatmış.
Yapay Zeka'nın çok hızlı geliştiği bu çağdaki önemli teknolojilerden biri de görüntü işleme. Özellikle Çin'deki kullanımı insanı distopik düşüncelere gark etse de insanın hayatını kolaylaştıran uygulama alanları da elbette mevcut. Bunlardan biri Bilgisayar Mühendisliği okuyan Özkan Doğan ve Ozan Şahin‘in bitirme tezi olarak geliştirdiği bir uygulama. Kısaca engelli bireylerin bir ekrandaki menülerin üzerinde gözleriyle gezinerek ve seçim yaparak akıllı ev cihazlarını kontrol etmesini sağlıyor. Gözün hareketlerini yapay sinir ağları kullanarak yakalamışlar. Fark edeceğiniz üzere fikir geliştirilmeye çok müsait. Yazdıkları blog ile projenin teknik detaylarını anlatmışlar.
Selçuk Usta, geçtiğimiz ay tam sevdiğim, okumaktan keyif aldığım, faydalı bulduğum ve her seferinde Türkçede benzerlerinin yazılmasını dilediğim tarzda bir yazı kaleme almış: Bir Kubernetes Göçü Hikayesi. Başta monolitik yapıda olan uygulamalarını servis yapısına ve Kubernetes‘e geçirme serüvenlerini detaylıca anlatmış. Kullanılan teknolojilerden mimarisine; monitoring, tracing, logging kurgularından deployment süreçlerine ve tüm bu aşamalarda yaşadığı problemlere genişçe değinmiş.
Svelte, Rust, Kaos Mühendisliği
Zafer Ayan, çoğunlukla Türkçe kaynağın az olduğu konularda detaylı içerik üreten bloggerlardan biri. Geçtiğimiz ay Devnot'ta bu kapsamda 3 yazı yayımlamış.
Bunlardan ilkinde tarihçesinden başlayarak kaos mühendisliğini ve bir örnek üzerinden uygulamasında kullanılan yöntemleri anlatmış.
Bir diğer yazısında son zamanlarda her ortamda bolca övülen Rust diline geniş bir giriş yazısı yazmış.
Bir Tutam Fonksiyonel Programlama
Özellikle benim gibi yıllarını nesne yönelimli programlama konseptinde geçirenler için tamamen farklı bir paradigma içeren fonksiyonel programlamayı anlaması biraz zor oluyor. Türerkan İnce, bizleri düşünmüş ve tane tane fonksiyonel programlamanın mantığını anlatmış.
Murat Koptur ise fonksiyonel programlama jargonu hakkında bir çeviri yazı yayımlamış.
Tabi bu bahsi kapatmadan Chris Stephenson‘ın konu hakkındaki -Türkçe- sunum videolarını da bırakmadan geçmeyeyim.(1. bölüm, 2. bölüm)
Tabi konusu açılmışken burada daha önce de paylaştığım Emre Mert‘in “yan proje geliştirme rehberi“ni analım.
Muhtemelen çoğu okur gibi siz de benim ismimi, okumakta olduğunuz bu bülten vesilesiyle duydunuz. Bu durum dolayısıyla ismimle bülten özdeşleşiyor ve birileriyle konuşurken konu, eninde sonunda bültene geliyor(elbette şikayetçi değilim). “Özel yaşamımla değil bültenimle” gündeme geliyorum(“yazılım sektörünün e-posta şube müdürü”). Bu muhabbetler esnasında sorulan soruları ve sorulmadığı halde merak edeceğinizi düşündüğüm bazı konuları derleyip bültenin macerasını anlattığım bir yazı yayımladım. Keyifli okumalar.
Soyutlama ve Evrim
Geçenlerde yazılım dünyasında her şeyin çok hızlı değiştiğinden ve güncel kalmanın zorluğundan bahseden bir arkadaşa şakayla karışık “abi gömülü yazılıma geç rahat et” demiştim. Sonraki gün bu muhabbet aklıma geldiğinde makine dillerinden yüksek seviye dillere ve bunların frameworklerine geldikçe hem bu hızlı değişimin hem de soyutlanmanın arttığını düşündüm. Arada cidden bir korelasyon vardı.
Daha sonra okuma listesinde bekleyen Özcan Acar‘ın “Bilginin Evrimi” yazısını okuduğumda Özcan Hoca'nın bunların birbirine bağlı olduğunu düşündüğünü ve soyutlama arttıkça bilgi oluşumunun da arttığından, daha fazla bilginin de soyutlamayı hızlandıracağından bahsettiğini gördüm. Bu girizgahtan sonra ise Mikroservis Mimarisi, Reaktif Programlama, Reaktif Mimari, Angular gibi farklı yaklaşım ve frameworkler üzerinden “bilginin evrimini” anlatmış. Bunların öncesinde hayatımızda neler vardı, niye ortaya çıktılar, evrim süreçleri neydi ve devamında neye evrilebilirler gibi oldukça ilgi çekici soruların cevabını aramış. Şiddetle tavsiye ettiğim bir makale.
Bir Yapay Zeka Projesi
Geçtiğimiz aylarda düzenlenen Teknofest'19'da “Yapay Zeka Yarışması” düzenlenmiş. RetinaNet kullanarak dronedan alınan görüntülerde nesne tespiti yapan projesiyle HÜMA takımı finalistlerden biri olmuş. Yavuz Kömeçoğlu, bu projenin hikayesini paylaşmış. Sıddık Açıl ise projenin teknik kısmını anlatmış.
Yapay Zeka demişken;
Gökhan Yücel, Gartner'ın Yapay Zeka trendleri hakkında yayımladığı rapordan bahisle 37 madde halinde ve okuma/izleme önerileri eşliğinde Yapay Zeka'nın bugününü ve yarınını yazmış.
Şebnem Özdemir, Yapay Zeka hakkında konuşulan korku senaryolarından ve bunların haklılık paylarından bahsetmiş.
Muhammed Pektaş, makine öğrenmesi ile yüz tanıma için kullanılan FaceNet mimarisini, bir örnek eşliğinde anlatmış.
Şevket Ay, veri kümelemek için kullanılan K-Means algoritmasını anlatmış.
Açık Kaynak Davası
Son yıllarda açık kaynağın popülaritesi inanılmaz bir hızla artıyor. Trendin en büyük göstergesi Microsoft'un attığı adımlar olsa gerek. Türkiye'de de aynı hızda olmasa da bir iyiye gidiş var. Hatta Bakanlık, bu konuda bazı çalışmalar yapıyor. Ülkemizde açık kaynağın yayılması için çaba sarf edenlerden Eser Özvataf, kişisel açık kaynak macerasını, motivasyonunu, devamında ise kurucusu olduğu ve bugünlerde hareketlenen acikkaynak.info platformunun geçmişini, geleceğini ve misyonunu yazmış.
Bir Emülatör Yazmak
Rust, son zamanların en çok övülen dili olabilir. Benim de zaman bulabilirsem öğrenmeyi istediğim bir dil. Onur Aslan, bizler için Rust ile oldukça ilginç ve kapsamlı bir proje geliştirmiş ve geliştirilmesini e-kitap olarak yayımlamış. Konu: Rust ile bir CHIP-8 dili emülatörü yazmak. Proje, ayrıca emülatörlerin ve aynı zamanda modern CPU'ların çalışma prensibini anlamak için de önemli.
Yasa, ortaokuldan hatırladığım kadarıyla “bilimsel olarak doğruluğu kesin teorem"ler olsa da bizim hayatımızdaki kanunlar, yasalar(Murphy, Moore) daha ziyade genellemeleri ifade ediyor. Github'da Hacker Laws diye bir doküman oluşturulmuş. Yazılım ve bilgisayar bilimi ile ilgili yasalar ve yazılım prensipleri güzelce derlenmiş. Umut Işık, amme hizmeti olarak bu dokümanı Türkçeye çevirmiş.
Şol Kuantum Bilgisayar Dedikleri
Kuantum Bilgisayar son dönemin “hype"larından. Ama ismi ne kadar bilinse de ne olduğunu gerçekten bilen kişi sayısı çok az. Ne olduğunu bilenler arasında da muhtemelen gerçekten nasıl çalıştığını bilen sayısı daha da az. Ki aslında bu pek anormal bir durum değil. Çünkü konu fizik, kuantum fizik, matematik ve bilgisayar bilimlerini aynı anda içeriyor.
Konu hakkında nitelikli Türkçe içerik üretenlerden Kutlu Kutluer, uzun uzadıya ve elden geldiğince anlayacağımız seviyeye indirgeyerek Kuantum Bilgisayarlarını, çalışma prensibini ve nasıl inşa edildiklerini detaylıca anlatmış. (Daha önce dediğim gibi beynimde yer yer kızarıklıklar oluşsa da baya anladığımı sanıyorum.)
Diğer yandan Yavuz Selim Yıldız da Kuantum Bilgisayarlar'ın çalışma prensibini anlatarak başladığı yazısında, bu bilgisayarların Bitcoin ve Sha256 şifreleme algoritmasının güvenliği için bir tehdit olup olmadığını irdelemiş.
Yapay Zeka ve Yazılımcılar
Yapay Zeka pek çok sektörü etkilemeye hazırlanırken muhtemelen biz yazılım geliştiricileri de boş geçmeyecek. Deniz Kılınç, Yapay Zeka'nın biz yazılım geliştiricilere ve geliştirme süreçlerine muhtemel etkilerini somut örneklerle anlatmış.
Profesör Cem Balçıkanlı Yapay Zeka'nın yabancı dil çevirisi konusunda ne kadar başarılı olduğunu ve iyi çeviri için karşılaşabileceği zorlukları irdelemiş.
Rahime Yeşil, veri mahremiyeti odaklı makine öğrenimi algoritması “federe öğrenim“den bahsetmiş.
Şevket Ay, makine öğrenmesinde topluluk öğrenimi kavramından ve bunun için kullanılan algoritmalardan bahsetmiş.
Burada münasebeti geldikçe ifade ettiğim gibi yüksek seviyeli dillere ve frameworklere daldıkça temellere yabancılaşıyoruz. Halbuki temelleri, bilgisayarın mimarisini, işlemcileri, derleyicileri… bilmek hem ufuk açıyor hem de bizleri daha iyi yazılımcı yapıyor. Bu kapsamda geçtiğimiz haftalarda 2 yazıya denk geldim. Bunlardan ilkinde Barış Ekin Yıldırım, modern CPU'ların çalışma prensibini anlatmış. Ömer Savaş ise oldukça anlaşılır bir örnekle işlemcinin aritmetik işlemleri yapan birimi ALU'nun(Arithmetic Logic Unit) işleyişini anlatmış.
Ayrıca Prisync ekibi hazırladıkları video içerikte derleyicilerin(compiler) çalışma prensibini anlatmış. Konuyla alakalı tavsiye edeceğim bir diğer video ise Frame of Essence kanalından.
Bu sene de, senenin derlemesi de nihayete erdi. Umarım istifade etmişsinizdir.
Beğendiyseniz daha fazla insana ulaşması için paylaşmayı unutmayın.
Keyifli ve afiyetli bir yıl diliyorum efendim.