Hello everyone! I just wanted to share this new feature that I just added to Browserling. It's an URL scheme that lets you quickly access any website in any browser version.

Here's what the format for this URL scheme looks like:


Let's say you want to view Hacker News in Internet Explorer 9. You then just go to:


Or in Firefox 3.5 (really old one):


Or in Chrome 37:


Supported browsers are ie, chrome, firefox, safari, and opera. Here's a list of all supported browser versions:

I love this feature myself. It makes it so easy to share a browser.

Here's a typical scenario - you install software from source, spend an hour figuring out the configure options, and finally run:

./configure --prefix=/a/b/c --with-X --with-Y \
  --with-Z-dir=/usr/local/Z --enable-A --disable-B

A year passes by, a new software version has come out, and you want to upgrade. To do that you need to run configure again on the new source code. However you've forgotten what the configure flags were because it's been a year.

If you're lucky, you still have the old build somewhere in your home directory. Here's what you do. You go into the old build directory and run this:

./config.status --config

This will output the exact configure arguments that you used to configure the software. You just saved yourself an hour of work trying to remember all the arguments.

Check out this awesome trick that I just discovered. You can use console.table to format data in a nice table in Chrome. Open Chrome developer tools (press F12). Then create an array of hashes of data. The hash keys will be used as table columns, and the values will be used as table rows.

Here's a simple example. Let's simply enumerate the alphabet, convert it to upper case, and also convert it to hex. Copy this to developer console:

var data = [];
var alphabet = "abcdefghijklmnopqrsuvwxyz".split('');
alphabet.forEach(function (char) {
    lowerCase : char,
    upperCase : char.toUpperCase(),
    hex       : "0x" + char.charCodeAt(0).toString(16)


Here's the result:

This is the table that Chrome draws when you run console.table

Apparently console.table has been in Chrome since February 2013 but I only discovered it now. Next time I need a table, I'll just dump data in Chrome's developer console and create a screenshot.

In bash you can place redirections almost anywhere in the command. All these are equivalent:

$ > file command arg1 arg2 arg3
$ command > file arg1 arg2 arg3
$ command arg1 > file arg2 arg3
$ command arg1 arg2 > file arg3
$ command arg1 arg2 arg3 > file

Try it yourself:

$ > file echo hello
$ echo > file hello
$ echo hello > file

Pretty cool, huh?

Six Years of BloggingHey everyone! Another year has passed and it's been 7 years since I've been blogging here at catonmat.net! In this post I want to summarize this year's statistics.

See the one year of blogging, two years of blogging, three years of blogging, four years of blogging, five years of blogging, and six years of blogging for the previous years' statistics.

Let's start this year's stats with traffic:

Traffic statistics from Google Analytics for Jul 1, 2013 - Jun 30, 2014.

This year: 784,992 uniques. 983,890 visits. 1,376,933 page views.
Last year: 903,468 uniques. 1,191,596 visits. 1,695,544 page views.
Delta: -118,476 unqiues. -207,706 visits. -318,611 page views.

I haven't been blogging much at all and that explains the negative delta. I've about 200 articles in drafts so stay tuned for some quality articles soon!

Feedburner stats: At 16,500 rss subscribers this year. Last year 16,343. Delta 157. subscribe.

Feedburner is a dead service now, so the rss subscriber count has become a meaningless, random number that changes daily. It fluctuates around 16,500 subscribers.

Github stats: At 1700 followers this year. Last year 1400. Delta +300. follow me.

Twitter stats: At 4130 followers this year. Last year 3774. Delta +356. follow me.

Total articles written: 20. Top 10 articles:

My top 5 favorite articles:

That's all folks! Now let's have some 7 year birthday cake,

And let's meet for the cake next year again! See you!