{"@attributes":{"version":"2.0"},"channel":{"title":"Blog | sirlisko | Luca Lischetti","description":"Luca's thoughts, stories, and ideas.","link":"https:\/\/sirlisko.com\/blog","item":[{"title":"Commit Messages & PR Titles","link":"https:\/\/sirlisko.com\/blog\/commit-messages-and-pr-titles","guid":"https:\/\/sirlisko.com\/blog\/commit-messages-and-pr-titles","description":"A practical guide to writing clearer commits and PRs. What I arrived at after almost two decades of questioning whether I was doing it right.","pubDate":"Mon, 23 Mar 2026 13:00:00 GMT"},{"title":"Ode to ADRs","link":"https:\/\/sirlisko.com\/blog\/ode-to-adrs","guid":"https:\/\/sirlisko.com\/blog\/ode-to-adrs","description":"Why Architecture Decision Records are one of the most underrated tools in software engineering, and why I start every project with them.","pubDate":"Tue, 17 Mar 2026 17:03:00 GMT"},{"title":"One Year at FoodCycle","link":"https:\/\/sirlisko.com\/blog\/one-year-at-foodcycle","guid":"https:\/\/sirlisko.com\/blog\/one-year-at-foodcycle","description":"Reflections on my first year of volunteering with FoodCycle \u2014 cooking for the community, fighting food waste, and finding something that actually matters on a Saturday morning.","pubDate":"Sun, 15 Mar 2026 10:00:00 GMT"},{"title":"Quick Image Resizing with macOS Automator","link":"https:\/\/sirlisko.com\/blog\/quick-image-resizing-with-macos-automator","guid":"https:\/\/sirlisko.com\/blog\/quick-image-resizing-with-macos-automator","description":"Simple Automator Quick Actions to resize images to 25% or 50% directly from Finder's right-click menu.","pubDate":"Tue, 10 Mar 2026 12:00:00 GMT"},{"title":"My Default Apps at the End of 2024","link":"https:\/\/sirlisko.com\/blog\/my-default-apps-2024","guid":"https:\/\/sirlisko.com\/blog\/my-default-apps-2024","description":"List of the apps I use, updated at the end of 2024.","pubDate":"Wed, 20 Aug 2025 22:00:00 GMT"},{"title":"The Invariant Pattern - Cleaner TypeScript with Assertion Functions","link":"https:\/\/sirlisko.com\/blog\/the-invariant-pattern-cleaner-typescript-with-assertion-functions","guid":"https:\/\/sirlisko.com\/blog\/the-invariant-pattern-cleaner-typescript-with-assertion-functions","description":"How the invariant pattern can eliminate endless null checks and make your TypeScript code more readable and type-safe.","pubDate":"Wed, 20 Aug 2025 18:57:00 GMT"},{"title":"Managing Default Code Editors on macOS","link":"https:\/\/sirlisko.com\/blog\/managing-default-code-editors-on-macos","guid":"https:\/\/sirlisko.com\/blog\/managing-default-code-editors-on-macos","description":"A simple bash script to quickly switch default file associations when jumping between code editors like VSCode, Cursor, and Windsurf.","pubDate":"Wed, 13 Aug 2025 10:57:00 GMT"},{"title":"Bulk Image Conversion to WebP with a Simple Zsh Function","link":"https:\/\/sirlisko.com\/blog\/bulk-image-conversion-to-webp-with-a-simple-zsh-function","guid":"https:\/\/sirlisko.com\/blog\/bulk-image-conversion-to-webp-with-a-simple-zsh-function","description":"A practical Zsh function to batch convert images to WebP format with ImageMagick.","pubDate":"Fri, 08 Aug 2025 17:48:00 GMT"},{"title":"Farewell, Twitter","link":"https:\/\/sirlisko.com\/blog\/farewell-twitter","guid":"https:\/\/sirlisko.com\/blog\/farewell-twitter","description":"After 15 years, I\u2019ve said goodbye to Twitter \u2014 reflections on connections, lessons learned, and the bittersweet freedom of moving on.","pubDate":"Tue, 21 Jan 2025 14:21:00 GMT"},{"title":"Efficient API Polling in Redux RTK Query with EtagCacher","link":"https:\/\/sirlisko.com\/blog\/efficient-api-polling-in-redux-rtk-query-with-etagcacher","guid":"https:\/\/sirlisko.com\/blog\/efficient-api-polling-in-redux-rtk-query-with-etagcacher","description":"How to build a reusable caching utility that optimises API requests through ETag tracking and smart polling strategies.","pubDate":"Fri, 22 Mar 2024 17:36:00 GMT"},{"title":"Conditionally run GitHub Actions based on PR labels","link":"https:\/\/sirlisko.com\/blog\/conditionally-run-github-actions-based-on-pr-labels","guid":"https:\/\/sirlisko.com\/blog\/conditionally-run-github-actions-based-on-pr-labels","description":"Enhancing GitHub Actions with conditional job execution, based on PR labels.","pubDate":"Sat, 18 Nov 2023 19:36:00 GMT"},{"title":"Merging Coverage from Jest and Cypress","link":"https:\/\/sirlisko.com\/blog\/merging-coverage-from-jest-and-cypress","guid":"https:\/\/sirlisko.com\/blog\/merging-coverage-from-jest-and-cypress","description":"How to unify unit and E2E test coverage into a single report. Solving inconsistency issues between SWC (Next.js\/Jest) and Babel (Cypress).","pubDate":"Tue, 19 Sep 2023 19:21:00 GMT"},{"title":"dependencies vs devDependencies","link":"https:\/\/sirlisko.com\/blog\/dependencies-vs-devdependencies","guid":"https:\/\/sirlisko.com\/blog\/dependencies-vs-devdependencies","description":"npm or yarn, the dilemma is always the same, is this a dependency or a dev dependency?","pubDate":"Thu, 07 Nov 2019 11:45:04 GMT"},{"title":"(Untitled)","link":"https:\/\/sirlisko.com\/blog\/untitled","guid":"https:\/\/sirlisko.com\/blog\/untitled","description":"...","pubDate":"Fri, 05 Jul 2019 15:11:00 GMT"},{"title":"Update Ghost blog on Webfaction","link":"https:\/\/sirlisko.com\/blog\/update-ghost-blog-on-webfaction","guid":"https:\/\/sirlisko.com\/blog\/update-ghost-blog-on-webfaction","description":"The moment arrived, you want to update your Ghost blog, what to do?","pubDate":"Wed, 20 Jun 2018 22:44:26 GMT"},{"title":"Shazamify (a.k.a. Zamify)","link":"https:\/\/sirlisko.com\/blog\/shazamify","guid":"https:\/\/sirlisko.com\/blog\/shazamify","description":"Shazamify allows you to play your Shazams in Spotify, directly from the browser.","pubDate":"Sun, 15 Apr 2018 08:16:29 GMT"},{"title":".dotfiles - one to rule them all","link":"https:\/\/sirlisko.com\/blog\/dotfiles-one-to-rule-them-all","guid":"https:\/\/sirlisko.com\/blog\/dotfiles-one-to-rule-them-all","description":"My personal repository to rule all the dotfiles and set up my working environment in a matter of seconds.","pubDate":"Sun, 05 Feb 2017 18:35:57 GMT"},{"title":"Git: How to delete all the merged branches","link":"https:\/\/sirlisko.com\/blog\/git-how-to-delete-all-the-merged-branches","guid":"https:\/\/sirlisko.com\/blog\/git-how-to-delete-all-the-merged-branches","description":"How to delete all the merged branches.","pubDate":"Thu, 18 Feb 2016 20:49:00 GMT"},{"title":"Movember","link":"https:\/\/sirlisko.com\/blog\/movember-2015","guid":"https:\/\/sirlisko.com\/blog\/movember-2015","description":"my moustache adventure.","pubDate":"Sun, 13 Dec 2015 17:49:00 GMT"},{"title":"Git: How to get all the changes on a branch","link":"https:\/\/sirlisko.com\/blog\/git-how-to-get-all-the-changes-on-a-branch","guid":"https:\/\/sirlisko.com\/blog\/git-how-to-get-all-the-changes-on-a-branch","description":"How to get all the changes on a branch.","pubDate":"Mon, 27 Jul 2015 09:00:00 GMT"},{"title":"How to install User Scripts","link":"https:\/\/sirlisko.com\/blog\/how-to-install-user-scripts","guid":"https:\/\/sirlisko.com\/blog\/how-to-install-user-scripts","description":"guide how to install script","pubDate":"Mon, 04 May 2015 08:58:00 GMT"},{"title":"W3C Validation with Gulp","link":"https:\/\/sirlisko.com\/blog\/w3c-validation-with-gulp","guid":"https:\/\/sirlisko.com\/blog\/w3c-validation-with-gulp","description":"How to validate your code with Gulp","pubDate":"Wed, 01 Apr 2015 16:21:00 GMT"},{"title":"Gulp Blacklist Marker","link":"https:\/\/sirlisko.com\/blog\/gulp-blacklist-marker","guid":"https:\/\/sirlisko.com\/blog\/gulp-blacklist-marker","description":"Chrome extension that marks blacklisted Gulp modules when browsing NPM and GitHub.","pubDate":"Mon, 09 Mar 2015 22:38:28 GMT"},{"title":"Reasons.to 2015","link":"https:\/\/sirlisko.com\/blog\/reasons-to-2015","guid":"https:\/\/sirlisko.com\/blog\/reasons-to-2015","description":"comment of the conference","pubDate":"Sun, 01 Mar 2015 13:52:00 GMT"},{"title":"Sproxify","link":"https:\/\/sirlisko.com\/blog\/sproxify","guid":"https:\/\/sirlisko.com\/blog\/sproxify","description":"Sproxify intercepts Spotify's links and lets you choose where to play it.","pubDate":"Sat, 21 Feb 2015 10:32:00 GMT"}]}}