Lessons learned adding OpenTelemetry to a (Cobra) command-line Go tool (10 mins read).
Some reflections on what I've found good and not so good about instrumenting a command-line tool with OpenTelemetry.
Lessons learned adding OpenTelemetry to a (Cobra) command-line Go tool (10 mins read).
Some reflections on what I've found good and not so good about instrumenting a command-line tool with OpenTelemetry.
Some Go web dev notes
Using a separate Go module for your tools.go
(2 mins read).
How to use the tools.go
pattern to source-track your Go tool dependencies, but without polluting your top-level go.mod
.
In this blog post, I'll explain why your logger belongs in the context, share my favourite package and provide some code snippets to get you started.
GopherCon UK 2024 (22 mins read).
A writeup of the GopherCon UK 2024 conference.
Always choose the right tool for the job? Nah. I know Go quite well, and I use it wherever I can. Want to find out why?
As of Go 1.21, Go fetches toolchains automatically, and it’s easy to not be running the version that you thought you were running.
I'm on Go Time! (3 mins read).
Announcing my first podcast appearance on Go Time, talking about OpenAPI, oapi-codegen
, versioning, and some fun Unpopular Opinions.
Better structured concurrency for go. Contribute to sourcegraph/conc development by creating an account on GitHub.
Go library for accessing the GitHub v3 API. Contribute to google/go-github development by creating an account on GitHub.
A GoLang HTTP RoundTripper that handles GitHub API secondary rate limits - gofri/go-github-ratelimit
HTTP Round Tripper for GitHub Apps - Authenticate as an Installation Workflow - bradleyfalzon/ghinstallation
Test query is a command line tool to query test results with a SQL interface - danicat/testquery
Go driven rpc code generation tool for right now. Contribute to pacedotdev/oto development by creating an account on GitHub.
Modifying the response body of an httputil.ReverseProxy
response (2 mins read).
How to modify the response from a httputil.ReverseProxy
before it goes back to the caller.
A tool for analyzing the dependencies in compiled Go binaries, providing insight into their impact on the final build. - Zxilly/go-size-analyzer
Quick thoughts on whether sqlc is still the direction for Go projects now that we’ve been using it for three years.
Using Go's database/sql
to query an arbitrary columns of unknown type(s) (3 mins read).
How you can query an unknown number of columns, of unknown types, with Go's SQL package.
New release of #oapi-codegen is out 🚀
Big changes are:
net/http
enhanced routingAnd a whole host of other changes, check out the full release notes at https://github.com/deepmap/oapi-codegen/releases/tag/v2.2.0
GoLang architecture linter (checker) tool. Will check all project import path and compare with arch rules defined in yml file. Useful for hexagonal / onion / ddd / mvc and other architectural patte...
Calculating the GitHub API's sha
representation of a local file (2 mins read).
How to locally calculate the same sha
of a given file, so you can compare it against the GitHub API's representation.
Making it easier to schedule cross-timezones, with the tz
CLI (3 mins read).
Writing a command-line tool with Charm's Go libraries to compare the suitability of meetings across timezones.
I'm on Cup o' Go! (2 mins read).
Announcing my appearance on Cup o' Go, talking about oapi-codegen
, OpenAPI, working on Open Source and blogging.
I recently received an issue report that ijq was performing slowly. The issue claimed that, when used on a large (16 MB) JSON file, ijq was “too slow to be usable”. I downloaded the test file which …(https://gpanders.com/blog/making-ijq-fast/)
Shows how much the performance of Go has improved from version 1.0 through to 1.22 (including PGO) -- in its compiler, runtime, and libraries.
I made up a neat little pattern in Go the other day. It’s a way to represent a state change in a system by exposing different APIs for different states, while only holding state in a single underlying struct. I’m sure I’m not the first person to invent this, and it may already a name, so please let me know if you know of one. I’m going to show an instance of the pattern first and the motivation after.
Go queue library built on SQLite and inspired by AWS SQS. - maragudk/goqite
What routes is my http.ServeMux
listening for? (2 mins read).
How to fairly quickly list the routes that your http.ServeMux
is handling, pre- and post-Go 1.22.
Why is Go 1.22's enhanced routing not working for me? (2 mins read).
Why you may be receiving 404 page not found
errors when using Go's new enhanced routing in Go 1.22.
Creating a quick CLI in Go is easy, but here are some patterns you can use to make your CLI easier to extend in the future
Make the compiler check your assumptions before any code runs.
A Go tool to auto generate methods for your enums. Contribute to dmarkham/enumer development by creating an account on GitHub.
Go first came onto my radar about 9 years ago when I came across MuMax during my PhD studies. While I’ve touched it briefly, I wouldn’t consider myself to have used it in anger until recently, when I started a job that uses it as one of it’s primary languages for API development. I’ve had experience in writing C and C++ code, but more recently I’ve done a lot of Python, so going back to Go has felt oddly like a throwback to those compiled languages I’ve used before, with a bit of modern sparkle.
It may seem silly, but go run is my favorite part about go. Want to run your code? go run main.go. It is so stupidly simple that I could tell my mom about this command, and she would immediately understand. Like with most things in go, the real power in this command is in the effortless understanding of how to build and run everyone’s code. But I can run node main.
Gotcha: Don't try and authenticate to URLs generated by GitHub Actions Artifacts v4 (3 mins read).
Why you may be receiving errors when trying to authenticate to download GitHub Actions Artifacts using the v4 Actions.
In response to @cadey@pony.social's blog post about wanting retry loops in #Golang, I wrote terrible hack using using the proposed iterator syntax. https://go.dev/play/?v=gotip var err error for range backoff(&err, 1 * time.Second) { if err = something1(); err != nil { continue } if err = something2() ; err != nil { continue } }
I wish Go had a retry block https://xeiaso.net/blog/2024/retry-block/
Mat Ryer, principal engineer at Grafana Labs and host of the Go Time podcast, shares what he's learned from more than a dozen years of writing HTTP services in Go.
Mat Ryer, principal engineer at Grafana Labs and host of the Go Time podcast, shares what he's learned from more than a dozen years of writing HTTP services in Go.
You're currently viewing page 1 of 6, of 289 posts.