<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3534487249185224205</id><updated>2025-04-17T13:34:06.703-07:00</updated><category term="articles"/><title type='text'>semmyfun</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://semmyfun.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3534487249185224205/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://semmyfun.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3534487249185224205.post-7218238480879063273</id><published>2010-10-09T09:44:00.000-07:00</published><updated>2010-10-09T09:44:51.924-07:00</updated><title type='text'>My config secrets</title><content type='html'>&lt;i&gt;Warning: unix geeky post ahead. You have been warned.&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
There are a couple of config options I always set up on a fresh account. These settings tend to &lt;b&gt;blow people&#39;s minds&lt;/b&gt;&amp;nbsp;(slightly) when they see them. So I&#39;ll share them here now for posterity.&lt;br /&gt;
&lt;br /&gt;
There are two things, or I should say, there are two bits of config in two different user config files each that I always use, and they&#39;re just insanely useful but no one else to my knowledge has ever discovered them. Get ready.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;mysql client config&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
If you&#39;re like me, or are like my former self, you may have a bunch of mysql clients open to a bunch of different mysql servers and databases.&lt;br /&gt;
&lt;br /&gt;
Every single one of these windows looks like:&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;mysql&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
If you&#39;re like me it&#39;s awfully hard to remember which client is connected to which server. I often would log out of a client only to log back in again because I didn&#39;t know where I was connected.&lt;br /&gt;
&lt;br /&gt;
I&#39;m about to solve this problem for you forever with a little config change.&lt;br /&gt;
&lt;br /&gt;
It&#39;s little known that you can create a user config for the mysql client and the other mysql util clients. Create a file called .my.cnf in your user directory. The mysql client uses the same config parser as the server so you have to create a section called [mysql] in order for it to pick up the settings.&lt;br /&gt;
&lt;br /&gt;
Add the following line:&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;prompt=&quot;\u@\h/\d&amp;gt; &quot;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
When you log in using the mysql client again, it will look something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;myuser@10.3.2.99/reports&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
\u is user, \d is database, of course. You can find all of the options near the end of &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/mysql-commands.html&quot;&gt;this page of the manual&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The second bit of config I put in the user mysql config is to set a pager. Sometimes if you execute a large query it will flood your terminal, exploding your buffer and maybe making your terminal unresponsive, frightening your children, etc.&lt;br /&gt;
&lt;br /&gt;
The way you can fix this is to set a pager. You can set it to &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;less&lt;/span&gt; but then it will page all of your queries, even the very short ones, and this quickly gets annoying. The secret is the -FX flags to less, which will tell it to exit and print everything to stdout if the buffer is less than one window high, which behaves beautifully. Add pager=&quot;less -FX&quot; to your config.&lt;br /&gt;
&lt;br /&gt;
Your complete ~/.my.cnf should look like:&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;[mysql]&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;prompt=&quot;\u@\h/\d&amp;gt; &quot;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;pager=&quot;less -FX&quot;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;readline&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
There&#39;s this library that bash, mysql and a million other command line shells use called readline. The python shell can use it but it requires some other jiggering that I don&#39;t feel like looking up right now. Anyway what&#39;s convenient about readline is that you can configure it in one place and all of your different shell programs will obey the same config.&lt;br /&gt;
&lt;br /&gt;
This config should be placed at ~/.inputrc .&lt;br /&gt;
&lt;br /&gt;
First, add the line:&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;set completion-ignore-case on&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
This will enable enhanced auto-complete, so if you type cd docu and press tab it will autocomplete Documents even though it is in a different case. It&#39;s kind of silly that bash should be case-sensitive on a case-insensitive file system.&lt;br /&gt;
&lt;br /&gt;
Next, the more interesting part:&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&quot;\C-b&quot; backward-word&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&quot;\C-f&quot; forward-word&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
These settings will make it so that control-B will move the cursor back a whole word and control-F will move it forward a whole word. By default these key combinations just move it forward or backword a single character, perhaps vestigial from an era where many keyboards didn&#39;t have arrow keys. Being able to move about by word is much more useful especially if you&#39;re working with a long command or sql statement. There&#39;s lots of &lt;a href=&quot;https://help.ubuntu.com/community/HowToReadline&quot;&gt;other configuration&lt;/a&gt; you can give readline like deleting words, adding surrounding quotes, but this is all I usually do. You should already know that control-A and control-E will move you to the beginning and end of line in almost all readline-enabled shell programs.&lt;br /&gt;
&lt;br /&gt;
So those are my config secrets. Insanely useful, yet seemingly no-one seems aware they are even possible. I hope they embiggen your unix computing experience.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3534487249185224205/posts/default/7218238480879063273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3534487249185224205/posts/default/7218238480879063273'/><link rel='alternate' type='text/html' href='http://semmyfun.blogspot.com/2010/10/my-config-secrets.html' title='My config secrets'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3534487249185224205.post-4885864455460366943</id><published>2010-09-16T08:03:00.000-07:00</published><updated>2010-09-22T07:56:49.354-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="articles"/><title type='text'>Get that 4 letter domain you&#39;ve always wanted: include one digit</title><content type='html'>&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://farm5.static.flickr.com/4007/4660273810_f115d3a2ce.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;http://farm5.static.flickr.com/4007/4660273810_f115d3a2ce.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;In &lt;a href=&quot;http://semmyfun.blogspot.com/2010/09/what-is-probability-that-pronounceable.html&quot;&gt;our last experiment&lt;/a&gt; we attempted attempted to estimate the proportion of pronounceable 5, 6 and 7-letter domains that are already registered.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;But what about 4 letter domains?&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;I wrote a series of random domain generators to test different character distributions of 4 letter domains. (For all experiments n=500 and p=~0.0, chi-square test; all domains are dot-com.)&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;First, I assumed that pronounceability would not be a factor, and generated 500 domains of consisting of 4 random letters. The results were what I expected:&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;random a-z : &lt;b&gt;100%&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;All 500 random domains that I generated were registered. I let it go for a half-hour or so and generated thousands of random domains and was not able to find one that was unregistered.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;So, all 4 letter .com&#39;s are registered then?&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;Of course not. The secret? &lt;i&gt;Digits!&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;Domains can also contain characters in the range 0-9. So, I tested a second domain generator that would produce random 4 character domains consisting of one digit in any position and 3 other characters that could be digits or letters chosen randomly from the set [a-z, 0-9].&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;The result:&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;random a-z, 0-9 with at least one digit: &lt;b&gt;22.4%&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;only 22.4% were registered! So, if you want a 4 letter domain, use a digit.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;This got me thinking. Any of the domains I generated could have from 1-4 digits. What if I controlled the number of digits?&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;1 digit, 3 letters: &lt;b&gt;16.2%&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;2 digits, 2 letters: &lt;b&gt;24.6%&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;3 digits, 1 letter: &lt;b&gt;30.6%&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;4 digits: &lt;b&gt;100%&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;The results surprised me. Apparently the optimal number of digits to include is 1, and the more digits you have the more likely it is to be registered. In fact, it appears that someone has registered every dot-com combination of 4 digits.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;The story is not over yet, though: what if you include a hyphen? I tried several experiments with 3 letters or digits plus a hyphen to find out.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;3 random letters a-z + hyphen: &lt;b&gt;60.6%&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;3 random characters a-z, 0-9 + hypen: &lt;b&gt;17.4%&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;3 random digits 0-9 + hypen: &lt;b&gt;48%&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;Including a hyphen does not beat the 1 digit + 3 letter domain space but comes close. Interestingly domains in the digits + hypen set were dramatically more likely to be registered than the set of digits + characters + hyphen.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
So, contrary to what you might believe, it turns out there are plenty of available 4 letter domains.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;There are 456,976 possible 4 letter combinations of the letters a-z (26^4), and there are 703,040 possible combinations of 3 letters a-z plus one digit 0-9 ((10 * 26^3) * 4). Assuming the 16.2% proportion is safe to extrapolate on, there should be 589,147 unregistered one digit + 3 letter domains, &lt;i&gt;more than the total number of possible 4 letter a-z domains&lt;/i&gt;. Popular wisdom suggests that attaining a 4 letter dot-com is nearly impossible. These results suggest that is not the case, if you&#39;re willing to include a digit.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Finally, I attempted one last experiment: sample the complete possible space for domains, letters, digits and hyphens chosen randomly 1 out of 36 or 1 out of 37 for each character (hyphens cannot lead or end a domain). Results:&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;ul&gt;&lt;li&gt;any legal combination of letters, digits and hyphens: &lt;b&gt;43.0%&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
Out of the&amp;nbsp;1,774,224 possible 4 letter dot-com domains (36^2 * 37^2), actually less than half are registered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://chart.apis.google.com/chart?chxl=0:|4+letters+a-z|1%2B+digits+%2B+letters|1+digit%2C+3+letters|2+digits%2C+2+letters|3+digits%2C+1+letter|4+digits|a-z+%2B+hyphen|a-z%2C+0-9+%2B+hyphen|digits+%2B+hyphen|all+possible&amp;amp;chxp=0,10,35,60,85,110,135,160,185,210,235&amp;amp;chxr=0,0,245&amp;amp;chxt=y,x&amp;amp;chbh=20,5,0&amp;amp;chs=440x290&amp;amp;cht=bhs&amp;amp;chco=4D89F9&amp;amp;chd=t:57,52,82.6,39.4,0,69.4,75.4,83.8,77.6,0&amp;amp;chtt=4+letter+domain+availability&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://chart.apis.google.com/chart?chxl=0:|4+letters+a-z|1%2B+digits+%2B+letters|1+digit%2C+3+letters|2+digits%2C+2+letters|3+digits%2C+1+letter|4+digits|a-z+%2B+hyphen|a-z%2C+0-9+%2B+hyphen|digits+%2B+hyphen|all+possible&amp;amp;chxp=0,10,35,60,85,110,135,160,185,210,235&amp;amp;chxr=0,0,245&amp;amp;chxt=y,x&amp;amp;chbh=20,5,0&amp;amp;chs=440x290&amp;amp;cht=bhs&amp;amp;chco=4D89F9&amp;amp;chd=t:57,52,82.6,39.4,0,69.4,75.4,83.8,77.6,0&amp;amp;chtt=4+letter+domain+availability&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;update:&lt;/i&gt;&amp;nbsp;Well, this post has generated significant interest. Check out my &lt;a href=&quot;http://www.dotcomroulette.com/&quot;&gt;domain name generator&lt;/a&gt;, and here are some useful registrar coupon codes: for&amp;nbsp;&lt;a href=&quot;http://bit.ly/aAOeHz&quot; rel=&quot;nofollow&quot;&gt;godaddy&lt;/a&gt;&amp;nbsp;use code FALL99, and &lt;a href=&quot;http://bit.ly/9b7INo&quot; rel=&quot;nofollow&quot;&gt;namecheap&lt;/a&gt; use BACK2REALITY. Let me know if they work.&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3534487249185224205/posts/default/4885864455460366943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3534487249185224205/posts/default/4885864455460366943'/><link rel='alternate' type='text/html' href='http://semmyfun.blogspot.com/2010/09/get-that-4-letter-domain-youve-always.html' title='Get that 4 letter domain you&#39;ve always wanted: include one digit'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm5.static.flickr.com/4007/4660273810_f115d3a2ce_t.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-3534487249185224205.post-3333859886839935451</id><published>2010-09-14T08:07:00.000-07:00</published><updated>2010-09-22T08:03:31.091-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="articles"/><title type='text'>What is the probability that a pronounceable domain is registered?</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://imgur.com/uJYI6.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://imgur.com/uJYI6.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica; font-size: 12px;&quot;&gt;I saw someone griping on Hacker News that all the short, pronounceable domains are taken.&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;I realized that I knew how to quantify this frustration. &lt;i&gt;One&lt;/i&gt;, how many pronounceable domains exist for a given number of characters? &lt;i&gt;Two&lt;/i&gt;, given a finite answer to &lt;i&gt;One&lt;/i&gt;, what is the probability that a domain in this space is registered?&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;I recently made &lt;a href=&quot;http://www.dotcomroulette.com/&quot;&gt;a tool to find pronounceable domains&lt;/a&gt;, partially using &lt;a href=&quot;http://en.wikipedia.org/wiki/Markov_process&quot;&gt;Markov techniques&lt;/a&gt;. I started with a &lt;a href=&quot;http://home.ccil.org/~cowan/trigrams&quot;&gt;published frequency table&lt;/a&gt;&amp;nbsp;of letter trigrams in English and simply brute-forced my way to find every possible overlapping combination of trigrams that would fit in a given length of characters.&amp;nbsp;I assumed that a domain had to start with a valid starting trigram but could end at the length limit with any trigram.&amp;nbsp;This process produces a set of some real but mostly nonsense words that should be pronounceable to English speakers. All results are limited to dot-com domains.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;The results:&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;For &lt;b&gt;length = 5&lt;/b&gt;, there are&amp;nbsp;&lt;b&gt;265,722&lt;/b&gt; total possible pronounceable domains&lt;/li&gt;
&lt;li&gt;For &lt;b&gt;length = 6&lt;/b&gt;, there are&amp;nbsp;&lt;b&gt;1,702,669&lt;/b&gt;&amp;nbsp;total possible pronounceable domains&lt;/li&gt;
&lt;li&gt;For &lt;b&gt;length = 7&lt;/b&gt;, there are&amp;nbsp;&lt;b&gt;10,843,465&lt;/b&gt;&amp;nbsp;total possible pronounceable domains&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;Next I randomly sampled from these spaces to figure out the percentage of the possible dot-com domains for each length that are already registered. The results:&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;ul&gt;&lt;li&gt;For &lt;b&gt;length = 5&lt;/b&gt;, of 481 sampled from 265,722 possible names, &lt;b&gt;92.52%&lt;/b&gt; were registered&lt;/li&gt;
&lt;li&gt;For &lt;b&gt;length = 6&lt;/b&gt;, of 941 sampled from 1,702,669 possible names, &lt;b&gt;45.48%&lt;/b&gt; were registered&lt;/li&gt;
&lt;li&gt;For &lt;b&gt;length = 7&lt;/b&gt;, of 1906 sampled from 10,843,465 possible names, &lt;b&gt;12.8%&lt;/b&gt; were registered&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;br /&gt;
So 92.5% of pronounceable 5 letter dot-com domains are registered, 45.48% were registered for 6 letter domains, and only 12.8% of seven letter domains were taken. (By the way, I&#39;ve never been able to find an alphabetical 4 letter domain that is not already registered.) Eyeballing the results it did appear that the registered domains did tend to have a better &quot;ring&quot; to them than those that were not, and seven-letter nonsense words often had no ring to them at all, but automatically assessing domain quality was not attempted in this analysis.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;This should be a number on our frustrations, and maybe a year from now I can run the same script and see how the numbers have changed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://chart.apis.google.com/chart?chxr=0,0,10843465|1,7,5&amp;amp;chxt=x,y&amp;amp;chbh=a&amp;amp;chs=440x220&amp;amp;cht=bhs&amp;amp;chco=4D89F9,C6D9FD&amp;amp;chds=0,10843455,0,9455506.48&amp;amp;chd=t:245845.994,774373.861,1387963.52|19876.006,928295.139,9455501.48&amp;amp;chdl=registered|possible&amp;amp;chtt=Number+of+pronounceable+.com+domains%2C+5-7+letters&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://chart.apis.google.com/chart?chxr=0,0,10843465|1,7,5&amp;amp;chxt=x,y&amp;amp;chbh=a&amp;amp;chs=440x220&amp;amp;cht=bhs&amp;amp;chco=4D89F9,C6D9FD&amp;amp;chds=0,10843455,0,9455506.48&amp;amp;chd=t:245845.994,774373.861,1387963.52|19876.006,928295.139,9455501.48&amp;amp;chdl=registered|possible&amp;amp;chtt=Number+of+pronounceable+.com+domains%2C+5-7+letters&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
The area of unregistered pronounceable 5 letter domains, representing 19,876 names, is barely visible. This is plotted according to the absolute number of domains on a linear scale. The next chart shows the percentage available per length:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://chart.apis.google.com/chart?chxr=1,7,5&amp;amp;chxs=1,676767,11.5,0,lt,676767&amp;amp;chxt=x,y&amp;amp;chbh=a&amp;amp;chs=500x220&amp;amp;cht=bhs&amp;amp;chco=4D89F9&amp;amp;chd=t:7.48,54.52,87.2&amp;amp;chdl=%25+available&amp;amp;chtt=Percentage+of+pronounceable+.com+domains+available%2C+5-7+letters&amp;amp;chts=676767,13.5&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://chart.apis.google.com/chart?chxr=1,7,5&amp;amp;chxs=1,676767,11.5,0,lt,676767&amp;amp;chxt=x,y&amp;amp;chbh=a&amp;amp;chs=500x220&amp;amp;cht=bhs&amp;amp;chco=4D89F9&amp;amp;chd=t:7.48,54.52,87.2&amp;amp;chdl=%25+available&amp;amp;chtt=Percentage+of+pronounceable+.com+domains+available%2C+5-7+letters&amp;amp;chts=676767,13.5&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
To give you an idea of what the output of this process looks like, I reproduced some output for each character length below.&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;5&quot; cellspacing=&quot;5&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th&gt;len = 5&lt;/th&gt;&lt;th&gt;len = 6&lt;/th&gt;&lt;th&gt;len = 7&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;tt&gt;&lt;br /&gt;
ANTON.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANTOP.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANCLE.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANCRA.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANCOM.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANGLA.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANGRO.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANSED.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANSEC.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANNER.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANORT.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANORD.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANORR.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANOME.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANONA.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANONO.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANEDI.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANEST.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANEEN.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANECA.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANETI.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
&lt;/tt&gt;&lt;/td&gt;&lt;td&gt;&lt;tt&gt;&lt;br /&gt;
ANDENO.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANDEMA.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANDITI.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANDARN.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANTERR.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANTESS.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANCESI.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANCERO.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANCLEM.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANGLEG.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANSTON.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANSENI.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANICER.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANNICE.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANNOWI.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANORNE.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANONES.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANECON.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANETAC.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANELOC.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANELDE.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
&lt;/tt&gt;&lt;/td&gt;&lt;td&gt;&lt;tt&gt;&lt;br /&gt;
ANDEAST.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANTORRI.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANTOWEA.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANTARRE.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANTABIT.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANTHARI.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANTHIRE.com &lt;span style=&quot;color: red;&quot;&gt;registered&lt;/span&gt;&lt;br /&gt;
ANTUTHE.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANCEDEP.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANCHATH.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANCHITA.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANCHREL.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANCLEAK.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANCRIME.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANCROAT.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANGERRO.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANGEDIT.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANGICIE.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANGRANO.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANSITUT.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
ANSIMPE.com &lt;span style=&quot;color: green;&quot;&gt;available&lt;/span&gt;&lt;br /&gt;
&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3534487249185224205/posts/default/3333859886839935451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3534487249185224205/posts/default/3333859886839935451'/><link rel='alternate' type='text/html' href='http://semmyfun.blogspot.com/2010/09/what-is-probability-that-pronounceable.html' title='What is the probability that a pronounceable domain is registered?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3534487249185224205.post-8192545033159248288</id><published>2010-08-23T08:22:00.000-07:00</published><updated>2010-08-23T08:24:35.181-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="articles"/><title type='text'>How does WHOIS work? A dirty guide</title><content type='html'>While devising my &lt;a href=&quot;http://www.dotcomroulette.com/&quot;&gt;domain name suggestion tool&lt;/a&gt; I had to learn a lot about how WHOIS works in practice. In the interest of sharing knowledge I&#39;ve written out what I learned.&lt;br /&gt;
&lt;br /&gt;
WHOIS is a simple protocol to query the internet&#39;s database for ownership of domain names.&lt;br /&gt;
&lt;br /&gt;
Simply connect to a whois server on port 43, enter a domain, and hit return. The server will print a couple response packets to your socket and the disconnect you.&lt;br /&gt;
&lt;br /&gt;
Example (I typed in &quot;hello.com&quot; and hit return):&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;$ telnet whois.verisign-grs.com 43&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Trying 199.7.52.74...&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Connected to whois.verisign-grs.com.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Escape character is &#39;^]&#39;.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;hello.com&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Whois Server Version 2.0&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Domain names in the .com and .net domains can now be registered&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;with many different competing registrars. Go to http://www.internic.net&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;for detailed information.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; Domain Name: HELLO.COM&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; Registrar: MARKMONITOR INC.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; Whois Server: whois.markmonitor.com&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; Referral URL: http://www.markmonitor.com&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; Name Server: NS1.GOOGLE.COM&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; Name Server: NS2.GOOGLE.COM&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; Name Server: NS3.GOOGLE.COM&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; Name Server: NS4.GOOGLE.COM&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; Status: clientDeleteProhibited&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; Status: clientTransferProhibited&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; Status: clientUpdateProhibited&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; Updated Date: 30-mar-2010&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; Creation Date: 30-apr-1997&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; Expiration Date: 01-may-2011&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;gt;&amp;gt;&amp;gt; Last update of whois database: Sun, 22 Aug 2010 16:52:25 UTC &amp;lt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;NOTICE: The expiration date displayed in this record is the date the&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;registrar&#39;s sponsorship of the domain name registration in the registry[.....]&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Simple enough, right? I learned a lot of tricks about this process.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Every TLD is different&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Every top-level-domain (e.g. .com, .net., .me, .name) handles whois differently: they have different central whois servers and different response formats.&lt;br /&gt;
&lt;br /&gt;
dot-com is handled by verisign at whois.verisign-grs.com.&amp;nbsp;The folks at whois-servers.net have helpfully provided cname aliases for the central whois server for every TLD. (That is to say, com.whois-servers.net will resolve to verisign&#39;s whois server for .com, and me.whois-servers.net will resolve to the whois server for the .me TLD, etc.)&lt;br /&gt;
&lt;br /&gt;
There are several mirrors of verisign-grs.com, including whois.internic.net, whois.crsnic.net, and whois.nsiregistry.net, which must be obsolete addresses of competitors that verisign took over at some point. These names all resolve to addresses of the pattern&amp;nbsp;199.7.*.74 and &lt;i&gt;I&#39;ve found other whois servers responding in this address range&lt;/i&gt;&amp;nbsp;operated by verisign that do not appear to be documented anywhere.&lt;br /&gt;
&lt;br /&gt;
I discovered that &lt;i&gt;verisign&#39;s whois server will always respond in the following way&lt;/i&gt;:&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;The first packet you receive contains always contains the header &quot;Whois Server Version 2.0\n\n&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Domain names in the .com and .net domains can now be registered&amp;nbsp;with many different competing registrars. Go to http://www.internic.net&amp;nbsp;for detailed information.\n&quot;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;The second packet contains the actual whois result, if any, followed by a long legal disclaimer&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;So I discovered that the most optimal way to make the request is to accept one packet, discard it, then read a little bit into the next packet to get the whois result, then disconnect before reading the ~2kb of legalese with every request. A little rude, perhaps, but you can be reasonably certain that that legal notice is never going change and it&#39;s just a waste of resources.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;.com and .net require a two-stage lookup&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;dot-com and dot-net (both handled by verisign) are a little different than most other whois systems. The central whois server will tell you if a domain is registered, when it expires, and at what registrar it was registered at, but does not contain any information about who actually owns any domain. The whois record will contain a row that will tell you the whois server of the registrar with which the domain was registered, and you must then make a second whois request against the registrar&#39;s own whois server to get the information on the actual owner. Registrar whois servers follow the same request protocol but only contain any information about the domains controlled by that registrar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;I&#39;ve never been able to get banned from verisign&#39;s whois servers (though supposedly it is possible), and I&#39;ve always found it to be extremely fast (though I can tell some of the servers you get round-robin&#39;ed to are faster than others). The various registrar whois servers are a different story: they vary widely in reliability and some have paranoid banning policies. Oh, and the response format different registrars use may not be the quite the same.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;This two-stage design is understandable: given 90 million .com domain names are already registered, this makes the amount of data verisign has to maintain and serve out more manageable. By the way, you can apply for an account to download the entire zone file &lt;a href=&quot;http://www.verisign.com/domain-name-services/domain-information-center/tld-zone-access/index.html&quot;&gt;from verisign for .com&lt;/a&gt;&amp;nbsp;and analogously for&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/questions/307553/possible-to-download-entire-whois-database-list-of-registered-domains/307590#307590&quot;&gt;many other TLDs&lt;/a&gt;. dot-com&#39;s zone file is about 1 GB.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;DNS is your friend&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;&lt;div&gt;If you just want to tell whether a name is registered it&#39;s almost always a better deal to just do a DNS lookup against it. Certain record types like SOA or NS might have better abstract properties but A records are probably fastest considering it&#39;s more likely to be cached by a lower-tier DNS server. If you find any DNS record for a domain, it would have to be registered, and the vast majority of owned domains will have an A record set. So you can quickly discard domains that have DNS records as being registered.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;Finally&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Whois is a weird, wacky protocol. Like many other domaining issues, in practice it means knowledge of the whims and quirks of verisign&#39;s chosen behavior. At one point in 1999 the protocol was changed and all whois clients out there broke. This &lt;a href=&quot;http://en.wikipedia.org/wiki/Cross_Registry_Information_Service_Protocol&quot;&gt;might happen again&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I haven&#39;t actually tried getting access to the zone file, but all of the above suggests a hybrid approach when checking a domain in order of expense:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Check the zone file first&lt;/li&gt;
&lt;li&gt;Do a DNS lookup second&lt;/li&gt;
&lt;li&gt;Look it up in the central whois&lt;/li&gt;
&lt;li&gt;If found in the central whois, check the registrar whois&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;So that&#39;s all I&#39;ve learned about whois. Enjoy!&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3534487249185224205/posts/default/8192545033159248288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3534487249185224205/posts/default/8192545033159248288'/><link rel='alternate' type='text/html' href='http://semmyfun.blogspot.com/2010/08/how-does-whois-work-dirty-guide.html' title='How does WHOIS work? A dirty guide'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3534487249185224205.post-3629688642889450220</id><published>2010-08-18T11:32:00.001-07:00</published><updated>2010-09-16T12:58:21.427-07:00</updated><title type='text'>Why semmyfun?</title><content type='html'>Because words like semantic are fun but semmy is more fun than semantic&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;UPDATE: also it&#39;s homophonous with semi-fun, which is semi-fun&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3534487249185224205/posts/default/3629688642889450220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3534487249185224205/posts/default/3629688642889450220'/><link rel='alternate' type='text/html' href='http://semmyfun.blogspot.com/2010/08/why-semmyfun.html' title='Why semmyfun?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3534487249185224205.post-8155644113789869039</id><published>2010-08-18T10:03:00.000-07:00</published><updated>2010-08-21T11:47:00.272-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="articles"/><title type='text'>Domains are inefficiently priced</title><content type='html'>&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;The market for domains is an unusual one: domains have unusual characteristics as a priced good.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;It&#39;s been bemoaned countless times in countless places the practice of domain squatting: seemingly every good domain is taken, and often by some domain squatter who isn&#39;t using the domain for any admirable purpose.&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica; font-size: 12px;&quot;&gt;I made a&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica; font-size: 12px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica; font-size: 12px;&quot;&gt;&lt;a href=&quot;http://www.dotcomroulette.com/&quot;&gt;tool&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica; font-size: 12px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica; font-size: 12px;&quot;&gt;recently to find good available domains.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;First off, these complaints are lies. Everyone who has ever complained about domain parking has a few domains they bought but are just sitting on without using them.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;If you&#39;ve ever thought about this issue for more than a minute, it&#39;s occurred to you that&lt;/div&gt;&lt;blockquote&gt;&quot;To combat squatting, they should raise the price of domains! If it cost $100 to own a domain 95% of squatting would go away!&quot;&lt;/blockquote&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;only to realize seconds later&lt;/div&gt;&lt;blockquote&gt;&quot;But then I would have to pay that much for my domains, including a few that I want to sit on and not use. I still want to pay $7!&quot;&lt;/blockquote&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;and then you put your head into your hands and moan about how &lt;i&gt;unfair&lt;/i&gt; it all is.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;Everyone is basically a hypocrite: domainers suck, but I still want to pay $7 for a domain and not necessarily do anything with it once I own it. It&#39;s a tragedy of the commons of intentions.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;Domains are inefficiently priced.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;There isn&#39;t really a good pricing mechanism for domain names.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;there is virtually a limitless supply of domains, and more cannot be made.&lt;/li&gt;
&lt;li&gt;once a domain is used, no one else can use it&lt;/li&gt;
&lt;li&gt;every domain is unique&lt;/li&gt;
&lt;li&gt;some domains are very high value, most are not&lt;/li&gt;
&lt;li&gt;most domains are of some idiosyncratic value to a few rare individuals spread out across the earth&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;The quantity supplied of unused domains is practically infinite. The quantity supplied of each domain is 1.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;As a result the classic functions of prices no longer, well, function:&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;No &lt;i&gt;signaling mechanism&lt;/i&gt;. If someone buys a domain, it does not send a signal to the market that it should produce more domain names.&lt;/li&gt;
&lt;li&gt;No &lt;i&gt;transmission of preferences&lt;/i&gt;. Since every domain is unique and can only be used once, past domain market activity does not indicate what a price of any given domain should be in order to be efficient.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;Since most domains without type-in traffic are of some unpredictable value to a small number of individuals, the best way to price these domains is with an auction mechanism. The efficient price for a short dictionary word should cost thousands of times more than an 8 syllable jokey domain, and the way to determine a price that at least serves a rationing function (apportioning domains to those who want it most) is to use an auction pricing mechanism.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;The most important barrier to auction pricing mechanism is&amp;nbsp;&lt;i&gt;time value fluctuation&lt;/i&gt;. Everyone who wants a domain probably does not want it at the same time. Bob in Johannesburg wants a given domain in 2002, Hillary in Montevideo realizes she wants the same name in 2007. If they both had wanted the domain at the same time, we could auction it off between them.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;So why doesn&#39;t Hillary just try to buy the domain off Bob, assuming he purchased it? Effectively domain buyers can just conduct one-off auctions between themselves and the current domain owner.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;Well, why not? Buying used domains should be efficient, right?&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Transaction costs&lt;/i&gt;. Buying a used domain means tracking down and trying to negotiate with some random weirdo literally half a world away. This is so time consuming and frustrating most will not bother attempting it. It&#39;s also given that a large percentage of domain owners make it difficult to contact them, fearing spam.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Endowment_effect&quot;&gt;&lt;i&gt;Endowment effects&lt;/i&gt;&lt;/a&gt;. Psychologically, when people get something that isn&#39;t even unique and special they demand unrealistically high prices to part with it once they own it. Simple studies have subjects choose a price for a coffee cup they don&#39;t own and then are given the same coffee cup to own and asked at what price they would be willing to part with it -- the second price they choose is massively higher.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Inequity_aversion&quot;&gt;&lt;i&gt;Inequity aversion&lt;/i&gt;&lt;/a&gt;. Someone selling a domain doesn&#39;t want there to be some massive hidden value in a domain that they aren&#39;t pricing correctly; they may be reluctant to sell without a &quot;fair&quot; price but have absolutely no way of knowing what a fair price should be and may refuse to sell for this reason alone. For the same reason we may refuse to buy a domain at a good price since it seems so unfair that the current owner only paid $7 for it.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;Endowment effects should be exacerbated if the current owner has invested emotionally or put time into owning the domain, but should be less of a problem for more sophisticated sellers.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;b&gt;Large-scale domain sellers should not be effected by to these last set of inefficiencies.&lt;/b&gt; Big time domain parkers make it blatantly obvious how to contact them to buy the domain, have no emotional investment in any particular domain they own and should know from experience what is a fair price. &lt;b&gt;Smaller domain owners are the problem &lt;/b&gt;with used domains.&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;We all hate domain parkers because we want an inefficient price for ourselves but efficient prices for everyone else. Dot-com names should cost $1000 and there should be another TLD that costs $1/year for all of our hobby projects.&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3534487249185224205/posts/default/8155644113789869039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3534487249185224205/posts/default/8155644113789869039'/><link rel='alternate' type='text/html' href='http://semmyfun.blogspot.com/2010/08/domains-are-inefficiently-priced.html' title='Domains are inefficiently priced'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3534487249185224205.post-839978628211393509</id><published>2010-08-01T21:01:00.000-07:00</published><updated>2010-08-21T11:47:00.272-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="articles"/><title type='text'>Can you do it? A simple web app, start to finish in one week</title><content type='html'>It&#39;s useful in life to set challenging, yet achievable goals. After some recent setbacks I decided to recover my ego with this simple task: given a good, simple idea for a useful web app, go from idea to launch in one week.&lt;br /&gt;
&lt;br /&gt;
I&#39;m happy to say that I completed this goal. The result is: &lt;a href=&quot;http://www.dotcomroulette.com/&quot;&gt;http://www.dotcomroulette.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Was this challenging? Of course. I intended to still do all the normal things I need to do during the week, like going to the gym and going to grocery store, and use up extra time that I would have spent puttering around doing nothing of use. I was largely able to accomplish this, but I did stay up late a couple nights. I counted two Wednesdays as one day and found bugs over the next few days, but sometimes you have to make success fit you rather that you fit success.&lt;br /&gt;
&lt;br /&gt;
Several times I was set back my an unexpected obstacle by at least a day. The worst of these was WHOIS. My site is powered by Google App Engine. GAE is ideal in many ways but sandboxes you into a limited environment where the only network calls you can make are over HTTP. I had expected that someone had written some HTTP whois API that I could call to make queries. Instead I had difficulty finding any, and those that did exist were not reasonably priced for my needs since I had to make hundreds of whois queries for each name suggestion (so $0.01 per query is not going to be profitable for me, to say the least).&lt;br /&gt;
&lt;br /&gt;
I ended up writing a threaded HTTP-WHOIS proxy server that I run somewhere else. This is a significant design limitation, since if it goes down the entire site is unusable. Given that both systems are uncorrelated this means of course a multiplicative increase in the failure odds &lt;tt&gt;(p(fail) = 1 - (p&lt;sub&gt;1&lt;/sub&gt;(fail) * p&lt;sub&gt;2&lt;/sub&gt;(fail))&lt;/tt&gt;. It&#39;s also a single ugly bottleneck for all those clouded GAE instances out there, sort of defeating the point.&lt;br /&gt;
&lt;br /&gt;
The frontend design also took at least 40% of the time. Design is not one of my strengths and this component of creating the site was a source of anxiety for me. Would I be able to make something passable in a short period of time? I ended up coming up with some that I liked, but it wasn&#39;t something that I felt 100% confident about in advance of doing it.&lt;br /&gt;
&lt;br /&gt;
UI-wise I found that I had to rule out doing anything ambitious that I didn&#39;t more or less know how to do already in the interest of releasing quickly.&lt;br /&gt;
&lt;br /&gt;
The algorithm was easy. I had this down in a couple hours. Including writing the entire bayes and markov engines from scratch. Goes to show how well I know this stuff now. I later went back and optimized it, for instance, by replacing lists of numbers with python&#39;s optimized array.array data structure.&lt;br /&gt;
&lt;br /&gt;
I also cut several features that I felt 1) complicated the layout, forcing me to make decisions about the layout that I wasn&#39;t certain about making and would have fretted over endlessly, and 2) didn&#39;t add that much value at launch time. For instance, I wanted to have a sidebar that would pull in retweets from the twitter api. Sometimes it&#39;s kind of hard to think of key words when you&#39;re staring at the input box and I wanted a way for people to get ideas using examples that others had shared. Additionally people could get a little feedback reward from doing a retweet, which gives me the obvious benefit of getting exposure to that person&#39;s twitter followers. But I couldn&#39;t make up my mind as to where I would put that element so that it wouldn&#39;t be distracting for people looking at the page for the first time and I couldn&#39;t even test the feature because twitter apparently couldn&#39;t even index the .appspot.com name for the site. In the interest of getting a release out the door, I cut the feature.&lt;br /&gt;
&lt;br /&gt;
What did I learn?&lt;br /&gt;
&lt;br /&gt;
I learned that I can make a genuinely useful web app in a week.&lt;br /&gt;
&lt;br /&gt;
What if I could do this every week?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3534487249185224205/posts/default/839978628211393509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3534487249185224205/posts/default/839978628211393509'/><link rel='alternate' type='text/html' href='http://semmyfun.blogspot.com/2010/08/can-you-do-it-simple-web-app-start-to.html' title='Can you do it? A simple web app, start to finish in one week'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>