Felipe O. Carvalho
@felipe.rs
SWE @ dbt Labs. Past: SDF, VoDa, Spotify. Apache Arrow/Databases/Compilers/DistSys. Rust/C++/OCaml/TLA+. 🇧🇷 → 🇸🇪 → 🌎 http://bento.me/felipe / https://felipe.rs
add10(int *) versus add10 inlined. When you take a "pointer" from a local variable and "pass" it to a function, but the compiler knows the pointer is not a pointer but the register that contains the local variable.
November 8, 2025 at 7:48 PM
add10(int *) versus add10 inlined. When you take a "pointer" from a local variable and "pass" it to a function, but the compiler knows the pointer is not a pointer but the register that contains the local variable.
When an LLM finally confesses it just “speculates based on general patterns” 😅
November 7, 2025 at 4:51 AM
When an LLM finally confesses it just “speculates based on general patterns” 😅
Ordered 32GB of DDR5 today. 💵
It’s been a long while since I bought RAM that is not the one soldered in a Macbook’s motherboard. Feels good and affordable.
It’s been a long while since I bought RAM that is not the one soldered in a Macbook’s motherboard. Feels good and affordable.
November 7, 2025 at 4:49 AM
Ordered 32GB of DDR5 today. 💵
It’s been a long while since I bought RAM that is not the one soldered in a Macbook’s motherboard. Feels good and affordable.
It’s been a long while since I bought RAM that is not the one soldered in a Macbook’s motherboard. Feels good and affordable.
The number of numbers in red circles I have throughout all software I use at work is maddening. Zoom is a big offender here trying to get me to read chats from all meetings.
I legitimately hate how every website seems to think that what I want more than anything else in this world is yet another inbox to monitor and take responsibility for.
November 2, 2025 at 11:31 PM
The number of numbers in red circles I have throughout all software I use at work is maddening. Zoom is a big offender here trying to get me to read chats from all meetings.
Rust solved the problem of querying a map structure without necessarily allocating a key value. The key type can have a borrowed version that is equivalent to the owned version of the key.
October 26, 2025 at 1:32 PM
Rust solved the problem of querying a map structure without necessarily allocating a key value. The key type can have a borrowed version that is equivalent to the owned version of the key.
“wE lAunChed our SaaS a mONth ago and alReady mADE it to 1M ARR”
October 26, 2025 at 1:31 PM
“wE lAunChed our SaaS a mONth ago and alReady mADE it to 1M ARR”
Elon is bragging about X not being affected by the outage today and, unfortunately, his audience can’t appreciate that all the decisions that lead to this were taken by the team he laid-off when Twitter was acquired.
October 20, 2025 at 1:39 PM
Elon is bragging about X not being affected by the outage today and, unfortunately, his audience can’t appreciate that all the decisions that lead to this were taken by the team he laid-off when Twitter was acquired.
The idea seems very applicable to programming systems that offer a high-level API that is supposed to be implemented in terms of implementations that are specialized for different types for perf reasons (e.g. ML frameworks, dataframe libraries)
dl.acm.org/doi/10.1145/...
dl.acm.org/doi/10.1145/...
The Simple Essence of Overloading: Making Ad-Hoc Polymorphism More Algebraic with Flow-Based Variational Type-Checking | Proceedings of the ACM on Programming Languages
Type-directed overload resolution allows programmers to reuse the same name, offloading
disambiguation to the type checker. Since many programming languages implement overload
resolution by performing...
dl.acm.org
October 20, 2025 at 1:07 AM
The idea seems very applicable to programming systems that offer a high-level API that is supposed to be implemented in terms of implementations that are specialized for different types for perf reasons (e.g. ML frameworks, dataframe libraries)
dl.acm.org/doi/10.1145/...
dl.acm.org/doi/10.1145/...
AI coding tools make us exploit all the shortcuts you can to ship more quickly at the cost of eventually making it unsustainable.
October 13, 2025 at 12:59 PM
AI coding tools make us exploit all the shortcuts you can to ship more quickly at the cost of eventually making it unsustainable.
Inexperienced programmers are too quick to point out “skill issues” because they think the hardest challenge of software projects is the acquisition of skills. Experienced ones, understand that the chances of success of a project increase when the skill requirements are reduced.
September 26, 2025 at 5:23 PM
Inexperienced programmers are too quick to point out “skill issues” because they think the hardest challenge of software projects is the acquisition of skills. Experienced ones, understand that the chances of success of a project increase when the skill requirements are reduced.
If you don’t put some effort into memory management, generated code size, dyn traits and disabling inlining where it helps code layout, using Rust won’t make your system faster than the version written in a language with a GC and/or JIT.
September 15, 2025 at 11:42 PM
If you don’t put some effort into memory management, generated code size, dyn traits and disabling inlining where it helps code layout, using Rust won’t make your system faster than the version written in a language with a GC and/or JIT.
Rust solved the problem of querying a map structure without necessarily allocating a key value. The key type can have a borrowed version that is equivalent to the owned version of the key.
September 15, 2025 at 11:40 PM
Rust solved the problem of querying a map structure without necessarily allocating a key value. The key type can have a borrowed version that is equivalent to the owned version of the key.
I installed Termios on my iPhone and I can SSH to my MacBook (Tailscale FTW), run tmux, Neovim and Amp (AI coding agent CLI) from anywhere. 😌
September 15, 2025 at 11:38 PM
I installed Termios on my iPhone and I can SSH to my MacBook (Tailscale FTW), run tmux, Neovim and Amp (AI coding agent CLI) from anywhere. 😌
This post is a must-read for anyone navigating the programming language design and engineering space.
lexi-lambda.github.io/blog/2025/05...
lexi-lambda.github.io/blog/2025/05...
A break from programming languages
lexi-lambda.github.io
September 15, 2025 at 11:35 PM
This post is a must-read for anyone navigating the programming language design and engineering space.
lexi-lambda.github.io/blog/2025/05...
lexi-lambda.github.io/blog/2025/05...
Very observant of Sam to notice the consequences of AI on the internet.
September 8, 2025 at 5:00 PM
Very observant of Sam to notice the consequences of AI on the internet.
Thinking that deploying by dragging and dropping a bunch of files into a folder on the server is a "simple" operation is the most 2007 take to resurge in 2025.
September 8, 2025 at 4:58 PM
Thinking that deploying by dragging and dropping a bunch of files into a folder on the server is a "simple" operation is the most 2007 take to resurge in 2025.
Rust is easy to write and and as a consequence of that it's very easy to find Rust code that is very frustrating to read.
fn foo(a: &T) {
bar(a.clone())
}
😤
fn foo(a: &T) {
bar(a.clone())
}
😤
September 7, 2025 at 12:44 PM
Rust is easy to write and and as a consequence of that it's very easy to find Rust code that is very frustrating to read.
fn foo(a: &T) {
bar(a.clone())
}
😤
fn foo(a: &T) {
bar(a.clone())
}
😤
Yet people measure "programmer productivity" in terms of "number of lines of code produced". In so doing they book that number on the wrong side of the ledger: we should always refer to "the number of tokens spent".
— Dijkstra, 1983
— Dijkstra, 1983
September 6, 2025 at 6:51 PM
Yet people measure "programmer productivity" in terms of "number of lines of code produced". In so doing they book that number on the wrong side of the ledger: we should always refer to "the number of tokens spent".
— Dijkstra, 1983
— Dijkstra, 1983
I know the difference between - (hyphen), – (en dash), and — (em dash) but that doesn’t make me a robot.
September 6, 2025 at 6:51 PM
I know the difference between - (hyphen), – (en dash), and — (em dash) but that doesn’t make me a robot.
Learned a new acryonym: WYSINWYX
What You See Is Not What You eXecute
What You See Is Not What You eXecute
September 5, 2025 at 3:59 PM
Learned a new acryonym: WYSINWYX
What You See Is Not What You eXecute
What You See Is Not What You eXecute
Reposted by Felipe O. Carvalho
Today is the new semester for @db.cs.cmu.edu's Intro to Database Systems! We're going harder into material than before. More challenging projects but you can use LLMs to help. We also have 10min talks each Wed from leading DB companies: 15445.courses.cs.cmu.edu/fall2025
CMU 15-445/645 :: Intro to Database Systems (Fall 2025)
You want to know whether this is the premier course at Carnegie Mellon University on the design and implementation of database management systems? Well, it is. This course rips through data models (re...
15445.courses.cs.cmu.edu
August 25, 2025 at 2:29 PM
Today is the new semester for @db.cs.cmu.edu's Intro to Database Systems! We're going harder into material than before. More challenging projects but you can use LLMs to help. We also have 10min talks each Wed from leading DB companies: 15445.courses.cs.cmu.edu/fall2025
My take on DDD:
Proper *Data* modeling wins over *Domain* modeling every time. Computers deal with data not real world objects. Start with the Relational Model as your guide for everything, deviate where it makes sense, but not by default.
Proper *Data* modeling wins over *Domain* modeling every time. Computers deal with data not real world objects. Start with the Relational Model as your guide for everything, deviate where it makes sense, but not by default.
September 1, 2025 at 6:54 PM
My take on DDD:
Proper *Data* modeling wins over *Domain* modeling every time. Computers deal with data not real world objects. Start with the Relational Model as your guide for everything, deviate where it makes sense, but not by default.
Proper *Data* modeling wins over *Domain* modeling every time. Computers deal with data not real world objects. Start with the Relational Model as your guide for everything, deviate where it makes sense, but not by default.
What people are getting from these AI coding agents feels very close to what people that customized their editor to automate a bunch of tasks for years and years. It's not the time saved! But the good feelings that you get out of having agency over the source-code in a project.
August 27, 2025 at 10:44 PM
What people are getting from these AI coding agents feels very close to what people that customized their editor to automate a bunch of tasks for years and years. It's not the time saved! But the good feelings that you get out of having agency over the source-code in a project.
Mastodon is very triggering to me, because my immediate reaction is "it can't work", followed by "maybe they know something I don't and I'm being an over-engineer". But no, it's actually impossible technically and socially.
“the way to decentralize social media is to have many social media websites that constantly ~email each other”
imagine the world where mastodon ceo could admit that this doesn’t actually work. seems impossible because: how do you save face? and what do you do with the community?
imagine the world where mastodon ceo could admit that this doesn’t actually work. seems impossible because: how do you save face? and what do you do with the community?
ActivityPub in a story:
Discussion with Rochko about why Bluesky isn't centralised -> new GoToSocial instance gets seen by thousands more servers -> server continues to crash bc VPS it's running on is too small -> instance down "for maintenance"
This is a single user instance on
Discussion with Rochko about why Bluesky isn't centralised -> new GoToSocial instance gets seen by thousands more servers -> server continues to crash bc VPS it's running on is too small -> instance down "for maintenance"
This is a single user instance on
August 24, 2025 at 5:53 PM
Mastodon is very triggering to me, because my immediate reaction is "it can't work", followed by "maybe they know something I don't and I'm being an over-engineer". But no, it's actually impossible technically and socially.
`git fixup` is the missing git command I always needed.
I will try `git conflicting` next time I see git rebase conflicts.
github.com/dinsandra/gi...
I will try `git conflicting` next time I see git rebase conflicts.
github.com/dinsandra/gi...
GitHub - dinsandra/git-extra: A set of tools that simplify working with git, especially if you use the rebase workflow
A set of tools that simplify working with git, especially if you use the rebase workflow - dinsandra/git-extra
github.com
August 24, 2025 at 5:49 PM
`git fixup` is the missing git command I always needed.
I will try `git conflicting` next time I see git rebase conflicts.
github.com/dinsandra/gi...
I will try `git conflicting` next time I see git rebase conflicts.
github.com/dinsandra/gi...