Planet dgplug

March 14, 2018

Sanyam Khurana

International Women's Day with WoMoz in Delhi

We all know that every year, 8th March is celebrated as International Women's Day. It is a focal point in the movement for women's rights. On this occasion, all the Open Source communities in and around Delhi came forward to hold a mega-meetup to encourage more women to take active part in Open Source & Tech on March 10, 2018.

We were astonished to see the huge turn around of 180 people including 150+ women participants.

Group photo of all attendees

Mozilla Delhi, PyDelhi, PyLadies Delhi, LinuxChix India, Women Who Code Delhi, Women Who Go Delhi, Women Techmakers Delhi, and Women in Machine Learning and Data Science were the communities helped up in shaping the event.

Here are some of the volunteers who helped to make the event possible

Group photo of volunteers

We had 3 main technical talks which were all presented by Women having a decade of experience working in the technical field. Apart from that, we had several other lightening talks and community talks.

Group photo of volunteers

Kanika gave a lightening talk on "WoMoz" & encouraged students to contribute to Mozilla.

Group photo of volunteers

Later, I got a chance to give a lightening talk on "Why you should contribute to Open Source", to help & encourage folks to contribute to Open Source projects.

Group photo of volunteers

I want to thank everyone who helped with the event & Adobe for sponsoring the venue. Don't forget to join the Open Source groups in & around Delhi that you're interested in. As always, if you need any help on contributing, drop me a mail at Sanyam [at] SanyamKhurana [dot] com.

You can check out more photos of the event from here

by Sanyam Khurana at March 14, 2018 09:21 PM

Jason Braganza (Doppelgänger)

Book Notes – The Subtle Art of Not Giving a F*ck


Started: 2018-03-11
Finished: 2018-03-13

Imagine the school bum, mending his ways, becoming a success and then sharing his stories and experience.

Well, that’s what this book is.
A pithy summary for a pithy book. Punchy, wise and brief.
Mark Manson is the Dale Carnegie for millenials.

There are f*cks strewn galore, so if you’re not comfortable with such language, stay away.[1]

Here’s a few things, I took away from the book

  • Learn to be comfortable with pain and failure and suffering and hardship
  • True joy comes from experience, from tackling pain and hardship, from living
  • Live a life of intention. Know what your enough is. Choose your struggle. Care deeply only about these few things
  • Learn to be self aware. Meditation helps.
  • Have good values
  • There are no ready made, cookie cutter solutions to your problems or to finding your path. You have to make your own way. And that is a good thing
  • Don’t be dogmatic. Be comfortable changing your mind as you learn and experience more
  • Learn to be ok with rejection. Also, learn to say No.
  • Be disciplined, focussed, and committed to the things you care about
  • Memento Mori.[2]
    So make the most of the life you have left. Learn to live, so that you leave with joy, not regret.
Quotes I loved

“You will never be happy if you continue to search for what happiness consists of.
You will never live if you are looking for the meaning of life.”
— Albert Camus

“I used to think the human brain was the most wonderful organ in my body.
Then I realized who was telling me this.”
— Emo Philips

“One day, in retrospect, the years of struggle will strike you as the most beautiful.”
— Sigmund Freud

“The fear of death follows from the fear of life.
A man who lives fully is prepared to die at any time.”
— Mark Twain

On Commitment

I’m quoting this passage wholesale, because this was the thing that resonated with me the most; the fact that Deep Work matters.
Discipline, dedication and commitment to the few things that do matter in your life is what will make your life enriching.

… more is not always better. In fact, the opposite is true.
We are actually often happier with less. When we’re overloaded with opportunities and options, we suffer from the paradox of choice. Basically, the more options we’re given, the less satisfied we become with whatever we choose, because we’re aware of all the other options we’re potentially forfeiting.
So if you have a choice between two places to live and pick one, you’ll likely feel confident and comfortable that you made the right choice. You’ll be satisfied with your decision.
But if you have a choice among twenty-eight places to live and pick one, the paradox of choice says that you’ll likely spend years agonizing, doubting, and second-guessing yourself, wondering if you really made the “right” choice, and if you’re truly maximizing your own happiness. And this anxiety, this desire for certainty and perfection and success, will make you unhappy.

So what do we do? Well, if you’re like I used to be, you avoid choosing anything at all. You aim to keep your options open as long as possible. You avoid commitment.

But while investing deeply in one person, one place, one job, one activity might deny us the breadth of experience we’d like, pursuing a breadth of experience denies us the opportunity to experience the rewards of depth of experience. There are some experiences that you can have only when you’ve lived in the same place for five years, when you’ve been with the same person for over a decade, when you’ve been working on the same skill or craft for half your lifetime. Now that I’m in my thirties, I can finally recognize that commitment, in its own way, offers a wealth of opportunity and experiences that would otherwise never be available to me, no matter where I went or what I did.

When you’re pursuing a wide breadth of experience, there are diminishing returns to each new adventure, each new person or thing. When you’ve never left your home country, the first country you visit inspires a massive perspective shift, because you have such a narrow experience base to draw on. But when you’ve been to twenty countries, the twenty-first adds little. And when you’ve been to fifty, the fifty-first adds even less.
The same goes for material possessions, money, hobbies, jobs, friends, and romantic/sexual partners—all the lame superficial values people choose for themselves.
The older you get, the more experienced you get, the less significantly each new experience affects you. The first time I drank at a party was exciting. The hundredth time was fun. The five hundredth time felt like a normal weekend. And the thousandth time felt boring and unimportant.

The big story for me personally over the past few years has been my ability to open myself up to commitment. I’ve chosen to reject all but the very best people and experiences and values in my life. I shut down all my business projects and decided to focus on writing full-time. Since then, my website has become more popular than I’d ever imagined possible. I’ve committed to one woman for the long haul and, to my surprise, have found this more rewarding than any of the flings, trysts, and one-night stands I had in the past. I’ve committed to a single geographic location and doubled down on the handful of my significant, genuine, healthy friendships.

