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

Living in Switzerland 🇨🇭 since 2017.

Eduardo Lavaque's Blog

    2025
  1. Premature optimization is the root of all evil, is bunk — Talking about how far the pendulum swung in Knuth's direction.

  2. Learning framework for dummies — You don't need a textbook or a roadmap or a teacher, you need a framework and a mindset.

  3. Your hedge against AI as a programmer — I see there's three primary paths to not be made obsolete by AI.

  4. 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.

  5. 2024
  6. 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.

  7. Straightforward Programming (by Hasen Judi) — Quick thoughts on the Straightforward Programming Manifesto by Hasen Judi.

  8. 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.

  9. 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?

  10. 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.

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

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

  13. Drawing text on a window with Odin - Part 1: GLFW — How to open a window with GLFW in Odin.

  14. 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.

  15. I've removed AI from my workflow — Using AI made me dumber, and doesn't make me proud of the output.

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

  17. 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?

  18. 2023
  19. Python project setup — Using pip-tools and makefiles to optimize my Python flow.

  20. Using pyenv on DigitalOcean Ubuntu 22.04

  21. 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.

  22. Shallow thoughts are cheaper for experts

  23. Throw early for programmer errors

  24. Svelte v4 in Django using Webpack

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

  26. HTMX kills most single page applications

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

  28. 2022
  29. Adding TailwindCSS to Svelte components in a Django app

  30. Using Svelte components in a Django app

  31. Managing sync state

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

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

  34. Kubernetes RabbitMQ Certificate Revocation List

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

  37. 2018
  38. Exiting early, cognitive load

  39. Assigning variables, cognitive load

  40. Git config

  41. On Adblockers

  42. New website

  43. 2016
  44. How to run a Promises array in a series

  45. File navigation in Vim (my way)

  46. 2015
  47. Two months of OpenBSD

  48. Experience upgrading OpenBSD to 5.7

  49. Indentation and hooks in Emacs

  50. My switch to OpenBSD, first impressions

  51. December 2014 to April 2015

  52. 2014
  53. Respect, for respect is acknowledgement, and acknowledgement is a right

  54. Figuring out when you installed Arch Linux

  55. Minimal amount of fonts in Arch Linux

  56. Get it together Linux users/devs!

  57. The bleeding terminal background inside Vim + Tmux problem

  58. Getting used to software updates

  59. Barebones file navigation in Vim

  60. Navigating in the dark

  61. Knowing something but not registering it

  62. A week with Emacs

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

  64. A projects page!

  65. Several VLC interfaces

  66. Enable `pass` auto-completion in Zsh

  67. Acknowledgements in communication

  68. Arch Linux font tip(s)

  69. My slow switch to Emacs

  70. New blog!

  71. My take on Vim vs. Emacs

  72. You need to understand JavaScript callbacks

  73. Neat trick for Vim keybindings

  74. Just switch to UTC

  75. My experience with the BSPWM and Sxhkd

  76. Write down the day ahead of you

  77. What the gut feeling is for me

  78. A technique to remember small stuff

  79. Out of sight is not out of mind

  80. Installing Arch Linux on a Dell Vostro 1500

  81. Text editor categories

  82. My experience with SolydXK (X)

  83. Disconnecting from the DocPad community

  84. Read stuff you have read before

  85. Real science, not bullshit

  86. My explanation of The Zone

  87. The world of Window Managers

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

  89. 2013
  90. A love letter to Arch Linux

  91. Switching from Zsh to fish

  92. Light Table, the new Emacs

  93. Open source games without going poor