I'm Jon Olick. I make shiny things. I simplify.

I presented Sparse Voxel Octrees at Siggraph 2008.

Thursday, December 31, 2009

A Message to Baby Toy Makers

Why is it that baby toy makers are compelled to take simple songs and nursery rhymes and add notes everywhere and make them overall much more complex. This is harder for babies. They need to start out with simple tunes and patterns and then when they are older build to more complex ones. I get the feeling like very few baby toys are actually designed to be educational for babies, and instead they are designed to be pacifiers, ala the horrible baby einstein (should be baby caveman cause thats what it will make your baby (and no, this is not a geico pun)). Another example is so called baby books where they pay more attention to rhyming words than the simplicity of the words they use. I mean common now... kids need common simple patterns, not complex ones that aren't used by their parents regularly that sound nice. Ok, so this makes finding good toys hard, but it also means that it is far easier for other people to gift bad toys to your kid than it is to gift good ones. The only reason that this works at all is that people trust the kid toy makers to make good toys, and the vast majority of them obviously have no idea what they are doing.

So anyway, the lesson to learn is buy simple toys for young children, then when they master those toys buy slightly more complex ones, and so on. Take the time to measure the simplicity of the toys that your child is playing with as any time you spend now teaching can have profound effects on your child's future. For example, if you set out walking north for 1 hour, but then later decided to change directions and you wanted to go 1 hour south instead, it would now take 2 hours to walk south (not including the 1 hour you spend walking north wasting your time), than if you originally just went south in the first place.

Monday, December 28, 2009

Designer Babies

First, some background information.

What are designer babies? Designer babies are what will come to pass in the next 10 to 20 years. That is to say, that we will be able to pick our child's eye color, hair color, or whether our hair glows in the dark or not, and most importantly rid our children of congenital diseases or disorders.

In the grand scheme of things, this is a convergence of the human race. As we will all trend to pick lots of the same fundamental traits. For example, everybody wants their children to be smarter, more beautiful, not prone to weight gain, depression, etc... These designer babies will make people very alike to one another.

Is this a good idea? Overall, I'd say yes. However, it does introduce certain frailties into the gene pool. One of the advantages of our sexual reproduction is that it introduces diversity into the system. Different ways of doing things, different ways of thinking about things, different immune systems etc. A lot of that will be lost with designer babies. Perhaps this won't matter, given that computers will do most of the thinking for us and that we won't be prone to any diseases at all. However, I do believe that a part of us, human beings, will be lost in this transformation. For all our short-comings and all our frailties, there is a underlying beauty of it all. But alas, it cannot be stopped. It is like the wind, fighting it would be a futile endeavor.

Sunday, December 27, 2009

Web Scalability

The problem of web-scalability is an interesting one. In general you need a web server to scale between 1 and 250,000 simultaneous connections. The 250,000 peak is to survive a digging or slashdotting or the like. Although the peak doesn't happen very often, you still have to prepare for it as it can be a very important time to be responsive. There really are two sides to the problem. On the one side, you need a solution to add hardware dynamically as needed and on the other side, you need a software solution which can actually take advantage of all that hardware. Luckily, cloud services like Amazon and Rackspace fit the hardware problem nicely. The problem left is the software problem. So first, lets describe the process every web request goes through.
1) The web-browser connects to the web server via TCP/IP.
2) The web-browser send a HTTP request looking something like "GET /\n\n" (in the simplest possible format).
3) The web-server gets the requested document, and sends it back to the client.

In any modern web app step 3 is performed differently if you are serving static or dynamic content. If the content is static, then the file can be cached in memory in the best case and served rather quickly. If the content is dynamic then the php, perl, python, whatever is run with the source file and the given parameters (index.php?foo=bar&bar=ack). The output is then piped back to the web-browser through the TCP connection. Done.

There are a couple problems with this. If we had a 1,000 processor machine this would be trivial, but alas, such a computer is the stuff of future for at least another 7 or 8 years. So a solution must be found with todays hardware, and so that is what we will do.

First, lets go into a little more depth on the previous list:
1) TCP/IP connection to port 80
2) HTTP request
3) CGI program startup (Python,Perl,PHP,ASP,etc)
4) CGI code parse
5) Database connect
6) Database requests
7) HTTP response

In 2010, a single computer can't handle a digging, so we must share the load.

