Software Tools I Have Used and Evaluated

Programming Languages

  1. 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.

    • go embedded html fileserver: gist.

    • air provides live reload for go apps. go install github.com/air-verse/air@latest

  2. javascript: javascript is built into browsers. For the backend, I use deno as it can natively handle typescript code.

    • authentication: firebase authentication code example.

    • htmx: htmx enables interactivity with custom html attribute. code example.

    • web components: vanilla js example. A library to make this easier would be lit. Browser usage.

  3. 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.

Databases

  1. nats kv: nats can be embedded into your gobinary to provide a key-value store, object store in addition to providing event streams: jetstream.

  2. chromem-go: chromem-go is a pure-go embeddable vector database. See code examples.

  3. 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 of gos targets

  4. buntDB: 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

  1. nats: nats is small, fast and features location independence.

  2. mqtt: nats can work as an mqtt broker. nats mqtt bridges mqtt and nats jetstream.

Load testing

  1. hey: hey: hey -n 10 -c 2 http://localhost:8080/.
  2. apache bench: ab: ab -n 10 -c 2 http://localhost:8080/.

Cross platform mobile

  1. flutter: flutter targets android, ios, web, desktop. See also supported platforms.

    • authentication: example code.

Related