Rainbow Google and Annoying Google

I launched two more Google parodies: Rainbow Google and Annoying Google!

Rainbow Google is just a pretty demonstration of dynamic stylesheet modification. It was actually extremely hard to code — it took me about 8 hours of JavaScript hell. On another day, I’ll go over how I did it. This site adds a colorful spray of colors to the text on the page (see screenshot).


Annoying Google was about 10 minutes of work since it was just a super simple version of Rainbow Google’s code. :) Search queries and results are jumbled so that their letters are in random capitalized states… LiKe ThiS.


If you have suggestions or ideas, please let me know!

Make Your Blog iPhone Friendly with WPtouch

I installed a plugin today called WPtouch, which provides a custom layout for your blog’s iPhone visitors. I was pleased by how simple the plugin was to install and how gracefully it “just worked.” Normally, I don’t bump plugins, but this one was just too well executed to ignore. It even integrates with AdSense and supports YouTube embeds correctly!

If you have a blog, try it out.

What this site looks like on an iPhone.
What this site looks like on an iPhone.

Epic Google and Weenie Google

(EDIT: also check out this post for information on Annoying Google and Rainbow Google!)

Hello, I’m here to announce two new websites of mine: Epic Google and Weenie Google. They’re extraordinarily simple ideas. Feel free to mischievously make it the home page of your friends. :)

Unlike the last idea of mine (Google Loco), I made sure these pointed to domains that didn’t have “Google” in them. I did not enjoy the fact that Google blacklisted my Loco domain (A tip for the rest of your parody makers out there)!

Down But Not Out… Sun on the Other Hand…

For a brief period, the site was down. I was moving to a more permanent host. Special thanks to Brian for hosting my sites all these years. =)

Anyway, yes, I do keep this site in mind. And for any of you paying attention, I hope it’s not the end of the (open source database) world that Oracle bought Sun. I think it’s funny that Oracle just bought Sun for a price that puts MySQL’s value at 1/7th Sun’s value. Maybe instead of buying up MySQL, Sun should have been focusing on their own business strategy. And they did it during the hardest possible economic times. Moronic.

Oh well. As they say, “when the tide goes out, you can see who’s not wearing shorts,” right? I do feel bad for MySQL though. They dodged the Oracle Bullet only to get caught under the Oracle Steamroller.

Mozilla Prism – Bringing Web Apps to the Desktop

Mozilla Labs just released a new feature called Prism. The most interesting aspect of this announcement is that Mozilla is attempting to formally “upgrade” the web application development process from what it was since the web was born. While their new technology introduces no new significant features to web development, it strongly encourages web 2.0 style development by completely removing the navigation links and address bar.


Prism is an application that lets users split web applications out of their browser and run them directly on their desktop.

On the surface, it seems like a browser without a location bar. The main thing is that it allows web application the hooks that regular applications have such as being direct links in the application menu. But even that is replicated with modern operating systems by using shortcut links. It is superior to just visiting a regular website using a browser in a two ways:

  • If an application or Firefox crashes, it doesn’t crash the other instances. Each application runs as its own standalone instance with its own link in the task bar.
  • Customizations or extensions per application are now possible. For example, you might see an extension specifically for Facebook or YouTube that works in the application environment without cluttering up your Firefox install.


Mozilla has greater ambitions for this project, as it is indicated that this is the first in a series of “experiments” on web-desktop integration:

…we’re also working to increase the capabilities of those apps by adding functionality to the Web itself, such as providing support for offline data storage and access to 3D graphics hardware.

They state that they have no intentions of doing these things using proprietary technologies as proposed in Adobe’s AIR or Microsoft’s Silverlight.

In short, by keeping this a separate piece from Firefox, it frees them from cluttering up their browser. By keeping it separate, they can cater to the needs of desktop applications as eventually (in the long term), whole sites might be applications you would need to open with this tool before you could use the off-line features (Firefox just gets you to the site).

At least, that’s my take on this.

My iPhone Review as a Former Crack-Berry User

I recently got an iPhone. I now understand why it is rated so highly by its owners. It lives up to its hype, and blows away all other phones. I am not going to even talk about the iPod feature of the iPhone since it’s irrelevant to me.