And what I’ve discovered is something entirely counterintuitive: that there is a freedom and liberation in commitment. I’ve found increased opportunity and upside in rejecting alternatives and distractions in favor of what I’ve chosen to let truly matter to me.
Commitment gives you freedom because you’re no longer distracted by the unimportant and frivolous.
Commitment gives you freedom because it hones your attention and focus, directing them toward what is most efficient at making you healthy and happy.
Commitment makes decision-making easier and removes any fear of missing out; knowing that what you already have is good enough, why would you ever stress about chasing more, more, more again?
Commitment allows you to focus intently on a few highly important goals and achieve a greater degree of success than you otherwise would.

In this way, the rejection of alternatives liberates us—rejection of what does not align with our most important values, with our chosen metrics, rejection of the constant pursuit of breadth without depth.
Yes, breadth of experience is likely necessary and desirable when you’re young—after all, you have to go out there and discover what seems worth investing yourself in. But depth is where the gold is buried. And you have to stay committed to something and go deep to dig it up. That’s true in relationships, in a career, in building a great lifestyle—in everything.

  1. It’s mostly for shock value, sprinkled liberally through the first third of the book. It peters out to almost nothing, as Mark gets into the meat and potatoes ↩︎

  2. Remember, you will die! The Daily Stoic explains it far better than I ever could ↩︎

by Mario Jason Braganza at March 14, 2018 06:30 PM

Anwesha Das

Setting up my own server

A long, long time ago a mortgage lawyer started to write her blog, just to get familiar with several crazy newfangled things called computers and the internet by using them to do something she liked, writing. So she started writing a blog using something called Wordpress.
The aim of the blog, was to explain legal terms, and theories in simple intelligible language. The blog was called lawexplainedindia.

Time flew; and with life’s funny, yet inevitable twists and turns, the lawyer landed into the world of computers; the world of Free & open source software and technology. So, the blog changed its face and got a new home at It portrays what I think, and read, but not solely law now.

All these years, however I never took the responsibility of maintaining the website. Kushal, being the wonderful partner he is, used to do this painful job for me. He use to maintain it using a self hosted Ghost blog (Version 0.11.x).

I recently decided to take back the burden from Kushal. It would give me the opportunity of learning something new, becoming more familiar with the world of Free Software. I am now using a Digital Ocean droplet where the base operating system is CentOS 7. Setting that up was the easy part. Securing it and getting the blog to work, took some doing though. Here’s what I did …

Setup the firewall:

The first job was to setup the firewall rules to provide safety from the untrusted external network. I religiously followed Mohamed Raiyen’s post on hardening server security. That gave the droplet at least a semblance of safety.

Using official Ghost docker image

I wanted to use the latest Ghost as a platform to publish my blog.
There are two ways of doing that :

  • Ghost can maintain it for you, for a monthly or yearly subscription.
  • You can self host and maintain it yourself.

I opted for the second, by using the official docker container image.
The new ghost version provides an updated theme (Casper v2), but I liked my older version better. I copied my old theme (edited as required), all the images, and content into a directory /data.

The security context of the directory needed to be changed to access it inside the container by the following command

chcon -R -t svirt_sandbox_file_t /data

At PyCon US 2017, I had requested John Hawley to explain containers to me in a very naive non-technical way, one that a 10 year old would get.
Here’s how he put it …

“Imagine lots of little piggies in a sty. You have several naughty ones, which you do not want to get out of their own space and go into others.

Now the same theory applies to containers.
Here each sty is a container, where you are stopping your troublesome piglets (applications/programs) getting into others spaces.”

After this uh, interesting introduction, as I started to read more about containers, I came across an interesting comment by Dan Walsh that “Containers do not contain”, with a subsequent caution that if you want to use containers, one should use them following proper security measures.

This was the first time for me to use containers.
I played around with docker for few days before I used it here.

I am mounting the /data directory (from my machine) into /var/lib/ghost/content (in the container), as that is the content directory for ghost.

Now we can store the data even after the container stops running. I use the command below to start the docker container

docker run -d --name xyz -p -v /data:/var/lib/ghost/content ghost:1.21.4

nginx as reverse proxy

I am using the nginx as the reverse proxy to the container. I also copy pasted the TLS certificates from Let’s Encrypt into the correct directory.
I will be writing about how to get a ssl certificate from lets encrypt in a subsequent blog post.

This particular project taught me to do several things at the same time, (all completely new to me) and gave me the real life production feeling :)
I learned each of these elements (docker, nginx, setting up a firewall, getting SSL certificates,) separately, and then combined them together as per the needs of the project — my shiny new blog. Though it took me a lot of time, frustration and a realization that the machine called computer is truly unpredictable (even more so than my unpredictable 3 year old). But at the end of all, when I witnessed my blog running at, it was amazing.

by Anwesha Das at March 14, 2018 10:58 AM

March 11, 2018

Mario Jason Braganza

Creating a bootable Linux USB installer disk from an ISO on the Mac


I got myself a new pc to learn Linux and do all my crazy experimenting on.

What’d I use as my primary OS? Why CentOS, ofcourse.
Two reasons …

  • These are long term, slow stable releases, just the way I like my software to be.
  • My last exposure to Linux was Red Hat Linux v5 & 6 way back when[1]. CentOS looks familiar enough to ease my apprehensions.

First step on the way, was getting the OS installed on the machine.
Slight hiccup though. I had the ISO and no optical drive!

I’d disconnected and given away the optical drive on my server, because I thought,[2] I didn’t need a device sucking power, needlessly.
And ofcourse my trusty old MacBook Air has none.

So how do I do about installing?

Well, I got the ISO down, via bittorrent and then “burnt” it to a USB drive, making myself a bootable USB installer.

