Hi! I'm Eduardo Lávaque, and this is my blog.

Writing software for 11+ years. Eschew hype; focus on performance.

Living in Switzerland since 2017.

Eduardo Lavaque's Blog

    2026
  1. On modern writing, journalism, gatekeeping, and excellence

    Thoughts on quality, prompted by a veteran PC gaming blogger's work

  2. Lessons from working at Insert Startup Here (part two)

    Career lessons from working at a different unidentified startup than the first one.

  3. Lessons from working at Insert Startup Here (part one)

    Career lessons from working at an unidentified startup.

  4. Semantic query in 1.7 million SEC 8-K forms

    Challenge: Find all the forms relevant to a linguistically ambiguous search query (although semantically clear), and interpret the data within.

  5. Switched to OrbStack from Docker Desktop

    Docker Desktop is not a good piece of software, OrbStack is.

  6. Switched to DBeaver from DataGrip

    DBeaver offers a better experience than DataGrip.

  7. The next 10 years of software development

    "When you have something that you know is true, even over the long term, you can afford to put a lot of energy into it."

  8. 2025
  9. On SOLID

    And a more workable alternative, Data-Oriented Design.

  10. The Luddite Gambit

    Programming without the usual modern aides, an experiment.

  11. LLMs will not replace programmers

    Before shit goes down, I thought it'd be good to make my opinion clear, and on public record.

  12. Programming role models

    Until recently programmers didn't have public role models to look up to, now they do.

  13. Indie social networking service

    What if the small web could discover itself?

  14. When in doubt: Steps 1, 2, 3

    How I solve procrastination quite effectively and simply.

  15. On my blog vs social media

    Thoughts regarding posting on my blog vs on social media.

  16. Deeply creative life

    It's a nice thought. And it's on the top of my life goals.

  17. Productivity: the basics get you 80%

    Productivity is often overcomplicated, it doesn't have to be.

  18. Multiple screens is worse than one screen

    Is the idea of having multiple screens propaganda from big monitor?

  19. Premature optimization is the root of all evil, is bunk

    Talking about how far the pendulum swung in Knuth's direction.

  20. Learning framework for dummies

    You don't need a textbook or a roadmap or a teacher, you need a framework and a mindset.

  21. Your hedge against AI as a programmer

    I see there's three primary paths to not be made obsolete by AI.

  22. I reviewed my code from my first job in 2015

    The good, the bad, and the ugly. Reviewing my first professional code, from 10 years ago.

  23. 2024
  24. Soft-wrapping a Piece Table to draw with Raylib, in Odin

    How to implement a Piece Table with text wrapping, in order to turn an array of memory into a softly-wrapped text.

  25. Straightforward Programming (by Hasen Judi)

    Quick thoughts on the Straightforward Programming Manifesto by Hasen Judi.

  26. The Retrieval Augmented Generation (RAG) pattern for LLMs

    A full conceptual guide explaining what RAG is, how it's useful, and how to implement it without frameworks.

  27. A workable definition of simple for programming

    Many definitions of "simple" are thrown around, but can they be applied to programming to produce better code?

  28. Clean Code(tm), SOLID, OOP, and Gangs of Four are not simple, by definition

    By definition all these concepts in the OOP world from the 90s and early 2000s are more complex than simple.

  29. Essential and Accidental complexity, and performance

    The two different kinds of complexity, Essential and Accidental, a fundamental part of becoming a better programmer.

  30. Learnings from Gadget Software

    I left Gadget Software, a bespoke software agency I contributed to for 2 years, I write down my learnings.

  31. Drawing text on a window with Odin - Part 1: GLFW

    How to open a window with GLFW in Odin.

  32. The pleasure of writing Clean OOP code /s

    A sarcastic write-up on how wonderful OOP code is. I was just venting OK? I was frustrated at work.

  33. I've removed AI from my workflow

    Using AI made me dumber, and doesn't make me proud of the output.

  34. My largest regret

    "I worked too much" is a common regret on elder's deathbeds, but what about "I worked too little"?

  35. The only way forward for developers

    Can you deliver pure value, no fluff, producing real business value? Innovating solutions that AI hasn't heard of?

  36. 2023
  37. Python project setup

    Using pip-tools and makefiles to optimize my Python flow.

  38. Using pyenv on DigitalOcean Ubuntu 22.04

  39. Basic security in Python Litestar projects (bonus HTMX CSRF config)

    Getting CSRF, CORS, and allowed hosts working with Python Litestar projects, plus CSRF setup for HTMX.

  40. Shallow thoughts are cheaper for experts

  41. Throw early for programmer errors

  42. Svelte v4 in Django using Webpack

  43. Twitter 3-legged OAuth with Django using Tweepy, for Twitter bots

  44. HTMX kills most single page applications

  45. Book Summary: Don't Make Me Think Revisited A Common Sense Approach to Web and Mobile Usability by Steve Krug

  46. 2022
  47. Adding TailwindCSS to Svelte components in a Django app

  48. Using Svelte components in a Django app

  49. Managing sync state

  50. Tailwind, using grid-cols-12 instead of mx-auto

  51. Generating a Swagger file with ASP.Net Core and generating API code for Angular

  52. Kubernetes RabbitMQ Certificate Revocation List

  53. 2021
  54. Devilboxを使ってローカルのWordPressサイトの最初のセットアップしよ

  55. 2018
  56. Exiting early, cognitive load

  57. Assigning variables, cognitive load

  58. Git config

  59. On Adblockers

  60. New website

  61. 2016
  62. How to run a Promises array in a series

  63. File navigation in Vim (my way)

  64. 2015
  65. Two months of OpenBSD

  66. Experience upgrading OpenBSD to 5.7

  67. Indentation and hooks in Emacs

  68. My switch to OpenBSD, first impressions

  69. December 2014 to April 2015

  70. 2014
  71. Respect, for respect is acknowledgement, and acknowledgement is a right

  72. Figuring out when you installed Arch Linux

  73. Minimal amount of fonts in Arch Linux

  74. Get it together Linux users/devs!

  75. The bleeding terminal background inside Vim + Tmux problem

  76. Getting used to software updates

  77. Barebones file navigation in Vim

  78. Navigating in the dark

  79. Knowing something but not registering it

  80. A week with Emacs

  81. A small project is not the same as a big project

  82. A projects page!

  83. Several VLC interfaces

  84. Enable `pass` auto-completion in Zsh

  85. Acknowledgements in communication

  86. Arch Linux font tip(s)

  87. My slow switch to Emacs

  88. New blog!

  89. My take on Vim vs. Emacs

  90. You need to understand JavaScript callbacks

  91. Neat trick for Vim keybindings

  92. Just switch to UTC

  93. My experience with the BSPWM and Sxhkd

  94. Write down the day ahead of you

  95. What the gut feeling is for me

  96. A technique to remember small stuff

  97. Out of sight is not out of mind

  98. Installing Arch Linux on a Dell Vostro 1500

  99. Text editor categories

  100. My experience with SolydXK (X)

  101. Disconnecting from the DocPad community

  102. Read stuff you have read before

  103. Real science, not bullshit

  104. My explanation of The Zone

  105. The world of Window Managers

  106. My trip to Switzerland, part 1, getting there

  107. 2013
  108. A love letter to Arch Linux

  109. Switching from Zsh to fish

  110. Light Table, the new Emacs

  111. Open source games without going poor