Wednesday, December 23, 2009

The worst kind of hypocrite

John Gruber posted a link to Google's blog about "The meaning of being open". With all due respect to friends working at Google, I would have to agree with Gruber. The blog entry is a steaming pile. Lots of factual errors to mislead the non-technical reader.

I'm just going to pick out a few paragraphs in the article cos it's just too lengthy.

Another way to look at the difference between open and closed systems is that open systems allow innovation at all levels — from the operating system to the application layer — not just at the top. This means that one company doesn't have to depend on another's benevolence to ship a product. If the GNU C compiler that I'm using has a bug, I can fix it since the compiler is open source. I don't have to file a bug report and hope for a timely response.

This is true only if software exists in a vacuum, which is extremely rare these days. Additionally, even if you have the full source code, Ken Thompson (the co-inventor of UNIX) proved 25 years ago that you cannot trust source code you did not write yourself.[1] Basically Dr Thompson showed that it's possible that a bug or trojan horse will not reveal itself even if a full code audit is performed. And it is also able to self-propagate so that successive copies of itself retains this... "interesting", behavior.

While we are committed to opening the code for our developer tools, not all Google products are open source. Our goal is to keep the Internet open, which promotes choice and competition and keeps users and developers from getting locked in. In many cases, most notably our search and ads products, opening up the code would not contribute to these goals and would actually hurt users. The search and advertising markets are already highly competitive with very low switching costs, so users and advertisers already have plenty of choice and are not locked in. Not to mention the fact that opening up these systems would allow people to "game" our algorithms to manipulate search and ads quality rankings, reducing our quality for everyone.

Many problems with this paragraph alone. Google's domination of the online adverstising industry is all but complete and is pretty much the only game in town, having also just acquired Admob. So the "switching costs" angle is a strawman argument. The "think of the children" angle is also a red herring, disingenuous and an insult to free software developers everywhere. Essentially, he claims that open source code is high quality code, except Google's own closed source search and ad products, where opening it will reduce its quality. But isn't that the point of "open source" in the first place?

Open will win. It will win on the Internet and will then cascade across many walks of life: The future of government is transparency. The future of commerce is information symmetry. The future of culture is freedom. The future of science and medicine is collaboration. The future of entertainment is participation. Each of these futures depends on an open Internet.

Except that Google doesn't practice what it preaches and censors web search results. Especially in China.[2][3]


Tuesday, December 01, 2009

Predictions for Apple 2010

1. Greater integration between desktop binaries and web apps. Customers can share documents, photos, music etc with automatic synchronization. Apple makes money from MobileMe subscription service (i.e. access fees) and from content creation i.e. you need iWork or iLife products to produce content, but it is free to view. Content creation is still on local hardware because that's what drives hardware sales but also because there is no need to complicate things with managing network connectivity/remote procedure calls.

2. With storage abstracted, as a paying subscriber you can access any of your content on your iPhone/iPod/Apple TV/desktop/laptop. This means you can have your entire iTunes library, video library etc streamed onto your Apple device.

3. TabletMac will be another device that runs on iPhone OS/CocoaTouch API framework. Exclusive content deals means Apple will either allow content providers to target ads to specific Apple customers, or get the MobileMe subscribers to underwrite an ad-free experience. Use App Store as reference revenue model.

4. New iPhone will check all relevant feature sets i.e. better performance, battery life etc.

5. Further tinkering under the hood with OpenCL and Bonjour networking, building upon what was available via Xgrid. Ability to donate spare CPU/GPU cycles from any Apple device so that all computationally-intensive tasks can be sped up just by bringing the device to within wireless network range.

Tuesday, September 29, 2009

App Store download stats

On June 17 to June 18 last year, Mozilla set a new world record for most number of downloads in a 24 hour period for Firefox.

According to stats supplied by Apple and as reported by AppleInsider:


Since it first opened 445 days ago, the App Store has seen an average of 4.5 million downloads per day. In the last 80 days alone, that total has accelerated to nearly 6.3 million each day.

For comparison, in its first 365 days, the store had an average 4.1 million downloads per day. From April to July 2009, that pace increased to 6.3 million each day.


If this growth rate continues, by the end of 4th quarter 2009 App Store downloads will exceed the world record set ON A DAILY BASIS.

Thursday, September 17, 2009

