Week 8: Roller Coaster of Emotions

Maleea m -

No week is complete without an unexpected twist. This time, I ran into a series of “command not found” errors, which led me down a rabbit hole of installing new packages on my virtual machine. The installation process dragged on for hours and slowed my VM to a nearly unusable state. Strangely, my laptop remained completely unaffected, being able to run like normal during the download outside the VM, highlighting just how independent the two systems really are. Fascinating stuff.

However, let’s get back to the point, DNS!! I faced many difficulties in figuring out a way to deploy my code, mainly due to a lack of knowledge. Chat GPT and YouTube again carried me on their backs, a relationship I know will not end anytime soon.

This journey led me on a roller coaster of highs and lows. I’ll start on the lows so I can end this writing session in a hopefully happier mood.

The Lows

1. The “Why Is Nothing Working?” Phase
At one point, my server stopped responding entirely. I checked my code. Then I checked it again. I changed ports, and I asked trusted friends (ChatGPT). I went online, and it said that if I am attempting to access my server on a school or public wifi, which I was at the time, there could be restrictions that prevent accessing my server. True enough, once I got home and tried again, it was back up. I spent over 3 hours panicking at my seemingly detrimental bug, which turned out to be public wifi.

2. Permissions and Ports
Trying to bind to port 53 (the standard DNS port) as a non-root user? Yeah… not going to happen. I went down a rabbit hole of iptables redirects and even considered running it behind a reverse proxy. Eventually, I found a workaround, but it felt like DNS was mocking me the entire time.

2. IPv6 Headaches
I thought I was being smart by binding to 0.0.0.0, but then nothing would resolve on certain machines. Turns out, some systems prioritize IPv6, and I hadn’t bound to the :: address. That small oversight led to way too much time spent debugging a “working” server that wasn’t actually reachable.

 The Highs

1. The “It Works!” Moments
The first time I asked my server to look up a website and it responded correctly? Pure magic. I had written the packet parsing, handled the UDP sockets, and implemented just enough of the DNS protocol to get it to work with tools like dig. Seeing it in action felt unreal.

2. Clean, Commented Code
After reading and experiencing peers with uncommented and chaotic code,  I made a promise to myself to keep the code clean and well-commented, and I am happy to say I stuck to it. That made troubleshooting easier, and it actually felt good to come back to my code and understand.

“Fun” Frightening Fact of the Week:

Messy code can lead to longer debugging times, crashes, longer load times, and has even taken down companies.

More Posts

Comments:

All viewpoints are welcome but profane, threatening, disrespectful, or harassing comments will not be tolerated and are subject to moderation up to, and including, full deletion.

Leave a Reply to samantha_g Cancel reply

Your email address will not be published. Required fields are marked *