The Curious Engineer

All blogs / General

Juha-Matti Santala

hamatti.org

The home of a developer community specialist.

GeneralPythonFrontend / CSS / browsersGaming

Posts
621 from 23 Mar 2021 to 28 Oct 2026
Posting
weekly (122 in the last year)
Kind
personal blog
Feed
https://hamatti.org/feed/feed.xml

2026 106

  1. Sharing notes with Hermes and Agora
  2. Djangonaut Log 2: Leaving the atmosphere and first merged contributions
  3. Assumptions are sneaky
  4. Debugging a flaky test — how I methodologically tamed an annoying bug
  5. A new notebook day
  6. Djangonaut Log 1: Lift-off and first week in Djangonaut Space
  7. I really like how Ultrapool calculates your money rewards
  8. Double check your website’s alt texts with a bookmarklet
  9. PlateUp!
  10. Pokemon TCG League Cup 2026-10-10
  11. 3… 2… 1… becoming a Djangonaut
  12. How to use Spelltable
  13. Webcam gaming setup
  14. Two new tiny Home Assistant improvements I made recently
  15. Pokemon TCG League Challenge 2026-09-26
  16. Make your website printable - a short guide
  17. I’m not a big fan of movie theater experience
  18. Why do we take notes?
  19. Moomin and nfo files for Jellyfin
  20. People and Blogs interview
  21. Hobbit draft, 2026-09-06
  22. What’s in my Magic the Gathering Battle Box
  23. 31st is for recap
  24. A lot of what I’ve learned, I’ve learned from open web
  25. Z is for zip file mocking - Python A to Z
  26. A fun debugging story from this weekend
  27. Y is for YAGNI - Python A to Z
  28. X is for XML parsing - Python A to Z
  29. W is for walrus operator - Python A to Z
  30. V is for visible characters - Python A to Z
  31. U is for uv - Python A to Z
  32. Reply to Dale’s comment on my IndieWeb post
  33. There’s no membership card for IndieWeb
  34. T is for time-machine - Python A to Z
  35. Pokemon TCG Worlds 2006 retro tournament, August 22nd 2026
  36. S is for slicing - Python A to Z
  37. R is for REPL - Python A to Z
  38. Q is for Q - Python A to Z
  39. P is for Python Enhancement Proposal (PEP) - Python A to Z
  40. O is for ORM - Python A to Z
  41. N is for namedtuple - Python A to Z
  42. Saoirse Ronan Appreciation Week, round 2
  43. M is for meetups - Python A to Z
  44. L is for learning - Python A to Z
  45. K is for keyword arguments - Python A to Z
  46. J is for JSON validation - Python A to Z
  47. HTML Day and the value of practicing the fundamentals
  48. I is for immutable - Python A to Z
  49. H is for htmx - Python A to Z
  50. G is for get_or_create - Python A to Z
  51. F is for f-strings - Python A to Z
  52. My custom keyword reference guide for Magic the Gathering Battle Box
  53. E is for environment variables - Python A to Z
  54. D is for dictionaries - Python A to Z
  55. C is for command line interfaces - Python A to Z
  56. B is for batteries included - Python A to Z
  57. A is for assert - Python A to Z
  58. Python A to Z - Blaugust 2026 introduction
  59. In the era of AI slop, human curation is even more important
  60. Not seeking growth is a perfectly valid strategy
  61. Chats and forums
  62. On blogging, Blaugust and challenging yourself
  63. A lovely dialogue about taking notes from See How They Run
  64. My first Finncon — Turku, 2026
  65. Thoughts on making zines after 7 months
  66. Improve Finder’s QuickLook with plugins
  67. Junited 2026 was wonderful
  68. House rules are great
  69. Goo of consciousness
  70. If you don’t know what to do, pick up a chair
  71. Unexpected weekend with Pedro Pascal as a father figure
  72. Writing about it - approach to writer’s block
  73. Chris Ramsey, Taskmaster and No way!?
  74. Pokemon TCG PRC-GRI retro tournament, June 14th 2026
  75. Future Frontend 2026 Recap
  76. A sign of a good tool is that you don’t notice it - one year with wallabag
  77. Junited is a celebration of the blogosphere
  78. An entire wiki in a single file? A look at Feather Wiki
  79. IndieWeb Carnival May 2026: Roundup of love letters
  80. Saoirse Ronan Appreciation Week
  81. Happy 10th birthday TurkuSec!
  82. Tame your pesky little scripts
  83. 11 more days time to write a love letter - IndieWeb Carnival
  84. Even the dogs have started to notice
  85. A love letter to our library bus
  86. Practicing writing about games
  87. I tell about my blog to anyone willing to listen
  88. IndieWeb Carnival May 2026: Write a love letter
  89. I have been tempted by AYN Thor — but I have AYN Thor at home
  90. Thumbs up for a good adventure
  91. Small bit of functional graphic design I like
  92. Dungeons & Degenerate Gamblers is the Betamax of casino roguelikes
  93. I’m building a Python script to create form filling bookmarklets
  94. How much change is the right amount of change?
  95. New protocol proposal for indie web: human.json
  96. Markdown content split to sections in Eleventy and Nunjucks
  97. I completed Stardew Valley’s shipping collection — in reverse
  98. Au revoir, Eleventy
  99. Happy 10th birthday Stardew Valley
  100. Different notebook sizes for different ideas
  101. Them weird dreams
  102. IndieWeb Carnival hosting Q&A with Zachary Kai
  103. Taskmaster UK Series 7 is peak entertainment
  104. I made a board game zine
  105. Gaming for busy people
  106. I added BookLore to my homelab

