Blog Posts

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!

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

How to set up Vim for Go Development

One of the major reasons I love programming in Go is that I can do it in any IDE or editor I want, including my favourite Vim editor.

Unlike Java, for example, which is highly coupled to IntelliJ or Eclipse, Go is much more lightweight and the tools you use with it can be integrated with any editor.

In this guide, I will help you setup your Vim as a fully-fledged Go IDE, including the plugins you need to install but also setting up the important options & mappings which you'll use daily.

Continue Reading

Thread-Safety in Go – An Overlooked Concern @ The Go Conference, Japan, 2021

The Go Conference, Japan

This year, I'll be giving a talk about Thread-Safety in Go - a subject often neglected in many training materials on Go Concurrency at The Go Conference, Japan.

In the talk, we'll cover what thread-safety is at all, why one should care even if we have channels and Goroutines. We'll go through several examples which illustrate non-thread-safe code and how to resolve the issues.

Throughout this process, we'll learn about stateless functions, shared mutable state, delegating thread-safety, atomic compound actions and my favourite - visibility.

And most importantly, in the end I'll provide some guidance on where to learn more about the subject and gain a more complete understanding of concurrency.

So if any of that sounds interesting, I'll see you there. The conference is held online and there are still some tickets left.

The talk will be held at 15:40 GMT+9 (Japan).

I'll see you there!

gRPC With Go Crash Course

gRPC With Go Crash Course

In this crash course, we'll cover everything you need to know about gRPC and integrating it with your Go applications.

Each of the sub-articles below are written in a way that they are independent from one another, so if you're interested in only going through a specific part of the course, feel free to do so.

The only article which is mandatory is the Introduction, which covers what kind of application you'll be building as well as what kind of software you need to install/configure to avoid any technical issues throughout the course.

If you encounter any issues or bugs in the article/code, feel free to open an issue in the Github repo for this course.

If you enjoy the course & want to support me I'd be more than grateful if you ⭐ the repo, share the series, say thanks on Twitter or sponsor my work 🙏

Continue Reading

gRPC with Go Crash Course – Bidirectional Streams

gRPC with Go - Bidirectional Streams

This article is part of the series gRPC With Go Crash Course

In this part of the course, you will implement the most challenging RPC routine type which gRPC has to offer - bidirectional streams.

These routines are used to achieve bidirectional client-server communication - meaning that communication can flow both ways. A way to achieve this using traditional HTTP technologies is via web sockets. With gRPC, you have support for such communication natively.

Continue Reading

gRPC With Go Crash Course – Unidirectional Streams

gRPC with Go - Unidirectional Streams

This article is part of the series gRPC With Go Crash Course

In this part of the course, you will implement slightly more challenging RPC routines which involve utilising the gRPC streaming capabilities.

These are essentially a way to achieve client-side or server-side pagination. However, in contrast to normal HTTP APIs, in gRPC these streaming utilities are first-class citizens rather than a useful add-on (e.g. via web sockets).

There is also support for bidirectional streams, which we will explore in the follow-up exercise. In this one, we’ll focus on unidirectional (client-side/server-side) streaming RPCs.

Continue Reading

gRPC With Go Crash Course – Service Schemas

gRPC with Go - Service Schemas

This article is part of the series gRPC With Go Crash Course

In this article, you will create a gRPC/Protobuf schema for a small micro service system for an online casino. 

The scope of the article is to: 

  • Create the service schemas
  • Correctly generate the protobuf Go sources
  • Implement the gRPC servers/clients for the appropriate microservices
  • Integrate the microservices with each other
Continue Reading

Site Footer