Show HN: I built a guided Build your own DNS Server challenge (app.codecrafters.io)
https://codecrafters.io/dns-server
I've kept the challenge accessible but still challenging for an intermediate developer. This challenge, like others from CodeCrafters, is self-paced. You can use any tools you prefer (terminal, editor, etc.) to build the project.
At the end of the challenge, you will have created a DNS forwarding server. The server can create and read DNS packets and respond to DNS queries. As you go, you'll learn about the DNS protocol, its format, servers, and A records. All while getting to hone your language skills.
Some of the challenges and choices I had to make:
* To make the stages easier, I had to break them up, such that each step builds on the previous one. This was especially challenging for the 2nd stage, where we write a DNS packet's header contents. Even though I’d have liked it to be easier, breaking it up further would have been weird.
* Instead of implementing a recursive resolver, I've restricted to a forwarding server. We made this decision so that most developers can still use it. To add more complexity, we can use a challenge extension (noted below).
* Deciding how much instruction and context the stages should provide. I’ve decided to keep them as thorough as possible for most of the stages. Developers can choose to have thorough details or just skim through them.
I would love your feedback and questions on the challenge. You can try it out for free here: https://codecrafters.io/dns-server (no CC required).
I also have challenge extensions planned. You can find them at https://app.codecrafters.io/vote/challenge-extension-ideas?c.... I'm also keen to hear what you think about the extension ideas.
10 comments
[ 3.3 ms ] story [ 25.3 ms ] threadOut of curiosity, is there a reason why you prefer video format vs. interactive?
e.g out of habit, when I'm having a meal, I like watching "course videos" or streams occasionally. Is yours similar?
P.S. Jon Gjengset did a comprehensive stream going through the Build your own BitTorrent challenge https://youtu.be/jf_ddGnum_4?si=nwVLbe_2XsheIKav, if you're interested in Rust
Here’s what it looks like on the Redis challenge: https://app.codecrafters.io/courses/redis/stages/2/screencas...
Interactive, like other info sources that present info linearly and in high detail are much less efficient, but allow you to learn the ‘doing’ aspect that a video would not.
But I am curious about what you’ve made. How has the reception for this type of info product been so far?
Related:
* https://news.ycombinator.com/item?id=32342334
* https://news.ycombinator.com/item?id=37941075
On average I'd say we get a 50/50 split between folks who like the doing/challenge aspect of it, vs those who wished there was more "consuming" type of content, e.g vidoes/text
I'm more interested in (a) system/code design and (b) mechanically how they solve problems (eg how they debug, get around the editor etc) to improve myself. I'm less interested in the code itself.
It’s interesting how many people query random subdomains (e.g. admin/manage/etc)