Technology
Discover facts about technology. Small discoveries that change the way you see familiar things.
Technology

Variable shadowing hides outer logic behind identical names
Why name things clearly when you can just reuse the same word and hope for the best? By defining a new variable inside a function with the exact same name as…
Discover more
C++ template compiling takes exponentially longer to run
Writing code that literally writes code for you. C++ templates evaluate complex logic during the compilation phase, meaning heavily templated projects can…
Discover more
Hardcoded magic numbers make codebase maintenance awful
Because everyone loves a good mystery. Dropping a random, unexplained mathematical multiplier right into the middle of a vital function ensures that when you…
Discover more
Modulo operations on negative values differ by language
Math is supposed to be universal, unless you ask a programmer. Finding the remainder of a negative number yields entirely different mathematical answers…
Discover more
Why 0.1 plus 0.2 isn't 0.3
Because computers are just giant calculators that occasionally forget how to do basic addition. If you add 0.1 and 0.2 in most programming languages, you get…
Discover more
Unicode updates constantly break legacy string parsing
Progress comes at the cost of your regular expressions. Every time the Unicode consortium releases an update with new linguistic blocks and modifiers,…
Discover moreA bigger world.
One discovery
at a time.
Keep discovering with Stacky. Interesting facts in an app that is always within reach.

SQL range queries include both the start and end values
A delightful inconsistency in the tech universe. While most modern programming languages evaluate ranges by excluding the final number to prevent off-by-one…
Discover more
Global variables remain accessible from absolutely anywhere
The digital equivalent of leaving your house keys in the middle of a busy intersection. Declaring a variable globally means any random function in the entire…
Discover more
Unix environments use /dev/null as a data black hole
The digital equivalent of sweeping it under the rug. This special file instantly discards absolutely any data written to it, serving as the ultimate…
Discover more
SQL databases treat NULL as unequal to another NULL
Because nothingness is apparently unique. In database logic, since a NULL represents an unknown value, asking if one unknown equals another unknown…
Discover more
Version control systems allow totally empty commits
For those days when you want to look productive without actually doing anything. Tools like Git have specific flags that allow you to log a commit with…
Discover more
JavaScript sorts numbers alphabetically by default
Who needs numerical order when you can have alphabetical chaos? If you try to sort an array of numbers like 10, 2, and 1 in JavaScript without writing a…
Discover more
C's rand function is surprisingly predictable
Nothing is truly random, especially not a lazy algorithm. The default 'rand()' function in C uses a very basic mathematical sequence that repeats itself so…
Discover more
Why Excel still thinks 1900 was a leap year
Who needs historical accuracy when you have backwards compatibility? Ancient spreadsheet software originally miscalculated 1900 as a leap year, and modern…
Discover more
Large floating point numbers lose single digit precision
As numbers get absurdly huge, computers just stop caring about the details. Floating point architecture prioritizes scale over exactness, meaning if a…
Discover more
Pre-incrementing variables executes faster than post
Shaving microseconds off your execution time for absolutely no reason. Writing '++i' instead of 'i++' in C++ avoids creating a temporary copy of the variable…
Discover more
The sorting algorithm designed never to finish
Because regular Bogosort wasn't useless enough. This masterpiece of a joke algorithm actually checks if the list is sorted by running Bogosort on a copy of…
Discover more
Dynamic typing allows passing text strings into math
Living life dangerously on the edge of a runtime error. Languages without strict variable definitions will cheerfully accept a paragraph of text into a…
Discover more
Functional programming absolutely forbids mutating values
Commitment issues, but make it code. In pure functional programming paradigms, once a variable is assigned a value, it can absolutely never be changed again,…
Discover more
Maximum code test coverage still permits fatal logic flaws
A false sense of security wrapped in a green checkmark. Hitting 100% test coverage just proves every line of code executed without instantly exploding; it…
Discover more
Why Java treats small integers differently
Because allocating memory is hard work. To save time, the Java environment secretly pre-loads numbers from -128 to 127 into memory forever, meaning small math…
Discover more
Why a Singleton is basically a global variable
Slapping a fancy architectural name on a terrible coding habit. A Singleton ensures only one instance of a class exists, which is just a sophisticated way of…
Discover more
Boolean variables consume entire bytes instead of single bits
Welcome to the illusion of efficiency. While you think a boolean true/false takes up a single bit, processor memory architecture physically forces it to…
Discover more
Boolean short-circuiting skips evaluating half the logic
Laziness built directly into the compiler. If the first half of an 'OR' statement evaluates to true, the program completely ignores the second half, which is…
Discover more