Our great sponsors
-
vcluster
vCluster - Create fully functional virtual Kubernetes clusters - Each vcluster runs inside a namespace of the underlying k8s cluster. It's cheaper than creating separate full-blown clusters and it offers better multi-tenancy and isolation than regular namespaces.
-
TinyGo
Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
Ory Hydra
OpenID Certified™ OpenID Connect and OAuth Provider written in Go - cloud native, security-first, open source API security for your infrastructure. SDKs for any language. Works with Hardware Security Modules. Compatible with MITREid.
-
Juju
Orchestration engine that enables the deployment, integration and lifecycle management of applications at any scale, on any infrastructure (Kubernetes or otherwise).
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
ozzo-validation
An idiomatic Go (golang) validation package. Supports configurable and extensible validation rules (validators) using normal language constructs instead of error-prone struct tags.
-
jsoniter
A high-performance 100% compatible drop-in replacement of "encoding/json" (by json-iterator)
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Kubernetes controller (it's like an extension for Kubernetes) - https://www.vcluster.com/ . Most of the Kubernetes ecosystem is written in Go, so you have all the API definitions, libraries, etc. that you can just import, and as a result people rarely go with other programming languages. Most used libs would be kubernetes/client-go, kubernetes-sigs/controller-runtime, spf13/cobra
But then I met TinyGo.
I play with embedded a lot (have even done so professionally off and on). I never considered the Arduino IDE to be "industrial strength", so I avoid using it. I found "PlatformIO" to be a reasonable platform for a professional. It is written in Python and straps together 1000's of open-source projects. You can pick different frameworks, OSes and boards. It was "good enough" but in the back of my mind, it still always felt "fragmented". It presented lots of "choice", but many of those choices were bad. At least they encouraged and supported testing.
I currently work for a company that provides a security operations center to major corporations and governments. In my current role, the most important language is Python since any non-developer in our company still often knows Python due to the nature of their work, but I wrote a reasonably complicated Lambda in Go and have contributed to some Go open source projects we depend upon (Argo). There are a range of libraries I've used from github.com/nsf/jsondiff to AWS SDK stuff to Zap (a logging lib from Uber) to Hashicorp Vault stuff and testify for testing purposes. I've also had to use yaml, and I used the K8s library for that. I can't think of too much else I've used outside the standard library offhand.
For hobby work I've used Gorilla Mux for web APIs and written a UI in Angular and I depended upon Badgerdb for data storage since it's a fantastic in-process datastore and well supported since it's the backend for Dgraph. I'm quite happy with those choices, but I'm going to be rewriting my hobby work and using Postgres by way of Ent, playing with Go HTML templating, and using just the standard library for routing (probably... might go back to Gorilla). I might use ORY Hydra for all my auth needs this time around, but of course, hobby work moves far slower than professional work, so it's hard to say what all I will get around to doing.
At Canonical I work on two open-source projects written in Go: Juju, a large cloud-based application deployment tool, and Pebble, a small Linux service manager. Both include CLI clients and API-based server daemons. Juju in particular is a large distributed system.
At Canonical I work on two open-source projects written in Go: Juju, a large cloud-based application deployment tool, and Pebble, a small Linux service manager. Both include CLI clients and API-based server daemons. Juju in particular is a large distributed system.
We usually use chi for HTTP routing, gRPC for internal microservices (using gogoprotobuf for a more performant protobuf implementation), Sarama to talk to Kafka, sqlx and github.com/lib/pq to talk to Postgres, aws-sdk-go to talk to AWS services, internally developed libraries to integrate database/sql with AWS Athena and to read and write parquet files, zap for structured logging, stuff like that.
I just use Cobra (cli verbs and flags) and Viper (configuration) for the most part. github.com/spf13/cobra and github.com/spf13/viper
I just use Cobra (cli verbs and flags) and Viper (configuration) for the most part. github.com/spf13/cobra and github.com/spf13/viper
Scalable data streaming systems based on https://www.benthos.dev/
p/s I am the main contributor to Gorgonia which is a pure Go deep learning library that somewhat predates TensorFlow
I created Turandot, Candice, Reposure, Knap, CNCK, QCR, multusctl, and a whole bunch of dependent libraries, and also participate in a bunch of other K8s-related projects.
I created Turandot, Candice, Reposure, Knap, CNCK, QCR, multusctl, and a whole bunch of dependent libraries, and also participate in a bunch of other K8s-related projects.
I created Turandot, Candice, Reposure, Knap, CNCK, QCR, multusctl, and a whole bunch of dependent libraries, and also participate in a bunch of other K8s-related projects.
I created Turandot, Candice, Reposure, Knap, CNCK, QCR, multusctl, and a whole bunch of dependent libraries, and also participate in a bunch of other K8s-related projects.
I created Turandot, Candice, Reposure, Knap, CNCK, QCR, multusctl, and a whole bunch of dependent libraries, and also participate in a bunch of other K8s-related projects.
I created Turandot, Candice, Reposure, Knap, CNCK, QCR, multusctl, and a whole bunch of dependent libraries, and also participate in a bunch of other K8s-related projects.
I created Turandot, Candice, Reposure, Knap, CNCK, QCR, multusctl, and a whole bunch of dependent libraries, and also participate in a bunch of other K8s-related projects.
Backend APIs with Graphql using https://github.com/99designs/gqlgen.
Other packages of note: https://github.com/uber-go/zap https://github.com/go-ozzo/ozzo-validation
Other packages of note: https://github.com/uber-go/zap https://github.com/go-ozzo/ozzo-validation
Neat. I was just seeing someone on this subreddit asking for a Go port of Google’s OR Tools.
https://github.com/klauspost/compress on critical paths which need to do compression/decompression: it's optimized for linux/amd64 and allows to pool compressors/decompressors.
https://github.com/dchest/safefile a no-brainer package which implements (almost) proper atomic file rewriting.
https://github.com/LopatkinEvgeniy/clock an in-house package written to mock time in unit tests which need it (at the time it was written, its competitors were not quite on par; the situation had most probably changed since then).
https://github.com/syndtr/goleveldb for heavy-duty local data storage.
https://github.com/xeipuuv/gojsonschema to validate some incoming JSON docs.
https://github.com/pascaldekloe/colfer high-perf binary sesialization format (for internal on-disk data storage).
https://github.com/json-iterator/go an alternative JSON encoding package which allows to stream (flush out) encoded data as soon as it's able to (which is in contrast with the stock package which buffers everything until the encoding is known to be complete and OK).
https://github.com/mailru/easyjson fast JSON (de)serializer which go generates code instead of using reflect at runtime.
https://github.com/mitchellh/mapstructure because we have JSON documents which contain rugged arrays ;-)
https://github.com/stretchr/testify in unit tests.