Our great sponsors
-
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.
-
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.
This is by far the best tool for the job that I've found: https://github.com/cortesi/modd
* I would love to see Go have first class support for watch/hot reload while developing*
Its not first class, but I have been happy using reflex [1] for non-http and gin [2] for http. Combined with Go's fast compile they work as well as a hot reload.
[1] https://github.com/cespare/reflex
In tandem with https://github.com/cortesi/devd I've found it a good setup for web development.
Modd watches file changes and rebuilds, while Devd enables livereload, letting me make changes in my text editor and then see the rendered changes in the browser, side-by-side, in near real-time.
This is for go web development but I'm pretty sure these two tools are language-agnostic.
Shameless self plug, but I've had that itch and decided to scratch it with a tool[0] that would be universal and not limited to Go - albeit written in it ;)
[0] https://github.com/bartekrutkowski/watchr
> The go mod vendor and go mod tidy subcommands now accept the -e flag, which instructs them to proceed despite errors in resolving missing packages.
Does this mean I can now reliably build the dependencies in prior using this hack,[1][2] to better utilize Docker layer cache?
[1] https://github.com/montanaflynn/golang-docker-cache
It’s still supported and developed, but it’s not an area where most activity is currently focused. It is very stable, even more so when it was first added, since bugs are being fixed and regression tests are added. You can see what issues are open and closed at https://github.com/golang/go/issues?q=is%3Aissue+label%3AArc....
I’ve been using Go in the frontend in many (most?) of my personal projects since the early days of GopherJS, and by now I’ve compiling most of that frontend code to Wasm.
If you haven’t already seen it, https://golang.org/wiki/WebAssembly has lots of good info.
To do this well (for servers, which is the most common case) you need to keep the port open (and delay requests while recompilation is in progress) or clients can see transient errors. So it's probably not a language level concern, but a protocol level one (it's very solvable for HTTP for example).
I built https://github.com/superhuman/lrt which tries to solve this problem in a go-like way (no configuration required, minimal log noise, and reliability/simplicity as the primary design goals) for Superhuman.
I have been quite happy with the Gtk bindings for Go (https://github.com/gotk3/gotk3). As Gtk has a C Api, it is a good match for Go, actually Go makes Gtk nicer than calling it from C in my eyes, as the GObject wrap to Go types and you can just call methods on them vs. the C syntax of passing the GObject as the first function argument and having the object type in the function name.
If you install the Gtk libraries on the Mac, Go programs written with gotk3 just compile and run there too.
I do care about categorization though. Here’s an identifier parsing library of mine (https://github.com/smasher164/xid) where I can’t test that codepoints are in some category without knowing the version.
If unicode was an external library, it would be my responsibility to update this identifier parsing library.
Gio is coming along nicely. Once they go full tile-based-rasterization ala Pathfinder it'll be a contender.
https://gioui.org
Go makes pretty bad WebAssembly. It only embeds in Javascript, and it's at least 2MB for Hello World. You can't really use it in server-side engines like wasmer/wasmtime.
TinyGo is far better, but only supports a subset of Go's stdlib.
I'm playing with TinyGo, and using GPRC communication with the outer engine as a poor substitute for WASM interface types.
https://github.com/fizx/goingo if you want to read the ugly prototype!
I have great success with https://fyne.io/ used it to build my home grown MFA app (written in Go, work on iOS, Android, Desktop). granted it takes a bit of binding in C to work on iOS.