# Jimmy Guzman Moreno > Jimmy Guzman Moreno's blogfolio — exploring software engineering, scalable systems, and developer experience. ## Pages - [Home](https://jimmy.codes/index.md): Personal introduction and site navigation - [About](https://jimmy.codes/about.md): Background, engineering wins, and career story - [Uses](https://jimmy.codes/uses.md): Tech stack, tools, and daily setup ## Blog - [Blog](https://jimmy.codes/blog.md): Full list of all posts - [Making your Astro site agent-friendly](https://jimmy.codes/blog/making-astro-site-agent-friendly.md): How to add /llms.txt, per-page Markdown endpoints, and content-negotiation redirects so AI agents and LLMs can read your Astro site cleanly. - [Leaky Completion Semantics](https://jimmy.codes/blog/leaky-completion-semantics.md): When a function's return or throw behavior encodes hidden policy decisions, callers inherit rules they never opted into. - [Schema-Driven REST APIs in TypeScript](https://jimmy.codes/blog/schema-driven-rest-apis-in-typescript.md): Schema-driven REST APIs in TypeScript: typed errors, explicit dependencies, and OpenAPI generated from the same contract. - [Per-Page CSS in Tailwind v4](https://jimmy.codes/blog/per-page-css-tailwind-v4.md): How to keep heavy, page-specific utility CSS out of your shared bundle with Tailwind v4. - [Default Values Are Silent Failures](https://jimmy.codes/blog/default-values-are-silent-failures.md): Why using default values can lead to hidden bugs and how to avoid them. - [Prevent Regressions, Allow Improvement](https://jimmy.codes/blog/prevent-regressions-allow-improvement.md): How to prevent regressions in your codebase without blocking incremental improvements. - [Auto Apply “Suggest Canonical Classes” in Tailwind (VS Code)](https://jimmy.codes/blog/auto-apply-suggested-tailwind-canonical-classes.md): Stop manually updating Tailwind classes. Learn how to use the official @tailwindcss/upgrade CLI to automatically convert your code to canonical syntax with a single command. - [Prevent TypeScript from Inferring](https://jimmy.codes/blog/prevent-typescript-from-inferring.md): How to use TypeScript's NoInfer utility to control type inference and keep your generics predictable. - [Splitting Pentax 17 Film Scans: A Technical Deep Dive](https://jimmy.codes/blog/splitting-pentax-17-film-scans.md): A deep dive into the technical process of automatically splitting and optimizing Pentax 17 film scans using Node.js and Sharp. - [TypeScript: Get the Element Type of an Array Property Safely](https://jimmy.codes/blog/ts-array-element-type.md): Extract the type of an element inside an array property, even when the property is optional. - [Accessibility Meets Analytics](https://jimmy.codes/blog/a11y-meets-analytics.md): How to track clicks using accessible names to make analytics stable, meaningful, and framework-agnostic. - [TIL - Create Clickable Links in Terminal Output](https://jimmy.codes/blog/create-clickable-links-in-terminal.md): Today I learned you can make terminal output clickable using OSC 8 escape codes instead of forcing users to copy-paste URLs and file paths. - [View Transitions in Astro with CSS](https://jimmy.codes/blog/view-transitions-in-astro-with-css.md): How I added smooth page-to-page transitions in Astro using the View Transitions API. No router, no JavaScript. - [GitHub-Style Hover Links in Astro with rehype-autolink-headings](https://jimmy.codes/blog/github-style-heading-links-in-astro.md): Add GitHub-style hover link icons to Astro Markdown headings using rehype-autolink-headings, hastscript, and Tailwind CSS for better navigation and shareable sections. - [TypeScript TS7053: “Element implicitly has an 'any' type” (Fix)](https://jimmy.codes/blog/no-implicit-any-type-string-index-error.md): Learn why TypeScript throws TS7053 (“Element implicitly has an 'any' type”) and how to fix it using keyof, type guards, or index signatures. - [Fix Knip False Positives with Tailwind v4](https://jimmy.codes/blog/fix-knip-false-positives-tailwindcss-v4.md): Learn how to configure Knip to work with TailwindCSS v4's new @plugin and @import directives using custom compilers. Eliminate false positives and keep your dependency reports clean. - [How I Originally Built This Site](https://jimmy.codes/blog/how-i-built-simple-blogfolio.md): An overview of how jimmy.codes was built with modern technologies and services. ## Optional - [All tags](https://jimmy.codes/blog/tags.md): Browse posts by tag - [RSS feed](https://jimmy.codes/blog/rss.xml): Syndication feed with post metadata