Safari on iPhone OS 3.1 SunSpider Javascript benchmark

My iMac is 39.4x faster at SunSpider. :P

RESULTS (means and 95% confidence intervals)
Total: 16213.8ms +/- 5.3%

3d: 2537.6ms +/- 11.8%
cube: 889.4ms +/- 15.1%
morph: 797.2ms +/- 4.1%
raytrace: 851.0ms +/- 15.8%

access: 2070.6ms +/- 15.2%
binary-trees: 268.2ms +/- 21.0%
fannkuch: 571.8ms +/- 19.6%
nbody: 1007.6ms +/- 16.9%
nsieve: 223.0ms +/- 41.1%

bitops: 1035.4ms +/- 3.3%
3bit-bits-in-byte: 176.0ms +/- 0.9%
bits-in-byte: 220.2ms +/- 0.9%
bitwise-and: 200.6ms +/- 1.0%
nsieve-bits: 438.6ms +/- 7.5%

controlflow: 142.4ms +/- 1.0%
recursive: 142.4ms +/- 1.0%

crypto: 965.8ms +/- 1.9%
aes: 289.6ms +/- 2.6%
md5: 340.6ms +/- 2.1%
sha1: 335.6ms +/- 1.9%

date: 1413.4ms +/- 15.4%
format-tofte: 501.6ms +/- 1.1%
format-xparb: 911.8ms +/- 24.0%

math: 2101.2ms +/- 2.3%
cordic: 682.0ms +/- 2.5%
partial-sums: 1015.2ms +/- 3.0%
spectral-norm: 404.0ms +/- 1.3%

regexp: 1722.8ms +/- 1.0%
dna: 1722.8ms +/- 1.0%

string: 4224.6ms +/- 2.8%
base64: 497.2ms +/- 1.0%
fasta: 672.0ms +/- 5.0%
tagcloud: 1016.0ms +/- 0.9%
unpack-code: 1161.6ms +/- 5.2%
validate-input: 877.8ms +/- 7.0%

Wednesday, September 02, 2009

Webkit r47948 with Snow Leopard SunSpider Benchmarks

Last year October WebKit was the undisputed leader when it came to running the SunSpider benchmark. How does it compare with the latest nightly build of WebKit under Snow Leopard?

RESULTS (means and 95% confidence intervals)
Total: 411.6ms +/- 1.8%

3d: 52.8ms +/- 2.6%
cube: 16.2ms +/- 3.4%
morph: 20.0ms +/- 4.4%
raytrace: 16.6ms +/- 4.1%

access: 40.2ms +/- 3.4%
binary-trees: 4.8ms +/- 11.6%
fannkuch: 16.0ms +/- 5.5%
nbody: 11.2ms +/- 5.0%
nsieve: 8.2ms +/- 6.8%

bitops: 22.0ms +/- 6.9%
3bit-bits-in-byte: 3.2ms +/- 17.4%
bits-in-byte: 7.0ms +/- 0.0%
bitwise-and: 4.8ms +/- 21.7%
nsieve-bits: 7.0ms +/- 0.0%

controlflow: 3.8ms +/- 14.6%
recursive: 3.8ms +/- 14.6%

crypto: 22.4ms +/- 6.3%
aes: 12.4ms +/- 5.5%
md5: 5.4ms +/- 12.6%
sha1: 4.6ms +/- 14.8%

date: 54.4ms +/- 3.5%
format-tofte: 26.4ms +/- 4.2%
format-xparb: 28.0ms +/- 3.1%

math: 37.4ms +/- 3.8%
cordic: 9.8ms +/- 5.7%
partial-sums: 19.4ms +/- 3.5%
spectral-norm: 8.2ms +/- 6.8%

regexp: 22.4ms +/- 5.0%
dna: 22.4ms +/- 5.0%

string: 156.2ms +/- 1.4%
base64: 16.0ms +/- 5.5%
fasta: 30.8ms +/- 1.8%
tagcloud: 34.4ms +/- 2.0%
unpack-code: 45.8ms +/- 2.3%
validate-input: 29.2ms +/- 3.6%

So, with all hardware remaining the same, the only changes are Snow Leopard and the WebKit build. I've gone from 745ms to 411.6ms. That's a speed bump of 1.8x. Not bad at all!

Thursday, August 13, 2009

Removing Duplicate Contacts in iPhone 3GS (iPhone OS 3.0 and later)

