How I Simplified go-github for Millions

How can a simple contribution to a library impact thousands of programs around the world? And why will this change become obsolete after the Go 1.26 release? These and a few other questions I’ll answer in detail in this post.

TL;DR: I replaced four helper functions (String, Bool, Int, Int64) with a single generic Ptr[T] function in google/go-github , affecting 10K+ projects. Ironically, Go 1.26’s enhanced new builtin will make this pattern unnecessary.

Screenshot of the Ptr function
[Read More]

My adaptation of the "HTTP Client and Server" project to Go from "Beej's Guide to Network Concepts"

Recently, I started learning Beej’s Guide to Network Concepts but found that the examples were written in Python. However, I’m an engineer who loves Go. So, why not adapt it to Go? In this article, I adapt the chapter “5 Project: HTTP Client and Server” to the Go language. This will be useful for anyone learning network concepts who wants to practice in Go.

Screenshot of the terminal running webserver and webclient
[Read More]

Upgrading Golangci-lint to v2

Golangci-lint v2 was released in March 2025 , bringing major architectural improvements and a cleaner configuration format. Despite being available for over seven months, adoption remains low.

If you are maintaining a Go project, now is the time to upgrade. This article covers why you should make the switch and provides a step-by-step walkthrough using a real-world project.

Screenshot of Golangci-lint v2 website (dark theme)
[Read More]

Found a group of malicious Go projects injected with trojan

I accidentally discovered malicious programs in the Go ecosystem that impersonate legitimate tools such as the linter ldez/usetesting , the HCL editor go.mercari.io/hcledit , the official MailerSend Go SDK mailersend/mailersend-go , and many more. These programs are not very popular but are still used by some developers. By the time I wrote this article, I had reported the malicious repositories to GitHub support, and most of them have been deleted.

VirusTotal scan results for the trojan `f0eee999`
[Read More]

Fix: no Go 1.15 binary for darwin/arm64 on Apple M1

If you use an Apple Silicon (M1) Mac, you will hit an issue when downloading Go 1.15 or earlier via the dl tool.

Here is the solution:

$ GOARCH=amd64; go run golang.org/dl/go1.15@latest download
$ go install golang.org/dl/go1.15@latest
$ go1.15 version
go version go1.15 darwin/amd64
[Read More]
go  arm64  macos 

Streamlining email management in Git using IncludeIf

I work simultaneously on different companies’ projects, open-source projects, and personal projects. I should therefore use the same username but distinct email addresses for each of them. Although we can set git config user.email <email@example.com> for each project repository, this can be a tedious manual task and perhaps unsuitable.

The Git config manual describes the use of configuration files to better manage such a task through “Conditional includes” .

[Read More]
git