# Matt Waler > I'm Matt Waler, a web and iOS developer from Ohio who's been building stuff since 2016. I like simple tools, fast sites, and apps that do one thing well. When I'm not building something, I'm most likely on a tennis court or hanging out with my wife and our french bulldog, Klaus. ## Blog posts - [Changing my crosshair](https://mattwaler.com/blog/changing-my-crosshair): My friends gave me endless grief for constantly tweaking my Counter-Strike crosshair. Turns out that habit was the perfect training for a career in web development. - [Using GoatCounter with Astro's ClientRouter](https://mattwaler.com/blog/goatcounter-with-astro-client-router): GoatCounter only counts the first page of a visit when Astro's ClientRouter handles navigation. Here's the three-line fix, and why the referrer needs blanking too. - [Fixing Safari's toolbar flash with Astro's ClientRouter](https://mattwaler.com/blog/safari-view-transitions-astro-client-router): Safari repaints the white page background under its toolbars during view transitions. Here's how I opted Safari out of view transitions while keeping Astro's client-side navigation. - [My Life Systems](https://mattwaler.com/blog/my-life-systems): A detailed breakdown of the five tools I use to manage tasks, chores, plans, and ideas. Each one has exactly one job, and that's what keeps me sane. - [I Ditched 7 Mac Utilities for Vorssaint and Spotlight](https://mattwaler.com/blog/ditched-7-mac-utilities-for-vorssaint-and-spotlight): How I swapped a pile of menu bar applications for Vorssaint and Spotlight, and why Spotlight is still missing a few things that might send me back to Raycast. - [Using Lit to create cross-language components](https://mattwaler.com/blog/using-lit-cross-language-components): On projects that mix server-side and client-side templating languages, Lit custom elements give you one component that works in every one of them. - [Dumb Doesn't Break](https://mattwaler.com/blog/dumb-doesnt-break): My take on how every "smart" product is a future headache, and the quiet superpower of choosing the dumbest things that work 100% of the time. - [AI in Development: the Worst Mentor, the Best Mentee](https://mattwaler.com/blog/ai-in-development-worst-mentor-best-mentee): My personal opinions on how we should be leveraging AI in development to promote individual growth and prevent vibe-coded catastrophes. - [Container Query Typography Systems](https://mattwaler.com/blog/container-query-typography-systems): With the adoption of container queries in all browsers, it's time to use them to fix typography systems. - [Simplicity in Agency Development](https://mattwaler.com/blog/simplicity-in-agency-development): Keeping code simple, scoped, and isolated to single files makes it easy to share pieces across client projects and speeds up development significantly. - [Lazy Loading Blurred Images in Astro](https://mattwaler.com/blog/lazy-loading-blurred-images-astro): How to create a lazy blur-up image effect on your images in an Astro project. - [Using Tailwind CSS with Lit and HTML Custom Elements](https://mattwaler.com/blog/using-tailwind-with-lit-html-custom-elements): In order to use tailwind with lit and custom html elements, you need to disable the shadow dom. Here's how you do that! ## iPhone apps - [Repeaters](https://mattwaler.com/repeaters): A free iOS app for recurring tasks and chores, with reminders and completion history. - [Intervals](https://mattwaler.com/intervals): A free, no-fuss interval timer for workouts. ## Work - [Projects](https://mattwaler.com/projects): Websites and iOS apps Matt has built since 2016. - [Freelance web development](https://mattwaler.com/freelance-web-development): Fixed-price CMS-based and static websites. - [Freelance mobile app development](https://mattwaler.com/freelance-mobile-application-development): Fixed-price native iOS and cross-platform apps. - [Contact](https://mattwaler.com/contact): Get in touch about a project. ## About this site - [AI disclosure](https://mattwaler.com/ai-disclosure): How AI is used on this site, from app screenshots and blog drafts to structured data. - [Privacy policy](https://mattwaler.com/privacy-policy): No cookies, anonymous page counts with GoatCounter, and how contact form messages are handled.