Technology I like, use or create

Heres a list of technology I either use, create or am exploring. This list isn't exhaustive, but should give a good current snapshot of how I think and what I'm doing.

Development

  • alacritty

    The best terminal emulator by a country mile, and I've had the pleasure of using it as my daily driver for about 4 years now.
  • neovim

    Once you go Modal you never go back - me.

    I've been using vim for a long time by now, and modal editors become a way of interacting with your code that you can't really unlearn or un
  • tmux

    The ultimate terminal multiplexer, used by gods and goblins alike.
  • helix

    My incoming vim replacement (maybe?). I've been using this recently and it really exposes the limitations of vim, but I have years of vim muscle memory to unlearn so progress is slower than I like.
  • vscode

    vscode has become something of an "editor platform" in our industry. There are lots of very high quality plugins built for it and in general is very good. I tend to use this when I'm either reviewing code or exploring a problem (ie learning), as opposed to when I'm "building".

Languages

  • Typescript

    I've been using Typescript for ~8 or so years now. I can't even remember the last time I used vanilla JS. The compilers ability to represent union types and functions as first class objects means we have a verbosy ML or Haskell language now :heart:
  • Python

    I can't escape the clutches of this language. I've used it for years and its everywhere, but I've come to hate it. It does everything kind-of ok, but it means it doesn't excel at anything.
  • Haskell

    The mind melting language. It seems to do almost everything right. I've used Haskell on and off for 7 years. I really enjoy it and I think it's the future of programming, but the toolchain can be a mofo to work with on different archs.

    The thing that really excels with functional languages is your ability to program in generics rather than specific use cases. Its so much more powerful and elegant this way.
  • Kotlin

    My dropin replacement for Java. Same pig, but much prettier lipstick. I started using Kotlin when I built a built a PoC for Liven using http4k and was impressed with, dare I say it, the non-EE everything about it. Whilst still a hosted language it felt much more closer to the metal than enterprise-Java anything with its infinite factory call chains.

    I use it extensively with Micronaut these days.
  • Java

    The Grand-daddy of OO. I've used Java for going on 10 years. I've had the misfortune of only working with legacy codebases on it, meaning I know the language and the `dEsIgN pAtTeRnS` really well, but for the life of me I couldn't tell you how to set up a Spring Boot system
  • Elm

    My go-to front end language these days. I was the first commercial user of react way way way back at version 0.6.2 or something, but I have seen the light and it is blinding.
  • Ocaml

    My first functional language and the one that really began my journey into breaking away from the mainstream. I still feel that it is as close to the perfect expression of programming as exists to bothread and write. I really need to dust off the rust on this one.
  • Elixir

    I first used Elixir when building a payment system. I'd come off a project a year or so before using dotnetcore 2.2 where we had many thousands of active consumers at any one time. We essentially blew up an entire Australian Azure functions stack and Microsoft weren't happy. There were multiple issues with RSync and netcore also.

    Elixir basically shits all over those problems we had. I really, really, really, really, really like it, and all personal projects I work on currently involve Elixir.

    The only things I don't like about it are its lack of types and I never really feel like I know where the language stops and the runtime begins.

