<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>radu&#39;s blog</title>
    <link>https://radu-matei.com/</link>
    <description>Recent content on radu&#39;s blog</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <copyright>Radu Matei</copyright>
    <lastBuildDate>Tue, 09 Apr 2024 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://radu-matei.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>A practical guide to WebAssembly memory</title>
      <link>https://radu-matei.com/blog/practical-guide-to-wasm-memory/</link>
      <pubDate>Mon, 11 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/practical-guide-to-wasm-memory/</guid>
      <description>Memory in WebAssembly is one of the topics that creates confusion for newcomers, particularly for those with experience in languages with memory management features like garbage collection, such as JavaScript, Go, or Java. In this article we explore using memory in WebAssembly in various scenarios - passing JavaScript arrays to Rust and AssemblyScript modules, checking for some basic memory leaks using Valgrind, or exchanging strings between runtimes and modules using Wasmtime.</description>
    </item>
    <item>
      <title>From (C)Go to Rust: A practical guide to building shared and static libraries, linking, and FFI</title>
      <link>https://radu-matei.com/blog/from-go-to-rust-static-linking-ffi/</link>
      <pubDate>Sun, 12 Jan 2020 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/from-go-to-rust-static-linking-ffi/</guid>
      <description>In this article we will explore how to build shared and static libraries in Go, and import them in Rust.</description>
    </item>
    <item>
      <title>Raspberry Pi SpinKube livestream</title>
      <link>https://radu-matei.com/notes/pi-cluster-stream/</link>
      <pubDate>Tue, 09 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/notes/pi-cluster-stream/</guid>
      <description>&lt;p&gt;I recently built a 5-node Raspberry Pi cluster running Wasm workloads using the&#xA;new &lt;a href=&#34;https://github.com/spinkube&#34;&gt;SpinKube project&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;This week, I joined &lt;a href=&#34;https://www.youtube.com/@fermyontech/streams&#34;&gt;Fermyon&amp;rsquo;s weekly live stream&lt;/a&gt;&#xA;together with &lt;a href=&#34;https://twitter.com/soganmageshwar&#34;&gt;Sohan&lt;/a&gt; to talk about how I configured&#xA;the cluster and to demonstrate running Spin applications on Kubernetes.&lt;/p&gt;&#xA;&#xA;&#xA;    &#xA;    &lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/Lp0xfB69Q_c?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&#xA;      &gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;p&gt;You can &lt;a href=&#34;https://gist.github.com/radu-matei/fa659492cd9ddea999ce5a9d789b653d&#34;&gt;follow along this gist&lt;/a&gt;&#xA;to set up your own cluster, and stay tuned for a full write-up on this setup.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Trying something new</title>
      <link>https://radu-matei.com/notes/trying-something-new/</link>
      <pubDate>Sun, 07 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/notes/trying-something-new/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been writing on this blog since 2016.&#xA;I&amp;rsquo;ve written about &lt;a href=&#34;https://radu-matei.com/blog/self-contained-dotnet-cli/&#34;&gt;.NET&lt;/a&gt;,&#xA;&lt;a href=&#34;https://radu-matei.com/blog/aspnet-core-websockets-middleware/&#34;&gt;WebSockets&lt;/a&gt;, &lt;a href=&#34;https://radu-matei.com/blog/state-of-debugging-microservices-on-k8s/&#34;&gt;debugging microservices on Kubernetes&lt;/a&gt;,&#xA;or about &lt;a href=&#34;https://radu-matei.com/blog/practical-guide-to-wasm-memory/&#34;&gt;WebAssembly memory&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I rarely have the time to write lengthy blog posts anymore, and social media&#xA;seems to be the worst place to have a conversation these days; so I stopped&#xA;posting almost entirely.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m trying to change that with a new &lt;a href=&#34;https://radu-matei.com/tags/notes&#34;&gt;notes&lt;/a&gt;&#xA;section of my blog where I&amp;rsquo;m trying to write more by sharing something&#xA;in-between a tweet and a fully fledged blog post.&#xA;I might write about personal projects and experiments around Wasm, Spin, distributed&#xA;systems, dotfiles and fonts, interesting conference talks, or bike rides.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Introducing Fermyon Serverless AI</title>
      <link>https://radu-matei.com/blog/introducing-fermyon-serverless-ai/</link>
      <pubDate>Tue, 05 Sep 2023 16:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/introducing-fermyon-serverless-ai/</guid>
      <description>Fermyon Serverless AI gives you the building blocks for integrating Artificial Intelligence into your serverless applications, with AI inferencing for Large Language Models (LLMs) for Llama2 and CodeLlama, support for generating sentence embeddings and storing them in a vector-ready database, built-in key-value storage, and a seamless developer experience.</description>
    </item>
    <item>
      <title>Spin 1.0 — The Developer Tool for Serverless WebAssembly</title>
      <link>https://radu-matei.com/blog/introducing-spin-v1/</link>
      <pubDate>Wed, 22 Mar 2023 16:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/introducing-spin-v1/</guid>
      <description>Introducing the first stable release for Spin, the open source developer tool for building, distributing, and running serverless applications built with WebAssembly.</description>
    </item>
    <item>
      <title>The Six Ways of Optimizing WebAssembly</title>
      <link>https://radu-matei.com/blog/six-ways-optimize-webassembly/</link>
      <pubDate>Thu, 26 Jan 2023 02:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/six-ways-optimize-webassembly/</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;a href=&#34;https://www.infoq.com/articles/six-ways-optimize-webassembly&#34;&gt;This post is co-authored with Matt Butcher, and it originally appeared on InfoQ.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;key-takeaways&#34;&gt;Key Takeaways&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;While many languages support Wasm, some are faster than others.&lt;/li&gt;&#xA;&lt;li&gt;Some compilers natively support optimizing Wasm for efficiency and speed.&lt;/li&gt;&#xA;&lt;li&gt;The wasm-opt tool can optimize a Wasm binary regardless of the original language it was used to create it.&lt;/li&gt;&#xA;&lt;li&gt;Using a JIT-enabled runtime can improve runtime performance depending on the hardware platform you are using.&lt;/li&gt;&#xA;&lt;li&gt;Some Wasm runtimes can even compile applications ahead-of-time (AOT) to reach native execution speed.&lt;/li&gt;&#xA;&lt;li&gt;The experimental Wizer project achieves a further performance boost by pre-initializing a Wasm binary to reduce the time it takes to launch it.&lt;/li&gt;&#xA;&lt;li&gt;In our practice, we saw good optimization can reduce Wasm binary size by a factor of ten.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;WebAssembly (often abbreviated to Wasm) is a binary executable format. &lt;a href=&#34;https://github.com/fermyon/wasm-languages&#34;&gt;Many different languages&lt;/a&gt; can be executed via Wasm, including Rust, C, JavaScript, Python, Ruby, and the .NET languages.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building host implementations for WebAssembly interfaces</title>
      <link>https://radu-matei.com/blog/wasm-components-host-implementations/</link>
      <pubDate>Thu, 20 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/wasm-components-host-implementations/</guid>
      <description>WebAssembly and WASI show great promise for the future of computing outside the browser, and the WebAssembly component model aims to improve the portability, cross-language, and composition story for Wasm. This article introduces host implementations, and how to use tooling from the Bytecode Alliance to build and use such implementations.</description>
    </item>
    <item>
      <title>Introduction to WebAssembly components</title>
      <link>https://radu-matei.com/blog/intro-wasm-components/</link>
      <pubDate>Thu, 16 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/intro-wasm-components/</guid>
      <description>WebAssembly and WASI show great promise for the future of computing outside the browser, and the WebAssembly component model aims to improve the portability, cross-language, and composition story for Wasm. This article explains the goals of the component model, and showcases how to use tooling from the Bytecode Alliance to build and consume such components.</description>
    </item>
    <item>
      <title>Neural network inferencing  for PyTorch and TensorFlow with ONNX, WebAssembly System Interface, and WASI NN</title>
      <link>https://radu-matei.com/blog/wasi-nn-onnx/</link>
      <pubDate>Wed, 07 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/wasi-nn-onnx/</guid>
      <description>WASI NN is a proposal that allows WebAssembly guest modules running outside the browser to perform neural network inferencing by using host-provided implementations that can leverage CPU multi-threading, host optimizations, or hardware devices such as GPUs or TPUs. This article explores the goals of WASI NN, existing implementations, and details a new experimental implementation targeting ONNX, the Open Neural Network Exchange , which allows the either usage of models built with PyTorch or TensorFlow from guest WebAssembly modules.</description>
    </item>
    <item>
      <title>Using Azure services from WebAssembly modules</title>
      <link>https://radu-matei.com/blog/using-azure-services-wasi/</link>
      <pubDate>Tue, 11 May 2021 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/using-azure-services-wasi/</guid>
      <description>With WAGI, the WebAssembly Gateway Interface, it is easier than ever to build microservices using WebAssembly. In this article, we explore building Wasm modules that use Azure services and how to run them using WAGI.</description>
    </item>
    <item>
      <title>Updates on WAGI, the WebAssembly Gateway Interface</title>
      <link>https://radu-matei.com/blog/wagi-updates/</link>
      <pubDate>Mon, 10 May 2021 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/wagi-updates/</guid>
      <description>New features such as pulling from container registries and outbound HTTP connections are now part of WAGI.</description>
    </item>
    <item>
      <title>An experimental outbound HTTP library for the WebAssembly System Interface</title>
      <link>https://radu-matei.com/blog/wasi-experimental-http/</link>
      <pubDate>Mon, 08 Mar 2021 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/wasi-experimental-http/</guid>
      <description>Send HTTP requests from Rust and AssemblyScript Wasm modules running in Wasmtime</description>
    </item>
    <item>
      <title>A simple WebAssembly linker in JavaScript</title>
      <link>https://radu-matei.com/blog/a-simple-wasm-linker-js/</link>
      <pubDate>Fri, 13 Nov 2020 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/a-simple-wasm-linker-js/</guid>
      <description>An experimental JavaScript library that helps instantiating WebAssembly modules with imports by providing functionality to link JavaScript objects as imports, as well as automatically perform name based resolution for linking entire modules.</description>
    </item>
    <item>
      <title>TensorFlow inferencing using WebAssembly and WASI</title>
      <link>https://radu-matei.com/blog/tensorflow-inferencing-wasi/</link>
      <pubDate>Sun, 18 Oct 2020 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/tensorflow-inferencing-wasi/</guid>
      <description>In this article, we experiment with building a Rust program that performs image classification using the MobileNet V2 TensorFlow model, compile it to WebAssembly, and instantiate the module using two WebAssembly runtimes that use the WebAssembly System Interface (WASI), the native NodeJS WASI runtime, and Wasmtime. A special interest is given to writing model and image data into the module’s linear memory, with implementations in both JavaScript and Rust. Finally, a simple prediction API is exemplified running on top of the Wasmtime runtime, and some limitations of this approach are discussed.</description>
    </item>
    <item>
      <title>Towards sockets and networking in WebAssembly and WASI</title>
      <link>https://radu-matei.com/blog/towards-sockets-networking-wasi/</link>
      <pubDate>Fri, 16 Oct 2020 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/towards-sockets-networking-wasi/</guid>
      <description>In this article we look at the current state of the networking API in WASI, and add a minimal implementation together with socket clients in AssemblyScript and Rust (with an upfront disclaimer that this should definitely not be used for anything other than experimentation).</description>
    </item>
    <item>
      <title>Introduction to Brigade - video demo</title>
      <link>https://radu-matei.com/blog/brigade-intro/</link>
      <pubDate>Tue, 28 Jul 2020 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/brigade-intro/</guid>
      <description>Video demonstration of getting started with Brigade</description>
    </item>
    <item>
      <title>Getting started with NodeJS and the WebAssembly System Interface</title>
      <link>https://radu-matei.com/blog/nodejs-wasi/</link>
      <pubDate>Sun, 19 Jul 2020 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/nodejs-wasi/</guid>
      <description>NodeJS recently added experimental support for executing WebAssembly modules using WASI, or the WebAssembly System Interface. In this article we explore how to get started with the WASI sandbox and writing various modules we can execute, in Rust, or AssemblyScript.</description>
    </item>
    <item>
      <title>Writing a simple WASM API layer using interface types and Wasmtime</title>
      <link>https://radu-matei.com/blog/wasm-api-witx/</link>
      <pubDate>Tue, 23 Jun 2020 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/wasm-api-witx/</guid>
      <description>In this short article we explore how to get started with WebAssembly interface types by defining a simple API layer, then implementing that using Wiggle and Wasmtime</description>
    </item>
    <item>
      <title>A beginner&#39;s guide to adding a new WASI syscall in Wasmtime</title>
      <link>https://radu-matei.com/blog/adding-wasi-syscall/</link>
      <pubDate>Tue, 31 Mar 2020 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/adding-wasi-syscall/</guid>
      <description>In this article, we explore how to add a new system call to WASI, the WebAssembly System Interface, and implement it in Wasmtime</description>
    </item>
    <item>
      <title>Random WSL tips &amp; tricks</title>
      <link>https://radu-matei.com/blog/random-wsl-tips/</link>
      <pubDate>Sat, 09 Nov 2019 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/random-wsl-tips/</guid>
      <description>If you&amp;rsquo;re getting started with using WSL2, here are a few tips for making the most of your experience - from running Linux GUI apps, to accessing the Linux filesystem from Windows Explorer or exporting your distribution.</description>
    </item>
    <item>
      <title>Version control for your WSL distribution with a Dockerfile</title>
      <link>https://radu-matei.com/blog/wsl-versioned-filesystem-docker/</link>
      <pubDate>Thu, 07 Nov 2019 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/wsl-versioned-filesystem-docker/</guid>
      <description>In this article, we will explore how to build a WSL distribution using a Dockerfile, allowing us to version our entire WSL configuration.</description>
    </item>
    <item>
      <title>Securely distributing and signing WebAssembly modules using OCI and TUF</title>
      <link>https://radu-matei.com/blog/wasm-oci-tuf/</link>
      <pubDate>Sun, 03 Nov 2019 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/wasm-oci-tuf/</guid>
      <description>Attacks on software repositories happen all the time, and any future WebAssembly repository and client tooling should be prepared to mitigate these attacks. In this article we will explore a minimum security model for WebAssembly registries and client tooling based on The Update Framework, and how to integrate this model when distributing WebAssembly modules using OCI registries.</description>
    </item>
    <item>
      <title>Distributing WebAssembly modules using OCI registries</title>
      <link>https://radu-matei.com/blog/wasm-to-oci/</link>
      <pubDate>Sun, 13 Oct 2019 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/wasm-to-oci/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://radu-matei.com/img/article-photos/wasm-to-oci/wasm-to-oci.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://webassembly.org&#34;&gt;WebAssembly (WASM)&lt;/a&gt; &lt;em&gt;is a binary instruction format for a stack-based virtual machine.&lt;/em&gt; In familiar terms, WASM is used as a compilation target for various programming languages (C, C++, Rust, or Golang, for example), generating a compact binary with a known format. &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/WebAssembly/Concepts&#34;&gt;Mozilla Developer Network describes&lt;/a&gt; WebAssembly as having &lt;em&gt;huge implications for the web platform — it provides a way to run code written in multiple languages on the web at near native speed, with client apps running on the web that previously couldn’t have done so.&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cross platform GitHub Action for downloading, extracting, and adding tools to path</title>
      <link>https://radu-matei.com/blog/github-action-cross-plat-configure-tools/</link>
      <pubDate>Tue, 17 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/github-action-cross-plat-configure-tools/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://radu-matei.com/img/article-photos/building-github-actions/actions-logo.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ever since I started to use GitHub Actions, one of the tasks I copy and pasted the most contained the following steps:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;download a file or an archive containing a statically compiled tool&lt;/li&gt;&#xA;&lt;li&gt;extract if it is an archive&lt;/li&gt;&#xA;&lt;li&gt;copy the target tool to a directory in the path&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;And after an embarrassing number of tries, my jobs would contain a step that would resemble the following (taken from an actual GitHub Action):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Glottal stops and alveolar taps as a non-native English speaker</title>
      <link>https://radu-matei.com/personal/glottal-stops/</link>
      <pubDate>Sat, 07 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/personal/glottal-stops/</guid>
      <description>Because of the notoriously confusing nature of English pronunciation in terms of phonemes, rather than letters of the alphabet, one must be aware, for example, that the word ‘enough’ begins with the same vowel phoneme as the beginning of the word ‘inept’, and ends with the same consonant as ‘stuff’.</description>
    </item>
    <item>
      <title>The state of CNAB: Part 2 - CNAB Registries</title>
      <link>https://radu-matei.com/blog/state-of-cnab-part-2/</link>
      <pubDate>Thu, 05 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/state-of-cnab-part-2/</guid>
      <description>In this series, we explore the state of the Cloud Native Application Bundles (CNAB) specifications, and do a deep dive into the distribution of bundles, and security and attestation.</description>
    </item>
    <item>
      <title>The state of CNAB: Part 1 - CNAB Core</title>
      <link>https://radu-matei.com/blog/state-of-cnab-part-1/</link>
      <pubDate>Wed, 04 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/state-of-cnab-part-1/</guid>
      <description>In this series, we explore the state of the Cloud Native Application Bundles (CNAB) specifications, and do a deep dive into the distribution of bundles, and security and attestation.</description>
    </item>
    <item>
      <title>Building self-contained, single executable .NET Core 3 CLI tools</title>
      <link>https://radu-matei.com/blog/self-contained-dotnet-cli/</link>
      <pubDate>Mon, 02 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/self-contained-dotnet-cli/</guid>
      <description>This is the .NET Core’s first iteration at self-contained binaries. It is not ideal - the resulting size of ~40M is probably way too large for simple applications. But the fact that now we can actually create a global tool with .NET and distribute it without requiring users to install .NET is extremely exciting! Not to mention the ease of packaging applications in containers, and not having to copy tens of files.</description>
    </item>
    <item>
      <title>Adding dark mode to a Hugo static website without learning CSS</title>
      <link>https://radu-matei.com/blog/dark-mode/</link>
      <pubDate>Sun, 01 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/dark-mode/</guid>
      <description>How I added a dark theme toggle to my Hugo website without writing a single line of CSS</description>
    </item>
    <item>
      <title>Building Reusable GitHub Actions in TypeScript, using the official toolkit</title>
      <link>https://radu-matei.com/blog/building-github-actions/</link>
      <pubDate>Fri, 23 Aug 2019 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/building-github-actions/</guid>
      <description>GitHub Actions now supports CI/CD - and while the workers for Actions come pre-configured with support for lots of programming languages and frameworks, you have the option to use an existing action to configure the environment, or build your own. In this article we will see how to build reusable actions using the Actions toolkit</description>
    </item>
    <item>
      <title>Running Kubernetes end-to-end tests with Kind and GitHub Actions</title>
      <link>https://radu-matei.com/blog/kubernetes-e2e-github-actions/</link>
      <pubDate>Wed, 21 Aug 2019 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/kubernetes-e2e-github-actions/</guid>
      <description>Using Kubernetes in Docker in GitHub Actions</description>
    </item>
    <item>
      <title>Running end-to-end tests on your Kubernetes cluster with Kind and Brigade</title>
      <link>https://radu-matei.com/blog/kubernetes-e2e-kind-brigade/</link>
      <pubDate>Sat, 10 Aug 2019 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/kubernetes-e2e-kind-brigade/</guid>
      <description>The goal of this article is to show you how to configure running Kind in a pod in Kubernetes, then abstract the configuration and automate it using Brigade.</description>
    </item>
    <item>
      <title>Rendering Helm templates in the browser, with WebAssembly</title>
      <link>https://radu-matei.com/blog/helm-wasm/</link>
      <pubDate>Sat, 11 May 2019 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/helm-wasm/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been trying to find a weekend to play around with Web Assembly for at least&#xA;a couple of months now - I had previously read the &lt;em&gt;hello world&lt;/em&gt; examples for&#xA;both Go and Rust, but never had the time to actually try things out. So I&#xA;decided to take a piece of real world Go code, that is used today in Helm, and&#xA;see if I can get it to execute in the browser - I chose to replicate a simpler&#xA;version of &lt;code&gt;helm template&lt;/code&gt;, where you input the template, values file, and&#xA;metadata in the web page, and the rendered template gets printed out.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Writing controllers for Kubernetes CRDs with C#</title>
      <link>https://radu-matei.com/blog/kubernetes-controller-csharp/</link>
      <pubDate>Mon, 06 May 2019 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/kubernetes-controller-csharp/</guid>
      <description>The goal of this article is to show you how to use the Kubernetes C# client to write extremely simple controllers for your Kubernetes custom resources, and start watching resources in a few lines of C#</description>
    </item>
    <item>
      <title>Instant Scaling on Demand: Serverless Kubernetes with Brigade</title>
      <link>https://radu-matei.com/blog/brigade-scaling-vk/</link>
      <pubDate>Mon, 01 Apr 2019 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/brigade-scaling-vk/</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;a href=&#34;https://cloudblogs.microsoft.com/opensource/2019/04/01/brigade-kubernetes-serverless-tutorial&#34;&gt;This article originally appeared on the Microsoft open source blog&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Microservices built on Kubernetes are fast becoming one of the core scenarios&#xA;where computing is done, and Kubernetes development and operations skills are&#xA;therefore becoming a larger part of any cloud-native toolset. This article shows&#xA;how to use some of the Cloud Native Computing Foundation (CNCF) and&#xA;&lt;a href=&#34;https://www.cncf.io/sandbox-projects/&#34;&gt;CNCF sandbox projects&lt;/a&gt; together to build&#xA;a Kubernetes-native application that listens for events and then runs serverless&#xA;pipelines on Virtual Kubelet instances, each of which are dynamically created&#xA;(and recycled when the pipeline is done).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Filter secrets from Kubernetes logs</title>
      <link>https://radu-matei.com/blog/filter-k8s-logs/</link>
      <pubDate>Mon, 20 Aug 2018 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/filter-k8s-logs/</guid>
      <description>&lt;!-- raw HTML omitted --&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;Running any non-trivial application on Kubernetes will most likely require&#xA;authorized access to other components - databases, storage buckets, APIs - all&#xA;of which require a connection string or some sort of access key. Storing these&#xA;values in Kubernetes is done through &lt;a href=&#34;https://kubernetes.io/docs/concepts/configuration/secret/&#34;&gt;Secrets&lt;/a&gt;, and while there are&#xA;plenty of ways to make sure the secrets are &lt;a href=&#34;https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/&#34;&gt;safe while at&#xA;rest&lt;/a&gt;, as well as how to &lt;a href=&#34;https://kubernetes.io/docs/tasks/administer-cluster/kms-provider/&#34;&gt;configure an external KMS&#xA;provider&lt;/a&gt;, once the secret is injected into your application&#xA;container, its value will be plain text.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The state of debugging microservices on Kubernetes</title>
      <link>https://radu-matei.com/blog/state-of-debugging-microservices-on-k8s/</link>
      <pubDate>Sat, 05 May 2018 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/state-of-debugging-microservices-on-k8s/</guid>
      <description>For as long as we have been writing software, we have also introduced bugs in our applications. Back when we were developing monoliths, we could simply start the IDE of choice, add a couple of breakpoints, step through the code and hopefully solve the issue. There was a single place where the application was running, where logs were visible and where the application could be diagnosed.</description>
    </item>
    <item>
      <title>Debug Helm and Tiller using VS Code and Draft</title>
      <link>https://radu-matei.com/blog/debug-helm-tiller/</link>
      <pubDate>Sun, 29 Apr 2018 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/debug-helm-tiller/</guid>
      <description>&lt;!-- raw HTML omitted --&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;In today&amp;rsquo;s article we will explore how to take a real-world application and start developing, debugging and deploying it to a Kubernetes cluster and how to use a couple of open-source tools to make our lives easier in the process. Specifically, we will use &lt;a href=&#34;https://github.com/kubernetes/helm&#34;&gt;Helm, the package manager for Kubernetes&lt;/a&gt;, the newly released &lt;a href=&#34;https://github.com/azure/vscode-kubernetes-tools&#34;&gt;Kubernetes extension for VS Code&lt;/a&gt; and &lt;a href=&#34;https://github.com/azure/draft&#34;&gt;Draft&lt;/a&gt; to develop, debug and deploy is Helm itself.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Draft to develop front-end &#43; back-end applications. Experimenting with Draft, VS Code and remote debugging.</title>
      <link>https://radu-matei.com/blog/real-world-draft/</link>
      <pubDate>Tue, 10 Apr 2018 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/real-world-draft/</guid>
      <description>Application containers have skyrocketed in popularity over the last few years. In recent months, Kubernetes has emerged as a popular solution for orchestrating these containers. While many turn to Kubernetes for its extensible architecture and vibrant open-source community, some still view Kubernetes as too difficult to use. Learn how to use Draft to simplify your cloud-native application development!</description>
    </item>
    <item>
      <title>kube-toolkit: Toolkit for creating gRPC-based CLI tools for Kubernetes, written in Go</title>
      <link>https://radu-matei.com/blog/kube-toolkit/</link>
      <pubDate>Mon, 18 Dec 2017 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/kube-toolkit/</guid>
      <description>Building tools like Helm and Draft for Kubernetes using gRPC and Go</description>
    </item>
    <item>
      <title>Update Azure Container Instances with Docker Hub webhooks</title>
      <link>https://radu-matei.com/blog/aci-update/</link>
      <pubDate>Thu, 14 Dec 2017 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/aci-update/</guid>
      <description>Back in July, Microsoft announced Azure Container Instances, a new Azure service delivering containers with great simplicity and speed and without any Virtual Machine infrastructure to manage. ACIs are the fastest and easiest way to run a container in the cloud. In this article we will see how to update Azure Container Instances based on webhooks from Docker Hub</description>
    </item>
    <item>
      <title>Getting started with SignalR Alpha 2</title>
      <link>https://radu-matei.com/blog/signalr-core/</link>
      <pubDate>Sun, 26 Nov 2017 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/signalr-core/</guid>
      <description>In this article we will explore how to get started with the Alpha 2 version of SignalR for ASP.NET Core 2.0 and understand streaming, sending binary data, using the Redis scaleout and, of course, chat!</description>
    </item>
    <item>
      <title>Best of Both worlds: Azure App Service and Kubernetes</title>
      <link>https://radu-matei.com/blog/k8s-appsvc/</link>
      <pubDate>Tue, 17 Oct 2017 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/k8s-appsvc/</guid>
      <description>In this article we will explore how to integrate Azure App Service and Kubernetes within the same Azure Virtual Network and consume Kubernetes services from an Azure App Service app without exposing them on the public Internet. There will be lots of situations when we want to use both the simplicity and features of a PaaS service (such as autoscaling, easy SSL, or any other cool feature) for a component and the flexibility of Kubernetes for others - in this article we will see how to achieve this without exposing services on the Internet.</description>
    </item>
    <item>
      <title>Jenkins pipelines with Kubernetes </title>
      <link>https://radu-matei.com/blog/kubernetes-jenkins-azure/</link>
      <pubDate>Sun, 08 Oct 2017 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/kubernetes-jenkins-azure/</guid>
      <description>The goal of this article is to show you how to deploy Jenkins to your Kuberentes cluster using Helm and write Jenkins pipelines that execute builds within pods in your cluster - all of this while replicating your Jenkins configuration and persisting everything with Kubernetes persistent storage.</description>
    </item>
    <item>
      <title>Get started with Helm and Draft for Kubernetes</title>
      <link>https://radu-matei.com/blog/k8s-helm-draft-azure/</link>
      <pubDate>Sat, 07 Oct 2017 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/k8s-helm-draft-azure/</guid>
      <description>This post shows you how to automatize and simplify working with multiple Kubernetes clusters and multiple tools such as kubectl, helm or draft - creating a container image with your desired version of the tools and mounting the config files to the container</description>
    </item>
    <item>
      <title>Kubernetes 1.8 on Azure</title>
      <link>https://radu-matei.com/blog/k8s18-azure/</link>
      <pubDate>Fri, 06 Oct 2017 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/k8s18-azure/</guid>
      <description>In this post you&amp;rsquo;ll see how to deploy Kubernetes 1.8 and later on Azure using ACS Engine, an open-source tool that creates the entire configuration for your orchestration cluster and deploys it on Azure Container Service.</description>
    </item>
    <item>
      <title>The Hybrid Cluster: A CI/CD Story [Part 1] - Configuring a hybrid swarm mode cluster in Azure with acs-engine</title>
      <link>https://radu-matei.com/blog/hybrid-swarmmode/</link>
      <pubDate>Mon, 03 Jul 2017 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/hybrid-swarmmode/</guid>
      <description>We&amp;rsquo;ll explore how to create a hybrid Docker Swarm Mode cluster with Linux and Windows agents, deploy it on Azure Container Service using ACS Engine, see how to connect to the cluster and manage it and finally how to deploy hybrid services with both Linux and Windows Server containers.</description>
    </item>
    <item>
      <title>Real-Time ASP .NET Core</title>
      <link>https://radu-matei.com/blog/real-time-aspnet-core/</link>
      <pubDate>Sat, 18 Feb 2017 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/real-time-aspnet-core/</guid>
      <description>We will write an ASP.NET Core middleware for providing real-time functionality to your applications. To its core, this is a WebSockets middleware for ASP .NET Core applications with TypeScript / JavaScript and .NET clients - all this wile exploring the inner workings of ASP.NET Core middleware.</description>
    </item>
    <item>
      <title>Creating a WebSockets middleware for ASP .NET Core 3</title>
      <link>https://radu-matei.com/blog/aspnet-core-websockets-middleware/</link>
      <pubDate>Fri, 30 Dec 2016 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/aspnet-core-websockets-middleware/</guid>
      <description>We&amp;rsquo;ll explore the low-level websockets API in .NET Core, understand the Middleware concept and finally write a websocket manager middleware that handles communication between various clients and your ASP.NET Core application.</description>
    </item>
    <item>
      <title>Dockerizing an ASP.NET Core application with GitHub, Docker Cloud and Azure</title>
      <link>https://radu-matei.com/blog/aspnet-core-docker-azure/</link>
      <pubDate>Sat, 26 Nov 2016 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/aspnet-core-docker-azure/</guid>
      <description>In this article, we will take the simplest ASP.NET Core application, run it with Docker locally, then create Continuous Integration and Continuous Deployment flows using a GitHub repository, Docker Cloud and an Azure virtual machine that will act as a node for Docker Cloud.</description>
    </item>
    <item>
      <title>Get started with Raspberry Pi3, Sense HAT and Azure IoT Suite</title>
      <link>https://radu-matei.com/blog/rpi-sensehat-telemetry/</link>
      <pubDate>Mon, 10 Oct 2016 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/rpi-sensehat-telemetry/</guid>
      <description>In this blog post, we will get started with the Raspberry Pi3, the Sense HAT and Azure IoT Suite. More specifically, from the IoT Suite we will use IoT Hub, and Stream Analytics, and the end goal of this little project is to acquire data from the sensors, upload the data to IoT Hub, which feeds it into Stream Analytics, with outputs to an Azure SQL database (for storage) and to Service Bus (for consuming the data in real-time from various applications).</description>
    </item>
    <item>
      <title>ASP.NET Core MVC and SignalR Core</title>
      <link>https://radu-matei.com/blog/aspnet-core-mvc-signalr/</link>
      <pubDate>Fri, 09 Sep 2016 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/aspnet-core-mvc-signalr/</guid>
      <description>In this article we will explore how to get started with the Alpha 2 version of SignalR for ASP.NET Core 2.0 and understand streaming, sending binary data, using the Redis scaleout and, of course, chat!</description>
    </item>
    <item>
      <title>Inject ASP.NET Core Dependencies from JSON files</title>
      <link>https://radu-matei.com/blog/aspnet-core-json-dependency-injection/</link>
      <pubDate>Thu, 18 Aug 2016 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/aspnet-core-json-dependency-injection/</guid>
      <description>Back in the days of ASP.NET 4.x, each of the framework components - MVC, WebAPI, OWIN, SignalR - had its own dependency resolver and its own way of integrating with the framework. ASP.NET Core brings a consistent dependency injection mechanism with a unified meaning for lifetime or service registration,that is designed to server the needs of the framework and most consumer applications built on it. In this article, we will see a way of defining the service types and the implementation types we want to use based on a JSON file and switch between implementations without changing the code.</description>
    </item>
    <item>
      <title>Introduction to ASP .NET Core MVC API</title>
      <link>https://radu-matei.com/blog/aspnet-core-api/</link>
      <pubDate>Fri, 05 Aug 2016 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/aspnet-core-api/</guid>
      <description>In this article we will be looking at ASP .NET Core MVC, more specifically at how to build an API that can be consumed from any type of application, be it web, mobile or desktop. We will build a very simple application that will enable the creation of posts (much like messages) and that will take us through adding the MVC services, creating models, controllers and consuming some data.</description>
    </item>
    <item>
      <title>ASP .NET Core JSON Configuration and Dependency Injection</title>
      <link>https://radu-matei.com/blog/aspnet-core-configuration-greeting/</link>
      <pubDate>Sat, 23 Jul 2016 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/aspnet-core-configuration-greeting/</guid>
      <description>The new configuration system provides support for JSON, XML, INI and for in-memory configuration, while also allowing you to create your custom configuration provider. Let&amp;rsquo;s assume that in our application we want the response messages not to be hard-coded in Startup anymore, but stored in a configuration file so we don&amp;rsquo;t have to stop, modify or recompile our application every time the messages or the routes change.</description>
    </item>
    <item>
      <title>ASP .NET Core Routing</title>
      <link>https://radu-matei.com/blog/aspnet-core-routing/</link>
      <pubDate>Wed, 20 Jul 2016 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/aspnet-core-routing/</guid>
      <description>So far we built simple web applications that responded with the same message for each request. However, any real-world application is going to need a more complex way of handling requests, so in this article we will see how to create route handlers for specific routes and how to extract parameters from the request URI - we will explore the low-level Routing API.</description>
    </item>
    <item>
      <title>ASP .NET Core Startup</title>
      <link>https://radu-matei.com/blog/aspnet-core-startup/</link>
      <pubDate>Tue, 19 Jul 2016 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/aspnet-core-startup/</guid>
      <description>Any non-trivial application is going to need a mechanism to handle different types of requests and map them to specific services and middleware and configure services. This is accomplished through the &lt;code&gt;Startup&lt;/code&gt; class, which is also the entry point for any incoming HTTP request.</description>
    </item>
    <item>
      <title>ASP .NET Core Introduction</title>
      <link>https://radu-matei.com/blog/aspnet-core-getting-started/</link>
      <pubDate>Mon, 18 Jul 2016 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/aspnet-core-getting-started/</guid>
      <description>ASP.NET Core is a new open-source and cross-platform framework for building modern cloud based internet connected applications, such as web apps, IoT apps and mobile backends and a complete re-write of the 4.6 framework that came out last year and comes with a completely new architecture based on .NET Core. In this article we will see how to get started with ASP.NET Core.</description>
    </item>
    <item>
      <title>Getting Started with .NET Core and VS Code</title>
      <link>https://radu-matei.com/blog/dot-net-core-getting-started/</link>
      <pubDate>Sun, 17 Jul 2016 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/dot-net-core-getting-started/</guid>
      <description>We will see how to get started with VS Code and .NET Core</description>
    </item>
    <item>
      <title>Introduction to .NET Core</title>
      <link>https://radu-matei.com/blog/dot-net-core-introduction/</link>
      <pubDate>Sat, 16 Jul 2016 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/blog/dot-net-core-introduction/</guid>
      <description>Introduction to .NET Core</description>
    </item>
    <item>
      <title>Hi!</title>
      <link>https://radu-matei.com/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://radu-matei.com/about/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m the CTO and co-founder of &lt;a href=&#34;https://fermyon.com&#34;&gt;Fermyon&lt;/a&gt;, where&#xA;I created &lt;a href=&#34;https://github.com/fermyon/spin&#34;&gt;the Spin project&lt;/a&gt; and I work on&#xA;building a new generation of computing platforms using Wasm.&lt;/p&gt;&#xA;&lt;p&gt;In the past I worked at Microsoft in the&#xA;&lt;a href=&#34;https://github.com/deislabs&#34;&gt;DeisLabs&lt;/a&gt; research and development team, where I&#xA;was a core maintainer for several&#xA;&lt;a href=&#34;https://github.com/orgs/deislabs/repositories?q=&amp;amp;type=&amp;amp;language=rust&amp;amp;sort=&#34;&gt;server-side WebAssembly&lt;/a&gt;&#xA;and distributed systems projects like &lt;a href=&#34;https://krustlet.dev&#34;&gt;Krustlet&lt;/a&gt;,&#xA;&lt;a href=&#34;https://github.com/Azure/draft&#34;&gt;Draft&lt;/a&gt;,&#xA;&lt;a href=&#34;https://github.com/brigadecore/brigade&#34;&gt;Brigade&lt;/a&gt;, or the&#xA;&lt;a href=&#34;https://cnab.io&#34;&gt;Cloud Native Application Bundle&lt;/a&gt; project.&lt;/p&gt;&#xA;&lt;p&gt;Sometimes I write about &lt;a href=&#34;https://radu-matei.com/blog&#34;&gt;serious topics&lt;/a&gt;, and sometimes I write &lt;a href=&#34;https://radu-matei.com/notes&#34;&gt;short notes&lt;/a&gt;&#xA;about personal projects and experiments.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