How? Well here goes[3]

  • Get the ISO[4].
  • Convert the read only ISO to a read/write image using hdiutil[5] like so.
    sudo hdiutil convert -format UDRW -o 'call-it-what-you-want.img' 'path-to-iso-file.iso
    It’d be simpler if you’re in the same directory as your iso file. Saves you making booboos with paths.
  • You’ll end up with an img file (it might also get appended with a .dmg extension, so that you end up with CentOS.img.dmg. Doesn’t matter.)
  • Partition your USB drive so that it’s empty.[6]
    diskutil partitionDisk /dev/disk2 "Free Space" "unused" "100%"
  • Write the converted image file to your USB drive using dd.
    sudo dd if='path to your new img file' of=/dev/disk2 bs=1m
  • Once dd is done, the USB installer’s ready.

You can then go right ahead and use it to install CentOS.

  1. 1999 — 2000. Yes, I’m that old. ↩︎

  2. Don’t laugh! ↩︎

  3. Instructions for reference purposes only. Be careful. Don’t be a cargo cult sysadmin. Don’t blame me, if you hose your system. ↩︎

  4. that you think you’d need. I got the everything ISO. If you’re comfortable doing everything over your fast broadband connection, a minimal ISO should suffice. ↩︎

  5. You’re obviously doing this in the terminal. Just thought I should tell you that :P ↩︎

  6. Your device might not be disk2. Find out what it is by using “diskutil list” ↩︎

by Mario Jason Braganza at March 11, 2018 10:29 AM

March 06, 2018

Kushal Das

Running Tor relay inside a docker container

The latest Tor project release is But, that is not available on all the different versions of different Linux distributions. For example, CentOS 7 has tor-, and only Fedora 28 has the latest Tor.

This is where a container can help. The official builds from Tor Project are for Debian, means we can build and use a Debian based container.

The Dockerfile

FROM debian:stretch

RUN apt-get update
RUN apt install vim gpg -y

RUN echo "deb stretch main\ndeb-src stretch main" > /etc/apt/sources.list.d/tor.list

# Let us get the key for Tor
RUN gpg --keyserver --recv A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89
RUN gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 > tor.gpg
RUN apt-key add tor.gpg

# Finally install Tor
RUN apt update
RUN apt install tor -y
ADD ./torrc /etc/tor/torrc

# Add the tor user
RUN groupadd -g 1000 tor && useradd -m -d /home/tor -g 1000 tor

# Now drop to the actual user
USER tor
RUN mkdir -p /home/tor/.tor/keys

VOLUME ["/home/tor/.tor"]

EXPOSE 9001 9051


I have a configuration file named torrc, you can copy the sample configuration and edit as required. I have the following entries there.


ORPort 9001



ExitRelay 0

Next, we will create a directory in the host system to keep the keys, and other files. We want to restart the container and still have the same details, mounting a directory from the host system into the container will help us in that.

mkdir /mnt/tor
chcon -R -t svirt_sandbox_file_t /mnt/tor

Please also make sure that you have correct ownership of that directory.

Running the container

docker run -d -v /etc/localtime:/etc/localtime -v /mnt/tor:/home/tor/.tor --restart always -p 9001:9001 -name relay kushaldas/tor:

After starting the container, you can check the logs for any error. If you can see the following message in the log, then it means that you configured the relay properly.

# docker logs -f relay

Self-testing indicates your ORPort is reachable from the outside.

The official relay guide

Tor project recently published an updated relay guide for anyone new to running a relay. Please go through that document first. If you need help, there is a mailing list of Tor relay operators, and #tor channel on OFTC IRC server is also very welcoming.

by Kushal Das at March 06, 2018 05:00 AM

March 05, 2018

Kushal Das

Tor Mumbai meetup

On 20th January, we had a Tor meetup in Mumbai. Hasgeek organized the event, with OML providing the meeting space. I noticed the announcement over Twitter, and made sure that I registered for the event. Two contributors from the core team, Sukhbir Singh and Antonela Debiasi, were present at the event.

Getting there

Bhavin joined me on the trip. We started early in the morning to make sure that we skip all the traffic, and reach Mumbai with enough time on hand. The venue was surrounded by many excellent food places, which was really helpful.

The meetup

There were around 15 participants. Folks came from different cities. We started a small round of introductions, and both of the core contributors explained how they contribute to different parts of the project. Mentioning names (of the participants) were voluntary, and it was a no photograph event. Harish Pillai also joined us in the meetup.

Antonela described the work, the Tor UX team is doing. Only 2-3 days ago, I’d heard about their work in a discussion with Simply Secure. Antonela explained how they are doing user testing, and later, many participated in the same. We should also do similar kind of user testing in every conference/meetup.

We also tested the Tor network speed. Feel free to run the same test in your system using this link.

Next, Sukhbir gave a detailed talk on the Tor project. This was filled with many interesting facts and how-to(s). Discussions ranged from the Tor Browser itself to other parts of the Tor ecosystem. He also mentioned lot of dos/don’ts while using Tor. While talking about Tor Exit relays in India, Sukhbir mentioned that he never met any of the Exit relay operators in India before.

In the later half of the meetup, I demoed the SecureDrop project. We discussed about how the Freedom of the Press Foundation is helping journalists and whistleblowers worldwide. How to leak securely? was the next topic of discussion. Sukhbir had already mentioned most of the points. I made sure to repeat and refer back to those. I have a separate blog post on the topic. The discussion then moved to the Indian press and why we don’t have any SecureDrop instances running in India. People talked about their concerns and the current situation related to privacy in India.

In the end, we all moved to the microbrewery next door, and discussions continued.

While coming back, we were stuck in Mumbai traffic for a few hours, and reached home late.

Antonela has also shared her views about the meetup in the Tor Blog.

by Kushal Das at March 05, 2018 03:51 AM

March 01, 2018

Sanyam Khurana

MozAMU: Mozilla Addons Development at AMU

It all started with PyCon India. I met a few students of Aligarh Muslim University who were trying to teach about FOSS in their college. A few them were already contributing to Coala. We talked a bit and they were discussing problems they were facing to run that community. I already started a Mozilla community at my college in the earlier days. Since I brought up a lot of folks from my college community in the event, we together discussed How to nurture FOSS communities in college as part of PyCon India Open Spaces. Here is a glimpse of the same:

