Where do domain names come from?

My uncle recently asked me a variant of this question, and I learned a few new things after doing some wikipedia research. Here is my attempt to explain it using language everyone can understand.

Part of what makes the internet work at all is that it is designed to be distributed — there is as little hierarchical control as possible. The big idea is to let anyone connect to anyone without going through some commander at the top. If everyone had to go through the top, then it would become a huge bottleneck.

A “web host” usually means any company that hosts web pages. This just means that they own computers that are connected to the Internet. Of course, your everyday desktop computer is also connected to the internet, but for a variety of technical and financial reasons it usually makes more sense to go through a “web hosting” company if you want a web site that is going to be available 24/7 to anyone in the world. But the point is, anyone can connect a computer to the internet, and thus anyone can be a web host — there are no qualifications. And that is part of why the Internet works at all.

However, the story is different for getting domain names. For domain names, some hierarchy is unavoidable, because you need some central way to determine who controls which names and which websites they point to. You want to be sure that “amazon.com” always goes to amazon and not “buy-stolen-belts-for-cheap.com”. In other words, you need to direct people to the right internet-attached computer. (There is also some hierarchical control needed for various other technical pieces of the Internet.)

According to the wikipedia articles, the US Department of Commerce is theoretically in charge of overseeing those aspects of the Internet that need some hierarchical control. However, they outsource the entire job to a non-profit corporation called ICANN – the Internet Corporation for Assigned Names and Numbers, which for historical reasons is based at the University of Southern California. ICANN has the authority to (1) make certain policy decisions, and (2) outsource the management of sets of domain names — like those ending in “.com”, “.org”, or “.net” — to various other companies. For example, a company called VeriSign is in charge of handling all “.com” domain names, because they won that contract from ICANN. (Part of the contract specifies certain rules, such as limits on the fees they can charge.) But VeriSign, in turn, only handles the actual repository of domain names, and outsources the job of actually dealing with customers to still other companies! But those other companies have to be “accredited” according to certain standards set by ICANN.

For example, I have control of the domain name “robinstewart.com”. I used a company called DreamHost to process that registration and collect payment of $9.95 per year. Part of that money (about $3) goes to DreamHost, for dealing with me, the customer. Part of it (about $6.50) goes to VeriSign, for keeping track of all the “.com” domain names and making sure there are no conflicts. And a very small part of it (20 cents) goes to ICANN, to continue to make policies and track down anyone abusing the system.

So there is a large hierarchy of organizations who all basically operate under the authority of ICANN, which in turn has some sort of mandate from the US government. And there are some international governance boards and treaties, but for various political reasons (i.e. the system is working, so why change it) the whole thing remains US-based.

And there you have it.

Lessons from design education

I met someone today at InfoCamp who got her college degree in “design management.” This essentially means coordinating overarching design projects that include a team of specialists working in a variety of mediums or products — such as brands that span websites, retail packaging, advertising, etc. (Apparently, in the US, this specialty is only offered at the Art Institute in Portland and at RISD.)

Carina said that virtually every project assigned in every design class she took was a real project for real clients. Companies, nonprofits, or government entities who needed something designed. This is in stark contrast to most class projects in most other disciplines, where imaginary problems are created with imaginary stakeholders, and the project team just consists of one or more students in the class.

Is it any wonder that software engineers are blissfully unaware of the needs of real users, when their only deliverables in school were to TAs who graded the correctness and efficiency of their program code?

I’ve already heard Bill Buxton talk about how class projects should at least include students from different disciplines, since that is the type of team that can make the biggest impact in the real world and people in such a team need to be able to communicate across the disciplinary boundaries. I’ve also read about the socially relevant computing initiative which seeks to make computer science projects more obviously related to real-life problems.

But design education goes all the way, by involving students at almost all levels in real projects. Actual projects! That actually need getting done! That come with all of the organizational politics and communication challenges of the real world.

Is there something special about the design discipline that makes this approach work? Or is the approach just as feasible in computer science, too?

As a high school student with no formal computer science training, I created an entire content management system with three interconnected data types (pages, vocabulary terms, and bibliography citations) and specialized back-end management interfaces for each type. Surely, there are real projects of this level of complexity or less that a first-year computer science student (or group of students) could complete. This clearly does not constitute “innovative computer science research.” But it does solve real problems with current technology, and it introduces students to the realities of working with users and stakeholders other than oneself.

