<story><title>Why is DNS still hard to learn?</title><url>https://jvns.ca/blog/2023/07/28/why-is-dns-still-hard-to-learn/</url></story><parent_chain><item><author>jvns</author><text>Hello! I wrote this post and I have a couple of things to say about this &amp;quot;DNS is not actually hard&amp;quot; take. It took me many years to feel totally comfortable debugging DNS problems, and I wrote this post to explain why I think it was hard for me.&lt;p&gt;I also used to think that &amp;quot;no, actually, it&amp;#x27;s easy!&amp;quot; was an encouraging response to &amp;quot;this is hard to learn&amp;quot;. And I kind of get it! I love DNS! I think it is surprisingly simple in many ways, and I&amp;#x27;ve written about that a lot, for example in &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;implement-dns.wizardzines.com&quot; rel=&quot;nofollow noreferrer&quot;&gt;https:&amp;#x2F;&amp;#x2F;implement-dns.wizardzines.com&lt;/a&gt; which shows you how to implement a toy DNS resolver from scratch in some pretty simple Python code.&lt;p&gt;But over the years I&amp;#x27;ve learned that &amp;quot;no, it&amp;#x27;s easy to learn!&amp;quot;, instead of coming off as an encouraging comment (&amp;quot;you can do it!&amp;quot;), often gets received as &amp;quot;no, it&amp;#x27;s not hard, actually the problem is that you&amp;#x27;re dumb&amp;quot;. Like, I&amp;#x27;ve been confused about this for years, and you&amp;#x27;re telling me that, no, actually it&amp;#x27;s easy? Not that helpful!&lt;p&gt;So I&amp;#x27;ve stopped telling people that, and instead I put a huge amount of work into trying to understand _why_ people find certain things hard and work to help remove some of those barriers.</text></item><item><author>tristor</author><text>I don&amp;#x27;t agree with this article.  I think DNS is something few people take the time to learn, but it&amp;#x27;s not actually hard to learn.  One of the great things about DNS is that the system itself will tell you about it&amp;#x27;s internal state in response to queries.  It&amp;#x27;s very easy to inspect a DNS server for a known zone and understand how it works, and there&amp;#x27;s very good tooling that&amp;#x27;s free and widely available to do this (like dig).&lt;p&gt;It&amp;#x27;s always been a big surprise to me that my DNS expertise is what seems to be most memorable for a lot of folks I&amp;#x27;ve worked with through my career, when I don&amp;#x27;t believe I know anything mystical or special.  DNS is extremely well standardized, the most common server and client implementations rigorously follow the standard, and it&amp;#x27;s very easy to inspect with free tooling.  It just takes some effort and time to learn, but it&amp;#x27;s not really hard.</text></item></parent_chain><comment><author>13of40</author><text>Just my 2 cents:  I worked on the DNS in Windows Server back in the 200x&amp;#x27;s (validating the UI and back-end functionality, not dev work), so I did have to learn about it at one point and I recall that there was a vicious level of complexity to it compared to what we ask it to do.  The 99% scenario is turning a domain into an IP via an A record. Next after that is doing the same with an MX record.  Beyond that is this deep well of other things people thought someone might want to do with DNS, but that almost nobody takes advantage of in real life.  So DNS is probably easy to understand if you&amp;#x27;re just concerned about the one or two first class scenarios, but if you had to implement an RFC-correct instance of a DNS server, it&amp;#x27;s a bit of a brain melter.</text></comment>
<story><title>Why is DNS still hard to learn?</title><url>https://jvns.ca/blog/2023/07/28/why-is-dns-still-hard-to-learn/</url></story><parent_chain><item><author>jvns</author><text>Hello! I wrote this post and I have a couple of things to say about this &amp;quot;DNS is not actually hard&amp;quot; take. It took me many years to feel totally comfortable debugging DNS problems, and I wrote this post to explain why I think it was hard for me.&lt;p&gt;I also used to think that &amp;quot;no, actually, it&amp;#x27;s easy!&amp;quot; was an encouraging response to &amp;quot;this is hard to learn&amp;quot;. And I kind of get it! I love DNS! I think it is surprisingly simple in many ways, and I&amp;#x27;ve written about that a lot, for example in &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;implement-dns.wizardzines.com&quot; rel=&quot;nofollow noreferrer&quot;&gt;https:&amp;#x2F;&amp;#x2F;implement-dns.wizardzines.com&lt;/a&gt; which shows you how to implement a toy DNS resolver from scratch in some pretty simple Python code.&lt;p&gt;But over the years I&amp;#x27;ve learned that &amp;quot;no, it&amp;#x27;s easy to learn!&amp;quot;, instead of coming off as an encouraging comment (&amp;quot;you can do it!&amp;quot;), often gets received as &amp;quot;no, it&amp;#x27;s not hard, actually the problem is that you&amp;#x27;re dumb&amp;quot;. Like, I&amp;#x27;ve been confused about this for years, and you&amp;#x27;re telling me that, no, actually it&amp;#x27;s easy? Not that helpful!&lt;p&gt;So I&amp;#x27;ve stopped telling people that, and instead I put a huge amount of work into trying to understand _why_ people find certain things hard and work to help remove some of those barriers.</text></item><item><author>tristor</author><text>I don&amp;#x27;t agree with this article.  I think DNS is something few people take the time to learn, but it&amp;#x27;s not actually hard to learn.  One of the great things about DNS is that the system itself will tell you about it&amp;#x27;s internal state in response to queries.  It&amp;#x27;s very easy to inspect a DNS server for a known zone and understand how it works, and there&amp;#x27;s very good tooling that&amp;#x27;s free and widely available to do this (like dig).&lt;p&gt;It&amp;#x27;s always been a big surprise to me that my DNS expertise is what seems to be most memorable for a lot of folks I&amp;#x27;ve worked with through my career, when I don&amp;#x27;t believe I know anything mystical or special.  DNS is extremely well standardized, the most common server and client implementations rigorously follow the standard, and it&amp;#x27;s very easy to inspect with free tooling.  It just takes some effort and time to learn, but it&amp;#x27;s not really hard.</text></item></parent_chain><comment><author>anyfoo</author><text>Maybe everyone sees this differently? Or maybe is more than one viewpoint to it.&lt;p&gt;For example, if someone tells me that something is &amp;quot;actually really simple&amp;quot;, and I did not get it yet, I tend to think that I likely (not certainly, but likely) have not found the right approach to that something yet, and once I found that way to look at it, things will resolve itself.&lt;p&gt;But if people assure me that something is &amp;quot;hard to learn&amp;quot; or &amp;quot;hard to get&amp;quot;, I&amp;#x27;m rather suspecting that that thing is full of unwieldy complexity and&amp;#x2F;or unintuitive aspects, and unless I&amp;#x27;m either up for the challenge (definitely the case sometimes), or learning it is crucial for achieving a certain goal (in which case it may turn out to be fun after all, even if still hard), I might think twice if I want to put the time and energy into it.&lt;p&gt;In the case of DNS, which I&amp;#x27;ve learned in the nineties, I found the principle simple and elegant, the tools and software unwieldy and sometimes arcane, and a large multitude of little details that are not strictly necessary for understanding and using DNS in basic ways, but that can get important when either debugging or working at scale.&lt;p&gt;So, in the case of DNS, I&amp;#x27;d say the answer is &amp;quot;depends on how deep you want to go&amp;quot;, but don&amp;#x27;t shy away from the simple and elegant principle, even if the arcane software (it has gotten better, though) stands in the way.&lt;p&gt;I think that matches the content of your article overall?</text></comment>