curve

Debug your networks the “hard” way

When the bugs are outside your code

A while ago, I was working on a publish/subscribe application that Strongminds developed to support third-party integrations to Kitos, a central management portal for municipal IT systems in Denmark.

Messages were not making their way from a Kitos instance on one server to a message bus on another one, and I had to follow them across the internet to make the connection work again. This experience made me realize that I had been relying on a vague understanding of networking that was inadequate for the task at hand, so I decided to investigate the topic more closely.

To remember what I learned and make it usable for others, I made this sheet with some developer-oriented information about each layer in the TCP/IP network model. A handmade sheet can seem anachronistic when any chatbot could spit one out in a few seconds, but though I used an LLM for the visual layout, I preferred writing the content myself. To go along with the sheet, here are some reflections on why I still think this kind of exercise is important.

Learning by autocomplete?

As data scientist Jeremy Howard recently put it, it is crucial to use LLMs to improve your ability to think through information and tasks, instead of outsourcing critical reflection to the models (1). I treat writing as a way of thinking actively. Putting my thoughts into text forces me to confront assumptions and weak spots in my understanding. With the advance of LLMs that tend to generate large amounts of confident text, skills like contemplation and situated decision-making have only become more important to cultivate on both a personal, professional, and societal level.

I strongly recommend thinking twice before handing over an opportunity to learn something “the hard way” to AI tools that Vice President of Microsoft Scott Hanselman has fittingly called “spicy autocomplete” (2). Creating a piece of text is not a “neutral” activity without (beneficial) side effects. When you learn something new and choose to share it with the world, the final artifact is only a small part of the process.

For instance, the choice of a specific format also impacts what you learn along the way. I enjoy writing long, detailed reflections, so a cheat sheet posed an interesting challenge to balance informativeness with clear-cut memorability. I hope this overview of the TCP/IP stack can help other software developers sharpen their understanding of a topic that lies on the boundary of our usual work.


TCP/IP stack cheat sheet for debugging

 

(1) https://www.youtube.com/watch?v=zDkHJDgefyk

(2) https://www.youtube.com/watch?v=dVG8W-0p6vg