RSS Amplifier

Blog

Max McDonnell

Recent content on Max McDonnell

maxmcd.comRSS feed ↗7 posts

Latest posts

HTTP3, 2, 1

HTTP1 is simple and easy. With enough care you can open a TCP connection and
hand-write an HTTP request to a server and get a response. Good fun. 
 HTTP2 is more complex. Multiple bidirectional requests can be multiplexed over a
single connection. You might use it with something like GRPC, or to get web
pages to load faster. 
 HTTP3 is wild stuff. Implemented over UDP instead…

Can We Improve Process Per Request Performance in Node


 How fast can an HTTP server in Node run if we spawn a process for every request? 
 import { spawn } from 'node:child_process' ; 
 import http from 'node:http' ; 
 http 
 . createServer (( req , res ) => spawn ( 'echo' , [ 'hi' ]). stdout . pipe ( res )) 
 . listen ( 8001 ); 
 You should avoid spawning a new process for every HTTP request if at all
possible.…

Running Go on Val Town


 Let’s go on a winding debugging adventure together. I thought I could get a Go HTTP handler running on Val Town and I thought it would be easy. Val Town is a social website to write and deploy Typescipt. Val Town doesn’t support Go, but it supports WASM. Can we make it all work!? 
 
 If you want to skip all this and just run Go on Val Town you can follow the instructions…

Bramble: A Purely Functional Build System and Package Manager


 About a year and a half ago I decided to start working on a build system inspired by Nix called Bramble . Andrew Chambers had launched hermes and I was messing around with starlark-go a bit and it seemed like writing a Nix-inspired functional build system with Starlark would be a nice way to better understand how they work. 
 Bramble is no longer a test project, and has matured into…

Strategies for Binary Relocation In Functional Build Systems

I’m currently writing a toy Nix/Guix called Bramble to learn more about the inner workings of both systems. One of the features that I wanted to include in my version was “binary relocation”. 
 Both Nix and Guix have hardcoded store paths that are baked into all the outputs that they produce. If we take a look at part of a simple nix Derivation you’ll see that these…

Star: Go but in Python?

tl:dr star is a python(ish) programming environment that lets you call Go library functions. click down to the repl if you’d just like to play around 
 Starlark is Google’s custom subset of Python that it uses as a configuration language with Bazel. I started looking into it a little because it has some interesting characteristics. It’s not turing complete (no unbounded…

(untitled)

max.t.mcdonnell at gmail