Julia Evans

Things that used to be hard and are now easy

Hello! I was talking to some friends the other day about the types of conference talks we enjoyed.

One category we came up with was “you know this thing that used to be super hard? Turns out now it’s WAY EASIER and maybe you can do it now!“.

So I asked on Twitter about programming things that used to be hard and are now easy

Here are some of the answers I got. Not all of them are equally “easy”, but I found reading the list really fun and it gave me some ideas for things to learn. Maybe it’ll give you some ideas too.

  • SSL certificates, with Let’s Encrypt
  • Concurrency, with async/await (in several languages)
  • Centering in CSS, with flexbox/grid
  • Building fast programs, with Go
  • Image recognition, with transfer learning (someone pointed out that the joke in this XKCD doesn’t make sense anymore)
  • Building cross-platform GUIs, with Electron
  • VPNs, with Wireguard
  • Running your own code inside the Linux kernel, with eBPF
  • Cross-compilation (Go and Rust ship with cross-compilation support out of the box)
  • Configuring cloud infrastructure, with Terraform
  • Setting up a dev environment, with Docker
  • Sharing memory safely with threads, with Rust

Things that involve hosted services:

  • CI/CD, with GitHub Actions/CircleCI/GitLab etc
  • Making useful websites by only writing frontend code, with a variety of “serverless” backend services
  • Training neural networks, with Colab
  • Deploying a website to a server, with Netlify/Heroku etc
  • Running a database, with hosted services like RDS
  • Realtime web applications, with Firebase
  • Image recognition, with hosted ML services like Teachable Machine

Things that I haven’t done myself but that sound cool:

  • Cryptography, with opinionated crypto primitives like libsodium
  • Live updates to web pages pushed by the web server, with LiveView/Hotwire
  • Embedded programming, with MicroPython
  • Building videogames, with Roblox / Unity
  • Writing code that runs on GPU in the browser (maybe with Unity?)
  • Building IDE tooling with LSP (the language server protocol)
  • Interactive theorem provers (not sure with what)
  • NLP, with HuggingFace
  • Parsing, with PEG or parser combinator libraries
  • ESP microcontrollers
  • Batch data processing, with Spark

Language specific things people mentioned:

  • Rust, with non-lexical lifetimes
  • IE support for CSS/JS

what else?

I’d love more examples of things that have become easier over the years.

The multiple meanings of "nameserver" and "DNS resolver" Some things about getaddrinfo that surprised me