Swatinem Blog Resume

What makes a good test?

Fun with Arrays in SQL

Am I losing money with swing trading?

Towards fast `thread_local!` context

More fun with SSO, part 2

Fun with benchmarking small string optimization

A Rustaceans view on gRPC and Cap'n Proto

Rust `thread_local!`s are surprisingly expensive

A Rant about Software Bloat

Choosing a more optimal `String` type

Optimizing Rust Enum `Debug`-ing with Perfect Hashing

Finding and fixing runaway Android Battery Usage

The magic of scope guards

A locking war story

Files need Identity

The size of Rust Futures

A deep dive into DWARF line programs

2022 Retrospective

Improving async Rust codegen

Implementation Details of async Rust

Rustdoc doctests need fixing

Inspiration

Non-abbreviated Abbreviations

A deep dive into Portable PDB Sequence Points

A deep dive into SourceMaps

The Magic of zerocopy
(compared with scroll)

Format Ossification

Please delete your Snapshot Tests

Pitfalls of fallible Iterators

Self-referential structs and alternatives

The magic of AsRef

Dreaming of a balanced week

Non-Lazy Futures Considered Harmful

Rust Contexts
… in the context of logging

Rust Futures and Tasks
A tale of concurrency and parallelism

Rust async can truly be zero-cost

Creating my own bespoke binary format

Howto Design an infallible algorithm that records errors

The REAL mathematics of fat-loss

Force Unwind Tables

Overcoming Bad Standards

Finding loaded libraries on Linux

Relax and Unwind
Part 2: Tracing the Stack

Relax and Unwind
Part 1: Understanding Native Calls

Investing
My take on current Events

The Problem with walled gardens
Mumblings about current events

Feedback on Rusts Code Coverage

Understanding the limitations of functional record update
Why is non_exhaustive incompatible with FRU?

Forms of blocking and non-blocking I/O
… and how they relate to languages and services

PSA: Clearing global debugger properties
Or: Why is my UnhandledExceptionFilter not firing?

Rust 2021
Quality, frictionless tooling

Documentation Driven Development
… and a wishlist for better Rust Tooling

PSA: Deactivate Windows Security for your Source Repository
Or: How I cut my compile times in half

Fear, the class keyword, you must not!
Yet another TypeScript memory optimization story

Rewrite it in Rust

Improving your JS Tooling
OR: how to speed things up considerably

Optimizing TypeScript Memory Usage

My immersion-cooled Oil PC
…one year later

Lets learn Dependency Injection

Rust 2021: Confidence
#rust2020

Comparing Cypress and Puppeteer
An exercise in anger management

Lets talk about Pagination

Announcing intl-codegen 2

Database Access
A tale of API Design

GraphQL Code generators
Dreaming up the next generation of tools

Error Handling Considerations

Enforcing Rules
Linting your Code

Managing Intermediate Artifacts
Moving on to larger projects

DX on Small Projects
My Opinion and how I manage my own projects

DX Challenges of TS/JS Projects
Kicking off a blog series about managing TS Projects

Farewell WebTech
Or see you later rather?

Inadequacies of typed JavaScript
Some things can’t really be fixed :-(

Individualismus
Über Diversität und ein friedliches Zusammenleben

The one killer feature icon fonts have over svg
OR: why github icons look like shit now

Doing the impossible:
Choosing a Material Design Framework

New Blog