<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>WebAssembly on Thorsten Hans</title>
		<link>https://thorsten-hans.com/tags/webassembly/</link>
		<description>Recent content in WebAssembly on Thorsten Hans</description>
		<generator>Hugo</generator>
		<language>en-US</language>
		
		
		
		
			<lastBuildDate>Tue, 13 Oct 2026 08:45:00 +0200</lastBuildDate>
		
			<atom:link href="https://thorsten-hans.com/tags/webassembly/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Out Now: Building Serverless Applications with WebAssembly &amp; Spin</title>
				<link>https://thorsten-hans.com/building-serverless-apps-with-wasm-and-spin-released/</link>
				<pubDate>Tue, 13 Oct 2026 08:45:00 +0200</pubDate>
				<guid>https://thorsten-hans.com/building-serverless-apps-with-wasm-and-spin-released/</guid>
				<description>&lt;p&gt;Hey friends 👋🏼,&lt;/p&gt;&#xA;&lt;p&gt;The wait is finally over! After countless early mornings, extensive refactorings, and hours spent obsessing over every code sample and diagram, the first version of &lt;strong&gt;Building Serverless Applications with WebAssembly &amp;amp; Spin&lt;/strong&gt; is officially live.&lt;/p&gt;&#xA;&lt;p&gt;You can grab your copy right now on Leanpub:&lt;/p&gt;&#xA;&lt;p&gt;👉 &lt;a href=&#34;https://leanpub.com/building-serverless-apps-with-wasm-and-spin&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;strong&gt;https://leanpub.com/building-serverless-apps-with-wasm-and-spin&lt;/strong&gt;&lt;/a&gt;&#xA;&lt;/p&gt;&#xA;&lt;figure&gt;&lt;a href=&#34;https://leanpub.com/building-serverless-apps-with-wasm-and-spin&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://thorsten-hans.com/building-serverless-apps-with-wasm-and-spin-released/images/spin-book-cover.png&#34; width=&#34;600&#34;&gt;&lt;/a&gt;&lt;figcaption&gt;&#xA;&#x9;&#x9;&#x9;&lt;h4&gt;Building Serverless Applications with WebAssembly &amp;amp; Spin&lt;/h4&gt;&#xA;&#x9;&#x9;&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;h2 id=&#34;what-the-book-is-about&#34;&gt;What the Book Is About&lt;/h2&gt;&#xA;&lt;p&gt;Server-side WebAssembly represents the next major evolution in cloud architecture. By combining sub-millisecond cold starts, near-native performance, and robust sandboxed isolation, Wasm components eliminate the overhead of traditional containers and function-as-a-service platforms.&lt;/p&gt;</description>
			</item>
			<item>
				<title>I’m Writing a Book on WebAssembly and Spin</title>
				<link>https://thorsten-hans.com/i-am-writing-a-book-on-wasm-and-spin/</link>
				<pubDate>Sat, 15 Aug 2026 14:05:00 +0200</pubDate>
				<guid>https://thorsten-hans.com/i-am-writing-a-book-on-wasm-and-spin/</guid>
				<description>&lt;p&gt;Hey friends 👋🏼,&lt;/p&gt;&#xA;&lt;p&gt;If you&amp;rsquo;ve been following my activities over the recent years, you know I can&amp;rsquo;t stop talking about the &lt;strong&gt;third wave of cloud computing&lt;/strong&gt;. Server-side WebAssembly is completely changing the game for cold-start latency and container bloat.&lt;/p&gt;&#xA;&lt;p&gt;Today, I’m thrilled to announce I&amp;rsquo;m turning those talks and architectural patterns into a practical, hands-on guide:&lt;/p&gt;&#xA;&lt;h2 id=&#34;building-serverless-applications-with-webassembly--spin&#34;&gt;Building Serverless Applications With WebAssembly &amp;amp; Spin&lt;/h2&gt;&#xA;&lt;figure&gt;&lt;img src=&#34;https://thorsten-hans.com/i-am-writing-a-book-on-wasm-and-spin/images/spin-book-promo.png&#34; width=&#34;600&#34;&gt;&lt;figcaption&gt;&#xA;&#x9;&#x9;&#x9;&lt;h4&gt;Sign up and Stay in the Loop&lt;/h4&gt;&#xA;&#x9;&#x9;&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;Instead of theoretical fluff, I structure the book in a way that readers will build a complete, multi-component serverless application from the ground up using Rust and Spin.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Component Composition with Spin 4.0</title>
				<link>https://thorsten-hans.com/component-composition-with-spin-4/</link>
				<pubDate>Fri, 14 Aug 2026 19:15:00 +0200</pubDate>
				<guid>https://thorsten-hans.com/component-composition-with-spin-4/</guid>
				<description>&lt;p&gt;Thanks to the WebAssembly Component Model we can stitch together multiple WebAssembly Components. Reusing Wasm Components boost developer velocity dramatically while language barriers vanish. In this hands-on article, I&amp;rsquo;ll explain how you can compose Wasm Components using Spin 4.0.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-you-need-to-follow-along&#34;&gt;What You Need To Follow Along&lt;/h2&gt;&#xA;&lt;p&gt;I&amp;rsquo;ll try to keep things as simple as possible. That&amp;rsquo;s why we&amp;rsquo;ll implement both components using Rust, resulting in the following - short - list of requirements:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Azure DevOps Extensions for Spin, Fermyon Wasm Functions and Fermyon Cloud</title>
				<link>https://thorsten-hans.com/azure-devops-extensions-for-spin-fc-and-fwf/</link>
				<pubDate>Thu, 16 Oct 2025 10:15:00 +0200</pubDate>
				<guid>https://thorsten-hans.com/azure-devops-extensions-for-spin-fc-and-fwf/</guid>
				<description>&lt;p&gt;Do you want to build and deploy your &lt;a href=&#34;https://spinframework.dev/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Spin&lt;/a&gt;&#xA; applications from within &lt;a href=&#34;https://azure.microsoft.com/de-de/products/devops&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Azure DevOps&lt;/a&gt;&#xA; pipelines? No matter if you want to target &lt;a href=&#34;https://www.fermyon.com/wasm-functions&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Fermyon Wasm Functions&lt;/a&gt;&#xA; or &lt;a href=&#34;https://www.fermyon.com/cloud&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Fermyon Cloud&lt;/a&gt;&#xA;, the extensions I published to the &lt;a href=&#34;https://marketplace.visualstudio.com/search?term=spin&amp;amp;target=AzureDevOps&amp;amp;category=All%20categories&amp;amp;sortBy=Relevance&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Visual Studio Marketplace&lt;/a&gt;&#xA; are here to help.&lt;/p&gt;&#xA;&lt;p&gt;Earlier today I published three distinct extensions for Azure DevOps allowing you to do all-the-things Spin, Fermyon Cloud and Fermyon Wasm Functions straight from within your Azure DevOps pipelines.&lt;/p&gt;</description>
			</item>
			<item>
				<title>What I’ve Been Up To</title>
				<link>https://thorsten-hans.com/whats-ive-been-up-to/</link>
				<pubDate>Wed, 15 Oct 2025 10:15:00 +0200</pubDate>
				<guid>https://thorsten-hans.com/whats-ive-been-up-to/</guid>
				<description>&lt;p&gt;Although this blog became a bit quite recently, I wrote a bunch of articles over on our &lt;a href=&#34;https://www.fermyon.com/blog&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;corporate blog&lt;/a&gt;&#xA;. I thought it&amp;rsquo;s worth sharing a comprehensive list of the posts I wrote:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.fermyon.com/blog/openapi-docs-for-spin-with-rust&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;OpenAPI Documentation for Spin Apps with Rust&lt;/a&gt;&#xA;&#xA;In this guide, I’ll show you how to generate OpenAPI Specification (OAS) documentation directly from Spin apps written in Rust. You’ll learn how this improves API discoverability, speeds up onboarding, and unlocks tooling like SDK generation and testing.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.fermyon.com/blog/spin-wizer&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Supercharging Spin Applications with Wizer&lt;/a&gt;&#xA;&#xA;In this post, I’ll demonstrate how to use the WebAssembly pre-initializer Wizer to preload data into Spin apps — to speed up request processing. You’ll see how this technique makes your apps launch instantly and respond with near-zero latency.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.fermyon.com/blog/why-we-chose-rust-for-spin&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Why We Chose Rust For Spin&lt;/a&gt;&#xA;&#xA;In this article, I’ll explain why we built Spin in Rust and how its memory safety, speed, and ecosystem made it the perfect fit. I’ll also share how Rust’s tooling and developer experience align with our vision for Spin.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.fermyon.com/blog/authoring-custom-spin-templates&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Authoring Custom Spin Templates&lt;/a&gt;&#xA;&#xA;In this tutorial, I’ll walk you through creating your own custom Spin templates so you can scaffold projects with consistent structure and boilerplate. This is especially helpful if you want to speed up “Sprint Zero” or enforce team best practices.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.fermyon.com/blog/spin-js-router-showdown&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Spin JS/TS Router Showdown: Hono vs Itty vs Manual Routing&lt;/a&gt;&#xA;&#xA;In this post, I’ll compare three ways to handle routing in Spin JavaScript/TypeScript apps: &lt;code&gt;Hono&lt;/code&gt;, &lt;code&gt;Itty&lt;/code&gt;, and manual routing. You’ll see how each approach affects startup time, runtime performance, and memory usage.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.fermyon.com/blog/hono-router-with-spin&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Routing in Spin Apps with Hono&lt;/a&gt;&#xA;&#xA;In this article, I’ll show you how to use the lightweight &lt;code&gt;Hono&lt;/code&gt; Router with Spin now that the SDK no longer ships with a built-in router. You’ll learn how to build clean, expressive routes with middleware support using a familiar Express-style API.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.fermyon.com/blog/stream-data-from-linode-object-storage&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Stream Data from Linode Object Storage using the AWS S3 SDK&lt;/a&gt;&#xA;&#xA;In this tutorial, I’ll teach you how to build a Spin app that streams files directly from Linode Object Storage using the AWS S3 SDK. You’ll learn how to set up access, stream large files, and deploy the app to Fermyon Wasm Functions.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.fermyon.com/blog/sbom-for-your-spin-apps&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Software Bill of Materials (SBOM) for your Spin Apps&lt;/a&gt;&#xA;&#xA;In this post, I’ll explain what an SBOM is and why it’s essential for security and compliance in modern applications. Then I’ll show you how to generate SBOMs for your Spin apps to make your supply chain transparent and safe.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.fermyon.com/blog/advent-of-spin-2024-wrap&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Advent of Spin 2024 Wrap-up&lt;/a&gt;&#xA;&#xA;In this wrap-up, I’ll recap the Advent of Spin 2024 coding challenges and share some of the most creative solutions from the community. You’ll see how developers built festive apps, learned new languages, and had fun experimenting with Spin.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.fermyon.com/blog/scaling-spinapps-with-keda&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Scaling Spin Apps With KEDA&lt;/a&gt;&#xA;&#xA;In this article, I’ll show you how to scale Spin apps dynamically on Kubernetes using SpinKube and KEDA. You’ll learn how to set up autoscaling so your apps respond to real traffic while saving on resources.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.fermyon.com/blog/advent-of-spin-2024&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Announcing Advent of Spin 2024&lt;/a&gt;&#xA;&#xA;In this announcement, I’ll introduce the Advent of Spin 2024 — a series of holiday coding challenges to help you explore Spin and related tools. I’ll explain how to join, what you’ll build, and what prizes you can win.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.fermyon.com/blog/observing-spin-apps-with-otel-and-net-aspire-dashboard&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Observing Spin Apps with OpenTelemetry and the .NET Aspire Dashboard&lt;/a&gt;&#xA;&#xA;In this guide, I’ll show you how to observe Spin apps by exporting metrics, traces, and logs with OpenTelemetry and visualizing them in the .NET Aspire Dashboard. You’ll see how easy it is to get deep insights into your apps with minimal setup.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.fermyon.com/blog/gh-plugin&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Spin gh – Generate GitHub Actions for your Spin Apps in seconds&lt;/a&gt;&#xA;&#xA;In this post, I’ll introduce you to &lt;code&gt;spin gh&lt;/code&gt;, a plugin that generates GitHub Actions workflows for your Spin apps in seconds. You’ll learn how to install it, extend your CLI with plugins, and simplify your CI/CD pipeline.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.fermyon.com/blog/wasm-jobs-and-cronjobs-with-spinkube&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;WebAssembly Jobs and CronJobs in Kubernetes with SpinKube &amp;amp; the Spin Command Trigger&lt;/a&gt;&#xA;&#xA;In this tutorial, I’ll show you how to run Spin apps as Kubernetes Jobs and CronJobs using the &lt;code&gt;command&lt;/code&gt; trigger with SpinKube. You’ll learn how to schedule recurring workloads or run one-off tasks in a Wasm-powered environment.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.fermyon.com/blog/azure-cache-for-redis-as-key-value-store-with-spinkube&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Azure Cache for Redis as Key-Value Store with SpinKube&lt;/a&gt;&#xA;&#xA;In this guide, I’ll walk you through connecting a Spin app on AKS to Azure Cache for Redis with secure networking using Private Endpoints. You’ll see how to use Redis as a scalable key-value store for your Spin workloads.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.fermyon.com/blog/building-with-spin-htmx&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Building Serverless Apps with Spin and HTMX&lt;/a&gt;&#xA;&#xA;In this tutorial, I’ll show you how to build a lightweight shopping list app using Spin on the backend and &lt;code&gt;htmx&lt;/code&gt; for the frontend. You’ll learn how to make dynamic UIs without heavy JavaScript frameworks.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.fermyon.com/blog/webassembly-in-azure-with-azure-kubernetes-service-and-spinkube&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;WebAssembly in Azure with Azure Kubernetes Service and SpinKube&lt;/a&gt;&#xA;&#xA;In this article, I’ll walk you through running WebAssembly workloads on Azure Kubernetes Service with SpinKube. You’ll learn how to integrate Spin apps with AKS, Azure Container Registry, and Azure Identities for secure deployments.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>WebAssembly and Containers with Docker Desktop - Hello World &amp; Beyond</title>
				<link>https://thorsten-hans.com/webassembly-and-containers-with-docker-desktop-hello-world-and-beyond/</link>
				<pubDate>Wed, 28 Feb 2024 15:27:55 +0100</pubDate>
				<guid>https://thorsten-hans.com/webassembly-and-containers-with-docker-desktop-hello-world-and-beyond/</guid>
				<description>&lt;p&gt;On top of being the runtime for containers, Docker Desktop is also able to run WebAssembly (Wasm) workloads. In this article, we’ll explore how one can run both containers and Wasm workloads together to build distributed architectures using the best of both worlds.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Beta Feature:&lt;/strong&gt; Wasm workloads in Docker Desktop is currently marked as a beta feature.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#what-we-are-going-to-build&#34;&gt;What we are going to build&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#prerequisites&#34;&gt;Prerequisites&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#activate-wasm-workloads-in-docker-desktop&#34;&gt;Activate Wasm Workloads in Docker Desktop&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#which-wasm-runtimes-will-be-installed&#34;&gt;Which Wasm Runtimes will be Installed&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#hello-world---the-wasm-in-docker-desktop-edition&#34;&gt;Hello World - The Wasm in Docker Desktop edition&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#containerizing-a-spin-app&#34;&gt;Containerizing a Spin App&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#running-hello-world---the-wasm-in-docker-desktop-edition&#34;&gt;Running Hello World - The Wasm in Docker Desktop edition&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#testing-the-hello-world---the-wasm-in-docker-desktop-edition&#34;&gt;Testing the Hello World - The Wasm in Docker Desktop edition&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#cleaning-up&#34;&gt;Cleaning Up&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#orchestrating-the-sample-application&#34;&gt;Orchestrating the Sample Application&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#cloning-the-sample-application&#34;&gt;Cloning the Sample Application&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#orchestration-with-docker-compose&#34;&gt;Orchestration with Docker Compose&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#creating-a-dedicated-docker-network&#34;&gt;Creating a dedicated Docker Network&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#orchestrating-services-with-compose&#34;&gt;Orchestrating Services with Compose&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#building-and-running-with-docker-compose&#34;&gt;Building and Running with Docker Compose&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#destroying-and-cleaning-up&#34;&gt;Destroying and Cleaning Up&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;what-we-are-going-to-build&#34;&gt;What we are going to build&lt;/h2&gt;&#xA;&lt;p&gt;Discovering new topics, or learning emerging technologies often goes best when looking at a practical example. For the sake of this article, we’ll start with a simple &lt;em&gt;Hello, World&lt;/em&gt;. From there, we’ll move on and orchestrate a simple three-tier application consisting of two containers (&lt;code&gt;frontend&lt;/code&gt; and &lt;code&gt;postgres&lt;/code&gt;) and a Wasm module (&lt;code&gt;api&lt;/code&gt;).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Wasm ahead - Joining Fermyon</title>
				<link>https://thorsten-hans.com/wasm-ahead-joining-fermyon/</link>
				<pubDate>Mon, 08 Jan 2024 12:05:52 +0100</pubDate>
				<guid>https://thorsten-hans.com/wasm-ahead-joining-fermyon/</guid>
				<description>&lt;p&gt;Hey everyone 👋🏼&lt;/p&gt;&#xA;&lt;p&gt;A couple of weeks ago, I wrote about &lt;a href=&#34;https://thorsten-hans.com/farewell-to-thinktecture&#34;&gt;my farewell to Thinktecture&lt;/a&gt;&#xA;. After sharing that news back in December, many readers, followers, and friends reached out to ask what my next chapter would be. It was really hard not to share the news right away, but I had to wait for the right time.&lt;/p&gt;&#xA;&lt;figure&gt;&lt;img src=&#34;https://thorsten-hans.com/wasm-ahead-joining-fermyon/images/fermyon.png&#34; height=&#34;180px&#34;&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;I am &lt;strong&gt;more than excited&lt;/strong&gt; to finally unveil that I will join &lt;a href=&#34;http://fermyon.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Fermyon&lt;/a&gt;&#xA; as a Cloud Advocate starting February 1st, 2024. 🎉&lt;/p&gt;</description>
			</item>
			<item>
				<title>A comprehensive guide on authoring plugins for Fermyon Spin</title>
				<link>https://thorsten-hans.com/comprehensive-guide-on-authoring-plugins-for-fermyon-spin/</link>
				<pubDate>Fri, 25 Aug 2023 10:05:15 +0200</pubDate>
				<guid>https://thorsten-hans.com/comprehensive-guide-on-authoring-plugins-for-fermyon-spin/</guid>
				<description>&lt;p&gt;Did you know that you can extend the &lt;code&gt;spin&lt;/code&gt; CLI with custom plugins that integrate seamlessly and feel like functionality provided by Fermyon itself?&lt;/p&gt;&#xA;&lt;p&gt;No? &lt;strong&gt;No problem!&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;In this article, we will explore how I build the &lt;code&gt;check-for-update&lt;/code&gt; plugin - a simple Spin plugin that allows you to check if your local installation of the &lt;code&gt;spin&lt;/code&gt; CLI is outdated. On top of building the actual Spin Plugin, we&amp;rsquo;ll also go through the process of testing and distributing the &lt;code&gt;check-for-update&lt;/code&gt; plugin. Finally we&amp;rsquo;ll wrap up this article by adding the custom Spin Plugin to the &lt;strong&gt;Spin Up Hub&lt;/strong&gt;, to ensure users can discover it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>How to use Azure Cosmos DB as a key-value store for Fermyon Spin</title>
				<link>https://thorsten-hans.com/azure-cosmos-db-as-key-value-store-for-fermyon-spin/</link>
				<pubDate>Fri, 26 May 2023 10:04:05 +0200</pubDate>
				<guid>https://thorsten-hans.com/azure-cosmos-db-as-key-value-store-for-fermyon-spin/</guid>
				<description>&lt;p&gt;With the 1.2.1 release of Fermyon Spin, we can now use Azure Cosmos DB as a key-value store for persisting data when building serverless applications. In this article, I guide you through setting up the necessary infrastructure and creating a fairly simple app to store and retrieve arbitrary values using Azure Cosmos DB as the key-value store.&lt;/p&gt;&#xA;&lt;p&gt;All code shown in this article is also available on GitHub at &lt;a href=&#34;https://github.com/ThorstenHans/spin-kv-azure-cosmosdb&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://github.com/ThorstenHans/spin-kv-azure-cosmosdb&lt;/a&gt;&#xA;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>How I replaced the backend of my blog with Spin &amp; Fermyon Cloud</title>
				<link>https://thorsten-hans.com/how-to-blog-backends-with-spin-and-fermyon-cloud/</link>
				<pubDate>Thu, 04 May 2023 15:53:49 +0200</pubDate>
				<guid>https://thorsten-hans.com/how-to-blog-backends-with-spin-and-fermyon-cloud/</guid>
				<description>&lt;p&gt;Although my blog is built using &lt;a href=&#34;https://gohugo.io&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Hugo&lt;/a&gt;&#xA; - a famous Static Site Generator - I&amp;rsquo;ve some functionality baked into the page that requires having a backend (basically an HTTP API). Historically, the backend was hosted in Azure leveraging Azure Container Apps. Recently, I replaced the entire backend for my blog using a &lt;a href=&#34;https://www.fermyon.com/spin&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Fermyon Spin application&lt;/a&gt;&#xA; hosted in the fully managed &lt;a href=&#34;https://www.fermyon.com/cloud&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Fermyon Cloud&lt;/a&gt;&#xA;. In this article, I explain how I migrated away from containers towards server-side WebAssembly with Fermyon Spin 💫.&lt;/p&gt;</description>
			</item>
			<item>
				<title>A First Glance at the Spin Router for Rust</title>
				<link>https://thorsten-hans.com/first-glance-at-spin-router-for-rust/</link>
				<pubDate>Tue, 18 Apr 2023 13:02:41 +0200</pubDate>
				<guid>https://thorsten-hans.com/first-glance-at-spin-router-for-rust/</guid>
				<description>&lt;p&gt;With the release of Fermyon Spin 1.1 (April 15th, 2023), the Spin SDKs for Rust and Go now provide a built-in router for HTTP applications. In this post, we will take a quick look at the built-in router supplied by the Spin SDK for Rust and build a small sample application to illustrate how one could solve day-to-day requirements when building serverless applications with WebAssembly (Wasm).&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#whats-the-purpose-of-a-router-in-http-apps&#34;&gt;What&amp;rsquo;s the purpose of a router in HTTP apps?&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#our-demo-application&#34;&gt;Our demo application&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#how-requests-flow-through-a-spin-app&#34;&gt;How requests flow through a Spin app&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#lets-implement-the-book-api-sample&#34;&gt;Let&amp;rsquo;s implement the book API sample&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#prerequirements&#34;&gt;Prerequirements&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#find-the-sample-repository-on-github&#34;&gt;Find the sample repository on GitHub&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#create-the-spin-application&#34;&gt;Create the Spin application&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#key-value-store-configuration&#34;&gt;key-value store configuration&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#api-models-book-entity-persistence--handlers&#34;&gt;API models, book entity, persistence &amp;amp; handlers&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#configure-the-built-in-router-of-spin&#34;&gt;Configure the built-in Router of Spin&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;whats-the-purpose-of-a-router-in-http-apps&#34;&gt;What&amp;rsquo;s the purpose of a router in HTTP apps?&lt;/h2&gt;&#xA;&lt;p&gt;In HTTP applications, a router serves as a central component to direct incoming HTTP requests to the appropriate handler functions that can process and respond to those requests. The router does so by looking at different parts of an incoming HTTP request, such as:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Let&#39;s build a HTTP router for Spin with Rust</title>
				<link>https://thorsten-hans.com/http-router-for-spin-with-rust/</link>
				<pubDate>Fri, 14 Apr 2023 11:13:43 +0200</pubDate>
				<guid>https://thorsten-hans.com/http-router-for-spin-with-rust/</guid>
				<description>&lt;p&gt;Although we can build more complex HTTP applications in Fermyon Spin by composing multiple components, having a single component is easier, reduces development time, and is more flexible in the first place. In this article, I will explain how to implement simple routing capabilities using enumerations in Rust.&lt;/p&gt;&#xA;&lt;aside class=&#34;note&#34;&gt;&#xA;    &lt;h3&gt;Note: 💡 Spin 1.1 brings Built-in Router for Rust &amp;amp; Go&lt;/h3&gt;&#xA;    &lt;div class=&#34;content&#34;&gt;&lt;p&gt;Shortly after publishing this article, Fermyon released version 1.1 of Spin 🎉. With that release, the Spin SDK for Rust comes with a built-in router for HTTP applications.&lt;/p&gt;&#xA;&lt;p&gt;Consult the &lt;a href=&#34;https://www.fermyon.com/blog/introducing-spin-v11&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;announcement of Spin 1.1&lt;/a&gt;&#xA; to get more details on the built-in router.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/aside&gt;</description>
			</item>
			<item>
				<title>Let Spin lift your key-value store</title>
				<link>https://thorsten-hans.com/let-spin-lift-your-key-value-store/</link>
				<pubDate>Sat, 08 Apr 2023 15:41:09 +0200</pubDate>
				<guid>https://thorsten-hans.com/let-spin-lift-your-key-value-store/</guid>
				<description>&lt;p&gt;For quite sometime now (since version 0.9.0), Spin has had built-in key-value support. In this article, we will quickly investigate how we can use that built-in key-value support when building serverless applications with Fermyon Spin.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#what-are-key-value-stores&#34;&gt;What are key-value stores&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#why-should-you-use-key-value-stores-in-serverless-apps&#34;&gt;Why should you use key-value stores in serverless apps&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#key-value-stores-in-spin&#34;&gt;Key-value stores in Spin&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#lets-build-a-simple-url-shortener-using-the-spin-key-value-store&#34;&gt;Let&amp;rsquo;s build a simple URL shortener using the Spin key-value store&lt;/a&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#add-necessary-dependencies-to-cargotoml&#34;&gt;Add necessary dependencies to &lt;code&gt;Cargo.toml&lt;/code&gt;&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#configure-spin-the-key-value-store-in-spintoml&#34;&gt;Configure Spin the key-value store in &lt;code&gt;Spin.toml&lt;/code&gt;&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#implement-the-handler-for-creating-new-short-links&#34;&gt;Implement the handler for creating new short-links&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#implement-the-handler-for-openening-a-short-link&#34;&gt;Implement the handler for openening a short-link&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#implement-the-handler-for-receiving-all-short-links&#34;&gt;Implement the handler for receiving all short-links&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#wiring-up-the-handlers&#34;&gt;Wiring up the handlers&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#testing-the-url-shortener&#34;&gt;Testing the URL shortener&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;what-are-key-value-stores&#34;&gt;What are key-value stores&lt;/h2&gt;&#xA;&lt;p&gt;A key-value store is a type of database that stores data as a collection of key-value pairs. Each key in the database maps to a corresponding value, which can be retrieved by querying the key. Key-value stores are often used for storing and retrieving data quickly, as they can perform reads and writes with very low latency. They are commonly used in web applications, caching layers, and distributed systems and can be implemented using various technologies, such as Redis, Cassandra, etcd, SQLite, and others.&lt;/p&gt;</description>
			</item>
			<item>
				<title>CRUD in WebAssembly with Fermyon Spin and MySQL</title>
				<link>https://thorsten-hans.com/crud-in-webassembly-with-fermyon-spin-and-mysql/</link>
				<pubDate>Tue, 20 Dec 2022 16:32:11 +0100</pubDate>
				<guid>https://thorsten-hans.com/crud-in-webassembly-with-fermyon-spin-and-mysql/</guid>
				<description>&lt;p&gt;With the latest release of Fermyon Spin (v 0.7.0), we can persist data in MySQL (persistence in PostgreSQL has been available for quite some time now). Being able to persist and retrieve some sort of data is a must-have for any kind of application.&lt;/p&gt;&#xA;&lt;p&gt;In this article, we’ll take a look at a full-fledged CRUD implementation. We’ll build an HTTP-API that allows its users to &lt;strong&gt;C&lt;/strong&gt;reate, &lt;strong&gt;R&lt;/strong&gt;ead, &lt;strong&gt;U&lt;/strong&gt;pdate, and &lt;strong&gt;D&lt;/strong&gt;elete products using corresponding HTTP methods (&lt;code&gt;POST&lt;/code&gt;, &lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;PUT&lt;/code&gt;, and &lt;code&gt;DELETE&lt;/code&gt;). All code shown in this article is available &lt;a href=&#34;https://github.com/ThorstenHans/spin-crud-mysql&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;on GitHub at ThorstenHans/spin-crud-mysql&lt;/a&gt;&#xA;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Master configuration data in Fermyon Spin</title>
				<link>https://thorsten-hans.com/master-configuration-data-in-fermyon-spin/</link>
				<pubDate>Thu, 15 Dec 2022 14:01:01 +0100</pubDate>
				<guid>https://thorsten-hans.com/master-configuration-data-in-fermyon-spin/</guid>
				<description>&lt;p&gt;Every application has to deal with configuration data, and applications built using Fermyon Spin are no exception here. Instead of baking configuration data into your source code, you should attach it from the outside to alter behavior of your applications without having to re-compile your source code.&lt;/p&gt;&#xA;&lt;p&gt;This short article demonstrates how to deal with configuration data when building applications using WebAssembly and Fermyon Spin. You can find the source code of the sample application (spin-to-slack) &lt;a href=&#34;https://github.com/ThorstenHans/spin-to-slack&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;on GitHub at ThorstenHans/spin-to-slack&lt;/a&gt;&#xA;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Building Microservices With WebAssembly and Fermyon Spin</title>
				<link>https://thorsten-hans.com/building-microservices-with-webassembly-and-fermyon-spin/</link>
				<pubDate>Sun, 11 Dec 2022 15:18:16 +0100</pubDate>
				<guid>https://thorsten-hans.com/building-microservices-with-webassembly-and-fermyon-spin/</guid>
				<description>&lt;p&gt;Although WebAssembly is an excellent fit for bringing complex solutions that need near-native runtime performance to the client (Browser), I see WebAssembly as a technology with way more potential and a way bigger impact on the server (read: cloud) in contrast. That said, WebAssembly will not replace containers on the server side. It’s an addition or alternative approach to packaging and distributing specific software components typically part of a bigger system. It’s on us - the developers and software architects - to decide if a container or WebAssembly is the better foundation for meeting a particular requirement.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
