The magic of programming

On a daily basis we tend to ignore certain details in order to simplify our lives. When we turn on the TV we don't think of the circuitry that sends the signals from the remote to the TV or how the TV itself works. We just press the button and see what's on. The same goes for driving a car, riding a bike and most other activities. This kind of simplification also occurs in conversations. When we tell someone...

Jun 16, 2019


What’s the deal with binary numbers?

This is a very brief introduction to binary numbers and why computers use them.

As you may already know, computers use ones and zeros to make sense of things. So why exactly is that? Consider a light bulb, it only has two states: it can be either on or off. The computer’s processor is made of transistors which work more or less like a light switch. They either ...

Apr 14, 2019


What’s the deal with the SOLID principles? (part 3)

Onwards to the last of the SOLID principles, namely the Dependency Inversion Principle (DIP) (not to be confused with Dependency Injection (DI)). What this principle is saying is that high level modules should ...

Dec 17, 2018


What’s the deal with the SOLID principles? (part 2)

In the first part, we mostly talked about the first two SOLID principles namley the Single Responsibility Principle and the Open-Closed Principle. In this part we’ll tackle the next two principles in the order in which they appear in the acronym. Let’s get to it.

L

The SOLID principle with the most cryptic name is the Liskov Substitution Principle (LSP). It is named after Barbara Liskov who first presented this principle in 1987. What this principle says is that if object A is a subclass of object B, or if object A implements interface B (so basically if A is also a B), then we should be able to use A like a B with no special ...

Dec 10, 2018


What’s the deal with the SOLID principles?(part 1)

Even if you are a junior developer there’s a great chance that you’ve heard about the SOLID principles. They are mentioned all the time. In a job interview you might have heard the questions: “So how do you assess the quality of your code? How do you distinguish good code from bad code?”. The general answers are something like: “I try to keep files as small as possible and move parts of the code into other files when a file gets too big.”. Among the worst answers is: “I’ll know it when I see it.”. After these types of answers the interviewer usually asks: “Have you heard of the SOLID principles?”.

So what’s the deal with the SOLID principles and why they are mentioned so often? According to Wikipedia: “In object-oriented computer programming, the term SOLID is a mnemonic acronym for five design principles intended to make software designs more understandable, flexible and maintainable. It is not related to the GRASP software design principles. The principles are a subset of many principles promoted by Robert C. Martin. Though they apply to any object-oriented design, the SOLID principles can also form a core philosophy for methodologies such as agile development or adaptive software development. The theory of SOLID principles was introduced by Martin in his 2000 paper Design Principles and Design Patterns “.

If followed correctly, the SOLID principles will lead to a high quality code base that is maintainable and testable. If someone asks for extra features you can make changes with minimal effort (when compared with code that doesn’t adhere to SOLID). I think that it’s important to mention that these principles are focused on ...

Dec 05, 2018


The story behind our first game

I always like it when creative people give you a glimpse of their process. When they talk about how a certain product, music, book came to be. This has always interested me regardless of the outcome's success level. I think that there is a lot you can learn from such stories and you also feel like you are part of their struggle. It is only natural that I am inclined to do the same with what we create. So I'll start by giving you a glimpse of our process. This is the story behind our first game: Square Fill.

Square Fill started before ...

Oct 14, 2018


What’s the deal with dependency injection?

This article is the first in a series generically called “What’s the deal with…”, in which I try to explain various programming topics. The main goal of this series is that I get a better understanding of the topics that I’m presenting and hopefully that I also help other people understand them. So without further ado, let’s get started.

According to Wikipedia, the definition of dependency injection is:

“a technique whereby one object (or static method) supplies the dependencies of another object. A dependency is an object that can be used (a service). An injection is the passing of a dependency to a dependent object (a client) that would use it. The service is made part of the client’s state. Passing the service to the client, rather than allowing a client to build or find the service, is the fundamental requirement of the pattern.”

What this means is ...

Sep 18, 2018


Code The Hidden Language of Computer Hardware and Software - brief book review

If you want to understand how computers work then this book is for you. The author does a great job explaining the intricacies of computers, from the basics of electricity up to building a computer from scratch. This book is written well and it is easy to grasp by both the technical and nontechnical reader. The only part that might be harder to understand, if you're nontechnical, is the part with boolean algebra and binary operations. Even if you don't fully understand that part, it is still a great read.

Even though the book was published 18 years ago, it is still very relevant today. This is no small feat in the tech world where often a couple of years ago means ancient history. I find it relevant ...

Aug 14, 2018


How to become a better programmer

I will start this post with a disclaimer. The ideas that I present here are what I found most helpful in my development as a programmer. I'm not claiming that I offer absolute truths. The opinions that I'm presenting are my personal opinions. I'm not in possession of any statistical data that prove them right or wrong. That being said I'm looking forward to hearing your opinions on the matter.

I've been programming for more than a decade now. Looking back to my beginnings and looking around me at people just getting started with programming, I'm trying to figure out what approaches are more effective in learning this craft. In today's world there are more ways of learning than ever. We have written tutorials, video tutorials, articles, online courses, coding bootcamps, books and people live streaming while they work.

It turns out, and no surprise there, that the best way to get better at programming is ...

Jul 26, 2018