PyCon India Open Spaces on how to nurture FOSS communities in college

Later, these folks were excited and invited me as a speaker at their college. A lot of planning happened for the event and we were in touch almost daily for different things. We planned the event one and a half month in advance. Finally, on 24th Feb 2018, we decided to have a full-day event around FOSS at Aligarh Muslim University.

We left from Delhi at around 6:30 AM in the morning. We then halted at a cafe known as Break Point around Aligarh to have breakfast. We reached the university at around 10:20 AM.

We took some time to test the entire set-up and the event began at around 11:30 AM. I took the first session on Why you should contribute to Open Source. We discussed the question that somehow pops up sooner or later into everyone's mind while contributing to Open Source: What's in it for me?.

We discussed various pathways one can begin contributing to Open Source Projects like coding, writing docs, managing team, advocacy, documentation, translation, bug triaging, reviews, organization skills, soft skills & tons of other things that come as a by-product.

Curious & enthusiastic attendees learning about different contribution pathways in FOSS

You can find the slides here: Why you should contribute to Open Source?.

Curious & enthusiastic attendees at Mozilla AMU

We had a break for sometime and then started with the much awaited Add-ons session. Everyone was very excited to start learning to develop add-ons. I began with explaining the initial setup details & discussed JSON briefly to bring everyone on the same page. To make most out of the event, We also organized a few events previously to teach basics of JavaScript & JSON so that students so that they do not feel overwhelmed with the add-ons development.

Curious & enthusiastic attendees learning from Sanyam Khurana (CuriousLearner)

Then Shashank (@realslimshanky) took over and discussed manifest.json and it's importance. Later we developed a simple addon -- borderify, which displays a border on every site the user visits. Some students also modified their scripts to make their add-ons do different things and posted them on twitter. Shashank, me and Shivam Singhal (@championshuttler) helped everyone with their problems during the development phase.

Curious & enthusiastic attendees learning from Sanyam Khurana (CuriousLearner)

Since all of us are devs, we were able to quickly resolve queries of students. One of the most important things I noticed is that often people misspell either the name of their manifest file or some key in their manifest people resulting their add-on to not load during the debugging phase.

A lot of them then created addons on their own and modified their previously created borderify addon to do more stuff. I've tried to collect some of them here. For a more verbose list you can visit Twitter and search tweets tagging me (@ErSanyamKhurana with #MozAMU.

Imaginations ran wild and one of the attendee created an addon that replaces the word Google with Mozilla on every web page. You can see his hack here

To make the session more interesting we gave add-ons stickers to anyone who answers the question about what we were just telling them. A lot of folks praised and tweeted about the addons they were generating. We were able to generate 10,000+ impressions with more than 4,000+ accounts reached on Twitter for #MozAMU.

Twitter Outreach report on no of impressions created for #MozAMU Twitter Outreach report on top contributors created for #MozAMU

You can read the full report here.

Till this time, I never introduced to anyone about who am I and most importantly not listed any of my contributions in any of the projects. I don't want them to feel overwhelmed and assume that we people have some sort of superpowers that we're able to patch bugs in any FOSS project. I always make it a point to encourage them and help them land their first patch.

And my introduction summed that up in just one line I'm one of you -- a part of the community.

Sanyam Khurana (CuriousLearner) teaching about essential things to learn while contributing to FOSS projects

We then hopped on to discuss How do I start contributing to Open Source? where we specifically discussed How to find bugs on different projects through Bugzilla & Bugsahoy.

Enthusiastic folks learning about contributions for Sanyam Khurana (CuriousLearner)

You can find the slides here. Then I discussed other Open Source projects I've contributed to like CPython, Django, Oppia, Mozilla's Devtools, Gecko-Engine & tried to find out similarities in various bug trackers. We then had a group photo with some of the attendees.

Group photo at Mozilla AMU

It was already 5 PM and we didn't go for Lunch since students kept us busy with their questions during the lunch break too :P

Curious & enthusiastic students asking questions in break

So, we decided to hop-on to a restaurant nearby with the core-team of students that helped in organizing the event with so much enthusiasm.

Curious & enthusiastic attendees at Mozilla AMU

Then we clicked one last photo before leaving Aligarh at around 7:00 PM with the core-volunteers of the event who helped in all the preparations for the event.

Group photo Mozilla AMU

In the end, I would like to congratulate the students for making so wonderful arrangements and pushing up the FOSS community in their college. I hope they will now start landing patches in different FOSS projects & we'll all meet again soon.

by Sanyam Khurana at March 01, 2018 11:41 AM

February 28, 2018

Farhaan Bukhsh

The Open Organization

I was recently going through few of the Farnam Street articles, and I landed on the article on how to read a book, where they basically describe how to read a book;  the fact that there are types of books, and the fact that books can, in the words of Francis Bacon “be gulped, some books chewed and others digested.”

This basically signifies the intensity and the level of awareness to have when you are reading a book. I have gulped lots of books, but The Open Organization is one of those, that I wanted to chew on.

I wanted to learn about how you can build an ecosystem where people are free to voice their opinions, where failure is be worn as a badge of honor for trying. This book filled me with thoughts of how would it be like, if an organization is really an Open Organization.

There are a lots of beautiful anecdotes that I came across, and a lot of values that were given in the book to think on.

The book talks about Purpose and Passion. People specially us Millenials,have been spoiled to an extent that we actually don’t run after money but after a purpose, after a problem. We don’t mind working crazy hours and being paid peanuts, but we do care about people, we care about how are we treated, we care about the problem we are after. One of the quotes in the book says Basis of loyalty is a common purpose and not economic dependency. A lot of people I know believe in this. When you unite with an organization which is after the same problem as you, it’s a match made in heaven.

The book talks about Passion, the passion about doing good, making a dent in the universe, but sometimes you realize Universe doesn’t give a damn .