Duplicate contacts exist on the iPhone because it was told to sync with multiple sources of data. This is not a bug.

Most people only want a single repository of contacts so everything is nice, neat and orderly. In order to achieve this, the trend is to store everything in "the cloud" and make use of data synchronization services such as MobileMe, Google Sync etc. So the cloud database has to be the most current, up-to-date version of your contacts database.

Back up your iPhone and restore it to its original state. This will clear all information from it.

First, you might want to make sure that your Address Book (Outlook for Windows users, or whatever you chose to store your contacts) is the most updated version.

If you are a MobileMe user, first go to System Preferences>MobileMe (Control Panel>MobileMe for Windows users), choose the Sync tab, then ensure that contacts, calendars etc are selected.

Now connect your iPhone to iTunes, and choose the iPhone device within iTunes. Make sure that "Sync contacts" is NOT selected in iTunes. There will be a message to the effect that "MobileMe will now synchronize contacts over the air". This is what you want. Under the "Advanced" button, make sure that the option for "wiping the iPhone the next time it is synced" option is checked. Did I mention you will lose data on the iPhone if your MobileMe contacts database is not the latest?

When you're ready, hit the Sync button and everything will now be synced against your MobileMe database. Assuming that you have followed the steps correctly, you will no longer have any duplicate contacts, and any edits and updates performed on the iPhone, on your Mac/PC or even on a web browser with MobileMe contacts database, will all be in sync.

Thursday, July 16, 2009

Flaming Lamborghinis (not the drink)

Recent Top Gear episode was poking fun about Lambos catching fire, which I noticed as well. I don't think it's coincidence when cars from one make consistently catch fire and have their pics posted on the web, despite accusations of schadenfreude etc. It's like Qantas repeatedly having "incidents" which do not obey the Law of Averages i.e. statistical anomaly, hinting to a deeper problem.

Anyway was going through a Lambo forum and happened to read about an owner who saw smoke coming out from the engine bay area. Registration required so I copy-pasted the relevant post of the diagnosis:

My engine smoked once when my E Gear fluid burped a bit on my manifold.

This happend at a hill climb event and I had just parked and walked away and over the PA a voice said "would the owner of the yellow Lamborghini please return to the car as smoke is comming from the engine" When I got back about 50 people were standing next to it expecting to see a bonfire.

I have also had the oil on the manifold thing when trying to top the oil up. Stupid place for the filler on the new lp.Anyway hope your situation turns out OK and is not major.


Got word today from the dealer. Turns out YelloMurci that it is the same problem you had. For some unknown reason the Egear fluid decided to leak onto the manifold. They are going to clean it up and drain a little out, and hopefully that resolves the issue. They also stated that E-Gear fluid is flammable so its a good thing I was close to home and shut it off. I definitely will be keeping a fire extinguisher
in the car from now on just in case. Thanks everyone for your replies and comments

Now the question is: how is this not a class-action lawsuit waiting to happen, considering it is a fire risk?

Tuesday, June 23, 2009

iPhone and Features

Apple announces that 1 million iPhone 3GS have been sold in 3 days, easily beating "analyst" predictions. Considering the current economic climate, that is no mean feat.

Lots of pundits have weighed in on the iPhone, and as usual, the naysayers have been focusing on the lack of features in comparison with other smartphones. We've been down this road before. I've only been saying this for the trillionth time.

It's NOT the features. It's how Apple designs its products to get things done. It's the HOW, not the WHAT. That's its competitive advantage. You can have the fanciest shit on the planet but if no one knows how to get to it or is used only by Bob and his dog, said feature might as well not exist.

Here, have a look at these stats from Flickr, a Yahoo-owned photo sharing site.

According to Flickr:

These graphs show the number of Flickr members who have uploaded at least one photo or video with a particular camera on a given day over the last year.

The graphs are "normalized", which is a fancy way of saying that they automatically correct for the fact that more people join Flickr each day: the graph moving up or down indicates a change in the camera's popularity relative to all other cameras used by Flickr members.

The graphs are only accurate to the extent that we can automatically detect the camera used to take the photo or shoot the video (about 2/3rds of the time). That is not usually possible with cameraphones, therefore they are under-represented.