2025 84

  1. Year in Review 2025
  2. We played a full Scarlet & Violet Progression Series
  3. Merry Christmas!
  4. I played some games this year
  5. Advent of Code 2025 retrospective
  6. I’m a tool builder at heart
  7. Where are we going, IndieWeb?
  8. About writing and audience
  9. I built a tiny RSS generator for my Advent of Code solutions
  10. One thing I’d like to change about Pokémon TCG
  11. Improve your programming skills with Advent of Code
  12. My Debugging Python talk from PyCon Finland published
  13. Eulogy to my old laptop
  14. I designed a 3D printed photo caddy insert for Tiny Epic Galaxies
  15. What’s the story my front page tells?
  16. My writing inspiration lives through cycles
  17. Progressive enhancement is a crucial design principle for smart devices
  18. Obsidian is as simple or complex as you make it
  19. PyCon Finland 2025 recap
  20. I teach, therefore I learn, PyCon CZ, 14th June 2019
  21. Networking and writing as a catalyst for relationships and opportunities
  22. Tabletop game shows
  23. File organisation in Eleventy: Filters
  24. My favourite bird Pokémon TCG card arts
  25. You can have your hobby
  26. Leveraging Eleventy’s custom data file format feature for simpler game scoring format
  27. Custom git ignores with a global gitignore file or git exclude
  28. I will be speaking at PyCon Finland in Jyväskylä 17.10.
  29. Blaugust 2025 retrospective: Surprising Rainbow Diamond Award
  30. Static sites enable a good time travel experience
  31. I keep geeking out about my print styles
  32. Build the forum you want to see in the web
  33. There’s something I’ve never told you…
  34. Shortcut to add link to today’s note in Obsidian
  35. I wonder if my blog has been mentioned in US courts
  36. #971226 is my colour in the web
  37. I have found the joy of clipboard managers
  38. I’m happy when people learn and are inspired
  39. Linking to books online
  40. If you had absolutely no worries about money, and no fear, what are ten things you would do this week?
  41. Handwriting is slow which gives me time to think
  42. Notes require regular gardening
  43. Board game nights are my favourite way to socialise and make new friends
  44. My wallet doesn’t run out of battery
  45. Questions and answers about blogging
  46. Is writing a hobby for me?
  47. Saturday Extra: Raindrops
  48. Network stress test for my smart home
  49. Blog comments, a must-have or fun extra?
  50. I really like Home Assistant’s triggers and actions model for its flexibility
  51. Newsletters I read
  52. wallabag, I choose you!
  53. Do not, I repeat, do not read the comments
  54. Dotfiles feel too intimate and personal to share
  55. Naming devices is fun
  56. Solutions and references
  57. Find new blogs to follow from this year’s Blaugust participants
  58. "You can't pause an online game" — how childhood gaming formed my work preferences
  59. Welcome to Blaugust 2025
  60. Better alternative to shell scripts with Python, uv and pytest
  61. IndieWeb principles and I
  62. Custom CLI tool to link Mastodon posts and blog posts
  63. Blaugust 2025 starts August 1st
  64. Random page feature for a static site with Eleventy
  65. A good luck charm
  66. Everyday Tabletop Gaming Carry (EDTGC)
  67. Sometimes it’s the small details that matter
  68. Guide VS Code to recognising PEP 723 dependencies
  69. The web is more than just information
  70. Starting my video projector with Python and Playwright
  71. A fish in a pond
  72. Better communication skills can lead to better career opportunities
  73. I like my green 3D printed webcam cover
  74. As a developer, my most important tools are a pen and a notebook
  75. Mozilla is shutting down Pocket, what next?
  76. When a community graduates
  77. Notifications about (almost) anything with ntfy.sh
  78. Providing next event as API with Eleventy’s Global Data Files and Netlify Functions
  79. Writing notes helps you remember — and forget
  80. Hard to spot auto-format error with Prettier, Netlify redirects and Mastodon webfinger
  81. Systems of the dead stagnate
  82. Improvised lightning talk extravaganza
  83. How I write and publish blog posts in April 2025
  84. Resisting the urge to rewrite the website

