Dear MTNL. Stop taking sips from my broadband coffee!

It’s a fine Sunday morning, and you go to a cafe with your friends, and order a nice cup of large cappuccino.

While you’re chatting with your friends, you notice out of the corner of your eye, the waiter bringing your cup of coffee. You feel relieved, and excited for your kick of caffeine. Just then, you see the waiter lift the cup to his lips and take a sip from your cup.

How do you feel?

Apart from the initial feelings of disgust, you calculate your losses. You’ve paid for a certain volume of coffee & foam, and the waiter is taking away part of it, without either paying for it himself or compensating you (since technically now you’re the owner of that cup of coffee). And all this without your permission!

Thejesh GN had written about how Airtel was injecting an iframe in the pages served on its 3G connection, though Airtel defended it saying that it’s to track our usage to help us better. How is monitoring which pages I go to going to help me better, and how the telecom company providing me the connection can’t track the amount of bandwidth I consume without injecting iframes into the source of pages I visit is beyond my understanding.

We could still say this is expected of a private company. They are, after all, after only one thing, profits. But if a PSU starts one-upping them, it’s worrying.

Not only has MTNL been injecting code into the source of pages we view on their broadband connection, they have been showing ads as well. Large ones. Sometimes larger ones.

Here’s a sample:
ads on MTNL broadband

It raises quite a few concerns in my mind, and here they are.

  1. Permission: MTNL is a service provider. And we pay them for the service. We expect a certain amount of data transfer at certain speeds, and nowhere while signing up were we informed or our permission sought that they will serve ads on the connection.
  2. Money: MTNL charges us the amount for the specific amount of bytes transferred per month, and if we exceed that limit, our connection is downgraded, which is equivalent to Shadowfax being chained to a snail. We as consumers keep monitoring our usage and reducing our superfluous consumption of bytes (stop reloading that often, watch lesser cat videos, download 720p versions of videos instead of 1080p and so on). And now we realise that a certain amount of our bandwidth will be consumed no matter what, because MTNL wants to run ads on the pages we see.
  3. As a producer of content/platforms: I run a business where we create web properties. Our clients are people who produce content or provide a service on these properties. In addition, I run this blog, and my firm has a website. It’s highly likely that when normal users (which includes me) using MTNL’s broadband connection accesses these properties, they would see these ugly ads on the pages. None of us agreed with MTNL to let them serve ads off our platforms and on our content. Some of us run ads on these properties which help us fund the operation of these properties. MTNL’s ads which ride on the connection are diluting the effect of the ads run by our paying sponsors, and are in effect robbing us of our ad revenues, in addition to spoiling the face of our properties and businesses. And there’s apparently nothing we as producers of content can do about it.
  4. Privacy: Of course the concern here is the same as in Airtel’s case. Today they’re injecting ads, tomorrow they could inject spyware (like some small-time private cable ISPs already do), or could inject ads in all corners of the page (like those same small-time private cable ISPs already do). And they have no business doing it.

On the money front, you might argue that it’s still a little bit of content trickling through and shouldn’t bother us. But I did some back-of-napkin calculations, and here are the approximate results.

Every page I visit consumes around 1 to 2mB of bandwidth. With modern browsers and content caching etc., every time a page is reloaded, the marginal consumption of bandwidth per repeat page would be in hundreds of kBs. On a page load, the amount of bandwidth MTNL’s ad consumes is around 30kB. Even if we calculate on the basis of absolute size of a page’s content instead of the marginal consumption, the noise-to-signal ratio here is 30kB/1.5mB = 2%

If I have a connection of 50gB FUP, this amounts to 1gB. I am being charged for a full HD movie download extra because MTNL wants to serve ads on their connection to us. And not even making a profit off it, because so far I’ve only seen ads of MTNL services in this fashion 🙂

How is this different from websites running ads?

Some might argue that YouTube also runs ads on the content they’re serving. कोई उनको कुछ नहीं कहता! Well, YouTube doesn’t charge me for viewing videos there. When a paid service provider runs ads blocking their own service, and consuming the service that I as a consumer am paying them for, it’s outrageous.

People my age might remember an ISP called Caltiger who started operating in the late 90s. When VSNL’s connections were expensive (Rs. 5,000 for 500 hours of browsing), Caltiger came up with an industry-changing idea – free internet. It was dial-up internet, which means that we still had to pay the per-minute rates for phone calls, but then again, even VSNL’s connection was dial-up, which meant that the total outflow from a subscriber’s pockets were around Rs. 35,000 per year including the phone bill, and not just Rs. 5,000 that we paid VSNL. But Caltiger used to run ads on our screens using its dialler software in exchange for the free internet. In effect we saved Rs. 5,000 in exchange for agreeing to have ads running on our screens. Ads served, but no money taken.

