41554 blogs · [ { "id": "01a0da17-1a30-7379-bdff-31ec711fd9b7", "title": "Matteo Mazzarolo", "url": "https://mmazzarolo.com/blog/", "published_at": "2026-09-06T00:00:00+00:00" }, { "id": "01a087a7-a2d0-722f-b324-fba5985ed736", "title": "AI made it worth building games for our game nights", "url": "https://mmazzarolo.com/blog/2026-09-05-ai-has-completely-changed-our-game-nights", "published_at": "2026-09-05T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec71726647", "title": "AI made it worth building games for our game nights", "url": "https://mmazzarolo.com/blog/2026-09-05-ai-has-completely-changed-our-game-nights/", "published_at": "2026-09-05T00:00:00+00:00" }, { "id": "01a087a7-a2d0-722f-b324-fba5987c9252", "title": "Refactoring barrel files with codemods", "url": "https://mmazzarolo.com/blog/2024-11-10-removing-barrel-file-references-with-a-codemod", "published_at": "2024-11-10T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec7214ca96", "title": null, "url": "https://mmazzarolo.com/blog/2024-11-10-removing-barrel-file-references-with-a-codemod/", "published_at": "2024-11-10T00:00:00+00:00" }, { "id": "01a087a7-a2d0-722f-b324-fba598d9dd33", "title": "Handling CORS and opaque responses in Service Workers", "url": "https://mmazzarolo.com/blog/2024-11-06-service-workers-and-cors", "published_at": "2024-11-06T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec72259232", "title": null, "url": "https://mmazzarolo.com/blog/2024-11-06-service-workers-and-cors/", "published_at": "2024-11-06T00:00:00+00:00" }, { "id": "01a087a7-a2d0-722f-b324-fba598ea7890", "title": "Optimizing SPA load times with async chunks preloading", "url": "https://mmazzarolo.com/blog/2024-08-13-async-chunk-preloading-on-load", "published_at": "2024-08-13T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec72e3e544", "title": null, "url": "https://mmazzarolo.com/blog/2024-08-13-async-chunk-preloading-on-load/", "published_at": "2024-08-13T00:00:00+00:00" }, { "id": "01a087a7-a2d0-722f-b324-fba59971ccd7", "title": "Conditional logging with query parameters", "url": "https://mmazzarolo.com/blog/2024-07-30-conditional-logging", "published_at": "2024-07-30T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec7362870e", "title": null, "url": "https://mmazzarolo.com/blog/2024-07-30-conditional-logging/", "published_at": "2024-07-30T00:00:00+00:00" }, { "id": "01a087a7-a2d0-722f-b324-fba59a6e1ab1", "title": "Flexible network data preloading in large SPAs", "url": "https://mmazzarolo.com/blog/2024-07-29-data-preloading-script", "published_at": "2024-07-29T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec739fe7d9", "title": null, "url": "https://mmazzarolo.com/blog/2024-07-29-data-preloading-script/", "published_at": "2024-07-29T00:00:00+00:00" }, { "id": "01a087a7-a2d0-722f-b324-fba59acf6434", "title": "Setting up my fish shell from scratch on macOS", "url": "https://mmazzarolo.com/blog/2023-11-16-my-fish-shell-setup-on-macos", "published_at": "2023-11-16T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec73f14d50", "title": null, "url": "https://mmazzarolo.com/blog/2023-11-16-my-fish-shell-setup-on-macos/", "published_at": "2023-11-16T00:00:00+00:00" }, { "id": "01a087a7-a2d0-722f-b324-fba59b5ef0e9", "title": "Use relative paths in markdown and MDX images with Next.js", "url": "https://mmazzarolo.com/blog/2023-07-30-nextjs-mdx-image-source", "published_at": "2023-07-30T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec7479e83f", "title": null, "url": "https://mmazzarolo.com/blog/2023-07-30-nextjs-mdx-image-source/", "published_at": "2023-07-30T00:00:00+00:00" }, { "id": "01a087a7-a2d0-722f-b324-fba59c43302d", "title": "Automatic width and height of local MDX images with Next.js", "url": "https://mmazzarolo.com/blog/2023-07-29-nextjs-mdx-image-size", "published_at": "2023-07-29T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec74b0e59c", "title": null, "url": "https://mmazzarolo.com/blog/2023-07-29-nextjs-mdx-image-size/", "published_at": "2023-07-29T00:00:00+00:00" }, { "id": "01a087a7-a2d0-722f-b324-fba59c628d97", "title": "Named element IDs can be referenced as JavaScript globals", "url": "https://mmazzarolo.com/blog/2022-09-27-named-element-ids", "published_at": "2022-09-27T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec74ce8919", "title": null, "url": "https://mmazzarolo.com/blog/2022-09-27-named-element-ids/", "published_at": "2022-09-27T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec75740b07", "title": null, "url": "https://mmazzarolo.com/blog/2022-09-09-visual-regression-testing-with-playwright-and-github-actions/", "published_at": "2022-09-09T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec75a05e9a", "title": null, "url": "https://mmazzarolo.com/blog/2022-08-27-diff-highlighting-in-gatsby/", "published_at": "2022-08-27T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec76027722", "title": null, "url": "https://mmazzarolo.com/blog/2022-08-25-simple-colored-logging-for-javascript-clis/", "published_at": "2022-08-25T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec765f9e8f", "title": null, "url": "https://mmazzarolo.com/blog/2022-08-24-the-opposite-of-noscript/", "published_at": "2022-08-24T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec7749aaac", "title": null, "url": "https://mmazzarolo.com/blog/2022-07-30-checking-if-a-javascript-native-function-was-monkey-patched/", "published_at": "2022-07-30T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec779ff358", "title": null, "url": "https://mmazzarolo.com/blog/2022-07-23-determining-if-an-http-request-was-sent-as-beacon-keepalive/", "published_at": "2022-07-23T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec78554491", "title": null, "url": "https://mmazzarolo.com/blog/2022-06-26-filling-local-storage-programmatically/", "published_at": "2022-06-26T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec7861ea92", "title": null, "url": "https://mmazzarolo.com/blog/2022-06-25-local-storage-status/", "published_at": "2022-06-25T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec788cde7d", "title": null, "url": "https://mmazzarolo.com/blog/2022-06-19-making-google-search-less-annoying/", "published_at": "2022-06-19T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec798bcc2d", "title": null, "url": "https://mmazzarolo.com/blog/2022-06-18-service-workers-tips-and-tricks/", "published_at": "2022-06-18T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec79df32b8", "title": null, "url": "https://mmazzarolo.com/blog/2022-06-16-safari-on-ios-can-overlap-multiple-full-screen-videos/", "published_at": "2022-06-16T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec7a73bdc4", "title": null, "url": "https://mmazzarolo.com/blog/2022-05-25-how-i-capture-encode-and-embed-videos/", "published_at": "2022-05-25T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec7b3b69a9", "title": null, "url": "https://mmazzarolo.com/blog/2022-04-16-drag-window-by-clicking-anywhere-on-macos/", "published_at": "2022-04-16T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec7bfb72f1", "title": null, "url": "https://mmazzarolo.com/blog/2022-03-12-lavorare-da-remoto-per-aziende-tech-estere/", "published_at": "2022-03-12T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec7cd7b852", "title": null, "url": "https://mmazzarolo.com/blog/2022-02-16-track-down-the-javascript-code-responsible-for-polluting-the-global-scope/", "published_at": "2022-02-16T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec7d7a8d1e", "title": null, "url": "https://mmazzarolo.com/blog/2022-02-14-find-what-javascript-variables-are-leaking-into-the-global-scope/", "published_at": "2022-02-14T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec7e6253ad", "title": null, "url": "https://mmazzarolo.com/blog/2022-02-05-creating-and-deploying-a-proxy-server-in-5-minutes/", "published_at": "2022-02-05T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec7e6af195", "title": null, "url": "https://mmazzarolo.com/blog/2021-12-14-lessons-learned-publishing-a-content-security-policy/", "published_at": "2021-12-14T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec7f2d4bdd", "title": null, "url": "https://mmazzarolo.com/blog/2021-11-06-speed-up-your-typescript-monorepo-with-esbuild/", "published_at": "2021-11-06T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec7fa76e3b", "title": null, "url": "https://mmazzarolo.com/blog/2021-10-10-on-toggling-stylesheets/", "published_at": "2021-10-10T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec7feebf16", "title": null, "url": "https://mmazzarolo.com/blog/2021-09-25-running-react-native-everywhere-electron-browser-ext/", "published_at": "2021-09-25T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec800276d1", "title": null, "url": "https://mmazzarolo.com/blog/2021-09-22-running-react-native-everywhere-web/", "published_at": "2021-09-21T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec80dfa399", "title": null, "url": "https://mmazzarolo.com/blog/2021-09-19-running-react-native-everywhere-windows-macos/", "published_at": "2021-09-19T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec816fdaa6", "title": null, "url": "https://mmazzarolo.com/blog/2021-09-18-running-react-native-everywhere-mobile/", "published_at": "2021-09-18T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec822a5f9e", "title": null, "url": "https://mmazzarolo.com/blog/2021-09-12-running-react-native-everywhere-monorepo/", "published_at": "2021-09-12T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec82b9a878", "title": null, "url": "https://mmazzarolo.com/blog/2021-09-11-running-react-native-everywhere/", "published_at": "2021-09-11T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec839108ac", "title": null, "url": "https://mmazzarolo.com/blog/2021-09-10-browsing-the-web-from-eu/", "published_at": "2021-09-10T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec83ee552f", "title": null, "url": "https://mmazzarolo.com/blog/2021-09-03-loading-web-workers-using-webpack-5/", "published_at": "2021-09-03T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec843bb730", "title": null, "url": "https://mmazzarolo.com/blog/2021-08-28-git-alias-to-checkout-default-branch-github/", "published_at": "2021-08-28T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec8493e239", "title": null, "url": "https://mmazzarolo.com/blog/2021-08-21-what-i-learned-by-maintaining-react-native-modal/", "published_at": "2021-08-21T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec856dc5c1", "title": null, "url": "https://mmazzarolo.com/blog/2021-08-12-building-an-electron-application-using-create-react-app/", "published_at": "2021-08-12T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec863f527e", "title": null, "url": "https://mmazzarolo.com/blog/2021-07-31-react-native-responsive-scaling-on-the-web/", "published_at": "2021-07-31T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec86d82098", "title": null, "url": "https://mmazzarolo.com/blog/2021-07-11-scrolling-with-a-third-party-mouse-on-macos-looks-horrible/", "published_at": "2021-07-11T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec8799f179", "title": null, "url": "https://mmazzarolo.com/blog/2021-06-18-macos-windowserver-cpu-spike-mouse/", "published_at": "2021-06-18T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec886f9c37", "title": null, "url": "https://mmazzarolo.com/blog/2021-06-11-safari-base-uri-csp-violation/", "published_at": "2021-06-11T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec88cd6cfd", "title": null, "url": "https://mmazzarolo.com/blog/2021-06-06-metascraper-serverless-function/", "published_at": "2021-06-06T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec88dd3ff7", "title": null, "url": "https://mmazzarolo.com/blog/2021-05-30-browser-specific-format-for-csp-violations/", "published_at": "2021-05-30T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec89738c6e", "title": null, "url": "https://mmazzarolo.com/blog/2021-05-01-open-sourcing-remotebear/", "published_at": "2021-05-01T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec8a028c8d", "title": null, "url": "https://mmazzarolo.com/blog/2021-04-27-nextjs-robots-txt/", "published_at": "2021-04-27T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec8ae4f975", "title": null, "url": "https://mmazzarolo.com/blog/2021-04-16-cumulative-layout-shift/", "published_at": "2021-04-16T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec8b80775e", "title": null, "url": "https://mmazzarolo.com/blog/2021-04-10-nextjs-scroll-restoration/", "published_at": "2021-04-10T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec8bf1ab24", "title": null, "url": "https://mmazzarolo.com/blog/2020-11-15-media-queries-in-source-elements/", "published_at": "2020-11-15T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec8c5ebd1b", "title": null, "url": "https://mmazzarolo.com/blog/2020-10-24-adding-react-native-web/", "published_at": "2020-10-24T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec8ccea424", "title": null, "url": "https://mmazzarolo.com/blog/2020-09-28-alfred-github-repos/", "published_at": "2020-09-28T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec8d7e06bd", "title": null, "url": "https://mmazzarolo.com/blog/2020-09-07-app-store-previews/", "published_at": "2020-09-07T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec8e3c76a7", "title": null, "url": "https://mmazzarolo.com/blog/2019-12-27-open-vscode-projects-with-alfred/", "published_at": "2019-12-27T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec8e8b6821", "title": null, "url": "https://mmazzarolo.com/blog/2019-12-23-macos-screenshot-like-drop-shadow/", "published_at": "2019-12-23T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec8f20b84e", "title": null, "url": "https://mmazzarolo.com/blog/2019-11-21-use-animation-react-native/", "published_at": "2019-11-21T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec900892fd", "title": null, "url": "https://mmazzarolo.com/blog/2019-11-20-react-native-cross-platform-shadow/", "published_at": "2019-11-20T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec90303581", "title": null, "url": "https://mmazzarolo.com/blog/2019-10-28-alfred-jira-search-workflow/", "published_at": "2019-10-28T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec90351175", "title": null, "url": "https://mmazzarolo.com/blog/2019-10-19-browser-extension-development/", "published_at": "2019-10-19T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec90d58581", "title": null, "url": "https://mmazzarolo.com/blog/2019-10-11-on-eslint-plugin-react-app/", "published_at": "2019-10-11T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec90ef4064", "title": null, "url": "https://mmazzarolo.com/blog/2019-10-08-fast-software-slow-animations-jira-cloud/", "published_at": "2019-10-08T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec91b4ec08", "title": null, "url": "https://mmazzarolo.com/blog/2019-09-01-charles-proxy-automation/", "published_at": "2019-09-01T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec91c8052d", "title": null, "url": "https://mmazzarolo.com/blog/2019-08-30-about-the-space-bar/", "published_at": "2019-08-30T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec92943797", "title": null, "url": "https://mmazzarolo.com/blog/2019-08-25-how-to-activate-your-remapped-cursor-keys/", "published_at": "2019-08-12T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec929d1d72", "title": null, "url": "https://mmazzarolo.com/blog/2019-07-13-test-apollo-client-cache/", "published_at": "2019-07-13T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec92aaa7df", "title": null, "url": "https://mmazzarolo.com/blog/2019-04-22-tldr-semantic-release/", "published_at": "2019-04-22T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec93592aab", "title": null, "url": "https://mmazzarolo.com/blog/2018-10-08-styling-the-react-native-textinput-on-android/", "published_at": "2018-10-08T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec9455224c", "title": null, "url": "https://mmazzarolo.com/blog/2018-09-27-the-starter-app/", "published_at": "2018-09-27T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec94da3584", "title": null, "url": "https://mmazzarolo.com/blog/2018-09-15-trello-login/", "published_at": "2018-09-15T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec954492bc", "title": null, "url": "https://mmazzarolo.com/blog/2017-03-06-middlewares-the-underrated-redux-strength/", "published_at": "2017-03-06T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec96273015", "title": null, "url": "https://mmazzarolo.com/blog/2017-02-28-how-i-built-a-super-simple-game/", "published_at": "2017-02-28T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec96db835b", "title": null, "url": "https://mmazzarolo.com/blog/2016-10-05-redux-organization/", "published_at": "2016-10-05T00:00:00+00:00" }, { "id": "01a0da17-1a30-7379-bdff-31ec97a34d16", "title": null, "url": "https://mmazzarolo.com/blog/2016-09-19-parse-server-hidden-features/", "published_at": "2016-09-19T00:00:00+00:00" } ] posts Claim your blog
Back to Mazzarolo Matteo · mmazzarolo.com
Blog · corpus.blog/blogs/mmazzarolo.com/posts

Mazzarolo Matteo · mmazzarolo.com

mmazzarolo.com

2026

2024

2023

2022

2021

2020

2019

2018

2017

2016