Rüdiger's Blog
A minimal blog about Rust, systems programming, and other things.
Latest posts
Iroh post-quantum key exchange
Starship Lunar Architecture with Tether-Launched LunOX
Propellantless lunar launcher applications In previous posts I have described a lunar sling catapult that can launch mass to EML1 without propellant expenditure and with very low cost. Other people are in favour of electromagnetic mass drivers. See this recent blog post from Casey Handmer . Whatever solution wins, in the medium term we can have a cheap propellantless way to launch mass from the…
QUIC packet rejection in practice
Lunar Sling Launcher - Release Mechanism
Building a subscale prototype. Part 1 - release mechanism The previous two blog posts described what lunar sling tethers are and why they are a good idea. But a lot has been written about the topic. Now it's time to build something. Why? A sling launcher on earth is pretty useless. You have some fundamental velocity limitations due to atmospheric drag. A useful number is the rough energy…
Running iroh on an ESP32
Lunar Sling Launcher - Tether Dynamics
Whenever somebody proposes a space-based system using tethers, the biggest question is always the dynamic behaviour of the system. A tether can only be loaded in tension. It has almost no longitudinal passive damping, and lateral damping that is so close to zero that it might as well not exist. On Earth, you get some damping due to interactions with the air. But in the vacuum of space, a lateral…
How QUIC rejects garbage packets
Lunar Sling Launchers
With the renewed interest in lunar settlement and using the Moon as a source of raw materials, we are finally getting to the point where we need a way to launch bulk mass off the Moon. The most popular concept to do this is a mass driver, basically a magnetic catapult, as described in The High Frontier by Gerard K. O'Neill. But there is a less well known concept that is much more realistic in…
Use iroh with Tor for anonymous connections
Hashing multiple blobs with BLAKE3
iroh-blobs 0.95 - New features
A DHT for iroh - Part 1, The Protocol
IRPC
iroh-blobs 0.90 - New Request Types and Features
iroh-blobs v0.90 - The Upgrade Guide
0-RTT
The new BLAKE3 hazmat API
A richer tags api
Blob store design challenges
Lose your device, but keep your keys
Async Rust Challenges in Iroh
Iroh content discovery experiments
Iroh and DAGs
Iroh global node discovery
Rust 2020
A week ago, the rust language team has called for blog posts about the future of the rust language. I am not really a part of the rust community. My biggest community contribution so far was to organize a meetup . I have recently started publishing a few open source libraries on crates.io. But here are my 2 cents anyway. First of all, I absolutely love rust. It combines my desire for writing code…
Interplanetary telemetry compression
TL;DR; You have large quantities of telemetry or other simply structured JSON data. You want to store it on IPFS in a very space efficient way. Then this is for you. History Telemetry at GSOC I have been working with large quantities of telemetry at my previous job at Heavens-Above GmbH , working for the German Space Operations Center . I was writing a system to store and make accessible telemetry…
Safely running a public IPFS gateway using nginx
TL;DR; publish multiple websites via IPFS provide access via IPFS gateway prevent download of arbitrary, non-endorsed content Why? If you are working or playing with IPFS, you are probably running an ipfs node somewhere on the internet. IPFS has the nice property that your node will only ever contain data that you have requested or added yourself, so this is a pretty safe thing to do. The…
Publishing a blog on IPFS
TL;DR; jekyll based blog hosted on github continuous integration using travis ci pushed to IPFS by travis DNS by aws route53 Why? My blog is currently hosted on github using jekyll and poole. A blog without comments is static content which can be easily hosted on the interplanetary file system . I always thought it would be fun to do this, but the recent ownership change of github gave me…
Minimum-Comparison Merging in spire
BinaryMerge - Efficient binary merge in spire Problem At the end of 2014, I was thinking about what would be the most efficient way to merge two sorted sequences. The answer is obviously trivial if you consider copying elements to be roughly as expensive as comparing elements. In that case, simply compare the first remaining element of each sequence and take the smaller one, until you run out of…
The Sonic Reducer
sonicreducer - hierarchical reduction of sequences and iterables Problem This is a tiny library for reducing arrays or traversables in an hierarchical way. This can turn O(n^2) operations into O(n log n) operations in some cases. Imagine you had to concatenate a large number of String s without using a StringBuilder . The most straightforward way to do this would be strings.reduce(_ + _) . But…
Array based immutable collections
abc - Wrap arrays as fast, immutable collections Motivation Primitive arrays are fast and compact in memory. But they are mutable, have a lot of quirks, and do not even have a working equals and hashcode. So they are rarely used directly as data structures in scala. This library wraps flat, primitive arrays as immutable sequences, sets and maps. Now at first, the idea of having an immutable data…