41554 blogs · [ { "id": "01a08790-47db-7340-be95-5d2663d67ebc", "title": "Going virtual", "url": "https://jonhilton.net/virtual-user-groups/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d2664bddbf4", "title": "CSS is hard, Blazor and Tailwind CSS makes it easier", "url": "https://jonhilton.net/re-usable-components-with-blazor-and-tailwind-css/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d26653305a3", "title": "Quickly transform any mockup or design into a working Blazor prototype", "url": "https://jonhilton.net/build-anything-using-blazor-components/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d2665c6944e", "title": "How easy is it to build a Marvel search engine with Blazor?", "url": "https://jonhilton.net/blazor-wasm-calling-a-api/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d2665c78b39", "title": "3+1 ways to manage state in your Blazor application", "url": "https://jonhilton.net/blazor-state-management/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d26666c0277", "title": "Go faster with your own re-usable Blazor components", "url": "https://jonhilton.net/build-your-own-re-usable-blazor-components/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d2666dfa36f", "title": "Custom validation logic on client AND server with Blazor?", "url": "https://jonhilton.net/blazor-client-server-validation-with-fluentvalidation/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d2667632c95", "title": "Blazor EditForms, an essential tool or too much magic?", "url": "https://jonhilton.net/why-use-blazor-edit-forms/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d266845d271", "title": "Pimp up your Blazor EditForms with Tailwind CSS!", "url": "https://jonhilton.net/pimp-up-blazor-edit-forms-with-tailwind-css/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d2668f4e602", "title": "Make a responsive Navbar with Blazor and Tailwind?", "url": "https://jonhilton.net/responsive-blazor-navbar/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d2669a21094", "title": "Edit and Replay your network requests, direct from the browser", "url": "https://jonhilton.net/debuggable-network-requests/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d2669ac4efc", "title": "Making Scott Hanselman's Powerpoint Greenscreen trick work with RevealJS via Blazor Server", "url": "https://jonhilton.net/obs-revealjs-greenscreen/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d266a48098e", "title": "Render diagrams on the fly in your Blazor apps", "url": "https://jonhilton.net/blazor-diagrams/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d266a4c3e9a", "title": "When does Blazor decide to render your UI?", "url": "https://jonhilton.net/when-does-blazor-render-your-ui/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d266affcdc8", "title": "Update the HTML head from your Blazor components", "url": "https://jonhilton.net/blazor-update-html-head/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d266bc44267", "title": "From site.css to component styles", "url": "https://jonhilton.net/blazor-css-isolation/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d266bed4e0f", "title": "Render Blazor WASM components in your existing MVC/Razor Pages applications", "url": "https://jonhilton.net/blazor-wasm-in-razor-pages/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d266c66ec61", "title": "Prerendering your Blazor WASM application with .NET 5 (part 1)", "url": "https://jonhilton.net/blazor-wasm-prerendering/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d266d3080cf", "title": "Prerendering your Blazor WASM application with .NET 5 (part 2 - solving the missing HttpClient problem)", "url": "https://jonhilton.net/blazor-wasm-prerendering-missing-http-client/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d266e29e0fc", "title": "Is it possible to render components dynamically using Blazor?", "url": "https://jonhilton.net/blazor-dynamic-components/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d266f150d85", "title": "Tests are hard, LightBDD can help", "url": "https://jonhilton.net/better-csharp-tests-lightbdd/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d266ff06670", "title": "Does .NET 6 fix Blazor Prerendering?", "url": "https://jonhilton.net/blazor-prerendering-net6/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d2670c96e28", "title": "Sure, you could write all those Blazor HTTP calls yourself...", "url": "https://jonhilton.net/blazor-refit/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d26718e77df", "title": "Dark mode for your web applications (using Blazor and Tailwind CSS)", "url": "https://jonhilton.net/blazor-tailwind-dark-mode/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d2671a4af8e", "title": "With so many Blazor Component Libraries, which one is best for you?", "url": "https://jonhilton.net/choosing-a-blazor-component-library/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d267224709a", "title": "When to refactor a large Blazor component into separate, smaller ones?", "url": "https://jonhilton.net/refactor-to-components/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d26723728c5", "title": "Razor Pages has Components too don't you know!", "url": "https://jonhilton.net/razor-pages-components/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d2672786d1d", "title": "Persisting your users preferences using Blazor and Local Storage", "url": "https://jonhilton.net/blazor-tailwind-dark-mode-local-storage/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d26731be603", "title": "Three ways to hack your brain to notice the small details", "url": "https://jonhilton.net/diagnosing-errors-in-your-code/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d26737afcac", "title": "How I organise my Blazor components", "url": "https://jonhilton.net/blazor-component-folder-structure/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d26740eee14", "title": "What happens when you navigate to the same page in Blazor?", "url": "https://jonhilton.net/blazor-navigation-same-page/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d2674f3f3b6", "title": "Blazor Changes in .NET 8 - Solving Blazor's biggest challenges?", "url": "https://jonhilton.net/blazor-united/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d26752a3dfa", "title": "Are you sure you need that 'else'", "url": "https://jonhilton.net/blazor-components/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d26755b69d1", "title": "Your Blazor component needs data in a certain format, where to Map?", "url": "https://jonhilton.net/mapping/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d2675dac857", "title": "Good (Blazor) Components are...", "url": "https://jonhilton.net/good-blazor-components/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d2675f47a68", "title": "State Hasn't Changed? Why and when Blazor components re-render", "url": "https://jonhilton.net/blazor-rendering/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d26764f6785", "title": "Need your Blazor sibling components to talk to each other?", "url": "https://jonhilton.net/blazor-sibling-communication/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d267706df06", "title": "Simpler auth for Blazor Web Apps with Auth0?", "url": "https://jonhilton.net/blazor-auth0-net8/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d267767b6d4", "title": "Prevent double clicks in Blazor components", "url": "https://jonhilton.net/prevent-double-clicks-blazor/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d26783f1348", "title": "Finally! Improved Blazor Server reconnection UX", "url": "https://jonhilton.net/blazor-server-reconnects/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d26787c198f", "title": "Should I put my Blazor components in the server project, or the client project?", "url": "https://jonhilton.net/client-or-server-project-for-components/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d26788d5358", "title": "Coravel - Easy task scheduling for your .NET web apps", "url": "https://jonhilton.net/coravel/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d26794227c7", "title": "3 simple design tips to improve your Web UI", "url": "https://jonhilton.net/design-tips/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d267a1aeca0", "title": "Avoiding interactivity with Blazor?", "url": "https://jonhilton.net/avoiding-blazor-interactivity/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d267a493791", "title": "Ensure users always get the latest version of your stylesheets with .NET 9", "url": "https://jonhilton.net/cache-bust-blazor-css/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d267b436319", "title": "Better JavaScript module imports with .NET 9", "url": "https://jonhilton.net/import-js-modules/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d267bcfdfad", "title": "Interactive what now? Deciphering Blazor's web app project template options", "url": "https://jonhilton.net/blazor-web-app-interactivity-choices/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d267c3a7b1e", "title": "The quickest way to integrate PayPal checkout with Blazor SSR in .NET 8", "url": "https://jonhilton.net/paypal-net8-ssr/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d267d27ccae", "title": "Share user authentication state with interactive WASM components", "url": "https://jonhilton.net/blazor-share-auth-state/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d267d2f5430", "title": "How to upload a file with Blazor SSR in .NET 8?", "url": "https://jonhilton.net/upload-file-ssr/", "published_at": null }, { "id": "01a08790-47db-7340-be95-5d267d8f2016", "title": "Double down on the fundamentals to unblock your projects (current and future)", "url": "https://jonhilton.net/development-fundamentals/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb06cfa733", "title": "Build, refactor, repeat", "url": "https://jonhilton.net/refactoring/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb078a8a83", "title": "Missing Blazor intellisense in VS2022? You may be running into this problem", "url": "https://jonhilton.net/visual-studio-2022-blazor-css-intellisense/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb07aca810", "title": "Use Tailwind's new JIT mode when developing Blazor applications", "url": "https://jonhilton.net/tailwind3-blazor/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb07d493f4", "title": "Go faster with mockups", "url": "https://jonhilton.net/build-faster-with-mockups/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb084fbe40", "title": "Think big, start small", "url": "https://jonhilton.net/think-big-start-small/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb08744df3", "title": "Conditional Blazor Styles (without the if statements)", "url": "https://jonhilton.net/conditional-blazor-css/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb0921ffc1", "title": "Use the Query String to pass an array of selected values between Blazor Pages", "url": "https://jonhilton.net/blazor-deep-linking/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb09991ec3", "title": "Struggling to get going with a new feature? Start with the HTML", "url": "https://jonhilton.net/start-with-html/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb09d6d681", "title": "Wait until the last responsible moment to add structure to your Blazor UI", "url": "https://jonhilton.net/delay-adding-structure/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb0a8bda09", "title": "Use a recursive Blazor component to render a TreeView", "url": "https://jonhilton.net/blazor-tree-view/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb0b2c413e", "title": "Using .NET 7's Blazor Custom Elements to render dynamic content", "url": "https://jonhilton.net/blazor-custom-elements/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb0c1d86be", "title": "Inject content into your Blazor components with typed Render Fragments", "url": "https://jonhilton.net/blazor-render-fragments/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb0c987cad", "title": "Blazor Server Reconnection Gets an Upgrade in .NET 10", "url": "https://jonhilton.net/blazor-server-reconnection-dotnet-10/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb0d687eec", "title": "Beyond chat - a quick way to bring AI to your Blazor Web App", "url": "https://jonhilton.net/ai/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb0e009159", "title": "Why some software development tasks feel impossible", "url": "https://jonhilton.net/friction/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb0e99b566", "title": "What humans and Github Co-Pilot have in common", "url": "https://jonhilton.net/humans-vs-ai/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb0f8db92f", "title": "Before you spend ages building your SaaS", "url": "https://jonhilton.net/marketing-honest-talk/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb10287fb0", "title": "Which render mode is my component using?", "url": "https://jonhilton.net/blazor-render-modes/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb111433e5", "title": "Shared models - Blazor's (not so) secret super power", "url": "https://jonhilton.net/blazor-shared-models/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb1167a879", "title": "How to learn Blazor when you don't use it for your day job", "url": "https://jonhilton.net/learn-blazor-when-not-your-day-job/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb122c003f", "title": "Blazor - Where to put your domain logic", "url": "https://jonhilton.net/blazor-architecture/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb12739091", "title": "Is Blazor actually any good, beyond demo-ware", "url": "https://jonhilton.net/blazor-any-good/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb13041d0d", "title": "Use Blazor in your existing ASP.NET Core 3.x application", "url": "https://jonhilton.net/use-blazor-in-existing-app/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb132b4e63", "title": "Use AI to help YOU refactor your code", "url": "https://jonhilton.net/ai-assisted-refactoring/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb1405cc0b", "title": "AI broke your architecture? Here's how to fix it", "url": "https://jonhilton.net/architecture-tests/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb14339679", "title": "How you ship is everything", "url": "https://jonhilton.net/how-you-ship/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb14809dc8", "title": "The goal isn't to write more code", "url": "https://jonhilton.net/moar-code-bad/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb14c72ae2", "title": "When AI goes down a rabbit hole, use it to your advantage", "url": "https://jonhilton.net/reflect-workflow/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb15066532", "title": "MVC vs Razor Pages - A quick comparison", "url": "https://jonhilton.net/razor-pages-or-mvc-a-quick-comparison/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb159e7dad", "title": "Separating concerns using Razor Pages", "url": "https://jonhilton.net/razor-pages-separation-of-concerns/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb15d97978", "title": "Keep your ASP.NET Core application’s secrets safe during development", "url": "https://jonhilton.net/2017/06/07/keep-your-asp-dot-net-application-secrets-safe/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb16d05ee2", "title": "Keep your ASP.NET Core secrets safe in production using Azure Application Settings", "url": "https://jonhilton.net/2017/06/28/keep-your-asp-net-core-secrets-safe-in-production-using-azure-application-settings/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb17701def", "title": "Login & Authentication for your ASP.NET Core Web API – The Big Picture", "url": "https://jonhilton.net/2017/05/03/login-authentication-asp-net-core-web-api-big-picture/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb1852e64c", "title": "Secure your ASP.NET Core MVC and Web API app using Google", "url": "https://jonhilton.net/2017/05/10/secure-you-asp-net-core-mvc-and-web-api-app-using-google/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb18b688ed", "title": "Don't rush to build that re-usable Blazor component", "url": "https://jonhilton.net/blazor-shared-components/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb18b78654", "title": "From Zero to Hero? Building a tiny app from scratch using Blazor and .NET 8", "url": "https://jonhilton.net/net8-blazor-from-scratch/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb1937e644", "title": null, "url": "https://jonhilton.net/blazor-docker-hosting/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb196efd4f", "title": "Deploy your containerised Blazor app to Digital Ocean's App Platform", "url": "https://jonhilton.net/blazor-digital-ocean/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb19cf0cb6", "title": "How to migrate your Blazor Server app to .NET 8", "url": "https://jonhilton.net/blazor-net8-migration/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb1a2c23c1", "title": "How to accept Stripe payments via Blazor in .NET 8", "url": "https://jonhilton.net/blazor-stripe/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb1b1bd066", "title": "When a form is actually... oh it's a form", "url": "https://jonhilton.net/blazor-search-page/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb1bfdf9c4", "title": "Do ASP.NET Web Applications play nice with Fly.io?", "url": "https://jonhilton.net/blazor-fly-io/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb1c71e753", "title": "Where to fetch data in your Blazor components", "url": "https://jonhilton.net/blazor-fetch-data/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb1c7402b5", "title": "Exploring Blazor Changes in .NET 8 - Auto Render Mode", "url": "https://jonhilton.net/blazor-auto-render-mode/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb1d5cf531", "title": "Configure Redis on Fly.io to handle your Anti-Forgery Tokens in .NET", "url": "https://jonhilton.net/fly-anti-forgery-redis/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb1e31790a", "title": "Exploring Blazor Changes in .NET 8 - Capture User Input with Forms", "url": "https://jonhilton.net/blazor-ssr-forms/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb1e547ffc", "title": "Exploring Blazor Changes in .NET 8 - Interactive Components using Blazor WASM", "url": "https://jonhilton.net/blazor-interactive-wasm/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb1e71626f", "title": "Exploring Blazor Changes in .NET 8 - Interactive Components using Blazor Server", "url": "https://jonhilton.net/blazor-interactive-islands-server/", "published_at": null }, { "id": "01a08790-47dc-7049-9a4d-40eb1f6d14f0", "title": ".NET 8 Blazor component visibly loading twice? Check your prerendering", "url": "https://jonhilton.net/persist-state-between-renders-net8/", "published_at": null } ] posts Claim your blog
Back to jonhilton.net
Blog · corpus.blog/blogs/jonhilton.net/posts

jonhilton.net

jonhilton.net

Undated