Announcing GoReleaser v1.19 — the big release
Almost 200 commits adding Nix, Winget, and much more…https://carlosbecker.com/posts/goreleaser-v1.19
This release took almost 2 months (!), and I hope the wait was worth it!
Without further ado, let’s dive in!
column
High-performance, columnar, in-memory store with bitmap indexing in Gohttps://github.com/kelindar/column
typeid
TypeIDs are a modern, type-safe extension of UUIDv7. Inspired by a similar use of prefixes in Stripe's APIs.https://github.com/jetpack-io/typeid
Initializing Large Static Maps in Go
https://www.dolthub.com/blog/2023-06-16-static-map-initialization-in-go
https://www.dolthub.com/blog/2023-06-16-static-map-initialization-in-go
Focus on the Happy Path With Step Functions
https://preslav.me/2023/06/14/golang-focus-on-the-happy-path-with-step-functions
https://preslav.me/2023/06/14/golang-focus-on-the-happy-path-with-step-functions
dbmate
Dbmate is a database migration tool that will keep your database schema in sync across multiple developers and your production servers.https://github.com/amacneil/dbmate
It is a standalone command line tool that can be used with Go, Node.js, Python, Ruby, PHP, or any other language or framework you are using to write database-backed applications. This is especially helpful if you are writing multiple services in different languages, and want to maintain some sanity with consistent development tools.
awl
Anywherelan (awl for brevity) is a mesh VPN project, similar to tinc, direct wireguard or tailscale. Awl makes it easy to connect to any of your devices (at the IP protocol level) wherever they are.https://github.com/anywherelan/awl
mergo
A helper to merge structs and maps in Golang. Useful for configuration default values, avoiding messy if-statements.https://github.com/imdario/mergo
sh
A shell parser, formatter, and interpreter with bash support; includes shfmthttps://github.com/mvdan/sh
Built-in functions in Go 1.21
Go 1.21 brings many exciting things, from profile-guided optimization to standard library packages for structured logging, slices and maps operations (see the release notes for details). In this post, I’d like to skip all that and focus on the features that caught my eye: the new builtins.https://antonz.org/go-1-21-builtins
In case you’re wondering, builtins are functions that do not require importing a package, like len or make. Go 1.21 brings three more of them: min, max and clear. Let’s take a look.
How We Scaled to 100 Million Active Users Using Kafka and Golang — Eventual Consistency
https://itnext.io/how-we-scaled-to-100-million-active-users-using-kafka-and-golang-eventual-consistency-6241cfeba7e8
https://itnext.io/how-we-scaled-to-100-million-active-users-using-kafka-and-golang-eventual-consistency-6241cfeba7e8
Taking a Closer Look at io.SectionReader
https://mustafanafizdurukan.github.io/posts/taking-closer-look-at-io-sectionreader
https://mustafanafizdurukan.github.io/posts/taking-closer-look-at-io-sectionreader
Create Go App CLI
Create a new production-ready project with backend (Golang), frontend (JavaScript, TypeScript) and deploy automation (Ansible, Docker) by running only one CLI command.https://github.com/create-go-app/cli
Focus on writing your code and thinking of the business-logic! The CLI will take care of the rest.
dkron
Dkron is a distributed cron service, easy to setup and fault tolerant with focus in:https://github.com/distribworks/dkron
- Easy: Easy to use with a great UI
- Reliable: Completely fault tolerant
- Highly scalable: Able to handle high volumes of scheduled jobs and thousands of nodes
Dkron is written in Go and leverage the power of the Raft protocol and Serf for providing fault tolerance, reliability and scalability while keeping simple and easily installable.
lingua-go
What does this library do?https://github.com/pemistahl/lingua-go
Its task is simple: It tells you which language some text is written in. This is very useful as a preprocessing step for linguistic data in natural language processing applications such as text classification and spell checking. Other use cases, for instance, might include routing e-mails to the right geographically located customer service department, based on the e-mails' languages.
Go module proxy at Grab
At Grab, we rely heavily on a large Go monorepo for backend development, which offers benefits like code reusability and discoverability. However, as we continue to grow, managing a large monorepo brings about its own set of unique challenges.https://engineering.grab.com/go-module-proxy
As an example, using Go commands such as go get and go list can be incredibly slow when fetching Go modules residing in a large multi-module repository. This sluggishness takes a toll on developer productivity, burdens our Continuous Integration (CI) systems, and strains our Version Control System host (VCS), GitLab.
In this blog post, we look at how Athens, a Go module proxy, helps to improve the overall developer experience of engineers working with a large Go monorepo at Grab.
Simple Fixed-window Rate Limiter With Redis
Fixed-window rate limiting: This is a straightforward algorithm that counts the number of requests received within a fixed time window, such as one minute. Once the maximum number of requests is reached, additional requests are rejected until the next window begins.https://hjr265.me/blog/simple-rate-limiter-with-redis
About Structured Logging in Go 1.21
Upcoming version of the Go programming language, which is expected to be released in the fall of 2023, will introduce a new package named slog. It provides a clean and consistent API for structured logging. Let’s take a closer look on how to use this new library.https://lukas.zapletalovi.com/posts/2023/about-structured-logging-in-go121