An ongoing conversation thread among designers and consultants is that it is up to them not just to design but first to resolve the organizational problems (“corporate underpants“) of siloed teams lacking clear goals and effective communication. This seems to me primarily a failure of education.

Why would we expect people to know how to communicate with diverse stakeholders, if they never learned to do so? (The same reasoning goes for other emotional intelligence skills such as conflict resolution and leadership.)

If these skills are as widely needed as they appear to be, we should start teaching them at the earliest levels of school. The responsibility surely shouldn’t rest only on college-educated designers.

Computers calculate really fast

When I teach computer science to fifth graders, the main concept I want them to remember is that computers work by doing calculations incredibly, insanely, mind-bogglingly fast. To get across the idea of just how fast they work, I tell a story which I thought I’d share here, too.

Let’s start by doing a few arithmetic problems.

3 + 7 = ?

5 + 12 = ?

420394 + 59382 = ?

How long did it take to solve those? The fastest you could conceivably calculate them (especially with big numbers) is about 1 per second. Now take a modern computer, such as the one sitting in front of you. How many of these can it calculate in just one second?

The answer is (roughly) a billion. One gigaherz means “a billion times per second.” In other words, a standard modern computer can answer a billion arithmetic problems, every second.

But just how big is a billion? That number is so large that it’s hard to comprehend. My favorite way to understand it involves paper. Suppose you had a billion sheets of paper, all in a stack (the normal way they’re stacked when you buy paper or put it in a printer). How tall would that stack be, if it had one billion (incredibly thin) pieces of paper?

Of course it depends a little on the thickness of the paper, but the answer is about 100 kilometers, or 60 miles high! Mt. Everest is less than 6 miles high, so let’s turn that stack of paper on its side and lay it along a freeway. To drive past every piece of paper in that stack at 60 mph would still take you a full hour! Reams and reams, paper after paper after paper.

So it would take you an hour just to drive past all those sheets of paper at freeway speeds, yet a computer does that many sheets worth of calculations every second! After many years of programming, I still find this astonishing. That is an incredible amount of power at your fingertips.

Consultants ask “Why?”

I’m re-reading David Allen’s Getting Things Done book and realizing that many of his ideas about productivity are in common with the design processes and observations of user experience professionals.

In particular, David’s section on “natural planning” emphasizes the trajectory:1. purpose and principles2. outcome vision3. brainstorming4. organizing5. next actions

Points 2-4 correspond fairly well with, say, Bill Buxton’s emphasis on prototyping (“outcome vision”) and the expand-then-narrow design process (“brainstorming” then “organizing”).

And David’s discussion of point 1 (“purpose and principles”) immediately reminded me of Tamara Adlin’s musings on “corporate underpants.” She has been a usability consultant for various companies, and observed that bad user experience often stems directly from confusion and baggage in the ranks of the management. David and Tamara both point out that the primary advantage of hiring a consultant is not special skills or experience but simply the fact that they come from outside the company and can therefore ask the “dumb” question: “why?” Since external consultants have no previous knowledge of the company, they are allowed to ask questions that probe deeply at the organization’s core goals and principles — questions that executives and VPs would never ask because they are too scared to admit they don’t already know. Tamara always claims that by far her biggest contributions as a user experience consultant have nothing to do with usability methods per se, but simply asking “dumb” questions over and over until the various stakeholders finally get on the same page and actually start “pulling in the same direction” as each other.

If you work in an organization, try to ask those deeper questions if the answers are not already clear. Why are we doing this? What is our goal here and what are our values? What will the outcome look like and why is that what we want? My experience has been that people are much more likely to thank me for clarifying the issues than dismissing the question as “dumb.”

Health insurance is a solved problem

The current health care debate is reminding me how upset I am that most Americans don’t understand Economics. Paul Krugman, the master of economics journalism, explains it well. There is no debate. There are some types of goods for which markets work well, and others for which markets don’t work well. The simple fact is, health insurance is one of those goods that is most efficiently provided as a government monopoly. Just like defense or public parks. This is not controversial among economists.

Yet somehow politicians get away with meaningless arguments like “we need competitive markets.”

It seems incredibly dumb to spend so much time arguing about a solved problem. Especially when there are millions of people with sub-par health care that have to continue to wait for progress.

Improbable


I suppose that given a big enough forest, eventually one tree is bound to fall so precisely against another tree that it stays…

(I took this photo on Orcas Island, WA)