Blog Posts

gRPC With Go Crash Course – Introduction

gRPC with Go - Introduction


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

In the following set of articles, you'll learn how gRPC works by building several simple web applications and hook them together using gRPC.

The articles won't go into details of what gRPC is and what's its purpose. There's a lot of existing material on the subject already. Instead, they focus on helping you get some real practice using gRPC, integrating it into your own applications & understanding the core mechanisms it provides.

First, we'll cover what we're about to build & the environment setup you'll need for the rest of the articles.

Additionally, have in mind that all the parts of the course are written in a way that they are independent from each other. So if you're not interested in the whole course and want to jump straight to Bidirectional Streams (for example), feel free to do so.

Continue Reading

Hands-on gRPC at Gophercon Israel 2021

Gophercon Israel 2021

I'm super excited to announce that I'll be leading a workshop at Gophercon Israel 2021 (https://www.gophercon.org.il/) this year with "Hands-on gRPC with Go".

In this workshop, participants will be building several web services, which are communicating using the gRPC protocol. They'll explore all different communication types the protocol provides, giving them everything they need to know to integrate and start using gRPC in their own web services.

So if you want to learn gRPC and your hands are itching, grab your ticket and I'll see you there!

Thread-Safety in Go – an Overlooked Concern

Thread-Safety in Go - An overlooked concern
Gopher on image was designed by Renee French. (http://reneefrench.blogspot.com/)

When you first start tinkering with concurrency in any language, what's the most sought after goal is extracting the maximum output from the hardware you have available.

That's why we use it and study it in the first place - to achieve optimal parallelism & get some significant speed-up for our apps out of the box.

However, a not so glamorous part of studying the subject is understanding how to write thread-safe code. The techniques and principles which will enable you to keep your application well-behaved, even after scaling it to dozens of threads.

Even though this is an important thing to consider while writing concurrent code, it is often overlooked in most learning resources about concurrency. This problem is even more relevant in the Go community due to two common misunderstandings I will cover in the article.

Continue Reading

Your Programming New Year’s Resolution

Your programming new year's resolution

So it's that time of the year when you make your new year's resolution. As developers, that might revolve around filling some gaps in our understanding of systems we use or perhaps learning a new programming language.

Whatever your goals might be, one thing is certain about new year's resolutions - you can hardly achieve it without laying out some plan. Without a plan or a schedule, it is perfectly normal to stray away from your goals and go back to your normal routine of spending time with some addictive, but needless pastimes such as checking your facebook news feed.

And I'm not sharing anything new. Most people understand this. However, planning and organising one's life is not an easy undertaking. That's why I've prepared this article - to help you establish an effective and sustainable routine to steadily achieve your goals.

Continue Reading

How to create a Github read-only API token

Github read-only API Token

Ah, so you're maintaining some kind of app which relies on github's API and you want to grant it an access token in order to view a repository's issues, code, etc.

But you don't want that token to be an almighty read/write one, do you?

That is a serious security vulnerability if someone succeeds in acquiring your token.

Fear not, I've got you covered. In this article, I'll show you how to create a read-only api token for your apps.

Continue Reading

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

todocheck v0.3.0 is live!

todocheck logo

The next release of todocheck – the tool that helps you track & keep TODOs actionable is live!

First time you hear about it? – check this out first.

What's New?

The major feature for v0.3.0 which I was aiming for is extending support for Windows. Previously, there was a cross-platform incompatibility issue which was resolved & now the tool can reach a larger audience.

The other major change was extending support for privately-hosted Gitlab instances, which also drives adoption upwards.

The rest of the changes involve improvements to validations, showing more user-friendly errors in case of issues with your configuration, support for a new programming language - Scala, as well as several other enhancements to aid the project maintainers.

You can see the full changelog here.

My thoughts on Java Concurrency in Practice

My thoughts on JCIP

One of my key goals this year was to gain a good understanding of concurrency and multithreading. I've always had a tangent understanding of it at best. The book Java Concurrency in Practice was one of my first picks.

Sure, I've used multithreading concepts like promises & ajax in JavaScript before. I've also spawned go routines & used mutexes in Go. But I've never felt I'm proficient enough to state that I have a good understanding of this subject.

Hence, to bridge this gap in knowledge & skills, I decided to invest in several concurrency related books & courses. My intention was to start from JCIP and then move on to some additional courses. Initially, I felt that just reading this book won't be sufficient to understand the subject thoroughly.

However, after going through this book I didn't bother looking into any other concurrency course at all. It is one of the most succinct and yet thorough books on a given topic that I've ever read.

Additionally, I would recommend you to go through this book even if you're not using Java at all. It will give you a very profound understanding of whatever framework/mechanism your language of choice uses to tackle concurrency.

Here's why...

Continue Reading

Speaking at Golab Conf this year!

This year, I'm going to be presenting at Golab Conf about Advanced Dependency Management in Go using Fx. I'm also hosting a workshop on integrating your Go service \w the ELK stack.

In the talk, we'll cover what the Fx framework is and how it can help you reduce some of the component wiring boilerplate as well as help you structure your applications into reusable modules, which is especially great in a microservice environment!

As for the workshop, it's a VERY hands-on 3-hour workshop in which you'll learn how to use the Elastic stack to greatly enhance your services' observability. If you have no idea what all that means, then this workshop is definitely for you. It will give you the knowledge to evaluate if these tools are right for you and the skills to fully integrate this into your systems & start using it right away.

If any of that sounds interesting to you, then book your seat!

Otherwise, check out the full agenda here as there are also other pretty cool talks & some quite interesting workshops!

The conference is hosted online throughout 19th October to 25th October from the comfort of your own seat at home.

The "Advanced Dependency Management in Go using Fx" talk is held on 16th October, 17:30 PM GMT +2.

The "Integrating your Go service with the ELK stack" workshop is held on 21st October, 12:30 PM GMT+2.

I'll see you there!

UPDATE:

The videos from the talk + workshop are out. Check them out:

Advanced Dependency Management in Go using Fx

Workshop - Integrating your Go service with the ELK stack

Site Footer

BulgariaEnglish