Go (lang)

A great systems-oriented programming language I’ve taken up to complement

Tricks

Shrinking executables via gccgo and upx:

go build -mod=vendor -gccgoflags '-Os -s' -o main && upx --best --lzma main

Resources

Category Date Link Notes
AI 2023 agency

an LLM library for Go

Authentication 2020 authelia

authentication and authorization server providing 2-factor authentication and single sign-on

tobab

an identity-aware proxy

Ory

a full IAP authentication solution with OpenID integration

loginsrv

a standalone minimalistic login server providing a JWT login for multiple login backends

2018 traefik-forward-auth

a forward auth service that provides OAuth support for the Traefik reverse proxy

Big Data gohadoop

A set of libraries to build Hadoop jobs

2015 Glow

An easy-to-use distributed computation (map-reduce) system in pure Go.

Configuration 2018 envconfig

simple, no-frills environment variable handling

2017-01 viper

A flexible configuration solution for 12 factor apps (and more)

Data Science 2018 go-freeling

Natural language processing

gonum/floats

operations on slices of floats

gonum/graph

Graph navigation/traversal

gonum/matrix

Matrix algebra

gonum/optimize

Gradient descent and minimization

gonum/plot

Plotting and visualization

gonum/stat

statistics package

gophernotes

A Jupyter kernel for Go

gota

DataFrames, Series and data manipulation

regression

Multivariable regression

csvutil

CSV and tabular data

Data Structures 2016 gen

Clojure-like immutable data-structures and functional helpers

Database 2022 sqlite

a Go interface to sqlite3

go-sqlite3-stdlib

a set of math and statistics extensions to sqlite

2021 nakama

A game-oriented state server, backed by CockroachDB

2020 dbmate

a database migration tool that supports MySQL, PostgreSQL, SQLite and ClickHouse

2016 gorm

A Go ORM library

Deep Learning 2018 go-neural
gonn
neurgo
Desktop 2022 wails

an Electron-like framework for desktop app development

GUI 2023 fyne

a cross platform GUI toolkit that can be used in Android and iOS

2022 tinygui

a GUI toolkit for TinyGo

Graphics sdfx

a CAD package written in Go

2016 gift

The Go Image Filtering Toolkiti

HomeKit 2022 hap

a rewrite of the brutella/hc HomeKit library

IoT 2020 tamago

compile and execute Go on bare ARM SoCs

2018 gokrazy

a pure-Go userland for Raspberry Pi 3 appliances

tinygo

an LLVM compiler for small devices

Libraries 2023 ergo

an impressive Erlang-compatible library for implementing OTP design patterns

sdf

signed distance function shape generation

oidc

OpenID Connect client and server library

2022 maphash

Hash any comparable type using Golang’s fast runtime hash.

imagemeta

supports EXIF, XMP and HEIC metadata parsing

natiu-mqtt

a self-contained MQTT implementation

2020 Chroma

a fast generic syntax highlighter

olric

A distributed cache and in-memory key/value data store that can be used standalone or embedded.

2019 bild

a collection of parallel image processing algorithms

2018 go-imap

an IMAP client library

goworker

A Resque-compatible library for background workers

go-dsp

A digital processing package

ffjson

Faster JSON for Go

gjson

Fast JSON data retrieval

scrape

A simple interface for Go web scraping

2016 go-linq

LINQ-like functionality with coroutine support

libchan

A network-enabled abstraction that mimics channels

Machine Learning 2018 goml

stream oriented ML library

word2vec

word2vec model support

golearn

A very nice machine learning library

Messaging nsq

A message queueing system

Microservices 2020 flogo

a low-code environment with streaming support and a Node-RED like approach.

flatend

an interesting take on deployment and discovery via P2P/Kademlia

2019 go-micro

a microservices framework with pluggable components for discovery, transports, etc.

Middleware 2017-11 casbin

a flexible access control library

Networking 2023 blocky

DNS proxy/ad-blocker for local network (can run inside of gokrazy)

2018 router7

A router based on gokrazy

Other 2021 macdriver

Objective-C bindings for Go

2018 Shrinking Go binaries

By stripping debug symbols and using upx

go-bindata

Pack external assets into a Go program as binary data

Parsers 2016-06 etree

An XML handling library modeled on Python’s ElementTree

Protocols 2016 go-vnc

An extensible VNC protocol library

2015-03 torrent

An embeddable BitTorrent library

2015-01 mangos

A network library for IPC patterns

Robotics 2014 Gobot

A set of robotics-oriented libraries

Search 2016 blevesearch

A Lucene-like indexing library

Servers 2023 mox

modern full-featured (SMTP, IMAP, DKIM, etc.) mail server

2020 maddy

a composable, all-in-one SMTP/IMAP server

System 2018 suture

A library that implements Erlang-like supervision trees

Tools 2024 gozer

A simple static site generator

monogon

a Linux userland in pure Go

nano-web

Hyper-minimal webserver for serving SPAs and static content

2023 glow

a CLI Markdown renderer in te spirit of more/less

gojekyll

A partial reimplementation of Jekyll in Go

2022 vhs

terminal demo recorder with GIF/ffmpegre output

goweight

a CLI tool to identify which libraries contribute most to binary size

2021 till

a web scraping caching proxy that handles most of the anti-scraping mechanics

zinc

a lightweight alternative to elasticsearch that claims to run in less than 100 MB of RAM and has a broadly similar API

pyroscope

a profiling platform with support for Go, Python and Ruby

2020 Got

a tool/library that uses concurrent HTTP range requests for faster downloads

Transpilers 2014 Tardis Go

A transpiler to JavaScript

funcgo

A simplified dialect that compiles to Clojure

GopherJS

A transpiler to JavaScript

UI 2019 muon

a lightweight alternative to Electron with go bindings

2018 termui

A terminal-oriented dashboard library

2014 ui

A platform-native GUI library

Web 2022 but

a full-stack web framework with server-side rendering and good JS integration

2020 gearbox

A web framework built around fasthttp

2018 Beego

Ships with an ORM and built-in monitoring

QOR

A set of libraries for E-Commerce and CMS

Gin

uses a Radix tree for routing, handles panics

Gobuffalo
Iris

Lots of features and plugins

2017-07 HttpRouter

A high performance HTTP router

Goji

A Sinatra-inspired, minimalist framework

2016-06 echo

A high-performance HTTP server framework with LetsEncrypt support

Web Frameworks 2024 sandwich

a middleware & routing framework

pocketbase

a web app realtime backend with SQLite, user and file management, and a dashboard UI.

Writing 2023 vale

an extensible linter for prose

This page is referenced in: