Software Tools I Have Used and Evaluated
Programming Languages
go
: go is easy to use, simple, targets many OSes and Architectures (GOOS=windows, GOARCH=amd64). Use:go tool dist list
to see the complete list. eg. http doc. Books: Effective Go, Language Spec.javascript
: javascript is built into browsers. For the backend, I use deno as it can natively handle typescript code.rust
: rust is low-level, memory-safe, fast language. Can target small microcontrollers like the CH32V003. Also good for creating fast, memory safe tooling (eg vite’s Oxc uses rust. tooling). Books: rust book, Effective Rust, Rust by Example.- leap year example.
Databases
nats kv
: nats can be embedded into your gobinary to provide a key-value store, object store in addition to providing event streams: jetstream.chromem-go
: chromem-go is a pure-go embeddable vector database. See code examples.bolt
: bolt is a pure Go key/value store library that has key prefix and range scanning. Think sqlite but without SQL and able to target any ofgo
s targetsbuntDB
: buntDB is a low-level, in-memory, key/value store in pure Go. It persists to disk, is ACID compliant, and uses locking for multiple readers and a single writer. It supports custom indexes and geospatial data. It’s ideal for projects that need a dependable database and favor speed over data size.
Message brokers
nats
: nats is small, fast and features location independence.mqtt
: nats can work as an mqtt broker. nats mqtt bridges mqtt and nats jetstream.
Load testing
hey
: hey:hey -n 10 -c 2 http://localhost:8080/
.apache bench
: ab:ab -n 10 -c 2 http://localhost:8080/
.