Saturday, September 26, 2009

print "Hello World";

It seems fitting that my first blog post include a story about my beginning. And what better beginning then Hello World...

Hello World
It seems like CS101 was just yesterday, back in 1996 I took my first programming course at CWU and learned how to print that famous intro to programming line to the screen, "Hello World". I had of course programmed before but this was my first official introduction to programming. I really wish there had been a high school or middle school class on this. How was I ever to get my 10,000 hours in if our education system started me as a freshman in College...

I managed to figure out how to program really well over the years but to this day I would not consider myself a top notch programmer. I am famous for programming the first version of www.whois.sc, which now redirects to the more famous domaintools.com site I made a few years after that.

My real gift in life was not programming but figuring out how to make great systems work. I took many ideas and concepts and over the course of a few years I made them come into reality. I dreamed of a system to search all whois records, I wanted the ability to pull a report on every domain I or anyone else owned. It took several years to build that dream system and there were plenty of problems along the way which needed to be solved in order to build Name Intelligence.

Core Problems
The first and most valuable problem was how to search on substrings... How do you find the word "cat" inside MyBlackCat.com, the easy answer is a substring search across the entire table.... however the word Cat has no index in the database. That is the way databases are made, you can only index words that have spaces or breaks around them. Substrings have no natural way of being found in databases. So I invented a new system of searching and a new form of database the world had never seen before.

I created multiple files with different length words, the longer the word the faster the search would be. So for MyBlackCat and three character words the file looked like this...

^my myb ybl bla lac ack kca cat at$

For four character word file looked like this:

^myb mybl ybla blac lack ackc ckca kcat cat$

After indexing these files with normal mainstream indexes the process was very easy. Next I used integer index arrays to compare all the hits. The result was a speed increase from a non-indexed search of over an hour to less then a fraction of a second. Now I had a search engine that could search all substrings on all domains. Each domain name had a special integer assigned to it and then binary flags were added to indicate special things. I wouldn't go into all the boring detail but this year long process of designing and building this system resulted in a system that was unlike any other website in the world. It gave my company a huge advantage and a lot of linkbait to attract SEO love. Once a person saw a whois record on our system I cached the display record for 24 hours (until midnight) and the next day we would fetch a new one. This allowed the system to remember all whois records over time. And this allowed us a few years later to create a system that would one day search billions of cached whois records. That was the dream I had envisioned when I started the company. I was able to come full circle and complete my dream.

Cashing out
Then a few years later, I got an offer on my company that was attractive, $48 Million in cash and stock. We were making over $5M a year at the time but there was a lot of overhead as well so the offer seamed fabulous. I loved doing what I was doing but felt diversifying might be a wise move. I was company rich but cash poor so I took the offer.

This Blog's Purpose
I am going to pick up after the cash out. I have many struggles ahead, such as building a new company or working on something I love. I might reflect back a few times but this blog is about my new adventures.