I enjoy learning new languages. In my day job I spend most of my time writing JS (ReactJS specifically) building dashboards and other internal business tools. Sometimes I need to build API's or perform tasks that just cannot be done in the browser and I take the opportunity to experiment with other languages.
A few examples:
- We purchased a cheap USB duplicator (10 slots) to copy the contents from a master USB to the clones. It worked, but wasn't a great solution. It was slow, error prone and when it failed you never really knew what USB was having the issues (or what went wrong). Using a Golang backend and ReactJS frontend I created an alternative which had a nice GUI showing what files were copying, the percentages complete, error messages, etc. It was a far better solution and using Goroutines it was fun. We ended up scaling the system to 100 USB's at a time and that was fun to watch (lots of blinky lights :D). The solution didn't take much time to write (Golang was quick to learn) and we finished the duplication WAY sooner than the due date.
- We needed to automate a bunch of DNS stuff with CloudFlare. I ended up creating a parser for a custom config we wrote, hooked it up to CF's API and we ran it as a service. The language I used for this project was Nim[0]. I liked the syntax and the final binaries were TINY and FAST.
- More recently I was approached by an IT guy at the company that manages all of our software licenses. He showed me this command line tool he uses to query all licenses and goes through the cryptic output trying to figure out what licenses were being used, by whom, etc. I ended up using Go to parse the command and serve a ReactJS application with all sorts of bells and whistles (reports, history, alerts, etc). Since the application is browser-based he can even use it mobile which he loves.
- I've been working on some prototype BLE Mesh stuff in C, but that is a ways out and not yet worth mentioning much more.
Rust has held my interest for a while as well, just waiting for the right project to come along.
[0]https://nim-lang.org/