Dev iconDevSep 13, 2026 ~1 min source read

Por qué getenv("X") or default es una trampa

En la entrada anterior conté cómo un componente de mi sistema estuvo meses operando con un capital que nadie le asignó — un "par fantasma" que creía haber eliminado y seguía vivo. Se ve hasta responsable — "si la variable no está, uso un valor por defecto y el programa no se rompe".

Por qué getenv("X") or default es una trampa

Share this story

Send the public story page.

Useful takeaways from this story.

En la entrada anterior conté cómo un componente de mi sistema estuvo meses operando con un capital que nadie le asignó — un "par fantasma" que creía haber eliminado y seguía vivo.

Se ve hasta responsable — "si la variable no está, uso un valor por defecto y el programa no se rompe".

Si por accidente borras esa variable —un despliegue que pisa el archivo, un backup que restauras, un typo en el nombre— el programa no se detiene, no da error, no avisa.

Building the complete brief

The page is ready to read now. The fuller skim-friendly version will appear here automatically.

The useful part

En la entrada anterior conté cómo un componente de mi sistema estuvo meses operando con un capital que nadie le asignó — un "par fantasma" que creía haber eliminado y seguía vivo. Se ve hasta responsable — "si la variable no está, uso un valor por defecto y el programa no se rompe". Si por accidente borras esa variable —un despliegue que pisa el archivo, un backup que restauras, un typo en el nombre— el programa no se detiene, no da error, no avisa.

How it works

  • En mi caso, ese 133 era el capital con el que un bot operaba con dinero real.
  • La variable que debía definirlo desapareció en un restore, y el default la reemplazó en silencio.
  • Falló callado — que es peor, porque no deja rastro y lo descubres meses después.
  • La parte que engaña de verdad: el valor cero Aquí está el detalle que casi me muerde.

What to take from it

El problema es qué cuenta como "no hay valor".

Details worth keeping

Diario de un bot que opera con dinero real — Entrada #2: Una línea que probablemente tienes en tu proyecto ahora mismo: Simplemente empieza a usar 133 como si alguien lo hubiera decidido.

Keep reading in the app

Open the app view to save this story, compare related coverage, and continue from the same source.

Open in app