I recently built a 5-node Raspberry Pi cluster running Wasm workloads using the new SpinKube project. This week, I joined Fermyon’s weekly live stream together with Sohan to talk about how I configured the cluster and to demonstrate running Spin applications on Kubernetes. You can follow along this gist to set up your own cluster, and stay tuned for a full write-up on this setup.| radu-matei.com
I’ve been writing on this blog since 2016. I’ve written about .NET, WebSockets, debugging microservices on Kubernetes, or about WebAssembly memory. I rarely have the time to write lengthy blog posts anymore, and social media seems to be the worst place to have a conversation these days; so I stopped posting almost entirely. I’m trying to change that with a new notes section of my blog where I’m trying to write more by sharing something in-between a tweet and a fully fledged blog post.| radu's blog
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.| radu's blog
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!| radu's blog
What is .NET Core?| radu-matei.com
Video demonstration of getting started with Brigade| radu-matei.com
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 Te...| radu-matei.com
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.| radu-matei.com
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.| radu-matei.com
New features such as pulling from container registries and outbound HTTP connections are now part of WAGI.| radu-matei.com
Send HTTP requests from Rust and AssemblyScript Wasm modules running in Wasmtime| radu-matei.com
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.| radu-matei.com
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...| radu-matei.com
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).| radu-matei.com
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.| radu-matei.com
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| radu-matei.com
If you'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.| radu-matei.com
In this article, we will explore how to build a WSL distribution using a Dockerfile, allowing us to version our entire WSL configuration.| radu-matei.com
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.| radu-matei.com
WebAssembly (WASM) is a binary instruction format for a stack-based virtual machine. 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. Mozilla Developer Network describes WebAssembly as having 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 tha...| radu-matei.com
Simple, cross-platform GitHub Action for downloading, extracting and adding statically compiled binaries to path.| radu-matei.com
If English is three languages in a trenchcoat pretending to be a language, then pronunciation is that trenchcoat made of hundreds of patches from different fabric.| radu-matei.com
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.| radu-matei.com
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.| radu-matei.com
.NET Core 3 brings single executable packaging. In this article, we'll explore how to build command line interfaces and distribute them as self-contained executables, and the tradeoffs between binary size and startup time.| radu-matei.com
How I added a dark theme toggle to my Hugo website without writing a single line of CSS| radu-matei.com
How to build reusable actions using the Actions toolkit| radu-matei.com
Using Kubernetes in Docker in GitHub Actions| radu-matei.com
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.| radu-matei.com
I’ve been trying to find a weekend to play around with Web Assembly for at least a couple of months now - I had previously read the hello world examples for both Go and Rust, but never had the time to actually try things out. So I decided to take a piece of real world Go code, that is used today in Helm, and see if I can get it to execute in the browser - I chose to replicate a simpler version of helm template, where you input the template, values file, and metadata in the web page, and the...| radu-matei.com
Lightweight controllers for your custom resource definitions, in C#| radu-matei.com
This article originally appeared on the Microsoft open source blog. Microservices built on Kubernetes are fast becoming one of the core scenarios where computing is done, and Kubernetes development and operations skills are therefore becoming a larger part of any cloud-native toolset. This article shows how to use some of the Cloud Native Computing Foundation (CNCF) and CNCF sandbox projects together to build a Kubernetes-native application that listens for events and then runs serverless pip...| radu-matei.com
How to remove secrets from the logs of Kubernetes applications?| radu-matei.com
What is the state of remote debugging microservices on Kubernetes? How do most people solve their issues, what tools do they use and how can we make this easier?| radu-matei.com
In today’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 Helm, the package manager for Kubernetes, the newly released Kubernetes extension for VS Code and Draft to develop, debug and deploy is Helm itself. Helm helps you manage Kubernetes applications — Helm Charts help you define, install, a...| radu-matei.com
Using Draft to simplify your cloud-native application development.| radu-matei.com
Building tools like Helm and Draft for Kubernetes using gRPC and Go| radu-matei.com
Automatically update the image of your Azure Container Instance and keep the public IP address of the container group| radu-matei.com
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!| radu-matei.com
Consuming a private API built with Kubernetes from Azure App Service| radu-matei.com
Deploy Jenkins using Helm, create Jenkins pipelines and execute builds in Kubernetes pods| radu-matei.com
Easy Kubernetes with Helm and Draft| radu-matei.com
Deploy Kubernetes 1.8 on Azure using acs-engine| radu-matei.com
Hi, I’m Radu! I am a software engineer passionate about WebAssembly, distributed systems, and artificial intelligence, working as the co-founder and CTO of Fermyon. In the past I worked at Microsoft Azure in the DeisLabs research and development team, where I was a core maintainer for multiple server-side WebAssembly and distributed systems projects like Krustlet, Draft, Brigade, or the Cloud Native Application Bundle project (building the distribution and security specifications).| radu-matei.com
Configuring a hybrid Docker Swarm Mode cluster on Azure using acs-engine| radu-matei.com
We’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.| radu-matei.com
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.| radu-matei.com
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).| radu-matei.com
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 w...| radu-matei.com
Create an ASP .NET Core MVC API| radu-matei.com
Creating a configurable Greeting service with ASP .NET Core, using Dependency Injection| radu-matei.com
Introduction to ASP .NET Core Routing| radu-matei.com
The ASP .NET Startup class| radu-matei.com
Getting started with ASP .NET Core| radu-matei.com
We will see how to get started with VS Code and .NET Core| radu-matei.com
In this article, we explore how to add a new system call to WASI, the WebAssembly System Interface, and implement it in Wasmtime| radu-matei.com