Turns out that there already is a solution that parallelizes 3,4 and 5. Its called FastCGI (http://www.fastcgi.com/drupal/).

Parallelizing 6 takes a little thought. At first glance, you might think that FastCGI will parallelize that too, however upon closer inspection it is pretty easy to see that while you may have 10 different FastCGI servers, there is still only a single SQL database which serves them all... Ok, so you don't want to pay ridiculous amounts of money (or any money really) for a SQL solution which can handle this so you choose MySQL. MySQL however as far as I know doesn't have a parallelization through automatic database replication and synchronization of multple computers. However, that is pretty much exactly what you want to do. Luckily you can do this by hand in your CGI. First you need an identical initial DB setup, then any time you UPDATE or INSERT you do it to every server replication, but any SELECTs you only need to do from any one of the servers. Reads are fast, writes are slow. So you randomly select a server to do the SELECT requests from (or round robin, or whatever) in order to distribute the load. With the typical property that you will generally do 10x to 20x more DB reads than writes this will likely do a good job at paralellizing enough to be able to support a digging.

So what are we going to do about 1,2, and 7?
In order to give yourself the best chance of reaching 250,000 simultaneous requests, you need a good choice of web server. Apparently, Apache 2 sucks, Apache 1 is better, but Lighttpd beats them all. Ok, so once you chose a good server, the rest is quite simple, make duplicates of the server at different IPs then add multiple "A" records to your DNS entry. Each "A" record will get sent an equal amount of traffic. So you want 3 front end web-servers, then just have 3 "A" records. Each server will get sent 1/3 of the total traffic. Easy.

Wednesday, December 23, 2009


I'm not liking being a member of the IGDA, I get so much spam mail from them its driving me nuts. Don't they have something better to do than to bug me every day? I'm tempted to unsubscribe.

Monday, December 21, 2009

The Economic Explosion of 2015

Along with the culmination of many great things, the year 2015 is set to bring about a great economic depression possibly much worse than the last one. There are many possible triggers for this next collapse, some more likely than others:

1) Housing Bubble v2.0
Even worse than the last, but the reality is that none of our bad habits have changed which caused the last housing bubble, which means history is doomed to repeat itself. When will people learn?
2) Education Crisis
The cost of education has been rising well beyond inflation for many years. This will eventually cause a crisis.
3) Health-Care Crisis
Obama's worst fears have come true where decisions that were made only accelerated the crisis's timeline and other countries lost faith in the dollar and switch to gold as the standard for international currency. The surplus of US dollars being circulated as countries spend them to get out will cause massive inflation of the US currency.
4) Government Spending Crisis
The government has spent so much money and was unable to pull back the "stimulus" without causing a massive inflation. Other countries lost faith in the dollar and switch to gold as the standard for international currency. The surplus of US dollars being circulated as countries spend them to get out will cause even more massive inflation of the US currency.
5) Financing Crisis
The lack of taking any risks will cause many companies to go bankrupt as they seek funding, but nobody is lending. This will cause many companies which would have fueled economic growth in the coming years to be non-existent causing an economic downturn.

Lots of possibles there (as well as many more that I didn't mention). I think the most interesting is #2.

For the average Joe, the key thing to remember here is the date. 2015. Be sure to sell your stocks before then and then buy them back after the collapse hits bottom.

Thursday, December 10, 2009


There is a rumor floating around that the PS4 GPU will be a PowerVR chip. While this is possible, especially if intel buys nVidia, I have to ask if Imagination has the experience to do something like this? If this is true, this could either be the best play since the dreamcast or could completely back-fire and hurt Sony significantly. I'd give them a coin toss of a chance for that of success or failure. Is it something I'd bet the company (Sony) on? uhm, no. Its way too risky. So....

heres my take on what Sony may be planning. A PS2 like model with a dummy, lightning fast, high bandwidth rasterizer and maybe 128 SPU cores to feed it. Sony may think it is a good idea to get back to basics with the PS4. Is this a good idea?

I think that this goes against the grain here. Each console generation, games have been getting easier and easier to make over time, not harder and harder. ... This can be dangerous ..., I hope they know what they are doing.

On the plus side, PowerVR does solve Ahmdal's Law better than ATI or nVidia. If it can scale well to a dual GTX 295 level of performance, then perhaps things are all well and good. Thats a pretty big if though. I'd still say that they would be treading dangerous waters even if that does work out.

Tuesday, December 8, 2009

Intel Cancels Larrabee

This means that Intel will likely buy nVidia, because it has to in order to stay competitive with AMD.

More interesting is that the primary two graphics vendors would then be soaked up into processor companies. Will they force future consoles to use AMD and Intel processors along with their AMD and Intel graphics cards? Profit driven decision making says yes.

What really matters?

In the future... (in some cases far future, where I define far as beyond my lifetime, but perhaps not beyond my kids or my kids kids)
1) All Software will be open source
2) All Hardware will be open source
3) All Design will be open source
4) All Education will be open source
5) All Entertainment will be open source
6) All Food will be open source
7) All Pharmaceuticals will be open source
8) All Small Manual Labor will be automated (by hardware that you can print out)
9) All Communications (the internet) will be effectively free
10) Nearly All Data will be free
11) Nearly all of your time will be spent on improving or making any of the above as you see fit.

The current rat race that we all know and love is exactly that, a rat race.

So, What will be valuable in the future then?
1) Raw material resources (because it will be cheaper for a very long time to harvest than to create)
2) Power (energy can create materials, gather data, transport, and many many other valuable things)
3) Insurance (you will still need protection from outside meteor strike like events)
4) Community (bound together and acting as a single unit, they can enhance many of the other valuables)
5) Data (real measurements that are difficult to come by will hold value)
6) Transportation (because it requires 1,2,3,and 5, specifically long range transportation)
7) Manual Labor (manual labor on grand scales will continue to be valuable as they can require all other valuables to achieve)

Valuable items can be transferred into other valuable items, just like today. However what is valuable will change significantly.