82% satisfaction on the iPhone, 51% on Blackberries


I was very happy with my Blackberry until I got an iPhone. The iPhone has an amazing interface. Everything is so dead simple to understand. I thought the trackball on the Blackberry was slick, but the touch interface on the iPhone is about as intuitive as it gets. I can delete emails amazingly fast (swipe right, tap on delete button), and scrolling through long lists has never been faster or more accurate.

The single most confusing aspect of a phone is its interface during a phone call — something the iPhone has fixed in a way no other phone can. The Blackberry is just as guilty as all other phones: when someone else calls in and you want to hang up and switch to the other person, how that is done is not obvious (honest, I still don’t know how). This exact scenario happened on my very first phone call on the iPhone, and I figured out what to press within the two seconds when I looked at the screen to see what to do next. The interface is really thought out.


With the Blackberry in one hand and the iPhone in the other, I can see just how “cheaply” the Blackberry was built. While it has a nice metal-looking pair of side panels, the entire thing is actually made of plastic, and in a matter of months, it wore down quite a bit. While time will tell how the iPhone holds up, it doesn’t take a rocket scientist to see that the iPhone’s glass screen and aluminum casing will hold up to scratching much better than a plastic shell.


And the keyboard – the point of contention for most potential buyers – is amazing. The first time I tried the keyboard in the Apple store, it was only “okay” at best. It is hard to let go of the Crack-Berry once you are used to its mini-keyboard. But after using the iPhone for one day, I can type very fast on it, and with only one finger. Its auto-correct feature is very smart, and once you learn to trust it, typing is as fast as you can spell out letters.

The Camera

I hate how the iPhone’s camera is activated by a button the screen. Why can’t it use the sound adjustment buttons on the left side? QA must have missed this obvious annoyance.

Photo manipulation is as fun and easy as Steve Jobs made it look during his famous keynote.

Browsing the Web

This is hands down a victory for the iPhone. The browser is as good as they say, and it’s refreshing to be able to see full web sites on a mobile device again. On the Blackberry, the web feels like it got filtered through a coffee can and you are stuck in 1995.

I’ll go in and also mention Google Maps here: The zoom and pan functionality work amazingly well in a touch screen environment. If I hadn’t seen Google Maps before, I would think Google Maps was designed for the iPhone.

Battery Life

The battery life on the Blackberry is amazing, especially on the 8800 series. I know from experience. I haven’t had enough time with the iPhone to claim much in this department. From what I have seen, it can easily go an entire day of playing music, regular phone usage, and minor Internet browsing on one charge and still have more juice.

EDGE Network

EDGE sucks. My Blackberry was also using EDGE, so both phones blow in this regard. But at least the iPhone can leech wireless connections (the newest Blackberries do this too).


The key aspect that makes the iPhone great isn’t the iPod integration or the full-featured web browser: it’s the user-interface.

I can safely buy this for my dad and know he could use it. My Blackberry, in all its simple interface glory, still had many little quirks that made it hard to figure out (for example, on the 8700 hiding or moving icons took me weeks to discover, and in the 8800 putting the phone in silent mode isn’t a one button operation).

It’s a great phone for the casual user because of its media capabilities, but it can double as a productivity phone thanks to its email and browser capabilities. I’m the target demographic for an iPhone (currently have a smart phone, don’t carry an iPod due to bulk, can spare $400), and I can imagine there are a whole lot of others in my shoes who have yet to personally try an iPhone.

The iPhone is going to easily take 1% of the market. And that isn’t even considering what happens when they drop the price to $300 later next year (January capacity increase, September price drop).

The Mathematics of Evolution

I found a really neat comment on Slashdot about the mathematical justification of evolution:

First two minor points, then I’ll get to the real subject, the math of evolution.

theory is a theory my friend

