The Blog
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 or you can sign up to my monthly newsletter.
I've also visited a few podcasts which you can find on my speaking page.
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.





2021
April
- How Spice Program supported my creation of 235 (via Futurice.com)
-
Introducing developer community show codebase
codebase is a new developer community show on Youtube. It's a celebration of the variety of different technologies and developers working with them. In the first episode, I sat down with Fotis to talk about accessibility in web.
-
Learning Rust #3: crates.io & publishing your package
When I was young, computer software was bought in boxes from store. Later, we moved into using software online and I spent 15 years falling in love with web as a medium. With my Rust project, I'm back in the mode of sharing executable binaries and distributing new versions is bit more complicated.
March
-
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!
February
-
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.
January
-
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.
2020
December
-
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.
November
-
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.
October
-
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.
August
-
The many designs of on-screen inputs
Inputting text with a game controller is most of the time a bad experience. I looked into some designs of text inputs with controllers and joysticks and felt bad about the current state of design of them.
-
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.
-
Adding keyboard shortcuts to Viaplay
Viaplay's video player was lacking some shortcuts that I had gotten used to with other streaming sites. I built a Chrome Extension to add support for mute and fullscreen shortcuts to make my life a bit nicer during the NHL playoff season.
- Secret Santa PnP – Designer Diary #1: I made some cards! (via BoardGameGeek)
July
-
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.
June
-
Hidden Identity in Table Top Games
One of my favorite table top gaming genres is hidden identity games. This is mainly because I like the idea of co-op games (where all players are on the same side) but hate the actual way those end up being played.
-
I built a digital version of Black Hole game
I practice my programming skills by implementing physical table top games into digital format. This time, I built Black Hole - a two player fun challenge game.
-
Different approaches to learning programming
You can teach and learn programming many different ways. In this post I compare the hands-on approach to the ground-up approach.
- Building Hobby Projects to Help Get Your First Programming Job (via honeypot.io)
May
-
How to scrape a website with Python & BeautifulSoup
Learn how to scrape data from websites using Python and BeautifulSoup so that you can use it in your scripts and applications.
-
Minimal Travel Table Top Game Collection 2: Social Distancing Edition
When life gives you social distancing, play solo table top games! I created Minimal Travel Table Top Game Collection: Social Distancing edition for that.
-
Tips for giving talks online
Do you feel like doing presentations remotely from home is uncomfortable or challenging? Check out these tips for improving your speaker experience and the way you are perceived when giving talks.
- How to Get Overwhelmed in Tech (via honeypot.io)
-
Dev Diary #1: Pokemon TCG Cube Draft
I started building an online cube draft tool for Pokemon TCG players and wanted to share my progress in this dev diary.
-
<code>blocks
Writing blog posts in Ghost is a great experience but adding code snippets is not so I built a tool to make it easier.
April
-
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.
March
-
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.
-
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.
-
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.
-
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.
-
New Guide - Humane Guide to Debugging Web Apps
Humane Guide to Debugging Web Apps walks the reader through the fundamentals of the mindset and process, provides practical tools and tips for debugging Javascript and CSS code and finally talks about some of my favorite non-technical approaches.
February
-
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.
January
-
Helsinki Dev Lunch
Helsinki Dev Lunch is a monthly casual lunch gathering of software developers in Helsinki area.
2019
December
-
Year 2019 in review
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.
August
-
My journey in diversity and inclusion in tech
I'm very passionate about diversity and inclusion in tech because I used to be a bad actor and the best thing that happened in my life was when I was called out on that.
July
-
Why I love using command line interface?
Command Line Interface (CLI) can seem ancient way of interacting with computers but it has many great benefits.
June
-
I love writing scripts to solve small problems
Building software is nice but I'm a big fan of solving my small problems with quick Python scripts
May
-
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.
-
Make your function calls more readable
Default arguments in Javascript cannot be named when calling the function. This post takes a look at different approaches to make the code more readable.
February
-
How to enable SSL in Netlify with custom domain
I went through the hoops of using custom domain with Netlify and learned about DNS
-
PHP needs its own ES6
Javascript has been evolving amazingly but I feel PHP is lagging behind itself
-
“Event is over and it was a failure. What happened?” — Pre-mortem can help you avoid pitfalls
In modern day and age, many organizations are adopting retrospectives (a session where you look back and talk about what went well, what went wrong and how we can improve) and post-mortems (how did the project go and where did we go wrong) as part of their day-to-day work.
January
-
Event organizer - automate what you can, focus on people with all you’ve got
I have learned to build and automate things. This is a story of how you can do it too.
-
Better bash history search with McFly
McFly is a library that will make your life so much easier when navigating through your bash history
-
Post a message from Slack to Twitter with Zapier
If you want to auto-post something from Slack to Twitter, Zapier is your friend.
-
Learning programming has never been more accessible in Helsinki
If you're interested in learning programming, the scene in Helsinki is blooming right now. There are long-term options as well as weekend workshops, evening workshops and support groups so everyone should be able to find their place in the community.
2018
December
-
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.
November
-
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.
July
-
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?
June
-
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.
May
-
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.
March
-
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.
February
-
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.
January
-
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.
2017
December
-
Year in Review 2017
My reflections of the year 2017.
September
-
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.
June
-
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.
May
-
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.
April
-
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.)
2016
December
-
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
August
-
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.
2015
December
-
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.
April
-
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).
2014
September
-
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.
August
-
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).
July
-
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.
June
-
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.
January
-
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.
2013
November
-
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.
October
-
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.
September
-
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.
June
-
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.
April
-
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.