MTNL cannot do both: charge us for bandwidth, but still serve ads. And that too without our consent – both as consumers and as the real creators/providers of content.

The Tech

How do we get rid of this nuisance? Well, if you just see the source of their ads, you can see the following code that is responsible:

<div id="__BULLETIN__bdiv" style="position: absolute; z-index: 999999999; visibility: visible; top: 654px; right: 20px; display: block; transition: top 0s ease 0s;"><style> img.scalable { max-width : 100%; height: auto; }</style><a id="__BULLETIN__bdivButton" target="_blank" href="http://mtnlmumbai.in/index.php/fixed-line/landline/tariff"> <img id="__BULLETIN__bdivImage" style="height: 300px;" src="http://203.94.227.140/bg/Creative1.jpg" scrolling="no" frameborder="0"> </a> <div style="overflow:hidden; position:absolute; right:0; top:0; z-index:9999999999;"><a id="__BULLETIN__button0" href="#"><img id="__BULLETIN__button0i" name="button0" class="scalable" src="http://203.94.227.140/bg/CloseButton.png" border="0"></a>
</div></div>

Temporary solution: Blocking the IP address 203.94.227.140 in your etc/hosts file or in your router’s firewall would provide temporary relief, but since I blocked a similar address last a few weeks ago, they’ve updated the IP address in the request.

Permanent solution? What remained common was the 203.94. part. As far as I know, blocking wildcard IP entries or IP clusters using etc/hosts isn’t possible. Can any of you nice people guide me on how to block this IP cluster either using etc/hosts or the router settings?

Indian Institute of #NetNeutrality

A lot has been said about #netneutrality in the last few days, from how dear ol’ “altruistic” Zucky has a golden heart and wants to see poor kids in Chandauli access Facebook the Internet for free, and how Airtel just wants every poor child to access “the Internet”, to how the debate is full of metaphors like a fishermen’s net is full of fish in the evening.

So let me take a jump in the net neutrality discussion to talk about three issues that have been bugging me related to this:
1. Idea & IIN
2. The cable TV metaphor, and
3. The toll-free number metaphor.

Idea & IIN

We don’t see the connect between Idea’s IIN ads and net neutrality yet. It isn’t directly related, but it does lay down the groundwork for the idea (pun unintended) that somehow, the mobile operators/ISPs are the magnanimous fellows who are bringing all this wonderful Internet magic to you, and by association, can claim ownership to the content and innovation it brings along.

You’ve seen the IIN ads – where Idea’s Internet Network is the source of education for all the underprivileged, all who have been wronged by unfair selection practices in traditional educational institutions, and all who are mocked by their peers, but have the zeal to learn on their own.

Wow so cool. Except that Idea has nothing to do with it. Like I tweeted a few days ago, it’s like BEST laying claim for the education of your kid who goes to college by bus and becomes a lawyer. There, one more metaphor – take it and go.

Yes, Idea (or any mobile operator/ISP) isn’t providing anything beyond a connection to the Internet. They aren’t providing a platform. They surely aren’t creating the content that’s adding to our education when we decide to educate ourselves. The people in the ads could very well learn the exact same thing, find the exact same information if they were using a Vodafone connection, or were accessing the Internet through a local cable broadband connection.

If anything, Idea and other mobile operators are responsible for impeding said education due to their pathetic network quality and high data prices.

The Cable TV Metaphor

Mobile operator sympathizers have been citing the way cable MSOs operate as the model for internet access, which is, you choose which channels you want to watch and subscribe to those, in addition to a basic access charge, that you pay your MSO or local cable guy. Certain channel groups have tie-ups with certain large MSOs and not with others, so certain channels are available only on the former and not on the latter. Nobody complains there, so why the hue and cry this time?

To start with, that one industry is being run as a racket can not and should not be used to justify attempts to destroy another network and technology. But let’s keep that aside for a while.

TV and the Internet can not be compared. Here is why. In the case of TV, a cable/dish subscription is nothing but a bundle of channels, it’s a one-way medium, and we’re all purely consumers. Add to that, we do not do our daily communication and business over television waves. It’s a pure mass-media system.

