Sign in

Nicolas Carlo

@nicoespeon.com
966 followers 188 following 950 posts

🧹 I refactor Legacy Code and build tools to help you do the same! ✏️ understandlegacycode.com 🎩 Mr. Meetup Montréal • Software Crafters / React / TypeScript / Elixir 🍁 guild.host/montreal-tech/network

PostsRepliesMedia
Nicolas Carlo @nicoespeon.com · 04/10/2026
martinfowler.com/articles/exp... it's still worth it, the thresholds may be different but cohesive code is cheaper to maintain with AI too
180
Nicolas Carlo @nicoespeon.com · 03/08/2026
On vient de terminer les évaluations pour le CFP de /dev/mtl Le temps de valider avec les speakers sélectionnés, on vous annonce le programme la semaine prochaine! Pas mal de choses autour de la programmation avec l'IA… mais pas que 🤫
Screenshot flou des talks sélectionnés. Texte en superposition qui annonce "Reveal le 10 Août".
120
Nicolas Carlo @nicoespeon.com · 01/06/2026
Il reste seulement 1 semaine et 30 places au tarif Early Bird pour /dev/mtl ⏳ 1 jour de conférence, ~20 talks tech et une belle occasion de réseauter Alors je suis pas objectif… mais c'est une occaz en or 😉 www.eventbrite.com/e/devmtl-202...
Screenshot of the tickets showing 30 seats left for the Early Bird (62.76$ CAD with taxes). Regular tickets will be available on June 7 at 81.13$ CAD (with taxes).
011
Nicolas Carlo @nicoespeon.com · 20/05/2026
What prevents you from deploying like that? 🤣
Slack discussion at work. Greg asks: "Any objection to a prod deploy?". Nicolas responds with a gif of Aragorn saying "You have my sword". Miguel chains with a gif of Legolas saying "And my bow". Diego completes with a gif of Gimly saying "And my axe!"
020
Nicolas Carlo @nicoespeon.com · 22/04/2026
✂️ Knip, Knip ✂️ knip.dev
Git diff showing +897 and -4076 lines of code, as a result of configuring Knip on a codebase I'm working with and cleaning up dead code.
030
Nicolas Carlo @nicoespeon.com · 27/03/2026
Nikado — now you can delete a tasks and preserve its children That's the last useful move you may need when re-organizing your TODOs as you work ⇧ ⌫ or right-click the task 🙂 nikado.app
000
Nicolas Carlo @nicoespeon.com · 24/03/2026
.catch() swaps parse failures with a custom Symbol .transform() filters them out Why a Symbol? To avoid accidental collision with valid data 🙂 `arrayFromFallible(SomeSchema)` 👆 `.parse()` will return a type-safe array and omit the invalid items
Dr. House leaning in a chair, a coffee in hand, saying "TA DA!" in front of such a simple but useful code snippet
000
Nicolas Carlo @nicoespeon.com · 23/03/2026
Nikado - you can now move a node elsewhere Sometimes, you make a mistake and need to re-organize the existing nodes. The trickiest part was to find a way to do so, without having to care about the layout much. 👉 "m" shortcut (also works with right-click) nikado.app
030
Nicolas Carlo @nicoespeon.com · 19/03/2026
For the curious, this is what I used for my Zod V3 -> V4 codemod 👍 www.npmjs.com/package/zod-...
010
Nicolas Carlo @nicoespeon.com · 19/03/2026
Of course there's a "Right-click" option too "Long press" on mobile
Right-click on a task will show up a modal with Move up/down options
010
Nicolas Carlo @nicoespeon.com · 19/03/2026
Nikado − now we can move nodes up/down Sometimes you don't capture tasks in the right order… while I don't want the distraction of managing the layout, re-ordering with a keyboard shortcut is really fast & convenient 🙂⚡ Demo: nikado.app#N4Ig5g9ghgNg...
121
Nicolas Carlo @nicoespeon.com · 17/03/2026
How it started / How it's going
130
Nicolas Carlo @nicoespeon.com · 11/03/2026
"quick"
020
Nicolas Carlo @nicoespeon.com · 11/03/2026
Je crois qu'Eventbrite utilise l'IA pour traduire son UI Une intuition 😄
Dans le contexte d'une conférence, "Speakers" est traduit par "Haut-parleurs" au lieu de "Orateurs"
141
Nicolas Carlo @nicoespeon.com · 06/02/2026
Latest Abracadabra release fixed a bug, but also introduced "Extract to Instance Property" refactoring Could be handy sometimes, if you are dealing with classes 😎 marketplace.visualstudio.com/items?itemNa...
010
Nicolas Carlo @nicoespeon.com · 23/01/2026
More examples
000
Nicolas Carlo @nicoespeon.com · 23/01/2026
New Abracadabra release, and I can now turn single-line comments into JSDoc ones in 2 keystrokes 🪄 Also, "Remove Redundant Else" is a bit better now marketplace.visualstudio.com/items?itemNa...
100
Nicolas Carlo @nicoespeon.com · 08/01/2026
However, I switched to lazygit (github.com/jesseduffiel...) a few months ago because GitUp can't handle signed commits, doesn't seem to be maintained much, and sometimes crashes in the middle of a merge conflict. After a few months of getting used to the shortcuts, it's my go-to tool now.
A screenshot of lazygit on my zod-v3-to-v4 repository, showing a terminal with a vision of my git status, local branches, commits, stash list, and unstaged changes diffs
120
Nicolas Carlo @nicoespeon.com · 05/01/2026
I've got the perfect poster to counter that! shop-us.kurzgesagt.org/products/ai-...
A movie poster that parodies "Ghostbusters" but it says "Slopbusters". Headlines are: "Who ya gonna trust?" and "They ain't afraid of no AI"
010
Nicolas Carlo @nicoespeon.com · 30/12/2025
Canada is so nice that if you can't take time to go ice skating, it brings the rink right in front of your door, driveway, sidewalk, road… ⛸️ ❄️ 🤣 #FreezingRain
Picture of a road and sidewalk, all covered with a layer of ice. Source: https://www.cbc.ca/news/canada/montreal/quebec-winter-storm-montreal-freezing-rain-9.7029032
140
Nicolas Carlo @nicoespeon.com · 11/12/2025
Oh my, even the reply feels like AI-generated... "You are absolutely right" kind of vibes Maybe you are dealing with a bot here 😂 Good luck!
110
Nicolas Carlo @nicoespeon.com · 05/12/2025
🧑‍💻 Hey Claude, can do that same refactor on these 62 files, so I can focus on other things? 🤖 Of course! … 🤖 Given the complexity, let me create a script… 🤖 Wait, that's strange. Let me check more carefully… 🤖 I see, they are similar. Let me update in batch… 🤖 I see the issue now… 🤖 Wait…
0161
Nicolas Carlo @nicoespeon.com · 04/12/2025
Current status: processing /dev/mtl 2025 talks to get them published on YouTube asap 🤓
Screenshot of DaVinci Resolve, showing David Guida's talk being processed.
130
Nicolas Carlo @nicoespeon.com · 27/11/2025
Now, that's a rare bird. Feels great 🥰 Turns out, it was also a perfectly good issue number.
Someone opened an issue on my "md-to-slack" GitHub repository to say thank you. The issue title is "Thank you for making this". The issue description says: "This is an insanely useful package, thanks so much!".
020
Nicolas Carlo @nicoespeon.com · 19/11/2025
Is this React? @erikras.com
110
Nicolas Carlo @nicoespeon.com · 18/11/2025
"What if we render stuff with lightbulbs instead of HTML?" 💡
110
Nicolas Carlo @nicoespeon.com · 18/11/2025
Let's start #ReactSummitUS with @erikras.com React Beyond the DOM
131
Nicolas Carlo @nicoespeon.com · 18/11/2025
Looking for a surgeon?
110
Nicolas Carlo @nicoespeon.com · 10/10/2025
Burning house girl meme, with the girl asking "Is there a seahorse emoji" and ChatGPT burning in the background, desperately trying to come up with one
000
Nicolas Carlo @nicoespeon.com · 10/10/2025
"Is there a seahorse emoji?" 🍿 chatgpt.com/share/68e939...
ChatGPT is convinced there is a seahorse emoji and starts melting down, trying to write it down.It goes on and on, without ever managing to produce it, with desperate "FINAL FINAL FINAL REAL ANSWER" disclaimers 😄
100
Nicolas Carlo @nicoespeon.com · 07/10/2025
010
Nicolas Carlo @nicoespeon.com · 17/09/2025
Alright, let's make it official… I am super-proud to tell you that I have finally published the print version of my book: "Legacy Code: First Aid Kit" 🎉 📕 🥲
A proud Nicolas holding a physical copy of his book. The book is 200 pages long. Its cover is mostly red and titled "Legacy Code: First Aid Kit" with some bandage, and a subtitle: "14 techniques to quickly and safely rescue a codebase"The book is open at page 85. The chapter is titled "Decouple Core from Infrastructure". We can see some explanations along code snippets that have syntax coloring and a font size large enough to be comfortable to read.The book is opened at page 35. The current chapter is titled "The Mikado Method & The Parking". On this page we can see there is an image to illustrate the concept being explained. It's readable enough to be comfortable. We can also see a footnote that links to Philippe Bourgau's blog because he was a relevant source for this concept.
4249
Nicolas Carlo @nicoespeon.com · 07/08/2025
Should fix this issue for good, hopefully
000
Nicolas Carlo @nicoespeon.com · 04/08/2025
I've received the v2 of my printed book, and the result looks MUCH better 😄 I've made a few more tweaks and am now waiting for Amazon's approval to publish!
Hard copy of my book "Legacy Code: First Aid Kit"Book is open to show the content, which includes text and code snippets. Font size is large enough to be read with comfort. Syntax highlighting is also good.
2100
Nicolas Carlo @nicoespeon.com · 23/07/2025
If you are still on Zod 3 and plan to migrate to Zod 4, I've created a codemod to help you do so: www.npmjs.com/package/zod-... Steps: 1. Upgrade your dependency to Zod 4 2. Run `npx zod-v3-to-v4` That should cover most scenarios Let me know if you have any trouble with it 👐
270
Nicolas Carlo @nicoespeon.com · 19/07/2025
I received my first attempt at printing my e-book... It's ok-ish I'll iterate on this prototype to fix all the little things I've noticed Hopefully I should have a decent physical version soon 😄
I'm holding a printed copy of my book "Legacy Code: First Aid Kit"
091
Nicolas Carlo @nicoespeon.com · 16/07/2025
New Abracadabra release which includes the refactoring we started implementing in mob at Alpes Craft 🏔️ "Extract Parameter" converts a variable declaration into a function parameter 🪄 marketplace.visualstudio.com/items?itemNa...
Demo of "Extract Parameter" refactoring in VS Code. Put the cursor on a variable declaration, trigger the refactoring and the code is transformed so the variable is moved as a parameter of the function.
120
Nicolas Carlo @nicoespeon.com · 12/07/2025
Back in MTL after extended holidays with family We notably went to the French Alps—I can recommend 💯, so many things to see/do/eat 😄 Time to resume work, meetups, and side-projects! 👨‍💻 currently wrapping up a zod-v3-to-v4 codemod to migrate my clients… it will be open-source
My wife, son, daughter, and I are sitting, watching over the mountains in the background. The sky is blue, the grass is green, life is good.
030
Nicolas Carlo @nicoespeon.com · 09/06/2025
Then, I went to @alpescraft.bsky.social 🏔️ It's a French conference with a special focus on crafting quality software—the Software Crafters spirit I gave a workshop on the art of refactoring (of course 😄), and a few more contributions during the open-space format of the second day
The main stage of Alpes Craft, with people getting seatedThe Pac-Man rule explained before the conference starts: when talking in group, always leave a space for someone to join. Typical for conferences who practice open-space and inclusiveness.The main room of the second day, showing 2 rows of seats forming a circle for the participants to seat.The open-space topics for the morning sessions. We can see roughly 32 topics being proposed by the attendees.
171
Nicolas Carlo @nicoespeon.com · 09/06/2025
This year, I was lucky enough to present at 2 awesmoe conferences I wanted to attend 🤗 First, I went to @jsheroes.io. I gave a talk on automated refactorings, demoing what you could do with tools like Abracadabra in VS Code The organization was stellar and I met wonderful people here 💜
A picture with all the participants, speakers and organizers left at the end of the conference. I'm here, right behind the "H" of JS Heroes 😄Oana did an amazing sketch of my talk titled "6 Safe Refactorings for Untested Legacy Code"A picture of all the speakers, on stage
151
Nicolas Carlo @nicoespeon.com · 09/06/2025
🍺
Meme of "You guys are getting paid?" but saying "You guys are using versions?"
291
Nicolas Carlo @nicoespeon.com · 05/06/2025
Statically typed languages give you the opportunity to 1. Express yourself and your Domain 2. Prevent impossible states, right in the types Here's an example in Haskell, but you can do something similar in F# and somewhat in TS * Laurent Bossavit's talk at @alpescraft.bsky.social
Laurent shows Haskell types that express what are valid cards in a game. So a Card is the product of CardValue and Suit, but a PokerCard allows the JokerCard on top.
061
Nicolas Carlo @nicoespeon.com · 05/06/2025
"The value of 90% of my skills just dropped to $0. The leverage for the remaining 10% went up 1000x. I need to recalibrate." Kent Beck on AI E.g. AI lacks empathy for users or your coworkers. But you don't. #AlpesCraft2025
Arnaud talking about that quote
030
Nicolas Carlo @nicoespeon.com · 05/06/2025
Instead of splitting your devs in silo, get them to work together on the whole stack A front-end expert will get some knowledge of backend & storage mechanism A backend dev will grow empathy for a11y concerns It makes the overall team much better at all levels
Arnaud slide presenting "t-shape" skills of different developers overlapping to form an overall highly-skilled team on the full stack
110
Nicolas Carlo @nicoespeon.com · 05/06/2025
Puis @lilobase.me lance la journée avec une keynote sur "From Code to Consequence"
Arnaud sur la scène de l'amphithéâtre
010
Nicolas Carlo @nicoespeon.com · 05/06/2025
Applied Materials, sponsor de la conférence, présente les valeurs qu'ils cultivent pour développer leurs solutions #SoftwareCrafters
Un nuage de mots incluant: no estimate, code review, clean code, pair programming, pragmatism, refactoring, continuous improvement...
100
Nicolas Carlo @nicoespeon.com · 05/06/2025
Très heureux de participer à @alpescraft.bsky.social cette année 🙌 Le programme à l'air top: www.alpescraft.fr#schedule J'animerai un atelier sur l'art de refactor du code legacy 🧟‍♀️
L'amphithéâtre qui se remplit petit à petit avec le logo de Alpes Craft projeté dans le fond
120
Nicolas Carlo @nicoespeon.com · 03/06/2025
Checking the spam folder from time to time is always fun 😄 ☕ Special shoutout to the recurring: "Hey there, your site has significant SEO issues. With our SEO services, we can get it ranking much higher with our budget-friendly service, helping you gain traffic and new customers."
Meme from Pirates of the Caribbean in which the officer says: "You have, without a doubt, the worst SEO I have ever seen". To which Jack Sparrow responds: "But you've found my website"
073
Nicolas Carlo @nicoespeon.com · 02/06/2025
Annoyed with Google AI taking over the results? Just add swear words in your question and see the LLM magically disappear 🫥 It's like a superpower! (alternatively, you can add `-ai` in the query… but this is funnier)
Google search "what color is the moon" that shows results with a large "AI Answer" block at the top. May be helpful, but sometimes not what you want or hallucinates.Google search changed to "what fucking color is the moon" and boom: no more AI block. Only results. You're welcome.
140
Nicolas Carlo @nicoespeon.com · 01/06/2025
Oh, it's June already 🧐
Screenshot of GitHub pull-requests tab on nicoespeon/abracadabra repository, showing 10 PRs open by dependabot.
010