2024 1

  1. digital garden

2023 2

  1. Contemporary Documentation, PyCon Estonia, 3rd October 2019
  2. regularly speak in meetups and other events

2021 1

  1. Codebase

Undated 427

  1. Life without advertisements is a great life
  2. Review: Last One Laughing UK
  3. Shared RSS subscriptions for a software team
  4. I want to like Trainers’ Pokemon but I can’t
  5. “Shrink designing” board games
  6. Track software versions for technical blog posts
  7. UX of home-cooked software
  8. view-source explorers welcome
  9. Redesign and rewrite of playtest printer
  10. List blog posts grouped by year with Eleventy
  11. Bedside notes
  12. Explaining it helps you learn it
  13. Leaves is a great two player game
  14. My mom believes there’s a silver lining
  15. How long does it take me to write a blog post?
  16. Look for deep discussions, not a mentorship
  17. Nonlinear writing
  18. Access the DOM inside an iframe with Javascript
  19. Be careful with introducing AI into your notes
  20. Introducing: From Juhis with Love
  21. Advent of Code 2024 retrospective
  22. The ability to code sometimes feels like magic to me
  23. Say hello to Garden of Learning
  24. Human curation over algorithmic recommendations
  25. Year in Review 2024
  26. Merry Christmas!
  27. Three Rules, a new podcast by Matt D’Avella
  28. Writing is my canary bird
  29. Increasing the surface area of luck
  30. Struggles with believing in myself
  31. Three is a pattern
  32. Advent of Code 2024: How to write notes as a developer
  33. I like the person I am when I travel
  34. Search your notes first
  35. End of year self-reflection with Year Compass
  36. Impact.
  37. How I teach Eleventy from scratch
  38. The Non-Prime Regex is in the cross-section of two of my interests
  39. Notion is adding an offline mode
  40. I built a custom RSS hydrator for better GitHub and Youtube feeds
  41. My on the go solution with iPad and Raspberry Pi
  42. How I take work notes as a developer
  43. Multilingualism in a global web
  44. 12th anniversary of hamatti.org
  45. Automate filling a form with a bookmarklet
  46. Auto Note Mover and templates make a nice duo in Obsidian
  47. Do one thing well and communicate with others
  48. What to do first with a legacy project?
  49. Blindspot is a great series that suffers from a pacing issue
  50. What’s up with blogging challenges?
  51. Blaugust 2024 retrospective
  52. Book recommendation: Fluent Python (2nd Edition)
  53. What’s coming to Python in 3.13 and 3.14
  54. Couple of great Python podcasts
  55. Quick prototyping with sqlite3
  56. Parse command line arguments with argparse
  57. Pretty print and validate JSON on command line with json.tool
  58. Test your codebase with unittest
  59. Branch out with pattern matching
  60. Serve local HTML and CSS files with http.server
  61. Bring your custom toolkit to REPL sessions
  62. Keep track of happenings with logging
  63. Memoize with functools.cache
  64. map and filter with list comprehensions
  65. Combine iterables with zip
  66. Random number chosen by fair dice roll
  67. Write more pythonic code with context managers
  68. Combinatoric iterators from itertools
  69. Rituals build community camaraderie
  70. A bunch of small game reviews: Shogun Showdown, Into the Breach and Fly Corp
  71. Data classes in Python with dataclasses
  72. Rotating turn order with deque
  73. Debug with pdb and breakpoint
  74. Document intended usage through tests with doctest
  75. Improved print readability with pprint
  76. help() me Obi-Wan Kenobi, you’re my only hope
  77. Count ‘em
  78. Improve your code with namedtuples
  79. Reading and writing CSV with Python
  80. Parsing nginx server logs with regular expressions
  81. Blaugust 2024: Batteries included
  82. I have a super power: suspension of disbelief
  83. My desk setup, 2024 edition
  84. Art forgery, LLMs and why it feels a bit off
  85. Notes are a tool for …
  86. Home-cooked, situated software
  87. Advocate for your colleagues
  88. Blaugust starts August 1st
  89. Future Frontend 2024 Recap
  90. Different ways I start writing new code
  91. I prefer discussion in open web
  92. First impressions on Seasons
  93. Scoping the /now
  94. A peek into my pocket notebook
  95. Why a personal site rather than social media presence?
  96. JSON Schema: require properties based on values of other properties
  97. Website self-sustenance checkup
  98. Short history of my blogging journey
  99. Tomorrow is Volunteer Responsibility Amnesty Day
  100. Multi-select, filterable command-line interface with inquirer
  101. Crafting tabletop games
  102. Webmention bookmarklet
  103. What does it feel like to read RSS feeds?
  104. Make ripples through time and space by writing
  105. IndieWeb Carnival May Round-up post: Creative Environments
  106. Third places and meetups
  107. A lot of advice is a product of survivorship bias
  108. Inflexible systems grind my gears
  109. Reminder: IndieWeb Carnival May is still running
  110. Recap of 11ty International Symposium on Making Web Sites Real Good
  111. Two small hockey web projects
  112. But someone already wrote about it
  113. The nook of creativity
  114. The importance of momentum in writing
  115. Indie Web Carnival May 2024: Creative environments
  116. The Future of Jamstack panel discussion
  117. Good enough as a power for good
  118. index.md is a valid Eleventy project
  119. Prepare, Perform, Ponder
  120. I can :has() cheeseburger
  121. Markdown - the trade-offs of simplicity
  122. Sharing podcast episodes is weird
  123. Documentation pages from dotfiles with config-renderer
  124. Full-text RSS feed is an offline-friendly act
  125. Chance of serendipity
  126. Traveling through time
  127. I had a chat about personal web at The Future of Jamstack
  128. I completed #100DaysToOffload
  129. Recent evolution of my note taking systems
  130. My most used bookmarklets
  131. On content creation and personal web
  132. Search directly on a website with Firefox bookmark keywords
  133. Thoughts on accessibility in personal web
  134. Chesterton’s Fence and tech documentation
  135. Display full URL after a link when a page is printed
  136. Search, Webmentions and microformats
  137. THE Eleventy Meetup Feb 20th
  138. Pull request is my proposal for changes
  139. Talk ideas for new and experienced speakers
  140. Thank you, Startuplifers
  141. We organized a Code in the Dark event
  142. Stickers tell stories
  143. Public notes
  144. Anonymous, asynchronous friendships
  145. Highlight Mastodon posts by hashtag with Stylus and :has
  146. I like to glue things together
  147. We have a great developer community scene in Turku
  148. Please, don’t force me to log in
  149. Python Bytes featured Syntax Error
  150. Community websites with Eleventy
  151. The Lazarus Project (review)
  152. A few core memories
  153. I wish Python had Integer.times
  154. Debugging Python
  155. Join us at Future Frontend 2024
  156. Write it anyway
  157. Workaround for Notion’s lack of heading levels
  158. Advent of Code 2023 retrospective
  159. Year in Review 2023
  160. Merry Christmas!
  161. Two months with Obsidian
  162. We’re building community for Python developers
  163. Advent of Code is just around the corner
  164. Three travel essentials
  165. People and Blogs newsletter
  166. What's in the name? The story behind my domain
  167. Done is the engine of more
  168. Use SQL to query your CSV files
  169. Learning Rust #10: Added new feature with a HashMap
  170. Showing most popular posts with Netlify Analytics
  171. Priority order when you start blogging
  172. Great details on conference badges
  173. I got to show you this
  174. Handling JSON on command line
  175. Document your secrets
  176. Traveling Europe on land: Turku to Prague
  177. How you can make conferences better
  178. Pull requests are great
  179. My iterative approach to software development
  180. Blaugust 2023: Lessons Learned
  181. Use pangrams to avoid mistakes in conference badge prints
  182. My First 100K
  183. Custom cookie consent for video embeds
  184. Compressing overlapping strings in Python
  185. Where do my links live?
  186. 6 months of recovery, how is life?
  187. Building Dark Mode for hamatti.org
  188. Let’s talk about Steam Deck
  189. Website rewrite and switching to Notion as CMS
  190. Stardew Valley Mods I use
  191. Youtubers I watch
  192. Bloggers I read: Saturday
  193. Bloggers I read: Friday
  194. Bloggers I read: Thursday
  195. Bloggers I read: Wednesday
  196. Bloggers I read: Tuesday
  197. Pokemon tools updated for Obisidian Flames
  198. Desert Island Discs
  199. Future Frontend 2023 Recap
  200. Projects I'm proud of: Teaching programming
  201. Projects I'm proud of: Potluck
  202. Projects I'm proud of: Newsletters
  203. Projects I'm proud of: Turku ❤️ Frontend
  204. Projects I'm proud of: Boost Turku & Startup Journey
  205. Tools don't matter - until they do
  206. What makes a blog post a blog post?
  207. Where to publish your blog?
  208. Build an idea bank and never run out of blog ideas
  209. A bunch more of small game reviews: Dredge, Dishonored, Farm Keeper
  210. Blaugust 2023, here we come
  211. Blog comments via Mastodon
  212. What tech docs can learn from video game tutorials?
  213. Hey dev student: you should study creative writing
  214. Give your commands consistent names
  215. Document outdated components
  216. How to network while being beneficial to oneself professionally?
  217. Writing documentation is a great tool to improve software quality
  218. I found new great games
  219. I got my hands on the finished product (Potluck)
  220. In a beautiful world, APIs would be open
  221. How to document a workaround?
  222. A look at my on-going projects
  223. How to sort a Pokemon deck list?
  224. Potluck #3: My workflow
  225. Organizing a mess with cherry-picking
  226. A quick life update
  227. A bunch of small game reviews: Village Rails, Skulls of Sedlec, Barotrauma
  228. I combat impostor syndrome with building in public
  229. Potluck #2: The Deck
  230. The imperfect mess of note taking
  231. In defense of Quote Toots
  232. Potluck #1: Research and Design
  233. Guide to landing your first dev job
  234. My Pokemon apps updated for Crown Zenith
  235. I'm leaving Mozilla
  236. Me and the elves - Advent of Code 2022 retrospective
  237. Introducing: Syntax Error
  238. Year in Review 2022
  239. Merry Christmas
  240. DevRelCon Prague 2022 Recap
  241. Mastodon redirect with your domain in Netlify
  242. Verifying identity online
  243. Python prep for Advent of Code 2022
  244. steamos-readonly
  245. New Firefox extension to help Pokemon TCG players
  246. My overengineered tooling for Pokemon TCG Card Viewer extension
  247. How to wait for user input from Firefox extension page before continuing
  248. I joined Mastodon
  249. Find assigned tasks from Google Drive
  250. Upcoming live stream: first look at Rocket Oct 22nd
  251. Ad-Filtering Dev Summit 2022 Recap
  252. React Finland 2022 Recap
  253. Set up a dashboard using Google Slides
  254. kittens-everywhere – how to build a browser extension
  255. Traveling in connected, digitalized world
  256. Why I do what I do?
  257. I built a Firefox extension for Pokemon TCG players
  258. The Firehose
  259. I wrote my first Dropzone 4 action
  260. Embracing failure
  261. Unit test your Python code in Jupyter Notebooks
  262. Appendix A to Developer's Guide to Communities
  263. Developer's Guide to Communities
  264. Javascript's console is so much more than just console.log
  265. A lighthouse
  266. Goodbye, Futurice
  267. print is your best debugging tool
  268. GLC Decklist Validator updated with Astral Radiance
  269. Summer reading for scifi fans
  270. Learning Rust #9: A talk about rustlings
  271. A good job interview sets both sides up for success
  272. A week in life of a developer advocate
  273. Shy introvert's (short) guide to speaking in conferences
  274. Documentation: man pages vs tldr
  275. My trip to Django Day Copenhagen 2022 and Stockholm
  276. Listen to everyone, listen to no one
  277. Last two years have been awful
  278. I'm speaking in Django Day Copenhagen 2022 in April
  279. Added custom highlight function for nhl-235
  280. Rant: Please stop ruining the search
  281. I started writing Weeklies
  282. My least favorite board game genre: co-op games
  283. 45 stars, Christmas was almost saved - Advent of Code retrospective
  284. Year in Review 2021
  285. Merry Christmas!
  286. Tips for Advent of Code
  287. Advent of Code 2021
  288. Customizing liiga.fi experience
  289. Minimal Travel Table Top Game Collection 3: Project 108
  290. Hello code, my old friend
  291. Reaction GIF board with Stream Deck
  292. The most social and loneliest job: being a solo developer advocate
  293. Tiny handy tools: Community Edition
  294. Tiny handy tools
  295. Over a year of weekly blogging
  296. Python 3.10 is out and I'm excited
  297. How would you compare two version numbers?
  298. Where do you see yourself in five years?
  299. Roll and Write board games are awesome
  300. React Finland 2021 Recap
  301. Learning Rust #8: What's next?
  302. Syntax highlight all the things
  303. Blogging is my new favourite refactoring tool
  304. Your blog should have an RSS feed
  305. Learning Rust #7: Learn from the community
  306. Blog post filter with Netlify Functions
  307. Javascript Basics: Scope
  308. codebase ep. 4: Web Components with Matias
  309. Learning Rust #6: Understanding ownership in Rust
  310. My travel setup for Nintendo Switch
  311. Why scheduling Slack messages and emails is so valuable for community builders
  312. My (career) story in tech and developer relations
  313. codebase ep. 3: PHP with Larry
  314. Learning Rust #5: Rustlings
  315. Does it make sense to finish what you started?
  316. Scheduling operations in Python
  317. codebase ep. 2: Clojure with Ykä
  318. Learning Rust #4: Parsing JSON with strong types
  319. Falling forward
  320. Documentation-driven command line tools in Python with docopt
  321. Introducing developer community show codebase
  322. Learning Rust #3: crates.io & publishing your package
  323. My pockets are full of games
  324. 5 minutes that changed my life
  325. How to parse command line arguments in Python
  326. I gamified my own blog
  327. Learning Rust #2: Option & Result
  328. Learning in public
  329. Pattern matching is coming to Python
  330. My home office setup
  331. Learning Rust: Pattern Matching
  332. Introducing: 235
  333. Project: card-print-css
  334. Thoughts on debugging
  335. You should start a blog today
  336. Year in Review 2020
  337. Merry Christmas my friends
  338. Advent of Code #3: Slowing down
  339. Advent of Code #2: Borrows, unwraps and lots of compiler errors
  340. Advent of Code #1: Getting Started
  341. Customize your Internet experience
  342. Added keyboard support to ON24 with bookmarklet
  343. Functions 101
  344. Validating dynamic data conditionally with Joi
  345. How to ask help for technical problems?
  346. It's time for a remote work retrospective
  347. Dev Diary #2: Working prototype
  348. The many designs of on-screen inputs
  349. Arts, crafts and software: enhancing Flamme Rouge
  350. Adding keyboard shortcuts to Viaplay
  351. Recreational Mathematics
  352. Hidden Identity in Table Top Games
  353. I built a digital version of Black Hole game
  354. Different approaches to learning programming
  355. How to scrape a website with Python & BeautifulSoup
  356. Minimal Travel Table Top Game Collection 2: Social Distancing Edition
  357. Tips for giving talks online
  358. Dev Diary #1: Pokemon TCG Cube Draft
  359. <code>blocks
  360. True, True, True == (True, True, True) in Python
  361. Morning Coffee Projects: Youtube extension
  362. 8 tech podcasts I listen
  363. Testing lifehack: testlab repositories
  364. Building a website with a static site generator, part 3: Domain, Analytics and Forms
  365. Building a website with a static site generator, part 2: Eleventy
  366. Building a website with a static site generator, part 1: Setup
  367. How my site is built with Eleventy + Ghost
  368. New Guide - Humane Guide to Debugging Web Apps
  369. Minimal Travel Table Top Game Collection
  370. Helsinki Dev Lunch
  371. Year in review 2019
  372. My journey in diversity and inclusion in tech
  373. Why I love using command line interface?
  374. I love writing scripts to solve small problems
  375. Simple backend system for frontend workshops in Javascript
  376. Make your function calls more readable
  377. How to enable SSL in Netlify with custom domain
  378. PHP needs its own ES6
  379. “Event is over and it was a failure. What happened?” — Pre-mortem can help you avoid pitfalls
  380. Event organizer - automate what you can, focus on people with all you’ve got
  381. Better bash history search with McFly
  382. Post a message from Slack to Twitter with Zapier
  383. Learning programming has never been more accessible in Helsinki
  384. Year in Review 2018
  385. Internet = People = ❤️
  386. Developers do design — but we’re not taught it
  387. City Bound Nomadic
  388. The Reset Button
  389. The Cost of a Purchase
  390. Space has a Tendency to Fill Itself
  391. My love-hate relationship with PHP Arrays
  392. Beginning of a Journey
  393. What living a minimalistic life has taught me
  394. Do you want to learn new stuff?
  395. Help your customers become better
  396. Food Connects People - How to Hack Your Community with Food
  397. Communities in Marketing
  398. How I convinced 15+ companies to contribute to OSS
  399. 5 Reasons to Contribute to Open Source
  400. How to build a kickass developer community
  401. Year in Review 2017
  402. 5 Reasons to Attend a Meetup
  403. Improve the world — help someone learn
  404. Intentional and multifunctional - How I got rid of most of my belongings
  405. Code in the Dark Turku
  406. If you are not doing code reviews, start now!
  407. Why do good communities thrive?
  408. Building mobile app prototypes with Keynote
  409. Build your community like a garden
  410. What Rails Girls taught me about non-organizations
  411. Building a developer community calls for strong support
  412. Year in Review 2016
  413. 8 hours later + Turku <3 Frontend Hackathon
  414. Why I love hackathons
  415. What's with all these sorts, PHP?
  416. Beauty of the Pipe
  417. Case study - DataMonkey as educational platform
  418. Adventures of a Junior Developer
  419. The Beautiful Game
  420. Becoming a better programming teacher
  421. Rails Girls San Francisco
  422. Command line magic with git and bash history
  423. Difficulties with teaching and learning programming
  424. Computer illiterate generations – what should we do?
  425. Rails Girls – building the future
  426. 69 Lines of SQL
  427. TDD Pair Programming at University