This page is auto-generated from Github Actions workflow that runs every day at night and fetches the 5 latest articles from each of my favorite blogs.| Alex Pliutau - Blog
I don’t know about you, but I love the RSS feed, and over the years, I’ve accumulated various blogs that I follow. However, it’s hard to keep track of them all, as I don’t use any RSS clients. So, I decided to create a GitHub Action that automatically generates and publishes a reading list from the RSS feeds of the blogs I follow.| pliutau.com
A brief post on building a classic Minesweeper game in Go using raylib-go| pliutau.com
In some cases your application doesn’t need Redis, and internal in-memory map with locks and expiration will suffice. For example you already know the size of the map and you don’t need to store a lot of data.| Alex Pliutau - Blog
Recently I’ve been motivated to learn more about functional programming and the name OCaml came up quite a few times. I have seen some praise about it from the people I follow on social media and decided to give it a try.| Alex Pliutau - Blog
In the beginning at Solsten our engineering team focused on building products, tools, services but we never had the time to measure what was going on in our platform (it was an early-stage startup).| Alex Pliutau - Blog
Ebiten is an open source game library in Go for building 2D games that can be ran across multiple platforms. Ebiten games work on desktop, web browsers (through WebAssembly), as well as on Mobile and even on Nintendo Switch.| Alex Pliutau Blog
Logging is a very essential part of large software, it’s hard to overstate the importance of logging, be it performance metrics logging, error logging, or debug logging for troubleshooting later.| Alex Pliutau Blog
We live in the world where there are so many offerings of information in all possible formats: podcasts, videos, blogs, etc. But reading a good book is something that you’ll never regret.| Alex Pliutau Blog
When I say “testable code”, what I mean is code that can be easily programmatically verified. We can say that code is testable when we don’t have to change the code itself when we’re adding a unit test to it.| Alex Pliutau Blog
API clients are very helpful when you’re shipping your REST APIs to the public. And Go makes it easy, for you as a developer, as well as for your users, thanks to its idiomatic design and type system.| Alex Pliutau Blog
You may ask why doing this if we can use PersistentVolume? Though there may be multiple scenarios when mounting GCS bucket to you Kubernetes Pod is a good option:| Alex Pliutau Blog
I always wanted to find a good use case of Google Home to make some DevOps tasks funnier. For example voice deployments, system metrics, etc. Since I use Kubernetes a lot, I thought it would be fun to control it via voice commands.| Alex Pliutau Blog
If you are running HTTP server and want to rate limit requests to the endpoints, you can use well-maintained tools such as github.com/didip/tollbooth. But if you’re building something very simple, it’s not that hard to implement it on your own.| Alex Pliutau Blog
This post is a text version of packagemain #6: Building Desktop App in Go using Wails video. As we all know, Go is mostly used to build APIs, web backends, CLI tools.| Alex Pliutau Blog
Applications with database layer mostly need to execute database migration as part of its deployment process. Usually, running migrations is the first step when deploying the application.| Alex Pliutau Blog
Earlier this month Google Cloud Functions team finally announced beta support of Go, the runtime uses Go 1.11, which includes go modules as we know.| Alex Pliutau Blog
Seems like ClickHouse is experiencing growth in industries like IoT, Web Analytics, AdTech, Log Management, because of its robustness with big amounts of data. IMO it’s a great tool but missing developer community support.| Alex Pliutau Blog
In practice-go we often use table driven testing to be able to test all function scenarios. For example the FindAnagrams() function returns us a list of anagrams found in the dictionary for given input.| Alex Pliutau Blog
This is a text version of this video: packagemain #11: Getting started with OAuth2 in Go. Getting started with OAuth2 in Go Authentication usually is very important part in any application.| Alex Pliutau Blog
Building a Slack Bot with Go and Wit.ai This is a text version of this video: packagemain #9: Building Slack Bot with Go and Wit.ai.| Alex Pliutau Blog
A couple of months ago I moved from a Team Lead position to being an engineering manager at Wizeline Vietnam on a small sized team. I’ve found that this role change come with a mindset change.| Alex Pliutau Blog
Google Home This is a text version of this video: packagemain #10: Building Google Home Action in Go. Google Home is a voice Assistant, similar to Amazon Alexa, but working with Google services.| Alex Pliutau Blog
This is a text version of this video: packagemain #5: Face Detection in Go using OpenCV and MachineBox. I found a very nice developer-friendly project MachineBox, which provides some machine learning tools inside Docker Container, including face detection, natural language understanding and few more.| Alex Pliutau Blog
Yes, they are. And that’s why I love Go. Almost all important tools come together with Go installation, but there are also some you can install additionally depends on your needs: golint, errcheck, etc.| Alex Pliutau Blog
Telnet games were very popular some time ago, especially this Star Wars movie: telnet towel.blinkenlights.nl. I wanted to create something in Go, and I wrote this Snake game over Telnet.| Alex Pliutau Blog
I am enjoying writing programs in a short time, like in a Hackathon way. Here in Vietnam we don’t have Hackathons often, so yesterday I decided to make one for myself with a time limit in 3 hours.| Alex Pliutau Blog
Simplest possible solution for communication between services is to use JSON over HTTP. Though JSON has many obvious advantages - it’s human readable, well understood, and typically performs well - it also has its issues.| Alex Pliutau Blog
To understand git garbage collector, we need to understand how branches work. Branches are just pointers to commits that move whenever a new commit is created.| Alex Pliutau Blog
Usually at work and at home we use different Git name/email pairs, or even per project. Pushing with correct email guarantees that your commits will be authored with a correct user identity.| Alex Pliutau Blog
This post shows how to work with DATETIME/DATE columns in DB and use Go standard time.Time avoiding manual string parsing. This article contains examples using 2 packages: database/sql and github.| Alex Pliutau Blog
A common workaround for building Golang application in Docker is to have 2 Dockerfiles - one to perform a build and another to ship the results of the first build without tooling in the first image.| Alex Pliutau Blog
I am working with git every single day, from different machines and accounts. And all these hosts have the same global git configuration. I sync it using tiny bash script.| Alex Pliutau Blog
The current design of Go’s runtime assumes that the programmer is responsible for detecting when to terminate a goroutine and when to terminate the program. A program can be terminated in a normal way by calling os.| Alex Pliutau Blog
Go 1.8 gives us a new tool for creating shared libraries, called plugins! This new plugin buildmode is currently only supported on Linux. But what if we build plugin with data in binary format inside?| Alex Pliutau Blog
What is go-bindata and why do we need it? go-bindata converts any text or binary file into Go source code, which is useful for embedding data into Go programs.| Alex Pliutau Blog
As a Golang developer I have to clone a lot of packages/tools/etc into $GOPATH/src/github.com. Sometimes I do go get, sometimes it’s necessary to do a combination of mkdir + git clone.| Alex Pliutau Blog
Usually integration tests take long time, because they’re doing real requests to real system. And it’s not necessary to run them every time we type go test.| Alex Pliutau Blog
In some of my projects we have code that needs to run external executables, and it’s very difficult to test them, especially when your function is based on some kind of stdout parcing.| Alex Pliutau Blog
Swagger UI is a great tool and a must have for any respectable API project. It has an intuitive design, all endpoints can be tested from the interface.| Alex Pliutau Blog
The Go language comes with a powerful built-in template engine. In Go, we have the template package to help handle templates. We can use functions like Parse, ParseFile and Execute to load templates from plain text or files, then evaluate the dynamic parts.| Alex Pliutau Blog
Today I realized that size of my vendor/ folder in Golang project is around 150M. I am using glide there. There are 24 dependencies (it’s a program with multiple data storage connectors, notifications, etc.| Alex Pliutau Blog
What does data race mean in Golang? Data race is a common mistake in concurrent systems. A data race occurs when two goroutines access the same variable concurrently and at least one of the accesses is a write.| Alex Pliutau Blog
This post shows how to marshall NULL values from the database into Go struct and how to avoid mistakes during fetching optional values with SELECT query.| Alex Pliutau Blog
~21MB Well, I found yesterday that LogPacker Daemon weights about 21MB. This application is written in Go language, it’s really doing a lot of things, has built-in connectors to different Data-Storages, has Cluster solution inside, etc.| Alex Pliutau Blog
30 basic questions to measure your Golang knowledge. Answers and .go files you can find on GitHub page. Don’t hesitate to create a Pull Request in case of some found errors, typos.| Alex Pliutau Blog
go test -bench=. Go has a great option to write your benchmarks and run it together with go test with option -bench. To create a benchmark function you must do the following:| Alex Pliutau Blog
gomobile bind With gomobile we can generate language bindings that make it possible to call Go functions from Java. And it’s awesome. Now you can write Android applications in Go (unfortunately without UI features and with pure SDK coverage, but I hope it will grow up from experiment to production-ready tool).| pliutau.com
Over the past few months, I saw a growing amount of posts on X about the Gleam language (probably the X algorithm doing its thing), and decided to give it a try.| pliutau.com