---
title: "Articles | Martin Masevski"
description: "Thoughts, reflections, and insights on web development, design systems, and the art of building accessible, high-performance digital experiences. Written by Martin Masevski."
canonical_url: "https://martinmasevski.dev/blog"
last_updated: 2026-11-06
meta:
  "og:description": "Thoughts and reflections on web development, design, and the art of building digital experiences."
  "og:image": "https://martinmasevski.dev/_og/s/o_8ef846ef9c7b00ff.png"
  "og:image:height": "630"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": "Articles | Martin Masevski"
  "twitter:description": "Thoughts and reflections on web development, design, and the art of building digital experiences."
  "twitter:image": "https://martinmasevski.dev/_og/s/o_8ef846ef9c7b00ff.png"
  "twitter:title": "Articles | Martin Masevski"
---

> Index of every page on this site: [llms.txt](https://martinmasevski.dev/llms.txt)

# **Articles **

Notes from building and testing UI: AI-assisted workflows, debugging stories and side projects.

****10**** articles, newest first

[Nov 6, 2026new<h2>**Debugging Home Wi-Fi with Claude Code and the 5 GHz Radar Rules**</h2>How an AI agent with browser and terminal access found a 2.4 GHz bottleneck on a 5 Gbps fiber line, and why 5 GHz Wi-Fi sometimes has to wait for radar.#ai#debugging#networking](https://martinmasevski.dev/blog/debugging-home-wifi-claude-code-dfs-radar)

[Nov 4, 2026new<h2>**How I built this site with Nuxt and Vue and kept Lighthouse at 100**</h2>The Nuxt and Vue setup behind martinmasevski.dev, the features I had fun building, and how it scores 100 on Lighthouse with animations and images on every page.#nuxt#vue#performance](https://martinmasevski.dev/blog/building-martinmasevski-dev-nuxt-vue)

[Nov 1, 2026new<h2>**Turning a neon dark site into an accessible light theme**</h2>My site was dark only, all neon pink and gold. Adding a light theme meant new colors that pass AAA, a switch that remembers you, a reveal animation and daytime covers.#accessibility#testing#side-projects](https://martinmasevski.dev/blog/designing-an-accessible-light-theme)

[Oct 14, 2026<h2>**Visual and accessibility checks for every Storybook PR**</h2>Storybook Swiss Knife screenshots every story, compares it with the base branch and runs axe on every PR. Here's what made those checks trustworthy.#testing#accessibility#side-projects](https://martinmasevski.dev/blog/storybook-swiss-knife-visual-accessibility-checks)

[Sep 24, 2026<h2>**Storybook PR previews on GitHub Pages without trusting PR code**</h2>Why pull\_request\_target is the wrong tool for PR previews, how I split build and publish with workflow\_run, and three bugs that still broke previews.#devtools#side-projects](https://martinmasevski.dev/blog/storybook-pr-previews-github-pages-untrusted-code)

[Aug 18, 2026<h2>**A GitHub Actions cache key for visual regression baselines**</h2>Our visual regression cache missed on almost every PR: the key hashed the CI environment, not the screenshots. The fix helped halve PR check time.#testing#debugging#devtools](https://martinmasevski.dev/blog/visual-regression-baseline-cache-key)

[Jul 14, 2026<h2>**Blocking new accessibility violations with an axe baseline**</h2>Turn on axe for every Storybook story without freezing releases: record known violations in a baseline and fail PRs only on new or worse ones.#accessibility#testing](https://martinmasevski.dev/blog/accessibility-baseline-block-new-violations)

[May 26, 2026<h2>**Reviving a Raspberry Pi with AI**</h2>How a decade-old Raspberry Pi, recycled cameras, and an AI-assisted workflow became a working remote camera server.#ai#raspberry-pi#hardware](https://martinmasevski.dev/blog/reviving-a-raspberry-pi-with-ai)

[Mar 28, 2026<h2>**Building a local-first browser TTS studio with Kokoro**</h2>How I built LocalVoice Studio to run Kokoro TTS locally in the browser with kokoro-js, and what AI-assisted development still needed to make it shippable.#ai#tts#local-first](https://martinmasevski.dev/blog/building-local-first-browser-tts-studio-kokoro)

[Mar 14, 2026<h2>**How to change the timezone in Chrome DevTools and debug it with MCP**</h2>How to override the timezone in Chrome DevTools Sensors, and how Chrome DevTools MCP helped me debug a timezone bug that turned a calendar date into the wrong day.#mcp#debugging#ai](https://martinmasevski.dev/blog/debugging-timezone-chrome-devtools-mcp)

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://martinmasevski.dev/#website","@type":"WebSite","description":"Senior frontend engineer working in Vue, Nuxt and TypeScript. I build the tests and checks that make AI-written UI safe to ship.","name":"Martin Masevski","url":"https://martinmasevski.dev/","publisher":{"@id":"https://martinmasevski.dev/#identity"}},{"@id":"https://martinmasevski.dev/blog#webpage","@type":"WebPage","description":"Thoughts, reflections, and insights on web development, design systems, and the art of building accessible, high-performance digital experiences. Written by Martin Masevski.","name":"Articles","url":"https://martinmasevski.dev/blog","isPartOf":{"@id":"https://martinmasevski.dev/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://martinmasevski.dev/blog"]}]},{"@id":"https://martinmasevski.dev/#identity","@type":"Person","description":"Hi, I'm Martin, a senior frontend engineer working in Vue, Nuxt and TypeScript. AI can now write UI faster than teams can review it, so I build the tests and checks that make it safe to ship.","email":"martin.masevski@gmail.com","jobTitle":"Senior Frontend Engineer","name":"Martin Masevski","url":"https://martinmasevski.dev","alumniOf":{"@type":"EducationalOrganization","name":"Università degli Studi di Padova","sameAs":"https://www.unipd.it"},"image":{"@type":"ImageObject","@id":"https://martinmasevski.dev/#/schema/image/profile","url":"https://martinmasevski.dev/images/profile.png"},"knowsAbout":["Vue.js","Nuxt","TypeScript","Web accessibility","Frontend testing"],"knowsLanguage":["en"],"sameAs":["https://www.linkedin.com/in/masevski/","https://github.com/Archetipo95","https://nuxt.com/nuxters/Archetipo95"],"worksFor":{"@type":"Organization","name":"hubcore.AI (Destination Italia)","url":"https://hubcore.ai/en/"}},{"@context":"https://schema.org","@id":"https://martinmasevski.dev/blog#/schema/breadcrumb-list/1","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://martinmasevski.dev"},{"@type":"ListItem","position":2,"name":"Articles","item":"https://martinmasevski.dev/blog"}]}]}
```

## Sitemap

See the full [sitemap](https://martinmasevski.dev/sitemap.md) for all pages.
