41554 blogs · [ { "id": "01a0d890-f277-7058-950f-01ec6f41dd7f", "title": "Make your website printable - a short guide", "url": "https://hamatti.org/posts/make-your-website-printable-a-short-guide/", "published_at": "2026-09-23T00:00:00+00:00" }, { "id": "01a0c510-df29-700d-83bc-dec5fd61815d", "title": "I’m not a big fan of movie theater experience", "url": "https://hamatti.org/posts/im-not-a-big-fan-of-movie-theater-experience/", "published_at": "2026-09-19T00:00:00+00:00" }, { "id": "01a0b5c7-3a55-7134-adde-78dbdd1da190", "title": "Why do we take notes?", "url": "https://hamatti.org/posts/why-do-we-take-notes/", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a08780-f306-7043-a024-fb2a77c52497", "title": "Moomin and nfo files for Jellyfin", "url": "https://hamatti.org/posts/moomin-and-nfo-files-for-jellyfin/", "published_at": "2026-09-09T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c45ad83e86", "title": "People and Blogs interview", "url": "https://hamatti.org/posts/people-and-blogs-interview/", "published_at": "2026-09-07T11:50:00+00:00" }, { "id": "01a0b68b-4cd7-7095-b88d-6e27f65aff6d", "title": "Juha-Matti Santal", "url": "https://hamatti.org", "published_at": "2026-09-07T05:20:44+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c45baa1126", "title": "What’s in my Magic the Gathering Battle Box", "url": "https://hamatti.org/posts/whats-in-my-magic-the-gathering-battle-box/", "published_at": "2026-09-02T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c45bc39280", "title": "31st is for recap", "url": "https://hamatti.org/posts/31st-is-for-recap/", "published_at": "2026-08-31T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c45c01a829", "title": "A lot of what I’ve learned, I’ve learned from open web", "url": "https://hamatti.org/posts/a-lot-of-what-ive-learned-ive-learned-from-open-web/", "published_at": "2026-08-30T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c45cf208a9", "title": "Z is for zip file mocking - Python A to Z", "url": "https://hamatti.org/posts/z-is-for-zip-file-mocking-python-a-to-z/", "published_at": "2026-08-29T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c45d85648b", "title": "A fun debugging story from this weekend", "url": "https://hamatti.org/posts/a-fun-debugging-story-from-this-weekend/", "published_at": "2026-08-29T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c45d898b7d", "title": "Y is for YAGNI - Python A to Z", "url": "https://hamatti.org/posts/y-is-for-yagni-python-a-to-z/", "published_at": "2026-08-28T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c45e2db47c", "title": "X is for XML parsing - Python A to Z", "url": "https://hamatti.org/posts/x-is-for-xml-parsing-python-a-to-z/", "published_at": "2026-08-27T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c45f16128c", "title": "W is for walrus operator - Python A to Z", "url": "https://hamatti.org/posts/w-is-for-walrus-operator-python-a-to-z/", "published_at": "2026-08-26T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c45f5b05bd", "title": "V is for visible characters - Python A to Z", "url": "https://hamatti.org/posts/v-is-for-visible-characters-python-a-to-z/", "published_at": "2026-08-25T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c45fa361b8", "title": "U is for uv - Python A to Z", "url": "https://hamatti.org/posts/u-is-for-uv-python-a-to-z/", "published_at": "2026-08-24T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c460077459", "title": "Reply to Dale’s comment on my IndieWeb post", "url": "https://hamatti.org/posts/reply-to-dales-comment-on-my-indieweb-post/", "published_at": "2026-08-24T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c460ec1f7d", "title": "There’s no membership card for IndieWeb", "url": "https://hamatti.org/posts/theres-no-membership-card-for-indieweb/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c461aea2c4", "title": "T is for time-machine - Python A to Z", "url": "https://hamatti.org/posts/t-is-for-time-machine-python-a-to-z/", "published_at": "2026-08-22T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c461bf0223", "title": "S is for slicing - Python A to Z", "url": "https://hamatti.org/posts/s-is-for-slicing-python-a-to-z/", "published_at": "2026-08-21T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c461f3cd45", "title": "R is for REPL - Python A to Z", "url": "https://hamatti.org/posts/r-is-for-repl-python-a-to-z/", "published_at": "2026-08-20T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c462b559b3", "title": "Q is for Q - Python A to Z", "url": "https://hamatti.org/posts/q-is-for-q-python-a-to-z/", "published_at": "2026-08-19T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c463933d83", "title": "P is for Python Enhancement Proposal (PEP) - Python A to Z", "url": "https://hamatti.org/posts/p-is-for-python-enhancement-proposal-pep-python-a-to-z/", "published_at": "2026-08-18T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c463bbe03e", "title": "O is for ORM - Python A to Z", "url": "https://hamatti.org/posts/o-is-for-orm-python-a-to-z/", "published_at": "2026-08-17T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c4645a82d1", "title": "N is for namedtuple - Python A to Z", "url": "https://hamatti.org/posts/n-is-for-namedtuple-python-a-to-z/", "published_at": "2026-08-16T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c46507705a", "title": "Saoirse Ronan Appreciation Week, round 2", "url": "https://hamatti.org/posts/saoirse-ronan-appreciation-week-round-2/", "published_at": "2026-08-15T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c465176f4f", "title": "M is for meetups - Python A to Z", "url": "https://hamatti.org/posts/m-is-for-meetups-python-a-to-z/", "published_at": "2026-08-14T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c4655510ff", "title": "L is for learning - Python A to Z", "url": "https://hamatti.org/posts/l-is-for-learning-python-a-to-z/", "published_at": "2026-08-13T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c465f1cb6d", "title": "K is for keyword arguments - Python A to Z", "url": "https://hamatti.org/posts/k-is-for-keyword-arguments-python-a-to-z/", "published_at": "2026-08-12T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c4661881a6", "title": "J is for JSON validation - Python A to Z", "url": "https://hamatti.org/posts/j-is-for-json-validation-python-a-to-z/", "published_at": "2026-08-11T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c46624abcb", "title": "I is for immutable - Python A to Z", "url": "https://hamatti.org/posts/i-is-for-immutable-python-a-to-z/", "published_at": "2026-08-10T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c4664a2ac1", "title": "HTML Day and the value of practicing the fundamentals", "url": "https://hamatti.org/posts/html-day-and-the-value-of-practicing-the-fundamentals/", "published_at": "2026-08-10T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c467104c15", "title": "H is for htmx - Python A to Z", "url": "https://hamatti.org/posts/h-is-for-htmx-python-a-to-z/", "published_at": "2026-08-09T00:00:00+00:00" }, { "id": "01a08780-f307-703e-9a9b-30c46764363e", "title": "G is for get_or_create - Python A to Z", "url": "https://hamatti.org/posts/g-is-for-get-or-create-python-a-to-z/", "published_at": "2026-08-08T00:00:00+00:00" } ] posts Claim your blog
Back to Juha-Matti Santala - Community Builder. Dreamer. Adventurer. : Juha-Matti Santala
Blog · corpus.blog/blogs/hamatti.org/posts

Juha-Matti Santala - Community Builder. Dreamer. Adventurer. : Juha-Matti Santala

hamatti.org

2026