İbrahim KozConvenient Testing Proxies with EventsThe proxy pattern is a powerful design technique. Especially, when you develop a well-defined interface, you can implement various…Aug 30Aug 30
İbrahim KozData vs. ConfigWhen pondering over what renders data construed as config, I found myself considering the interplay between data planes and their control…Jun 24Jun 24
İbrahim KozLayering Implementations Around Well-Defined InterfacesRecently, while reviewing an implementation in a repository, I noticed that caching and buffering were directly integrated into the…Jun 6Jun 6
İbrahim KozThe Cost of AbstractionWe all often fall into the trap of being lured by shiny new technologies. Before adopting a so-called successor technology, we must…May 25May 25
İbrahim KozScenario Based TestingLet’s say we want to test an interface, this interface can be as simple as this:May 16May 16
İbrahim KozWhen to use OOP, how does an object differ from data?To distinguish data from an object, data is to be persisted. To avoid data inconsistencies, we should persist it in normalized form. It…May 10May 10
İbrahim KozProcedural Visitors in GoThe Visitor pattern allows you to separate data from behavior, modularly adding new functionality to existing data structures without…Apr 18Apr 18
İbrahim KozHow to model sum types in Go?Although Go doesn’t have built-in support for sum types, we can simulate them to some extent using interfaces and type assertions. Here’s…Apr 18Apr 18
İbrahim KozAchieving Effective Abstraction and Layering: Why Core and Application Layers are InseparableTo achieve a well-designed abstraction, it should not expose any underlying details. An abstraction has the power to unite multiple…Apr 9Apr 9
İbrahim KozUnderstanding K-Sortable Keys and Database LocalityK-sortable keys, derived from the concept of sortability, play a crucial role in optimizing database performance. In databases, data is…Mar 29Mar 29