Technologies I Want to Learn: 2021
In 2020, I didn't try many new technologies that I was excited about. To be honest, I just wasn't excited about many of my personal projects until later in the year. Additionally, I spent a great deal of time building out physical development infrastructure at home on a series of Raspberry Pis, which took more time than I hoped: managing my own gitlab server, setting up various "environment boards" and pipes for automating deploys and builds to them, and managing utility servers.
I think running everything at home on Raspberry Pis is becoming a lot easier, but I still wouldn't recommend it unless you want to tinker and learn the pain of missing several major version bumps and having to move an entire cohort of repositories from one gitlab instance to another because a migration path is no longer supported for your out of date install.
I get really excited about these types of physical projects because the feedback is immediate and I gain a sense of empathy for the folks that take more system-oriented career paths. This being said, it's nice to have several layers of insulation between my development environment and the hardware that runs it.
Avalanches and LEDs
One project I did get excited about combined both hardware and software. I really wanted a physical representation of the avalanche danger on any given day. I thought that having something hanging on my wall with a rendered forecast would be cool conversation piece for people that don't know much about avalanche forecasting, as well as a good reminder of the current conditions.
I bought a 32x64 LED matrix from Adafruit and wrote some code to render out the Central Wasatch avalanche forecast, as well as several pieces of up-to-date weather data from NOAA instruments on Cardiff Peak. This turned out to be a really rewarding project and a great reminder that I suck at math/ rotating and translating polygons around a matrix is hard.
LED matrix with average and gusting wind, wind direction, temperature, relative humidity, and the avalanche forecast.
This project was fun because I found pretty quickly that some of the datasources I was pulling from delivered huge JSON payloads. I had the LED board connected to a Matrix Portal, which has a decent amount of memory, but would consistently choke on the amount of data that was returned. The problem was that I only really wanted a handful of fields from that response. Additionally, I was pulling other data for the avalanche forecast from another service.
I considered building some kind of GraphQL layer to combine and simplify my datasources. Essentially I just needed to trim the size of the response to work with the Matrix Portal. I ended up building more of a general purpose utility for composing and manipulating data streams that ended up working like some kind of Yahoo Pipes clone.
While building this Pipesesque service, I found myself working slowly and reaching for tools that I didn't have like PostgreSQL ORMs, UI libraries, and cleaner patterns for building Node.js REST apps. I essentially wanted to expedite a lot of common problems that I have when starting a new application in order to focus on the interesting parts of the app and fail fast if necessary.
The List
Below is a list of technologies that I want to explore in 2021. I've selected these because I feel that they should fill the void that I felt in 2020. Some of these I have experience with. Some are brand new. Others are practical. Others just seem fun.
Here is my list:
- Gatsby
- NestJS
- Deno
- PostgreSQL
- Prisma
- React Query
- Svelte
- Tailwind
- Serverless
- Leveraging tools like begin
- Scaling data and exploring reactive architectures with edge functions
- Ngnix
- CAD - FreeCAD
My goal is to spend about a month on each of these. I'll start with docs and official tutorials and build small apps to explore the strengths and weaknesses of the technology. I'll post updates every week or two and a full breakdown monthly to discuss my key takeaways. I also hope to identify useful technologies that I uncover in this process and hopefully update this list.
Until next time.