Sign in

Luca Palmieri

@lpalmieri.com
3.1K followers 178 following 164 posts

Author of zero2prod.com, a book on backend development in Rust, and rust-exercises.com. Building pavex.dev, a new Rust web framework. Principal Engineer at Mainmatter. Opinions are my own. He/him. @algo_luca on Twitter.

PostsRepliesMedia
Luca Palmieri @lpalmieri.com · 03/05/2026
Little update on my reflection adventures: I have extracted the core components of Pavex's compile-time reflection engine as a set of standalone crates! It serves as a preliminary step ahead of another release in the coming weeks 🛠️
2241
Luca Palmieri @lpalmieri.com · 11/02/2026
New year, new vacancies: Mainmatter is looking (again!) for an experienced Rust developer to join our Rust migration projects. C, C++, Delphi. Different starting points, same target: Rust! If you're interested, send an email to the address in the screenshot.
3198
Luca Palmieri @lpalmieri.com · 09/12/2025
Mainmatter is looking for a Rust backend engineer, either as a full time employee or a freelancer. You'll be working on cloud-native projects, helping clients either adopting Rust or scaling it successfully. If you're interested, send an email to the address in the screenshot!
1121
Luca Palmieri @lpalmieri.com · 04/11/2025
Mainmatter is looking for an experienced Rust developer to join one of our projects as a freelancer. We're migrating a database from C to Rust. The project is complex and performance-sensitive. That's what makes it fun! If you're interested, send an email to the address in the screenshot.
Email jobs@mainmatter.com with your resume, rate and availability.
1206
Luca Palmieri @lpalmieri.com · 21/10/2025
Less than 10 days left before Rustlab! It's a conference that's close to my heart—one of the first I spoke at, back in 2019! Years have been passed, but the vibe and the community have only improved. Tickets are still available—use `SP20FR` for a last-minute 20% discount.
1100
Luca Palmieri @lpalmieri.com · 11/08/2025
New Redis release, but with a twist. It includes our first Rust patches to Redis Query Engine! In particular, it ships the new TrieMap implementation I wrote with Henk Oordt, as part of @mainmatter.com's ongoing collaboration with Redis.
Release notes for Redis 8.2.0
1132
Luca Palmieri @lpalmieri.com · 03/07/2025
That beautiful feeling of being ~done on a 35k lines* PR 🍉 *Don't do this at work. **Many lines are test snapshot updates.
0100
Luca Palmieri @lpalmieri.com · 26/06/2025
We have another opening at Mainmatter, this time for a *technical writer*. You'd be working directly with me on new Rust training material, blog posts and other kinds of technical long-form content. If you're interested, send your resume job AT mainmatter DOT com
2114
Luca Palmieri @lpalmieri.com · 26/06/2025
An even better solution from @briansmith.bsky.social: you can set an MSRV *just for clippy* via clippy.toml. This will configure a variety of lints to behave as if you were using that version to run clippy, including the collapsible_if one. Back to fearless toolchain updates!
2134
Luca Palmieri @lpalmieri.com · 11/06/2025
It's official now: I'll be a speaker at RustConf 2025 🎉 My talk falls into the "Interop & Migration" theme, covering the work we've been doing with Redis, supporting the migration of some of their C code to Rust. You'll get all the details when the full schedule is announced!
0210
Luca Palmieri @lpalmieri.com · 29/05/2025
The Rust-Python workshop at @pyconit is about to start! Seek me out if you're at the conference and you want to talk about native extensions!
140
Luca Palmieri @lpalmieri.com · 26/05/2025
Two weeks left to submit your talk proposals for EuroRust 2025 ⏳ The CfP closes on June 2nd! We're looking for a wide range of contributions: beginner-friendly talks, reports on Rust industrial usage, deep-dives on language features or crates, tutorials, etc.
1134
Luca Palmieri @lpalmieri.com · 22/05/2025
Pavex is now officially registered as a trademark! Another to-do item can be crossed off the public beta checklist ✅
090
Luca Palmieri @lpalmieri.com · 16/04/2025
The Rust team at Mainmatter has grown, but we need to grow it further! We're looking for freelancers to help us migrate a database from C to Rust. It's an incremental rewrite: a module at a time, interfacing with the existing C code. European hours, full remote, 4 days a week.
https://gist.github.com/marcoow/d1b81b8805f8391305bf80deb7196cf7
1319
Luca Palmieri @lpalmieri.com · 16/04/2025
In case you were wondering: work on Pavex continues! I'm reworking the public API to minimize friction. We're shifting towards attribute macros for component egistration. This removes the need to spell out raw paths, a major pain point of the first beta version.
150
Luca Palmieri @lpalmieri.com · 03/03/2025
It took a few iterations, but the API for sessions in Pavex is _done_. The release includes a guide and two storage implementations (in-memory and Postgres-based). More storage options will follow.
1110
Luca Palmieri @lpalmieri.com · 22/02/2025
Sessions for Pavex are *almost* done now. Just a couple more finishing touches.
050
Luca Palmieri @lpalmieri.com · 18/02/2025
Within every #rust engineer there are two wolves: one loves `serde`, the other hates returning deserialization errors one at a time to their users. We wrote `eserde` to bring you peace. (To bring _me_ peace too, at last!)
3506
Luca Palmieri @lpalmieri.com · 13/02/2025
Amazing to see "100 Exercises to Learn Rust" mentioned by name on this year's Rust survey as one of the most common ways to learn the language. It's been an incredible year for that course!
1102
Luca Palmieri @lpalmieri.com · 07/02/2025
Having some ✨fun✨ with tracking the path for fields who failed to deserialize. Friday tip: if you ignore a test, write down _why_.
// Investigation: why does this happen? // It is due to the way internally tagged enum are deserialized. // We first look for the tag field and **stash** the content inside a `serde::__private::de::Content`. // If the tag is found, we then try to deserialize the content using the appropriate variant. // At that point though, the current path no longer reflects where we are, thus leading to this issue. // A possible fix would be to use a custom `Content` variant that includes the original path. // Unfortunately, that would require changing the code generated by `serde::Deserialize`, and there's // no easy way to accomplish it as far as I'm aware beyond forking the derive macro.
040
Luca Palmieri @lpalmieri.com · 05/02/2025
Quick reminder that in two weeks I'll be at RustNation UK, teaching folks how to get Rust and Python to play nice with each other! I'll be around during the talk day as well, so hit me up if you want to chat about all things Rust.
281
Luca Palmieri @lpalmieri.com · 21/01/2025
I published the first version of `tracing_log_error`, a new utility for logging errors in Rust projects. It provides `log_error!`, a macro that captures everything you may care about when it comes to error, with consistent naming as a bonus.
1141
Luca Palmieri @lpalmieri.com · 17/01/2025
"Railroad visualization" links to: lukaslueg.github.io/macro_railr... It didn't help me as much as `-Z trace-macros`, but the output is so visually pleasing.
010
Luca Palmieri @lpalmieri.com · 17/01/2025
I found myself writing a gnarly declarative macro today, so I had to learn _again_ how to debug them. This time I took the time to write down the tools I used, easing the work of my future self (or other contributors).
1111
Luca Palmieri @lpalmieri.com · 09/01/2025
"Die young, or live long enough to become the villain" The minimal architectural style I used in "Zero to Production in Rust" is being used an example of a "Very Bad Application" in one of the articles featured in This Week in Rust. I'm more amused than offended to be honest.
5130
Luca Palmieri @lpalmieri.com · 09/01/2025
Sprinkling some ASCII art throughout the new concurrency chapter of our Rust-Python course ✨
0221
Luca Palmieri @lpalmieri.com · 12/12/2024
Productivity tip: define a layout with the panes you _always_ use when working on a project. `zellij --layout run-layout.kdl` and you're then ready to work! Faster than creating a new tab, creating each pane, getting command from historys, etc. Easier for contributors, too!
4140
Luca Palmieri @lpalmieri.com · 25/11/2024
Me at $work: "Small PRs folks, we need fast turnaround with as few defects as possible" Me on my solo projects:
5573
Luca Palmieri @lpalmieri.com · 22/11/2024
Solid tenet to live by: emit the diagnostics you wished you had when working on your last project.
1284
Luca Palmieri @lpalmieri.com · 20/11/2024
Domain-based routing in Pavex is not fully baked yet (nor released), but the first sanity tests are passing 🎉 Fair to say I know a lot more about domain name validation than I did last week.
3172
Luca Palmieri @lpalmieri.com · 21/10/2024
Someone skipped input validation here.
An in-store tag with NaN as price.
071
Luca Palmieri @lpalmieri.com · 08/10/2024
I'd love for that to be true 🥲
120
Luca Palmieri @lpalmieri.com · 02/05/2023
New shiny toy has just been released: cargo-px! If you are generating Rust source files at compile-time, you might want to check it out. lpalmieri.com/posts/cargo-px/
072