Tue 19 Oct 2004
A Little Learning
Category : Technology/aLittleLearning.txt
They say that a little learning is a dangerous thing. But there's so much information out on the Internet, and so many things to understand, that you've got to figure out how to learn quickly from scraps of knowledge.
Take DNS, for instance. I've just finished a version of DNS Enabler that I can use for the upcoming developers' seminar. It's "better" than the one I had left around for download (in the article "OS X, Broadband, and the Airport Base Station"), in the sense that you can set the location of the server (it was always set at 10.0.1.201 in the "old" DNS Enabler). And you can set the IP address range (it used to be only for 10.0.1 networks).
And you can set up more than one machine on that network to be addressable by domain names. (In the seminar, I'm using this so that I can let the audience access both a PC and a Mac by domain names, if they want to see how well the same pieces of code run across the two platforms.)
So, at the moment, I have a DNS Server that is safe to use in a private network. But by building this, I now know what I don't yet know, and where to look, if I want to go one step further and make it a fully functioning DNS server that can be exposed to the Internet.
I remember the first time I attempted to set up a Domain Name Service, using MacDNS, back in the days of OS 9. I repeatedly brought down the Internet connection of our customer, out where we were camped then.
I only made progress when I bought QuickDNS Pro from Men and Mice (but they're not looking much like a Mac-type company anymore). They had a nice little DNS Expert application, which can be used to troubleshoot DNS set-ups, and that helped me built knowledge about all these arcane stuff bit by bit - including something called "classless reverse domains".
I remember the technician from our ISP throwing out these superior terms, when I had to tell him I was using a Mac, and I was expected to bow down and grovel because the Mac wasn't expected to have "it". I later learnt (rather painfully because this was before the days of the fire hose we now know as Google) that he was only speaking Unix-geek and that there was an equivalent way of setting this up using the more Mac-like QuickDNS Pro. Once I did that, plus a few other new things I learnt to check, the router stopped crashing on me.
When OS X came out, QuickDNS Pro didn't work on it. But I had OS X Server, and I could click the DNS-related buttons in Server Admin and go to the command line to see what changed underneath. That was my first taste of BIND. When I realised that even a stock OS X client had a working BIND built-in, I switched and ditched Server. Hurray, but I'm no DNS guru (yet!), and probably never will. But the thing is to be able to do productive things with each little piece of knowledge, because there is way too much data out there.
We've got to learn how to learn from the scraps that we get. I have people writing in wanting step-by-step instructions to do this or that. Well, I have the DNS and BIND book next to me and it's 600 pages long. I've got no choice, I can't read more than 10 pages at a time. The more important thing to do, always, is to create a skeleton framework of key concepts - something that will make sense to yourself and, more importantly, that you can use to try to explain to another person. Once you've caught the key concepts (and one should train oneself to do this very quickly), you can use that framework to hang the little pieces of information that will come your way, just-in-time, so that you can get things done when you need them.
Don't bother to memorise things. It's not an effective way of learning. Take the trouble to understand concepts. The problem I had with the ISP's technician was that he learnt things by rote. If he had understood things in terms of concepts, he would be able to describe the real issue, and then it would have only taken me a bit more time to say, hey, I have an equivalent way of doing that on my Mac, and thus solve the problem sooner.
I know I've got to get down from my soapbox but this is one way I've found that is effective for living in a world of information overload. Understand, don't memorise - that is what we should teach our kids.