Juha-Matti Santala
Community Builder. Dreamer. Adventurer.

The Blog

New blog post every Wednesday! I write regularly about technology, communities and life around me. I aim to publish a new blog post each Wednesday. If you wish to get notified when new posts arrive, I have a RSS feed you can subscribe to.

I've also visited a few podcasts which you can find on my speaking page.

For my longer pieces, check out Humane Tech Guides.

In addition to these posts, I wrote a blog in Finnish about my year in San Francisco back in 2014. It lives on it's own page at https://hamatti.org/unelma.




  • Blaugust 2023: Lessons Learned

    It’s August 31st. I’ve published a blog post on each day of the month and now it’s time to reflect on what I’ve learned throughout this experiment.

  • Use pangrams to avoid mistakes in conference badge prints

    If you have a name that is not just ASCII letters and you’ve participated in an event abroad, it’s likely you’ve had your name messed up in the badge. Organizers can avoid that with pangrams

  • My First 100K

    My blog got over 100 000 views in the last 30 day window for the first time ever.

  • 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.

  • Compressing overlapping strings in Python

    I developed a solution to a overlapping string puzzle with Python using Test-Driven Development and in this blog post, I share my thinking and development process.

  • Where do my links live?

    Chris wrote last week about his link saving schemes and since I’ve talked about this topic surprisingly lot recently with people, I decided to share my approach as well.

  • 6 months of recovery, how is life?

    It’s been about six months since I last wrote about how things are going. Time for an update.

  • 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.

  • Let’s talk about Steam Deck

    I’ve now had Steam Deck for nearly a year and little by little I’ve gotten more comfortable with it and have opened up new avenues within the system.

  • 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.

  • Stardew Valley Mods I use

    Stardew Valley is one of my all-time favorite games and I have spent so many hours building farms and making friends. These days, I’ve added so many great mods that extend the playability and story of the game and wanted to share them with you.

  • Youtubers I watch

    I love Youtube and especially its many great indie creators. Since Youtube’s algorithms affect so heavily what everyone sees, I wanted to share some of my favorites so you could maybe find new channels to follow.

  • Bloggers I read: Saturday

    I read a lot of tech blogs to learn new things and stay up to date with my industry. This week I’m sharing a few of them so you can too!

  • Bloggers I read: Friday

    I read a lot of tech blogs to learn new things and stay up to date with my industry. This week I’m sharing a few of them so you can too!

  • Bloggers I read: Thursday

    I read a lot of tech blogs to learn new things and stay up to date with my industry. This week I’m sharing a few of them so you can too!

  • Syntax Error #6: Debugging CSS
  • Bloggers I read: Wednesday

    I read a lot of tech blogs to learn new things and stay up to date with my industry. This week I’m sharing a few of them so you can too!

  • Bloggers I read: Tuesday

    I read a lot of tech blogs to learn new things and stay up to date with my industry. This week I’m sharing a few of them so you can too!

  • 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

  • Desert Island Discs

    Desert Island Discs is a BBC radio show where people share 8 songs, a book and a luxury item they'd take with them on a desert island. Here are my picks!

  • Future Frontend 2023 Recap

    In June, we organized Future Frontend conference in Helsinki with a couple of workshop days followed by two great conference days full of amazing talks. Here's my recap and talk recommendations from the bunch.

  • Projects I'm proud of: Teaching programming

    This week in Blaugust is themed 'Introduce yourself' and each day, I'll share a project story that I'm particularly proud of. For Friday, my story is an overarching story of a decade of teaching programming.

  • Projects I'm proud of: Potluck

    This week in Blaugust is themed 'Introduce yourself' and each day, I'll share a project story that I'm particularly proud of. One of those is Potluck, my latest tabletop design project.

  • 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.

  • Projects I'm proud of: Turku ❤️ Frontend

    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 want to tell you about Turku <3 Frontend.

  • 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.

  • Tools don't matter - until they do

    When starting blogging or coding, it can be overwhelming to choose the right tools. In the beginning, spend your time and energy on doing and learning, not thinking about and tinkering with your tools.

  • What makes a blog post a blog post?

    I have a very powerful inner critic when it comes to my own blog and what kind of posts I write. But I don't have that same filter when reading other people's post. I love the variety. Which makes me think: what does make a blog post and is there some criteria to fill?

  • Where to publish your blog?

    A question every blogger has to go through at the beginning is where to publish their blog. I'll give you a few options that will get you blogging in no time so you can focus on writing.

  • Build an idea bank and never run out of blog ideas

    Often I get enough ideas throughout a week for my weekly blog posts. But sometimes I don't because I'm too busy or in a non-creative mood. That's why I have an idea bank that grows thoughts into ideas ready to be written into blog posts.

  • A bunch more of small game reviews: Dredge, Dishonored, Farm Keeper

    I've recently been playing horror fishing simulator Dredge, magical first-person assassin stealth adventure Dishonored and tile-laying farming puzzler Farm Keeper.

  • Blaugust 2023, here we come

    Blaugust is a month-long celebration of blogging and I'm participating for the first time. I'm hoping to find new inspiration, write more, find new blogs to follow and to learn from fellow bloggers in the community. Join me on my journey through Blaugust.



  • Give your commands consistent names

    A discussion in fediverse lead me to a wonderful path to learn about different approaches people have to wrap different software development commands behind unified interface.

  • Document outdated components

    When your codebase evolves iteratively instead of everything at once, you end up with components or files that use outdated style and should not be used as an example for future code. Document those cases to avoid problems.

  • How to network while being beneficial to oneself professionally?

    Networking at best combines helping others, building connections and improving your own expertise in your industry.



  • How to document a workaround?

    As developers, we sometimes run into a situation where something is wrong and its not within our reach. A bug in a library, a mishap in an integration or something else. You need a short-term workaround. It's important to document them so you can eventually get rid of them.

  • 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.

  • Syntax Error #3: Who let the ducks out?
  • 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.

  • Potluck #3: My workflow

    A behind the scenes look at Potluck, a semi-universal card deck. Final part of the series looks at the workflow and tooling that I used when designing and building the project.



  • Syntax Error #1: Welcome
  • The imperfect mess of note taking

    I like to take notes and for years attempted to find the perfect solution. Once I embraced the imperfect chaos, I started to get good at taking notes.

  • In defense of Quote Toots

    Three blog posts in a trenchcoat: I write about quote toots (and why I'd like to have them), the desire to have same features in all apps and the problem of monopoly over content & delivery.

  • Potluck #1: Research and Design

    A behind the scenes look at Potluck, a semi-universal card deck. First part of this three part series looks at the research and design of the project.


  • Guide to landing your first dev job

    Finding and landing your first developer job can be a daunting task. How to convince a company to hire you before you have job experience and how to showcase your skills? Join me for a magical journey!

  • 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.

  • I'm leaving Mozilla

    I resigned from Mozilla. The time has come for me to take a break and make my mental and physical health a top priority. I'm also moving back home to Turku.

  • Me and the elves - Advent of Code 2022 retrospective

    This year's Advent of Code was fun as always – and bit less stressful than before. Maybe it's a sign that I've learned a thing or two? Time for an Advent of Code 2022 retrospective!

  • 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.





  • 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.

  • Upcoming live stream: first look at Rocket Oct 22nd

    Join me as I take a look at Rocket and do my first dev livestream in a long time.

  • Ad-Filtering Dev Summit 2022 Recap

    October 5-6th 2022 I participated in Ad-Filtering Dev Summit in Amsterdam to learn about ad blocker industry, changes in browsers and to meet amazing extension developers. Here is my recap of the event and my favorite talks.

  • React Finland 2022 Recap

    In September 2022, I spent a week organizing and participating in React Finland. Here is my recap of the conference and my picks for interesting talks to check out.

  • 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.



  • The Firehose

    It's been a while since the last update on this site, either on this blog or in the weeklies. I started a new job as a Senior Developer Advocate for add-ons at Mozilla in the beginning of August and it has pretty much taken all of my energy to create anything.


  • I wrote my first Dropzone 4 action

    I recently got into two new apps: open source video player called Iina and a macos menu bar tool Dropzone. Then I wrote a Python script to connect the two. Beautiful.

  • Embracing failure

    When I grew up, failing or being wrong wasn't something that was encouraged. It led to me only wanting to try things I already knew I'd succeed in. It took me until my late 20s to realize that it's hindering and slowing me down a lot. Luckily, I learned to start failing.

  • Unit test your Python code in Jupyter Notebooks

    I used learned Jupyter Notebook for last year's Advent of Code but didn't have time in December to figure out how to test my code in that environment. Getting ready for the winter season, I took some time this summer holiday to explore the options and I'm sharing three ways in this blog post.

  • Appendix A to Developer's Guide to Communities

    You never know who you meet when you're active in your community. Here's one story of how few beers in Christmas-y Helsinki turned into a fun night in Berlin 7 months later.

  • Developer's Guide to Communities

    Dive in to learn why software developers benefit from joining developer communities locally and globally. Many of the best things in my life are a result of being active in communities and I'll share all my secrets to help you get started.


  • Javascript's console is so much more than just console.log

    I previously wrote how print statements are the best debugging tool. This time, I'll dive deeper into debugging via printing in Javascript/Typescript land. console.log is well known but there's more than meets the eye.

  • A lighthouse

    On top of a small hill, there's a small lighthouse. At the base of the lighthouse, there's a small house, and at the heart of it there's a fireplace that brings light and warmth to the entire house. Even on the rainy days – and there are plenty – the house stays dry and comfy.

  • Goodbye, Futurice

    Time for personal news. After 4+ years at Futurice, it's time for me to graduate from Ultimate Learning Platform and move on. Here's a retrospective of the good stuff.

  • print is your best debugging tool

    One tool to rule them all, one tool to find them (bugs). One tool to bring them all, and in the editor fix them.

  • 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.


  • Summer reading for scifi fans

    Who doesn't love a good book of scifi? I collected a big pile of recommendations for quality scifi books and series from one community discussion and compiled them in an easy-to-find format.

  • Learning Rust #9: A talk about rustlings

    I got to host Rust Finland's meetup at Futurice on May 9th and ended up doing a lightning talk introducing the audience to rustlings project.

  • A good job interview sets both sides up for success

    Recently I've had many discussions in meetups, online dev communities and career events about interviews and how different people see them. I like to think that a good interview sets up both sides for success and doesn't try to trip the candidate with tricks.

  • A week in life of a developer advocate

    So what do I as a developer advocate actually do? What's hidden beneath the title? I wrote a journal for a week about the things I did to give you a peek into the life of an advocate.



  • Listen to everyone, listen to no one

    There's a lot of advice available for those who seek it. How to best approach to different advice from different people? My advice is: listen to everyone, listen to no one.

  • Last two years have been awful

    CW: burnout, depression, stress. These past two years have been incredibly tough and I've been struggling more than I ever have. And I want to share it so that if you're going through something similar, you can know you're not the only one.

  • I'm speaking in Django Day Copenhagen 2022 in April

    I'll be speaking in Django Day Copenhagen this year, on April 8th about Debugging Django. If you're around, join the conference and let's meet!

  • 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.


  • Rant: Please stop ruining the search

    If I want to watch a Nicolas Cage movie in Netflix on a Friday night, I'd search for Nicolas Cage and expect to get movies starring him as a result. I don't and it sucks.

  • I started writing Weeklies

    Last year I experimented with a very personal newsletter and one thing I really liked was that by doing it, I started building a collection of articles and other stuff from others. This year, I'm pivoting it into Weeklies.

  • My least favorite board game genre: co-op games

    In general I really like working together as a team but when it comes to board games, pretty much every co-op game has problems that makes me choose a different genre of game altogether.



  • 45 stars, Christmas was almost saved - Advent of Code retrospective

    Advent of Code for this year is done and for the first time in my life, I got almost to completion with 45 stars and saving the Christmas! Here's my Advent of Code 2021 retrospective of the things I learned and experienced during this month.

  • Year in Review 2021

    For the sixth year in the row, I'm taking a look back to my year to document what 2021 was all about, to remember the good and the bad and maybe set some goals for 2022.

  • Merry Christmas!

    Merry Christmas everyone!

  • Tips for Advent of Code

    Solving Advent of Code puzzles is a fun way to spend December. Over the years I've participated, I've picked up a habit or two that makes debugging broken solutions easier.

  • Advent of Code 2021

    This year I'm once again solving Advent of Code puzzles to help the elves save the Christmas. This year, my trusty tools are Python and Jupyter Notebook and I'm focusing on writing my thoughts and insights for other humans within my notebooks.

  • 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.

  • Minimal Travel Table Top Game Collection 3: Project 108

    My third table top collection design is a semi-universal deck that is designed to play 9 different board games + anything that can be played with standard playing cards.


  • Hello code, my old friend

    It's been a while since had time and energy to code but when I got into the flow, I ended up doing a major rewrite of an application I had built earlier in the fall.

  • 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.

  • The most social and loneliest job: being a solo developer advocate

    Being a solo developer advocate can be the most social and yet the loneliest job at the same time. In this blog post I share why I came to that conclusion during my journey as the solo dev advocate at Futurice.


  • Tiny handy tools: Community Edition

    Last week I shared my favorite tiny tools for Mac. Then I asked people in my dev communities what they like and compiled a follow up list of the best recommendations.

  • Tiny handy tools

    I love tiny tools: things that do one thing and do it well and for the rest of the time, you don't even remember they exist. I compiled a list of the ones I use every day and couldn't live without anymore.

  • Over a year of weekly blogging

    A retrospective on my past year of publishing a blog post in my blog every single week. I discuss in depth what I've done, experienced and learned during this experiment and journey.

  • Python 3.10 is out and I'm excited

    A long-awaited release of Python 3.10 is finally here. Its two major new things are the introduction of pattern matching and the improved error messages.


  • How would you compare two version numbers?

    Comparing two software version numbers may sound simple and straightforward. I ran into a discussion about it in Twitter and explored further.

  • Where do you see yourself in five years?

    I was recently asked where I see myself in 5 years and it sparked the need in me to write about why I think it's a horrible interview question but a great topic to reflect on.

  • Roll and Write board games are awesome

    or how I learned to love the genre I didn't find enjoyable in the past. Roll and Write board games have found their way into my favorite tabletop genres and in this blog post, I explore some of my favorites.

  • React Finland 2021 Recap

    I spent the previous week at React Finland 2021 conference that was full of very interesting sessions. Here's my thoughts about the conference and recommendations for talks to watch from the event.

  • Learning Rust #8: What's next?

    As the NHL season came to an end in early summer and the 235 app only needs a few adjustments before the next season, it's time for me to plan for a new project. I want to work on something that allows me to go deeper into more advanced functionality with Rust.


  • Syntax highlight all the things

    Prism.js is a popular Javascript library that enables syntax highlighting for code examples on a website. I created syntax parser for PTCGO deck lists to give them a bit of more life.

  • Blogging is my new favourite refactoring tool

    Writing blog posts about my technical projects has been a great way to improve my code. By explaining my code, I expose it to a fresh set of eyes and often find improvement opportunities.

  • Your blog should have an RSS feed

    Your blog should have an RSS feed so people can subscribe to it and find your new posts without all the noise of social media and being on the mercy of the algorithm.

  • Learning Rust #7: Learn from the community

    Rust community is wonderful and people are very helpful and open for sharing. In this post of Learning Rust series, I share my community resources for learning more.


  • Blog post filter with Netlify Functions

    I built my first ever serverless feature to add tag filtering to my blog listing. Here's how I integrated that to my Ghost & Eleventy setup with Netlify Functions.

  • Javascript Basics: Scope

    One abstract concept Javascript developers need to learn quite early on is the concept of scope. In this blog post, I'll walk you through what scope is and how it works in Javascript.

  • codebase ep. 4: Web Components with Matias

    Web Components provide an API that allows you to write custom HTML tags with custom functionality. Matias Huhta joined me in codebase to talk about them and live code examples for how to get started with Web Components.

  • Learning Rust #6: Understanding ownership in Rust

    One of my biggest challenges with Rust has been understanding its ownership model and how borrows and references operate. Let's take a look.


  • My travel setup for Nintendo Switch

    Nintendo Switch is a beautiful hybrid of home console and a hand-held. But when I travel for a long time, I want home console experience on the road. I'll tell you how I've done it while maintaining the mobility of the system.

  • Why scheduling Slack messages and emails is so valuable for community builders

    For community builders, there's a huge gap between when we have the info and when we announce it. Scheduling Slack messages and emails gives us a huge power in getting work done more efficiently.

  • My (career) story in tech and developer relations

    Everyone's career story and progression is different. Since in social media stories about fast learning and advancement pick up a lot of attention, I wanted to share my slower path.

  • codebase ep. 3: PHP with Larry

    In the third episode of codebase, I sat down with Larry Garfield who has over 20 years of experience with PHP. We discussed the history and the future of the language and learned so much about how PHP has evolved.

  • Learning Rust #5: Rustlings

    One way to learn a language is to start from compiler's error messages and fix things. Rustlings is a great project built to do exactly that and the best approach I've seen towards it in the programming world.




  • My pockets are full of games

    I love board games and especially making them so small they fit my pockets. But now I've made so many of them, my pockets are full. Let's take a look at my collection.

  • 5 minutes that changed my life

    Sometimes inspiration comes from small things: interactions, kind words and examples. In 2011, I watched Hilary Mason's talk from IgniteNYC and looking back at the past 10 years, it's shaped my life a lot.

  • How to parse command line arguments in Python

    Python is a great language for writing command line applications. Its built-in tool for parsing arguments is powerful and I gathered together some of the most used cases.

  • I gamified my own blog

    Many platforms these days have some gamification features. One of the common features is awarding users/members/players different badges to reward their loyalty and activity in the platform. I decided to award some to myself since I self-host my blog and have no one else to give me badges.

  • Learning Rust #2: Option & Result

    One big challenge I had when I started learning Rust (and still do) is that so often things are wrapped in Option or Result types and it feels like such a hurdle to always unwrap things. Let's talk about it!


  • Learning in public

    It's a great feeling when you write a blog post or give a talk about something you're doing and learning and people participate in the discussion, allowing you to learn more. Join me to read how you can get into the mindset of learning in public.

  • Pattern matching is coming to Python

    Pattern matching is coming to Python this year and I'm so excited for it! I'll walk you through what is pattern matching and how it's gonna work in Python.

  • My home office setup

    During the pandemic, I've made some additions to my normal laptop-only setup as I end up spending all my days sitting at my desk. Macbook, alpacas and Nintendo Switch – and a tiny bit more.

  • Learning Rust: Pattern Matching

    Pattern matching in Rust is one of my favorite features. This blog post is the first in series where I'll write about things I learn while building my first Rust applications.


  • 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.

  • 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.

  • Thoughts on debugging

    Debugging is a way to figure out what's wrong with your application and code. It's one of those skills that is very much worth investing your time and effort into as it will help you become a better developer.

  • You should start a blog today

    I think everyone should have a blog. First of all, for themselves but it also has benefits in the professional career that take time to build.



  • Year in Review 2020

    2020 is finally over and I look back into the year and what my life looked like. Spoilers: it was not the best I've ever had.

  • Merry Christmas my friends

    Merry Christmas! This week I just want to take a moment to wish you all happy holidays.

  • Advent of Code #3: Slowing down

    Around day 10, things started to slow down and I lost momentum with Advent of Code as so easily happens. What has made me very happy meanwhile has been the sense of community and encouraging others to join the challenge and work together to help Santa.

  • Advent of Code #2: Borrows, unwraps and lots of compiler errors

    Days 2 to 8 of Advent of Code and my journey with Rust was like 2020 on a very small scale: a rollercoaster of emotions. Some days I felt really good and enjoyed learning and coding and some other days I felt like I knew nothing about Rust and couldn't figure out the problems at all.

  • Advent of Code #1: Getting Started

    Advent of Code is an annual programming challenge that contains multiple small code puzzles each day leading up to Christmas. For me, they are a way to brush up old tech or learn something new. This year, I'm learning Rust for the first time.


  • 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.

  • Added keyboard support to ON24 with bookmarklet

    ON24 webinar platform didn't support keyboard usage for changing slides so I wrote a bookmarklet for me and my colleague to get through an online meetup.

  • Functions 101

    There is a brief moment in new software developer's life when the concept of functions (or subroutines or methods as they are called in some languages) is bit fuzzy. This post aims to be a good starting point on your journey to understand functions, how they are built and how they are used.

  • Coaching at codebar has given me a lot (via codebar blog)
  • Validating dynamic data conditionally with Joi

    How to validate dynamic data using conditional validations using Joi library? In this post, I explore a use case from last week to see how we can check that all numeric values are positive values.


  • How to ask help for technical problems?

    Asking for help in technical problems can end up in a lot of back and forth before even getting to the bottom of the issue. Here are some tips how to effectively ask for help.

  • It's time for a remote work retrospective

    Lot of us has ended up in a forced remote work experiment due to the pandemic. 6+ months into it, now is a good time to do a remote work retrospective.

  • 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.



  • Recreational Mathematics

    Today we'll talk about a guilty pleasure of mine: recreational mathematics. When I was younger, I was very into math but as I grew up, I forgot how to do it. I still enjoy recreational math so I decided to introduce you to it as well.




  • True, True, True == (True, True, True) in Python

    A friend shared this interesting piece of Python code in our Telegram chat today and I wanted to walk you through it.

  • 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.

  • 8 tech podcasts I listen

    Podcasts are a great source of learning and staying up to date on what's happening in tech. I listen to a bunch of them during my commute or when taking a walk. Here are the podcasts aimed towards software developers that I listen to.

  • Testing lifehack: testlab repositories

    Sometimes it's hard to set up tests in a legacy project so I built testlab repositories so I can do TDD when I develop new functionality.



  • Minimal Travel Table Top Game Collection

    I love board games but also I travel a lot and want to fit my games into a backpack when I'm on the road. So I built a collection of 6 great games that fits into a deck box.


  • Helsinki Dev Lunch

    Helsinki Dev Lunch is a monthly casual lunch gathering of software developers in Helsinki area.



  • Year in review 2019

    Another year is coming to its end. Last few years I have done some reflection on the past year, mainly to document to myself what I have been working on, how I feel about the year and to fight my impostor syndrome by writing down and quantifying my accomplishments.









  • Year in Review 2018

    I love reflecting and looking back to the past year: to celebrate accomplishments, to acknowledge failures and to recognize the progress.


  • Internet = People = ❤️

    I love Internet. And I have ever since I gained access to it in my pre-teens at the turn of the millennium. There has been so many different steps in my path through the Internet forest but almost all of them are about people.


  • Developers do design — but we’re not taught it

    In many companies, most of the days we developers end up doing design choices. Whether it’s graphic or service design, by the virtue of building things we make design decisions. But most developers are not taught design, not even the very basics.

  • City Bound Nomadic

    In the near future (say, within the next 5 years), I want to explore the possibilities of a digital nomad lifestyle. Working independently of location and time is a compelling idea and having followed digital nomads in blogs and Youtube and Instagram for quite a while, I’d definitely love to give it a try. Seeing the world, learning about new cultures and being able to experience the wonders that the world has to offer — sounds good, right?


  • The Reset Button

    Look around you. Of all your things, how many of them were a result of a thought-out process? And how many are just a result of an accumulation that started when you were a teenager?

  • The Cost of a Purchase

    Last week I had an interesting conversation with a friend. We started talking about minimalism and getting rid of excess stuff as she was moving to a new apartment. The long-winding discussion led to a topic of how I have changed my perception of the cost of things. Back in the day I was mostly measuring everything by their monetary value - do I have enough euros or dollars in my bank account to make this purchase.

  • Space has a Tendency to Fill Itself

    An average US household has 300,000 items. I would argue that it’s a lot. But looking at my own childhood in Finland, it’s actually not surprising. We tend to gather a lot of stuff. And there’s a perfectly reasonable explanation for it - space has a tendency to fill itself.

  • My love-hate relationship with PHP Arrays

    I’ve been programming PHP for most of my life, almost 20 years now. While PHP has many downsides, horrible history, and terrible reputation, it has improved a lot with PHP 7 and modern frameworks like Laravel that make it really enjoyable to develop.

  • Beginning of a Journey

    My journey as a minimalist started a year ago. For quite a while I had been a fan of the Tiny House movement and sometime last summer I ended up watching Youtube videos about minimalism and quickly found out about The Minimalists.

  • What living a minimalistic life has taught me

    About a year ago I learned about minimalism from Youtube videos and the two dudes who call themselves the minimalists. In the end of June last year, I wrote a blog post about the first steps in my journey. After having a fruitful discussion about the topic with a friend on Wednesday, I decided to write a follow-up based on my experience and learnings from the past year.


  • Do you want to learn new stuff?

    Continuous improvement, life-long learning, staying on top of your game are all things very close to my heart. It's not always easy though. Sometimes your life (personal and professional) takes a detour and you end up in a situation where your skills get rusty.


  • Help your customers become better

    Engagement and churn are topics that companies have to think about all the time. How to optimize the on-boarding to keep your users in the platform, how to make your product either addictive enough or providing enough value to get them return.


  • Food Connects People - How to Hack Your Community with Food

    One of the things I learned early on was that everybody has to eat. Most people eat lunch and it means taking a “mandatory” break from work and the busy-ness of business life. I’ve used that knowledge to my advantage by making a lot of connections by asking people for lunch. They don’t have to make room for meeting me and people are often happier when they eat.

  • Communities in Marketing

    Communities are fantastic, I love them. We have had communities for as long as humans has been in existence but in the past few years, it has become a buzz word. With the Internet and tools like Facebook, Twitter, Discord and Slack providing access to everyone globally, it’s no wonder these communities have started to pop up.

  • How I convinced 15+ companies to contribute to OSS

    Story time! On January 2nd I launched Turku Gives Back, a non-profit project to encourage local software companies to give back to open source. Last Friday, February 2nd 16 companies and bunch of individuals joined together, we made 20+ contributions to various open source projects.


  • 5 Reasons to Contribute to Open Source

    Open source software has had an immeasurable impact on the modern software business. If you’re building anything for the web, you are most likely heavily relying on infrastructure, software and frameworks built on the open source model — allowing you to get productive with small overhead and benefiting from the efforts of the community.

  • How to build a kickass developer community

    I was asked by a friend to share some tips and best practices from our two years of running the meetup so that others could replicate and prosper. While we can’t really give a silver bullet nor pinpoint exactly where we got it right, I wanted to share a few things I’ve learned while running Turku ❤ Frontend and growing it from 0 to 350+ members with fantastic partners and constant stream of amazing speakers.




  • 5 Reasons to Attend a Meetup

    Meetups are fun and we are happy to see the culture is spreading all around the world making them more accessible to people. We started Turku ❤ Frontend a couple of years ago with the aim to help people learn new skills, meet fellow developers and make it easier for professional developers and students to find jobs and thus, making it easier for companies to find local talent.

  • Improve the world — help someone learn

    We all have skills that other people lack. Whether it’s programming, knitting, writing, fixing bikes or cooking delicious food, you are better doing it than someone else. And while everyone of us is good at something, we also crave to learn new skills to improve our lives.


  • Intentional and multifunctional - How I got rid of most of my belongings

    I have a background as a hoarder. I lived my childhood in a big suburban home and we threw away almost nothing. As I moved to smaller and smaller apartments, I started seeing the problems with the amount of my stuff. First, I imagined the problem was just bad organizing or dull and stupid floor plans. But eventually I realized the problem was my huge piles of junk.


  • Code in the Dark Turku

    What happens when you put 20 developers behind computers, give them nothing but an editor and a reference screenshot? Together with Valohai and Hub Turku and supported by Reaktor we organized the first Code in the Dark event in Turku last night and it was a blast.

  • If you are not doing code reviews, start now!

    I was introduced to code reviews few years back in my first startup job and as a junior developer I immediately felt their impact. Having my code reviewed by seniors and reviewing code myself taught me a ton. After that job, I switched to another startup and we had a great code review process in place as well. I thought world was a good place.


  • Why do good communities thrive?

    Recently I’ve been talking a lot with different people about communities, community management and different aspects related to it. One of the key differences in how people view communities is what I call professional-leisure divide. (I hope one day I’ll have a better word for it.)



  • Build your community like a garden

    I have recently found interesting parallels in building and managing communities and gardening. Understanding those parallels and learning from the ancient art of gardening can provide tools for effective community management.

  • What Rails Girls taught me about non-organizations

    Finland is the promised land of organizations. Almost every citizen is or has been part of a non-profit organization during their life and most of us have been a board member in one or two or … well, let’s just say some of us do it a lot.

  • Building a developer community calls for strong support

    Almost everyone who’s been in touch with crowdfunding in a form or another or has seen a talk about it, knows the classic 4 F’s. Friends, Family, Fools and Fans. I’ve learned that in some sense, it applies to so much more than just crowdfunding.

  • Year in Review 2016

    My reflections of the year 2016


  • 8 hours later + Turku <3 Frontend Hackathon

    Turku ❤ Frontend is a community of (mostly frontend) developers in Turku region that was started in December 2015. Between September and May, we organize meetups at local companies’ offices with talks and beers and during the summer break we just finished our first hackathon.



  • Why I love hackathons

    I’m a huge fan of hackathons. Last weekend, I had the privilege to organize one for the first time after attending a few. Even though being super tired on Sunday evening after a long weekend of very little sleep on a couch, I was so happy being able to organize a successful event.


  • What's with all these sorts, PHP?

    A few days back I was ranting to my friends about PHP arrays. I’m not as much of a PHP hater as many but there’s still some things that really bug me. Everything to do with arrays is one of them. Let’s have a look. I use the phrase normal array to mean a non-associative array (like Python’s list or Java’s array).



  • Beauty of the Pipe

    The Unix Pipeline is a powerful and beautiful piece of software that is sometimes difficult to grasp for a command line beginner. We are used to use graphical interface apps that mostly only interact with each other by writing and reading files if at all. The concept of standard out (stdout) and standard in (stdin) are something that takes some time to learn and understand when one is learning programming and/or data tools in command line.


  • Case study - DataMonkey as educational platform

    A coworker of mine shared a link to DataMonkey, a platform/website to learn basics of data manipulation, Excel spreadsheets and SQL, the language used for database queries in relational databases like MySQL, PostgreSQL and SQLite. During my studies and personal exploration for the best practices in educational systems, I have encountered many that have been quite horrible (like TRAKLA2 which is used for teaching algorithms and data structures) and many that have a bit better approach (like Codecademy and and ViLLE system for teaching programming).


  • Adventures of a Junior Developer

    I had never had any real problems in starting a new summer job regardless of the field. I have been building elements for buildings, assembling phones, guiding kids in sport camps, selling home electronics and video recording sport events to name a few. But when it started to be a time to turn my education into a developer job in a real company, I had these weird feelings of fear and anxiety. It seemed that there were many processes and practices that everybody else just knew about and I had no idea.

  • The Beautiful Game

    Regardless of if you call it football or soccer, fans of the the Beautiful Game were in for a treat for the past month. After a 4-year long wait, FIFA World Cup filled the days of sports lovers all around the world. I love soccer and statistics so I collected some of the most interesting stories of this year’s cup.


  • Becoming a better programming teacher

    About a week ago I got an email through San Francisco Ruby Meetup Group about a workshop on becoming a better programming teacher and given my background and passion for education, it was a no-brainer to jump in. A four hour workshop was organized by General Assembly, a company that provides bootcamp like programs, part time courses, classes and workshops for everyone who wants to become a better developer or change their career into development.


  • Rails Girls San Francisco

    After coaching at Rails Girls Helsinki last November and getting a job in San Francisco, one of the first things I did was checking out if there would be a Rails Girls event here too. And how lucky was I. Last weekend, almost 100 enthusiastic girls and women took their laptops and came to Engine Yard for two-day workshop to learn about web development with Ruby on Rails. Since I already wrote about Rails Girls after the last event, I won’t dig too deep into what it is.

  • Command line magic with git and bash history

    So, in the beginning of January I started as an engineering intern in Chartio and since that my workflow has really improved a lot and I’ve learned and discovered some tricks.



  • Difficulties with teaching and learning programming

    It’s no secret that learning programming is – at least for some of us – an obstacle course. Personally, it took me years to grasp the skills to be a some-what good programmer. For the last 3 or 4 years I’ve been involved in teaching programming basics for freshmen in my university. I started with helping fellow students, then started as a mentor for department and nowadays in addition to previous, I work as a part-time teacher on our courses.


  • Computer illiterate generations – what should we do?

    There has been a lot of discussions during the last years about the IT education of young people. Today, the topic once again popped out in Finnish news when Finnish Broadcasting Company wrote a news piece about the level of IT education in Finnish elementary schools.


  • Rails Girls – building the future

    Today was my first ever Rails Girls event in Helsinki. I ain’t much of a Rails or even a Ruby, I tend to choose Python as my weapon of choice. However, I’ve been long interested in Rails, done some hobby projects with it and even more than that, I’ve been into teaching new people to programming for couple of years now at the university. So coaching a Rails Girls event was super exciting new experience.


  • 69 Lines of SQL

    Sometimes I wonder what programming really is and why we hackers find it so compelling. Most of the time we – or atleast I – bang our heads to wall for hours while trying to conquer the challenge. After all those hearth-breaking moments we finally succeed to get the code running and it solves the problem. All the dark clouds disappear, flowers start to bloom and happy squirrels are jumping everywhere. I had one of these moments today while trying to do some SQL magic.


  • TDD Pair Programming at University

    Today was surprising day at the university. I’m taking a class called Designing Object-Oriented Software which has before been somewhat boring 7 x 90 min lectures and an exam but this year our professor hired a guy called Aki Salmi to organise 4 workshops á 4 hours. Beforehand I knew Aki is a guru and an excellent guy but I was still surprised to see how much fun studying at best could be.