The Internet, on the other hand, is not just another media. It’s not a bundle of websites, and not at all a bundle of websites the folks at Airtel / Reliance / Internet.org can decide it to be. It’s like the ocean, where these websites exist, and thrive purely on merit, either of technology, content, or marketing, not because they sign up with particular ISPs so that those ISPs agree to delivery their bytes to end-users. The Internet is not “just a technology”, the Internet is an entity of its own, and you do not get to call it the Internet if you do not let me access certain sites based on tieups your tieup sales team has made.

Secondly, the Internet has always been about choice. I choose to open Vimeo or YouTube at the time I please, and search for the video I want to see, and choose to watch the one I like. Compare this with TV, where the channel decides which content is appropriate for its audiences, and when it should be aired – the only choice we have is to either watch it or watch some other channel altogether.

I am not just a consumer on the Internet. I am also a content creator. Through our websites, blogs, social profiles, we disseminate content.
We are, at the same time, consumers and creators of content.

More importantly, I am not just a consumer on the Internet. I am also a content creator. Through our websites, blogs, social profiles, we disseminate content, of varying levels of intensity and seriousness. In addition to that, people like me make our living through the Internet. We are, at the same time, consumers and creators of content. And with this freedom to create and innovate, the number of web properties increases every day. Can the ISPs play god by deciding which ones of these you and I, or the kids in Chandauli get to see?

The Toll-Free Number Metaphor

We started hearing this when Airtel started feeling the heat of the public backlash. In fact, an email arrived in many mailboxes today from Airtel’s MD & CEO Mr. Gopal Vittal, where he insists that Airtel Zero is nothing but a 1800 service for websites.

Except that it’s not.

I can call a 1800 number from any SIM card or landline phone within the geographic boundaries, and not be charged. To access the “1800 website” I will have to sign up with Airtel Zero’s service on an Airtel SIM card. The metaphor does not go the whole hog Mr. Vittal.

Once again, the Internet is not comprised of a bundle of websites or phone numbers. It’s a place where different forms of media and platforms and properties are being created every hour, and that’s the beauty of it. “Websites” are one type of property on the web, though the dominant ones, but there are other types of properties, and more such will keep coming up as innovation goes on.

…the illusion of choice the mobile operators are talking about, is for the provider of the content, and not you and me, the consumer of the content.

Also, to access a 1800 number, all I do is dial the said number (the transaction with the network begins there), and be assured that the conversation is between the owner of the number and me (unless there’s tapping going on, in which case we have other serious issues to handle). In the case of Airtel Zero or Internet.org, the only way the ISPs can make sure I am not billed for going to their favourite sites is by snooping on my data packets (because my transaction with the ISP begins when I log on, or in the case of mobile internet, it’s an ongoing transaction). This is gross violation of my privacy, and it’s none of their business to be looking at the data I am sending and receiving.

In the end, the illusion of choice the mobile operators are talking about, is for the provider of the content, and not you and me, the consumer of the content. You and I don’t choose whether we get Flipkart for free or Amazon. It’s only the choice of Bansal or Bezos to sign up with these “zero plans” if they want more visitors to their sites. We don’t get any choice if there’s no net neutrality going forward.

If we let the mobile operators/ISPs decide which sites we can and cannot access, and do not insist on net neutrality today, maybe going forward you’ll be charged extra to read this blog, or simply access WordPress.com, or maybe you simply can’t access these, because they’re not part of the bundle that your ISP is offering you.

Do your bit today, visit www.savetheinternet.in, or www.netneutrality.in to know more about the issue and find out what actions you can take to prevent mobile operators and ISPs from taking the Internet hostage.

Disclaimer: I run a firm which makes web properties and runs its entire business on the web.
Disclaimer 2: I am trying to post this blog through the Airtel broadband connection I have at home, which after the miniscule 15GB FUP (which can be exhausted in a mere 5 OSX updates) runs at the awesomely slow speed of 512kbps. I’m frustrated with them over this, but net neutrality is way bigger than petty quibbles over data packs ending prematurely.

(Post’s featured image from FreePress on Flickr under Creative Commons licence)

WordCamp 2015 Mumbai

It’s official.

I’m speaking at the WordCamp 2015 in Mumbai. It’s being held on the 7th and 8th of March 2015, at Manik Sabhagriha Auditorium in Bandra.

The topic of my talk is WordPress as the backbone of a mobile app.

Do try to make it if you’re interested in WordPress, mobile app development, PHP, or programming. It’s one of the most high-power events for software professionals in India, and you can expect to hear and meet inspiring professionals working in the WordPress ecosystem and in software development for the two days of the event. And it’s right next to the Bandra Candy’s if you need more incentive to attend 🙂

See you there.


Update: Prasad is speaking there as well. Now you have two reasons to come attend it 🙂

