Skip to content


Block or Report

Block or report Hamatti

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse

Hi, I'm Juhis

Twitter: Juha-Matti Santala

I'm a community builder, a public speaker and a web developer currently living in Berlin, Germany.

I love learning, teaching and sharing what I've learned. I publish a weekly blog, speak in tech events and teach/coach in programming workshops and mentor junior developers.

I work as a developer advocate for Firefox add-ons at Mozilla.

Outside work, I run Turku ❤️ Frontend, coach students in codebar and I'm active in Koodiklinikka community.

I'm also the host of codebase, a developer community Youtube show.

Things I've written

Humane Guide to Python Errors helps you navigate the error messages of Python programs.

Humane Guide to Debugging Web Apps gets you to the next level on your debugging skills – a crucial part of being a software developer.

How to scrape a website with Python & BeautifulSoup is a popular resource for anyone who wants to get started with getting data from websites to their own scripts.

You should start a blog today shares my motivation for blogging and how blogging is a valuable tool for software developers who want to advance their careers.

Minimal Travel Table Top Game Collection is a fun side project I did to make my own board gaming hobby more compatible with travelling.

kittens-everywhere – how to build a browser extension is my first tutorial on how to build a browser extension for Firefox. It's based on a class I taught in September 2022, converted into a blog format.

More can be found at my blog

Some of my best talks

Contemporary Documentation

Teams change often. People leave and people join. In addition to those changes, we tend to forget what we were thinking. That's why it's a good practice to document those thoughts, discussions and decisions into a format that doesn't lose them.

Learning in public

By documenting his own learning journey and experimentations and sharing what he has learned about software development, Juhis has ended up in a lot of great discussions with fellow developers. These discussions have further helped him become better at writing software.

I teach, therefore I learn

There are many ways to improve your skills as a developer. Teaching programming is an awesome but bit under-appreciated one. Becoming a senior developer is about so much more than just technical competency. It’s about helping others succeed, it’s about becoming a leader and it’s about being a good communicator with users, clients and teammates.

Lightning talk: Self-documenting code

Some people argue that good code is self-documenting. But code can only tell you what or how but not why. In this funny 5-minute lightning talk I'll demonstrate why.

Find more at my website or book me

What do I build?

On my freetime, I love to build small projects for myself and for the communities I'm involved in. Here are some of the highlights:


235 is a command-line tool that brings NHL results directly to your terminal while being a tribute and homage to YLE's tekstitv page 235.

You can read more about it at Introducing: 235.

Pokemon related stuff

Pokemon TCG card viewer a Firefox extension for Pokemon TCG players. When activated, makes Pokemon TCG Online card codes (in format of BRS 120) hoverable and will show the card image on hover. This makes it easy to check cards and what they do when reading through decklists in Youtube descriptions, blogs or forum posts.

Pokemon TCG Online Redeem Code Helper a Firefox extension to help Pokemon TCG players when redeeming large amounts of bulk codes in Pokemon TCG Online client.

gym-leader-challenge-deck-validator is a web application for validating deck lists used in Pokémon TCG Gym Leader Challenge format. The app can be used at

card-print-css is a CSS styling that turns any number of <img> (of playing cards) on a page into the correct size for cutting and sleeving when printed on A4 page. I use it for prototyping, playtesting and proxying.

jklac-proxy-builder is a set of tools to turn decklists from Jason Klaczynki's great blog into proxies for testing.

ptcgo-parser is a NMP package for parsing PTCGO deck lists into API compatible format.

pkmn-attack-damage is a web app that allows users to search for cards in expanded and standard format for specific damage value.

prism-extension-ptcgo is an extension to syntax highlight library Prism.js that provides syntax highlighting for Pokemon deck lists.

proxymon is a bit outdated tool for printing proxies based on PTCGO deck lists.

work in progress: I'm building an online multiplayer cube draft tool for Pokemon TCG players as well. It's still very early stages so the code is not yet open source.

Board Game related projects

blackhole-game is an experiment to convert Blackhole board game into a digital version.

flamme-rouge-bot-companion is a web app that makes playing Flamme Rouge with bots more manageable.

flamme-rouge-bot-companion-script is a CLI tool that makes playing Flamme Rouge with bots more manageable.

taajuus is an online adaptation of Wavelength board game for video call gaming.


  1. nhl-235 Public

    A command line tool that brings NHL results directly to your terminal

    Rust 13

  2. Advent of Code solutions for 2021

    Jupyter Notebook 6

  3. Pokémon TCG Gym Leader Challenge Deck Validator


  4. taajuus Public


402 contributions in the last year

Dec Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Mon Wed Fri

Contribution activity

November 2022

Created 7 repositories

Created a pull request in mdn/content that received 2 comments

Refactor Web Extensions Permissions API examples to async/await

Description Refactoring the examples in Web Extensions Permissions API from .then() syntax to async/await syntax. Motivation We are moving towards…

+22 −26 2 comments
Opened 8 other pull requests in 6 repositories
Hamatti/gym-leader-challenge-deck-validator 2 merged
turkufrontend/ 2 merged
mahdava/pokemon-search-ui 1 open
Hamatti/ptcgo-card-viewer-extension 1 merged
rmoff/devrel-mastodon 1 merged
mozilla/extension-workshop 1 merged
Reviewed 2 pull requests in 1 repository

Created an issue in Hamatti/gym-leader-challenge-deck-validator that received 3 comments

Figure out a way to mark older non Expanded cards with new reprints as legal

Currently there's one subset of cards that are not correctly identified. Cards like Switch HS 102 are legal but the tool marks them as invalid beca…

3 contributions in private repositories Nov 4 – Nov 14

Seeing something unexpected? Take a look at the GitHub profile guide.