56,966 blogs · [ { "id": "01a0879f-1ed5-7017-99a1-84f5e180f058", "title": "Founding a GmbH in Germany", "url": "https://www.manuelsanchezdev.com/blog/founding-a-gmbh-in-germany-steps-and-costs/", "published_at": "2026-08-15T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e184b675", "title": "Game Engines and Ethics: Unreal, Unity & Godot Controversies Explained", "url": "https://www.manuelsanchezdev.com/blog/game-engines-ethics-unreal-unity-godot/", "published_at": "2026-04-07T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e261fcdf", "title": "Steam Deck in Godot Workflow: From Manual Testing to a Fast SSH with rsync Setup", "url": "https://www.manuelsanchezdev.com/blog/steam-deck-godot-workflow-local-testing-ssh/", "published_at": "2026-03-28T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e2bc4acb", "title": "How a YubiKey Transformed My Security Practice: A Developer's Complete Setup Guide", "url": "https://www.manuelsanchezdev.com/blog/yubikey-gpg-ssh-git-signing-fido2-guide/", "published_at": "2026-03-17T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e2f1f11c", "title": "Systems Thinking in Game Design: How Loops Create Experience", "url": "https://www.manuelsanchezdev.com/blog/systems-thinking-game-design-loops-experience/", "published_at": "2026-02-16T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e3579322", "title": "Recap 2025", "url": "https://www.manuelsanchezdev.com/blog/recap-2025/", "published_at": "2025-12-26T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e44f9b61", "title": "Tailwind CSS: Why It Works for Some Projects — And Not for Others", "url": "https://www.manuelsanchezdev.com/blog/tailwind-css-opinion/", "published_at": "2025-12-14T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e4f472f0", "title": "How to Build a Raspberry Pi Home Server with Tailscale VPN and Fritz!Box", "url": "https://www.manuelsanchezdev.com/blog/raspberry-pi-home-server-setup-tailscale/", "published_at": "2025-12-07T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e52ef347", "title": "From Singletons to Services in Godot: Clean Architecture for The Runic Edda", "url": "https://www.manuelsanchezdev.com/blog/godot-singletons-to-service-architecture-the-runic-edda/", "published_at": "2025-12-01T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e5f8e767", "title": "CSS Typed Arithmetic: An Introduction to Some Math-Powered CSS", "url": "https://www.manuelsanchezdev.com/blog/css-typed-arithmetic-guide/", "published_at": "2025-11-22T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e66b6882", "title": "Compound Components Pattern: React and Svelte Examples", "url": "https://www.manuelsanchezdev.com/blog/compound-components-pattern-svelte-react-api/", "published_at": "2025-10-03T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e6a2e8ad", "title": "It is time to abandon Vercel and Next.js", "url": "https://www.manuelsanchezdev.com/blog/vercel-support-israel-user-exodus/", "published_at": "2025-10-01T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e6cc5ac2", "title": "Godot 4 Camera Switcher: Smooth Camera Transitions for Cutscenes", "url": "https://www.manuelsanchezdev.com/blog/godot-camera-switcher/", "published_at": "2025-09-29T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e76b8544", "title": "Skew Protection in Modern Web Development: Technical Implementation and Strategic Implications", "url": "https://www.manuelsanchezdev.com/blog/skew-protection-web-development/", "published_at": "2025-08-11T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e7ba654f", "title": "Nudges: Real-Life Examples of How We Are Influenced Without Noticing", "url": "https://www.manuelsanchezdev.com/blog/nudges-real-examples-how-we-are-influenced/", "published_at": "2025-08-10T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e89de92e", "title": "The Trap of Hyperproductivity: How to Break the Cycle and Protect Your Energy", "url": "https://www.manuelsanchezdev.com/blog/hyperproductivity-burnout/", "published_at": "2025-08-01T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e8b117be", "title": "Designing Games: Tips For Creating Emotional Player Experiences", "url": "https://www.manuelsanchezdev.com/blog/book-designing-games/", "published_at": "2025-07-02T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e8b41a24", "title": "WAI-ARIA 1.3: What Developers Need to Know for Better Accessibility", "url": "https://www.manuelsanchezdev.com/blog/accessibility-wai-aria/", "published_at": "2025-07-01T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e8f6459a", "title": "Why WCAG Compliance Alone Isn't Enough: How to Go Beyond for Real Accessibility", "url": "https://www.manuelsanchezdev.com/blog/accessibility-eaa-compliance-beyond-wcag/", "published_at": "2025-06-22T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e930ea58", "title": "Functional vs Imperative JavaScript: Performance & Readability Compared", "url": "https://www.manuelsanchezdev.com/blog/functional-vs-imperative-javascript-performance/", "published_at": "2025-05-21T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e962d126", "title": "Exploring the New Hooks in React 19: useOptimistic, useFormStatus, and useActionState", "url": "https://www.manuelsanchezdev.com/blog/react-19-new-hooks-useoptimistic-useformstatus-useactionstate/", "published_at": "2025-05-13T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5e971cf3a", "title": "Jevons Paradox in Web Hosting: Why Cheaper Isn't Always Better", "url": "https://www.manuelsanchezdev.com/blog/jevons-paradox-web-hosting-costs/", "published_at": "2025-05-06T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5ea14c6e4", "title": "From Underpaid to Unstoppable: A Story-Driven Guide to Pricing Your Services", "url": "https://www.manuelsanchezdev.com/blog/story-drive-service-pricing/", "published_at": "2025-04-30T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5ea44d10e", "title": "Why , , and Don't Speak: Accessible Alternatives for Text-Level Semantics", "url": "https://www.manuelsanchezdev.com/blog/accessible-del-ins-s-screen-readers/", "published_at": "2025-04-18T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5ea53aa4a", "title": "How to Build Accessible Forms with HTML, CSS and JavaScript", "url": "https://www.manuelsanchezdev.com/blog/accessible-html-forms-guide/", "published_at": "2025-04-12T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5ea63856f", "title": "Integrate Google Sheets with Next.js: A Full-Stack Guide", "url": "https://www.manuelsanchezdev.com/blog/nextjs-react-typescript-google-sheets/", "published_at": "2025-04-07T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5eac7e79d", "title": "Mastering Generics in TypeScript - From Basics to Real-World Use", "url": "https://www.manuelsanchezdev.com/blog/mastering-generics-typescript/", "published_at": "2025-04-03T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5eae292ac", "title": "15 Examples of Technical Debt in UI/UX Design (and How to Avoid It)", "url": "https://www.manuelsanchezdev.com/blog/design-debt-in-ux-ui/", "published_at": "2025-03-21T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5eba74653", "title": "20+ Common Examples of Technical Debt (and How to Fix Them)", "url": "https://www.manuelsanchezdev.com/blog/technical-debt-example-fixes/", "published_at": "2025-03-18T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5ec5f7fc8", "title": "Mastering Redux Toolkit: The Ultimate Guide for Frontend Developers", "url": "https://www.manuelsanchezdev.com/blog/mastering-redux-toolkit-ultimate-guide-frontend-developers/", "published_at": "2025-02-27T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5ece1430f", "title": "The L in SOLID: Liskov Substitution Principle,", "url": "https://www.manuelsanchezdev.com/blog/solid-principles-liskov-substitution/", "published_at": "2025-02-25T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5ede027ba", "title": "What Do We Do with You, Old React?", "url": "https://www.manuelsanchezdev.com/blog/what-to-do-with-old-react-upgrading-to-modern-react/", "published_at": "2025-02-09T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5ee344e94", "title": "Math Accessibility on the Web: ARIA math Role & Best Practices", "url": "https://www.manuelsanchezdev.com/blog/math-accessibility-aria-mathml-best-practices/", "published_at": "2025-02-02T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5eeeaa109", "title": "What Is Scope Creep in Game Development (and How to Avoid It)", "url": "https://www.manuelsanchezdev.com/blog/scope-creep-game-development/", "published_at": "2025-01-20T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5ef2ad778", "title": "Creative JavaScript", "url": "https://www.manuelsanchezdev.com/blog/creative-javascript/", "published_at": "2025-01-17T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5ef8daf81", "title": "Presenting Like Steve Jobs: How To Create Memorable Presentations", "url": "https://www.manuelsanchezdev.com/blog/presenting-like-steve-jobs/", "published_at": "2024-12-13T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5efaa423c", "title": "Godot 4 CutsceneDirector: A Script-Based Alternative to Timelines", "url": "https://www.manuelsanchezdev.com/blog/godot-cutscenes/", "published_at": "2024-11-27T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f01fd1a6", "title": "Integrating Large Language Models into Frontends", "url": "https://www.manuelsanchezdev.com/blog/integrating-llm-frontend/", "published_at": "2024-11-01T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f02ab715", "title": "Top Game Development Patterns in Godot Engine", "url": "https://www.manuelsanchezdev.com/blog/game-development-patterns/", "published_at": "2024-10-26T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f10ffa2d", "title": "Svelte vs React: A Technical Comparison", "url": "https://www.manuelsanchezdev.com/blog/svelte-react-comparison/", "published_at": "2024-10-08T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f14a9661", "title": "Svelte 5: Features You Should Know", "url": "https://www.manuelsanchezdev.com/blog/svelte-5-features-you-should-know/", "published_at": "2024-09-24T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f199662e", "title": "The O in SOLID: Open/Close Principle", "url": "https://www.manuelsanchezdev.com/blog/solid-principles-open-close/", "published_at": "2024-09-23T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f1a7e9b7", "title": "Api-First vs Code-First: Which One Should You Choose?", "url": "https://www.manuelsanchezdev.com/blog/api-first-vs-code-first/", "published_at": "2024-09-22T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f1fa993f", "title": "Why Junior Developers Struggle to Land Jobs & How to Succeed", "url": "https://www.manuelsanchezdev.com/blog/why-junior-developers-struggle-find-job/", "published_at": "2024-09-22T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f2320a18", "title": "What is Hoisting?", "url": "https://www.manuelsanchezdev.com/blog/what-is-hoisting/", "published_at": "2024-09-15T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f2d09360", "title": "The S in SOLID: Single Responsibility Principle", "url": "https://www.manuelsanchezdev.com/blog/solid-principles-single-responsibility/", "published_at": "2024-09-14T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f2fab813", "title": "Accessible Forms (Part 1): Field Descriptions", "url": "https://www.manuelsanchezdev.com/blog/accessible-forms-field-description/", "published_at": "2024-09-03T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f38e38c7", "title": "Clicker Incremental Games with Svelte 5", "url": "https://www.manuelsanchezdev.com/blog/incremental-game-svelte/", "published_at": "2024-08-18T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f3e4e974", "title": "About keyboard navigation", "url": "https://www.manuelsanchezdev.com/blog/discussion-about-keyboard-navigation/", "published_at": "2024-08-10T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f4c9a117", "title": "Accessible Fonts", "url": "https://www.manuelsanchezdev.com/blog/accessible-fonts-analysis/", "published_at": "2024-07-28T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f4d22328", "title": "European Accessibility Act", "url": "https://www.manuelsanchezdev.com/blog/european-accessibility-act/", "published_at": "2024-07-22T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f5b55675", "title": "Argument in favor of part-time work", "url": "https://www.manuelsanchezdev.com/blog/arguments-in-favor-of-part-time/", "published_at": "2024-06-01T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f5bff7e3", "title": "My learning path for 2024", "url": "https://www.manuelsanchezdev.com/blog/learning-path-2024/", "published_at": "2024-04-16T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f6338962", "title": "WCAG Versions", "url": "https://www.manuelsanchezdev.com/blog/wcag-versions/", "published_at": "2024-04-09T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f7110b05", "title": "Generalists vs Specialists: where are you in the continuum?", "url": "https://www.manuelsanchezdev.com/blog/generalists-specialists/", "published_at": "2024-04-08T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f7de4562", "title": "Different Needs in Web Accessibility", "url": "https://www.manuelsanchezdev.com/blog/people-special-needs-web-accessibility/", "published_at": "2024-04-01T00:00:00+00:00" }, { "id": "01a0879f-1ed5-7017-99a1-84f5f8515481", "title": "Resources To Boost Your Productivity With Tailwind in 2024", "url": "https://www.manuelsanchezdev.com/blog/resources-to-boost-productivity-with-tailwind/", "published_at": "2024-03-20T00:00:00+00:00" } ] posts Claim your blog
Back to manuelsanchezdev.com
Blog · corpus.blog/blogs/manuelsanchezdev.com/posts

manuelsanchezdev.com

manuelsanchezdev.com

2026

2025

2024