RSSAmplifier

Blog

Martijn Arts

Building something new with Rust and AI.

blog.martijnarts.comRSS feed ↗15 posts

Latest posts

Agents & what we're choosing

As coding moves more and more towards AI-based workflows, we're seeing a lot of tooling being built specifically for agentic coding. New types of tools, like agent harnesses and ACPs, are built around interacting with the agent, as opposed to tools specifically built for humans, like TUIs

Claude the frontend dev

Working on Holt Kit , I need to write a lot of Leptos components. A lot . Lots of components still to be done... Holt Kit is intended to be an overly complete collection of elements, which need to be maintainable and have a consistent level of quality and implementation style. So

Typescript lets you spread an array into an object

I ran into an instance of this  Typescript bug  recently. Basically, Typescript lets you do this without compiler errors: const arr = [1, 2, 3]; const x: { a: number[] } = { a: { ...arr } }; x.a.map(n => n + 1); Note the { ...arr } instead of [...arr] ! Running this throws the error

Hosting quickly 3 - A Neon database

This is the third (or third-and-a-halfth) article in a series called "Hosting quickly". I want to launch Rust apps quickly and often, and I want to have stable, common infrastructure for all of them. Hosting quickly 1 - Setting up Terraform, Github, and 1Password Hosting quickly

Hosting quickly 2.5 - Discovering and calling a backend from Dioxus

Hosting quickly 1 - Setting up Terraform, Github, and 1Password Hosting quickly 2 - Dioxus to the web on Fly.io We should make the backend serve some API that we can hit from the frontend. We'll turn the root endpoint in the backend into a JSON-returning endpoint: #[derive(

Hosting quickly 2 - Dioxus to the web on Fly.io

This is the second article in a series called "Hosting quickly". I want to launch Rust apps quickly and often, and I want to have stable, common infrastructure for all of them. Hosting quickly 1 - Setting up Terraform, Github, and 1Password Today, let's build a frontend

tstate - strongly typed Typescript state machines

If you read this blog or my digital garden you'll know I like working with state machines in the frontend. There's plenty of reasons for this, but the two main ones are that user interaction maps really well to state machines, and so do shared background

Testing complex XState machines

I love using state machines in my frontends, and the current winner library to do it is XState. State machines (or actually state charts) can get quite complex, and like with everything I've developed some specific ways to test it. I've collected some guidelines and tricks

Experiments in recreating Rust's try operator in Typescript

I love neverthrow , io-ts' Either , or a homemade Result library as much as anyone, but I do miss the ? -operator in Typescript. This is my attempt at recreating it [1] . The basic idea There are two core things that Rust's ? -operator allows us to do: early

Hosting quickly 1: Setting up Terraform, Github, and 1Password

This is the first article in a series called "Hosting quickly". I want to launch Rust apps quickly and often, and I want to have stable, common infrastructure for all of them. Hosting quickly 1: Setting up Terraform, Github, and 1Password We'll call this Cochrane [1]

Predictable programming 3 - using XState

In the last two posts ( 1 , 2 ) in this series, I explained why I want Typescript to be more predictable, and some of the most important guidelines I follow to make that happen. Here, I want to dive into a specific library that has helped me significantly improve the predictability

Easier generic functions over similar structs in Rust

While developing RCKIVE , I've done a development against Shopify's GraphQL APIs. I quickly found out that the dealing with GraphQL in Rust could be challenging. Generating Rust serde structs and clients from GraphQL is seamless, but GraphQL's lenient response typing doesn't combine

Predictable programming 2: making Typescript more like Rust

This is the second post in a series of blog posts where I explore ways to make Typescript development more predictable. I describe my motivations in-depth in my first post. In this post, I'll focus on a list of concrete techniques to make Typescript development more predictable.

Building a better Typescript error

Javascript errors are bad. I think we can all agree that new Error("...") doesn't give you something super useful to work with. Extending the Error class is surprisingly difficult . After that, actually dealing with the errors turns into a bit of a guessing game on what

Predictable programming 1: how Typescript isn't Rust

I've spent a lot of time building and maintaining React applications. React, with Typescript, is fine, but I keep coming back to the same realisation: it's not Rust. Over the past few years I've been learning Rust, and it has transformed how I write