Juha-Matti Santala
Community Builder. Dreamer. Adventurer.

A look at my on-going projects

I realized at some point that I really enjoy reading developers' blogs where people share the progress they've made on their projects, even if I'm not using them. And at the same time, I'm very shy to talk about my stuff because it feels a bit pushy. I decided to collect my on-going projects into this one piece.

I'll start with the community stuff and then move on to the software projects that I build and maintain.

Syntax Error: A newsletter about debugging

This Monday I sent the third newsletter to 163 email subscribers and who knows how many RSS subscribers and I'm very happy with the start that Syntax Error has had. Syntax Error is a monthly newsletter where I share everything I know about debugging software - both from technical and mindset perspectives.

It's been heart warming to get responses and feedback from readers, to see people recommend it to others and I was very happy to see it being mentioned in the Elm Weekly #259.

If you're a developer or a student of software, I can highly recommend heading over to https://www.syntaxerror.tech/ and subscribing! I still have plenty of tips and stories to share.

Turku ❤️ Frontend

Our Turku ❤️ Frontend community is doing great and we've been on a good momentum of monthly events since the pandemic restrictions were lifted a year ago. This May will see our 50th meetup and I'm more excited than ever about the future.

Turku ❤️ Frontend is a developer community for anyone interested in frontend development. We bring together professionals, students, hobbyists and curious to monthly meetups and other events that promote positive developer culture. In addition to the formally organized program, we also offer a way for the community to chat with each other, to organize afterworks or lunch gatherings and make new friends and find new jobs in the industry.

Pokemon TCG Online to Live deck list converter

Pokemon is in the middle of sunsetting their older Online client and promoting their newer (albeit rather buggy and slow) Live client. Both of these operate on same cards and both offer an import/export functionality for decklists.

But they are not compatible with each other...

A decklist exported from Online does not work properly when imported to Live even if all the cards would be supported.

After an afternoon discussion with the community about the issue and realizing that even though Online won't be around for long, there's still gonna be a ton of PTCGO formatted decklists in the web, I decided to fix it.

I picked up the codebase for my other app (see GLC Decklist Validator below) and wrote a few new lines of code (and just commented out others, the codebase is a mess right now) and suddenly I had a wonderful web app that takes in a PTCGO decklist and prints out a PTCGL decklist.

Big thanks to community member Subject00147 for doing the hardest part and researching what the incompatibilities were and what needed to be fixed. I just coded those into an app.

Firefox Extension: Pokemon TCG card viewer

First one is my Pokemon TCG card viewer extension for Firefox that can be installed from addons.mozilla.org. I originally built it as my learning project last year when I joined Mozilla. If I may say it myself, it's quite fantastic tool for what it does.

It lets Pokemon TCG players see the image of the card when they are referred to with a cryptic Pokemon TCG export format (like Bidoof BRS 120). After the initial work, I've been updating it with small bug fixes and mostly with new sets as they arrive.

With Pokemon moving towards Live as their flagship digital client, I had to make a quick hacky fix lately to support the newest Scarlet & Violet set and I still need to add full support for Live export codes in addition to Online ones as they changed a few things there.

I've also been considering making a Chrome version but that's waiting for a longer stretch of time when I'd update the entire extension first to support manifest V3 and then making it compatible with both browsers.

Gym Leader Challenge Decklist Validator

60 card singleton decks in a restricted format can be a hassle to validate. That's why 1.5 years ago I built GLC Decklist Validator that takes in a PTCGO decklist (with added support for the new Scarlet & Violet set) and validates all the important aspects of the list to see if it's legal to be played.

Over the past 20 months, I've been fixing bugs, adding support to new sets and improving the validations to cover more cases.

The digital state of GLC is in bit of turmoil right now as the older Online client doesn't support the newer sets but the newer Live client doesn't support the older sets. I'll still keep updating and improving the validator so it can be used with a bit of manual decklist building.

Firefox Extension: Pokemon TCG Online Code Helper

Talk about low-maintenance apps! Pokemon TCG Online Code Helper has not needed a single update since launch as it keeps on giving. It helps Pokemon TCG players to manage their Online or Live booster code imports by making it easier to copy-paste the codes from their purchases and keep track of what has already been redeemed.


235 is my probably most used piece of software. I personally use it daily and it has almost 2k downloads at Crates. I originally built it to learn Rust but it has become a daily tool for me to stay up to date with NHL.

It hasn't received a lot of updates as I consider it mostly design-complete. Recently I did open up an issue to allow display of configured favorite players when they provide assists to goals. Given how the printout is currently implemented, it's a bit more than a few lines so it's been sitting in the issue tracker for a while but I'll get there one day.

I'm also looking into providing Linux and Windows compatible binaries now that I have a machine I can build and test them on and I'd like to have it as a Homebrew software as well so one wouldn't need to either install Rust/Cargo or download binaries from the web.

Upcoming: Pokemon TCG Deck Builder

I recently also started a bigger side project. I'm building an online deck builder for Pokemon TCG players. I've been designing it on a top level for the past half a year, thinking about different interactions and trying to figure out ways to make it the best experience for players and content creators.

One of my key focuses is to focus on Pokemon evolution lines instead of individual cards. All the current tools have you search individual cards and add them one by one but that's not how I've ever seen a player actually approach their deck building or describe their deck.

Instead, players describe their decks by the main Pokemon evolution lines. They might have a "4-4-4 Inteleon line" or a "2-2 Giratina VStar line". So why shouldn't our tools reflect on that? I'm building my tool around that idea. I've been experimenting with the tech and the UX a bit and I'm now in a place where the player can say "I want a 4-4 Raichu line" and get a selection of Pikachu and Raichu cards from their selected filters (for example, Standard or GLC format). Once they select which of each card they want, 4 copies of each will be added to the deck.

I hope this will streamline a lot of the annoying parts of building a deck.

In addition to that core idea, I'm playing around with a few other things to help content creators to share their decks on their videos and live streams in the best possible way.

I don't have any timeline for this project as it's something I work on whenever I have energy after work and other responsibilities. I did make very good early progress during the Easter holiday so I know most of the core pieces work and I'm in a situation where I have a lot of loose ends that I can tie up and polish whenever I have a bit of time and energy.

Syntax Error

Sign up for Syntax Error, a monthly newsletter that helps developers turn a stressful debugging situation into a joyful exploration.