Every field of science is a theory, my friend. Everything from the theory of the atom to the theory of zymosis (that's fermentation). You may as well try to attack relativity as being “just a theory”.

sort of like the un-provable assumption of evolution?????

What un-provable assumption of evolution? Evolution fundamentally says that if if you have heritable variation and mutations and selection pressures on that variation then you will get evolution over generations. This is trivially observable fact. There is no genuine scientific dispute over biological evolution exactly because there is so much evidence that cross checks and cross validates across so many fields, both current observations and study of prehistoric evidence left behind. Trying to even scratch the surface of this mountain of evidence in this post would be hopeless. If you are questioning the quantity and quality of the evidence, I suggest you either crack open a text book on the subject or at least browse the talkorigins [talkorigins.org] website. It’s all well documented if you actually question the issue. If you don’t truly question the issue and you instead simply reject the entire subject on non-rational grounds, well obviously you’re not going to be swayed by something silly like actual evidence and actual science.

Anyway, the real issue I wanted to address was this one:

the sheer numeric improbability of evolution

Correction, the sheer numeric CERTIANTY. There’s powerful mathematics to evolution, powerful effects going on that you don’t hear about in the common explanations of evolution. The common idea of evolution is as a sequence of individual beneficial mutations, like climbing a ladder. If that’s how evolution actually worked then critics would be right, it would have been mathematically impossible for evolution to produce the incredible complexity we see today.

To show the true mathematical power of evolution I will first abandon that “ladder climbing” of beneficial mutations. In fact lets assume that every single mutation that occurs is either neutral or harmful. I’ll demonstrate that we still get the real and powerful mechanism of evolution, the math of evolution.
A good place to start is with the common complaint of creationists that mutation and evolution “cannot create information”. Well in the initial mutation phase they are right. When a mutation occurs it introduces noise, it tends to degrade information. But look what happens the moment that mutation gets passed on to an offspring. That mutation is now no longer random noise, it now carries a small bit on information. It carries a little tag saying “this is a nonfatal mutation”. The presence of this mutation in the offspring is new and created information, the discovery and living record of a new nonfatal mutation. Over time the population builds up a LIBRARY of nonfatal mutations. This library is a vast accumulation of new information.

That information actually undergoes even more processing and synthesis. Over generations beneficial mutations would obviously multiply, but we’re assuming there are none of those here. However entirely neutral mutations will also tend to accumulate and multiply. Nearly harmless mutations would also accumulate and multiply to a lesser extent. Somewhat harmful mutations will even accumulate, and extremely harmful-but-nonfatal mutations will pop up and disappear at the rarest frequencies. So not only do we build up a library of nonfatal mutations, the mutations get tagged with a tagged with a frequency, the percentage of the population carrying that mutation. Each mutation is tagged with a measurement. Every mutation now carries a cost/benefit information tag at the population level. The best ones have a high percentage representation and the most harmful ones have a near zero representation percentage. Our library now contains far more valuable and sophisticated newly created information.

The individuals in the population are on average going to carry a roughly stable load of harmful mutations, a roughly constant “cost” in harmful mutations. Individuals loaded with more than the average cost are generally going to die and remove a more-than-average load of harm out of the population pushing the average up, and individuals with a less than average load will multiply and pull the population average upwards. The cleansing effect of selection removing “damage” from the gene pool will automatically scale to offset the exact rate that mutation is causing “damage”. Harm/cost/damage will be weeded out by selection at the same rate it is added by mutation. Neutral mutations will steadily accumulate in the library, and negative mutations will remain at a roughly fixed level constantly measured and scaled by the cost of each. Some mutations will disappear while new ones appear.

The real power in evolution is the recombination. Every offspring contains a random mixture of mutations from that library. every offspring is a test case searching for a jackpot beneficial combination of mutations. Lets assume an individual has a million random mutations across its entire code. There are 500,000,000,000 mutation-pairs being simultaneously tested within that individual in parallel. Perhaps one is a mutation creating a toxin and another mutation for mutant skin pores. Either mutation alone may be harmful, but the pairing could be breakthrough protecting against predators.

There are 160,000,000,000,000,000 mutation-triples. Each individual is also testing all of these triples in parallel. One mutation might be for a toxin, a second might might crank up production of that toxin to fatal levels (which would ordinarily a fatal evolutionary dead end), and the third might be a costly and ordinarily useless anti-toxin. The triplet is now a breakthrough, either a powerful defense against predators or a weapon for a predator to use, or even both at once.

Each individual is also testing 40,000,000,000,000,000,000,000,000 mutation quadruples in parallel for free. Maybe those four mutations individually yield useless proteins and enzymes, but the chain of four together may yield a new breakthrough digestive pathway.

Each individual also tests a near infinite number of mutation pentuplets and mutation sextuplets and more. Each individual actually acts as a test of a near infinity number of possibilities and it does this testing in parallel and it does so for free. This is called implicit parallelism. It astronomically multiplies the power of evolution to search for jackpot breakthroughs.

Another point that I raised and haven’t actually applied yet is the fact that each mutation is present with a frequency percentage in the population. The measurement of the cost/benefit of that mutation. When you want the most efficient search pattern you want to minimize wasted effort and minimize your costs and maximize your return-on-investment for your available resources. Well each offspring is an investment of resources, a test effort. When you are investing your effort looking for a payoff you want to expend most of your effort on the mutations that have paid off the best in the past and the least effort on the almost-fatal mutations. You mostly want to test combinations of good stuff with good stuff, and you almost never want to bother testing two nearly fatal mutations that will most likely combine to cause a dead offspring and a wasted investment. However you do still want to make a very rare test of two nearly fatal mutations because it *might* just be a jackpot payoff. In mathematics this exact investment-of-effort and search pattern had already been studied and a mathematical optimization pattern found. And guess what? By an almost staggering coincidence the evolutionary population frequency on each mutation in the population and in the offspring exactly matches and produces the mathematically optimal and most efficient search pattern for the next generation of offspring. You invest lots of effort and lots of offspring on testing the best mutations and groups of the best mutations and you invest exactly the right level of very rare testing of really bad combinations that will probably be fatal but which *might* just find a jackpot payoff. Mutations at all levels are tested proportionally to the measured cost it impose on the host.

So evolution has a nearly infinite multiplier on its search power and it just happens to invest its search effort in the mathematically optimal most efficient search allocation. Two fairly deep and powerful mathematical results that are hardly apparent in the usual way evolution is explained.

A further point is that once some beneficial mutation or combination of mutations is found, evolution then searches that vast library of stored nonfatal mutations. Most new breakthroughs will be extremely crude at whatever it is they do, and they will probably come with harmful side effects. A set of limbs might be mutated into some useful form for getting some new food source, yet be horribly mutated and otherwise dysfunctional. Evolution then searches the library for mutations that combine to further improve that new breakthrough, and it also searches the library for mutations that will repair or offset any harmful side effects of the breakthrough. A search for ways to further improve the mutated limbs for the new purpose, and a search for modifications to repair problems caused by these malformed limbs.

Evolution is very rarely a simple ladder-climb series of beneficial mutations. Evolution is an information processing system building vast database of information and synthesizing complex measurements of that information and doing an incredibly powerful search and mining of that information database to discover and refine improvements.

And this fits in perfectly with punctuated equilibrium. During the quiet phase the library is accumulating new mutation contributions and measuring those mutations into a percentage of the population, and then when there is a breakthrough discovered or there is an environment shift then evolution goes into overdrive. It mines the database for contributions to the new development or to adapt to the new environment. The frequencies of all of the mutations also get re-measured to re-weigh their cost/benefit ratio in light of the new development or in the new environment. Not only can this radically shift the frequency of vast portion of the genes and mutations in the population, it can quite easily trigger the discovery of other independent breakthroughs. If the population underwent heavy selection pressure, if most of the population was exterminated or displaced by this change, then the gene pool gets decimated. Much of that accumulated library gets wiped out along with the losing majority of the population. With a depleted library in the new population you are naturally going to see little change and progress. You see a stable population, equilibrium, until that library can be very slowly rebuilt through accumulation of new mutations.

Cool! Content Aware Image Resizing

I just saw a really interesting video showing off “content aware” image resizing.

The idea is that an image can’t be readily resized without distorting it or making it too small to make out. The author of the research suggests instead to use algorithms that detect and remove less “important” parts of the image. For example, background space between two people might get removed, pixel by pixel, as you shrink an image.

The idea has an amazing amount of potential for use in commercial applications, especially mobile devices.

See the video for more.