tl;dr:“I really like using programming playgrounds, and I got thinking the other day about how I didn’t have a great list of playgrounds to refer to.” Julia provides us with a laundry list of playgrounds across multiple categories.
tl;dr:Julia explores the question: why does the x86 architecture use 8-bit bytes? Why not some other size? She evaluates a couple of options: (1) It’s a historical accident, another size - like 4 or 6 or 16 bits - would work just as well. (2) 8 bits is objectively the Best Option for some reason, even if history had played out differently we would still use 8-bit bytes. (3) Mix of 1 & 2.
tl;dr:"This is roughly how floating point addition works: (1) Add together the numbers with extra precision (2) Round the result to the nearest floating point number... So let’s use these rules to calculate 0.1 + 0.2. I just learned how floating point addition works yesterday so it’s possible I’ve made some mistakes in this post, but I did get the answers I expected at the end."
tl;dr:Examples of integer problems that Julia discusses are: (1) The small database primary key. (2) Integer overflow / underflow. (3) Decoding a binary format in Java. (4) Misinterpreting an IP address or string as an integer. (5) Security problems because of integer overflow. (6) The case of the mystery byte order. (7) modulo of negative numbers. (8) Compilers removing integer overflow checks. (9) The && typo.
tl;dr:Julia wanted specific examples of floating point bugs in real-world programs and asked folks for "examples of how floating point has gone wrong for them in real programs." This post shares 8 examples of such problems. Julia writes programs to highlight the problems and ways to solve them.
tl;dr:Julia discusses the attitude and approach to take when debugging, explaining the following: (1) Inspect, don’t squash. (2) Being stuck is temporary. (3) Trust nobody and nothing. (4) It’s probably your code. (5) Don’t go it alone. (6) There’s always a reason. (7) Build your toolkit. (8) It can be an adventure.
tl;dr:14 useful tips including the following: (1) Search for the request’s ID - often log lines will include a request ID and searching for the request ID of a failed request will show all the log lines for that request. (2) Build a timeline - keeping all of the information straight in your head can get confusing, so keeping a debugging document where I copy and paste bits of information.
tl;dr:"I once (incorrectly) thought the answer to “why is there a dot at the end?” might be “In a DNS request/response, domain names have a “.” at the end, so we put it in to match what actually gets sent/received by your computer”. But that’s not true at all!"