Saturday, December 12, 2015

The Reason Why You Cannot Convince Anyone To Switch To FOSS

How many times have you talked about your favorite free software to a friend and they appeared totally convinced about how cool it is, but just won't stop using their proprietary tool?

Firefox is cool. But Chrome's market share keeps increasing.
XMPP and IRC are both cool. But they're both dying.
LibreOffice can do everything you need, but you still look for how to get Microsoft Office for the cheapest price.
Facebook is evil, but you have to post this photo there itself.

Why does this happen? Why is it so hard to make people start using perfectly good, free and open source software for their daily needs?

Why don't people understand?

To answer it, you should ask yourself why you use any of those FOSS things.

Why do you use Firefox? Because it's secure, protects your privacy, and puts you in control? No. You use Firefox because you know Mozilla's mission, and you are passionate about it. Or, because you know how to develop an add-on that changes the colour of the toolbar. Or, because you can do cool things with the in-built Developer tools.

You use Firefox because it's fun for you to use it.

Why do you use GNU/Linux? Because it's free software, secure, and puts you in control? No. You use GNU/Linux because you know the economic and social goodness of free software. Or, because you know how to do cool things from the terminal. Or, because you're one of those people who can actually code the kernel and make it behave the way you want.

You use GNU/Linux because it's fun for you to use it.