My 6 Basic WordPress Plugins

wpplugins
I make a living working on WordPress. And this blog is on WordPress. And at the risk of sounding repetitive, I’ve been on WordPress for 4-5 years now. One of the most important things in the install workflow is selecting and installing the plugins you’d need. While the exact set of plugins varies from project to project, and depends on the intended functionality of the site, there are a few basic ones that I make sure to install on every site I deploy. The exhaustive list is too big, but here’s my top six, which you may find useful.

  1. Akismet: Automattic’s own plugin which saves me a lot of time & energy in filtering out the comment spam, done by SEO bots mainly.
  2. Google Analytics: Any GA plugin will do. But most loved by us is the one by Joost de Valk. Why do you need this? You do want to know the details of the traffic you get, don’t you? And then you can export that data, import it into your spreadsheet software, and soar into the dreamy world of pivot-tables.
  3. YARPP: Remember how you forgot to leave Amazon the last time you went there, because you kept clicking on the “the people who bought this also saw this” products? Well, why not use the same tactic for your blog? Increase the stickiness. Increase the meaningful interlinks. Increase SEO juice. There are plenty of related posts plugin, but I favour Yet Another Related Posts Plugin. Why? Is the name not enough?
  4. BWP Google XML Sitemaps: Sitemaps are important. Sitemaps let crawlers know where all your content is. It’s like the related posts for robots. Must for improved search rankings, and findability. Preferred plugin: BWP’s.
  5. Regenerate Thumbnails: How many times during development have you realised you need a new size of an image, and found that WordPress is either giving you too small or too big an image? And then after registering a new thumbnail size, how many times have you wondered if you need to delete and reupload the images already in the library, so that the thumbnails in the new size are created for these images? If you have come across such questions, you need to install this plugin, which regenerates thumbnails for all the images already in the library.
  6. Smushit: Have lots of images making your blog heavy to load? Install this plugin, so that every image you upload is passed through Yahoo!’s smush.it service and losslessly compressed.

Which plugins do you recommend as the bare necessities when installing a fresh WordPress setup? And do you have alternatives to the ones mentioned above?

Share them in the comments.

Cloud, Workflow & Backups

cloud_backup
My system hard disk failed today. BAD_CTX error. The 120GB Intel SSD now declares to everybody who listens that it’s 8MB now.

So my previous Mountain Lion installation has vanished into thin air. But my data is safe, of course because the drive that died did not contain this data – it was stored in a regular 5400rpm WD drive. But the reason I wasn’t overly worried about the data is that my data is backed up. Despite me being me.

We all know that we need backups. We need regular backups. And we need reliable, redundant backups.

If you’re anything like me, you keep forgetting your backup schedule, keep forgetting to connect the external hard disk to your machine at regular intervals (I once went close to 2 months without a Time Machine backup, and the current backlog is close to 4 weeks), and generally find yourself too busy for backup routines.

You can do backups with hard disks, pen drives, optical drives, FTP, and the cloud.

You can set up copy schedules, Time Machine, or set up scripts. Or simply use this technique I’ve been using for the last few months.

I maintain a Time Machine backup, which is automated, except for the fact that I need to plug in the big 2TB hard disk to the laptop and the power source. Which, as I said earlier, happens rarely. But there is a low-cost (free for most cases) method which gives me instant redundancy automatically:

  1. Sign up for a cloud storage service, like Dropbox, Copy, Ubuntu One, SkyDriveOneDrive, or Google Drive.
  2. Install the desktop client for the service, sign in, and create its base folder on your local drive.
  3. Copy or move your entire work folder to this new folder.
  4. Over the next few hours or days, depending on the size of the folder and your internet connection speed, your work will be replicated to your cloud account in the background while you deal with other more important things.

It’s a pretty simple process, but after this, whenever you update any of your files, it’s automatically updated on the cloud as well. Instant backups!

Whether you lose your computer, or your hard disk crashes, or the computer gets damaged or stops functioning, your data is safe up in the cloud. Oh, and the bonus: both Dropbox and Copy also maintain basic file versions.

And you can access it using the web interface of the respective service.

What do I recommend: you can take your pick between the more popular Dropbox and the whoa-I-started-with-15GB Copy.

The FizzBuzz Test

While reading Jeff Atwood’s blogpost entitled Why Can’t Programmers Program? I thought of testing whether I can pass the simple FizzBuzz test for programming he mentions. You can read the details of the test on his blogpost.

So I wrote a script in PHP, the language I am currently active in, to do what the test asks us to do.

