Understanding Distributed Systems – Book Review

Understanding Distributed Systems (cover)

I recently finished reading Understanding Distributed Systems by Roberto Vitillo. I was quite impressed by the quality of the book. It is one of the best computer science books I've read so far. A handful of others classify as such in my eyes.

But what makes this book so good, especially compared to other books in this genre - System Design?

Continue Reading

Learn Programming with Go, One Game at a Time

Learn Programming with Go, One Game at a Time

For nearly a year now, I've been building my first online programming course - it's about learning to program with the Go (Golang) programming language. ๐Ÿ‘จโ€๐Ÿ’ป

It contains nearly 26 hours of instructional video, covering the fundamentals of programming via the Go programming language. ๐ŸŽฅ

But apart from just covering some basic concepts in a handful of videos, it also consists of 75 well crafted exercises, which aim to help you master what you've learnt in the videos, but also stretch you with some extra challenges, so that you become more and more autonomous as the course progresses. ๐Ÿ”ฅ

I prefer that you sweat a bit now and become very resilient for what's to come later in your career rather than having a "feel-good" experience to begin with and struggle once you get your first job. ๐Ÿ’ช

However, this course is also about building stuff. ๐Ÿงฑ

When I first started programming, the intellectual challenge of solving random coding challenges was exciting, but what sparked my passion for the craft was using it to build something meaningful.

For me, that moment came when I built my first video game. The feeling of making a character move on the screen for the first time is hard to describe. ๐ŸŽฎ

That's why I won't even bother doing that. Instead, I'll let you experience that joy yourself by building some of the most popular arcade video games using what you've learnt in the course:
โœ… Snake ๐Ÿ
โœ… Pong ๐Ÿ“
โœ… Hangman
โœ… Zombie Shooter ๐ŸงŸ

So, if that all got you excited, embark on this awesome journey and make sure to have fun along the way ๐Ÿš€ :

Go check it out!

Good and Bad Practices – a Limiting Perspective

good and bad practices are a limiting perspective
Photo by Berke Can from Pexels

Growing up as software engineers, we typically spend the first few years of our careers studying various technologies and concepts from the programming area - what a list is, what a hash table is, what's JavaScript, what's HTTP, what is a client-server architecture...

The goal of this venture is for one to accumulate the necessary skills & knowledge to land their first jobs.

But apart from understanding "what" something is, over the years, the preliminary knowledge required to land your first job has expanded to also cover topics which help one not just write software that works, but also write "good code".

Most aspiring software engineers nowadays are advised to read up about the SOLID principles, about what "clean code" is, they're also taught to split up their applications using the MVC "architecture" and have separate models, views and controllers.

Continue Reading

Creating Your Programming Study Plan

study plan

If you've read my last article and taken action, you should now have plenty of time allocated for you to study throughout the week. Now it's time to create your study plan.

Simply having the study time, does not necessarily mean we can use it effectively. Often times, we meaninglessly drift through online courses, textbooks and side projects without really finishing anything.

Sooner or later, you will end up in a situation where you've bought numerous Udemy courses and you've merely completed 10% of each of them.

That, indeed, is one of the greatest challenges of self-study - organising your curriculum & study plan.

But fear not. In this article, I will show you how to bring order to your course catalog mess. One step at a time.

Continue Reading

Why bother presenting as a developer?

This week, I was invited to give a talk at Questers about the topic - Why should we bother presenting as developers? The reason I gave this talk was because there is so much misunderstanding about the value we get from presenting as developers. You might think it is something totally unrelated to development, right? After all, we are paid to write code, not talk about it. Instead of wasting time creating pretty slides, we can learn the new JS framework. That's totally better! Presenting is something managers do. Professional speakers do. And... that's about it? Right? Right? Well, actually. Presenting is something we all ought to do. Whether you are in software development, in sales or whatever. And in this article, you will learn what is the value of presenting for you as a software development professional.
Continue Reading

How to properly use macros in C

Macros in C
One strange phenomenon when coding in C is using macros. This is not something which can be seen in modern programming languages (other than C++). And that is for a reason. Using macros can be extremely unsafe and they hide a lot of pitfalls which are very hard to find. However, as a C or C++ programmer, inevitably, you will encounter macros in your coding life. Even if you don't use them in your own project, there is a high chance you will encounter them somewhere else, such as a library. Your duty is to understand why using this programming feature is dangerous and what dangers it holds. If you don't, then you can run into some pretty nasty errors which are hard to debug and discover.
Continue Reading

The build process of programming languages

This article is part of the sequence The Basics You Won't Learn in the Basics aimed at eager people striving to gain a deeper understanding of programming and computer science.

When I wrote my first program, my trainer told me I merely wrote the source code. Now, I have to translate it to a language understandable by computers. We call that compilation. It happens by clicking Ctrl+F5 (In Visual Studio). And there you have it, your program is now an executable. That's how they initially thought me what the build process of a program is. And that is a good enough explanation for beginners. But at one point, I realized that when I click Ctrl+F5, some processes happen behind the scenes which we don't see. Those processes we will explore in today's article. And did you know, that when you click Ctrl+F5, the processes used are different for different languages? Have you ever wonderedย  why is it harder to code in C++ than it is in C#? Well, we won't be able to explore the whole details of the last question. That has a lot to do with language design and the decisions being taken during the years. But we will explore the fundamental difference between those languages. That difference lies in their build process.
Continue Reading

My experience with “Future Is Code”

Future is Code
"Future is Code" is an initiative aimed to inspire the young people of Bulgaria to start learning programming by showing them how cool it is. Professionals from the IT industry usually go to their schools from their hometowns and make a 45 minute presentation on a topic of their choice. Last year, I have visited more than 20 schools throughout the country and led various presentations in front of varied audiences. Next week, I am starting this initiative again. I want to share with you my experience on this journey, what problems I have faced and how I have resolved them and tell you how you can take advantage of such an opportunity.
Continue Reading

The ultimate challenge for aspiring developers

When I first started programming, I started creating some simple console applications following some course materials. I had to create some simple algorithmic-type programs such as implementing factorial, Fibonacci, etc. Although creating these programs might be fun at first, it's not like creating your own project from scratch. Shortly after that, though, I created my very own game. That was simply amazing! I never thought that you can create some of the most popular arcade games with so little knowledge. That's what hooked me up for programming. It was the step that made me look at programming not simply as a vocation, but a calling. But I realize that I was lucky to find someone from whom to learn how to make my own game and do it myself afterwards. Most of the newbie programmers don't have this experience and I think that is a shame. Today, I want to recreate this journey for you and helpย you create your own game.
Continue Reading

Site Footer