The Treasure in the Complexity - Learning Temporal, Golang, and Rust
This is an unconventional post because I’m announcing/committing to learn something and I might just follow through. I’ve been itching to find something that feels engaging and rewarding enough and I think my search is done (for now). At work, we have committed to using Temporal. The great promise of Temporal is it kinda just works out of the box, especially if you use the Temporal Cloud offering. The great uncertainty with using Cloud providers’ managed services is it’s sometimes unclear how it works. And figuring out how it works is where the treasure is.
One way to define Temporal is a framework for durable execution of tasks/processes. I probably am not doing it enough justice, but you can read the website if you’re curious to learn more beyond that. One thing I love about it is it offers open source documentation on the intended design for the software. It makes for good literature and it’s where we’ll begin the series. I tried to look at how large the codebase is and it’s somewhere around 500K lines of code to devour so we have a way quite a ways to go.
The underlying Temporal server/distributed system is written in Golang. I have written a small CLI utility in Golang for work and I got stuck finding additional opportunities to make the learning concrete. This is self-contained work that will help me read and possibly write some Golang along the way.
Outside of the occasional Advent of Code participation, I’ve been looking for more open avenues to publicly share and showcase my commitment to using Rustlang. For this project, I will be reading a lot of Golang. I might write a good chunk of Golang. I will be writing a lot of Rustlang.
I hesitate to say I’ll be “porting” Temporal to Rustlang, but I think by some definitions that is my learning goal, my final learning artifact. It’s less about comparing Golang vs. Rustlang implementations and more about defining a project that will allow me to bounce between the two worlds seamlessly while showcasing my command of the languages. I’ll name the implementation
Seasonal as a play on
To recap the objectives:
- Acquire a deep understanding of the Temporal system
- Command of the Go language
- Command of the Rust language
- Contribute to open source (Temporal)*
I didn’t have a good section for number 4. However, I think that will actually be the best way to show expertise. If I can provide a “signficant” contribution to the original open source project, I will feel I have achieved my learning objectives.
Find more posts on this series here!