But then, why stop at just solving the problem when you can optimize code for timepass?

I began with a 24 line-long (without counting empty lines) chunk of indented code, using a simple for loop and a bunch of if statements. But then I wanted to reduce the size of the code, so I decided to use the shorthand for if, and get rid of variable assignments that don’t “do” anything really. Now I am down to 5 lines of code, including the two lines of the for loop.

Turns out I am a programmer (though not formally educated as a programmer), and a good one at that – I passed the FizzBuzz Test!! 🙂 Do I get a job as a programmer now? 😛

Here is the output of the script (yes, the script ran when you loaded this page):

[php]
for ($j = 1; $j<=100; $j++) {
$fizz = ( $j % 3 == 0 ? 1 : 0 );
$buzz = ( $j % 5 == 0 ? 1 : 0 );
echo ($fizz + $buzz == 0 ? “$j
” : ($fizz == 1 ? “Fizz” : “”).($buzz == 1 ? “Buzz” : “”).”
“);
}
[/php]

Long Due Update

I’m sorry I’ve not been writing for quite some time now. But I hope you enjoy the pictures and the wallpapers 🙂

In the past few months, life has changed. A bit.

I’m working for myself now. And I’m happier doing it.

You’d have seen the post about the Big Wheels Motoring website design. Apart from that I’ve worked with a design agency in Pune run by very dear friends of mine, on a website for a NGO. And the most exciting thing right now is another project with the same agency, this time for another friend. You shall see the result in a couple of weeks.

And, I am hell-bent on getting another personal web project out this time. Wish me luck!

Have you dugg this before?

Poor Top Artists Strike Back at Greedy Music Labels! The story would have had over 300 diggs as I write this, had it not been for another genius digger ‘offon‘ who thought it would be a nice idea to re-digg an already dugg story – that is while the torrentfreak page shows a digg counter. This person took extra pains to make a new digg, fill up the form, go through captcha, and the “are you sure this story is original” routine (which they seem to have conveniently ignored – ofcourse who else would have come across a torrentfreak page before they did?)

But it’s really amazing! Two duplicate diggs of the same page appear on the digg frontpage at once. And even though I “strategically” digg every blog I write, I seem to have never made the homepage 😦 Life is so unfair!

And of course there are people who would love digging the same story after they have dugg it once.
See for yourself:
digg
digg2

Spread the cheer

Long time Flickr users, especially the “Explore” enthusiasts obviously know BigHugeLabs and their Scout service, which lists out any user’s “Explore” pictures, either those currently in the charts or those which have ever been in the charts, depending on the settings.

Those photographers who get a kick out of seeing their photographs on Flickr’s Explore frontpage keep visiting Scout to see how many of their snaps have been touched by the Magic Donkey, and whether the number has gone up since the last time they checked. It’s an addiction for some.

So I was sort of taken aback, pleasantly, when Scout tells me today that 405 of my 407 Flickr photographs are “totally awesome”. Turns out this is part of their Christmas cheer programme. A cute red Santa cap accompanies the message which tells me that. You can go back to your routine “normal” Scout. But there’s no way to get this back as far as I can see.

They brought a smile to my face no doubt, albeit with a cute li’l lie.

How are you spreading the joy in the holidays?

Merry Christmas!

Smart Web – How Smart?

While reading this Rediff.com story about Maruti Madhavrao Phad, a Maharashtra government employee who got injured during the recent terrorist attack on Bombay, I noticed something.

It is not related to the story as such. If you scroll down to the end of the story you’ll see the credits for is particular story. It reads “Image: Maruti [Get Quote] Madhavrao Phad at his home. Text: A Ganesh [Images] Nadar. Photograph: Uttam Ghosh


See the screenshot of the line. Notice the yellow areas? These are smart tags which apparently the engine parsing the code of the pages inserts to “enrich” the user’s browsing experience, by providing additional information related to the content the user is browsing through at the moment.

Note the word “related”? Now see what the yellow highlights in the image show. “Get Quote” for Maruti. Here Maruti is the first name of the hero of the story, not the name of a car-making company. Yet, the Rediff engine treats it as the company’s name, and is offering you stock quotes for it. And for Ganesh, the link is a Rediff search link with the string “Ganesh” – marked “Images”. Which means that it would return images of the Lord Ganesha, and other celebrities called “Ganesh”. Not images of the author of the article in this case, A Ganesh Nadar.

And both these tags are intrusive, they not only break the text they are placed in, they break proper names of people. Intrusive and irreverent. Considering the tone of the article, even more so.

Were they really necessary?