Breaking Up With WordPress After Two Decades
Around Black Friday last November, I moved my website from SiteGround to Bluehost. This was not some ambitious infrastructure decision. SiteGround wanted roughly five times more...
Posts on structuring code, designing boundaries, and making software easier to evolve.
Around Black Friday last November, I moved my website from SiteGround to Bluehost. This was not some ambitious infrastructure decision. SiteGround wanted roughly five times more...
Most of what we call progress in software is just motion. New tools, new frameworks, same problems. Maybe fancier logos. Our industry always has this collective thrill that a ne...
How many times have you found yourself saying: “I worked all day, but I didn’t get anything done.” I know, we have all been there. We feel bad about it, too. On the surface, it...
In university, I have master students studying software engineering. I often ask them one question: how do authors become authors? Do they suddenly start writing great novels in...
Tech debt occurs when we solve a software problem with our limited understanding of the business at the time. We start building a solution to get feedback as early as possible....
I have noticed that APIs are a bit like abstractions in general. APIs that impress people quickly are very often the ones that cause the most trouble later. I do not mean this a...
A wrapper library is a thin layer of abstraction around an existing library, dependency, or functionality. A wrapper library offers a better and cleaner interface or rather hide...
Every engineer learns this the hard way. You think the logic is solid, your tests are green, and your deployment goes smoothly. Looks all good, right? Then you have an outage. N...
Duplicate code isn’t something we usually want in our code for various reasons. The most obvious one is maintenance. When you change a piece of logic, you have to find every pla...
“Smaller is faster” is a wellknown hardware design principle, as you might already know it. Generally speaking, smaller pieces of hardware will be faster than larger ones becaus...
An architect? According to Wikipedia, an architect is a person who plans, designs, and oversees the construction of buildings. So, we obviously have derived the role from civil...
CS102 is one of the most important course in CS curriculum. In this course, students learn how to write recursive function, objectoriented programming and etc. This course provi...
Dependency injection is about removing the hard coded dependencies and providing way of changing dependencies in compiletime or runtime. This pattern has been exercised in sever...
In computer science, abstraction is to hide certain details and only show the essential features of the object. Abstraction tries to reduce and factor out details so that the de...
Yazılım dünyasında başlıca endişelerinden biri, yazılımdaki parçaların biri birine çok bağlanmasıdır(high coupling, crosscutting concerns). Bu durum yazılımın belirli bir noktad...
Bu yazımda size Mediator adındaki nesneye dayalı yazılım şablonunu (ObjectOriented Design Pattern) anlatacağım.Mediator bize, bjeler arasında fazla bağ kurmadan (tightcoupled) i...
Bu yazımda size Strategy adındaki nesneye dayalı yazılım şablonunu (ObjectOriented Design Pattern) anlatacağım. Bu şablonun genel amacı yapılacak iş için alternatifler oluşturup...
Bu yazımda size Composite adındaki nesneye dayalı yazılım şablonunu (ObjectOriented Design Pattern) anlatacağım. Bu şablonun genel amacı tekrarlanan(recursive) parçaları(compone...
Bu yazımda size Observer adındaki nesneye dayalı yazılım şablonunu (ObjectOriented Design Pattern) anlatacağım. Bu şablonun genel amacı bir objeyle başka objeler arasında bağ ku...
Bu yazımda size Facade adındaki nesneye dayalı yazılım şablonunu (ObjectOriented Design Pattern) anlatacağım. Bu şablon(pattern) genelde birden fazla pakete (package) aynı anda...
Bu yazımda size Adapter adında nesneye dayalı yazılım şablonunu (ObjectOriented Design Pattern) anlatacağım. Bu yazılım şablonu genellikle daha önce yazılan bir kodun başka bir...
Bu yazımda size Abstract Factory adındaki nesneye dayalı yazılım şablonunu (ObjectOriented Design Pattern) anlatacağım. Abstract factory, bir veya birden fazla nesnenin farklı t...
Bu yazımda size Factory adındaki nesneye dayalı yazılım şablonunu (ObjectOriented Design Pattern) anlatacağım. Factory şablonunu şöyle anlatayım. Painte benzer bir program yazma...
Bu yazımda size Singleton adındaki nesneye dayalı yazılım şablonunu(ObjectOriented Design Pattern) anlatacağım. Singleton benim en çok kullandığım dizayn şablonlarından biri. Bu...
Polymorphism ve Inheritance beraber kullanılan iki önemli nesneye dayalı (ObjectOriented) programlama unsurudur. Bunlar program kodlarının yeniden kullanılabilmesi veya var olan...
Binary Search Tree (BST), bilgisayar biliminde arama, ekleme ve silme işlemlerini ortalama O(log n) zamanla gerçekleştirebildiği için temel veri yapılarından biridir. BST’nin gü...
C++’ta diziler sabit uzunlukludur; yani program çalışırken bir diziyi doğrudan büyütüp küçültmek mümkün değildir. Bu yüzden, eleman ekleyip silmeyi destekleyen dinamik bir liste...
Linked List (bağlı liste), verileri bellek üzerinde dinamik şekilde saklamamızı sağlayan temel veri yapılarından biridir. Dizilerde eleman sayısı sabitken, bağlı listeler ihtiya...
C++ öğrenirken en çok zorlanılan konulardan biri, işin mutfağı olan manuel bellek yönetimi ve pointer yapılarıdır. Bugün çoğu modern dil bizim için bellekle ilgilense de, C++ hâ...