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 · 26/09/2026
Next Wednesday will be my last day at Mainmatter. I joined as the first Rust hire, with a simple goal: build a world-class consulting team for Rust. 3 years later, Mainmatter is a household name in the space—it wasn't always easy, but I learned a lot during the ride.
2260
Luca Palmieri @lpalmieri.com · 30/06/2026
Looking for your wisdom folks. I am increasingly interested in: - Better *single-user* tools for PR reviews. - Products to spin up multiple cloud-hosted agents for coding purposes. No need for long-running VMs, ephemeral is good enough. What should I be checking out?
350
Luca Palmieri @lpalmieri.com · 16/06/2026
This is going to be an interesting chat!
0121
Luca Palmieri @lpalmieri.com · 11/06/2026
cheadergen, a new tool for generating C headers from #rust crates, is now ready to try! I've been working on it for a while, and it has seen enough real-world use that I'm comfortable recommending it to others. Documentation, examples, and source at cheadergen.com
cheadergen.com
Introduction - cheadergen
Generate C/C++ headers from Rust libraries that expose a `pub extern "C"` API.
281
Luca Palmieri @lpalmieri.com · 29/05/2026
That weird urge to go build a new CI platform. Pure control plane for task orchestration, plug-your-own-compute with a marketplace of vendors, easy to bridge to GHA for initial adoption.
4140
Luca Palmieri @lpalmieri.com · 23/05/2026
Underrated agentic workflow: take a messy commit history and slowly rewrite it into atomic revisions that can be reviewed and merged independently. Works beautifully with jujutsu (jj), using a duplicated branch to ensure no destructive changes are made to the original PoC.
2210
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 · 16/02/2026
The mainstream conversation around AI agents is stuck on "AI slop." There's more to it: we can use cheap agent code to do quality-raising work that didn't make economic sense before. What's viable now that writing code isn't the primary bottleneck? lpalmieri.com/posts/agenti...
lpalmieri.com
Can agentic coding raise the quality bar?
Five examples of using agentic coding to improve software quality, instead of delivery throughput.
3293
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 · 16/10/2025
Days since I needed Span::join on stable: 0
060
Luca Palmieri @lpalmieri.com · 04/10/2025
RustConf just uploaded on YouTube the recording of my C-to-Rust migration talk! Check it out if you want to learn more about the Rust work we've been doing on Redis Query Engine over the past few months. youtu.be/H0AUP2OgppE...
youtube.com
Luca Palmieri: "Rewrite, Optimize, Repeat: Our Journey Porting a Triemap from C to Rust" | RustConf
Slides: https://docs.google.com/presentation/d/1HQAISo6jnNdxO_0YPfEAbtF7OVD0yWDDaNtWwcpay6E/edit?usp=sharingRediSearch GitHub repository: https://github.com/...
1303
Luca Palmieri @lpalmieri.com · 29/09/2025
Concrete goal: define a driver-agnostic way to configure a Postgres connection. Then you research the details, obsess over an aspect (i.e. SSL configuration) and end up working for several ways on a generic way to configure a TLS client policy. Cool, but slow.
020
Luca Palmieri @lpalmieri.com · 24/09/2025
Only two weeks to go!
0100
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 · 25/06/2025
Rust 1.89.0 will stabilize let-chains (yay 🎉). In the same release, clippy will flag `if` statements that can be collapsed further using a let-chain. Outcome: your CI will fail when 1.89.0 is released, and you can't fix it ahead of time because the feature clippy wants you to use isn't stable yet 🙃
6547
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 · 31/05/2025
Two things can be true at the same time: - You can achieve ~everything with enough practice - Dan Luu is spot on when he says that "95%-ile isn't that good" If you've never read the article, this is your chance: danluu.com/p95-skill/
2151
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
Reposted by Luca Palmieri
milo edwards @miloedwards.bsky.social · 04/04/2025
italians are about to invent a form of corruption so lucrative it will destroy the global economy
444047781
Luca Palmieri @lpalmieri.com · 08/03/2025
Useful heuristics: if a new feature allows you to delete entire sections out of your documentation, it's a good change.
1210
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 · 27/02/2025
At Mainmatter we're looking for Rust contractors to augment our internal consulting team. Two different profiles: - Rust, with a background in production C/C++ - Rust on the backend The rate is 500-800 euros/day. Remote, but you *must* be in a European timezone. More details ↓
43216
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 · 01/02/2025
Release automation is glorious when it works, but awful when it fails mid-flight. You need to figure out what went wrong _and_ restore the repository to a state the (patched) automation can pick up again.
060
Luca Palmieri @lpalmieri.com · 26/01/2025
It looks like someone has launched a coin named $PAVEX on Solana to milk my reputation for a quick pump and dump scheme. I have absolutely**nothing** to do with the project.
1226
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
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 · 07/01/2025
In January and February I'll be tutoring some remote Rust courses: - Learn Rust, from scratch - Advanced Rust testing - Rust-Python interoperability If any of those topics picks your interest, check them out! All info at rust-exercises.com#tutored-work...
0161
Reposted by Luca Palmieri
Darko Mesaroš @darko.rup12.net · 17/12/2024
Huge shout out to @lpalmieri.com and his book Zero to Production in Rust. 😍 This book does not just go and teach me Rust. It shows me how to build production grade application with all the bells an whistles! I really enjoyed the part about Telemetry and how to instrument tracing! Grazie Luca! 🙏
2243
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 · 10/12/2024
Undeniably so.
0130
Luca Palmieri @lpalmieri.com · 10/12/2024
`rinja`, the Rust template engine, is really growing on me. It brings to the table all the compile-time checks I used to love in `askama`, with nice improvements in syntax and error reporting. The syntax to render individual blocks from a template plays wonderfully with HTMX too.
3231
Luca Palmieri @lpalmieri.com · 06/12/2024
If you're looking for a nice introduction to type-driven design in Rust, Henk has got you covered: mainmatter.com/blog/2024/1...
mainmatter.com
Trash in, treasure out - Mainmatter
Making your API clear and robust with Rust's type system
2293
Luca Palmieri @lpalmieri.com · 30/11/2024
Today I learned that GitHub, in the year of our Lord 2024, doesn't behave as an OpenID Connect identity provider. It only provides the basic OAuth2 flow, forcing you to write bespoke integration code to fetch user information (ID, email, etc.). Why 🥲
1120
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