41554 blogs · [ { "id": "01a087e8-6a67-70cc-a9f0-4298fe2c530f", "title": "Has AI killed open source", "url": "https://swatinem.de/blog/ai-killed-open-source/", "published_at": "2026-08-12T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4298fee81480", "title": "Please just `panic!`", "url": "https://swatinem.de/blog/panic-please/", "published_at": "2025-09-24T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4298ff60313c", "title": "Bis wann lohnt sich die Regelbesteuerung?", "url": "https://swatinem.de/blog/regelbesteuerung/", "published_at": "2025-09-20T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4298fff82734", "title": "Finding a usable sans-io pattern", "url": "https://swatinem.de/blog/sans-io-pattern/", "published_at": "2025-08-10T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42990009e9c3", "title": "Playing around with replication", "url": "https://swatinem.de/blog/replication/", "published_at": "2025-07-31T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429900ddf02e", "title": "The Complexities of Rust Async Streams", "url": "https://swatinem.de/blog/rust-async-streams/", "published_at": "2025-07-29T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42990189d3bc", "title": "Implementing a GraphQL DataLoader the hard way", "url": "https://swatinem.de/blog/graphql-dataloader-part2/", "published_at": "2025-04-19T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429901b26510", "title": "How a GraphQL DataLoader works", "url": "https://swatinem.de/blog/graphql-dataloader-part1/", "published_at": "2025-04-13T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429901be6f3e", "title": "Should I pin my Rust toolchain version?", "url": "https://swatinem.de/blog/rust-toolchain/", "published_at": "2025-02-15T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299022cf1ae", "title": "Rust is both uniquely good and bad at handling formats", "url": "https://swatinem.de/blog/rust-sparse-formats/", "published_at": "2025-02-07T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299030b820b", "title": "What makes a good test?", "url": "https://swatinem.de/blog/good-tests/", "published_at": "2024-09-12T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299036a9f96", "title": "Fun with Arrays in SQL", "url": "https://swatinem.de/blog/sql-arrays/", "published_at": "2024-07-29T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299044a8a25", "title": "Am I losing money with swing trading?", "url": "https://swatinem.de/blog/swing-trading/", "published_at": "2024-07-20T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429904faa978", "title": "Towards fast `thread_local!` context", "url": "https://swatinem.de/blog/thread-local-context/", "published_at": "2024-05-17T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429904feabd4", "title": "More fun with SSO, part 2", "url": "https://swatinem.de/blog/smallstring-v2/", "published_at": "2024-05-03T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299050ff0d9", "title": "Fun with benchmarking small string optimization", "url": "https://swatinem.de/blog/smallstring-opt/", "published_at": "2024-04-28T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429905df8349", "title": "A Rustaceans view on gRPC and Cap'n Proto", "url": "https://swatinem.de/blog/rust-grpc-capnp/", "published_at": "2024-04-17T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429905fb502f", "title": "Rust `thread_local!`s are surprisingly expensive", "url": "https://swatinem.de/blog/slow-thread-local/", "published_at": "2024-03-03T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299062ab1a0", "title": "A Rant about Software Bloat", "url": "https://swatinem.de/blog/bloaty-mcbloat-sdk/", "published_at": "2023-12-02T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299069b1168", "title": "Choosing a more optimal `String` type", "url": "https://swatinem.de/blog/optimized-strings/", "published_at": "2023-09-15T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42990702bccd", "title": "Optimizing Rust Enum `Debug`-ing with Perfect Hashing", "url": "https://swatinem.de/blog/optimizing-enums/", "published_at": "2023-07-29T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429907e5da2a", "title": "Finding and fixing runaway Android Battery Usage", "url": "https://swatinem.de/blog/fixing-android-battery-usage/", "published_at": "2023-06-18T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42990853189c", "title": "The magic of scope guards", "url": "https://swatinem.de/blog/magic-scope-guards/", "published_at": "2023-05-21T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429908df2c37", "title": "A locking war story", "url": "https://swatinem.de/blog/locking-war-story/", "published_at": "2023-05-16T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429908fbefe0", "title": "Files need Identity", "url": "https://swatinem.de/blog/file-identity/", "published_at": "2023-03-29T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42990917a4b3", "title": "The size of Rust Futures", "url": "https://swatinem.de/blog/future-size/", "published_at": "2023-01-20T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429909dcb7cc", "title": "A deep dive into DWARF line programs", "url": "https://swatinem.de/blog/dwarf-lines/", "published_at": "2023-01-04T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42990ab4b5f6", "title": "2022 Retrospective", "url": "https://swatinem.de/blog/2022-retrospective/", "published_at": "2022-12-30T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42990b6e529b", "title": "Improving async Rust codegen", "url": "https://swatinem.de/blog/improving-async-codegen/", "published_at": "2022-11-18T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42990b7065b6", "title": "Implementation Details of async Rust", "url": "https://swatinem.de/blog/async-codegen/", "published_at": "2022-11-09T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42990bbb5e68", "title": "Rustdoc doctests need fixing", "url": "https://swatinem.de/blog/fix-rustdoc/", "published_at": "2022-10-28T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42990c638a4b", "title": "Inspiration", "url": "https://swatinem.de/blog/inspiration/", "published_at": "2022-10-27T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42990d3d9b19", "title": "Non-abbreviated Abbreviations", "url": "https://swatinem.de/blog/abbreviations/", "published_at": "2022-09-19T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42990dd9821a", "title": "A deep dive into Portable PDB Sequence Points", "url": "https://swatinem.de/blog/sequence-points/", "published_at": "2022-09-02T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42990e31cd38", "title": "A deep dive into SourceMaps", "url": "https://swatinem.de/blog/sourcemaps/", "published_at": "2022-08-08T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42990e811ed4", "title": "The Magic of zerocopy", "url": "https://swatinem.de/blog/magic-zerocopy/", "published_at": "2022-08-06T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42990f401f22", "title": "Format Ossification", "url": "https://swatinem.de/blog/format-ossification/", "published_at": "2022-07-29T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42990f5dfb7c", "title": "Please delete your Snapshot Tests", "url": "https://swatinem.de/blog/rm-snapshots/", "published_at": "2022-07-23T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299102c7ab8", "title": "Pitfalls of fallible Iterators", "url": "https://swatinem.de/blog/fallible-iterators/", "published_at": "2022-07-08T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42991124f745", "title": "Self-referential structs and alternatives", "url": "https://swatinem.de/blog/self-reference-alternatives/", "published_at": "2022-05-01T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299120effd3", "title": "The magic of AsRef", "url": "https://swatinem.de/blog/magic-asref/", "published_at": "2022-04-20T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429912f0b2af", "title": "Dreaming of a balanced week", "url": "https://swatinem.de/blog/balanced-weeks/", "published_at": "2022-02-20T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299132c2d1b", "title": "Non-Lazy Futures Considered Harmful", "url": "https://swatinem.de/blog/non-lazy-futures/", "published_at": "2022-01-26T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429913d308ff", "title": "Rust Contexts", "url": "https://swatinem.de/blog/log-contexts/", "published_at": "2022-01-21T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299148dfec8", "title": "Rust Futures and Tasks", "url": "https://swatinem.de/blog/futures-n-tasks/", "published_at": "2022-01-11T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299158a87f1", "title": "Rust async can truly be zero-cost", "url": "https://swatinem.de/blog/zero-cost-async/", "published_at": "2021-10-12T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429915a64ea3", "title": "Creating my own bespoke binary format", "url": "https://swatinem.de/blog/binary-formats/", "published_at": "2021-09-01T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299169936c2", "title": "Howto Design an infallible algorithm that records errors", "url": "https://swatinem.de/blog/infallible-errors/", "published_at": "2021-07-07T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429916cd3829", "title": "The REAL mathematics of fat-loss", "url": "https://swatinem.de/blog/real-mafs-of-fatloss/", "published_at": "2021-04-24T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429916efc530", "title": "Force Unwind Tables", "url": "https://swatinem.de/blog/unwind-tables/", "published_at": "2021-04-22T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299172615b7", "title": "Overcoming Bad Standards", "url": "https://swatinem.de/blog/standards/", "published_at": "2021-04-18T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429917380933", "title": "Finding loaded libraries on Linux", "url": "https://swatinem.de/blog/proc-maps/", "published_at": "2021-04-02T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42991811435d", "title": "Relax and Unwind", "url": "https://swatinem.de/blog/unwind-2/", "published_at": "2021-02-20T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429919110671", "title": "Relax and Unwind", "url": "https://swatinem.de/blog/unwind-1/", "published_at": "2021-02-15T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42991940ed85", "title": "Investing", "url": "https://swatinem.de/blog/investing/", "published_at": "2021-01-30T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429919afae42", "title": "The Problem with walled gardens", "url": "https://swatinem.de/blog/walled-gardens/", "published_at": "2021-01-13T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42991a3b69ae", "title": "Feedback on Rusts Code Coverage", "url": "https://swatinem.de/blog/rust-cov/", "published_at": "2020-11-23T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42991ad893cb", "title": "Understanding the limitations of functional record update", "url": "https://swatinem.de/blog/frufru-1/", "published_at": "2020-11-19T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42991af03512", "title": "Forms of blocking and non-blocking I/O", "url": "https://swatinem.de/blog/forms-of-io/", "published_at": "2020-11-15T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42991b9428c7", "title": "PSA: Clearing global debugger properties", "url": "https://swatinem.de/blog/windows-debuggers/", "published_at": "2020-11-11T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42991c3bcd82", "title": "Rust 2021", "url": "https://swatinem.de/blog/rust-2021/", "published_at": "2020-09-24T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42991d190262", "title": "Documentation Driven Development", "url": "https://swatinem.de/blog/doc-driven-development/", "published_at": "2020-05-19T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42991d78cac6", "title": "PSA: Deactivate Windows Security for your Source Repository", "url": "https://swatinem.de/blog/windows-security/", "published_at": "2020-04-17T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42991e595e60", "title": "Fear, the class keyword, you must not!", "url": "https://swatinem.de/blog/moar-ts-optimization/", "published_at": "2020-02-28T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42991eeb7eca", "title": "Rewrite it in Rust", "url": "https://swatinem.de/blog/rewrite-in-rust/", "published_at": "2020-02-20T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42991f81e043", "title": "Improving your JS Tooling", "url": "https://swatinem.de/blog/js-tooling/", "published_at": "2020-02-06T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429920647960", "title": "Optimizing TypeScript Memory Usage", "url": "https://swatinem.de/blog/optimizing-tsc/", "published_at": "2020-01-08T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429920898242", "title": "My immersion-cooled Oil PC", "url": "https://swatinem.de/blog/oil-immersion-cooling/", "published_at": "2019-12-06T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429920c2d2ca", "title": "Lets learn Dependency Injection", "url": "https://swatinem.de/blog/learn-di/", "published_at": "2019-11-25T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429920fa30b5", "title": "Rust 2021: Confidence", "url": "https://swatinem.de/blog/rust-2020/", "published_at": "2019-11-05T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42992193fa88", "title": "Comparing Cypress and Puppeteer", "url": "https://swatinem.de/blog/cypress-puppeteer/", "published_at": "2019-10-08T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299220c2452", "title": "Lets talk about Pagination", "url": "https://swatinem.de/blog/pagination/", "published_at": "2019-08-06T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429922574d8a", "title": "Announcing intl-codegen 2", "url": "https://swatinem.de/blog/intl-codegen-2/", "published_at": "2019-07-10T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429922fafc1c", "title": "Database Access", "url": "https://swatinem.de/blog/database-access/", "published_at": "2019-06-18T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299237b9e3f", "title": "GraphQL Code generators", "url": "https://swatinem.de/blog/graphql-codegen/", "published_at": "2019-05-25T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429923e53291", "title": "Error Handling Considerations", "url": "https://swatinem.de/blog/error-handling/", "published_at": "2019-05-15T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429924df4f94", "title": "Enforcing Rules", "url": "https://swatinem.de/blog/enforcing-rules/", "published_at": "2019-05-10T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429925a30adc", "title": "Managing Intermediate Artifacts", "url": "https://swatinem.de/blog/managing-intermediates/", "published_at": "2019-05-09T15:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429926218e11", "title": "DX on Small Projects", "url": "https://swatinem.de/blog/dx-small-projects/", "published_at": "2019-05-09T13:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299271e7a6a", "title": "DX Challenges of TS/JS Projects", "url": "https://swatinem.de/blog/dx-challenges/", "published_at": "2019-05-08T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42992728abbc", "title": "Farewell WebTech", "url": "https://swatinem.de/blog/farewell-webtech/", "published_at": "2017-03-18T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429927924fde", "title": "Inadequacies of typed JavaScript", "url": "https://swatinem.de/blog/inadequacies-of-typed-javascript/", "published_at": "2016-09-10T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299285c4b05", "title": "Individualismus", "url": "https://swatinem.de/blog/individualismus/", "published_at": "2016-06-12T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-429928a74147", "title": "The one killer feature icon fonts have over svg", "url": "https://swatinem.de/blog/the-one-killer-feature-of-icon-fonts/", "published_at": "2016-01-31T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-4299296e2bed", "title": "Doing the impossible:", "url": "https://swatinem.de/blog/doing-the-impossible-choosing-a-material-design-framework/", "published_at": "2015-07-26T00:00:00+00:00" }, { "id": "01a087e8-6a67-70cc-a9f0-42992a6b729a", "title": "New Blog", "url": "https://swatinem.de/blog/new-blog/", "published_at": "2015-07-23T00:00:00+00:00" } ] posts Claim your blog
Back to swatinem.de
Blog · corpus.blog/blogs/swatinem.de/posts

swatinem.de

swatinem.de

2026

2025

2024

2023

2022

2021

2020

2019

2017

2016

2015