One of the most amazing analogies, is when the book compares a structure of an organization with web architecture which is end to end and not center to end. Where there is no central point of control but there should be a central point of co-ordination. The organization is lead by leaders it selects, where Meritocracy is the idea behind every decision.

The other idea that was completely new to me was the difference between Crowd-sourcing and Open-sourcing.To be honest I had not thought open source to be a business model until the recent past. The thing with the wisdom of the crowd is that it works amazingly well when the work can be easily disagregated and individuals can work in relative isolation. I love the point in the book that says members of the organization should be inspired by the leader and not motivated. Motivation is something they already have and that is the reason they are joining your organization. I love this idea a lot because I have seen people complaining about their employees not being motivated enough. I think that this (lack of inspired leadership) is a reason.

“Great companies don’t hire skilled people and motivate them, they hire already motivated people and inspire them.” – Simon Sinek

I really enjoyed the way the power of purpose is laid out in the book. The other idea was the idea of Meritocracy.  I think of  merit as having an amazing idea and idea being the sole reason for doing a certain action. Better ideas win, they are questioned and deliberated upon and that is how innovation happens in the organization. People debate over it, question it, trash it. People just don’t settle for something to avoid conflict. That very same complacency however is what has creeped into organizations where people don’t debate ideas just to avoid conflict so that everyone remains happy. It was so amazing to read stories where someone thought out of the box and wanted to bring in a new way of doing things and how he convinced everyone that this is the right way of doing things, we ought to give it a try.

This book pushes back on the belief in hierarchy and brings to limelight lateral structure, letting people know that the conventional ways of running an organization might have to change, upgrade as it were, to a newer version.

I got a lot of amazing ideas and to be honest I got to know how a person in an organization should be treated. I was awestruck with the insights in the book. Wish someday I could mould an organization in this way. Theories are always romantic, hope the execution and implementation is beautiful as well.

by fardroid23 at February 28, 2018 04:30 AM

February 13, 2018

Anwesha Das

The danger of modern medical devices : Keynote by Karen Sandler at LCA 2018

Karen Sandler the cyborg lawyer (quite literally; she has a defibrillator in her heart) has always been a source of inspiration to me. Unfortunate me has missed three invaluable opportunities to meet her in person. But I never miss a chance to see if I can meet, or see her online. So whenever she is giving a talk, I eagerly wait for the videos to come online.

I’m a big fan if you can’t tell :)

This year she was one of the keynote speakers at LINUXCONFAU,2018 and I was (as usual) is at the mercy of the conference organizers to watch her talk as soon as possible. They were very efficient. The video was posted really quickly
Thank You, LCA!

The first time I encountered Karen was in 2016 when I watched her [2012 Keynote at LCA, Freedom in my heart and everywhere. The talk pointed me to the problems which were an integral part of our life, crucial to our existence. The proprietary software in our medical devices and the danger lies in them. The lawyer in me started looking at all medical devices with a suspicious eye. Doctors appeared to me like Agent Smith and us patients, like Neo having some bug tracker inside our body.
On another very personal note, she was the first person who actually talked about something that I could understand, connect with, though it was technical at the core.

This year her keynote at LCA was titled: “Six Years Later, or Hey, did you ever get the source code to that thing in your heart?”. This talk is, in essence, the epilogue, to her 2012 keynote. It involved the dangers of having proprietary, closed source software in medical devices and generating awareness around it.The talk to me was a story connecting her personal life and her passion, software freedom.

She started her story with a question, which she was often asked after she gave her talk in 2012, “Hey did you ever get your source code?” By definition, a cyborg is “a person whose physiological functioning is aided by or dependent upon a mechanical or electronic device.” Pacemakers, hearing aids, even our innocent looking glasses make us cyborgs. If not all, at least a vast number of us humans, are cyborgs. The distinction between who is a cyborg and who is not is becoming increasingly blurred.

We all are in the process of becoming or unbecoming cyborgs.

And so, she aims to create a world where we have a number of free and open source alternatives to proprietary software. Moreover, she raised another fundamental point on the ethics of such software in devices that our lives, literally, depend on.

Being well aware of our ignorance, she walked us through various aspects of the legal, technical, community, and the social aspects of having buggy software in medical devices.
In her own words these wifi enabled devices "have the worst of both the worlds”, running proprietary software inside them and no security at all.

In the next part of her talk, she discussed the DMCA, Digital Millennium Copyright Act, 1998. It forbids, criminalizes any act to bypass access controls for devices like these, even if it is permissible under the Copyright Act itself. Therefore the passwords which the copyright holder has put in place cannot be changed. No exceptions, no exemptions. So under any circumstance, no one could check the security/safety of their own device.
Then she broke the good news on how she got the exemption, citing her own scenario. She shared her personal stories to explain the situations and dangers that lay.
She also ran through various incidents showing vulnerabilities of various medical devices.

The best part of the talk came in the closing moments, where this free and open source advocate held forth on how can we implement and follow free software in our daily life.

To summarise,

The talk enlightened us about existing and emerging threats in the sphere of medical devices.
Why and how free and open source software has solutions to many of these situations.
Most importantly she emphasized that we as a community have a responsibility towards making the situation better.

You are a true superhero, when you have skin in the game (literally your heart in the game) and can actually stick to your beliefs and passions, even your life is at risk.

Thank you Karen, for being able to think differently and for your constant efforts to make the world a better place.
Looking forward to your next talk. See you sometime, somewhere, and until then will adore you online.

To read further about medical devices and tracking, go to this post.

by Anwesha Das at February 13, 2018 05:19 PM

January 30, 2018

Mario Jason Braganza


np_perseverance_324536_000000m [1]

Started: 2018-01-27
Finished: 2018-01-28

I started my modern non-fiction journey only a couple of years back, with Antifragile and Thinking Fast & Slow. (I’d only read older, motivational self help before then, Ziglar, Carnegie etc) I made the mistake of thinking everything was as wonderfully dense, yet rambling and well written.

I was sadly mistaken.
I realised that just like fiction, most non-fiction wasn’t worth my time and that just like most fiction, non-fiction followed a beat; a predictable path.

  • You present the lay of the land
  • The problem with the way things are
  • Present your hypothesis for a solution
  • Support your hypothesis with your findings and supported studies and articles
  • Exposition (or you’d how to apply the solution in your life or to your problem)
  • Expand it across domains if possible
  • Optional, an upsell if possible to talks or events.
  • The End

This has made it so easy for so many to fit so much drivel into the standard 300 pages. Yet it is now just as easy for me (like someone lifting off a veil,) to skim books and junk the ones I don’t like.

And further yet, when well done, this same pattern allows for such amazing exposition of knowledge.
Seth Godin and Cal Newport are masters at the game.
And so is Angela Duckworth, author of Grit.
I’ve marked the book blue, so I can’t hope to even summarise it here.
Just a few inspirational notes follow.
I’ll leave the entire exposition for the book.

“With everything perfect,” Nietzsche wrote, “we do not ask how it came to be.” Instead, “we rejoice in the present fact as though it came out of the ground by magic.” [2]

As did I.
I see people writing prodigious pieces of software, figure out how to move mountains of data, keep hundreds of machines in sync and am filled with awe.
I see Ansel Adams’ photos and despair of ever being even a tenth as good as he was.
I watch Ian Ethan do what I can only describe as crazy making with polyphonic tones and God knows what else on a guitar with two fretboards while I struggle to play a single scale on one.
Scott H. Young self-learns a 4 year MIT CS degree in a single year, goes on to learn four languages in a year and then just for kicks, learns to draw portraits in a month, while I struggle with to pick up programming and cannot draw to save my life.

So, how do I get to be that good? Or at least part way competent?
The answer lies in being gritty.

First, these exemplars were unusually resilient and hardworking.
Second, they knew in a very, very deep way what it was they wanted.
They not only had determination, they had direction. It was this combination of passion and perseverance that made high achievers special.
In a word, they had grit.

Talent however, is no guarantee of grit. (Or I’d be destined to forever be at the bottom of the totem pole :) )