The iPhone line is clearly heading into orbit. Hell, the iPhone is even threatening to displace the "Canon EOS Digital Rebel XTi" in the "Most Popular Cameras in the Flickr Community" category! This is a proper DSLR with more features than any existing smartphone! Why is this happening? As a smartphone maker, can you pack more features than this DSLR in your next smartphone offering? Do you still think "features" are the most important criterion in judging the success of a product?

Thursday, May 07, 2009

Windows 7 "XP Compatibility Mode"

After the less-than-stellar adoption of Vista, Microsoft's plan to gain wider market acceptance for the forthcoming Windows 7 is to enable a "XP compatibility mode".

PC Magazine tested the beta and here's what they had to say:,2817,2346464,00.asp

What I find particularly so Microsoft-like is their insistence on doing things back-asswards. Here's the relevant quote:

>>To install XPM, you'll need the right combination of hardware and software. Your hardware must include a CPU and motherboard that supports Hardware Virtualization Technology, sometimes known as VT-d, AMD-V, or Vanderpool.<<

Most likely this is to do their hardware partners a favor. Virtualization technology has been around for a long time and there is simply no need for hardware support of virtualization. All the "features" that are mentioned were already found in Connectix Virtual PC, way before it was acquired by Microsoft.

So why would I need to buy new hardware to use Windows 7 for its crippled "XP compatibility mode" when a Linux box or Mac running Parallels/VMWare/Virtualbox (freeware) can run a full, actual working copy of XP? This is progress?

It gets worse.

>>Your operating system must be Windows 7 Professional, Windows 7 Enterprise, or Windows 7 Ultimate.<<

There is no sound technical reason for this arbitrary limitation.

>>With both downloads, make sure to download the 32-bit or 64-bit version, depending on whether you're running 32-bit or 64-bit Windows 7.<<

Again, no sound technical reason for this because VMWare for example already supports 32-bit and 64-bit guest operating systems regardless of what platform the host is on.

Why would a rational person buy Windows 7 for its crippled "XP compatibility mode" when you can go the opposite direction i.e. install Windows 7 as a guest operating system in XP under VMWare?

Wednesday, April 01, 2009


Finally got sick of all the internet ads and stupid animations and got round to installing privoxy. It makes the web usable again. AdBlock is good but it's FireFox only, and these days I use Safari or Chrome. Both AdBlock and Noscript do not have enough fine grain control over the web experience. Here's what Privoxy can do, from its README file:

In addition to the core features of ad blocking and cookie management,
Privoxy provides many supplemental features, that give the end-user
more control, more privacy and more freedom:

* Can keep outgoing connections alive and reuse them later on.

* Supports tagging which allows to change the behaviour based on client
and server headers.

* Can be run as an "intercepting" proxy, which obviates the need to
configure browsers individually.

* Sophisticated actions and filters for manipulating both server and
client headers.

* Can be chained with other proxies.

* Integrated browser based configuration and control utility at (shortcut: http://p.p/). Browser-based
tracing of rule and filter effects. Remote toggling.

* Web page filtering (text replacements, removes banners based on size,
invisible "web-bugs", JavaScript and HTML annoyances, pop-up windows,

* Modularized configuration that allows for standard settings and user
settings to reside in separate files, so that installing updated actions
files won't overwrite individual user settings.

* Support for Perl Compatible Regular Expressions in the configuration
files, and a more sophisticated and flexible configuration syntax.

* Improved cookie management features (e.g. session based cookies).

* GIF de-animation.

* Bypass many click-tracking scripts (avoids script redirection).

* Multi-threaded (POSIX and native threads).

* User-customizable HTML templates for most proxy-generated pages (e.g.
"blocked" page).

* Auto-detection and re-reading of config file changes.

* Improved signal handling, and a true daemon mode (Unix).

* Every feature now controllable on a per-site or per-location basis,
configuration more powerful and versatile over-all.

After installation it goes from this abomination:

To this:

No, this is not an April Fool's Day joke.

Note that the silly Shockwave animation that took up almost a full 1/4 of the page has been filtered, as were the Google text ads ("Honda Jazz Reviews" and the other one beside it). All it took was one regular expression rule match for each.

Note for Mac OS X users: Current stable release is v3.0.12, you can compile this without any difficulty. However do take note the "hide-forwarded-for-headers" action has been deprecated and changed to "change-x-forwarded-for", you must update all action and filter files or privoxy will not work.