1<!DOCTYPE html><html lang="en" class="dm_sans_efc253b3-module__w1i8Da__variable"><head class=""><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/immutable/chunks/0_cv-tfovsghl.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/immutable/chunks/3zp_c-659qx9t.js"/>
1<script src="/_next/static/immutable/chunks/3z0ipey2dwicp.js" async=""></script>
1<script src="/_next/static/immutable/chunks/333js8sa2mron.js" async=""></script>
1<script src="/_next/static/immutable/chunks/0kfs8aw_e9-01.js" async=""></script>
1<script src="/_next/static/immutable/chunks/turbopack-2t8ri2iqn_7wo.js" async=""></script>
1<script src="/_next/static/immutable/chunks/205hv9zmmrokf.js" async=""></script>
1<script src="/_next/static/immutable/chunks/3yeqfopab74of.js" async=""></script>
1<script src="/_next/static/immutable/chunks/04zeyw5pv-8-f.js" async=""></script>
1<script src="/_next/static/immutable/chunks/2rfllyhawct-o.js" async=""></script>
1<script src="/_next/static/immutable/chunks/2t8odc8wps1is.js" async=""></script>
1<title>Blog - Michael Peters</title><meta name="description" content="A blog about web development, optimization and automation of daily tasks."/><meta name="keywords" content="Web Development,Optimization,Automation,Blog,Web Developer,Michael Peters"/><meta property="og:title" content="Blog - Michael Peters"/><meta property="og:description" content="A blog about web development, optimization and automation of daily tasks."/><meta property="og:image" content="https://mpeters.dev/thumbnails/og-image-en.png"/><meta property="og:image:type" content="image/png"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Blog - Michael Peters"/><meta name="twitter:description" content="A blog about web development, optimization and automation of daily tasks."/><meta name="twitter:image" content="https://mpeters.dev/thumbnails/og-image-en.png"/><meta name="twitter:image:type" content="image/png"/><link rel="icon" href="/favicon.ico?favicon.3fpu2ql9ns1a0.ico" sizes="256x256" type="image/x-icon"/><meta name="next-size-adjust" content=""/><meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)"/><meta name="theme-color" content="#09090b" media="(prefers-color-scheme: dark)"/><link rel="http://www.w3.org/ns/ldp#inbox" href="https://pod.mpeters.dev/michael/feedback-inbox/"/>
1<script src="/_next/static/immutable/chunks/0c0hxoamwjsbw.js" noModule=""></script>
1</head><body><div hidden=""><!--$--><!--/$--></div><a href="#main-content" class="fixed left-1/2 -translate-x-1/2 top-0 -translate-y-[200%] focus:translate-y-4 transition-transform z-20 px-4 py-2 border border-background-8 bg-surface rounded-full text-sm font-medium text-foreground-5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-700 focus-visible:ring-offset-2">Skip to content</a><div></div><div class="flex flex-col min-h-screen"><div class="flex-1">
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Michael Peters","item":"https://mpeters.dev"},{"@type":"ListItem","position":2,"name":"Blog","item":"https://mpeters.dev/en-US/blog"}]}</script>
1<div class="flex flex-col relative z-10"><header class="bg-page text-foreground-4 z-10 w-full"><div class="container"><div class="flex items-stretch justify-between mx border-purple-60 h-16 mt-2"><a aria-label="Open homepage" class="items-center p-3 -ml-3 font-semibold text-lg self-center flex flex-row justify-center align-items-center gap-3 focus-visible:ring-2 focus-visible:ring-blue-700 rounded-full" href="/en-US"><img alt="" fetchPriority="high" loading="lazy" width="40" height="40" decoding="async" data-nimg="1" class="rounded-full mx-auto sm:aspect-square" style="color:transparent" srcSet="/_next/image?url=%2Favatar.webp&w=48&q=75 1x, /_next/image?url=%2Favatar.webp&w=96&q=75 2x" src="/_next/image?url=%2Favatar.webp&w=96&q=75"/>Michael Peters</a><div class="sm:flex justify-center items-stretch hidden font-semibold"><nav class="header -mr-4 flex items-stretch"><a class="px-5 flex items-center relative rounded-full focus:ring-blue-700" href="/en-US/projects">Projects</a><a class="px-5 flex items-center relative rounded-full focus:ring-blue-700" href="/en-US/curriculum-vitae">Curriculum Vitae</a><a class="px-5 flex items-center relative rounded-full focus:ring-blue-700" href="/en-US/blog">Blog<span class="absolute bottom-0 left-1/2 -translate-x-1/2 w-8 h-1 bg-foreground-1 rounded-md"></span></a></nav></div><button type="button" class="menu cross sm:hidden col-span-2 col-start-10 p-2 -mr-2 focus-visible:outline-foreground-7" aria-label="Open Menu" aria-expanded="false" aria-haspopup="true"><label><svg aria-hidden="true" viewBox="10 15 70 70" xmlns="http://www.w3.org/2000/svg" class=""><path class="line--1" d="M0 70l28-28c2-2 2-2 7-2h64" stroke-linecap="round"></path><path class="line--2" d="M0 50h99" stroke-linecap="round"></path><path class="line--3" d="M0 30l28 28c2 2 2 2 7 2h64" stroke-linecap="round"></path></svg></label></button></div></div></header><main class="flex-1 container"><section class="max-w-3xl pt-16 pb-14 md:pt-24 md:pb-20"><p class="text-xs uppercase tracking-[0.2em] text-muted-foreground pb-5">Research</p><h1 class="text-4xl font-medium leading-tight xl:text-5xl text-balance">Exploring how thoughtful software can support everyday life</h1><p class="pt-6 text-lg text-muted-foreground leading-relaxed">I research and build small tools in four areas: wellbeing, personal productivity, household, and digital experiences. Below is the work so far â essays, prototypes, and software you can use today.</p></section><section aria-label="Data ownership" class="border-t border-border py-10 md:py-14 grid gap-6 md:grid-cols-[minmax(0,300px)_minmax(0,1fr)] md:gap-16"><div><h2 class="text-2xl font-medium tracking-tight">Data ownership</h2></div><ul class="flex flex-col"><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><div class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">solid-checklists</h3></div><p class="pt-1 text-base text-muted-foreground">Sign in with a Solid pod, discover your websites through your type indexes and keep an editable production readiness checklist for each one, stored in your own pod.</p><p class="pt-2 text-xs uppercase tracking-[0.15em] text-muted-foreground/80">Developer Tools</p></div></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><a href="https://github.com/solid/solidos" target="_blank" rel="noopener noreferrer" class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">solidos</h3><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5"><path d="M17 7l-10 10"></path><path d="M8 7l9 0l0 9"></path></svg></div><p class="pt-2 text-xs uppercase tracking-[0.15em] text-muted-foreground
1/80">Developer Tools</p></a></li></ul></section><section aria-label="Other" class="border-t border-border py-10 md:py-14 grid gap-6 md:grid-cols-[minmax(0,300px)_minmax(0,1fr)] md:gap-16"><div><h2 class="text-2xl font-medium tracking-tight">Other</h2></div><ul class="flex flex-col"><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><div class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Android-Solid-Services</h3></div></div></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><div class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Distraction Blocker</h3></div><p class="pt-1 text-base text-muted-foreground">Blocks windows on desktop devices, to let you focus on what matters. Focus times and blocks can be configured in the app.</p></div></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><a href="https://feedbacktracker.vercel.app" target="_blank" rel="noopener noreferrer" class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Feedback Tracker</h3><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5"><path d="M17 7l-10 10"></path><path d="M8 7l9 0l0 9"></path></svg></div><p class="pt-1 text-base text-muted-foreground">Collect feedback from users, without requiring them to switch contexts. Show them the status of their feedback. Inform them once it's processed.</p></a></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><a href="https://github.com/Sameerkash/Focus" target="_blank" rel="noopener noreferrer" class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">focus</h3><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5"><path d="M17 7l-10 10"></path><path d="M8 7l9 0l0 9"></path></svg></div></a></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><div class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Groceries Android</h3></div><p class="pt-1 text-base text-muted-foreground">Remember what you bought, where you bought it and how much it cost. Learn from your past experience by analyzing this information and writing reviews on your purchases. Understand how prices change, and if a brand lives up to actual product quality.</p></div></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><div class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Home Monitor Android</h3></div><p class="pt-1 text-base text-muted-foreground">Keep an inventory of your home, see how rooms and shelves change overtime to recognize patterns. See todos by room, to structurally finish todos at home, without switching rooms unnecessarily</p></div></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><div class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Leptum</h3></div></div></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><a href="https://github.com/m5x5/leptum-app" target="_blank" rel="noopener noreferrer" class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">leptum-app</h3><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5"><path d="M17 7l-10 10"></path><path d="M8 7l9 0l0 9"></path></svg></div></a></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><a href="https://linked-notes-orpin.vercel.app" target="_blank" rel="noopener noreferrer" class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">linked-notes</h3><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5"><path d="M17 7l-10 10"></path><path d="M8 7l9 0l0 9"></path></svg></div></a></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><a href="https://mpeters.dev" target="_blank" rel="noopener noreferrer" class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">mpeters.dev</h3><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5"><path d="M17 7l-10 10"></path><path d="M8 7l9 0l0 9"></path></svg></div></a></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><a href="https://github.com/m5x5/pencilkit_excalidraw" target="_blank" rel="noopener noreferrer" class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">pencilkit-excalidraw</h3><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5"><path d="M17 7l-10 10"></path><path d="M8 7l9 0l0 9"></path></svg></div></a></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><div class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Recipe Planner Android</h3></div></div></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><a href="https://recipe-planner.mpeters.dev" target="_blank" rel="noopener noreferrer" class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">recipe-planner-mpeters-dev</h3><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5"><path d="M17 7l-10 10"></path><path d="M8 7l9 0l0 9"></path></svg></div></a></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><a href="https://school-bud-e-openrouter.vercel.app" target="_blank" rel="noopener noreferrer" class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">School Bud-E</h3><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5"><path d="M17 7l-10 10"></path><path d="M8 7l9 0l0 9"></path></svg></div></a></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><a href="https://solid-annotator-web.vercel.app" target="_blank" rel="noopener noreferrer" class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Solid Annotator</h3><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5"><path d="M17 7l-10 10"></path><path d="M8 7l9 0l0 9"></path></svg></div></a></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><a href="https://solid-app-gallery.mpeters.dev" target="_blank" rel="noopener noreferrer" class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Solid App Gallery</h3><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5"><path d="M17 7l-10 10"></path><path d="M8 7l9 0l0 9"></path></svg></div></a></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><div class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Solid Bookmarks Extension</h3></div></div></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><a href="https://solidcalendar-michael-peters-projects-6096d749.vercel.app" target="_blank" rel="noopener noreferrer" class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Solid Calendar</h3><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5"><path d="M17 7l-10 10"></path><path d="M8 7l9 0l0 9"></path></svg></div></a></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><a href="https://chores-solid.vercel.app/" target="_blank" rel="noopener noreferrer" class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Solid Chores</h3><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5"><path d="M17 7l-10 10"></path><path d="M8 7l9 0l0 9"></path></svg></div></a></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><div class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Solid Contacts Android</h3></div></div></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><a href="https://solid-git.mpeters.dev" target="_blank" rel="noopener noreferrer" class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Solid Git Viewer</h3><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5"><path d="M17 7l-10 10"></path><path d="M8 7l9 0l0 9"></path></svg></div></a></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><div class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Solid Matrix Archive</h3></div><p class="pt-1 text-base text-muted-foreground">Local dashboard for public Solid project conversations mirrored from Matrix.</p></div></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><div class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Solid MCP</h3></div></div></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><div class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Solid Projects</h3></div><p class="pt-1 text-base text-muted-foreground">Keep track of the projects you worked on. Store knowledge about them.</p></div></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><a href="https://solid-transcribe.vercel.app" target="_blank" rel="noopener noreferrer" class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Solid Transcribe</h3><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5"><path d="M17 7l-10 10"></path><path d="M8 7l9 0l0 9"></path></svg></div></a></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><a href="https://reiseplan-five.vercel.app" target="_blank" rel="noopener noreferrer" class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Solid Trip Planner</h3><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5"><path d="M17 7l-10 10"></path><path d="M8 7l9 0l0 9"></path></svg></div><p class="pt-1 text-base text-muted-foreground">Private Solid-based trip planner for manually creating, editing, sharing, and importing travel itineraries stored as RDF in the user's Solid Pod.</p></a></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><div class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">solid-bookmarks</h3></div></div></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><a href="https://studies.mpeters.dev" target="_blank" rel="noopener noreferrer" class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">studies-
1mpeters-dev</h3><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5"><path d="M17 7l-10 10"></path><path d="M8 7l9 0l0 9"></path></svg></div></a></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><div class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Superset Notes</h3></div><p class="pt-1 text-base text-muted-foreground">Take notes on your Book Tablet, these notes can be accessed across devices and are exportable in Excalidraw format.</p></div></li><li class="border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0"><div class="group block"><div class="flex items-start gap-2"><h3 class="text-lg font-medium group-hover:underline underline-offset-4 decoration-1">Switchly Android</h3></div><p class="pt-1 text-base text-muted-foreground">Fork of Switchly an App Blocker for Android. Extended by features to make it use Solid to Store Data.</p></div></li></ul></section></main></div><!--$--><!--/$--></div><footer class="bg-background-5 py-8 w-full shrink-0"><div class="container flex flex-col sm:flex-row gap-8 justify-between"><div class="flex flex-col gap-4"><nav aria-label="Footer navigation"><ul class="flex flex-wrap gap-x-4 gap-y-2"><li><a class="text-base text-foreground-3 hover:text-foreground-5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-700 rounded" href="/en-US/projects">Projects</a></li><li><a class="text-base text-foreground-3 hover:text-foreground-5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-700 rounded" href="/en-US/curriculum-vitae">Curriculum Vitae</a></li><li><a class="text-base text-foreground-3 hover:text-foreground-5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-700 rounded" href="/en-US/blog">Blog</a></li></ul></nav><p class="text-base text-foreground-3">© 2021-2026 Michael Peters. All rights reserved.</p></div><div class="flex flex-col gap-4 sm:items-end"><ul class="flex gap-3" aria-label="Social media"><li><a href="https://github.com/m5x5" target="_blank" rel="noopener noreferrer" aria-label="GitHub" class="text-foreground-3 hover:text-foreground-5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-700 rounded"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-brand-github h-5 w-5"><path d="M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5"></path></svg></a></li><li><a href="https://www.linkedin.com/in/michael-peters-3985a0223/" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn" class="text-foreground-3 hover:text-foreground-5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-700 rounded"><svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect width="4" height="12" x="2" y="9"></rect><circle cx="4" cy="4" r="2"></circle></svg></a></li><li><a href="https://twitter.com/m5x5p" target="_blank" rel="noopener noreferrer" aria-label="Twitter / X" class="text-foreground-3 hover:text-foreground-5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-700 rounded"><svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z"></path></svg></a></li></ul><div class="relative"><button class="flex items-center gap-1.5 text-sm border border-background-8 rounded-md px-3 py-1.5 font-medium hover:bg-background-5 transition-colors" aria-haspopup="listbox" aria-expanded="false">English<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-down transition-transform "><path d="M6 9l6 6l6 -6"></path></svg></button></div></div></div></footer></div><feedback-tracker adapter="ldn" inbox="https://pod.mpeters.dev/michael/feedback-inbox/" collect-email="" label="Send feedback" accent="#1d4ed8"><div slot="auth" style="font-size:13px;margin-bottom:8px;padding:8px 10px;border-radius:8px;background:rgba(0,0,0,0.04);border:1px solid rgba(0,0,0,0.08);display:flex;align-items:center;justify-content:space-between;gap:8px"><div style="display:flex;align-items:center;gap:6px;flex:1;min-width:0"><input type="url" placeholder="https://your-pod.example/" aria-label="Your Solid pod URL" style="flex:1;min-width:0;font:inherit;padding:4px 6px;border-radius:6px;border:1px solid rgba(0,0,0,0.15);background:transparent;color:inherit" value="https://pod.mpeters.dev"/><button type="button" style="background:none;border:1px solid currentColor;color:inherit;border-radius:6px;padding:4px 10px;cursor:pointer;font:inherit;white-space:nowrap">Sign in</button></div></div></feedback-tracker>
1<script src="/_next/static/immutable/chunks/3zp_c-659qx9t.js" id="_R_" async=""></script>
1<script>(self.__next_f=self.__next_f||[]).push([0])</script>
1<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/_next/static/immutable/chunks/205hv9zmmrokf.js\"],\"default\"]\n3:I[37457,[\"/_next/static/immutable/chunks/205hv9zmmrokf.js\"],\"default\"]\n6:I[97367,[\"/_next/static/immutable/chunks/205hv9zmmrokf.js\"],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[97367,[\"/_next/static/immutable/chunks/205hv9zmmrokf.js\"],\"ViewportBoundary\"]\nc:I[97367,[\"/_next/static/immutable/chunks/205hv9zmmrokf.js\"],\"MetadataBoundary\"]\ne:I[68027,[],\"default\",1]\n:HL[\"/_next/static/immutable/chunks/0_cv-tfovsghl.css\",\"style\"]\n:HL[\"/_next/static/immutable/media/5c285b27cdda1fe8-s.p.0lsanbtneewqp.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n9:X\n0:{\"P\":null,\"c\":[\"\",\"en-US\",\"blog\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[[\"lang\",\"en-US\",\"d\",[\"api\",\"groceries\",\"solid-auth-callback\",\"topic\"]],{\"children\":[\"blog\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4096]},\"$undefined\",\"$undefined\",4096]},\"$undefined\",\"$undefined\",4112]},\"$undefined\",\"$undefined\",4112],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/immutable/chunks/0_cv-tfovsghl.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/immutable/chunks/3yeqfopab74of.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/immutable/chunks/04zeyw5pv-8-f.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/immutable/chunks/2rfllyhawct-o.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$L4\"]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[\"$L5\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/immutable/chunks/2t8odc8wps1is.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]}
1,null,false,null]},null,false,null]},null,false,\"$9\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":false,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"x6LQ10HTsiwdWsrStr7sA\"}\nf:I[43880,[\"/_next/static/immutable/chunks/3yeqfopab74of.js\",\"/_next/static/immutable/chunks/04zeyw5pv-8-f.js\",\"/_next/static/immutable/chunks/2rfllyhawct-o.js\"],\"Analytics\"]\n10:I[22016,[\"/_next/static/immutable/chunks/3yeqfopab74of.js\",\"/_next/static/immutable/chunks/04zeyw5pv-8-f.js\",\"/_next/static/immutable/chunks/2rfllyhawct-o.js\",\"/_next/static/immutable/chunks/2t8odc8wps1is.js\"],\"\"]\n9:C\n4:[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dm_sans_efc253b3-module__w1i8Da__variable\",\"children\":[[\"$\",\"head\",null,{\"className\":\"\",\"children\":[[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"content\":\"#ffffff\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"content\":\"#09090b\",\"media\":\"(prefers-color-scheme: dark)\"}],[\"$\",\"link\",null,{\"rel\":\"http://www.w3.org/ns/ldp#inbox\",\"href\":\"https://pod.mpeters.dev/michael/feedback-inbox/\"}],[\"$\",\"$Lf\",null,{}]]}],[\"$\",\"body\",null,{\"children\":[[\"$\",\"a\",null,{\"href\":\"#main-content\",\"className\":\"fixed left-1/2 -translate-x-1/2 top-0 -translate-y-[200%] focus:translate-y-4 transition-transform z-20 px-4 py-2 border border-background-8 bg-surface rounded-full text-sm font-medium text-foreground-5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-700 focus-visible:ring-offset-2\",\"children\":\"Skip to content\"}],[\"$\",\"div\",null,{}],[\"$\",\"div\",null,{\"className\":\"flex flex-col min-h-screen\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex-1\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"footer\",null,{\"className\":\"bg-background-5 py-8 w-full shrink-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"container flex flex-col sm:flex-row gap-8 justify-between\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-4\",\"children\":[[\"$\",\"nav\",null,{\"aria-label\":\"Footer navigation\",\"children\":[\"$\",\"ul\",null,{\"className\":\"flex flex-wrap gap-x-4 gap-y-2\",\"children\":[[\"$\",\"li\",\"/en-US/projects\",{\"children\":[\"$\",\"$L10\",null,{\"href\":\"/en-US/projects\",\"className\":\"text-base text-foreground-3 hover:text-foreground-5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-700 rounded\",\"children\":\"Projects\"}]}],[\"$\",\"li\",\"/en-US/curriculum-vitae\",{\"children\":[\"$\",\"$L10\",null,{\"href\":\"/en-US/curriculum-vitae\",\"className\":\"text-base text-foreground-3 hover:text-foreground-5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-700 rounded\",\"children\":\"Curriculum Vitae\"}]}],[\"$\",\"li\",\"/en-US/blog\",{\"children\":[\"$\",\"$L10\",null,{\"href\":\"/en-US/blog\",\"className\":\"text-base text-foreground-3 hover:text-foreground-5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-700 rounded\",\"children\":\"Blog\"}]}]]}]}],[\"$\",\"p\",null,{\"className\":\"text-base text-foreground-3\",\"children\":\"© 2021-2026 Michael Peters. All rights reserved.\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-4 sm:items-end\",\"children\":[[\"$\",\"ul\",null,{\"className\":\"flex gap-3\",\"aria-label\":\"Social media\",\"children\":[[\"$\",\"li\",\"https://github.com/m5x5\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://github.com/m5x5\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"aria-label\":\"GitHub\",\"className\":\"text-foreground-3 hover:text-foreground-5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-700 rounded\",\"children\":[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\"
1:24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-brand-github h-5 w-5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5\"}],\"$undefined\"]}]}]}],[\"$\",\"li\",\"https://www.linkedin.com/in/michael-peters-3985a0223/\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://www.linkedin.com/in/michael-peters-3985a0223/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"aria-label\":\"LinkedIn\",\"className\":\"text-foreground-3 hover:text-foreground-5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-700 rounded\",\"children\":\"$L11\"}]}],\"$L12\"]}],\"$L13\"]}]]}]}]]}],\"$L14\",false]}]]}]\n15:I[12388,[\"/_next/static/immutable/chunks/3yeqfopab74of.js\",\"/_next/static/immutable/chunks/04zeyw5pv-8-f.js\",\"/_next/static/immutable/chunks/2rfllyhawct-o.js\"],\"default\"]\n16:I[4942,[\"/_next/static/immutable/chunks/3yeqfopab74of.js\",\"/_next/static/immutable/chunks/04zeyw5pv-8-f.js\",\"/_next/static/immutable/chunks/2rfllyhawct-o.js\"],\"default\"]\n11:[\"$\",\"svg\",null,{\"className\":\"h-5 w-5\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"24\",\"height\":\"24\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z\"}],[\"$\",\"rect\",null,{\"width\":\"4\",\"height\":\"12\",\"x\":\"2\",\"y\":\"9\"}],[\"$\",\"circle\",null,{\"cx\":\"4\",\"cy\":\"4\",\"r\":\"2\"}]]}]\n12:[\"$\",\"li\",\"https://twitter.com/m5x5p\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://twitter.com/m5x5p\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"aria-label\":\"Twitter / X\",\"className\":\"text-foreground-3 hover:text-foreground-5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-700 rounded\",\"children\":[\"$\",\"svg\",null,{\"className\":\"h-5 w-5\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"24\",\"height\":\"24\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"children\":[\"$\",\"path\",null,{\"d\":\"M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z\"}]}]}]}]\n13:[\"$\",\"$L15\",null,{}]\n14:[\"$\",\"$L16\",null,{}]\nb:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n17:I[27201,[\"/_next/static/immutable/chunks/205hv9zmmrokf.js\"],\"IconMark\"]\n8:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"Blog - Michael Peters\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A blog about web development, optimization and automation of daily tasks.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"keywords\",\"content\":\"Web Development,Optimization,Automation,Blog,Web Developer,Michael Peters\"}],[\"$\",\"meta\",\"3\",{\"property\":\"og:title\",\"content\":\"Blog - Michael Peters\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:description\",\"content\":\"A blog about web development, optimization and automation of daily tasks.\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:image\",\"content\":\"https://mpeters.dev/thumbnails/og-image-en.png\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:image:type\",\"content\":\"image/png\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"8\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"9\",{\"name\":\"twitter:title\",\"content\":\"Blog - Michael Peters\"}],[\"$\",\"meta\",\"10\",{\"name\":\"twitter:description\",\"content\":\"A blog about web development, optimization and automation of daily tasks.\"}],[\"$\",\"meta\",\"11\",{\"name\":\"twitter:image\",\"content\":\"https://mpeters.dev/thumbn
1ails/og-image-en.png\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:image:type\",\"content\":\"image/png\"}],[\"$\",\"link\",\"13\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.3fpu2ql9ns1a0.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$L17\",\"14\",{}]]\n18:I[5500,[\"/_next/static/immutable/chunks/3yeqfopab74of.js\",\"/_next/static/immutable/chunks/04zeyw5pv-8-f.js\",\"/_next/static/immutable/chunks/2rfllyhawct-o.js\",\"/_next/static/immutable/chunks/2t8odc8wps1is.js\"],\"Image\"]\n19:I[67920,[\"/_next/static/immutable/chunks/3yeqfopab74of.js\",\"/_next/static/immutable/chunks/04zeyw5pv-8-f.js\",\"/_next/static/immutable/chunks/2rfllyhawct-o.js\",\"/_next/static/immutable/chunks/2t8odc8wps1is.js\"],\"default\"]\n1a:I[60318,[\"/_next/static/immutable/chunks/3yeqfopab74of.js\",\"/_next/static/immutable/chunks/04zeyw5pv-8-f.js\",\"/_next/static/immutable/chunks/2rfllyhawct-o.js\",\"/_next/static/immutable/chunks/2t8odc8wps1is.js\"],\"default\"]\n5:[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"BreadcrumbList\\\",\\\"itemListElement\\\":[{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":1,\\\"name\\\":\\\"Michael Peters\\\",\\\"item\\\":\\\"https://mpeters.dev\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":2,\\\"name\\\":\\\"Blog\\\",\\\"item\\\":\\\"https://mpeters.dev/en-US/blog\\\"}]}\"}}],[\"$\",\"div\",null,{\"className\":\"flex flex-col relative z-10\",\"children\":[[\"$\",\"header\",null,{\"className\":\"bg-page text-foreground-4 z-10 w-full\",\"children\":[\"$\",\"div\",null,{\"className\":\"container\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-stretch justify-between mx border-purple-60 h-16 mt-2\",\"children\":[[\"$\",\"$L10\",null,{\"href\":\"/en-US\",\"aria-label\":\"Open homepage\",\"className\":\"items-center p-3 -ml-3 font-semibold text-lg self-center flex flex-row justify-center align-items-center gap-3 focus-visible:ring-2 focus-visible:ring-blue-700 rounded-full\",\"children\":[[\"$\",\"$L18\",null,{\"src\":\"/avatar.webp\",\"alt\":\"\",\"fetchPriority\":\"high\",\"width\":40,\"height\":40,\"className\":\"rounded-full mx-auto sm:aspect-square\"}],\"Michael Peters\"]}],[\"$\",\"div\",null,{\"className\":\"sm:flex justify-center items-stretch hidden font-semibold\",\"children\":[\"$\",\"$L19\",null,{\"links\":[{\"name\":\"Projects\",\"path\":\"/en-US/projects\"},{\"name\":\"Curriculum Vitae\",\"path\":\"/en-US/curriculum-vitae\"},{\"name\":\"Blog\",\"path\":\"/en-US/blog\"}]}]}],[\"$\",\"$L1a\",null,{\"links\":\"$5:1:props:children:0:props:children:props:children:props:children:1:props:children:props:links\",\"dictionary\":{\"navigation\":{\"skills\":\"Skills\",\"projects\":\"Projects\",\"contact\":\"Contact\",\"blog\":\"Blog\",\"cv\":\"Curriculum Vitae\"},\"home\":{\"title\":\"Building web based products and websites that users love to use\",\"subtitle\":\"Web Developer\",\"description\":\"I create pixel-perfect websites and I am fascinated by optimization and automation.\",\"cta\":\"Let's Work Together\",\"cta2\":\"Copy Email\",\"metadata\":{\"title\":\"Michael Peters - Web Developer Portfolio\",\"description\":\"I'm a web developer with a passion for optimization and automation. I enjoy creating clean and efficient solutions.\"}},\"skills\":{\"title\":\"My Skills\",\"description\":\"I'm able to assist you throughout the entire process of creating a website. From the design to the deployment.\",\"years\":\"years\",\"present\":\"Present\"},\"projects\":{\"title\":\"My recent projects\",\"description\":\"\",\"metadata\":{\"title\":\"Open Source Projects - Michael Peters\",\"description\":\"A collection of open source tools I've built to improve the developer experience.\"},\"openSource\":{\"title\":\"Open Source Projects\",\"description\":\"Tools I've built and published for the developer community.\",\"viewSource\":\"View Source\",\"viewProject\":\"View Project\"}},\"blog\":{\"metadata\":{\"title\":\"Blog - Michael Peters\",\"description\":\"A blog about web development, optimization and automation of daily tasks.\",\"keywords\":[\"Web Development\",\"Optimization\",\"Automation\",\"Blog\",\"Web Developer\",\"Michael Peters\"]},\"title\":\"Welcome to my content collection\",\"description\":\"A blog about web development, optimization and automation of daily tasks.\",\"cta\":\"Open most recent article\",\"recentArticles\":\"Recent Articles\",\"research\":{\"kicker\":\"Research\",\"statement\":\"Exploring how thoughtful software can support everyday life\",\"
1intro\":\"I research and build small tools in four areas: wellbeing, personal productivity, household, and digital experiences. Below is the work so far â essays, prototypes, and software you can use today.\",\"types\":{\"essay\":\"Essay\",\"project\":\"Project\",\"prototype\":\"Prototype\"},\"areas\":{\"wellbeing\":{\"title\":\"Wellbeing\",\"description\":\"How can software support healthier habits â posture, nutrition, daily rhythms â without demanding constant attention?\"},\"productivity\":{\"title\":\"Personal Productivity\",\"description\":\"Tracking tasks, routines and goals with data you own. Productivity systems that serve the person, not the metric.\"},\"household\":{\"title\":\"Household\",\"description\":\"Groceries, meals and the logistics of running a home. Small tools that reduce friction in domestic life.\"},\"digital\":{\"title\":\"Digital Experiences\",\"description\":\"What makes software feel good to use â developer tools, browsers, and experiments in interaction.\"}}}},\"contact\":{\"title\":\"Contact me\",\"description\":\"Are you interested in a collaboration? Feel free to contact me.\",\"name\":\"Name\",\"namePlaceholder\":\"Your name\",\"email\":\"Email\",\"emailPlaceholder\":\"[email protected]\",\"message\":\"Message\",\"messagePlaceholder\":\"Tell me about your project...\",\"cta\":\"Send message\",\"sending\":\"Sending...\",\"success\":\"Message sent! I'll get back to you soon.\",\"error\":\"Something went wrong. Please try again or reach out via social media.\"},\"curriculumVitae\":{\"title\":\"About\",\"experience\":\"Experience\"},\"faq\":{\"title\":\"Frequently Asked Questions\",\"question\":\"Do you also know how to do ...?\",\"answer\":\"It might be. Feel free to search for the technology in the search box below. I tried to list all the technologies I have worked with in the past and describe my experience with them.\"},\"footer\":{\"language\":\"Language:\",\"english\":\"English\",\"german\":\"Deutsch\",\"copyright\":\"© 2021-2025 Michael Peters. All rights reserved.\"},\"common\":{\"homepage\":\"Open homepage\",\"closeMenu\":\"Close Menu\",\"openMenu\":\"Open Menu\",\"heroSection\":\"Hero Section\",\"projectsSection\":\"Projects Section\",\"technologiesSection\":\"Technologies Section\",\"blogSection\":\"Blog Section\",\"testimonialsSection\":\"Section with testimonials\",\"mottoSection\":\"Motto Section\",\"recentArticles\":\"Recent Articles\",\"frontendExpert\":\"Frontend Development Expert\",\"nodejsExpert\":\"Experienced in Node.js Development\",\"passionateDeveloper\":\"Passionate Web Developer with a strong background in Frontend Development. Committed to growing as a developer every day.\"},\"search\":{\"searchPlaceholder\":\"Search for a specific technology\",\"open\":\"Open\",\"pagination\":{\"firstPage\":\"First page\",\"previousPage\":\"Previous page\",\"nextPage\":\"Next page\",\"lastPage\":\"Last page\",\"page\":\"Page\"}},\"comparison\":{\"exitFullscreen\":\"Exit fullscreen (Esc)\",\"openFullscreen\":\"Open in fullscreen\"}}}]]}]}]}],\"$L1b\"]}]]\n1b:[\"$\",\"main\",null,{\"className\":\"flex-1 container\",\"children\":[[\"$\",\"section\",null,{\"className\":\"max-w-3xl pt-16 pb-14 md:pt-24 md:pb-20\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-xs uppercase tracking-[0.2em] text-muted-foreground pb-5\",\"children\":\"Research\"}],[\"$\",\"h1\",null,{\"className\":\"text-4xl font-medium leading-tight xl:text-5xl text-balance\",\"children\":\"Exploring how thoughtful software can support everyday life\"}],[\"$\",\"p\",null,{\"className\":\"pt-6 text-lg text-muted-foreground leading-relaxed\",\"children\":\"I research and build small tools in four areas: wellbeing, personal productivity, household, and digital experiences. Below is the work so far â essays, prototypes, and software you can use today.\"}]]}],[[\"$\",\"section\",\"https://pod.mpeters.dev/michael/public/vocab/focus.ttl#data-ownership\",{\"aria-label\":\"Data ownership\",\"className\":\"border-t border-border py-10 md:py-14 grid gap-6 md:grid-cols-[minmax(0,300px)_minmax(0,1fr)] md:gap-16\",\"children\":[[\"$\",\"div\",null,{\"children\":[\"$\",\"h2\",null,{\"className\":\"text-2xl font-medium tracking-tight\",\"children\":\"Data ownership\"}]}],[\"$\",\"ul\",null,{\"className\":\"flex flex-col\",\"children\":[[\"$\",\"li\",\"urn:asana:project:solid-checklists\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"solid-checklists\"}],null]}],[\"$\",\"p\",null,{\"className\":\"pt-1 text-base text-muted-foreground\",\"children\":\"Sign in with a Solid pod, discover your websites through your type indexes and keep an editable production readiness checklist for each one, stored in your own pod.\"}],[\"$\",\"p\",null,{\"className\":\"pt-2 text-xs uppercase tracking-[0.15em] text-muted-foreground
1/80\",\"children\":\"Developer Tools\"}]]}]}],[\"$\",\"li\",\"urn:asana:project:solidos\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://github.com/solid/solidos\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"solidos\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":18,\"height\":18,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M17 7l-10 10\"}],[\"$\",\"path\",\"svg-1\",{\"d\":\"M8 7l9 0l0 9\"}],\"$undefined\"]}]]}],null,[\"$\",\"p\",null,{\"className\":\"pt-2 text-xs uppercase tracking-[0.15em] text-muted-foreground/80\",\"children\":\"Developer Tools\"}]]}]}]]}]]}],[\"$\",\"section\",\"other\",{\"aria-label\":\"Other\",\"className\":\"border-t border-border py-10 md:py-14 grid gap-6 md:grid-cols-[minmax(0,300px)_minmax(0,1fr)] md:gap-16\",\"children\":[[\"$\",\"div\",null,{\"children\":[\"$\",\"h2\",null,{\"className\":\"text-2xl font-medium tracking-tight\",\"children\":\"Other\"}]}],[\"$\",\"ul\",null,{\"className\":\"flex flex-col\",\"children\":[[\"$\",\"li\",\"urn:asana:project:android-solid-services\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Android-Solid-Services\"}],null]}],null,null]}]}],[\"$\",\"li\",\"urn:asana:project:distraction-blocker\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"group block\",\"children\":\"$L1c\"}]}],\"$L1d\",\"$L1e\",\"$L1f\",\"$L20\",\"$L21\",\"$L22\",\"$L23\",\"$L24\",\"$L25\",\"$L26\",\"$L27\",\"$L28\",\"$L29\",\"$L2a\",\"$L2b\",\"$L2c\",\"$L2d\",\"$L2e\",\"$L2f\",\"$L30\",\"$L31\",\"$L32\",\"$L33\",\"$L34\",\"$L35\",\"$L36\",\"$L37\",\"$L38\"]}]]}]]]}]\n1c:[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Distraction Blocker\"}],null]}],[\"$\",\"p\",null,{\"className\":\"pt-1 text-base text-muted-foreground\",\"children\":\"Blocks windows on desktop devices, to let you focus on what matters. Focus times and blocks can be configured in the app.\"}],null]\n1d:[\"$\",\"li\",\"urn:asana:project:feedback-tracker\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://feedbacktracker.vercel.app\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Feedback Tracker\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":18,\"height\":18,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M17 7l-10 10\"}],[\"$\",\"path\",\"svg-1\",{\"d\":\"M8 7l9 0l0 9\"}],\"$undefined\"]}]]}],[\"$\",\"p\",null,{\"className\":\"pt-1 text-base text-muted-foreground\",\"children\":\"Collect feedback from users, without requiring them to switch contexts. Show them the status of their feedback. Inform them once it's processed.\"}],null]}]}]\n1e:[\"$\",\"li\",\"urn:asana:project:focus\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://github.com/Sameerkash/Focus\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"focus\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":18,\"height\"
1:18,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M17 7l-10 10\"}],[\"$\",\"path\",\"svg-1\",{\"d\":\"M8 7l9 0l0 9\"}],\"$undefined\"]}]]}],null,null]}]}]\n1f:[\"$\",\"li\",\"urn:asana:project:einkauf-app\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Groceries Android\"}],null]}],[\"$\",\"p\",null,{\"className\":\"pt-1 text-base text-muted-foreground\",\"children\":\"Remember what you bought, where you bought it and how much it cost. Learn from your past experience by analyzing this information and writing reviews on your purchases. Understand how prices change, and if a brand lives up to actual product quality.\"}],null]}]}]\n20:[\"$\",\"li\",\"urn:asana:project:home-monitor\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Home Monitor Android\"}],null]}],[\"$\",\"p\",null,{\"className\":\"pt-1 text-base text-muted-foreground\",\"children\":\"Keep an inventory of your home, see how rooms and shelves change overtime to recognize patterns. See todos by room, to structurally finish todos at home, without switching rooms unnecessarily\"}],null]}]}]\n21:[\"$\",\"li\",\"urn:asana:project:leptum\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Leptum\"}],null]}],null,null]}]}]\n22:[\"$\",\"li\",\"urn:asana:project:leptum-app\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://github.com/m5x5/leptum-app\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"leptum-app\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":18,\"height\":18,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M17 7l-10 10\"}],[\"$\",\"path\",\"svg-1\",{\"d\":\"M8 7l9 0l0 9\"}],\"$undefined\"]}]]}],null,null]}]}]\n23:[\"$\",\"li\",\"urn:asana:project:linked-notes\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://linked-notes-orpin.vercel.app\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"linked-notes\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":18,\"height\"
1:18,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M17 7l-10 10\"}],[\"$\",\"path\",\"svg-1\",{\"d\":\"M8 7l9 0l0 9\"}],\"$undefined\"]}]]}],null,null]}]}]\n24:[\"$\",\"li\",\"urn:asana:project:mpeters-dev\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://mpeters.dev\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"mpeters.dev\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":18,\"height\":18,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M17 7l-10 10\"}],[\"$\",\"path\",\"svg-1\",{\"d\":\"M8 7l9 0l0 9\"}],\"$undefined\"]}]]}],null,null]}]}]\n25:[\"$\",\"li\",\"urn:asana:project:pencilkit-excalidraw\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://github.com/m5x5/pencilkit_excalidraw\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"pencilkit-excalidraw\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":18,\"height\":18,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M17 7l-10 10\"}],[\"$\",\"path\",\"svg-1\",{\"d\":\"M8 7l9 0l0 9\"}],\"$undefined\"]}]]}],null,null]}]}]\n26:[\"$\",\"li\",\"urn:asana:project:recipe-planner-app\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Recipe Planner Android\"}],null]}],null,null]}]}]\n27:[\"$\",\"li\",\"urn:asana:project:recipe-planner-mpeters-dev\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://recipe-planner.mpeters.dev\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"recipe-planner-mpeters-dev\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":18,\"height\":18,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M17 7l-10 10\"}],[\"$\",\"path\",\"svg-1\",{\"d\":\"M8 7l9 0l0 9\"}],\"$undefined\"]}]]}],null,null]}]}]\n28:[\"$\",\"li\",\"urn:asana:project:school-bud-e-openrouter\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://school-bud-e-openrouter.vercel.app\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"School Bud-E\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":18,\"height\"
1:18,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M17 7l-10 10\"}],[\"$\",\"path\",\"svg-1\",{\"d\":\"M8 7l9 0l0 9\"}],\"$undefined\"]}]]}],null,null]}]}]\n29:[\"$\",\"li\",\"urn:asana:project:solid-annotator\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://solid-annotator-web.vercel.app\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Solid Annotator\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":18,\"height\":18,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M17 7l-10 10\"}],[\"$\",\"path\",\"svg-1\",{\"d\":\"M8 7l9 0l0 9\"}],\"$undefined\"]}]]}],null,null]}]}]\n2a:[\"$\",\"li\",\"urn:asana:project:solid-app-gallery\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://solid-app-gallery.mpeters.dev\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Solid App Gallery\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":18,\"height\":18,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M17 7l-10 10\"}],[\"$\",\"path\",\"svg-1\",{\"d\":\"M8 7l9 0l0 9\"}],\"$undefined\"]}]]}],null,null]}]}]\n2b:[\"$\",\"li\",\"urn:asana:project:solid-bookmarks-extension\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Solid Bookmarks Extension\"}],null]}],null,null]}]}]\n2c:[\"$\",\"li\",\"urn:asana:project:solidcalendar\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://solidcalendar-michael-peters-projects-6096d749.vercel.app\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Solid Calendar\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":18,\"height\":18,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M17 7l-10 10\"}],[\"$\",\"path\",\"svg-1\",{\"d\":\"M8 7l9 0l0 9\"}],\"$undefined\"]}]]}],null,null]}]}]\n2d:[\"$\",\"li\",\"urn:asana:project:chores-solid\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://chores-solid.vercel.app/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Solid Chores\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":18,\"height\"
1:18,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M17 7l-10 10\"}],[\"$\",\"path\",\"svg-1\",{\"d\":\"M8 7l9 0l0 9\"}],\"$undefined\"]}]]}],null,null]}]}]\n2e:[\"$\",\"li\",\"urn:asana:project:solid-contacts\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Solid Contacts Android\"}],null]}],null,null]}]}]\n2f:[\"$\",\"li\",\"urn:asana:project:solid-git-viewer\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://solid-git.mpeters.dev\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Solid Git Viewer\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":18,\"height\":18,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M17 7l-10 10\"}],[\"$\",\"path\",\"svg-1\",{\"d\":\"M8 7l9 0l0 9\"}],\"$undefined\"]}]]}],null,null]}]}]\n30:[\"$\",\"li\",\"urn:asana:project:solid-matrix-archive\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Solid Matrix Archive\"}],null]}],[\"$\",\"p\",null,{\"className\":\"pt-1 text-base text-muted-foreground\",\"children\":\"Local dashboard for public Solid project conversations mirrored from Matrix.\"}],null]}]}]\n31:[\"$\",\"li\",\"urn:asana:project:solid-mcp\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Solid MCP\"}],null]}],null,null]}]}]\n32:[\"$\",\"li\",\"urn:asana:project:solid-projects\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Solid Projects\"}],null]}],[\"$\",\"p\",null,{\"className\":\"pt-1 text-base text-muted-foreground\",\"children\":\"Keep track of the projects you worked on. Store knowledge about them.\"}],null]}]}]\n33:[\"$\",\"li\",\"urn:asana:project:solid-transcribe\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://solid-transcribe.vercel.app\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Solid Transcribe\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":18,\"height\"
1:18,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M17 7l-10 10\"}],[\"$\",\"path\",\"svg-1\",{\"d\":\"M8 7l9 0l0 9\"}],\"$undefined\"]}]]}],null,null]}]}]\n34:[\"$\",\"li\",\"urn:asana:project:reiseplan\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://reiseplan-five.vercel.app\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Solid Trip Planner\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":18,\"height\":18,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M17 7l-10 10\"}],[\"$\",\"path\",\"svg-1\",{\"d\":\"M8 7l9 0l0 9\"}],\"$undefined\"]}]]}],[\"$\",\"p\",null,{\"className\":\"pt-1 text-base text-muted-foreground\",\"children\":\"Private Solid-based trip planner for manually creating, editing, sharing, and importing travel itineraries stored as RDF in the user's Solid Pod.\"}],null]}]}]\n35:[\"$\",\"li\",\"urn:asana:project:solid-bookmarks\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"solid-bookmarks\"}],null]}],null,null]}]}]\n36:[\"$\",\"li\",\"urn:asana:project:studies-mpeters-dev\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://studies.mpeters.dev\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"studies-mpeters-dev\"}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":18,\"height\":18,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":1.5,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"tabler-icon tabler-icon-arrow-up-right mt-0.5 shrink-0 text-muted-foreground transition group-hover:-translate-y-0.5 group-hover:translate-x-0.5\",\"children\":[\"$undefined\",[\"$\",\"path\",\"svg-0\",{\"d\":\"M17 7l-10 10\"}],[\"$\",\"path\",\"svg-1\",{\"d\":\"M8 7l9 0l0 9\"}],\"$undefined\"]}]]}],null,null]}]}]\n37:[\"$\",\"li\",\"urn:asana:project:superset-notes\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Superset Notes\"}],null]}],[\"$\",\"p\",null,{\"className\":\"pt-1 text-base text-muted-foreground\",\"children\":\"Take notes on your Book Tablet, these notes can be accessed across devices and are exportable in Excalidraw format.\"}],null]}]}]\n38:[\"$\",\"li\",\"urn:asana:project:switchly-public\",{\"className\":\"border-b border-border/60 last:border-b-0 py-5 first:pt-0 last:pb-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"group block\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-start gap-2\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"text-lg font-medium group-hover:underline underline-offset-4 decoration-1\",\"children\":\"Switchly Android\"}],null]}],[\"$\",\"p\",null,{\"className\":\"pt-1 text-base text-muted-foreground\",\"children\":\"Fork of Switchly an App Blocker for Android. Extended by features to make it use Solid to Store Data.\"}],null]}]}]\n"])</script>
1</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.