Felipe O. Carvalho @felipe.rs · 11/09/2026Eng. 1: points social-technical causes of a catastrophic engineering failure. Eng. 2: no time for talking about that, let’s fix this immediate problem. 011
Felipe O. Carvalho @felipe.rs · 10/09/2026The organizations where engineers were already seen as code typers supposed to make no decisions will see a huge boost in velocity. Centralized decision making won’t keep up with this velocity, so problems will appear very quickly too. 010
Felipe O. Carvalho @felipe.rs · 10/09/2026“My main point, however, is that I don't believe that the equality P=NP will turn out to be helpful even if it is proved, because such a proof will almost surely be nonconstructive.” — Donald Knuth 010
Felipe O. Carvalho @felipe.rs · 09/08/2026I went through a rough phase in CS school. Fell in with the wrong crowd. Math and EE folks who kept telling me neural networks were a dead end. 140
Felipe O. Carvalho @felipe.rs · 18/07/2026Somewhere, Dijkstra is looking down at us renaming everything computer with anthropomorphized names. Assembly — Prompts Sub-routines — Sub-agents and tool calls Recursion/Loops — Loops Control-flow — Graphs Variables — Memory Libraries — Skills 160
Felipe O. Carvalho @felipe.rs · 13/07/2026“What fish are able to see bears a close analogy to that degree of awareness which all people have in relation to any new environment created by a new technology—just about zero.” — Marshall McLuhan 000
Felipe O. Carvalho @felipe.rs · 05/06/2026An AI agent can’t solve every git conflict adequately. For the hard ones, you would have to prompt it or give it some context about what your team is doing and what goes into the decision. It’s easier to be presented with the git conflict markers and decide by editing the code. 110
Felipe O. Carvalho @felipe.rs · 05/06/2026“The reader will not fail to observe that the second problem is more general than the first, and, nevertheless, much easier than the first. In fact, our main achievement in solving the first problem was to invent the second problem.” — George Pólya 010
Felipe O. Carvalho @felipe.rs · 24/03/2026Generating random number is really hard. Sometimes there is a bug in the CPU that you’re using. rocksdb.org/blog/2026/02...rocksdb.orgRocksDB development finds a CPU bugThis is the story of how a RocksDB unit test I added four years ago, a mini-stress test you might call it, revealed a novel hardware bug in a newer CPU. It w... 031
Felipe O. Carvalho @felipe.rs · 24/03/2026"The absolute beginners guide to databasemaxxing" pthorpe92.dev/databasemaxx...pthorpe92.devpthorpe92.dev 021
Felipe O. Carvalho @felipe.rs · 15/03/2026Monday the 16ths, on the other hand, make you lose sleep on Sunday evenings. 😰 010
Felipe O. Carvalho @felipe.rs · 27/02/202680-character line limit so you can review Claude Code output on your VT100 terminal and your phone. 000
Felipe O. Carvalho @felipe.rs · 26/02/2026I opened YouTube this week and it recommended the web scale MongoDB video. Metadata says “15 years ago” and that made me feel very old. 020
Felipe O. Carvalho @felipe.rs · 18/02/2026In Arrow C++, we have “length” of arrays for the “count” and buffers have “size” in bytes. But things get confusing when STL code is mixed because vector::size() is the length/count and not the “size” in bytes. t.co/ZGkA8xvy8R 010
Felipe O. Carvalho @felipe.rs · 18/02/2026Using Cap’n Proto in Rust to get zero-copy deserialization, but Codex insists on writing de/serialization functions that build a struct full of heap-allocated strings. Because that’s what dominates the training set of model and programmers everywhere. 031
Felipe O. Carvalho @felipe.rs · 16/02/2026You might not like it, but I treat the computers I have at home as pets, not cattle. 021
Felipe O. Carvalho @felipe.rs · 16/02/2026The year of Linux on the desktop because Windows and macOS window managers are terrible if you're supposed to loop through all the AI agents you're managing at work. 130
Felipe O. Carvalho @felipe.rs · 13/02/2026Google Meet: "no one is here" before you join the meeting but only because it hasn't really loaded the response that lists who is in the meeting. 010
Felipe O. Carvalho @felipe.rs · 13/02/2026Good time to be CLI maxxing: - @neovim.io - tmux - smug (to start tmux sessions from YAML files) - git worktrees (multiple repo checkouts for parallel agents) - dotfiles in a git repo synced across macOS and Linux machines 040
Felipe O. Carvalho @felipe.rs · 13/02/2026In this new world, by the time a PR is opened, the author should have already reviewed the coding agent’s work. Code review, as we know it, is not going to scale. You can’t get paid to ask an agent for code, open a PR and let the review and refinements be someone’s problem. 211
Felipe O. Carvalho @felipe.rs · 08/02/2026The hidden emotional labour of not judging PR authors' competence because of the LLM-generated slop being submitted for review. 240
Felipe O. Carvalho @felipe.rs · 05/02/2026In Rust, a &T is not an immutable reference in the common Functional Programming sense. func(&self) is free to mutate atomics or values wrapped in Mutex through self because any other call through an alias to self is going to synchronize the mutations. &T means "you can have other aliases". 330
Felipe O. Carvalho @felipe.rs · 03/02/2026I had a professor in CS school that told us "if you worry about hackers, you won't get anything done" when the subject of SQL injection came up. The 2026 version of that is: if you don't give your 1Password to Claude you won't get anything done. 051
Felipe O. Carvalho @felipe.rs · 01/02/2026Twitter servers are borked and profile pages say "user x hasn't posted yet" instead of an error message. This is a common pattern everywhere. "You have no flights" before your flight loads in the airline app is very stressful. 180
Felipe O. Carvalho @felipe.rs · 31/01/2026Most non-C++ integrations of the RocksDB API rely on the C bindings which will populate a fresh std::string, malloc() and memcpy() on every Get(). You either write custom bindings, or use C++ to get the good perf that RocksDB can give. 020
Felipe O. Carvalho @felipe.rs · 31/01/2026Even if PLT folks had the time and energy to productionize their ideas they would burn out growing a community around the language. Nothing seems more offensive to programmers than someone trying to create a programming language with novel ideas. 011
Felipe O. Carvalho @felipe.rs · 28/01/2026Putting a PR in the merge queue is so underwhelming. All the work, review, flaky CI restarts ending with a weak promise: it's in the queue and it might get merged. Not a triumphant, immediate, and unequivocal write to main's history. 010
Felipe O. Carvalho @felipe.rs · 26/01/2026Writing code is the hard part of software engineering in the sense that once written, the code encodes all the bad and good decisions. The bad decisions increase future risk and requires expensive and careful migrations. 140
Felipe O. Carvalho @felipe.rs · 24/01/2026AI companies: 6 months from now, AI is replacing all software engineers. Also AI companies: we can’t afford to do a re-architecting of the app to solve crippling performance issues present in the current version. 🤔 050
Felipe O. Carvalho @felipe.rs · 24/01/2026Github didn't really have to implement "AI features" to capitalize on the AI wave. All it had and has to do is to improve its existing features in a world where every team is using AI tools. There will be more code, more PRs, more reviews, more builds… and they can charge for it 000
Felipe O. Carvalho @felipe.rs · 16/01/2026Tell me about a testing technique more frustrating than snapshot testing. You can't. 100
Felipe O. Carvalho @felipe.rs · 15/01/2026Editing Rust use declarations feels like programming in Java. This granular import syntax is what made Java programming suck without an IDE. rust-analyzer helps but it would be better if the problem didn't exist at all. Go did it right. 230
Felipe O. Carvalho @felipe.rs · 07/01/2026When coding with LLMs, I get to the hardest bugs more quickly! Claude is really good at finding bugs due to a missing operator somewhere, but it can’t really reflect on the best inductive invariants to keep in a loop, recursive fn or sequence of pattern matches. 020
Felipe O. Carvalho @felipe.rs · 06/01/2026People wish explicit Option<T> handling in SQL and other query engines. But that might get tedious to write very quicly. This is what SQL gives you for SELECT a + b AS sum WHERE sum > 0 SELECT a.and_then(|a| b.map(|b| b + a)) AS sum WHERE sum.map(|s| s > 0).unwrap_or(false) 230
Felipe O. Carvalho @felipe.rs · 06/01/2026"In my defense, I only talk with these companies about technical ideas, not business strategies. And I did tell Fauna they should add SQL support, but they did not take my advice." — @andypavlo.bsky.social www.cs.cmu.edu/~pavlo/blog/...cs.cmu.eduDatabases in 2025: A Year in ReviewThe world tried to kill Andy off but he had to stay alive to to talk about what happened with databases in 2025. 010
Felipe O. Carvalho @felipe.rs · 05/01/2026Serialization of @CapnProto messages to JSON using runtime reflection [1], serde_json [2], and base64 [3]. gist.github.com/felipecrv/16... 150
Felipe O. Carvalho @felipe.rs · 02/01/2026The whole Windows installation will be 5TB after the rushed rewrite to Rust. 010
Felipe O. Carvalho @felipe.rs · 02/01/2026If you’re wrapping database APIs in REST APIs please don’t forget that database connections are *STATEFUL* accumulators of statements forming transactions. If you’re designing a new database think carefully before imposing that apps be able to send a whole transaction per req. 010
Felipe O. Carvalho @felipe.rs · 02/01/2026AI would not have invented UTF-8. Only very few humans could have invented UTF-8. The way it got adopted required humans looking at it and appreciating the beauty and good taste of the idea. LLMs have no culture. 140
Felipe O. Carvalho @felipe.rs · 02/01/2026We now live in an age where large word count is a bad sign about the quality and depth of a blog post. 020
Felipe O. Carvalho @felipe.rs · 02/01/2026What database engineers call “logical” and “physical” properties can be translated to compiler-speak as static and runtime properties respectively. 000
Felipe O. Carvalho @felipe.rs · 17/12/2025Confirming almost every command the coding agent wants to run is not just paranoia, I also want to learn about the commands. 010
Felipe O. Carvalho @felipe.rs · 16/12/2025You don't need const FIVE = 5; because 5 is already a great name for the Natural defined as Succ(Succ(Succ(Succ(Succ(Zero))))). 030
Felipe O. Carvalho @felipe.rs · 16/12/2025git alias idea💡 git config --global alias.amen "push -f" 030
Felipe O. Carvalho @felipe.rs · 16/12/2025Rust's "use crate::{..., ...}" syntax is a git conflict generator machine. 000
Felipe O. Carvalho @felipe.rs · 20/11/2025Error handling is an interesting topic and everyone believes their approach is the best and solves everything. The reality is nothing replaces thinking about errors very carefully. 020