Sylvain Kerkour
(Ab)using technology for fun & profit.
- Posts
- 300 from 1 Jan 2020 to 28 Oct 2026
- Posting
- weekly (75 in the last year)
- Kind
- personal blog
- Feed
- https://kerkour.com/feed.xml
2026 63
- What distributed systems and end-to-end encrypted apps have in common? CRDTs and Rust!
- You will regret everything you say / write about AI
- Hybrid cryptography
- Malware, Backdoors and shady business practices: The secret life of connected devices
- Cloudflare is rewriting everything in Rust
- How Signal and WhatsApp deploy Rust to billions of Android and iOS devices
- Lies, damned lies, and Rust in the TechEmpower Web Framework Benchmarks
- Rust in the kernel? What about Rust without the kernel!
- Small and secure Docker images for Rust: Alpine vs Debian vs Scratch
- Rust generics: from Static to Dynamic dispatch
- Microcontrollers with good support for Rust
- Rust concurrency vs Go concurrency: stackless vs stackfull coroutines
- Lessons learned building an extended standard library for Rust (stdx)
- Fixing Rust's supply chain security: The good, the bad and the ugly
- Building a Plugin System for Rust: WebAssembly vs Native vs Scripting Language vs Rules Engine
- 7.5x faster encryption in Go with the new "simd" and "simd/archsimd" packages
- Building scalable backend services with Rust and PostgreSQL
- How Firecracker microVMs work under the hood to sandbox untrusted code and AI agents
- Diskless infrastructure
- Rust service hardening and production checklist
- Are 128-bit symmetric keys really secure against quantum computers?
- Optimize the common cases
- From microservice to subprocess
- Understanding the Rust hype for the busy developer
- The discourse about software craftsmanship conveniently ignores distribution
- Even if 90% of AI-discovered vulnerabilities are made up, it's still terrifying
- Momentum is why the spice continues to flow
- smallvec is probably one of the most underrated Rust crates
- Investigating why RustCrypto is slow: Deep dive into SIMD instructions and hardware acceleration
- S3 is a better abstraction than NFS / networked block storage
- High-performance Rust: Understanding and eliminating heap fragmentation
- Deep dive into iroh: A replacement for WireGuard or a P2P layer for your application?
- QUIC is much more than a replacement for TCP
- Hashing at 130 GB/s with XXH3, Rust and AVX-512
- Why stdx is not on crates.io
- BLAKE3 at 13GB/s on Zen 5
- Git commit prompt injection
- Announcing stdx, Rust's extended standard library: simplicity, performance and supply chain security for everyone
- We are in the golden age of Open Source. Surf the wave until it crashes.
- Async Rust: deep dive into cooperative scheduling and Tokio's architecture
- Keep calm and embrace (Rust) monorepos
- Scaling Rust codebases: Lessons learned organizing large projects and managing errors
- The limits of Rust, or why you should probably not follow Amazon, Cloudflare and Discord
- All databases will eventually be (re)written in Rust
- Cryptographic Right Answers: Post-Quantum Edition
- A Roadmap for Building an Extended Standard Library for Rust
- Supply chain nightmare: How Rust will be attacked and what we can do to mitigate the inevitable
- Bugs that the Rust compiler catches for you: The revolution of compiler-enforced correctness
- Building pentest devices with Rust and ESP32-C6 microcontrollers
- AI (and) Maximalism
- Rust is slowly but surely eating PostgreSQL: Deep dive into Neon, ParadeDB, PgDog and more
- Using Rust and Postgres for everything: patterns learned over the years
- Breaking SHA-2: length extension attacks in practice with Rust
- Is NIST's cryptography backdoored?
- How Rust and Its Compiler Have Revolutionized Software Engineering and Reliability
- How much time did you use your phone this weekend?
- Deploying Rust to production checklist
- Deep dive into Turso, the "SQLite rewrite in Rust"
- Elegant and safe concurrency in Rust with async combinators
- Full context commitment for AES authenticated encryption
- Let's Fucking Encrypt Everything
- Towards safe and modern cryptography: state of the Rust ecosystem in 2026
- SIMD programming in pure Rust
2025 41
- Smartphones are black holes
- (Social) media manipulation in one image
- Secure your Rust projects against supply chain attacks with Dev Containers
- Making sense of the video formats / codecs / containers mess (and what to use for long-term video archival)
- Encryption protects AGAINST criminals
- Notes on building CRDT-based local-first and end-to-end encrypted applications
- How CRDTs and Rust are revolutionizing distributed systems and local-first applications
- I no longer block AI bots on my website
- Entrepreneurs and athletes
- Like solar, Rust is inevitable
- It feels good to be online when most of the internet is down 😎
- Rust is eating the world: From embedded firmware to cross-platform applications, databases and big servers
- How Signal uses Rust to secure the communications of millions of people
- I created a Mastodon account for Pingoo
- I created a Bluesky account for Pingoo
- Building SQLite extensions in Rust
- vCPUs in the cloud: x86-64 vs ARM64 (aarch64)
- Behind the Scenes of Pingoo: Slashing Rust allocations with mimalloc and heapless to build the fastest reverse proxy
- Choosing between PostgreSQL and SQLite
- Hosting a website with automatic HTTPS and unmetered traffic for 3 € / month with Pingoo
- Case Study: How Proton uses Rust to build secure cross-platform applications for millions of people
- Implementing automatic HTTPS / TLS for Pingoo: Here is what it takes to build a secure internet
- Announcing Pingoo: The fast and secure Load Balancer / API Gateway with built-in service discovery, WAF and bot management (in Rust)
- Protecting Rust against supply chain attacks
- Key Derivation with ChaCha20 (or ChaCha12)
- ChaCha20-BLAKE3: Secure, Simple and Fast authenticated and committing encryption for any CPU
- Implementing a Key Encapsulation Mechanism (KEM) with X25519
- Rust is a great fit for the agentic era
- Pure Rust cryptography is better than raw performance
- Rust: A programming language that grows with you, your career and your projects
- Introduction to embedded development with Rust: Overview of the ecosystem
- How to securely encrypt your sensitive data with envelope encryption and KMS in Rust
- Announcing Markdown Ninja: Open Source alternative to Substack, Mailchimp and Netlify
- How to build small and secure Docker images for Rust (FROM scratch)
- Avoiding memory fragmentation in Rust with jemalloc
- How to implement cryptographically-secure API keys
- Creating problems to sell the solution is evil
- A 10x faster batch job by batching PostgreSQL inserts/updates with Rust and SQLx
- Writing against the global lobotomy
- Passwords suck. Can passkeys replace them?
- SHA-3 Explained: Understanding Keccak, The Sponge Construction, SHAKE, KMAC, TurboSHAKE and KangarooTwelve
2024 34
- Choosing a hash function for 2030 and beyond: SHA-2 vs SHA-3 vs BLAKE3
- The difference between Bandwidth and Traffic (ingress and egress)
- Comparing AWS S3 with Cloudflare R2: Price, Performance and User Experience
- How to solve your Cross-Origin Resource Sharing (CORS) errors by building a proxy with Cloudflare Pages and Cloudflare workers
- How to avoid the thundering herd problem in Go with the singleflight package
- How to deploy a Docker image to Scaleway serverless containers from a CI/CD pipeline (e.g. GitHub actions) using the API
- Leader election with PostgreSQL's advisory locks
- How to get the country of your visitors with Cloudflare
- Defending against bruteforce, credential stuffing and user enumeration attacks
- 5 Awesome (but less known) Rust projects
- Rust needs an extended standard library
- Programming vs Software Engineering (Rust vs Go)
- Towards safe and modern cryptography: Overview of the Rust ecosystem in 2024
- How HTTP/2 multiplexes multiple streams over a single TCP connection and how it was abused in a series of record-breaking DDoS attacks
- Rust Patterns: Make a reference &'static with Box::leak
- Rust has a HUGE supply chain security problem
- It's time to abolish the builder pattern in Rust
- Rust patterns: Don't put any code in mod.rs or lib.rs files
- Rust patterns: Micro SDKs
- Fingerprinting == Tracking?
- Practical countermeasures against supply chain attacks
- ChatGPT free
- Supply chain attacks and the many different ways I've backdoored your dependencies
- Are Cloudflare CAPTCHAs ruining the internet?
- Cloudflare stale-while-revalidate
- Distributed SQLite: Paradigm shift or hype?
- Optimizing SQLite for servers
- Plugged: Why the Apple Vision Pro is one of the biggest threats to your freedom
- Smokers
- How to generate a cryptographically secure random keys with /dev/urandom
- I ❤️ JWTs (JSON Web Tokens)
- How to get the real client IP address with Bunny.net CDN
- How to get the GeoIP (country) information of the client with Bunny CDN
- How to generate secure random encryption keys with OpenSSL
2023 37
- HTTP Caching: ETag vs Last-Modified headers
- Understanding Cloudflare's CF-Cache-Status Header
- Momentum and Emptiness
- How to update your local Go toolchain in 1 command with Go 1.21
- How to publish a Docker image to the GitHub Container Registry (ghcr.io) from GitHub Actions
- Why cloud bandwidth is so obscenely expensive and what you can do about that
- Announcing Cloudflare for Speed and Security
- The Cloudflare Book
- How to bypass Cloudflare and how to protect your websites
- How to download a large file in parallel (with aria2c)
- What are Autonomous Systems and why they matter (a lot) for your security
- How to copy files from a Docker container to the host
- How to use SHA-256 instead of SHA-1 as Git's hashing algorithm
- How to add one or more fields when marshalling a struct to JSON in Go
- Derive secure keys in Go with HKDF and SHA256
- Check if an IP address is IPV4 or IPV6 in Go
- How to format and prettify curl JSON output
- How to block outbound network and internet access for a Docker container
- Legalizing spyware. What can go wrong?
- Nobody cares about the metaverse. Neurotechnology is the end game of AR/VR headsets.
- Links of the week #2023-22
- How To Generate Secure Ed25519 SSH Keys
- Links of the week #2023-21
- How to generate a SHA256 HMAC in Go
- Fast hashing: It's not that simple
- How to zip and unzip files in Go
- Links of the week #2023-11
- Apple advanced data protection: A game-changer for privacy?
- Links of the week #2023-10
- Links of the week #2023-09
- Links of the week #2023-08
- Links of the week #2023-06
- Links of the week #2023-05
- Links of the week #2023-04
- Links of the week #2023-03
- Links of the week #2023-02
- Links of the week #2023-01
2022 22
- Links of the week #2022-51
- How to Use Robots.txt to Allow or Disallow Everything
- Links of the week #2022-47
- Links of the week #2022-46
- Links of the week #2022-45
- Links of the week #2022-44
- Links of the week #2022-43
- Links of the week #2022-42
- Links of the week #2022-41
- Links of the week #2022-40
- When to vendor (or not) your dependencies in Rust
- How to create an encrypted zip file with a password
- Learning Rust: The derive attribute
- How to rename multiple files in bash and remove a given prefix or suffix
- Links of the week #2022-39
- How to use OpenSSL to encrypt and decrypt files
- Public Toilets and Social Credit
- Multithreading in Rust
- Links of the week #2022-37
- Learn Rust by implementing a SHA-1 hash cracker
- Links of the week #2022-36
- iPhone = Privacy?
2021 2
2020 3
Undated 98
- Urgent important archived
- Rust async combinators
- Links of the week 2022 35
- Diminishing returns knowledge
- Neuroplasticity and spaced repetition
- Rust combinators
- Links of the week 2022 34
- Too many tabs
- Why you need a knowledge base
- Top links of the week 2022 33
- Fisherman
- Denial of wallet attacks the new ddos
- Advanced shellcode in rust
- Rust projects maintenance and supply chain security
- Web application with rust and webassembly
- When to use serverless
- Zip bomb
- Rust github actions ci cd
- Optimize rust binary size
- Bitsquatting attack generator in rust
- Evil twin attack
- Rust crawler javascript single page application headless browser
- Programming languages are platforms
- Rust crawler json api
- Ubuntu linux automatic updates with unattended upgrades
- Rust crawler scraping and parsing html
- Npm install vs npm ci
- Rust crawler implementation
- Supply chain attacks and backdoored dependencies
- Rust crawler synchronization atomic types barrier
- Rust axum hostname router
- Rust crawler associated types
- Rust fearless concurrency
- Rust cross compilation
- Why not rust
- Rust is minimalist
- Rust functional programming
- Rust mental models
- End to end encryption key exchange cryptography rust
- Alignment
- Rust web framework 2022
- Rust background jobs
- End to end encryption domain separation cryptography
- Rust error handling
- Entropy is fatal
- Indispensable rust features to learn
- Rust web application clean architecture
- Csrf
- Rust file encryption chacha20poly1305 argon2
- Secure programming with vscode dev containers
- Rust read file
- Rust file encryption
- Book self publishing pandoc
- Rust position independent shellcode
- Rust crate backdoor
- Rust enum to string
- Rust symmetric encryption aead benchmark
- Rust default environment variables
- Signatures modern end to end encryption
- Fight climate change as a technologist
- Rust static site generator
- Rust reproducible cross compilation with docker
- Freedom the core value of hackers
- Go http long polling
- Engineer vs entrepreneur mindset
- Rust http long polling
- Shellcode in rust
- Why rust for offensive security
- Rust job queue with postgresql
- Framing
- Rust import crate from git
- Bullshit jobs
- Rust cryptography ecosystem
- Rust how to sort a vector
- Rust large cargo workspace
- Rust string to int and int to string
- Overthinking
- Rust fast port scanner
- High performance rust with sqlite
- The foobar challenge google secret hiring program
- Deploy rust on heroku with docker
- Http security headers
- Rust development workflow
- Rust worker pool
- Rust in production 2021
- Rust execute from memory
- Rust send email
- Rust for web development 2 years later
- The unusual way im funding my open source work
- Announcing opensourceweekly org
- 2019 december update
- Bloom whats next
- Bloom a free and open source google
- Bloom un google libre et open source
- The just cause and the infinite game
- Logging
- Cut the bullshit
- Introduction au reverse engineering android