/Julia Evans

Writing Javascript Without A Build System tl;dr: “I want to talk about what’s appealing to me about build systems, why I usually still don’t use them, and why I find it frustrating that some frontend Javascript libraries require that you use a build system. I’m writing this because most of the writing I see about JS assumes that you’re using a build system, and it can be hard to navigate for folks like me who write very simple small Javascript projects that don’t require a build system.”

featured in #391


Why Does 0.1 + 0.2 = 0.30000000000000004? 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."

featured in #388


Examples Of Problems With Integers 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.

featured in #384


Examples Of Floating Point Problems 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. 

featured in #383


A Debugging Manifesto 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.

featured in #375


Tips For Analyzing Logs 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.

featured in #374


Why Do Domain Names Sometimes End With A Dot? 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!"

featured in #361


Some Ways To Get Better At Debugging tl;dr: Julia read some papers on debugging and found the following categorization very helpful, elaborating on each of the following categories: (1) Learn the codebase. (2) Learn the system. (3) Learn your tools. (4) Learn strategies. (5) Get experience.

featured in #349


Monitoring Tiny Web Services tl;dr: Julia's goal is to spend approximately 0% of time on ongoing operations for "tiny unimportant websites," writing a program that does 3 things: (1) An uptime checker. (2) An end-to-end healthcheck. (3) Automatically restart if the healthcheck fails.

featured in #343


What Happens When You Press A Key In Your Terminal? tl;dr: "I thought to ask a pretty basic question: when you press a key on your keyboard in a terminal (like Delete, or Escape, or a), which bytes get sent? As usual we’ll answer that question by doing some experiments and seeing what happens."

featured in #336