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!"
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.
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.
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."
tl;dr:"My favourites of these that I use already are entr, ripgrep, git-delta, httpie, plocate, and jq." Julia breaks this list into replacements for standard tools, new inventions, and less-new tools.
tl;dr:"Here are a few examples of small personal programming projects I’ve done. I’m not going to talk about “learning projects” where my goal was to learn something specific because I’ve already written a billion blog posts about that. These are more about just doing something fun with no specific learning goal."
tl;dr:(1) SSL certificates, with Let’s Encrypt (2) Concurrency, with async/await (in several languages) (3) Centering in CSS, with flexbox / grid. (4) Building fast programs with Go, and many more.
tl;dr:"I built a site where you can do experiments with DNS called Mess With DNS. It has examples of experiments you can try, and you’ve very encouraged to come up with your own experiments. In this post I’ll talk about why I made this, how it works, and give you probably more details than you want to know about how I built it (design, testing, security, writing an authoritative nameserver, live streaming updates, etc)."