Which is why I loved it when Angela held up Charles Darwin as a shining example of grit.

Darwin’s biographers don’t claim he possessed supernatural intelligence. He was certainly intelligent, but insights didn’t come to him in lightning flashes
He was, in a sense, a plodder.
Darwin’s own autobiography corroborates this view: “I have no great quickness of apprehension [that] is so remarkable in some clever men,” he admits. “My power to follow a long and purely abstract train of thought is very limited.”
He would not have made a very good mathematician, he thinks, nor a philosopher, and his memory was subpar, too: “So poor in one sense is my memory that I have never been able to remember for more than a few days a single date or a line of poetry.”

So how then did Darwin, get to be … well, Darwin?

Darwin’s (less famous, yet arguably more talented, more genius) cousin, Francis Galton, provides us with the answer

Outliers are remarkable in three ways: they demonstrate unusual “ability” in combination with exceptional “zeal” and “the capacity for hard labor.”

Here’s Darwin, himself …

“I think I am superior to the common run of men in noticing things which easily escape attention, and in observing them carefully. My industry has been nearly as great as it could have been in the observation and collection of facts. What is far more important, my love of natural science has been steady and ardent.

One biographer describes Darwin as someone who kept thinking about the same questions long after others would move on to different—and no doubt easier—problems

Gritty folks, in Angela’s words, were constantly driven to improve … and were paragons of perseverance.

The focus on talent distracts us from something that is at least as important, and that is effort.
As much as talent counts, effort counts twice.
The main thing is that greatness is doable.
Greatness is many, many individual feats, and each of them is doable.
A high level of performance is, in fact, an accretion of mundane acts.

More words on perseverance …

The bigger impediment to progress is that sometimes we stop working out altogether. … Consistency of effort over the long run is everything.
Many of us, it seems, quit what we start far too early and far too often. Even more than the effort a gritty person puts in on a single day, what matters is that they wake up the next day, and the next, ready to get on that treadmill and keep going.
If the quality and quantity of those pots, books, movies, and concerts are what count, then the striver who equals the person who is a natural in skill by working harder will, in the long run, accomplish more.

Enthusiasm is common.
Endurance is rare.

Grit is about holding the same top-level goal for a very long time.

How do you figure which pursuit of yours is worth following?
Have a few, big overarching goals and let the rest of your actions and smaller goals drive you to that big one.
You can drop, change, blow up the small things, but keep your eye on the prize.

Here’s Warren Buffett and Angela, explaining this a lot more clearly,

First, you write down a list of twenty-five career goals.
Second, you do some soul-searching and circle the five highest-priority goals. Just five.
Third, you take a good hard look at the twenty goals you didn’t circle. These you avoid at all costs. They’re what distract you; they eat away time and energy, taking your eye from the goals that matter more.

To Buffett’s three-step exercise in prioritizing, I would add an additional step: Ask yourself, To what extent do these goals serve a common purpose? The more they’re part of the same goal hierarchy—important because they then serve the same ultimate concern—the more focused your passion. If you follow this method of prioritization, … you’ll stand a better chance of getting somewhere you care about—a better chance of moving closer to where you want to be.

And the way to get better at grit and perseverance and getting slowly better by the day is through Deliberate Practice.
Angela has a chapter dedicated to it.
But Cal Newport has a written about this at length, showcases process and success stories and even has a whole book dedicated to Deep Work & Deliberate practice.
So go, read.

She goes on to write at length on the mindsets you’d need, which you could develop both intrinsically and extrinsically, finding purpose, having hope, and how to develop grit personally and as parents and leaders in society.
You really ought to read the book cover to cover.

I’ll close with Nietzsche’s plea to peek behind the curtain and appreciate the blood, sweat, and tears that go into making magic …

