Reading Google Sheets from a Go program
https://eli.thegreenplace.net/2024/reading-google-sheets-from-a-go-program
https://eli.thegreenplace.net/2024/reading-google-sheets-from-a-go-program
bob
https://github.com/stephenafamo/bob
SQL query builder and ORM/Factory generator for Go with support for PostgreSQL, MySQL and SQLite
https://github.com/stephenafamo/bob
rill
https://github.com/destel/rill
Rill (noun: a small stream) is a Go toolkit that offers a collection of easy-to-use functions for concurrency, streaming, batching and pipeline construction. It abstracts away the complexities of concurrency, removes boilerplate, provides a structured way to handle errors and allows developers to focus on core logic. Whether you need to perform a basic concurrent ForEach or construct a complex multi-stage processing pipeline, Rill has got you covered.
https://github.com/destel/rill
entropy
https://github.com/EwenQuim/entropy
Entropy is a CLI tool that will scan your codebase for high entropy lines, which are often secrets.
https://github.com/EwenQuim/entropy
hn-text
https://github.com/piqoni/hn-text
A fast, easy-to-use and distraction-free Hacker News terminal client.
https://github.com/piqoni/hn-text
pgxmock
https://github.com/pashagolub/pgxmock
pgxmock is a mock library implementing pgx - PostgreSQL Driver and Toolkit. It's based on the well-known sqlmock library for sql/driver.
pgxmock has one and only purpose - to simulate pgx behavior in tests, without needing a real database connection. It helps to maintain correct TDD workflow.
https://github.com/pashagolub/pgxmock
hookdeck-cli
https://github.com/hookdeck/hookdeck-cli
Free - no account required - alternative to ngrok for localhost asynchronous web development (e.g. webhooks)
https://github.com/hookdeck/hookdeck-cli
Making Regex From Scratch in Go
https://lewismetcalf.com/series/making-regex-from-scratch-in-go
This series is a step by step guide to creating an (almost) fully fledged Regex engine using Go. It explores the basics of Finite State Automata, incrementally creates a parser and compiler for turning strings into state machines, walks through the setup of a visualizer for the FSM node graph. All of the development is structured as a TDD project, and uses modern Go features such as fuzzing, generics, and profiling.
https://lewismetcalf.com/series/making-regex-from-scratch-in-go
A pragmatic guide to Go module updates
https://carlosbecker.com/posts/pragmatic-gomod-bump
Some quick bits about how to do go.mod version bumps.
https://carlosbecker.com/posts/pragmatic-gomod-bump
Shameless green: TDD in Go
https://bitfieldconsulting.com/posts/tdd-shameless-green
This is the second in a three-part series, extracted from my book The Power of Go: Tests, about test-driven development (TDD) in Go—in other words, building software in Go, guided by tests.
https://bitfieldconsulting.com/posts/tdd-shameless-green
Rust's concurrency model vs Go's concurrency model: stackless vs stackfull coroutines
https://kerkour.com/rust-vs-go-concurrency-models-stackfull-vs-stackless-coroutines
While Rust and Go are both modern programming languages that have learned from the mistakes of the previous generation, they manage concurrency in a completely different way, which, as we will see, has a huge impact on performance and developer experience.
https://kerkour.com/rust-vs-go-concurrency-models-stackfull-vs-stackless-coroutines
On testing Go code using the standard library
https://henvic.dev/posts/testing-go
Most modern programming language ecosystems provide assert functions in their testing libraries but not Go’s. Its standard testing package follows a more direct and to-the-point approach. In fact, there isn’t even a single assertion function in the testing package, and writing idiomatic tests in Go isn’t that different from writing application code.
https://henvic.dev/posts/testing-go
7 Common Interface Mistakes in Go
https://medium.com/@andreiboar/7-common-interface-mistakes-in-go-1d3f8e58be60
Go is still a new language, and if you’re working with it, chances are that this is not your first programming language.
Coming from a different language, you bring forth both your experience as well as your biases. Things you used to do in your previous language might not be a good idea in Go.
https://medium.com/@andreiboar/7-common-interface-mistakes-in-go-1d3f8e58be60
bleve
https://github.com/blevesearch/bleve
A modern text/numeric/geo-spatial/vector indexing library for go
https://github.com/blevesearch/bleve
Caesar framework
https://www.caesar.rocks
Caesar is a Go web framework, designed for productivity. It takes inspiration from traditional web frameworks such as Ruby on Rails, Laravel, Django, Phoenix, AdonisJS, etc.
As of today, Go developers have to spend tremendous time architecting their web applications, setting up the project structure, configuring the database, choosing the right routing library, and so on.
Caesar aims to solve this problem by providing a set of tools and conventions that allow developers to focus on building their web applications, rather than setting them up.
https://www.caesar.rocks
Resetting timers in Go
https://antonz.org/timer-reset
If you use Timer.Reset() in Go 1.22 or earlier, you may be doing it wrong. Even the book 100 Go Mistakes (which is usually right about Go nuances) got it wrong.
https://antonz.org/timer-reset
river
https://github.com/riverqueue/river
River is a robust high-performance job processing system for Go and Postgres.
https://github.com/riverqueue/river