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

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


[draft] Observable.Create allows you to design or plan to create an observable. It allows you to control and intervene the subscription phase of the lifecycle. You have (maybe too much) freedom about what you want to do once an observer subscribe your observable, but timing wise, that’s it. You have to do whatever you would…More

Why I don’t like init;

Ok. It’s not that I don’t like but wanted to have a short title.immutability but not explicit. It’s not clear what properties are expected to be initialized unless you go through each member of a class. If you used constructor it could have been guaranteed that state is initialised as it has to be. You…More