Nietzsche implored us to consider exemplars to be, above all else, craftsmen:
“Do not talk about giftedness, inborn talents! One can name great men of all kinds who were very little gifted. They acquired greatness, became ‘geniuses’ (as we put it) …
They all possessed that seriousness of the efficient workman which first learns to construct the parts properly before it ventures to fashion a great whole; they allowed themselves time for it, because they took more pleasure in making the little, secondary things well, than in the effect of a dazzling whole.

  1. The West African, Adinkra symbol of perseverance ↩︎

  2. All the quotes are from the book ↩︎

by Mario Jason Braganza at January 30, 2018 02:50 PM

January 27, 2018

Farhaan Bukhsh

Dockah! Dockah! Dockah!

I have been dabbling with docker for quite sometime, to be honest when it was introduced to me I didn’t understand it much but as time passed and I started experimenting with it I got to know the technology better and better. This made me understand various concepts better. I understood virtualization, containerization, sandboxing and got to appreciate how docker solves the problem of works on my machine.

When I started using docker I use to just run few commands and I could get the server running, this I could access through browser that was more than enough for me. When I use to make changes to the code I could see it getting reflected in the way I am running the application and I was a happy man.

This was all abstract thinking and I was not worried about what was going inside the container, it was a black box for me. This went on for a while but it shouldn’t have, I have the right to know things and how they work. So I started exploring about the realm and the more I read about it the more I fell in love with it. I eventually landed up on Jessie’s blog. The amount of things she and Gautham has taught me is crazy. I could never think that docker being a headless server could actually be used to captivate an application in such a way that you decide how much resources should be given to it. We at jnaapti have been working on various other possibilities but that for some other time.

So yeah there is more to just starting the application using docker and get things to work. So let’s try to understand few things with respect to docker, this is purely from my experience and how I understood things. So containers are virtual environments which share some of the resource of your host operating system. Containers are just like Airbnb guest for which the host is the Operating System. Containers are allowed to use the resources only when the user of Operating System gives them permission to use. Now the way I use them is basically in two ways, Stateful containers or Stateless containers, stateful being the one which has some data generated and stored in them while stateless is the one which doesn’t have any dependency on data.

Let me show you one of the use case that I generally use containers for; Now people may disagree and say I am exploiting it or using the power for wrong purpose but to be very frank if it solves my problem why should I care XD. Now, imagine I want to learn to write Go and I don’t want to install it on my system but have an isolated environment for it. There are two ways I can pull a docker image which has Go in it or get a normal image and install go in it. An image here is just like an iso file which is used to help you install an Operating System on your machine. Let’s see what all images I have on my machine,

I would run docker images and the output looks like this:


This shows that I have a znc image I use it to run a znc bouncer. Let’s try and pull a ubuntu image and install golang in it.  The command goes docker pull ubuntu.


Now we need to run a docker container and get a shell access to the container. For that we run command docker run -it --name="golang" ubuntu:latest /bin/bash

Let’s break it down and see what is going on here, run tells the docker to start the container -it option tells that this is going to be an interactive session and we need to attach a tty to this, --name is the option to give name to the docker container and ubuntu:latest is the name of the image and /bin/bash is the process that needs to be run.

Once you run this command you will that you will get a root prompt something like this:



Now you can run any command inside it and you will be totally isolated from your host machine. For installing golang let’s follow these instruction from Digital Ocean. You should ignore the ssh instruction instead run apt update and apt install curl nano. Follow the rest normally and you will see it working like this:



You can play around with golang in the docker and when you are done you can exit. The docker stays it’s just that you are out of it. You want the shell again you can run,

docker exec -it golang /bin/bash

You will get the shell again, this is what is called stateful container since it will have all the files that you have created. You can go ahead and mount a volume to the container using -v option in the docker run statement, this will act as if you plugged in a pen-drive in the docker storage being a directory you have created on the host machine.

docker exec -it -v /home/fhackdroid/go-data:/go-data golang /bin/bash

This will mount the /home/fhackdroid/go-data to ​/go-data in the docker container.

These are the few ways I use docker in my daily life, if you use it in any other way and you want to share do write it to me I would be more than happy to know.

Happy Hacking Folks!

by fardroid23 at January 27, 2018 08:36 AM

January 25, 2018

Saptak Sengupta

It works in Firefox, but not in Tor Browser

In today's world, where websites play a major role in providing various technical services to users, web developers have an important role. Though the war between back-end v/s front-end is never ending, nonetheless we all can probably agree on the fact that front-end does provide the non-tech users with an interface so that it becomes easier for them to use the back-end functionalities. Thus, the great problem of making front-end easy to use while also looking good comes into play. With the advent of the web, web technologies have also advanced a great deal. One of them is definitely CSS. CSS now has enough power to create a really interactive decent looking website only using it. With attributes like filter, masking and so on, you no more even need photoshop to change your images every time; with the help of grid-layout and flex you don't need to bang your head about laying out items properly on your webpage properly. Now you must be wondering why am I telling all this and not coming to the point. Well, the reason being if you don't use these new advancements (which I wonder why you wouldn't), you might not have ever come across the question. The biggest question today that a web developer faces is will the code they write actually work on all the browsers. And hence the title.

What is tor and tor browser?

Tor is a software program that helps you stay protected on the web in numerous different ways. The main idea is to keep your internet activities anonymous by not allowing the web pages to learn your exact web identity. It also protects you from people who are watching your internet activity (yup, you are being watched) by keeping them unaware of the sites you visit. 

Tor browser is a web browser that helps you use tor on various different operating systems. So as you can understand since privacy is a very important thing, so checking if the front-end you are making for a website, works in tor browser is also pretty important.

Tor browser and Firefox

Quoting Ethan Tseng and Richard Barnes from the blog Tor at the Heart: Firefox

If you’ve used Tor, you’ve probably used Tor Browser, and if you’ve used Tor Browser you’ve used Firefox. By lines of code, Tor Browser is mostly Firefox -- there are some modifications and some additions, but around 95% of the code in Tor Browser comes from Firefox.
So, basically, Tor Browser is built on top of firefox after applying some Privacy and Security patches. But this also means, to update Tor Browser, everytime a new firefox version comes means update the Privacy and Security patch codes to make them compatible with the new version of the browser. The latest version of Tor Browser is thus often not built on top of the latest version of Firefox. So how do you know if a feature is compatible with tor or not?

