fb-pixel
Back to Blog

How Spice Program supported my creation of 235

At the end of 2020, I decided to finally start learning Rust. For over a year before that, I had been playing with the idea of it but it took me all the way until the end of 2020 to get started. Rust is an interesting language for me, as I have mostly programmed with languages like Python and Javascript. Rust is something quite different and from the outside looking in, its community looked great as well.

After my initial steps with the language where I was solving Advent of Code puzzles, I decided to build my first software with Rust. I'm an active command-line user so for me the obvious first choice was building a CLI tool. Hence, on a dark wintery Friday evening, I started working on a hobby project that would become 235.

Header photo for blog post How Spice supported my creation of 235

What's 235?

For the small subset of readers who live in Finland and have been fans of the National Hockey League (NHL) for a long time, the number 235 rings a bell. For decades, the Finnish broadcasting company Yle has provided NHL results on their teletext service on the page 235. For me, and many others like me, it's a habit to start every day by checking the page 235 to see the results of previous night's games.

Inspired by this cultural phenomenon, I decided to build a tool that combined the minimalist and iconic style of that teletext page with data from an API for NHL results.

235 is my first Rust program and it provided me a great opportunity to learn a new language – the spec was small and well-defined - it didn't require complex advanced features of the language - I knew it would be useful for me and people like me on a daily basis.

For learning & hobby projects, that combination of usability, simplicity and small scope is key. I know I'm not the only one with dozens of unfinished projects that grew too big from the original idea and with limited time to work on, personal projects never ended up being finished.

235 is published with MIT license and the code can be found on GitHub. (The project is called nhl-235 because Rust doesn't allow project names to start with a digit.)

Distributing executables is a very different world than web apps in browsers

As I mentioned above, this is my first Rust project and coming from a background of really different languages, there has been a lot to learn. This is the first time I've been working with binary executables. For almost two decades, I've loved web for its distribution model — you write code, deploy to server and it's updated for everyone. With executables, people need to proactively update their versions which means I need to think about new ways to reach them and communicate.

Certain things are also much slower for me to develop. One thing I really enjoy with Python and Javascript (both given their dynamic style and my experience writing them) is how I can focus much more into the content and domain, and much less on meta level things. I recently shared my thoughts about Option and Result types on my blog. Even though I have a theoretical understanding of how they work and what their benefits are, my development too often comes to a halt and I need to rethink and refactor things a lot more with Rust.

Luckily, the Rust community is great and I've gotten so much help in my learning journey from local and global Rust developers who have been so helpful and compassionate when I've been stumbling around trying to understand the basics of the language and how to write it.

And my employer supports my work on 235

In 2013, Spice Program was born as our open source and social impact program. Part of it is the support for open-source contributions of Futuriceans. In a nutshell: when you work at Futurice and do open source work on your own time, we support that with a monetary bonus of 15 euros/hour, capped at 30 hours/month.

In 2019, we expanded it to be more inclusive to people in the company who don't code:

The key purpose of our volunteering bonus is to make use of and develop your professional skills for social impact. For us, open source is always considered social impact, but there are many other ways to achieve that impact.

When a designer helps to create a beautiful web presence for a poor non-profit on an important mission, it should count, even if the graphical assets cannot be properly published as open source.

When an HR specialist helps in organising and running code schools for kids, it should count, even if there are no digital deliverables.

When a business advisory professional teaches principles of lean service creation to an NGO striving to make sure whales don't start smoking, it should count.

From a perspective of a developer, I'm happy that I get to build things that I want to see in the world and be appreciated for that with a small bonus.

And even more, it enables and incentivises me to learn more and to contribute to the open source ecosystem. With its flexibility, I'm not forced to do anything or have to make choices between other things in live and coding: sometimes I spend a weekend on a personal passion project and sometimes it's months that I don't code anything on my free-time.

One thing I realised only after I had built the first version of my 235: the API I decided to use was also developed with Spice support back in the day. That's the beauty of the open source ecosystem and community: things you build today can be fundamental in helping others build new things.

Over the past few months, we've been averaging at roughly 700 hours of Spice contributions per month. You can find more about the Spice Program here.

Author

  • Juha-Matti Santala
    Developer Advocate