Why do you use encrypted/private channels for communication? Because it protects you from governments? No (unless you're Edward Snowden). You use encryption because the very idea of having a conversation that nobody can snoop into makes you curious. You use encryption to understand how the whole thing works. You use encryption to prove that it is possible.

You use FOSS because that's what you do!
You are probably a coder. You already enjoy building FOSS things.
You are probably political. Your philosophy makes you averse towards proprietary.

Think of anything that you use so naturally and you can't convince a friend to switch to.

Ask yourself why your friend should be using that software.

If the answer is any of "free software", "secure", "control", etc. your friend will never use it.

Get posts via email:

Thursday, November 5, 2015

[jog-journal] Running With A Smile

I went jogging in the evening today. My main goal today was to run slow with a smile on the face. To look at others and show my smile.

I remember reading a long article earlier today about what goes inside the mind of a runner.

I know what goes through. "Is my heart beating too fast? Am I going to fall unconscious and die? Should I stop now or run a bit more?"



Funny thing is, every day,
Just as I begin running from one corner of Kukralli,
I see people going in the other direction,
People whom I'd have never seen in my life before.

I run halfway round and reach the other side,
And then I see many of the same people.
Whom I'd never seen in my life before,
Except 10 minutes ago.

And this time, they'd not be the way they were last time.
Some would be sprinting full of sweat.
Some would be slowing down, panting.

And then I look at myself.
I'd have changed too.

But one thing remains.
We'd all be still on the track.



It so happened that I remembered one of the lessons from Chi-running I was practicing from school. I'd to look on the ground directly in front of me while running. It works and I ran longer than I usually would today.

But when I tried smiling at the end of it, my cheek muscles were burning!

Get posts via email:

Who is Killing Our Bloggers?

How do you discover content to read, on the Web?
Do you have a specific set of websites that you visit every day?
Do you have a single website that you visit every day and people there fill you in with links?
Do the pages that you read online mostly come from your friends?
Do they come from random strangers?
Or, is it a mix of friends and strangers?

If you like an author, what strategy do you follow to get updates from them?
Do you follow them on their Twitter/Facebook account?
Do you subscribe to their blog/website/column using a feed reader or an email subscription?

Web is the most powerful and the most useful when it is decentralized.
When people have their own websites, the Web is decentralized.
People who have their own website (self hosted blogs, maybe) have complete control over what they can do with it. They can express themselves in whatever manner they find appropriate. The presentation can be as unique as they can make it. Individuality, creativity, freedom, control - it's all theirs. They are limited only by their imagination (and technical constraints).

Nobody can censor you on your own website. (Except authoritarian Governments who seek to control citizens by limiting their freedom of expression).

But people can't keep visiting your website everyday. There must be some way for you to let your readers know when you publish a new post.

Email subscription offered by many websites and blogs is an easy way to send subscribers an update whenever you publish (or in a bunch). But email subscriptions go straight to the main inbox of most people and create clutter. This forces many people to unsubscribe them soon after they subscribe.

That's where web feeds come in. Web feeds, in ATOM or RSS standard, are small files served at a fixed location on your website. People can run feed aggregators (also called feed readers) to collect the feeds of various websites/blogs they like. These applications automatically checks the respective feeds for new content and if there's any they show up as unread. In fact, till Google Reader shut down web feeds were very popular (or is it vice versa?)

What happened to web feeds?
Well, the task that web feeds did was taken up by social media. Whereas with feeds you had to directly follow the content creator (or the publisher), with social media you just had to follow someone, anyone (mostly your friends) and if they followed a publisher (or their friend did, or a friend of their friend, and so on) and shared an article from the publisher, you would find it in your feed.

What changed?
With web feeds you'd have been restricted to listening to a set of publishers you already were connected to. But on social media, what your friends discovered for you were a wide variety of websites and publishers.

But there was another side for this too. With more and more friends pouring more and more content on to your single feed, social media like Facebook started employing algorithms to prioritize certain posts and show them higher up in your feed than others.

That was a disastrous moment. All of a sudden people running these websites became immensely powerful. They could promote or demote anything in the feed that millions of people rely on every day. If they wanted a website to suffer or an idea to be not heard, all they had to do was let their computers know.

Censorship. Arbitrary community standards. Seizing Control. 

Publishers now have to pay to reach their own readers. Even then their content could be taken off people's feeds any moment. And readers would never know, because they are not used to seeing all the content from a publisher. They are put in filter bubbles. Who wins?

A person is what they read.
And by letting someone else decide what we read, we're giving them immense power over us. When an entire society does that, it is inviting catastrophies.

For example, Facebook has such power and influence over people that recently in Kerala, a campaign against Facebook was running in (any guesses?) Facebook itself! And it doesn't end there. They were even paying Facebook to boost posts and get more visibility.

Imagine what can happen if Facebook decides to support a political party in the next general election? What if they're already doing this and you don't know? And the same Facebook is greedily trying to control more of what people can access or see.

If there's anyone killing our bloggers by denying them a chance to build a permanent readership and by promoting conformation, clickbait, and virality over quality and substance, it is social media, especially Facebook.

Still, all is not lost. Social media are but feed readers with social capability. It's not something we can't have parallels to.

Web feeds still exist. Blogging platforms too. I've already written about alternative communication platforms.

And we can start building our plan B right now.

Choose a feed aggregator for your operating system. I use Akregator. You might like Thunderbird (used as a feed reader), RSSOwl, Tiny Tiny RSS, or Liferea. There are many more feed readers (they're also called RSS readers because RSS is one of the most popular format for web feeds. Another format is ATOM. Most feed readers support either formats). Download and install it.

When you land on a blog/website you find interesting, look for the feed to subscribe to. If you have difficulty in finding the feed, you can use this nifty firefox feature that adds a "subscribe" button to your toolbar which will automatically detect feeds for you. (If you still have difficulty you can reach out to me and I'll help you). Start by looking for the feed of this blog.

At last, there's one more thing you should do. Create a blog. If you have at least something to say, you must start a blog and make sure what you say stays on the open Web forever. And don't forget to share your blog's URL with me so that I can follow your feed.

Together, we can save from dying the largest social network in the world - the open Web.

Get posts via email:

Sunday, October 25, 2015

[jog-journal] I Woke Up Early Today. You Won't Believe What Happened Next

My professor had last day told the story of his friend who finished MBBS, Post Graduation, and some specialty, got married, had a kid, and at the age of 30 something, when everything was "settled" got a myocardial infarction. Don't put health behind anything else, he said. And don't go running from the next day, he said too.

But, selective hearing at its best, when I woke up at 5.45 today, I had to do something useful. First I read one page of my textbook and just as I was about to go back to sleep, I got the idea to be running again. That's exactly 3 months past the last time.

Why do people have so much difficulty in doing what they are supposed to do? I had for a long time believed that people forget what they're supposed to do and get involved in random distracting things. But if that was indeed the case, to-do lists must have worked like magic. But to-do lists don't work. They just grow and grow and grow.

If it's not about remembering, maybe it's a problem with the way we recall what we're supposed to do. A to-do list is a bare short description of what we're supposed to do. It doesn't give us the entire context of what was going through in our mind when we jotted it down. It takes away the motivation.

Maybe that's why multi-tasking doesn't work too. We need to enter certain "modes" to do things. When we're supposed to be learning, we need to be motivated and comfortable to read. That is a different mind set when compared to when we're supposed to be writing something creative. It is probably difficult for the mind to switch from one mindset to another.

That's probably why meetings, community calls, hackathons, etc leads to far more productive output than people left on their own produce. When you invest half an hour or a day to get your mind into a particular situation, it is filled with the motivation, the back-story, and the context of what it is supposed to do. And then, doing what we are supposed to do becomes easier.

I have been learning d3.js since yesterday. It is a cool thing. 

The road to kukralli has changed a lot. There are now beautiful pavements on either side. And kukralli itself has been decorated with flower pots on the sides at entrances.

The pelicans are now floating on the lake. Maybe the pollution has come down a bit. And there was this kid running with loose shoes, not exactly lifting his legs while running, but dragging them. His shoes are probably gonna get worn out much sooner than he wants them to.

And there was this white labrador dog which was so scared to jump across the roadside drain. The owner had to walk parallel till there was a small bridge across. Stupid dogs.

Get posts via email:

Monday, October 5, 2015

Mozilla Kerala Community Meetup '15

I left for Kochi from Mysore on Oct 1 (the same day I received email from the participation team inviting me to participation leadership cohort and passed third year subjects). After about 8 hours of sleep I woke up at 4 in the bus to be involved in a very active discussion about misogyny/nitpicking in Mozillians telegram group.

After getting down from the bus I visited my brother and grandmother and had breakfast with them. Then, I reached Asset Summit Suites where everyone was getting ready.

Day 1

As usual, people reached late and the event started an hour late with introductions. Late comers had to dance. I was meeting everyone (except Anush and Kumaresan and Abin) for the first time. But Telegram and IRC and emails meant I knew most people and vice versa.

After tea we started talking about how decentralization of powers and privileges should be our agenda and how Mozilla Kerala should be a community based on SOPs. I threw in the idea that Mozilla Kerala should, whenever possible, work inside Mozilla (for example, wiki, discourse, etc) so that it's good for everyone.

Speaking of discourse, we chose to use the discourse.mozilla-community.org discourse's Kerala subcategory as the official discussion medium, IRC #kerala (with Telegram proxy bot and such stuff as required) for meetings, Gitter.im for development discussions, Mozilla Wiki/Kerala for documentation, Bugzilla.Mozillakerala.org for bugs, and so on.

After lunch we talked about what new initiatives to plan, what to focus on, etc.

Then, we developed [SOPs](https://wiki.mozilla.org/Kerala/SOPs) for all things conceivable. Or that's what we thought. There's so much of gaps in the SOPs and this will be a process that goes on for some time now.

After dinner, I learned some meteor from Akhil and slept.

Day 2

Woke up tired, had breakfast, and ran to the conference hall. Today was dedicated for all the tech-work.

There was unanimous agreement that the geeks had to stop working in the background of the homepage and upload a useful homepage. So the geeks went to code straightaway promising a basic page set up by 4 pm. (By 4, vakar did come out with a decent page full of stuff to engage with).

Then came the controversial (and boring for some) discussion on creating a complete portal on Mozilla Kerala. The idea is simple - have a portal where when a Kerala Mozillian joins, they can figure out everything that's going on - upcoming events, leaderboards of various Mozilla activities, and so on. But the problem is that the hours that might have to be spent on it wouldn't be trivial. An easy way out would be to use existing Mozillians API and do very simple manipulation and chaining of API calls to present leaderboards without much technical complexity. This has the added advantage that we'd be reusing Mozillians website and data rather than reinventing the whole wheel and protecting ourselves from NIH syndrome. It'd also go well with what I wrote down on a sticky on the wall "We should try to integrate with the larger Mozilla community whenever possible, rather than trying to break away"

While there were good arguments on both side, all that's now left to be seen is what gets coded in the coming few weeks (or months, who knows?)

Meanwhile, we also wrote down the impact and outcomes we need to have by the end of 2016 (taking a cue from participation team) and that helped put things in perspective.

After lunch there was a discussion about Maker Party Malabar, on the model of Maker Party Kochi. Actually, this discussion was going on even when I left for Mysore in the night. I suggested on adding a net neutrality station in this party. Should figure out a way to make that topic more in line with the maker spirit.

Abin had pointed out that good recognition of contribution is very important in retatining contributors. Binoy shared his experience working with womoz and how they have so many hurdles in even attending a Mozilla event.

Keeping with the unconference style of the whole meet, there was no official end of the meetup. We took enough photographs and left the place when the hotel asked us to clear the conference room for the next event happening there.

We then switched to rooms. Luckily we had 3 rooms next to each other and everyone was doing something in some room. Shine was working on the server. jsx booking tickets to China. I was sharing my ebook collection with psbots. Ruwaiz was learning stuff from Kumaresan. Another group was planning Maker Party Malabar and so on.

Walking by the side of Kochi Metro under construction I didn't even have time to reflect on the two days when I found a low floor AC bus which would take me to Ernakulam bus stand and the bus home.

Get posts via email:

Saturday, September 12, 2015

Did I Screw Up Mozilla India Blog's Security?

With great power comes great responsibility. The headline was clickbait. I probably haven't screwed up anything. I was granted temporary admin access to Mozilla India blog because I kept pestering the existing admins with bug-fix demands. This post is the story of how I went ahead to fix my first bug; opening myself to scrutiny, for the security of everyone.

working on daddy's computer by C Jill Reed, on Flickr
Creative Commons Creative Commons Attribution-Share Alike 2.0 Generic License   by  C Jill Reed


Immediately after Deb said he's giving me admin access what I did was reset my password on the blog's Wordpress account. I let wordpress generate a secure password for me instead of choosing any myself.

The next task was storing this password somewhere so that I don't have to reset it the next time I wanted to login. There were two options in front of me. The first one was to store it in firefox's own password manager. But, if I do so, to be absolutely sure nobody else accesses it if I leave my laptop unlocked, I've to set up a master password. Setting up master password will make it less convenient for me because it'll affect my normal browsing (requiring the password in every session for other websites, while I need it only for blog.mozillaindia.org which I'd be visiting only seldom).

Therefore I decided to save the password encrypted in my file system. Although ArchWiki lists many methods for disk encryption, I used a GPG based encryption. Using the vim-gnupg plugin I transparently saved the password to the filesystem, encrypting and decrypting on the fly.

Now that I could login safely, I proceeded to look at the bug I wanted fixed - to replace blank og:image. Jafar had included the diagnosis of the problem in the bug report itself. Jetpack linked to a blank image as og:image if it didn't find any suitable image on the page.

I ducked for solutions and landed on Jetpack's own blog with the code snippet that would solve the issue. I was confused for a while because the post just had a function definition and didn't tell me how to add it to the blog. Ducking again, I discovered that the common way for adding extra functions is to add it to functions.php file inside the theme. This was slightly counter-intuitive for me because I was under the impression that themes were all about the style/layout. But, as it turns out, themes have a very critical role in the functioning of a wordpress website. And as a welcome side effect, it's possible to edit the functions.php file from the theme editor directly from the admin dashboard, thus eliminating the need to ssh into the hosting provider.

Although now I knew what to do, I wasn't sure that I'd be able to get the code running in one try. And I didn't want a single minute of downtime on the blog. Therefore I decided to recreate the blog locally on my computer. I downloaded wordpress and set up mysql, apache, etc., installed the exact plugins and theme as Mozilla India blog such that I could test the changes I was about to make on my computer before working on the live blog.

On my local installation, I added the extra functions to functions.php with comments explaining why those were needed and it worked in the first attempt itself. I then created a few posts with and without images to make sure everything was working as expected. Once verified, I made the same modifications on the live website and marked the bug resolved fixed. Voilah! It was one small bug for a sysadmin, but one giant leap for me.



NB: We are always looking for more contributors in Mozilla. If you're interested in participating in interesting (web, or otherwise) projects and want to have lots of fun while learning cool stuff, ping me.

Get posts via email:

Sunday, August 30, 2015

My Response to Whatsapp's (?) Cease and Desist Notification Against Me

I'd received a letter in legalese from someone who claims to be WhatsApp's lawyer asking me to do certain ludicrous things. Here's my response.

Dear RAB,
This is in response to your email on 4th August titled "WhatsApps’s Cease and Desist and Demand Against Python-whatsapp-bot, pyWhatsapp, and QRtoWhatsapp". Let me make it clear to you at the outset that your email "threat" was completely inappropriate and wrong for various reasons which I shall elucidate in this mail. 

I understand that you have not even gone through my code and rather just did a search for "whatsapp" on my github repositories before sending me this stuff. I understand it because you tell me that "QRtoWhatsapp expose[d] WhatsApp users to anonymous messages that others may use to deliver solicitations or malicious software to WhatsApp users." A cursory knowledge of Android programming and the patience to first go through my code before accusing me of something should have let you known that QRtoWhatsapp was a program that scans a QR code and starts an Intent, which is the official way for inter-process communication on Android, thus allowing someone to easily share the message behind a QR code to WhatsApp.

Like QRtoWhatsapp, python-whatsapp-bot and pyWhatsapp both had whatsapp only in their names. They could as well have been called python-bots and most of the code in those programs were not even mine, but copies of others' code released in permissive licenses. They were of generic nature and could have been used to build a program which responds to commands. Of course I also gave links to instructions to connect it with Yowsup. But the following accussations in your email is totally wrong.
you will not attempt to reverse engineer, alter or modify any part of the Service;
I haven't attempted to reverse engineer, alter or modify any part of your service. I love free and open source software. And I love FOSS precisely because I can understand how it works without struggling through reverse engineering or whatever. If you gave me three months of holidays, I wouldn't spend a minute on trying to figure out how a proprietary software works.

The most I have tried to understand how WhatsApp works is by being a power user and testing all the features WhatsApp provides. When WhatsApp introduced blue check marks, or voice call, or groups of 50, or 100, I was probably among the first few users to notice or use those features. Because I used to care for WhatsApp.
you will not duplicate, transfer, give access to, copy or distribute any part of the Service in any medium without WhatsApp’s prior written authorization;
I haven't done any of these because I have only as much access to WhatsApp's "Service" as any other user. I have had no connection with anyone who develops WhatsApp and I do not have the magic power to obtain access to your "Service" through any other medium.
you agree not to collect or harvest any personally identifiable information, including phone numbers, from the Service;
You (and WhatsApp) are being ridiculous. WhatsApp's entire business is on connecting people through their phone numbers. I cannot communicate to someone on WhatsApp without first knowing their phone number. If I already know someone's phone number, why would I "harvest" it from WhatsApp?

Also, when I am added to a group on WhatsApp, it shows me phone numbers and nickname of everyone whom I don't already have in my contacts. What am I supposed to do with these phone numbers? If I save them to my phone's contacts using WhatsApp's own "add to contacts" option, am I harvesting their personal details?
you will not interfere with or disrupt the integrity or performance of the Service or the data contained on the Service; and
I have not. Since WhatsApp wouldn't allow multiple clients to connect with the same phone number, I couldn't even run my own bots on WhatsApp.
you will not attempt to gain unauthorized access to the Service or its related systems or networks.
I haven't attempted this because I don't care and I don't think I can gain access even if I try (because WhatsApp should have set up some really strong security in there).

You accuse me of:
using the names “Python-whatsapp-bot, pyWhatsapp, and QRtoWhatsapp” and “WhatsApp” which creates confusion about the origin of Python--whatsapp-bot, pyWhatsapp, and QRtoWhatsapp; 
But this is unfounded fear. People who use Github probably know the difference between free software and proprietary software. They know that WhatsApp has no love for free software and therefore wouldn't ever have any source code open to scrutiny. Therefore, this confusion you describe is imaginary.
using (and/or facilitating the use of) the WhatsApp registration system to generate credentials for and authenticate unauthorized clients and services in violation of the WhatsApp Terms of Service;
reverse engineering, altering, modifying, copying, using, or redistributing WhatsApp code, and/or circumventing certain technical measures put in place to protect WhatsApp’s Service, IP, and WhatsApp users; and
enabling users of unauthorized clients and services built using Python-whatsapp-bot, pyWhatsapp, and QRtoWhatsapp to circumvent technical measures to protect WhatsApp’s Service, access the Service without authorization, and violate WhatsApp’s Terms of Service.
These are all wrong accusations as explained earlier.
Python-whatsapp-bot, pyWhatsapp, and QRtoWhatsapp willfully exploits WhatsApp’s Service, undermines the goals of WhatsApp, and intrudes upon and undermines the service experience of the community of WhatsApp users.
This is where I have serious disagreement with you. If bots worked properly, they would only add to the experience of the community of WhatsApp users. This can be easily seen from how Telegram messenger introduced an official API to build bots. Maybe WhatsApp should stop thinking that it is the best messaging platform on Earth right now.

Your demands and my responses:
Cease all promotion and distribution of Python-whatsapp-bot, pyWhatsapp, and QRtoWhatsapp at all distribution points, including GitHub repositories (e.g. https://github.com/asdofindia/python-whatsapp-bot; https://github.com/asdofindia/pyWhatsapp; https://github.com/asdofindia/QRtoWhatsapp), websites (e.g. http://asdofindia.blogspot.com/), and social media accounts, and confirm you will not in the future develop, sell, offer for download, and/or distribute Python-whatsapp-bot, pyWhatsapp, and QRtoWhatsapp or like code and resources;
I have removed the repositories from github on the day you sent me the email because the very act of sending such a mail offended me. I used to think WhatsApp was a cool software but now I realize it isn't. I do not care about WhatsApp any more to be developing anything related to WhatsApp.
Confirm you will not in the future develop, sell or offer any unauthorized code, resources, services or products that interact, or enable other to interact, with WhatsApp services, products, or users;
Like I said, I f***ing don't care any more. You can be assured that I will not even talk good about WhatsApp any more, let alone interact with it.
Cease using the terms “Python-whatsapp-bot, pyWhatsapp, and QRtoWhatsapp,” “WhatsApp” and any other terms or logos confusingly similar to WhatsApp in connection with any code, resource, product or service you currently offer and may offer in the future;
I'll continue using the name WhatsApp when I mean WhatsApp. I shall make sure that nobody is confused which WhatsApp I mean when I refer to WhatsApp in sentences like "WhatsApp sucks".
Account for and disgorge all profits you have obtained from the development and distribution of Python-whatsapp-bot, pyWhatsapp, and QRtoWhatsapp;
I have not obtained any profit from the development of these programs. I have only incurred losses of time and energy.
Compensate WhatsApp for the damages it sustained from your distribution of Python-whatsapp-bot, pyWhatsapp, and QRtoWhatsapp;
Compensate WhatsApp for damages associated with Python-whatsapp-bot, pyWhatsapp, and QRtoWhatsapp’s infringement of WhatsApp’s IP; and
You should rather give me compensation for the insults and threats you hurled on me and for the effort I have wasted on making WhatsApp any usable.
Immediately take steps to preserve all documents, tangible things and electronically-stored information potentially relevant to the issues addressed in this letter, as those could be potentially relevant and discoverable materials in connection with any legal proceeding WhatsApp may choose to pursue against you or Python-whatsapp-bot, pyWhatsapp, and  QRtoWhatsapp.
Yes, that is why I'm writing this response as a post on my blog.
WhatsApp and its affiliates have taken technical steps to deactivate your WhatsApp, Facebook, and Instagram accounts, and hereby revoke your  limited licenses to access WhatsApp’s, Facebook’s, or Instagram’s websites and/or to use any of their services for any reason whatsoever. This means that you, your agents, employees, affiliates, or anyone acting on your behalf (“You” or “Your”) may not access the WhatsApp, Facebook, and Instagram services, websites, apps, networks, platforms, or otherwise (“Platforms”) for any reason whatsoever.
Please feel free to delete all my accounts on these platforms. Also I demand that you (or your client) do the following:
  • Delete all the data you have stored with or without my permission on the servers of Facebook/WhatsApp/Instagram.
  • Delete all the metadata you have collected from me with or without my permission.
  • Publish the details of all the data about me that you have handed over to any third party (NSA, advertisers, or anyone who is not Whatsapp/Facebook/Instagram). Take all steps possible to remove the data from those third party servers.
  • Delete all the groups I have created on WhatsApp/Facebook.
  • Remove the accounts of or give a warning to all users who have joined WhatsApp/Facebook/Instagram through an invitation sent by me.
  • Stop interfering in the Internet experience of millions of Internet users in India and other countries through programs like Internet org. (More about this later)
WhatsApp's log from their site. Probably a TradeMark violation by using it here.
Some friendly advice to WhatsApp and its new boss
WhatsApp was a cool thing when it was born. So was Facebook. That's why people like me started using those services. That's why we asked our friends to start using those services. That's why some of us continue using WhatsApp/Facebook even now.

But that doesn't mean these things will continue to be cool no matter what you do to it. In my opinion, WhatsApp is no longer cool. It does not support multiple devices, cloud sync, or sending files. It does not have a proper desktop/web client that works on its own. (Copy some good things from Telegram, maybe?).

To be a programmer is to automate things. Programmers have built automation on top of every popular communication medium (Jabber, IRC, diaspora, even facebook). WhatsApp cannot be an exception to this rule. Yet, unlike other instant messaging services, you continue to staunchly believe that automation shouldn't be possible on WhatsApp. That makes WhatsApp uncool too.

Services like WhatsApp relies on power users to gain traction. I am a power user myself. I am among those who start using your app before 1% of the world have heard of it. We are the people who bring traction to your apps. We are the people who dare into the unexplored and explore choices to their fullest. By sending hate mails to people like me, you're alienating the very people who made your service a success. I understand that you have gained the critical mass required to sustain without power users like me. But should you continue doing such hateful things, we will make people switch because we can.

So with Facebook. If you cannot continue to innovate, you'll fail. Just because you can change the algorithm at will to push posts from pages down, you shouldn't be asking pages to pay dollars to make themselves heard to their own hard earned fans. You shouldn't arbitrarily censor people. You shouldn't try to suppress social revolutions. You shouldn't interfere in people's social lives. The very fact that you continue doing these harmful things to the society means that you've become arrogant. You've forgotten your modest beginnings. And people will find out. They will switch away from you just like they switched away from others to you.

Maybe you understand. Maybe that's why you're now trying to restrict people's access to what services they can access on the Internet. Maybe that's the reason you push for misnomered schemes like Internet org which gives people easier access to your own services.

But I warn you and challenge you. You cannot continue being successful with strategies like this. You will fail. Walled gardens like yours will be replaced by open, vibrant spaces. Diversity will become the norm and monochromatic services like yours will become history. The Internet is not your property and it will not be. And we will protect that rich, diverse, free Internet.

Broad-chested,
Akshay

Get posts via email:

Friday, August 21, 2015

Don't put all your eggs in one Wikipedia

If you have ever tried creating a wikipedia article on a not so popular subject you know how it gets flagged for speedy deletion even before you make the second edit on the page.

For example, I recently tried creating a page for Swathanthra Malayalam Computing which anyone active in the free software sphere of Kerala would be knowing about. But, it was soon deleted. I have a fairly good understanding of how the WP:NOTE policy works and I was fairly convinced with my knowledge of reliable sources that SMC is notable enough to warrant an inclusion in Wikipedia. So, I started trying to convince the administrator who deleted the page (a non-Malayali, non-Indian) to restore the article. After at least 4 hours spent in writing essays to convince him, the article was partially restored to my User space. I was then asked to edit it, get it reviewed and then move it to the encyclopedia.

This ruthless deletion of content can be understood from one point of view - that of maintaining a high quality encyclopedia which gives people immediate access to a brief summary of a certain topic.

But that's where Wikipedia (or rather Jimmy Wales) becomes slightly hypocritical and arrogant. It's claimed (by who? by Jimmy Wales and many others) that Wikipedia is trying to give people free access to the sum of all human knowledge.

Is this realistic or true? Can Wikipedia be the sum of all human knowledge? Assuming Wikipedia gets enough donations to run millions of servers. Can it include the sum of *all* human knowledge? Or, more importantly will it?

Wikipedia quite clearly allows only encyclopedic knowledge to be included in itself. And there are quite a few guidelines on what content belongs to Wikipedia and what doesn't. This very fact shows that "encyclopedic" is only a subset of all human knowledge and has two corollaries:

  1. wikipedia is not the sum of all human knowledge
  2. the editors will constantly be under pressure to categorize any knowledge as encyclopedic and non-encyclopedic and omit some of the information

This is a handicap wikipedia has put on itself to make itself useful for someone who comes in for a superficial knowledge of a topic. Thus wikipedia easily becomes a ready reference to get an overview of things. But it becomes impossible to go deeper on anything.

And this compulsion to trim articles by removing some facts selectively paves way for problems like the hegemony of asshole consensus.

I believe the problem is that we try to put all our eggs in Wikipedia because we're mistakenly led to believe that only the content that exists in Wikipedia is the content that is worthy of knowing. (Because you see, Wikipedia is the sum of all human knowledge). This is both false and stupid.

Who decides notability on Wikipedia? The editors, based on notability guidelines. And who decides that? People like Jimmy Wales and editors who have significant majority or influence over the policy formation process of Wikipedia?

Currently notability is heavily relying on reliable sources. Who decides reliability? In a world where censorship and political correctness is not unknown, is there a way to be sure that reliable sources are telling you the whole truth and nothing but the truth?

Does these policies and guidelines take into account the perspectives of people who are under-represented on Wikipedia?

How different is Wikipedia from a multi-author blog? Does having a million editors automatically make Wikipedia infinitely better than a blog if what the editors can and cannot do is decided by a smaller set of people?

But, are you saying all codifiable knowledge should go on Wikipedia? Shouldn't there be some kind of curation or peer review of what is right and what's wrong?

What I am saying is that Wikipedia should stop claiming that it is the summum bonum of human knowledge. (This should also help them be less arrogant when trying to push Wikipedia as the only website that people need access to)

It is not, and it can never be.

The closest it can come to that is to become a great foundation for building a federated system in which people can easily get started codifying all the knowledge that they happen to have. In fact, by creating mediawiki software they've done a great deal towards that.

The next step they should embark on is federation. Federation instantly solves all the problems that I mentioned above. Because if one wikipedia doesn't like your content, there would be another wikipedia to accept it. Instead of spending all your time and effort in convincing a random white male admin that your article is worthy or notable, you can spend it on writing down all that you know about your subject on a wiki where it is welcome.

But remember that this is already how the Internet is. The Internet is decentralized and federated. "Knowledge" on the Internet is uploaded by whoever is interested. People have to spend some energy in figuring out what is correct and what's wrong. Instead of censoring anyone, the Internet allows everyone to speak. Peer review and content curation is implemented not by removing content, but by adding more content. If there's something wrong on the Internet, there'll be another article on the Internet explaining why it is wrong.

Wikipedia can help a lot if it tries to facilitate this process by encouraging federation. But instead if it tries to be a centralized authority, it is hampering access to knowledge.

In other words we must give Wikipedia only the importance that it deserves - just another multi-author website on the Internet. Wikipedia is not the sum of all human knowledge; the Internet could be.

Get posts via email:

Saturday, August 15, 2015

Secure Communication on Mobile Phones Using Only Libre Apps

I have previously written why I prefer Telegram over WhatsApp and that gap continues to widen since Telegram introduced an API for building bots and since WhatsApp sent me a legal notice for building a bot.

Meanwhile, one thing we should remember is that despite Telegram's promise that it'll eventually open source all code, its server side code isn't open yet and shows no sign of being open any time soon.

People like me often wonder if there can be a completely free working application for secure mobile messaging.

TextSecure is hailed upon as a solution to this issue by many. But, its developers have trust issues with f-droid and also want Google Play Services installed on the phone which's ridiculous in my opinion. People who'd want to use TextSecure instead of Telegram are the people who would want complete free software on their phones and TextSecure is virtually impossible to be installed on your CyanogenMod phones unless you flash Google apps which beats the entire purpose.

Another approach was brought out by Tox which worked almost like a torrents did, with a peer to peer messaging system. But this consumes large amounts of data on a mobile device and leaves one less than satisfied.

I often tend to like standards based approach in situations like these. And the only long time IM standard that I know of is XMPP. But, the way XMPP is defined right now there are a lot of things that make it unsuitable for the mobile environment.

  1. Nobody is developing a good XMPP based solution.

    There is an app called Conversations which is very very nice. But if you were to list down the steps to get started on it here's how it goes:
    • Buy the app on play store OR allow untrusted sources, download & install f-droid, then download & install Conversations
    • Find an XMPP server
    • Sign up for the XMPP server
    • Notify friends (probably through other means) about your XMPP id
    • Enable encryption manually and only when mutually agreed upon.

    This complicated approach can never get the critical mass of people on it.

  2. That bit about encryption deserves to be a point on its own. As of now, OTR is the most popular solution for encrypted chat on XMPP. But OTR works only if both sender and receiver are online at the same time. OpenPGP based encryption is unreliable. Encryption will probably be solved when axolotl support gains traction.
  3. Contact discovery is more important than we think it is.
  4. Push messaging?

That's where Kontalk comes in. Kontalk is built on top of XMPP and stays as close to standards as is possible. It is encrypted by default and designed to save on the server as little information as possible about the clients.

Kontalk supports push messaging which is a battery saver on mobile phones.

Also, the contact discovery on Kontalk is based on one's phone number (just like on Telegram). This makes it easier to find friends using Kontalk.

But Kontalk still doesn't have group chat support. It doesn't work on multiple devices simultaneously.




The way forward

An ideal mass messaging client should have the following features
  • Easy to use, even for the least technical people.
  • Encrypted.
  • Allow discovery of contacts with existing contact information.
  • Support multiple devices and sync chat history among them.
  • Support group messaging. 
  • Support push notifications.
  • Use as little data as possible.
  • Allow sending files. 
  • Federated. 
  • Follow standard protocols (or create them if none exists)
Both Conversations and Kontalk get some parts of the above feature set correct. But neither fulfills it completely.

Diaspora now has built in XMPP server thus allowing Conversations to connect with it. Once it supports tigase it can be made to also support Kontalk.

Ambitious diaspora pods like poddery.com and diasp.in are certainly dreaming of a social future where diaspora and XMPP are closely knit together to form a standard based, federated, secure, free, self-hostable, cohesive social network infrastructure.

Get posts via email:

Friday, July 31, 2015

Does Healthcare Need Technology or Policy or Passionate People or all of these?

At HackIndia 2015 in Bangalore which I'd attended during the last 7 hours of 18th July as part of the Mozilla team, I had met three young doctors roaming around from booth to booth. One of them, incidentally, is living in Mysore and I had a meetup with him (S) and his sister (V) at our favorite Kukralli yesterday.

We were brought together by the feeling that there are problems in health care and that there could be technological solutions to at least some of them.

Here's what's a very rough (rearranged, rephrased, corrected) transcript of some interesting parts of our long conversation around the lake.



A (me, final year): I was attending a world ORS day program today in my college. And that's when I thought that we should be having small apps/websites for smartphones, localized to local languages, to help people know about simple things like ORS.

S (intern, off duty): I was going through some health-tech startups. I think there should be applications that let patients know what to do in every situation - like in an emergency - they must know which hospital to go to, where the facilities are available to treat their kind of disease, and which doctor treats what. I saw this app which lets patients rate doctors according to how good they were during consultations.

V (OBG PG): I think rating doctors is a bad idea. It puts a lot of pressure on the doctors.

S: So you were talking about Mozilla Science Lab at HackIndia. What is Mozilla Science Lab? Is Mozilla turning into health?

A: Mozilla Science Lab is a Mozilla project that brings together researchers, librarians, publishers and developers so that they can publish their work online using the power of the Web and not fall prey to the money hungry publishers that exist today. In India, IITs and IISc are in various stages of such participation in the web.

S: There's this online portal where they publish their lectures - NPTEL.

A: Yeah, I've signed up for some 4 courses :D

S: You were also talking something about free software, open data in health care?

A: Yeah, let's begin with free software. I guess you're familiar with it, it's the concept that software should be free. There's this free software foundation which has supported the GNU project. They've defined the 4 essential freedoms for a software to be free. Those are:
  1. Freedom to use the software
  2. Freedom to modify the software (by modifying the source code)
  3. Freedom to redistribute the software
  4. Freedom to distribute the modifications of the software
These freedoms ensure that a software is actually useful for improving mankind. This is especially useful in government set-ups where the funding is already low, so we have to make maximum use of the money we have. And free software helps in that too. Also, when & if there are specific requirements for customization it is easier & cheaper with free software. And, these solutions can be used in other cities, states too without much cost in scaling.

Then there is open document formats. Health care can be expected to generate a lot of data in the near future. We should be worrying about what file format these data is saved in. We wouldn't want them to be saved in a proprietary format which might not be interoperable. That would make any kind of meta-analysis, or other collaborative use of such data difficult or impossible.

Then there's this government policy on open data. Instead of filing RTI for access to key data from various government departments, they're expected to proactively publish various data they collect into the public domain in accessible formats. This is a policy (that is not legally enforcable) and therefore is suffering from lack of attention from various departments. Yet there's this open data portal at data.gov.in which gives various kinds of useful data in formats that developers can directly tap to create apps or the like.

In fact, health departments should be very active in collecting and publishing such data because that can automatically lead to very good research. And our ways currently are leading to the destruction of data that is already collected - for example, as discovered through an RTI campaign by NS Prashanth and friends although our death certificates are detailed with income, caste, cause of death, etc, this data is not properly collected and aggregated and therefore many states and districts of India cannot say differential counts for the various causes of death in their area.

S: Hmm. On another note, I remember this teleradiology platform in which doctors can submit radiology images and then get opinion from a global network. And they are expanding that to other departments like pathology and medicine.

A: One of my friends was talking about this Canadian team called health-e-net which does something similar - a global network of doctors whom patients can get second opinions from without going far from their home.

S: Also at hackindia there was this 3D printing work by Fracktal Works. They were talking about developing cheap slit lamps for ophthalmology departments using 3D printing technology by reimagining the hardware design.

A: Yeah, medical equipments are so expensive that I think anyone who can become a medical equipment manufacturer can make so much money. I bought a peak flow meter for one of my studies. It costed ₹500 and it was just plastic, like a kid's toy. I guess they can make more money than even drug manufacturers because they don't even have to spend anything for R&D.

S: No, even drug manufacturing is cheap these days because of the various ways patent laws are. There's something called process patent as opposed to product patent. So, if a process is patented, new companies can modify a small step in that process and create a different process which is not patented. Thus they'll be able to manufacture drugs cheaply.

A: Ah, that reminds me of Gleevec and Novaris being turned down by the Supreme court upholding India's stance on how patents should be. Usually pharmaceutical companies, when the patent period on their chemical is over, makes a small change to their drug and gets a new patent. But Indian patent law prevents this. And when challenged in the court Supreme court considered the Indian situation of a lot of people needing drugs and granted in favor of the people. This is one of the things that enables generic drugs to flourish in India. And, Africa's HIV and other disease control relies in a large manner on India's generic drug industry.

And USA under lobbying from these Pharma companies are pressurizing India using international trade laws to prevent production of such generic drugs.

And Modi government is bringing in too many things. Like the DNA profiling bill with no bothering about issues surrounding it. Then making Aadhaar mandatory across everything even though Supreme Court had asked not to do so and even though there's no parliamentary sanction, the constitutional validity of which is now being fought over in Supreme Court. India is slowly being turned into a surveillance state.

S: But it's difficult to influence the government decisions, isn't it?

A: Yes, that's why we need to organzie. Organizations are powerful. For example, the savetheinternet campaign. When a few people came together, everything started falling in place and soon a large majority got convinced of the importance of net neutrality. Convince enough people and we can definitely influence government.

S: But convincing people is difficult when they don't have tangible benefits. With net neutrality they could directly see the problem. But that wouldn't be the case in other issues.

A: Yes, true. Like it is very difficult to make people understand that zero rating is the same thing as differential pricing. But that doesn't mean we should stop trying. After all, we ought to keep trying.

S: Coming back, we should have patient centric apps. Like Your D.O.S.T emotional support system. The current apps focus on doctors or hospitals, trying to make money. There are a lot of gaps in health care like doctors not getting enough time to speak to patient. There should be apps that help fill in this space with enough information for the patient.

V: Doctors don't have much time for patients at all. There is a lot of workload.

S: Yes, that's where these apps can help people. To fill up the gap.

A: Like medscape or mayoclinic? But probably with localized content?

S: The target group should be middle class mothers who may or may not be educated. Therefore it should be accessible. Yes, localized content, and even more pictorial content.

A: Like thai card!

V: These thai cards, many mothers don't even open it. There is excellent information about breastfeeding, immunization, etc in that. But they open it only when they are in the doctor's room for vaccination. There should be more of audio-visual information. In fact, there are a lot of videos created by many organizations. The challenge is in making the mothers watch these.

A: There should be apps that notifies mothers on mobile phones about immunization and all. Someone else can configure these for them.

V: There are such apps already. And big hospitals even have the facility of telephone reminders as special packs.

S: There could be call centres which give information out to patients. They can call these call centres through numbers like 112 and get help.

A: How would that be sustainable? Who'd pay these people?

V: You know, even doctors do not know many things. For example, when my friends became pregnant, they'd start googling for what to eat and so on.

A: In fact, the motto of my website is to improve learning, especially medicine. There are a lot of problems in medical education. We learn a lot but not in creative useful ways. I am still finding out ways to learn medicine. For example, I built a set of open questions in first chapter of ophthalmology textbook. These questions, just by going through them, makes the learner learn a lot of things.

And there should be more of open educational resources. The Web is still deficient in medical education resources. There are some videos put on youtube by universities, or professors. They are usually accompanied by copyright notices. This shouldn't be happening. We need remixable, open educational resources that are licensed in permissive ways.

And there sholud be creative ways of learning. It shouldn't just be text. We do have creative things like virtual body, etc coming. But these shouldn't be restricted to just demo apps. Medicine is so voluminous, there shouldn't be some interactive thing for every topic.

V: There's Dr Virkud. He records procedures, clinics, etc adds audio and uploads them on Youtube. But not all professors are cool like him.  For example, downloading slides from slideshare and using them for presentations is frowned upon by professors.

A: Exactly! I see surgeries from YouTube and that makes professors angry. But they can't be blamed for these. They should first be made aware of these alternate things - open learning, free software, etc. Once they realize how great they are, they can switch their mindset easily and this is probably a more solid strategy than students switching sides first.

V: Another thing, these techies research everything on the Internet, including diagnosis and treatment before coming to a doctor. But they're only like 5% of population. The rest and the vast majority of patients are looking for an emotional touch from hospitals. They care more about care than about technology or luxury.

Also, if I am not a good communicator, why should I be communicating with patients. Why should I repeat the same advice to every pregnant women? If I'm good at clinical things, I should be left to do that. Counseling, follow-up, treating, paper work, everything shouldn't be on doctors. Why can't we recruit more staff for giving patients advice, talking to them etc rather than spending on luxury? Medicine should be a team work.

S: But I think luxury is important. There are some people who can afford to pay for it. And this can bring in much needed money which can be used to cross-subsidize for poor patients.

V: Even if people can afford luxury, care is more important for most people. For example, there are RMPs in AP.  They have won patients' trust by being with them and giving emotional touch. And they bring the patients to the hospitals from where they get commissions. They are called kickbacks.

A: I guess these are all policy issues that need to be solved by bringing in policy changes. There probably are organizations working for health policy changes? I can remember save the doctor campaign (or the patient?). There should be more campaigns for all these issues.

S: The problem is that medical student corpus is largely apolitical. A lot of students aren't even aware of issues.

V: We had a small organization in AP. AP's medical education is a mess. Students don't even know how to take case. Our idea was to increase the feeling of social responsibility in students and make them more political. But in our meetings, they ended up asking questions about how to learn pathology, what to do after MBBS, etc. Even active members lost interest a while later because of peer pressure. How can we expect huge campaigns in such situations?

A: Hmm. Let's just keep in touch for now and motivate each other to keep going. We won't waste time in organizing.



And then we split ways. If you're interested in joining our small group, let me know.

Get posts via email:

Friday, July 24, 2015

[jog-journal] Natural Selection in Dogs and FOSS Contributors

The usual pack of stray dogs were serenely looking at the morning walkers in front of oval ground - not moving unless the wheel of an oncoming car is directed at the ground under their rib cages. One of them suddenly started jumping with joy as it saw an old man and ran towards him. "Did you think I have biscuit?", said the old man petting it.

Why do dogs love humans so much? Maybe during our evolution, we humans gave environmental pressure for the selection of loyal dogs only. Maybe cats evolved on their own and maybe that's why they don't care about humans.

I think contributors to FOSS also undergo such a selection, unknowingly.

People who end up being contributors to FOSS are the people who ask questions and answer them themselves.
Most FOSS projects are written as dogfeed to solve the author's specific problem. It is only an after-thought that makes it a public library. Therefore, things would be done in ways that are less than intuitive. Configuration would be a mess, and the only documentation would be the few comments that're dispersed in the source code.

With projects being so beginner unfriendly, how do newcomers start contributing to FOSS? Or, what kind of newcomers start contributing? Only those who are genuinely curious, who're willing to learn by themselves, and who are more comfortable finding answers online than asking people questions.

This could explain why sometimes FOSS contributors are the worst people to take help from to get started with contributing to FOSS. They themselves are curious truth seekers who do not like third party answers. They are not acquainted with the process of handholding. And therefore, they appear hostile to the poor newbie who is still learning to ask questions the smart way.

Today morning I made a presentation for two girls in a college in Kerala whom I met at hackindia to get started with FOSS. I have been trying this pedagogy which puts the emphasis on acquiring those skills which help in auto-didactism.

And I ran so hard that I felt my eyes would pop out.

Get posts via email:

Friday, June 19, 2015

[jog-journal] Streaks

Streaks are very important. For today, I'd not have gotten up had it not been for the streak. Yes, the 2 day streak is the most difficult.

And not just that. I didn't even think while running today. I was testing the efficiency of my method to achieve runner's high. And it is pretty much efficient, for me at least. I ran faster and longer, today. But being unable to think is a side effect of running faster.

And while talking about streaks, I'm on a three day streak in learning French using Duolingo, today. I started my streak again because of my friend, who's on a streak too and catching up with me.

Looking at duolingo, social pressure and streak pressure must be the two things that makes one learn continuously.

On the way back I saw them playing Tennis at the courts opposite cosmopolitan club. That's when I remembered my failed attempts to learn Tennis and play like Federer.

Talking about Federer, I had once read that forehand was his great weakness once upon a time. But gradually, he turned it into his greatest strength. What is my greatest weakness?

Get posts via email:

Thursday, June 18, 2015

[jog-journal] Is Runner's High Just an Energy?

Ever since finishing VJ James' Nireeswaran yesterday, I can't get rid of the idea that every thing in the universe is just energy. Our body is made up of molecules of various kind. But inside, they're just subatomic particles in different configurations. And protons and electrons and neutrons apparently have this wave-particle state. Everything is energy. So, the only question we have to ponder upon is "What is energy?"

The huge pipe laying work in Kukralli is still underway. But good people have kept the jogging trail untouched, as of now.

By the end of today's run, I realized that sprint interval training has indeed made one change in me. I can't run slow anymore. I can't jog. I have to run. If I try to slow down to someone's speed, I feel restrained, and soon, tired. Probably the stride length is longer now. Even chi-running has become impossible. I feel impatient at slow speeds.
 
And if you are unable to attain runner's high soon enough or at all, there's a simple trick to achieve pseudo-runner's high - just look at the trees, or the sky, or anything that doesn't move with you.

A day's run has been perfect if you feel a sense of peace and happiness flowing out from the middle of your chest.

On the way back I saw this Ola cab. Makes me wonder, how much would it cost to start driving one, and can it be a good part-time job? Imagine all those part time auto driving fuelled self-funded IIT education stories. The auto-rickshaws would be replaced by Ola and Uber cabs in the very near future.

Get posts via email:

Sunday, June 7, 2015

Beautifying GNOME with Paper theme (Material design)

Last night while I was searching for alternative window managers I discovered this wonderful GNOME Shell theme called "Paper". After installing it, I'm enjoying looking at my computer screen.

Here're some screenshots.

Applications Overview. Look at the menu menu on the top right.

Nautilus with folder icons

Tweak tool showing the wonderful checkboxes and the settings I had to change to achieve the theme
Turning Global Dark theme on was a welcome addition to the Paper theme. Read about setting up GNOME with paper theme on my website.

Another useful app I installed is Synapse launcher. Ctrl+Space and it gives me access to everything I need.

With these, somehow, I feel like my computer has gained a few milliseconds in speed.

Get posts via email:

Friday, June 5, 2015

[jog-journal] The mind game

If you sleep late, you wake up late.
If you sleep early, you still wake up late.
That's why they have invented alarms.

About one week since I last woke up early enough to go jogging. The body clock is so unreliable. Woke up to my phone's clock. Two snoozes only.

Today, my plan was to run the whole round. So I started slow. And quite unexpectedly I had to give up half way round. Therefore, the sprint-interval training I've been trying hasn't worked. Well, it wouldn't have worked, either. The intervals between sprints were too long. And the intervals between sprint-intervals were too long too :P

The idea of long distance running is not to let the heart rate or respiratory rate go above a threshold. Once you're past that you're in the sprint mode and you can't go far. But what I had was pure fatigue. The chest couldn't hold it. In fact, when I thought of finishing with a sprint in the home stretch, I had acute intercoastal myalgia, one of the differentials of heart attack had it come on the left side. But this one was, as always, on the right.

On the way to the lake there was an Indian Pariaah which showed cubitus varus. On the way back there was a lost pug looking for its owner.

Two people asked me the route to Maharaja's. There was police blocking the entry to DC's office. Something is happening in Maharaja's.

And I met two professors, one colleague today. It's fun how jogging parks are central to Mysore. Maybe if there was a park in Mattanur, more people would have been jogging.

I had less thoughts today. That's good. The ultimate aim of running is to have no thoughts.

I do not like people who run with earphones, because those keep falling out of my ears. But then I saw this man at the University gate, he had a cooling glass and a huge headphone around his head and it was probably giving him a 3D surround. I hope running with music is a great way to keep running, although I have never experienced it. Have you? Feel free to comment.

Get posts via email:

Monday, June 1, 2015

It's Based on Science, No Really

There are two kinds of people in the world - those who understand the meaning of the word "science" and those who don't. This post is about the latter set of people.

You know someone has no idea what they are talking about when you hear them say:

"Numerology is a science"
Even mathematics isn't strictly speaking a science.1 And numerology is based on what? Numbers. Where are these numbers coming from? Arbitary things like letters in your name, date of birth, etc. Do the numerologists even acknowledge that there are multiple calendars, multiple languages to write your name in, etc? How can numbers predict future?2

"Homeopathy is a science"
It is, if pure water is science. But seriously, the principles of homeopathy are in no way the reason why homeopathy even works for some people. It's the principle called "placebo" that makes Homeopathy tick. And the difference between correlation and causation is one that these people can't make.3

xkcd: Dilution


"Any kind of alternate medicine is science"
Read what I just wrote above.

"Astrology is a science"
Because planets exert gravitational influence on human babies? Yes, they do exert a force which can easily be calculated by Newton's laws, but if you follow through, the cars and buses outside the hospital in which your baby is born exert more gravitational force on your baby than the planets outside Earth.

"Ancient sages had vast amounts of knowledge, they knew most things that modern science is only coming to realize, and we have failed to explore even a fraction their knowledge OR Indians discovered zero and everything else in the universe that is discoverable"
No. Well, maybe Indians did discover zero before everyone did. You see I call it a discovery because nothingness is a concept that need not be invented. And I'm sure they did figure out the Bodhayana theorem too. But drawings of flying machines is not equivalent to flying. Stories about conception without sex is not equivalent to being able to do stem cell cloning or in vitro fertilization. Observing the binary-ness of a star system is not equivalent to a PhD in astrophysics. And no matter how smart your sages where I bet they wouldn't have used cellphones to talk to each other. Talking about cell phones,

"Cellphones causes cancer, kills babies, burns brain cells, and kills baby squirrels"
No. Simply no. Just because you can think up a plausible theorem it doesn't become true. Just because one kind of radiation kills people, all types do not. Just because your theory applies to something analogous, it needn't apply to this.4

"This world-renowned scientist/professor/doctor/faculty/student of this world-renowned university thinks this is science. So this is science."
No, in fact, it is the opposite that is true. This pseudoscience is being approved by those people, and therefore they're fake.

"You do not appreciate the science behind these because you are not open-minded. If you think more, you'll understand"
No, broad minded you! I have probably thought more than you did about your favorite pseudo-science. I have applied the methods of scientific rigor and realized that it doesn't hold. And that's why I vehemently oppose you calling it science. I am willing to put more energy into appreciating it, only if you have something new and logical to contribute.


It is so kind of you to believe in science and believe in only things that seem scientific. I urge you to grow a bit more and make sure things that seem scientific are scientific. Begin your journey at RationalWiki.



Footnotes:
1) Well mathematics is "the queen of all sciences", and it surely is very important in science. But it is too beautiful and abstract to be called science.
2) There's statistics and probability which can predict future with some probabilistic certainty. And of course a huge part of science is entirely based on probability and statistics. But then, you know how it goes.
3) Of course when it comes to correlation and causation there's a certain amount of trust we've to put on our ability to have avoided all the other confounding factors, but still.
4) Analogies themselves are useful only to gain clarity in thoughts, not to validate them. Building up from fundamental principles is the right way to validate ideas.

Get posts via email:

Saturday, May 30, 2015

Early Preview: telegram-pybot - A Telegram Bot based on Plugins, written in Python

We have all used and loved Yago's telegram-bot written in Lua as an extension for Vitaly Valtman's tg-cli for making funny Telegram bots. But Lua was keeping a lot of people away from making meaningful plugins.

Alternate approaches included adding a --json flag to vysheng's tg-cli and parsing that data or building wholly native APIs for Telegram in java or other languages. Liberbot is an excellent example.

Now, the developers at Datamachine Studios have come up with a Python interface for building bots. I have tested it and it works very well, even at this very early stage.

Screenshot of the bot listing its plugins on command
What?
Spartanly named "telegram-pybot" (for now, hopefully), what these people have created is a wrapper around vysheng's tg-cli. They did this by patching the cli with Python interfaces and contributing to the upstream (that's the beauty of free software).

Why not native Python API?
Apparently, the developers of telegram-pybot started out making plugins for the Lua bot. Later when they realized they wanted to switch to Python, it was easier to mimic the Lua binding API in Python rather than deal with the whole logic of Telegram (which keeps updating the schemas every now and then too). And many people are trying their hand in developing a pure Python API, should any of them become stable telegram-pybot is in a good space to switch to such a native interface with very little work in the future.

"It's kind of a pipe dream of mine to work on a python API, but one thing at a time right now" says Phillip Lopo who's one of the two main forces behind the bot.

Python vs Lua
In my experience, Lua can only be at best called a scripting language, albeit a powerful one, while Python is a power packed, complete programming language. The sheer number of libraries available in Python and the pythonic way of doing things makes development in Python much more easy compared to Lua. Also, threading is a huge weakness in Lua which has mostly been solved in telegram-pybot already.

Plugins
The sweetest feature of telegram-pybot is its plugin management system. It is promising even while currently undergoing heavy development. Plugins are organized by repositories. One can search, list, install, update, etc the plugins available in a repository. Soon multiple repositories will be supported so that anyone can maintain their own list of plugins in a repository and others can easily get hold of more plugins, thus also avoiding a single point of failure.

And the plugins themselves run quite smoothly, and cause no trouble even when they crash. Installing new plugins, restarting the bot, etc can be done over a Telegram chat thereby making them super easy to use (even for a non-developer)

License
Licensing bots, especially when they are powered by plugins is a confusing affair (read about the licensing of Yago's bot). GPL offers no protection to bots that run over the network and therefore if one has to choose a copyleft license, it must be AGPL.

But the developers of telegram-pybot want to give away as much freedom as possible. "I want people to use it, and I want the option for people to write private plugins for private communities" says Vincent Castellano, the co-developer. So there's a good chance they will settle for MIT or BSD license when they finish their primary work on the code.


With all that said, the bot is still in active development, as their readme says:
"While already very capable, this bot is still in relatively early development. Some plugin names, or plugin API calls may be modifed. However, we are starting to settle on our stable APIs."

But you should check it out already -- github.com/datamachine/telegram-pybot


When I discovered telegram-pybot last night, I was very excited. And I developed a plugin which we're enjoying in our FSM-K Telegram group. It is so easy to build that I want anyone with a computer to try, and therefore I've written a tutorial on my website.

Get posts via email:

Thursday, May 28, 2015

[jog-journal] The Idea

They say an idle mind is devil's workshop. A jogger's mind is god's workshop then.

I'm waking up at 4 am since I had a sweet dream yesterday.

Some goons appear outside a hostel. They beat the two securitiy guys up and ask them to go inside, take the mobile phone from every guy sleeping inside, and hand it over to them. The clever securities went inside and woke all the guys up. The guys started coming out one by one and soon the goons fled seeing the crowd.
When I woke up I had the realization that individually we are all powerless, but if we can wake people up to the reality, we can fend off any enemy.

That was yesterday. Today I had no dream to wake up with. This thread is going on about licensing of a Telegram based bot. If the license is AGPL, does it protect the bot as we want it to be protected? I've sent an email to FSF because the answer isn't clear from their FAQ either. Then I started making a teaching kit called "Internet elevator pitch for administrators" after wondering how I'd make my college Dean understand the importance of URLs. (My college's official website is mmcrimysore.org.in. If you're to visit it, you'll be redirected to the subdomain of the website of the web developer (I'm ashamed to call that guy by this title). And the guy says the official URL will be used once the website is completed. Poor administration should have believed that.)

It was 6 o'clock by then and fairly sunlit. And I was having a bit extra energy and so I went jogging to Kukralli kere. There are bulldozers around the entrance laying down huge pipes and I had to jog anti-clockwise today because the other entrance was blocked with soil. I remember reading somewhere that running anti-clockwise is good for the heart, but I wonder if that's true for large circles (or even small circles). Also, what happens to the previous tar on the road when it is being retarred?

Halfway through I noticed a woman running with a stooping posture. She didn't look tired and she was young enough to be not having senile stoop. Do women assume certain positions while jogging to avoid uncomfortable jiggling of their breasts? Can this be avoided by wearing appropriate sports bra? If yes, maybe a bra-salesman can make a fortune at the entrance of Kukralli kere. After all there is already a leafy vegetables/hurbs guy, a glucometer guy, and even water purifier guys there.

I was in the home stretch by then and I saw an Eagle being carried away by wind. Wind flows from water to land in the day, doesn't it? That's why there was wind I guess. And then a blue bird about the size of a small crane with 4 long fingers.

I should write all this down on my blog! After switching to my website for all serious stuff I have been wondering what I'd do with this blog. Maybe this is the right place to write all these random thoughts. Maybe I should name it "Jog Journals". Oh! That'd be fantastic. It'd keep me jogging every day because I've to write the journal and it'd keep me writing every day in turn.

Just as I was fancying that idea something happened. I had been jogging regularly in first year. We had a group who'd go jogging and we'd complete the Kukralli round in 20 minutes and be back. But we lost that habit during university examinations. After that the only real reason that made me go jogging was this girl, in my immediate junior batch, who likes running a lot and whom I like a lot because of that. I knew she came to Kukralli every morning but I'd never ran into her despite adjusting my timing frequently. Incidentally right at the end of the round I saw her and she said "hey" and I said "hi". Ha!

I have absolutely no doubt that there will be enough interesting things/thoughts every day to fill this series with. Yes, a series, that's the idea. Keep looking for the tag jog-journal.

Get posts via email:

Monday, May 11, 2015

Mozilla India Task Force Meetup - 2015

Either of Shreyas or Jafar must have invited me to the Task Force meetup, and I got to be a part of the Mozilla India Task Forces.

The 2015's task forces were formed in an event at Bangalore (Lemon Tree hotel, Ulsoor lake) over 7, 8, 9, 10 May, 2015.

On 7th and 8th, it was previous task force members discussing, evaluating, etc and planning.

I reached the venue on 8th night.

Day 1

In the morning, George Roter talked about the mission of Mozilla and the goals for 2015.

Afterwards, there was an activity to recall what Input -> Activities -> Output -> Outcome -> Impact was.

After lunch, the task force concept was introduced. And all the task forces were introduced, including the newly proposed ones.

Then we divided into groups based on the task force we were interested in joining.

I joined policy and advocacy task force which was a newly formed Task Force to cover policy issues and also raise awareness about those, privacy, security, etc. We discussed our skills, our roles, our interests and what help we need. Later we aligned these to the Mozilla's 2015 goals. More about the Task Force in the wiki.

In the night, I downloaded the mozilla-central code from the mercurial repository and built my own firefox (ASDfox)

Day 2

Day 2 was really intensive. We wrote down our short term goals and long term goals for each task force.

George did a workshop on Fennec, we made personas, discovered a lot of ideas and challenges.

Towards the end, we finalized the strucutre of the task force and presented the important goals to the group.

[These notes are super short because there is too much going on and I don't even have time to note them down before forgetting, let alone expand.]

Get posts via email:

Sunday, April 26, 2015

Everyone has an Angel and Devil in Them

Last week I had (what I thought was) the rare privilege to have a conversation with Jimmy Wales, the reluctant-to-admit-so co-founder of Wikipedia.

It was all a part of the #NetNeutrality campaign to save the Internet. I built a Firefox add-on called Zero Internet which would simulate what happens to a poor mother of three (who can't afford a data-pack) when she visits the "Internet" through Internet.org.

I submitted it to reddit, and for a few hours, it was the top post on r/india (which, to be honest, has been the rendezvous for sane Indian Internet users, and would have upvoted even if Deepika Padukone supported Net Neutrality).



Surprisingly, Jimmy Wales responded (with harsh criticism), both on twitter and on reddit, as if he was personally leading Internet.org. He said:

"This is deeply dishonest and makes me think you haven't even done the most basic homework as to how this works.

In all cases, people who are using Internet.org are on data plans (often daily plans or plans with quite restrictive data caps). One reason Facebook has been successful at getting ISPs to go along with this is that it is viewed as a win/win by the carriers - it gets people online and using data.

For the very poor, if they can't even afford a daily plan, then they don't look at the Internet at all. At least this way they have something. For those who are a bit less poor, the program offers them a way to save money on data - they can look at some sites for free (like Wikipedia) and use their precious data for other things.

Your plugin gives a completely false impression."
...which is quite contrary to what Mark Zuckerberg is making people believe (He says Internet.org is about bringing Internet access to those who do not have it yet) and also calling my add-on dishonest was dishonest. For poor people who can't afford data plans, going out of the sites allowed by Internet.org is impossible. And that's exactly what my add-on does.

So, on twitter, I went on a couple of rounds of arguments over the issue. And it turns out Jimmy Wales really, truly believes that Internet.org is the only way for poor people in India to access Internet.

Afterwards, Pirate Praveen helped me understand why I was feeling awkward.

"the problem is with your expectation. We want angels and devils so we don’t have to think. But everyone has both these aspects in them. Just because someone does a lot of good is not a reason to support them when they do something wrong. Attacking someone who is in opposing camp is easy. But standing up to someone in your own group needs immense courage and conviction. Every privilleged person thinks its their god given mission to help the poor and show their kindness. They do not want to acknowledge that their privillege is the result of historic oppression and they are part of the reason why they remain poor. They think poor people needs charity and kindness. What we really need is a conscious collective effort to end systematic oppression of people and that will need questioning of our own roles and privilleges. Accepting our role in creating the poor is much harder than feeling good about helping poor."
In fact, I now have a tagline for Wikipedia (which I would have never thought about till last week)
"Imagine a world in which every single person on the planet is given free access to *some* of all human knowledge. That's what we're doing."
NB: Jimmy Wales is an Objectivist. His life philosophy is based on that. And therefore any comment on where Objectivism gets it wrong is appreciated.

Get posts via email:




One more time, subscribe via email: