#Java

Java-specific writing on language features, frameworks, and practical engineering lessons.

November 12, 20191 min read

Verifying passed arguments partially

Recently, I was working on a project and I missed a case in unit tests. I didn't want to verify each argument but rather wanted to check if an object has a certain attribute set...

July 11, 20183 min read

Simple Mutual Exclusion

When we design services for high availability, we often deploy more than one instance of the same application. It might be two servers behind a load balancer or a few nodes shar...

June 6, 20188 min read

Hype in Software Development

We live in a time when every month brings a new framework, library, or architectural pattern that promises to change everything. Increasingly often, we come across a new technol...

May 5, 20177 min read

Refactoring Untested Code

Most teams realize they are dealing with a legacy repo only when a tiny change turns into an operation. A oneline fix suddenly needs three people, two days of manual checks, and...

March 11, 20166 min read

Consistency Matters

When I look back at the projects I’ve worked on, the most peaceful moments were always when the code felt consistent. Everything lined up. Names made sense. Files looked familia...

August 24, 20152 min read

Mock methods that manipulate parameters

Recently, I've worked a little bit on cache for . I needed to mock a behavior of a method where the method manipulates given parameters e.g. change state or call another method....

October 13, 20148 min read

Java Developer vs. Software Engineer

Java developer vs. software engineer is discussed quite often, especially among programmers trying to define what truly separates a coder from an engineer. One of my friends kep...

March 7, 20145 min read

Moving from Java to Python

I recently started a new role in AWS networking, and it’s the first time I’ve gone from writing everything in Java to writing almost everything in Python. Honestly, the shift is...

January 7, 20142 min read

Spring Cache Abstraction

Spring cache abstraction applies caching to the Java methods. It provides an environment where we can cache the result for the methods we choose. By doing so, it improves the pe...

December 11, 20133 min read

Implementing HTML5 Bomberman

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...

May 16, 20135 min read

Achieving Abstraction In JavaScript

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...

April 12, 20135 min read

Buggy Code on Production, Survived

Areca is the name of the billing engine I am working on for Turk Telekom. Funny enough, it is also the name of the flowers we bought to freshen the office. We wanted the office...

October 4, 20128 min read

XA Transactions: A Simple Guide

In early days of computing, there was no need for distributed transactions, everything lived in one place. As number of applications increased, synchronization of the data becom...

May 24, 20123 min read

Caching With Guava

In computer science, cache is a component that is used to speed up data retrieval in general. The data stored in cache is limited so a given query can hit or miss the data that...

November 2, 20102 min read

Mediator

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...

November 1, 20102 min read

Strategy

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...

October 25, 20101 min read

Composite

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...

August 12, 20102 min read

Observer

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...

January 11, 20102 min read

Facade

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...

January 10, 20101 min read

Adapter

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...

January 10, 20102 min read

Abstract Factory

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...

January 10, 20101 min read

Factory

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...

January 10, 20101 min read

Singleton

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...

December 5, 20093 min read

Inheritance ve Polymorphism

Polymorphism ve Inheritance beraber kullanılan iki önemli nesneye dayalı (ObjectOriented) programlama unsurudur. Bunlar program kodlarının yeniden kullanılabilmesi veya var olan...

March 10, 20092 min read

Quick Sort

Birçok bilgisayar bilimi dersinde Quick Sort’u defalarca işledik, analiz ettik, hatta sınavlarda bile çözdük. Ama çoğu zaman öğrendiğimiz şeyleri pratiğe dökmeden bırakıyoruz. İ...

October 31, 20083 min read

Java Link List Implementation

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...

October 16, 20082 min read

Selection Sort

Selection Sort, en basit sıralama algoritmalarından biridir ve özellikle algoritma mantığını öğrenirken sıkça kullanılır. Bu yöntemde amaç, dizinin her adımında geri kalan bölüm...

October 13, 20083 min read

Programlama Dilleri Tarihi

Programlama dillerini ilk ciddi ciddi Bilkent Üniversitesi’ndeki derslerde görmüştüm. Programming Languages dersinde bayağı farklı şeylere dokunuyorduk. Genelde başlangıç Java i...

October 12, 20082 min read

Type Casting

Type casting çoğu zaman küçük bir teknik detay gibi anlatılır. Bir parantez açarsın, hedef tipi yazarsın, kod çalışır. Ama tip dönüşümü aslında bir karar mekanizmasıdır. Bir değ...