Frameworks

  • Micronaut

    I tried to get into Spring. I swear it - I really, really, really did, but the only thing more verbose than Java factory classes is the spring documentation. Micronaut on the otherhand I had up and running doing event processing in a mere 3 hours. This is my new go-to framework for codebases that require enterprise integration - easy to get started, has Java/Groovy/Kotlin compatability, has a large suite of super useful modules and is super easy to resource for.
  • React

    React is the new jQuery. Fite me. I'm sure I was the first commercial user of this in Australia all the way back in ~2014; a dark and ancient time when everyone was going wild over angular1 and 1.5. Its become somewhat the default/standard now, and whilst I think it is vastly inferior to Elm it is easy to resource against.
  • Hugo

    Man this blows my mind so much. I currently run 4 websites and Hugo backs three of them. This site is on NextJS, and when I get a few hours one day I'm going to convert this into Hugo as well.

    If you run any media heavy websites Go is preturnaturally fast in processing them, and Hugo is the ultimate manifestation of that.
  • NestJS

    I've been using this framework since 2020. I originally selected it to front an Elasticsearch system because it had a great Swagger implementation, and with a bit of magicking managed to leverage its underlying RxJS implementation to play very nicely with fp-ts and friends.

    Since then its been my goto for anything Node related.
  • Tailwind

    Never again will I touch bootstrap, foundation, aurelia or any of the other tools I've used over the years. Daddies come home, and his name is Tailwind.
  • Elasticsearch

    Google fucked the world up by training normies to think that its easy, normal and efficient to search trillions of records per-key stroke. Elasticsearch lets me do some version of this.
  • Kafka

    The big papa of event-processing solutions. The older and uglier I get this stuff just makes more sense to me. Remember when we had to fork off hundreds of worker servers to process some idempotent work just so we write the result back to the same database? Kafka did a lot of good work in killing this design.
  • Phoenix

    Its like Django but better in every way.
  • Django

    I built my own startup on this badboy. I've tried to escape it for so many years but it just keeps coming back to hurt me. Its in no way bad, but its primitive, active-record style ORM really lets it down for anything requiring significant work.

Forge

  • Gitlab

    My git repo of choice. I moved to gitlab the same day Microsoft announced they were buying Github and I haven't looked back.

    One of these days I'm going to self host my own Gitlab. The only complaints I have for it is that to upgrade your repo size from 5gb to whatever costs more per month than Bitbucket or Github per year.

    All in all an excellent tool.
  • Github

    My previous git repo, but the place where many OS projects I use or contribute to still exists. When Microsoft acquired it a while ago I made the foolish decision to delete my account and ~8 years of data on there.

    I'm smart.
  • Bitbucket

    The first integrated git/CI/CD platform I used. In general I find this miserable and slow to use, but is kept in here because I am still using this in my day-to-day.

Data

  • Postgres

    My relational database of choice for many years. I started with Microsoft SQL server originally, managed to butcher a few MySQL databases after trying to optimise some horrific query performance; then I discovered the one true god postgres and have never gone back.
  • Mongo

    Currently on the farm. MongoDB is webscale after all and has kick-ass metrics.
  • Redis

    This is the only KV store I've ever used. I first used it way back 8 or so years ago and have never looked back. I guess unlike facebook I'm not looking 2TB active caches into memory so we cool.
  • RabbitMQ

    Before I used Kafka I used Rabbit. I tend not to rely on it as much these days, but it will always hold a place in my heart.

Build

  • Docker

    We all remember that time before we had containers everywhere. A dark time, where trying to run incompatabile postgres wire protocols required virtualbox and full local VMs crushing our 2 core laptops.
    Never again.

    Docker - the jQuery of development. (or is React now?)
  • Terraform

    Can you imagine trying to set up a service mesh with sidecar proxies and tight resource dependencies by hand? And then needing to push an update to that infrastructure?

    Stupid question, do you remember actually having to do that? Terraform makes this old nightmare away, and I think the world owes Hashicorp an infinite debt of gratitude.
  • Packer

    The future isn't 100% containers 😱. Sometimes you need that good ol' custom image as VM solution, and your boy packer has you covered.

Deploy

  • Digital Ocean

    I run all of my services on Digital Ocean. I don't trust the fuckers with data (see above), but for building ephemeral and cheap infrastructure they can't be beat.

    I hold no loyalty to them - if anyone can recommend equivilent functionality at a cheaper price I'll move it all tomorrow and buy you a beer.
  • Netlify

    I lost 6 years of data off Digital Ocean a few years ago :( I had a ghost blog on there, backed by postgres and all. My credit card expired and their alert emails went straight to my trash folder, 12 weeks later and boom - half a decade of stuff gone.

    Never again. It took me nearly 4 years to be bothered to write again, but now I'm doing it I keep it all on git. Netlify is the perfect deployment tool from this - I just push a change up and a few minutes later the content is built and deployed live.
  • Amazon Web Services

    I think every person in the world has used AWS these days. They ushered in the cloud era, and their platform is an infinitely armed octopus of IAM role policy assuming misery.

    It's rock solid though.

    I've put it at the bottom of absolutely everything in protest against it. Curse you AWS.