Will it work in Tor browser?

This question first came to my mind when I was writing some hobby code to make a Batman swiping animation. I used various CSS Masking properties. But then someone reported that it wasn't working on Tor browser. Which is when the question hit me, that it does work in firefox then why not on Tor browser? So what I found was the latest version of Tor Browser is built on top of Firefox 52.5.0esr while the latest version of Firefox is 57. So I delved into this question a little deeper and this is the steps you too can follow to know whether a certain HTML, CSS or Javascript feature is supported in Tor browser.

  1.  Start your tor browser. Open About section and there you can find the version of Firefox which is being used.
  2. Alternatively,  You can check the release notes for Tor browser to know about the Firefox version. So right now according to the release blog of the latest Tor browser till date, it is built on top of Firefox 52.5.0
  3. Go to website
  4. Search for the feature you are wanting to use. 
  5. Then, click on show all to get the compatibility over all the versions of the common browser.
  6. Now, to understand whether a feature is compatible, check for the Firefox version on top of which the Tor Browser is built, latest being 52.5
  7. So, I, for example, checked Firefox 52 for the compatibility of CSS Masking properties, which reveals that before Firefox 53, there was only partial support for CSS Masking.

Note: This is not any official way of finding how it works, but this technique works just fine.

by SaptakS ( at January 25, 2018 06:41 AM

January 22, 2018

Shakthi Kannan

Emacs Meetup (virtual), January 15, 2018

I wanted to start the New Year (2018) by organizing an Emacs meetup session in the APAC time zone. Since there are a number of users in different cities, I thought a virtual session will be ideal. An online Google Hangout session was scheduled for Monday, January 15, 2018 at 1000 IST.

Hangout announcement

Although I announced the same only on Twitter and IRC (#emacs on, we had a number of Emacsers join the session. The chat log with the useful web links that were shared are provided below for reference.

We started our discussion on organizing Org files and maintaining TODO lists.

9:45 AM Suraj Ghimire: it is clear and loud :) video quality is good too 
                       yes. is there any session today on hangouts ?
                       wow thats nice thanks you for introducing me to emacs :). I am happy emacs user
                       should we add bhavin and vharsh for more testing
                       oh you already shared :)
9:55 AM Suraj Ghimire:  working on some of my todos

For few Vim users who wanted to try Emacs Org mode, it was suggested to get started with Spacemacs. Other project management and IRC tools with Emacs were also shared:

  HARSH VARDHAN can now join this call.
  HARSH VARDHAN joined group chat.
  Google Apps can now join this call.
  Google Apps joined group chat.
10:05 AM Shakthi Kannan:
                         ERC for IRC chat

10:13 AM Shakthi Kannan:
10:18 AM Suraj Ghimire: I started using emacs after your session on emacs, before that i used to 
                        get scared due to lot of shortcuts. I will work on improvements you told me.
10:19 AM Shakthi Kannan: M - Alt, C - Control

  Google Apps left group chat.
  Google Apps joined group chat.
  Sacha Chua can now join this call.
  Sacha Chua joined group chat.

We then discussed on key bindings, available modes, and reading material to learn and master Emacs:

10:27 AM Shakthi Kannan:
10:31 AM Shakthi Kannan:

  Dhavan Vaidya can now join this call.
  Dhavan Vaidya joined group chat.
  Sacha Chua left group chat.
10:42 AM Shakthi Kannan:

  Rajesh Deo can now join this call.
  Rajesh Deo joined group chat.

Users also wanted to know of language modes for Erlang:

10:52 AM Shakthi Kannan:

  HARSH VARDHAN left group chat.
  Aaron Hall can now join this call.
10:54 AM Shakthi Kannan:

Aaron Hall joined the channel and had few interesting questions. After an hour, we ended the call.

  Aaron Hall joined group chat.
10:54 AM Aaron Hall: hi!
10:54 AM Dhavan Vaidya: hi!
10:55 AM Aaron Hall: This is really cool!

Maikel Yugcha can now join this call.
Maikel Yugcha joined group chat.
10:57 AM Aaron Hall: Anyone here using Emacs as their window manager?
10:57 AM Suraj Ghimire: not yet :)
10:57 AM Shakthi Kannan: I am "mbuf" on IRC.
10:58 AM Aaron Hall: What about on servers? I just played around, but I like tmux for persistence and emacs inside of tmux.
10:59 AM Shakthi Kannan:
11:00 AM Aaron Hall: Is anyone compiling emacs from source?

Zsolt Botykai can now join this call.
Zsolt Botykai joined group chat.
11:00 AM Aaron Hall: yay, me too!

Zsolt Botykai left group chat.
11:00 AM Aaron Hall: it wasn't easy to start, the config options are hard
                     I had trouble especially with my fonts until I got my configure right

Maikel Yugcha left group chat.
11:03 AM Shakthi Kannan:
11:04 AM Aaron Hall anyone using Haskell? With orgmode? I've been having a lot of trouble with that...
                    code blocks are hard to get working
                    not really sure
                    it's been a while since I worked on it
                    I had a polyglot file I was working on, I got a lot of languages working
                    Python, Bash, R, Javascript,
                    I got C working too
11:06 AM Shakthi Kannan: Rajesh:
11:07 AM Aaron Hall: cheers, this was fun!

Aaron Hall left group chat.
Dhavan Vaidya left group chat.
Rajesh Deo left group chat.
Google Apps left group chat.
Suraj Ghimire left group chat.

A screenshot of the Google Hangout session is shown below:

Google Hangout screenshot

We can try a different online platform for the next meetup (Monday, February, 19, 2018). I would like to have the meetup on the third Monday of every month. Special thanks to Sacha Chua for her valuable inputs in organizing the online meetup session.

January 22, 2018 05:00 PM