Juha-Matti Santala
Community Builder. Dreamer. Adventurer.

Blog posts in category “Projects”

All sorts of personal/hobby/work projects.

  • Nov 8th, 2023
    Done is the engine of more

    It’s easier to get more done when you have momentum.

  • Aug 28th, 2023
    Custom cookie consent for video embeds

    Occasionally I want to embed Youtube videos or social media posts on my blog but wanted a clean and straight-forward way to deal with cookie consent. So I built my first version for Youtube embeds.

  • Aug 24th, 2023
    Building Dark Mode for hamatti.org

    It’s finally time to make people who can’t stand light themes happy when they visit my page by building the dark mode.

  • Aug 22nd, 2023
    Website rewrite and switching to Notion as CMS

    This website served me well for almost 5 years with minor improvements, tweaks and hacks. Now, it was time for a total rewrite and upgrading my stack and tools.

  • Aug 14th, 2023
    Pokemon tools updated for Obisidian Flames

    With the newest Pokemon TCG set Obsidian Flames being released last Friday, I’ve updated my tools to support the new set

  • Aug 9th, 2023
    Projects I'm proud of: Newsletters

    This week in Blaugust is themed 'Introduce yourself' and each day, I'll share a project story that I'm particularly proud of. Today is two-for-one special as I share my work with Dev Breakfast and Syntax Error newsletters.

  • Aug 7th, 2023
    Projects I'm proud of: Boost Turku & Startup Journey

    This week in Blaugust is themed 'Introduce yourself' and each day, I'll share a project story that I'm particularly proud of. Today, I'm starting with my journey at Boost Turku.

  • May 3rd, 2023
    In a beautiful world, APIs would be open

    In a world where the APIs and data would be open and everyone could build their own UIs and apps on top, the digital world would be more usable and beautiful for all of us.

  • Apr 19th, 2023
    A look at my on-going projects

    I have a few developer community initiatives and software projects that I've been working on for a while so I decided to give an update on all of them at once.

  • Apr 12th, 2023
    How to sort a Pokemon deck list?

    I've started building my new hobby project, a deck builder for Pokemon TCG players. One of the first interesting avenus in that was to figure out how to write a compare function for sort.

  • Jan 20th, 2023
    My Pokemon apps updated for Crown Zenith

    Pokemon TCG's newest set Crown Zenith dropped this Friday and for me, a release date means updating my projects.

  • Jan 4th, 2023
    Introducing: Syntax Error

    I'm launching a newsletter for software developers. Syntax Error helps developers to learn debugging and turn a stressful situation into a joyful exploration.

  • Dec 7th, 2022
    Mastodon redirect with your domain in Netlify

    I'm in mastodon.world server but it can be hard to remember. So you can now find me as @hamatti@hamatti.org as well! I share the secret to that in this post.

  • Nov 23rd, 2022
    New Firefox extension to help Pokemon TCG players

    My newest Firefox extension helps Pokemon TCG players with their online code redeem process by improving the UX, reducing errors and making it easier to keep track of codes.

  • Oct 26th, 2022
    Find assigned tasks from Google Drive

    We use Google Docs a lot to work, to document things and to keep track of meeting notes. That enables us to be efficient and productive remote team. It's easy to get lost with tons of documents and tasks assigned to you. In this blog post I show how to find all the open assigned tasks.

  • Oct 4th, 2022
    Set up a dashboard using Google Slides

    I've used a one-slide Google Slides + short URL setup for years to communicate what work is being done in my nook of the organization. Here's how to set one up.

  • Sep 28th, 2022
    kittens-everywhere – how to build a browser extension

    A tutorial for building your first browser extension - kittens-everywhere - that replaces images in the web with pictures of cute kittens.

  • Jun 1st, 2022
    GLC Decklist Validator updated with Astral Radiance

    Last week I updated my GLC Decklist Validator with the newest Pokemon TCG set Astral Radiance and wrote a short introduction to the app and how its built.

  • Mar 9th, 2022
    Added custom highlight function for nhl-235

    235 now supports highlights of your favorite players so it's even easier to check if your favorites are doing well in the league.

  • Dec 4th, 2021
    Customizing liiga.fi experience

    When I visit a sports website, I want to see scores, standings and how the league/tournament is run. Usually you see ads, news, content pieces and all the good info is hidden somewhere. With custom CSS, that's not a concern anymore.

  • Nov 17th, 2021
    Reaction GIF board with Stream Deck

    Stream Deck is not only a great tool for streamers but can also make you the coolest coworker in your company. Build your own reaction GIF board and always have the right response to every situation in Slack or Discord.

  • May 26th, 2021
    Does it make sense to finish what you started?

    As a university dropout, a discussion about finishing your degree or thesis comes up regularly, often accompanied by a 'you should finish what you start' comment. I'd argue it's not a virtue to finish what you start if it's not the best thing you can do at the moment.

  • Jan 27th, 2021
    Introducing: 235

    There's nothing that brings hockey fans in Finland together better than the iconic 235. Originally from YLE teletext, it's now available on command line.

  • Jan 20th, 2021
    Project: card-print-css

    The smallest CSS library I've ever written: card-print-css resizes images for printing, cutting and sleeving so you can play test and prototype faster.

  • Nov 25th, 2020
    Customize your Internet experience

    Sometimes websites and web apps need a bit of customization to make them fit your personal workflow (or to hide things that distract you). Bookmarklets, browser extensions and user scripts are tools that you can use to customize the experience to your liking.

  • Oct 18th, 2020
    Dev Diary #2: Working prototype

    Today, I finally have a working prototype! I didn't make big changes to the technical approach compared to my failed attempts but maybe my subconscious had been working on the problem over the summer since this time it clicked.

  • Aug 19th, 2020
    Arts, crafts and software: enhancing Flamme Rouge

    Flamme Rouge is a great board game but it has lots of components and solo play is bit cumbersome. I did some arts, crafts and software development to make life better.

  • Apr 18th, 2020
    Morning Coffee Projects: Youtube extension

    Youtube constantly recommends me old videos that I've already seen or are not relevant anymore. So I built a Chrome extension for myself to alleviate the issue.

  • Mar 25th, 2020
    Building a website with a static site generator, part 3: Domain, Analytics and Forms

    Once your website is up and running, it's time to get a professional looking domain, think about analytics and collect data with forms.

  • Mar 18th, 2020
    Building a website with a static site generator, part 2: Eleventy

    In this post, we're gonna take a deeper look into Eleventy which takes care of building the website by combining layout templates with blog post data from Markdown files.

  • Mar 11th, 2020
    Building a website with a static site generator, part 1: Setup

    In this blog series, we will build a static website using Eleventy, NetlifyCMS, GitHub and Netlify. In the first post, we set everything up and deploy a template page to make sure everything works.

  • Mar 6th, 2020
    How my site is built with Eleventy + Ghost

    This website is run with Eleventy, using Markdown and Ghost CMS for blog posts. I've iterated in a couple of ways to build the CMS integration.

  • May 29th, 2019
    Simple backend system for frontend workshops in Javascript

    When teaching Javascript with or without React or Vue, it's hard to figure out what to do with backend. I built a simple system that can be plugged into any of them to act as backend, storage and API.