Why is software development so hard?

Hello world! Have you ever thought about why we make our program write hello world when we show we can do something with our software? Do you think we are saying hello to the world we live in or to the world we are creating? By writing software, you are daring to be the god…More

Systems Thinking in Software

Any software is a system. Actually, anything is a system. And maybe it is even unnecessary to make this remark. But it’s usually helpful to have a good model or analogy to point the similarities or certain characteristics of things. The reason I wanted to reiterate this definition is that I think it can be…More

Reactive Extensions for .NET (slides)

Do you write event driven code in .NET? Reactive Extensions can make your job much easier. I have Included the slides that I previously prepared and presented. It compares events and RX.NET and shows how similar and different they are. Write below or reach me out if you have any questions. I would love to…More

OOP confusion

I think there have been misunderstandings about what OOP really is. Some want to think each and every object as the model of a real-world object. It takes you to very interesting paths. What an object really is a unit that has a lifecycle (appear and disappear from its universe) And this unit (instance) has…More

Intro to React

I have recorded a video for people having no idea about react and want to see it in action. This is the first part, there will be second part coming.More

Immutability in programming [draft]

One of the ways I like designing immutable classes is having no setter methods and only one constructor. So we know that an instance will have only one way of constructing. It documents its usage itself, it will only have one state.More

Composition vs. Aggregation

Composition Instance A keeps instance B as a member. B’s only purpose and capability is to serve for A. It’s irrelevant in any other context. B was probably created because A had become too complex and trying solve too any problems. Aggregation Instance A keeps instance B as a member again. But B could serve…More

Random things I noted

How I read books: https://denzhadanov.com/how-i-read-books-a-guide-on-how-to-learn-a943123a4aeb https://medium.com/@maartenvandoorn/the-complete-guide-to-effective-reading-fc1835937757 Mental model affects perception -> decisions -> actionsMore

Absurdities in Turkish that Turks aren’t aware of

Ok. Languages can’t have absurdities, each one of them has their unique evolutionary path, and they end up with something which is not designed by a single and reasonable mind. But you may unintentionally (and undeservedly) have such an expectation when you are learning a new language. I remember myself questioning interesting unexpected rules that…More

Simple software design

[draft] Clearly differentiate what you want to implement and what you consume. How? If you use an alien dependency, dont consume it directly Provide all dependencies in constructor (services and data) If possible, try hard to have only one constructor -> apparent instructions for others, in your implementation, you don’t have to check how it…More