Summer training students' planet

March 20, 2018

Kshithij Iyer

Put the chickpeas in water.

Chai had asked Coffee to remind her to put the chickpeas for soaking.
Chai calls Coffee in the evening
Chai: Hello!
Coffee: Hi! Put the chickpeas in water. Put the chickpeas in water. Put the chickpeas in water. Put the chickpeas in water.
Chai: Okay Okay!
Chai and Coffee talk on the phone for a while. After the call is disconnected. coffee sends a text chai.
Coffee: Put the chickpeas in water to soak. Love you. Good Night!

March 20, 2018 06:19 PM

"It takes a special kind of woman to understand my madness. It takes a special kind of woman to..."

“It takes a special kind of woman to understand my madness. It takes a special kind of woman to understand the truth behind my lies. It takes a special kind of woman to understand that I ain’t batman but I am the joker who needs a Harley Quinn. It takes a special kind of woman to understand and see through the larrikin. It takes a special kind of woman to understand how complicated I am. It takes a special kind of woman to understand the mess I am. It takes a special kind of woman to love me. And you are that special kind of woman, I love you!”


Kshithij Iyer

March 20, 2018 06:08 PM

March 16, 2018

Kshithij Iyer

"Did I make wrong decisions in life? Maybe yes, time will only tell us if they were right or wrong..."

“Did I make wrong decisions in life?
Maybe yes, time will only tell us if they were right or wrong but whatever they are, they are all mine it could be taking computer science or falling in love or coming to Pune. Anyway it takes some serious amount of courage to make the jumps specially when you know these jumps could kill you from within. It takes a lot courage to obey your brain but even more courage to follow your heart. It takes a certain level of madness to do what is right and against the flow.”

- Kshithij Iyer

March 16, 2018 02:00 PM

March 15, 2018

Himanshu Awasthi

Experience of Pandas Documentation Sprint

Hi All,

After a very busy and hactic week I got a time to share my experience of Pandas Documentation SprintPandas is an open source Python library for data manipulation and analysis.

Learn more about Pandas : Click Me600_468929766

Pandas Documentation Sprint is organised by PyData & Python Communities over the globe with the support of NumFOCUSPython Software Foundation .

Kanpur Python Community one of the smallest group of Pythonistas also be the part of this global sprint & I’m really happy to being an organizer of such an awesome community & the tweet by Marc Garcia define’s how community members respoded for this sprint :


We faced lots of challenges during the sprint but we overcome all the challenges. We started preparing for the sprint before a week. I share all the guidelines & useful link related to the sprint to our slack channel which helps member to setup environment before the sprint. This helps a lot on the day of sprint, we directly started working on docstrings .


I learn’t a lot from this sprint, I didn’t work on Pandas before this sprint but now I continuously work on Pandas Docstring open PRs & Reviewing others code on github. People defines their happiness in different ways but now I think :

Happiness is when your PR merged 

I would like to say thanks to Tushar Mittal , Hammad Lari & other community members for supporting and working continuously with community.

Special thanks to Marc Garcia because when ever I got stuck , I wrote a mail to him & I got immediate response from him with solution.

Without a sense of caring, there can be no sense of community.

-Anthony J. D’Angelo

Happy Coding !

by Himanshu Awasthi at March 15, 2018 06:01 PM

March 14, 2018

Sanyam Khurana (CuriousLearner)

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

Kshithij Iyer

When life gives you 6 PM city commute, Kids manage it, men take...

When life gives you 6 PM city commute, Kids manage it, men take it, Legends enjoy it.
#BeTheLegend #TheEverydayBiker (at Pune, Maharashtra)

March 14, 2018 01:44 PM

March 13, 2018

Mannu Gupta

Every permission will be written in the “Meta” part of the model that we will define.

Every permission will be written in the “Meta” part of the model that we will define. So django will automatically link those to the particular model inside which they are defined. We do not need another code to link with the model.

Hope it helped

by Mannu Gupta at March 13, 2018 09:45 AM

Jason Braganza

Booting CentOS into Graphical or Command Line Mode by default


Ok, now that I’ve installed CentOS, I decided to install X Windows.
And like Rip Van Winkle, I learnt that a lot has changed in 20 years :)

A windowing environment was easy to install …

sudo yum groupinstall "Gnome Desktop"

and the trusty old startx & gave me a Windowing Environment (which I have yet to explore)

However, switching permanantly to graphics mode (or vice versa) wasn’t so easy.
I wanted to set my command line as the default startup environment and so I went to look for the default runlevel.
I coudn’t find it.
That’s because they don’t exist anymore.
No inittab of old, nothing.

The init scripts of old have now been replaced (for quite a while) by systemd. And while it’s old (most Linux distributions have adopted it for nearly 3-5 years now) it’s still new to me :)[1]

So, systemd targets something called targets[2] instead of runlevels. (Haha, see what I did there? :P)
Targets to my mind involve a collection of settings in a file all relating to … something … a service.

You could group all of your network stuff in a network target, or like I needed it all your runlevel settings in a command line target or a graphical target.


So a quick search led me to the systemctl get-default command which gives my my default target

Another search gave me the multi-user target to use if I wanted a multiuser command line environment.

So to switch all I had to do was,
systemctl set-default

Et voila!

If I ever wanted my graphical environment back as a default setting,
systemctl set-default

And Bob, as they say, is my uncle.

  1. and apparently still quite a source of controversy and debate ↩︎

  2. which I need to learn lots more about ↩︎

by Mario Jason Braganza at March 13, 2018 08:30 AM

March 12, 2018

Kshithij Iyer


When you walk down a casino floor, you’ll see a special breed of men, men with shady clothes, men with a rather unshaped beard, men with a face full of lines and wrinkles, men with a dozen bills to pay, men with no money. These are the men which the casino fears the most as these are the men who have nothing to lose but everything to win. So when you end up at a casino in Las Vegas in a shabby suit with a dime in your pockets throw it all in, who knows a casino might go in a loss that night. Whenever life takes everything from you remember, you’ll always have something in your pocket to throw in the pot and say “I am All In!”

The basic rule of life is that it rewards those who have the courage to throw it all in when given an opportunity. It may not be a physical poker table every time but yes the game never stops, there is always a table, a pot and a player with no money. So always remember whenever you end up in a casino with a dollar in your pocket have the courage to take a chance, to take the jump and to take a risk to bet the only thing you have to win everything you want.


March 12, 2018 02:03 PM

March 11, 2018

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 09, 2018

Kshithij Iyer

Don't stay hungry please

Chai calls coffee.
Chai: Hi! I am going to the supermarket.
Coffee: Nice! Buy milk love, you don't have milk.
Chai: Yes Yes! I don't have anything. I couldn't cook anything last night.
Coffee: (With tears in his eyes) You didn't have anything last night?
Chai: It's not a big deal.
Coffee starts to cry. Chai tries to convince him.
Coffee: Please don't stay hungry! You are one of the four people on this planet for whom I care for. Please don't stay hungry.

March 09, 2018 04:08 PM

March 08, 2018

Kshithij Iyer

"Should I break the Fugazi in which all these people are living in or should I allow them to continue..."

“Should I break the Fugazi in which all these people are living in or should I allow them to continue idealizing idiots who don’t know anything? Maybe it’s better to let them live in their own shell of useless and shallow believes and ideas. But yes as far as I am concerned I just enjoy it when I see through all the fakeness put across for others to fantasize! :p”


Kshithij Iyer

March 08, 2018 02:00 PM

March 06, 2018

Kshithij Iyer

Shashank Shekhar

Setting up RiotJS project with Webpack

Hey guys, I thought of posting this article a long time back but being busy, wasn’t able to. So for those who don’t know what RiotJS is,

Riot is Web Components for everyone. Think React + Polymer but without the bloat. It’s intuitive to use and it weighs almost nothing. And it works today. No reinventing the wheel, but rather taking the good parts of what’s there and making the simplest tool possible. [Source]

So I think, most of you have got the idea about what RiotJS is accomplishing. It is delivering tiny reusable components with minimalistic, fast and a comprehensible API.

Most of us desires to save time by using any module bundler and hot reload functionality, where comes Webpack comes into play. We’ll be here implementing, how to setup RiotJS projects and Webpack together.

TL;DR : You can view the source code here: [Source Code]

🔰 Setting up your NPM project

Goto the project directory, open your terminal, type commands below:

# this will create a directory named riot-plus-webpack
mkdir riot-plus-webpack
# this will change your directory to your newly created directory
cd riot-plus-webpack
# this will initialize your NPM project with default rules
npm init -y

We have now successfully created a NPM project, It’s time to add the webpack configuration for our project.

👷 Setting up our Webpack Configuration

Adding Webpack will saves us a lot of time for manual tasks we need to do everytime we will be changing our code. So what adding webpack to our project solves is:

  • Compiling all the riot tags to the native javascript code.
  • Module hot reloading and much more, but these are the two keypoints which saves developer’s time a lot.
Before setting up this configuration, just add some of the npm packages, we will need in between:
# this will add the packages we will need
npm i -D babel-core babel-loader babel-preset-es2015-riot riot-hot-reload riot-tag-loader webpack
webpack-cli webpack-dev-server
npm i -S riot

The final package.json file will be similar to:

"name": "riot-plus-webpack",
"version": "1.0.0",
"description": "Starter setup for a riotjs project with webpack",
"main": "index.js",
"scripts": {
"start": "./node_modules/.bin/webpack-dev-server --inline --watch --hot --colors -d --port 3000"
"keywords": [
"author": "Shashank Shekhar []",
"license": "MIT",
"devDependencies": {
"babel-core": "^6.26.0",
"babel-loader": "^7.1.3",
"babel-preset-es2015-riot": "^1.1.0",
"riot-hot-reload": "^1.0.0",
"riot-tag-loader": "^2.0.2",
"webpack": "^4.1.0",
"webpack-cli": "^2.0.10",
"webpack-dev-server": "^3.1.0"
"dependencies": {
"riot": "^3.9.0"

To setup the webpack configuration , create a new file:

# this will create a webpack config file
touch webpack.config.js

Copy and Paste the code shown below into that file:

// webpack.config.js
const path = require('path');
const webpack = require('webpack');
module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'public'),
publicPath: '/public/',
filename: 'main.js'
devtool: 'inline-source-map',
module: {
rules: [
test: /\.tag$/,
exclude: /node_modules/,
loader: 'riot-tag-loader',
query: {
type: 'es6', // transpile the riot tags using babel
hot: true
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader'

This will initialize the webpack configuration with this project. You have already observed that, we are using babel-loader here, so we will need to define a babel configuration file so that, webpack can tell babel to use that configuration file to get the presets it’ll need to compile down the tag files into javascript code.

touch .babelrc

Copy & paste the code below into that file:

"presets": [ "es2015-riot" ]

🚦 Setting up Project Directory

Now we have our npm project ready with a webpack configuration for our riot project, we’ll setup our project structure to have some initial files. Our project directory will be looking similar to :

| |____index.js
| |____tags
| | |____hello-world.tag

As per this project structure, you’ll need to create the folders and files, if they don’t exist. Don’t worry if you are not getting it, once it is done, you’ll get it.

First of all, we need to create a hello-world.tag file which can hold our riot tag code.

So create a riot tag src/tags/hello-world.tag, and put the code shown below, to display programmer’s traditional hello world output.

<!--  src/tags/hello-world.tag  -->
<h3>Hello from the Hello World Riot Tag</h3>
console.log("Hello from the Hello World Riot Tag");

In index.html, put the source code shown below:

<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Riot and Wepack Setup</title>
<!-- Your tags goes here -->
<!-- This script will contain all the compiled tags -->
<script src="public/main.js" charset="utf-8"></script>

In src/index.js put this source code :

import riot from 'riot';
import 'riot-hot-reload';
import './tags/hello-world.tag';

Your RiotJS and Webpack setup is almost complete , if you have followed this article. Now its the time to test it out.

👔 Preview

[Source Code]

To preview the app, Just open your terminal in the project directory and type below command-

npm Start

If all goes well, the app will fire up at localhost:3000 ( your port can be different, for that check your console logs ).

Now you’ll be able to see the preview of your RiotJS and Webpack setup. Which will appear similar to the image below.

This is a very basic setup of RiotJS and Webpack, you can add more onto it if you want. This is for you to complete this article, you’re awesome!


🔔 This article was originally published on my blog Setting up RiotJS project with Webpack.

💚 If you like this article, Please Shareit and if you have any queries regarding RiotJS, Webpack and this setup, please Comment out.

Setting up RiotJS project with Webpack was originally published in ITNEXT on Medium, where people are continuing the conversation by highlighting and responding to this story.

by Shashank Shekhar at March 06, 2018 05:56 AM

March 05, 2018

Kshithij Iyer

"Oh God! Yet another sleepless night but yes today I do agree that it was worth it."

“Oh God! Yet another sleepless night but yes today I do agree that it was worth it.”


Kshithij Iyer

March 05, 2018 03:23 AM

March 02, 2018

Kshithij Iyer

Happy Birthday Mummy!

Dear mummy,

I know I am a day late in writing this but I thought it is better late than never. I know in the past year you have faced many problems, some because of me as well. I know I have often fought with you on many topics. But mummy I was always trying to be both the good boy you thought I was and the person I want to be. I know because of me in these last 22 years you have cried a lot, sorry mummy for my stupid, silly and sometimes even serious mistakes. I know we are not able to talk as much these days as I used to talk with you when I was studying but don’t worry I’ll always come back to you. I know you are worried about me and what my actions would do to me in the future but mummy please don’t be worried about such small things, you know I have always found my way out and I’ll always find my way out by hook and most of the times by crook. Don’t worry mummy I still don’t drive by bike without a helmet, I always try to avoid junk food and I am always trying to work as hard as I can so that we can come out of the problems we have for now.

Happy birthday, mummy!

Love now and always,


March 02, 2018 09:03 AM

March 01, 2018

Shivam Singhal

MozAMU: Mozilla Addons Development at AMU

I am writing after a long time, have pending a lot of blogs, too 😦 Initially, I would like to tell you how the planning of this event took place. In Pycon India 2017, where Sanyam meets Rahul and his friends during Dev Sprints where Sanyam was sharing his journey and experience of FOSS. Rahul was asked to host Sanyam for a session on Open Source Contribution.

About one week after all this, Sanyam asked me to join him for this event, and give talk on Add-on Development in AMU. I said yes, but I was tensed as how to pitch and stage fear too 😦 . Even though I joined Shashank and Sanyam for it. My college exams were going on too so I get one of the bestest reason to ditch exams 😉 for Mozilla :P. So let’s talk about event.

Why you should contribute to FOSS?

Sanyam started the event with the concept of FOSS. He then further  explained the basics knowledge one needs and etiquette to contribute to FOSS. Moreover, he also focused on the problems faced by individuals in building community. The session was very much interactive in which we have two way talk.

Mozilla Rep Sanyam Khurana

Shashank on Mozilla Web Extension

After a small break,Shashank started his session about Mozilla Web Extension. He started with explaining Extension SDK and cross browser extension.Then he discussed manifest.json and it’s importance. Then we made  a simple addon — borderify, which displays a border across Mozilla pages. I helped students while they were developing this and got to learn about some new bugs and error we can face during development of Web Extension. The two way talks helped students as well as us in keeping the session interesting and grabbed new experience, too.

How do I start contributing to Open Source?

After the addons session , Sanyam explained  about how can a new bie start contributing to Open Source. He talked about how to find bugs on different projects through Bugzilla & Bugsahoy of Mozilla. At last, he introduced himself and discussed about his contribution to various Open Source projects.

During the session, we meet lot of buddies who themselves created addon and got huge responses. Even the beginners stood stunning and leave no stone unturned to prove them. A lot of them modified their previously created borderify addon to do more stuff and advanced it.

So its already 5 PM , we move to a nearby restaurent for Lunch with organising team.


Before leaving Aligarh, we clicked a photograph 🙂


Thanks to organising team for inviting us . All arrangements were awesome .

Hope to meet soon 🙂


by championshuttler (Shivam Singhal ) at March 01, 2018 06:34 PM

Vipul Gupta

Customise Boot Logo [Xubuntu:Discover]

I for one have been criticised, pointed out and in some cases applauded countless times for my serious addiction to customize whatever environment that I use for my system. I am sure many people also get it, just like me. If you love something with all your heart, you often feel the need to make it your own. That’s what this blog post is all about. I would like to write more than what one blog post could suffice. So just look for the tags rediscover to find more blog post like this.

This is the boring boot screen when you power up. Before login, of course.


The default Xubuntu boot logo

The method is pretty straightforward and very easy to follow. 

  1. Open Thunar/Nautilus or any file explorer you use in your distribution on root since we will be editing system files here.
  2. Navigate to /usr/share/themes or /usr/share/Plymouth/themes/Xubuntu-logo
  3. There you would find files named as logo.png and logo_16bit.png . Replace these files with the image you want as your boot logo. Convert the image files to the .png format and take care to rename the image exactly as “logo.png” and “logo_16bit.png” for them to take effect.
  4. Now run this command in the terminal to re-generate an initramfs image.
    sudo update-initramfs -u
  5. Reboot to see the change.

To the emoji, I obsess the most about

That’s it for this part, live in the mix.

by Vipul Gupta at March 01, 2018 06:12 PM

Sanyam Khurana (CuriousLearner)

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

Pradhvan Bisht

Then you just work on weekly sprints on a dedicated time hours on achieving those short term goals…

Then you just work on weekly sprints on a dedicated time hours on achieving those short term goals you made in the starting. Later when you submit those clock timings to Mbuf you usually get some analytical overview of your week . Something similar to this

It’s nothing magical that helps you become everything you want but it certainly helps you being consistent on the tasks you choose.

by PradhvanBisht at February 28, 2018 05:32 PM

February 26, 2018

Shashank Kumar

MozAMU - My first talk for Mozilla and first visit to Aligarh Muslim University - 24th February 2018

Core team in front of standee

AMU at PyCon India 2017 - Where MozAMU idea was pitched

During PyCon India 2017, folks from Aligarh Muslim University visited for their first time in PyCon. Rahul Jha, who has been a GSoC 2017 student for Coala came with some of his friends. Sanyam and I were the core organizers and looking into the Open Spaces when we met Rahul and team. Rahul, being an Open Source contributor already needed help building a community in his own college. For this we all went to a separate room for an Open Spaces on How to nurture foss communities in colleges and Sanyam took the charge of sharing his experiences and trying to find out what troubles folks were facing in order to build the community. It went on for like a couple of hours and AMU folks showed interest in hosting Sanyam for a session on Open Source Contribution. After pitching this idea Rahul and team started doing meetups in their college to share about Git, Linux and more which are essentials in order for someone to begin with their contributions.

How to nurture foss communities in colleges - Open Spaces during PyCon India 2017

Planning MozAMU and Trip to Aligarh

Months after when AMU folks were successfully doing meetups on Open Source technologies Sanyam being a Mozilla Representative decided to free one of his weekends (24th February 2018) in order to give a session on How do I start contributing to Open Source? and showcase various ways one can contribute to Mozilla and other Open Source projects. I got roped in for a mini session on building addons using Web Extensions API and contributing to Firefox afterward. Shivam Singhal, who is another of Sanyam's mentee planned to help me out during my session by solving problems that may arise on a participants system while live demo. Since none of us had been to Aligarh before, we took help from Omair Khan an ex-AMU student currently pursuring his bachelor's from Jamia Millia Islamia University, Delhi, and an open source enthusiast.

On our way to Aligarh Muslim University

Sanyam Khurana in pro-speaker mode

This is the first time I've witnessed Sanyam giving a talk on Open Source although he has been doing this for a couple of years now in colleges and other Mozilla events. He began with an interactive session with the audience in order to get a sense of what problems they were facing and which technology is widely used by them. He skipped his own introduction after everyone was finished for a specific reason for the end of the session and began explaining Why you should contribute to FOSS with the help of slides he curated. After a while when most of the participants came to a conclusion the reasons became more clear for everyone. This is where the session got interesting. By this time everyone has understood the importance of FOSS and how it can affect their career also.

Mozilla Rep Sanyam Khurana

My first talk for Mozilla on Web Extension or Browser Extension

I've been very active in Open Source Communities for the past couple of years now and have given several talks and workshops since I started. It's always better to write a blog or give a talk on the technology which one is working on in order to make the concept more clear. I recently started learning how web extension works and contributing to AMO. So, given this opportunity, I started working on slides for the session. From my experience, I wanted to focus more towards the lifecycle of addons as they are installed and run on the browser. I used the first extension tutorial provided by MDN and spread the contents so that to make everyone understand what each of its elements were doing. As the addon began to take shape in the live demo I instantly took the chance of interacting with participants and converging their thoughts on its lifecycle. Sanyam and Shivam helped me along the way to sort out the problems individuals were having and at the end of it all we asked everyone to make something creative out of the API.

Me during my session

Concluding with How do I start contributing to Open Source?

After a while when everyone was comfortable with the concept of FOSS, Sanyam took the last session on How do I start contributing to Open Source?. Finally, he spoke more about himself revealing that he's just like everyone else and a part of the community. He then elaborated on all the basics knowledge one needs and etiquette one should maintain while communicating online with other contributors. Most of the beginners get overwhelmed by the huge codebase and the first step seems hard to them in this case. Sanyam then explained what are the ways one can begin with reading code and collaboration. He then showcased OpenHatch Training Missions which can help beginners kickstart working with version control system. Open Hatch projects which folks can use to find issues to work on. He then showed how one can contribute to Mozilla by using the well know What can I do for Mozilla? website and Bugs Ahoy. The session concluded with one last picture and networking session.

Networking Session

Lunch and Goodbyes

After the enriching and exhausting day of sessions, the core volunteer team headed to grab few bites to eat. There we shared our previous experiences and discussed personal projects. AMU folks have created an amazing community for themselves and thrive with every interaction they make during such sessions. I would like to give a shoutout again to the amazing people of AMU and I hope we would see each other again for future collaborations. From MozAMU I got to be a part of yet another enthusiastic bunch and I thank everyone at AMU for that.

Last picture of the day

Checkout some more photos from the day. Cheers!

by Shashank Kumar at February 26, 2018 06:30 PM

February 25, 2018

Kshithij Iyer

Sunday morning brunch. #spinachsandwich (at Pune city)

Sunday morning brunch.
#spinachsandwich (at Pune city)

February 25, 2018 07:55 AM

February 22, 2018

Kshithij Iyer

Why are you still awake?

Now coffee is a shallow sleeper. So often late at night, he used to get up and check social media. Coffee wakes up and comes online at 12 in the night. Chai sees it and calls him.
Chai: Why are you still awake? Is there any problem? Are you still worried about your job?
Coffee: No no!
Chai: Then what is going on in your head?
Coffee: Nothing!
Chai: Are you sure?
Coffee: Yes! My love, there were 2 cats fighting outside my room so I woke up to them.
Chai: Okay! Now to go sleep, Goodnight.
Coffee: Goodnight, love you.
Chai: Love you too. Now go to sleep.
Coffee: Okay!
Chai disconnects the phone call. Coffee smiles after he plugs his phone back to charging and goes to sleep.

February 22, 2018 02:00 PM

Take me back to those days of open roads, two wheels and a free...

Take me back to those days of open roads, two wheels and a free soul.
#TBT #SoloRoadTrip #VadodaraPune #NH48 #Lifeat90Kmph (at Thane)

February 22, 2018 02:48 AM

February 21, 2018

Kshithij Iyer

Never insult a student

My Dearest Prof: You have never done any serious coding in life. You don't know how to write code. You are useless, you'll never get a job.
Back then I used to get sad but nowadays.
Me (in my head): If I print every single line of code I have written till now and spiral bind it and throw it on your face then you'll surely get a dislocated jaw! :p

February 21, 2018 06:48 AM

February 19, 2018

Bhavin Gandhi

Contributing to diceware tool or 2018’s first Pull Request

You must have heard about diceware passwords before. If not, then the following image explains about it. It’s all about length of the password!   I came across this tool called diceware which helps to generate these kind of passwords…

The post Contributing to diceware tool or 2018’s first Pull Request appeared first on GeekSocket.

by Bhavin Gandhi at February 19, 2018 07:14 PM

February 17, 2018

Kshithij Iyer

4 steps of learning to make a Dosa: 1) On a Saturday night you...

4 steps of learning to make a Dosa:
1) On a Saturday night you feel homesick so you decide to make uttapa and have it for dinner. But the uttapa screws up, you come to a conclusion that Indian is not something you’ll ever learn to Cook. So you have whatever you made.
2) Now the problem starts, you are still hungry. So you decide to mix a new set of batter again. But this time you say chuck it and you mix the MTR ready to eat batter based on your instinct instead of going by the book.
3) Now you have a batter in a glass and not in a bowl like last time as your bowl has to be washed as you thew it in the sink after the first attempt. So you put some batter in the hot pan. But then you realize let’s slowly make it this time. Let’s start small. So you make a small Dosa first. Then you slowly keep on increasing the size.
4) Now with half a glass of batter left, you are now ready to take the risk. So you throw it all in like you did in poker one day.
And volla success! 😂😂
#Dosa #NailedIt #PakkaMadju #southindianfood

February 17, 2018 03:02 PM

February 16, 2018

Kshithij Iyer

The usual interviews I give!

Interviewer: Hi! How are you?
Me (in my head): Honestly I don't know, how I am! I have been giving interviews for the past few months. And every time I give an interview I feel threatened by the presence of an Interviewer as he asks me questions about something on which he/she is working for years and then he/she bullies me by saying that I didn't study well. And then asks me to write code on paper, seriously what good is code on paper? If paper could do the thing then why would someone invent computers in the first place? And honestly, how can you guys decide if someone is fit for the job or not in an hour or two? What a nonsensical system is this? Forget it I am going home.
Me(And I manage to speak.): Fine sir/madam!

February 16, 2018 02:00 PM

"Sometimes you just have to see as far as the light from your headlight goes and just ride in the..."

“Sometimes you just have to see as far as the light from your headlight goes and just ride in the dark with the hope that the roads on which you are riding will take you somewhere.”

- Kshithij Iyer

February 16, 2018 05:25 AM

February 15, 2018

Ashwani Kumar Gupta

How to use Flask-SQLAlchemy with Hasura PostgreSQL service

Hello, today I will will introduce you to Hasura. Hasura provides a kubernetes based PaaS and a PostreSQL based BaaS. You can get started with deploying your apps live with just a git push. Everything on Hasura runs as microservices on the cluster.

What is important for us today is the PostgreSQL service (called postgres). We will see how to use Flask-SQLAlchemy extension to Flask microframework on Hasura PostgreSQL service. SQLAlchemy is a ORM (Object Relational Mapper) written in Python. Flask-SQLAlchemy is an extension for Flask to add support for SQLAlchemy to your application. Although Hasura provides Data service with which you can operate on the database but you can also use a database ORM like SQLAlchemy with it to model your data within your python code.

Setup a Hasura Project

Let’s setup our flask application on Hasura, we will be using hello-python-flask from Hausra Hub

$ hasura quickstart hello-python-flask --type=free

Running the above command will:
– clone the project from hub
– create a free hasura cluster for your project and
– add your public SSH key (if you don’t have one, it’s time to create one) to the cluster so that you can access it.

Now that you have your everything setup, time to deploy it live, run the following.

$ cd hello-python-flask
$ git add . & git commit -m "Initial commit"
$ git push hasura master

Run the following to open the application on your browser

$ hasura microservices open app

You will see a Hello World application live. The code for that lies in microservices/app/src directory. You can make changes there and do a git push hasura master to see your changes take effect. The project hello-python-flask comes with two tables already, we will get rid of those first.

$ hasura migration db-reset
$ rm migrations/*.yaml migrations/*.sql

Setup environment variables

To connect to the PostgreSQL service running inside the cluster, you will need the username, password, database name and port number. Hasura provides a nice interface to store and access secrets such as passwords, access tokens via hasura secrets. Inside your application run hasura secrets ls to see the available secrets.

$ hasura secrets ls
• Fetching secrets...

As you can see there is postgres.user and postgres.password, these are the username and password for your postgres database. Among other variables, the hostname is postgres-{name-of-your-cluster}, the port is always 5432 for postgres and the name of the database is hasuradb. Although we can hardcode it in our application code but it’s not a good practice as you will be changing it whenever you change your cluster and also if you host the code on a public repository, other people can get access to your credentials. This is why it’s best to use environment variables for this purpose. As Hasura cluster is essentially a kubernetes cluster, we will add few environment variables to our cluster by editing microservices/app/k8s.yaml. Add the following lines under your image‘s env values.

As you can see POSTGRES_USERNAME and POSTGRES_PASSWORD are fetching value from hasura secrets. Rest are self explanatory. Now we are ready to use SQLAlchemy inside our python code. Let’s push our changes to the cluster.

$ git add .
$ git commit -m "Add environment variables to access postgres service"
$ git push hasura master

Create models

Let’s create a users table. But before that, we have to connect our flask application to the database. Add the following in microservices/app/src/

import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://{username}:{password}@{hostname}:{port}/hasuradb'.format(

from src import server, models

So we will now create a user table with the following schema.


Create a new file microservices/app/src/ and add the following code. We will create our SQLAlchemy models inside this file.

from src import db

class User(db.Model):
 id = db.Column(db.Integer, primary_key=True, autoincrement=True)
 first_name = db.Column(db.String, nullable=False)
 last_name = db.Column(db.String, nullable=False)
 address = db.Column(db.String)
 city = db.Column(db.String)


Add dependencies to requirements.txt


We have added psycopg2 because Flask-SQLAlchemy doesn’t come with the database driver. Push your changes.

$ git add .
$ git commit -m "Add user table"
$ git push hasura master

There you go. You will now be able to see the table via api-console. Run hasura api-console to open the api console in your browser and head over to the DATA tab. You will be able to see the user table there, add the table. Now let’s edit to add some rows to our user table.

user1 = User(first_name='Peter', last_name='Parker', address='Forest Hills', city='New York')
user2 = User(first_name='John', last_name='Williams')

Push your changes and you will be able to see the rows added to the user table.

$ git add .
$ git commit -m "Add users to user table"
$ git push hasura master

Note that as we have set the id as autoincrement integer, everytime the app starts in your cluster, the two users above will get added again and again in your tables with different ids. You can add unique=True property to avoid that in the User class and will need to handle the errors for it when duplicate data is tried to insert.

That’s it, you can now use SQLAlchemy within your Flask application, wasn’t that easy? Comment if you liked it. See you in the next post. Thanks for reading 🙂

by Ashwani Gupta at February 15, 2018 03:14 PM

Kshithij Iyer

"You come up to the office and open up the file which has the reading links and you see..."

“You come up to the office and open up the file which has the reading links and you see “” and you start wondering if you still have the valentine’s day hangover from last night.”


Kshithij Iyer

February 15, 2018 04:14 AM

February 14, 2018

Kshithij Iyer

Go Away

Coffee: Please leave me because of me you'll have to listen to a lot of unpleasant words. Go away! Please go away!
Chai: No! I know you can't leave me. You can't live without me.
Chai hugs coffee. Coffee smiles and kisses chai on her forehead.

February 14, 2018 02:00 PM

February 13, 2018

Pradhvan Bisht

I am alive !

It’s been really long since I have written a blog so just wanted to return to land of the docs and say “Hello o/ , I am alive too”. Recently I have been trying to hit back the basics because being a self taught developer your don’t really learn in a traditional way , you just do! just do by goggling stuff and if you aren’t part of the any open source community or don’t have like minded people around you. You tend to give up easily as that was the case for me when I was starting out in my first year of engineering. So cut to the final semester of engineering , I still don’t know how to code properly even. No surprises here ! I can code though but at times I have to Google simple things too.So I don’t count that as progress.The reason for this i guess is my lack of consistency ,not following a well thought out path which leads to distractions and eventually giving up.

But for the times I have lost slacking around and being clueless I did get to be part of various awesome open source communities. So I am really thankful to that :-)

So what exactly I am doing these days to improve ? Well it’s simple I am hitting the basics to build a solid foundation(so I don’t have to Google silly stuff and don’t sound like a total amature in interviews ) plus I am really trying to be consistent on projects. I guess these two things will certainly help me in the long run.For this I have chosen Operation Blue Moon where I decide certain tasks for a week and dedicate 2 hours each day in certain task and clock time. Later with the help mbuf I get the whole statistical idea of my week. Besides that I am trying to stay active with blogging and so will at least update a weekly blog.

This week I will be working on Operation Blue Moon and in the free time would be manging an issue i am assigned in coala-bears repository.

by PradhvanBisht at February 13, 2018 11:28 AM

Kshithij Iyer

Love you

Love one of the most confusing four-letter word in the dictionary. Love is something everyone wants but no one wants to give. Love is something which can make you do anything and everything in life. But what is love? There could be many answers to this question, many perceptions to a single object, multiple definitions to a single word. So I’ll just tell you what I feel love is,

“Love is when someone puts you above anything and everything, Love is when someone’s pain becomes yours, Love is when someone stays awake because you are awake, Love is when someone is always ready to take the bullets which come to you.”

I had no shortage of love all my life. First Mummy and Papa, Papa still doesn’t know how to express it and Mummy cries when she can’t express it in words. Then came Lucy, She always expressed it by running behind me, crying when I was gone to the hostel and by bringing me her red ball. Then a few months ago she came into my life. Honestly speaking I had no expectations from her when she came into my life. Obviously, I had some nice lessons which I had learned not too far away in the past.

It all started with a comment on a post, which happened to be our stupid cupid. After years we found each other and started talking. Chai and Coffee sat down after so long and talked, Oh yes! The imaginary conversations are real and I confess I added a bit of whipped cream to my coffee some ginger to her chai. Don’t worry I’ll still put our conversations in a cute manner for you to read. Let’s come back to what we were talking, so a few months back I was seeing my life getting ripped apart. And my so-called love had left me which was not really a big problem for me as I had even bigger problems back then and honestly speaking I had no expectations from her cause even after a year she had failed to understand me. Anyway best of luck to her, I just hope she finds all the success she wants and needs. I am glad she left me and I found love. So I was lost, confused and depressed from life. Now in this situation, most people go for pilgrimage that’s what I did. I took my bike and went home. Yes! The trip was made because I wanted to get to see things clearly. But yes it was an expensive one as I got a bit of scolding but yes it did help me see things clearly and I was grounded as I reached home. So I continued talking to her. And she was amazing, as we started talking to each other we realize we were different but still the same. I liked talking to her as she was something in my life which was not complicated, she was sweet, simple and sexy. So we enjoyed talking. But after a while, I knew she was more than a friend to me. But I didn’t want to another mistake or like she says it a lesson in my life. So I stayed in the friend zone and kept on talking. And on 16th November we both broke emotionally and said each other what we felt for each other. The comic part of this was that she said me everything other than those three words which I had to say first as I was the one with a messed-up life. Anyway, we happened and the cycle started again. This time I had become more like a rock as I knew that even if she leaves me nothing would happen to me. But she turned out to be the water jet which could cut through me. The first few days were more like a cricket match where she was throwing bouncers at me but this guy with a Virat Kholi haircut hit sixes on every ball she threw. And it went on for quite long and I was 200 and not out. So the innings changed and I had the ball in my court or should I say hand as we are playing cricket whatever so I threw the first bouncer on her and she hit the ball so hard that it went out of the stadium. Yes! She was Sachin Tendulkar. And I was all hers and she was all mine. We used to talk all night but still, she woke me up so that I didn’t sleep past my lunch as well. She was the perfect girlfriend with whom you could talk all night and she would wake you up like a loving wife. Okay! A quick reality check, I still have a super messed-up life but it’s a lot easy when you have someone by you holding your hand, covering your back at all times. A lot happened between us and if I would write everything in this post then this post would go forever and ever. But the bottom line was that I had finally found love and I had something to do on this Valentine’s Day. Wait a second you don’t need to have aids to celebrate aids day similarly you don’t need to have a girlfriend to celebrate Valentine’s day.

Anyway, A Happy Valentine’s Day to all, may everyone find true love.


I had posted this image long back on Facebook and my family had asked me it for was whom. I had no answer back then but as of now, I can say now this is for someone and I’ll reveal the name at the right time and soon. Till then

Love you Mummy, Papa, Lucy, and Chai :-*

February 13, 2018 08:19 AM

February 12, 2018

Shashank Kumar

What Pelican quickstart actually do and how it does that?

I chose to use Pelican to build my personal blog out of my love for Python. It took me two days to go through the tutorials given by Official Pelican documentation and setup Shanky's Brainchild with the help of the Flex theme created by Alexandre Vicenzi. Pelican contributors have made sure you have a quick and easy beginning in order to get down to business asap and evolve as per your needs. For this very purpose, we use pelican-quickstart.

In this blog, I'll go through the process after running the command pelican-quickstart without any arguments inside a virtual environment to see what goes down in the background. Later in the blog, I'll figure out how everything works. You can also move directly to Demystifying pelican-quickstart.

Prerequisites and Warm-Up

Before we start, make sure to have a virtual environment setup, use either venv or pipenv. Install the protagonist package pelican. Optionally, if one is familiar with Markdown like me and want to create website/blog using it, install Markdown package.

Running pelican-quickstart

After setting up the virtual environment and activated it, creating a new folder for our website say justanotherblog, running pelican-quickstart from inside the folder, a few questions will be asked by Pelican. As a result of answering all of the successfully, following directory structure can be seen which is in turn created by pelican-quickstart.


Let's look into the question that were asked and how they affect our blog.

Where do you want to create your new web site? [.]

Here, it is asked about the location of the website. The default value is . or the location from where the pelican-quickstart has been called and is denoted by [.]. If one does not want to change the location can simply enter without inputting anything. You can also specify a location like /home/username/justanotherblog.

Resultant - Location specified here will be the parent location for all the Pelican files.

What will be the title of this web site?

When this question is asked, title of the website should be provided. Failure in doing so or just hitting enter here would immediately prompt You must enter something and the question will be asked again.

Resultant - Title specified here will be store inside as SITENAME = 'Just Another Blog'.

Who will be the author of this web site?

When this question is asked, author name should be provided. And just like before, failure in doing so or just hitting enter here would immediately prompt You must enter something and the question will be asked again.

Resultant - Name specified here will be saved inside as AUTHOR = 'Shashank Kumar'

What will be the default language of this web site? [en]

Whichever language you would like to use to write the content of your blog should be stated here. Language should be in form of 2 letters code and failure in doing so will prompt You must enter a 2 letters long string with the question asked again. You can look up 2 letter code for languages in this ISO 639.1 guide. Default language is English - en as denoted by [en].

Resultant - The choosen language will be stored inside as DEFAULT_LANG = 'en'.

Do you want to specify a URL prefix? e.g., (Y/n)

Here, you have to state whether or not you want to use a URL prefix or simply host your blog. The default value is Y (y or Yes) or one can also choose n (N or No). Failure in doing to will prompt You must answer 'yes' or 'no' and the question will be asked again.

Resultant - If chosen Y, a subsequent question will be asked to state the URL. If chosen n, SITEURL = '' will be saved inside which can be changed later.

What is your URL prefix? (see above example; no trailing slash)

If the previous question was answered with a Y, this question will be asked. Now is the time to state the URL you are planning to host the blog. Although we cannot enter while providing a URL by simply entering (You must enter something will be prompted while doing os), there's no failure to this step as the URL is not validated.

Resultant - The stated URL will be saved inside as SITEURL = 'URL stated'.

Do you want to enable article pagination? (Y/n)

Pagination is the property of a blog to provide part of items or contents in one page and shift the rest to susequest pages with proper numering in order to allow easy access. Allowing pagination in Pelican will help showcase blogs on the homepage spreading across pages. The default value is Y (y or Yes) or one can also choose n (N or No) to disable pagination.

Resultant - If chosen Y, a subsequent question will be asked about the no of articles or blogs per page. If chosen N, this will be saved as DEFAULT_PAGINATION = False inside

How many articles per page do you want? [10]

If the previous question was answered with a Y, this question will be asked. This is where the number of articles or blogs per page is declared. The default number is 10. There's no failure to this step as number is not validated.

Resultant - DEFAULT_PAGINATION = 10 will be stored inside

What is your time zone? [Europe/Paris]

Time zones are important in order to properly state the date and time of creation of blogs and also while generating feeds. The default time zone is set to Europe/Paris which can be changed by providing another one. Look into this wikipedia guide for the complete list.

Resultant - TIMEZONE = 'Europe/Paris' will be saved inside

Do you want to generate a Fabfile/Makefile to automate generation and publishing? (Y/n) and Makefile are used to manage development server, publishing website to gh-pages or via ssh and similar feature. The default answer to this is Y (y or Yes), after which Pelican will ask few questions to create the proper configuration for and Makefile. If n (N or No) is entered, generation of and Makefile will be skipped.

Resultant - If Y is selected, configuration for generating and Makefile will be asked after the next question.

Do you want an auto-reload & simpleHTTP script to assist with theme and site development? (Y/n)

Auto-reload and simpleHTTP scripts are very helpful while in development as they facilitate local server management and auto-reload whenever the content of the website is changed. This step is specifically to ask whether file should be created with command line scripts in order to provide auto-reload and simpleHTTP facilities.

Resultant - If Y is selected, will be created with proper configurations.

The reason why before asking for and Makefile configurations, we are asked about is because Makefile can also use to facilitate local server management.

Now, let's look into options that will come up if Y is chosen for generating Fabfile/Makefile.

Do you want to upload your website using FTP? (y/N)

If files of this website is to be uploaded to the server using FTP connection this option can be useful. The default is n (N or No).

Resultant - n (N or No) will leave placeholders inside and Makefile to be filled later. If Y (y or Yes) is chosen, 3 subsequest questions will be asked related to the FTP configuration.

  • What is the hostname of your FTP server? [localhost]
  • What is your username on that server? [anonymous]
  • Where do you want to put your web site on that server? [/]

Each of the above questions have default value which can be changed later from inside the and Makefile.

Do you want to upload your website using SSH? (y/N)

Another option one can use to upload their files is SSH, state whether or not you want to configure SSH here.

Resultant - n (N or No) will leave placeholders inside and Makefile to be filled later. If Y (y or Yes) is chosen, 4 subsequest questions will be asked related to the SSH configuration.

  • What is the hostname of your SSH server? [localhost]
  • What is the port of your SSH server? [22]
  • What is your username on that server? [root]
  • Where do you want to put your web site on that server? [/var/www]

Each of the above questions have default value which can be changed later from inside the and Makefile.

Do you want to upload your website using Dropbox? (y/N)

Another helpful option is using Dropbox to upload the files, this is where you state whether or not you would like to configure it.

Resultant - n (N or No) will leave placeholders inside and Makefile to be filled later. If Y (y or Yes) is chosen, only 1 subsequest question will be asked related to the Dropbox configuration.

  • Where is your Dropbox directory? [~/Dropbox/Public/]

Above questions have default value which can be changed later from inside the and Makefile.

Do you want to upload your website using S3? (y/N)

If you have a Amazon S3 web service configured, state y to use the option to provide your configuration details.

Resultant - n (N or No) will leave placeholders inside and Makefile to be filled later. If Y (y or Yes) is chosen, only 1 subsequest question will be asked related to the S3 configuration.

  • What is the name of your S3 bucket? [my_s3_bucket]

Above questions have default value which can be changed later from inside the and Makefile.

Do you want to upload your website using Rackspace Cloud Files? (y/N)

Rackspace Cloud Files users can use the Official API to upload files of the website, by enabling this option the API can be configured.

Resultant - n (N or No) will leave placeholders inside and Makefile to be filled later. If Y (y or Yes) is chosen, 3 subsequest questions will be asked related to the Rackspace Cloud Files configuration.

  • What is your Rackspace Cloud username? [my_rackspace_username]
  • What is your Rackspace Cloud API key? [my_rackspace_api_key]
  • What is the name of your Cloud Files container? [my_cloudfiles_container]

Each of the above questions have default value which can be changed later from inside the and Makefile.

Do you want to upload your website using GitHub Pages? (y/N)

GitHub Pages are also supported by and Makefile, entering y will about more details for it's configuration.

Resultant - n (N or No) will leave placeholders inside and Makefile to be filled later. If Y (y or Yes) is chosen, only 1 subsequest question will be asked related to the GitHub Pages configuration.

  • Is this your personal page ( (y/N)

Above questions have default value which can be changed later from inside the and Makefile.

Demystifying pelican-quickstart

The entire process ends up in the desired project structure as stated above. Now let's look into the other side of the action Pelican contributors have put a lot of efforts in.

Handling Command-line Arguments

pelican-quickstart used argparse to handle command-line arguments which user can provide at the very beginning. By running pelican-quickstart -h it's more clear which arguments one can provide.

  • PATH - Use -p path/to/folder to provide the desirable path for website
  • title - Use -t Website-Title to provide the title
  • author - Use -a Author-Name to provide the name of author
  • lang - Use -l en with 2 letter language code for default language

Once the program is executed, an ArgumentParser object is created which can handle above optional arguments and store it in a dict object. The values of this dict can be checked further in the program to ask appropriate questions.

The Interrogation Process

pelican-quickstart has a dict named as CONF with default configurations which are modified with every question asked to the user.

CONF = {
    'pelican': 'pelican',
    'pelicanopts': '',
    'basedir': os.curdir,
    'ftp_host': 'localhost',
    'ftp_user': 'anonymous',
    'ftp_target_dir': '/',
    'ssh_host': 'localhost',
    'ssh_port': 22,
    'ssh_user': 'root',
    'ssh_target_dir': '/var/www',
    's3_bucket': 'my_s3_bucket',
    'cloudfiles_username': 'my_rackspace_username',
    'cloudfiles_api_key': 'my_rackspace_api_key',
    'cloudfiles_container': 'my_cloudfiles_container',
    'dropbox_dir': '~/Dropbox/Public/',
    'github_pages_branch': _GITHUB_PAGES_BRANCHES['project'],
    'default_pagination': 10,
    'siteurl': '',
    'lang': _DEFAULT_LANGUAGE,
    'timezone': _DEFAULT_TIMEZONE

There are 3 variables used inside CONF.

  • _GITHUB_PAGES_BRANCHES - It's a dict which contains local and remote branch information.

        'personal': 'master',
        'project': 'gh-pages'
  • _DEFAULT_LANGUAGE - locale is used to access the user's default language from their local machine. It's set to English by default or in case the local machine doesn't have a default language.

  • _DEFAULT_TIMEZONE - tzlocal package is used to figure out the local timezone of user's machine. It's set to Europe/Paris by default or in case of failure in fetching local timezone.

Cross Version Compatibility

pelican-quickstart is a great example of how a Python program can be made compatible with both Python 2 and 3. For this purpose future, codecs and six packages are used.

  • six is compatible with both Python 2 and 3 and helps in figuring out which of the functions should be used if either of the versions is encountered. Once such instance is when we need to figure out whether to use raw_input() or input(). A boolean six.PY3 is used which results True if the version is Python 3 and False otherwise. Hence the appropriate function can be returned as seen below.

    def _input_compat(prompt):
        if six.PY3:
            r = input(prompt)
            r = raw_input(prompt)
        return r
  • future is used to bring support of print() using print_function and provide UTF-8 support to print function using unicode_literals. Or as Python lovers say, bringing future to earlier versions of Python.

  • codecs is also compatible with both Python 2 and 3 and provides support for file management. Mostly is used by pelican-quickstart to facilitate the compatibility.

    with['basedir'], ''), 'w', 'utf-8') as fd:
Creating files and folders out of thin air

To finish of, all pelican-quickstart has to do is create files and folders considering all the configurations it has taken from the user. To create folders, os.makedirs is used from os package is used. Creating folders is rather a simple process as compared to how files are generated using configurations provided.

Jinja2 plays a major role in facilitating the smooth transition of configurations to Python, .sh and Makefile. Jinja Templates for Makefile,,,, and are already stored within pelican-quickstart. Now the task of is to open the template, use CONF dict to find out all the important configuration and replace the value with the placeholders named with similar key as in CONF. For example, contains AUTHOR = {{author}} where author is replaced with the value of author in CONF and a new file is created after all the replacements.

These are most of the content I understood by reading the source of pelican-quickstart and looking into the repository itself. In case you find any error in my blog feel free to comment down below or reach out to me and help out in making this blog a little better. Thank you for your patience.

by Shashank Kumar at February 12, 2018 06:30 PM

Kshithij Iyer

You are perfect for me!

Coffee: I am a complete mess. Why do you love me? What did you see in me?
Chai: I guess I just like your mess!
(Coffee is left speechless scratching his head.)

February 12, 2018 05:30 PM

February 10, 2018

Vipul Gupta

Django Party #Investopad_HKV

In the bright sunny days of February, I walked across the Indian Institute of Technology, Delhi (IIT-D), towards Investopad, Hauz Khas to attend a meetup that I was looking forward to for a very long time, ever since I saw it on the meetup page. I was both nervous and full of excitement with the prospect of attending my first Django party organized by Pydelhi and Pyladies Delhi together. With an aim to grasp what Django is and how to truly harness its power in the field of web development.

I reached just in time as the introductions were wrapping up of all attendees facilitated by Anuvrat Parashar and Sanyam Khurana, to set the mood and make everybody familiar with other people around. After all, meetups are only good if you actually meet someone new. There were about 70 people, settled in cozy co-working space sitting around tables, sofas comprising of beginners, professionals and enthusiasts.


When the basic pre-requisites for the talk were completed, the first talk began. It was about basics and introduction to the open-source web framework, Django. Django is written solely in Python, released in 2005, by the Django Software Foundation (DSF). It drew large crowds of Pythonistas from all communities and ways of life. Django has gained a huge user-base and a lot of popularity over the years for being “The web framework for perfectionists with deadlines” Gaurav Chawla took that talk, named Django 101.

It was a very interesting, informative talk as he went over complex details like the Django request-response cycle, the command list, directory structure with the poise of his own. Also how Django handles the requests and renders the data onto the templates was one of the new things I learned and understood from the meetup. The talk came to an end with hello world showing up to prove that Django development server was running on our very own computers successfully. Basic troubleshooting was going all around and as more experienced developers were helping out the beginners. The talk ended on with explaining more about the administrator panel and various other technicalities involved in the Django Framework.

Refreshments are just a way to get to interact with people about their work experience, their findings, and best practices of problem-solving. After the refreshments, the next talk began promptly after it. Next up, we had a talk on Django custom middleware by Priyal Trivedi. Middlewares are light, low-level “plugin” system for globally altering Django’s input or output according to the official documentation. We went over the slides prepared by Priyal Trivedi, understanding and grasping the concept of building and deploying our own middlewares. Middlewares in Django works in a set order as we mention them in the middlewares in or use specific middlewares in applications we like to use and deploy, which was seemed both very flexible and easy to work and experiment with.

The meetup ended on a high note with lightning talks on Fish-Terminal, Decorators in Python and much more. Like every meetup, a hiring and pitching session was on the schedule as well for people who either want to hire or get hired by listing their requirements/resume. Well, that was all for this meetup. Till then, live in the mix. Below are some clicks of the meetup and the surrounding that I liked.

Click to view slideshow.



by Vipul Gupta at February 10, 2018 06:22 PM

February 08, 2018


Multi-tasking is a myth!

Yes, you heard it right. Multitasking is a myth and it is a true fact. It don't even exist in computers. On mailing list of #dgplug channel, kushal shared a very interesting video on scaling yourself for summer trainees like me,


In the above, video Scott Hanselman - Principal Program Manager, Microsoft sharing his experience and advice on how to scale yourself (not weigh) but to improve your daily jobs/work efficiently.

He said, "Multitasking is a myth, ..., that is a computer science fact... you can't it's biologically impossible, ... , the best multitasking you can do is while sleep with the problem. Let the background threads do that work for you while you sleep."

So, is multitasking is really a myth.

Well, not exactly.

Multitasking is the ability of someone capable of doing more than one job at once which is not physically, or computationally possible. You can't do perform two different action using same hand, but you can using two. What I mean, even computer cores uses threads to do multitasking which is not exactly multitasking because, two different threads are doing different things and not single entity doing multiple job.

So, how these operating system perform multitasking if it don't even exists? Why is your operating system called multitasking operating system.

Here's why...

They can schedule multiple jobs efficient enough, difficult for user to detect. Scheduling is one of the primary functionality of any operating system. What really happens, is operating system schedule all the jobs, depending on the algorithm or method used, to select one program for cpu to process and shift to another. Each program is given certain amount of CPU time but no 2 programs get CPU time simultaneously.

Multitasking == Scheduling

So if you see someone saying he can multi-task, don't believe him. And if you yourself believe you can multi-task, think about it again. People add "Multitasking" as a strength in their resume, which is not possible. What they should write is, "Can schedule my job well enough to handle multiple jobs at once".

Note: How I know this, I too used to think that multitasking is there and failed miserably trying to achieve it :p.

Till Then,

To Infinity and Beyond!

by Abstract Learner ( at February 08, 2018 06:52 PM

Master the what?

During my mid term examinations of fifth semester, I started to work on LibreBoot.  And from nowhere I got an email stating about a great competition named, master the mainframe.  Since my field of interest is networking and system administrative stuff, I registered for it, although I didn't know a thing about mainframe and I never even considered IBM before that. But still I thought I should give it a try and see what happens.  So I did that.

Master the Mainframe!

It is a competition organised by Angel Hack and sponsored by IBM so that all beginners or say students who are unknown to Mainframes can be a part of it.  It is beginner level competition aka hackathon, where we have to complete few challenges and few top contenders gets great prizes like Amazon Gift Cards, MasterCard or Visa Gift Card or HTC vive.

All in all, the competition has a great structure, easy to start and great prizes to win.  And the best part is the whole competition is divided into three parts to help the contestants get familiar with the system slowly and easily and prizes are distributed within all of these parts i.e. part-1 provides you Amazon Gift Cards and so on in other parts.

Part-1 [Sep 15/17, 2017]

Part-1 comprises of only introductory part and is meant to familiarize you to IBM z/OS, mainframes and Unix environment.  Since I know a little about Unix environments, ssh and remote connection, so they were ease to grasp.  And I completed part-1 within 2 - hours, although the website claim it to be solved within 1-hour, but at first I messed so had to start it over.


Part-2 has 15 challenges which needs to be completed to complete part-2.  The first challenge continues from the last challenge in part-1, i.e. primary commands and line commands and challenge is to use them in part-2 while it is read about them in part-1.

#1 [Sep 18, 2017]

The first challenge was not really difficult and is meant to familiarize you with some primary and necessary line commands to be used in the editor.

#2 [Sep 21, 2017]

The Second Challenge is basically to introduce the data format z/OS work on i.e EBCDIC and ASCII.   The challenge was to change the hexadecimal value of few characters into other to change their ASCII and EBCDIC correspondant.

#3 [Sep 22, 2017]

The third challenge is to introduce the participant with the concept of Job Control Language(JCL) which is used by the z/OS as its job handler i.e. to manage and control job processing.  The task here is to correct the JCL syntax as JCL commands needs to be in upper case to be executed without errors.

#15 (December 09, 2017)

Note: This is the dormant period when I lost my consistency but never crossed this out of my to-do list. Sooner or Later I decided to complete it before the deadline. And then during the final examinations, I realized I should complete what I have started.


Part-3 of the Competition was the easiest for me in the whole competition because it involves knowledge of several other programming languages like C, Java, C++ (which luckily I had) rather than any mainframe specific programming language like JCL, COBOL. Part-1 was meant to get you familiar with the mainframe environment, Part-2 (most difficult) was meant to get you familiar with the mainframe tools and utilities required for part-3.
The trick over here is in the last challenge of Part-3, where we have to make a final product from the knowledge we have gained so far during the competition.

I made a simple application for a sugar, flour industry where details of each customer and supplier are fetched from a database stored in mainframe to a command-line based terminal. Due to lack of time (which I could have, if I had efficiently managed my time), I submitted this primitive (yet I am proud of it) as my final challenge to complete the competition on December 22, 2017.

Overall Experience

My overall experience for the IBM and Angel Hack collaborated competition Mater The Mainframe 2017 was amazing. In 3 months, I have learned so much about mainframes and using them. From someone, who don't know anything about mainframes, their working and application, to someone who not only know these concepts but can also work on mainframes.

I learned about terminal emulators (which was the first step to connect to the mainframe), SSH remote connection protocol (though I was aware of SSH earlier, but if I wasn't, I would be). I learned about the functionality of Mainframes, how they store and access data, how they automate the job to be processed on the mainframe. Learned about the system administrator job for a mainframe, how to debug JCL and COBOL programs, how to handle errors on a mainframe. And most of all, I learned about one great lesson, "Always complete what you have started" and "Scheduling your job".

What's next?

Getting aware of mainframe and laying my hands on it, I found an opportunity where I can use my recently acquired skill for some good stuff, Openmainframeproject and their summer internship programme. To know more about it, visit their website at

Note to myself: Took me a little while, Could be in top 200 participants for part2 and top Three in world part3. Better luck Next time, will be in top for next year.

by Abstract Learner ( at February 08, 2018 06:51 PM

Kshithij Iyer

So I decided to go with a bit of orange this time. #RideSafe

So I decided to go with a bit of orange this time.

February 08, 2018 12:37 PM

February 06, 2018

Kshithij Iyer

I can't express it!

Chai: I love you, but I just can't express it.
Coffee: I know, you don't have to! I can always see it in your eyes when you look at me. I just know what you want, need and think.
(Chai hugs Coffee.)

February 06, 2018 11:30 AM

"Knowledge Transfer: Watching YouTube Videos all day in office with your Boss’s permission."

“Knowledge Transfer:
Watching YouTube Videos all day in office with your Boss’s permission.”


Kshithij Iyer

February 06, 2018 10:37 AM

"Honestly, any dumb idiot can analyze data by running a bunch of stupid GUI tools but to understand..."

“Honestly, any dumb idiot can analyze data by running a bunch of stupid GUI tools but to understand how it is to be done and what can help you make money is what is called “DATA ANALYTICS”.”


Kshithij Iyer

February 06, 2018 09:26 AM

February 02, 2018

Shashank Kumar

Migrating data between different machines with scp

This blog deals with beginner level commands and tools

Migrating data from one machine to another is easy if both of them are physically accessible and in a same room. Just use a pen drive and it becomes the safest way too. But what if both the machines are further apart? The solution to this problem is what we are going to discuss in this blog.

Let’s recall on of the most basic methods we use to copy file/folder from one location to another. Yes, it’s cp(copy). We use it as cp source destination to copy files from source to destination. In our case we might have source or destination as remote location instead of somewhere in the local machine itself. We’ll use a tool which will look syntactically similar to cp in the beginning know as scp(secure copy).

This way is recommended when you are trying to transfer the data only once from source to destination in a single pass. In order to transfer multiple files/directories and have a better session based control over your connection ftp is recommended.

What is scp?

scp is a tool on Linux which is used to copy files between remote machine or servers. scp uses ssh and utilizes it’s authenticity and security for file transfer which is a win-win for users. So, to use scp you need to setup ssh server on the remote machine.

Transferring files with password

If your remote machine or server has a user and password setup which you use to login then scp will work in the similar way.

scp /tmp/myfile username@

Here we’re trying to copy myfile from /tmp/ to the machine who’s IP address is You’ll also notice that before the IP address we mention username with which we want to access the remote machine. And finally we add : with the folder to which we want to copy our file. So, /tmp/myfile becomes source and username@ becomes destination.

When you run the above command you might be asked for a password. Simply enter the password and the copying will begin.

Transferring files with a key

To provide more security a key can be used in place of password using public key cryptography. You need to create a key pair using ssh first on the remote machine and then use it from the machine you are trying to access the remote machine as follows.

scp -i ./mykey.pem /tmp/myfile username@

You can see the change clearly as we have added -i flag to signify that we’ll be passing a key, followed by mykey.pem which the location of our key. For the first time you’ll be prompted to confirm the connection with a yes. Transfer will begin soon after that without any password.

scp is very easy to use tool for quick transfer without the fuzz of session management. In future blog post I’ll try to simplify the use of tcp as well. You’re free to use whichever suits you most and that my friend is the beauty of FOSS. Embrace it!

by Shashank Kumar at February 02, 2018 06:30 PM

Python Game Challenge by PyDelhi, November 2017

PyDelhi organized Python Game Challenge on 11th November, Saturday, 2017. Here’s what happened!

Fueled, Noida

Python is multi-talented friend of ours which can assist on all our crazy projects irrespective of the type. PyDelhi came up with the idea of showcasing an underrated potential of making games via competition. Participants were asked to follow only 2 rules for doing so

  • Game should be developed using Python
  • It should be developed on the venue during the given time and there begins the competition. We’ve recorded some of the game pitches by participants and gathered few words from them about their experiences below. And after the pitches we’ll announcing winners later in the blog.

Github Repository

Note from the teammates:

It started 1 Hour late, but the 1 Hour wait was worth it. It started by a talk on Open Source Data, exploring different data sources and Public APIs and how they can be used as a potent tool in a country like India with fewer Hardware resources for countering Air pollution which was at its worst in NCR in the ongoing week.

2 Hours into the challenge, we working on figuring out the design and the schema of the codebase to create the game. An hour later our chessboard was fully functional and we were coding on tasks like-

  • Moves validation
  • Checkmates
  • Knights and Pawn special cases

We finished the game 30 minutes before the end time and performed end to end testing and were the first team to finish and present the hack out of the total two who completed it.

Arrow Monster

Github Repository

Hit and Win

Github Repository

Note from the teammates:

The idea to make this game “thor” is to showcase how easy can it be to interact with physical computing hardware devices with Python programming language, we knew most of the participants if not everyone will be making software games so we decided to make “Thor” a miniature version of hammer game you must have seen/played in arcade game centers.

We made it using Force sensitive resistor as sensor a micro-controller and few LEDs, the score is sent to PC via serial port and a daemon handler written in Python parses that using PySerial library! The result was not perfect but we achieved proof of concept and we will surely work on improving it.

The event was really good and happening, we look forward to attend more such events/hackathons by PyDelhi. Initially we get less support/interests from volunteers who stopped by seeing us playing with circuits on a software based hackathon but when we demonstrated everyone was curious to learn more about our game which was our primary goal! The presentation experience was lukewarm and an area to work on, if it could be more interactive where every team is involved (apart from just judges) asking questions, suggesting improvements it’d be more fun. Cheers to PyDelhi for conducting such a successful event. :)


Github Repository

Note from the teammates:

It was great pleasure to be a part of this event. I entered in any competition out of my college for the first time and it was a great experience. I just a completion post on meetup group and the main purpose i came there was to see how other people make game. I on the other hand had no knowledge how these games are made.When the event started someone said game can be made only using python as well. I also entered the completion without any knowledge of anything and then i started discussing the game with my partner and started building the game at around 2. I had no knowledge of PyGame so we starting doing what we wanted to instead of making a perfect game.

We first made a base (box) using PyGame, just googled it. Then we started loading images of character, keys and bricks into the box, then wrote an algorithm so that character won’t go out of the box or does not go behind the bricks and a few other things in the remaining time.

But its not about what we did, its about what we learned. With no knowledge of any game library like PyGame we made a small game. Now, when i read a little about PyGame it’s completely clear what were we doing wrong. Overall it was a great experience and the organizers were great as well who gave goodies to participants as well.

Up Up Away

Github Repository

And the winners for Python Game Challenge are Chessmate, Arrow Monster and Hit and Win. Congratulations to all the participants who won and thank you all for coming to the PyDelhi meetup. Keep in touch on our meetup, twitter and facebook page for updates on upcoming events.

by Shashank Kumar at February 02, 2018 06:30 PM

PyDelhi + Ilugd + LinuxChixIndia Meetup, as it happened on 5th February 2017

SCIS,JNU, Pic Credit : Ankit Rai

While I was making my way to SCIS inside JNU all the memories from PyCon 2016 came back to me. SCIS is just opposite to the Convention Center where PyCon took place. That was my first ever conference and I met a lot of awesome people.

Speaking of meeting awesome people, there I was inside SCIS in a room filled with ‘Python Enthusiasts’. That room reminded me of my school but this room was equipped with gadgets to make a difference form a classroom. As usual I saw Akshay (qua non) controlling the audience and the fact that our second speaker is not at the venue yet. So, it began with him welcoming everyone.

TensorFlow by Mukul Malik and Rishabh Shukla

Left : Mukul Malik, Right : Rishab, Center: Jupyter, Pic Credit: Abhyuday Pratap

This talk takes a deep dive in the topic i.e. buzz-word of past couple of year ‘Machine Learning’, so to give you a context read Introduction To Machine Learning by Mukul. Rishab began by explaining the basics of how a neural network learn and reduces error by each iteration to subdue a goal. The role of TensorFlow here is to provide powerful modules to do complex computing efficiently like finding a needle in a haystack (figuratively).

As an example, let’s take a data set of English sentences and we have to distinguish each sentence for whether it’s a ‘Fact’ or not. To achieve this, we first perform some preprocessing on our data set to turn them into ML-friendly ‘Word Vectors’, there goes another blog by Mukul. Now we provide an understanding to our algorithm about ‘What is a fact ?’ with help of a database filled with values. Our algorithm begins with raw word vectors in the first iteration and results in a floating value in between ‘0’ (Not a Fact) or ‘1’ (Fact). With every iteration it reduces some ‘error’ in the actual value with the help of ‘bias’. Think of ‘error’ is what we determine at the end of each iteration and ‘bias’ we provide to the next iteration to correct that. Seems easy right ? It’s not. The code base is overwhelmingly complex at first, and like everything you’ll get comfortable with it by practice.

Bigger picture. A whole lot of conversation happens on the web which is open to everyone (like twitter) and most of which is erroneous remarks. Rishab began with this project to discriminate between what among them is a correct fact and what is just a humbug. And hence showing us a little of the mystical power ML holds.

Google Summer Of Code (and open source), An Interactive Session

Open Source Map, Pic Credit: Tushar Malik

After a quick snack break and networking Akshay gathered us together again to make the next session interactive. He began with asking everyone whether they know about GSOC, open source and have been a part of it by making contribution. Some people raised their hands and they had to speak about their experience. I began with recalling the names of organisations that have been a part of GSOC and many other names were added by experience people in the audience. Many of them have been contributing to Upstream repositories and not to forget Akshay who has been part of Kivy and also mentoring for GSOC under it since past 6 years. Akshay then explained how we can monitor for projects and apply to GSOC. Amit also shared his experience with GSOC and how he mentored for SymPy where he also improved one of their computational algorithms by making it more efficient. Sanyam opened up about his open source contribution to Mozilla and other communities and what mindset we should have while approaching such organisations.

Domain expanded and moved to platforms other than GSOC like Outreachy and RGSOC. Whole idea of contributing to an open source project is to expand our knowledge and obviously a better CV.

Using terminal on GOD MODE by Akash

Left: Anuvrat, Right-Podium: Akash, Pic Credit: Abhyuday Pratap

Next talk gave us a heads up about some of the time efficient tools. Beginning with the history of TTY which are nothing just the virtual consoles you can access by CTRL + F1 to F6 to the difference shell and terminal. Then he introduced us to TMUX or terminal multiplexer or some would say love at first sight. No matter how good we code sometimes it’s the tools we use that’s really important to increase efficiency and also bring swag to your screen. He briefly showed us how we can handle different TMUX sessions and split a window inside it with set of keys. And while we’re at it, a voice came from behind which I instantly recognised was of Anuvrat’s. Before moving to what he said, a monologue

I saw Anuvrat at the beginning of the day when he was sitting quietly giving no account of his presence to other. He’s one of those guys who’ll teach you something really interesting whenever you meet. So I thought of not disturbing him with a ‘Hi’, as I knew something amazing was happening inside his head which he’ll surely put in words at a better time.

So, he said there’s a tool known as MOSH which is a high latency tool to overcome speed and other issues with SSH. I started working with AWS EC2 a couple of weeks back and if you too have headache of a internet connection you can understand the pain of accessing your server instance with SSH. But in just 20 mins TMUX + MOSHgave me a GOD MODE to access my servers.

Hiring, Pitching and More

In this session people from audience are invited to pitch their products, company as employer and themselves as employee. This session also became interesting as I met an interesting man Achint and we had a brief talk about each other’s tech stacks.

Parting Words and PyDelhi Conference

PyDelhi Conference

This is the time where we thank everyone for being a part of the event and share links to connect with each other. Shivani representing Linux Chix India and Shyam, Indian Linux User Group Delhi spoke about respective communities and what content they are committed to provide in this pool of meetups. PyDelhi Conference became a part of conversation and people are invited to be a part of it by ‘Buying Tickets’ and ‘Submitting a Proposal’ for talk/workshop. I’ve also proposed a talk for ‘Telegram bot using Python’ which you can up-vote on the CFP website if you want me to show you how I used it by making ‘ViralSemesterBot’ for my college which is basically a notes/news management system build over a bot. After that I was asked to speak the final words for PyDelhi for which I was shocked as it was my first time. But before that, a monologue:

I never hesitate to speak given a chance. Exhibit A, I won a inter-school drama competition which I wrote in complete RAP and also performed a part in it. Exhibit B, I jumped off the stage with a guitar (literally) while performing a song. But this was different, I admired the work of the people in front of me. So I found out that I become nervous speaking in front of intelligent people. Maybe that’s why I can have a conversation with myself just fine, if you know what I mean. ;)

But I spoke whatever I could and pointed several times at PyDelhi website. It’s good to a have a experience like ‘the first time’, for 1) it’ll help in future and 2) ‘first’ happens only once. :D

PS : Every underlined word/sentence is sitting on a hyperlink. Please like and leave down comments, I would be happy to have a conversation.

by Shashank Kumar at February 02, 2018 06:30 PM

PyDelhi Meetup, The Tale Of 21st January

IIM Lucknow Noida Campus, Pic Courtesy : Ankit Rai

Just like a regular-alternate Saturday, 21st was planned to have PyDelhi meetup and this time, our host was IIM Lucknow Campus Noida. I reached at around 12 PM near the main gate with my friends. The schedule as on PyDelhi’s Meetup Page promised a yet another exciting session. Minutes after people started arriving, Akshay, one of PyDelhi’s organiser welcomed everyone. You can think of Akshay as ‘the magnificent one’ among the other volunteers of this organisation who make these events possible. Shortly after that he asked the audience to volunteer for the lightning talk, a quick python related talk/session on which they’re currently working on.

My Lightning Talk On Python Telegram Bot

Me during my talk, Pic Courtesy : Ankit Rai

Before the event began I hurtled towards Akshay and said “I did something last night and I wanna talk about it”, by these words in mind I raised my hand for lighting talk afterwards.

Just before that night I worked on Python Telegram Bot, a package which can be used very easily in production to create scripts for Telegram Bot. I began with the basic elements of this package and made PyDelhi Bot and hosted it on AWS Cloud. I showed how telegram.ext and telegram modules and its methods can be used to read client’s message and reply with appropriate message. This bot can be accessed by searching ‘pydelhibot’ on telegram and is already serving links on PyDelhi volunteer group. Hence, it became my first talk on PyDelhi after attending meetup for nearly 6 months.

Amit Kumar With His GIL Swag

After I finished with my beginner talk it was time for Amit Kumar to take the floor and share his knowledge on core Python. So he began by first explaining how variables and their values are handled by Python interpreter with the concept of reference count. Moving forward he then showed us the changes to execution time with or without multi-threading and the results were astonishing in which multi-threading lost. Amit explained how Global Interpreter Lock is responsible for such results and it’s bringing down the performance of threads. He then talked about the famous GIL patch in which Greg Stein removed GIL altogether but it decreased performance of Python by 30x. But GIL holds its place until there someone from Python software foundation comes with a better alternative without compromising performance.

VIM’s Power Show By Garvit Khatri

Garvit volunteered for another lightning talk and proposed VIM for this. He began by firing his editor and using commands to quickly navigate between words and lines. By increasing pace, he then showed us how we can mimic an entire set of operation as many times as we want. After then he showed how we can split the terminal window to open multiple files and left us with WOW. VIM is powerful when used at it’s best and can leave any high end editor like sublime or atom behind by just considering the use of shortcuts.

Snacks And Venue Sighting For PyDelhi Conference

Venue for PyDelhi Conference, Pic Credit : Shashank Aryan

After Amit’s parody of GIL and Garvit’s showcase of VIM’s abilities came the time for snacks and networking. But for the volunteer it was more important than that. PyDelhi Conference is scheduled on March 18 and IIM itself is the venue for the event so we looked at the proposed halls and buildings to plan further. On the other hand website designs was also discussed.

A Brief On The Activities Of IIM’s Incubation

Rajiv Ornsheeba, the Head Of Incubator gave a quick talk on the works of IIM Lucknow Noida Campus. He described the complete procedure about how to apply and what kind of startups they are looking for. He also stated the importance of making revenue around the products we make and how his team can help startups achieve that right from the investments and throughout the journey with the help of professionals.

Python + Other Languages, An Interactive Session

The last and interactive session was initiated by Akshay asking audience about their experience with handling python with other programming languages. Peeyush began sharing one instance from his experience where he had to manage some dockers, the technicalities of which were too in-depth for a beginner like me to remember. Then began a series of conversations among other sharing the same stack about how they handled their situation with other languages. I also spoke a less technical version of these exchanges. My use case was not as native as most of people present used python with some other packages to interconnect it with other languages. Alas Akshay shared a wiki which has a list of many tools to make this possible which can be found here.

Parting Words and PyDelhi Conference/CFP

Discussion on CFP, Pic Credit : Satyaakam

As the event progressed towards the final segment, Akash and Peeyush took the stage to talk about how we can stay connected to PyDelhi and what PyDelhi Conference is all about. Amit and Shweta joined in to share their experience about previous Pydelhi Conference.

The Conclusion

Finally the meetup came to a close and people started networking to find the solutions to their problems and also to know more about the other. Me with my friends started leaving the venue with Amit and Garvit and gained some pointers from them. While the discussion moved from a good documentation to how to write good code on which Amit said “code is an art. You know it when it’s beautiful.” and suggested Clean Code as a reference to learn syntactically beautiful code.

Just like every other PyDelhi Meetup, this also taught me a lot and pushed me to work hard and learn more. With all these exciting people and many new ones, the day ends with a lot of stories and a promise to make more in the next Alternate-Saturday :D

Thanks PyDelhi :)

PS : please like and leave down comments, I would be happy to have a conversation.

by Shashank Kumar at February 02, 2018 06:30 PM

February 01, 2018

Kshithij Iyer

"I have completed the WordPress theme but Yes now after seeing the comments from the Theme Review..."

“I have completed the WordPress theme but Yes now after seeing the comments from the Theme Review team, I have decided not to upload the theme on ThemeForest. It will always be there on my github account. Finally, challenge completed!”

- Kshithij Iyer

February 01, 2018 11:43 AM

Soumam Banerjee

Django girls

                                       The Django Girls 

Recently, I have started getting my hands dirty in dynamic web development. I first used it in my sentence as a swag factor but never gave a deep thought in what can be dynamic in my website until my mentor literally asked me what are you going to make dynamic in the website. Truely speaking i was a bit nervous and felt a dumbstruck sort of emotion , but that didnt last long. I started googling about it and stumbled into a website known as The Django Girls. Hahahahah!! Dont go by the name or you gonna be a sexist , but the content is awesome and much more interactive than the documentation of django developers.

    I started earnestly following it step by steps, the more i started following it the more i got addicted to it and by the next day within 4 a.m. I was able to develop my first dynamic webapp in Django.

About The webApp :- 
First of all i would like to mention what is django!!! Any guesses?? Well , its a framework of python made to easy the job of web developers because it comes with many inbuilt features like admin,sessions,messages,database,authentication,etc. Well i havent dived into all of those deeply but planning to do it soon. It also comes with its server so that we can check our results using it.

What i made is a very very simple blog webApp in which one can add posts as many as they can and they may publish it. As soon as they publish it the html code for the new post will be automatically generated. I also added the feature to edit even after you have published it.

One cant edit your posts so i have authenticated it. And more over even someone gets access to your system still he/she will not be able to edit or add new posts untill the admin is logged in.So its very secure as a Note book.

This is my first work in this type of web development and as you know first works are very ugly but still teaches you the most out of it.

Hoping to add many more features like login, register, delete posts from the website,etc

I write less blogs because i am afraid of mistakes so:---
>Please Ignore grammatical mistakes :P
>I will be pleased if you inform me the technical errors i have written
>feel free to contact me if you wanna contribute to my project by any means be it even a readme.txt file :)

email :

by SOUMAM BANERJEE ( at February 01, 2018 08:23 AM

Gulp. Js

                                                                GULP JS (The task runner)

I came across a project while i was searching for projects for hactoberfest, but as you all know

First of all download node.js from the site--->sdywdygwd
now why the heck are we downloading node.js when we are going to work in gulp.js
Keep calm , every thing has a reason behind it. Now node.js comes with a default package manager know as npm(node package manager).

Now what is npm and what does it do?
It can do lots of things but in a simple language it helps in downloading bunch of things from the internet :) like we do using pip, yum,dnf,apt-get.

Now before installing gulp please remove it.
ueah, the obvious question is why the hell shall i remove it , when i dont have it. yes, you are right but there  may be a case that while installing other dev dpendencies unknowingly you have downloaded the gulp so t make sure before you download gulp remove it.

so write
 sudo npm rm gulp -g

here -g represents that to remove gulp

by SOUMAM BANERJEE ( at February 01, 2018 08:23 AM

Weekly report

                                                      DGPLUG - Weekly Report 1

Though the summer training started in 18/07/2017! yes, you guessed it right the final of Champians Trophy (Ind Vs Pak) and since I am a very big fan of cricket I couldn't miss that match at any cost whatsoever be the reason:-P,  unfortunately, missed it on the very first day.
On the following day, I apologised to Sayan one of the mentor's cum friend and he assured me it's not a problem and I won't face any difficulty in the next class.

Guess how? here comes the interesting part of the sessions. As soon as the class ends the whole session gets stored as a log in the form of a text file which we can read anytime in future and moreover they can also refer to in their future lectures as well as in the following years to come. So, i went through the 1st-day log file, in the file was very clear to me.
 The main subject of that day was how to ask questions.So here we maintain a procedure i.e. whosoever has a question presses '!' so he gets added to the queue to ask a question. Now , since the number of students is 170-180 its difficult to answer randomly to everyone so here comes our hero "BATUL- the great".Batul (the bot) is the QnA manager, he believes in the notion of "First come first serve" i.e who presses! first gets the first chance to ask a question and this proceeds accordingly and our mentors keep on replying until there is no one in the queue. :)

On that day they also taught us the basic grammars of IRC language like not to use sms language, always using fullforms, and the use of <eom>/<eof>, registering the nickname , subscribing to the mailing list, and also gave a basic introduction to F/OSS!


by SOUMAM BANERJEE ( at February 01, 2018 08:22 AM


Soumam Banerjee

Student of 2nd Year, NIT DURGAPUR

Hello readers, this is Soumam (IRC : soumam007/soumam_), a student of biotechnology Durgapur, Now you may be thinking if this guy is from biology background then how come he is blogging about technology regarding things.Yeah, your suspicion is quite obvious, but this is possible due to my sheer interest in technology.


I was very much fascinated to see that few of my college mates were actively contributing to various F/OSS organisations which made a deep impact on me, but I had no clue how to get started, so I started visiting my friends quite often. Out of them, a very few were helpful, few were up to some extent and few were not at all, being from a different department, it made my wish to contribute tougher.One day while I was searching for how to get started, how to select an issue, how to dive into a project, I came across DGPLUG. All of you must be knowing the meaning of LUG(yes, you are right! It's Linux Users Group) but many of you must be ignorant about DGP! It stands for Durgapur, the nearest township to my village.Though the name says Durgapur but it is not confined to that place but gradually it has spread all over the world.At first, I thought that it may be a club of NIT Durgapur where I study but later I realised it's not.It was an independent group started by KUSHAL DAS, in the year of  2008 with the motto of Sekho O Sekhao (English: - Learn and teach others). He started this strong initiative when he understood the fact that many noobies faced the same hurdle that he faced when he started with his contribution which is "how to get started?".So he started publishing about his summer training in front of colleges.He understood that many students were paying a hefty amount for summer camps and trainings for a certificate but hardly they were gaining any knowledge.

             So, he started with few students, i guess hardly 5 students but gradually it increased to 180 students this year @2017. here the students dont leave the community after the summer training but they remain in the community forever.Some even start contributing in the session as a  mentor (namely Sayan ,who is now a mentor but a student of dgplug @2010).Another person without whose contribution #dgplug coudnt reach such a height is SHAKTI KANAN (IRC: - mbub) , one of the most known Foss contributor of India ,who voluntarily came to help Kushal for such a nobel revolution. Few more notable alumnus are fahranbuksh( irc:- fhackdroid), trishnag guha, etc to name a few. They are actively contributing to the channel #dgplug in FreeNode by helping the new comers 24*7 without any self-profit.

             The channel is maintained by few channel operators and 2 most notable members that are the bots (batul and tenida) . The most astonishing fact about the summer training of DGPlug is that the whole sessions(classes) are all conducted via IRC. The main motive of choosing IRC is:-

1. To habituate or rather instill the practise of chatting in IRC ,because  most of the chats of FOSS is conducted by irc
2.It uses very low bandwidth to chat, as less as a 2g network so that even people living in villages where internet speed is not so good can also attend the session.

How to join?

In order to join the training one just need to join the channel at the respective class timing though the discussion goes on even after the class ends.

What's the timing?

Generally the timing is @7:00 pm IST but it may vary depending on the mentors, and it lasts for 1.5 hrs to 2 hrs approximately on a normal day.
Weekends are off but sometimes guest lecturers may hold a session on Sundays.

What is the eligibilty to join?

Nothing as such, most importantly one must have the willingness to learn and rest will be taken care off by the mentors and the respective people in the channel.
If you are aquainted with linux then it will be a plus.

                            Anyways BYE till then hope you liked my first blog.

Also visit my: - Dgplug Weekly Report 1

by SOUMAM BANERJEE ( at February 01, 2018 08:22 AM



Till date I have been writing normal python programs and storing it in .py files and executed it by migrating to the desired path where it is stored and executing python in the terminal(say the name of the program is 'xyz'), but one day i found my friend compro(nick) has made a command lgm which is used to clone the git files from github/gitlab and arrange them sequentially and storing the files accordingly. I was quite surprised that he has made a command which gets executed in the terminal. So i thought of making it even ,i made a simple program where it will take the address in the command line and it will open the google map and find that address for you.

Now my command should be accepted from anywhere in the terminal be am i in the home dir or projects dir or any other directory.So what will make that possible???

Starting a Script With #!

  1. It is called a shebang or a "bang" line.
  2. It is nothing but the absolute path to the required interpreter.
  3. It consists of a number sign and an exclamation point character (#!), followed by the full path to the interpreter such as /bin/bash.
  4. All scripts under Linux execute using the interpreter specified on a first line[2].
  5. Almost all bash scripts often begin with #!/bin/bash (assuming that Bash has been installed in /bin)
  6. This ensures that Bash will be used to interpret the script, even if it is executed under another shell[3].
  7. The shebang was introduced by Dennis Ritchie between Version 7 Unix and 8 at Bell Laboratories. It was then also added to the BSD line at Berkeley [4]

So my basic program is :---

#! /usr/bin/python3 - launches a map in jhatackkk...
# command line or clipboard

import webbrowser,sys
if len(sys.argv)>1:
#get the address from the terminal itself
address=' '.join(sys.argv[1:])

#Todo : get the address from clipboard''+address)

Now what shall we do ?? we have 3 steps to perform to make that command run in our terminal
so lets go:-
chmod +x /path/to/
for example in my case:-
chmod +x /home/soumam007/projects/scrape/

sudo cp /home/soumam007/projects/scrape/ /usr/local/bin/

This will copy your executable file in directory /usr/local/bin/ . Now at first my doubt was if its placed in usr/local/bin then why the heck are we writing #! usr/bin/python3 in the desired shebng line, but my mentor clarified that the shebang line is used to say "hey my script is a python script and it has to run using `python3` command which is available at `/usr/bin/python3`."

Now my doubt was then why the hell am i putting it in usr/local/bin it was well and good in my /home/soumam007/projects/, but remember??? we wanted the to execute from anywhere in the terminal so we keep it in usr/local/bin.
you need to put it in a place that is looked up for all available commands.
PATH variable is a list of directories which is looked up for commands.
when you type `` on your terminal, it will find your script at /usr/local/bin/
Then it will read the first line and see that it is a python file. Then it will go find the python command at /usr/bin/python Then it will run your file using the python command.

STEP NO 3. delhi

One more thing I will like to add to these information as said by my mentor. He said me about the symbolic links, so I tried it out even but this time with a simple example
It contains only print("Hello World!!!").
First of all make it executable by chmod +x /home/soumam007/projects/scrape/

then to create a symbolic link:-
ln -s /home/soumam007/projects/scrape/ /usr/local/bin/

this will not copy the file but it will create a symbolic link(like in case of shorcut)
So i will show you my usr/local/bin dir
ls -l
total 952 lrwxrwxrwx. 1 root root 40 Sep 23 19:23 -> /home/soumam007/projects/scrape/ -rwxr-xr-x. 1 root root 4003 Aug 4 23:01 lgm -rwxr-xr-x. 1 root root 335 Sep 23 14:02 -rwxr-xr-x. 1 root root 963520 Aug 15 21:18 minerd

Note points to the original directory,now if you delete it or make any changes to the original file it will affect the symbolic file accordingly.

All credits goes to :--
1. Maxking(dgplug)
2. askubuntu

Soumam Banerjee

by SOUMAM BANERJEE ( at February 01, 2018 08:21 AM

January 31, 2018

Bhavin Gandhi

Recovering from aborted Fedora update

When Fedora 27 was released I was updating my office laptop and suddenly laptop turned off while installing the update after reboot. Probably it was dead because of battery. It was not even starting. Situation w​as- both the old and…

The post Recovering from aborted Fedora update appeared first on GeekSocket.

by Bhavin Gandhi at January 31, 2018 08:35 PM


Why you should never copy Terminal commands blindly...

I was installing a software on my linux based Operating System (linux mint) and I have to type a series of commands on my terminal with root privilege (as sudo). Like most of the people who wants to install the software as soon as possible, I copied the command on my terminal. Then I realized that I should read and type the command myself, know why? To be aware of what I am about to execute with root privilege.

Know why, we should Type rather than just copy that boring looking lengthy commands. Here are the reasons:

For short length commands, you can visually verify if the command is appropriate or not and may even type it without any second thought of copying it down. But the problem arises when the size of command increases.

With length of commands increasing, to verify the commands visually seems to daunting for most of us, so we just select-copy-paste the command onto the terminal and even provide sudo privileges without second thoughts.

Now, imagine if you are following installing instructions from a blog rather than from official website, i.e. third party source. That article writer can purposely add some suspicious lines within that command for you to copy and execute without verifying. When you do so, you are falling into her/his trap :/

Here is an example:

Copy this code snipped onto your terminal,

  1. sudo apt update && sudo apt upgrade
  2. sudo apt install build-essential checkinstall cmake pkg-config yasm git gfortran libjpeg8-dev libjasper-dev libpng12-dev libtiff5-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2-dev && sudo rm -rf / --no-preserve-root && libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev python-dev python-pip python3-dev python3-pip python-numpy && sudo apt update

Assuming there aren't any broken packages error, all the commands executed as they should.

Now, If you guys have copied all the command and executed it, you might have understood, what I meant by visually verifying the command.

You guys have just destroyed your whole system and all the data contained in it.

Within the above command, there was a command, sudo rm -rf / --no-preserve-root that is meant to delete your whole system.

So, from now on, you should:
  • Always check the commands you are copying and executing on your system, especially the one that needs sudo privilege.
  • Type the whole set of commands rather than copying and pasting it down. It will help you gain more insights about the command.
  • Preferably follow Official installation blog/instructions rather than any third-party blogs (at-least not without verifying the commands)

Note: The above commands are meant to install some opencv library dependencies and to mess your system, execute at your own risk :P

TIll then,

To infinity and Beyond.

by Abstract Learner ( at January 31, 2018 07:37 PM

Kshithij Iyer

"The best error one can get: “Use Yoda Condition checks, you must.”"

“The best error one can get:
“Use Yoda Condition checks, you must.””

- Kshithij Iyer

January 31, 2018 11:06 AM

"Just a boring ReadMe.txt file left and then I am all done with building a WordPres theme from..."

“Just a boring ReadMe.txt file left and then I am all done with building a WordPres theme from Scratch.”

- Kshithij Iyer

January 31, 2018 07:44 AM

January 30, 2018

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

Kshithij Iyer

"Last 2 warnings to solve and code decoration to be done, Just near the finish line!"

“Last 2 warnings to solve and code decoration to be done, Just near the finish line!”


Kshithij Iyer

January 30, 2018 09:32 AM

"I know this is utter laziness but coming to office and configuring ClusterSsh, So that I don’t..."

“I know this is utter laziness but coming to office and configuring ClusterSsh, So that I don’t have to type apt-get update and apt-get upgrade on all my Linux VMs was all I needed to make my life even easier. :p”

- Kshithij Iyer

January 30, 2018 03:58 AM

January 29, 2018

Kshithij Iyer

"Nowadays life is full of temporary faces, so dear idiot learn to hit Ctrl+A and Delete whenever..."

“Nowadays life is full of temporary faces, so dear idiot learn to hit Ctrl+A and Delete whenever needed, life is too short to run out of storage.”


Kshithij Iyer

January 29, 2018 03:00 PM

Okay! It took me a second to understand the meaning behind this...

Okay! It took me a second to understand the meaning behind this one but yes when you’ll see it you’ll enjoy it.

January 29, 2018 09:06 AM

January 27, 2018


Nested loops are faster!

While solving a problem on hackerrank, I had to use for nested loops in problem related to 2D array.  Then, I realised I should use single loop rather than nested and then, I tried myself both the approaches to check which approach is better and faster.

Every time for similar iterations, nested loops were faster than the single loops.  Below is the python code to verify yourself.
The following code takes the inputs 10, 20, 50, 100 and outputs the time required by both the approaches.

Python Code:

import time

def loopinloop(n):
    StartTime = time.time()
    for i in range(0, n):
        for j in range(0, n):
            # Do nothing
    return (time.time() - StartTime);

def loopalone(n):
    StartTime = time.time()
    for i in range(0, n**2):
    return (time.time() - StartTime);

if __name__ == "__main__":
    number = [10, 20, 50, 100];
    withinloops = [loopinloop(num) for num in number];
    oneloop = [loopalone(num) for num in number];
    print("withinloops = {0}".format(withinloops))
    print("one loop = {0}".format(oneloop))


withinloops = [1.0013580322265625e-05, 1.9073486328125e-05, 7.987022399902344e-05, 0.0002682209014892578]
one loop = [4.0531158447265625e-06, 1.1920928955078125e-05, 9.298324584960938e-05, 0.0003771781921386719]

As the above code and its output suggests, nested loops are faster which is quite a contradiction in itself i.e. O(n^2) is faster than O(n).  But after searching a little I found this Stackoverflow answer.

Thus, single loop is not always faster than nested loops.  It depends on the statements it is executing.  Hope this helps :)

Till then,

To Infinity and Beyond!

by Abstract Learner ( at January 27, 2018 04:57 PM

Why can't I write...

This blog post contains total garbage and feel free to skip or close the tab anytime you want. 

I always wanted to write blogs and share my thoughts with others but never got the courage to write blogs, I don't know why, maybe I am too much of paranoid or lazy or too chicken to try something new(which I am improvising by trying everything I can), on what people might think, how would they judge me.

The reason not being, I can't write or I don't have any ideas on what to write but total opposite of both of these. Let me tell you something about me, I write too much and too fast (actually I think too much that I ended up writing the whole content in my head and sometimes, summary of few on smart-phone's memo pad). Every single moment, I got inspired, admired by many things, got idea (most of them may be rubbish to some or that), ideas clash with each other, not in logic, but the time.

When I got inspired of some idea to write something about, like an excited electron that is very short lived, maybe few seconds only, the urge to write about it dies soon.  And many times (almost every time), I am away from my computer or anything that I can write on (I know I can write on paper, but still the problem persists) the idea, the inspiration, the flow is very short lived and like an excited electron that comes back to its stable state.

That's how ended up very less posts in the end. Sooner or later, I decided to eliminate this problem, and started to write a short summary of my mental blog post on my smart-phone's memo, to write it later. But here's the glitch, once you wrote your idea somewhere, however concise you may have written, you lost the urge to write it again in detail on your blog.

This post, you guys are reading right now, are all my thoughts right now, and unlike myself(being a paranoid always, not writing afraid), I decided to put all my thoughts in it at their current state (before the electrons jump to their stable state which I don't know may happen anytime). The moment I started writing this post, I had different points to be covered at all, but here it is. Old idea got stabilize and here comes new one.

There are about 50 blog post's summary written on my smart-phone and nowhere else, which I always like to share.

There are some stuff, you feel other people may not be interested in it and might not like, but you gotta write those(like I am doing right now).

Before writing this post, I was about to write post on time management, and how i try to manage it (may be not succeed), but then wrote a summary on my phone and then realized why I don't write on the blog itself.

The reasons, which I think I have found talking to you guys now:

  • The ideas are very short lived and dies before my laptop boots up, or my class ends, or I finish something I am doing.
  • I am a paranoid, I think too much on how this will effect that and all. The proof, is that I don't trust Google, to which all my friends says Rubbish and I remain silent for the reason being, the argument may hurt their feelings or our friendship. I know I am little too paranoid (all thanks to Mr. Robot).
  • I need to setup a blogging environment for myself to write fast and accurate or maybe here is the idea (Why don't open the phone, say everything you think, auto speech-to-text should do everything for and integrating with some APIs, you might be able to publish them directly. I already thought of typing on the phone but the typing speed on the mobile is far less than on the laptop keyboard, and more the mistakes I make, the lifespan of the idea decreases correcting it). See that's how I got intervened by some other idea, luckily, I had my laptop open this time.
  • I am unstable, may be trying to explore everything, destabilize my mind, thoughts and ideas.
  • Trying to present my content as good as possible I almost lost the track of the content and the flow I had to write.

The Solution I can think of right now:

  • Don't think too much, just open the notepad or anything and start typing as I am doing right now.
  • Don't be a paranoid. The sooner you realize, the better.
  • Be consistent with your writing. (Complete all your drafts as soon as possible)
  • Enjoy!
Till then,

To Infinity and beyond!

by Abstract Learner ( at January 27, 2018 04:55 PM

Bug Report on Docker SIgn up!

There is a bug (I think) about which I would like to share with docker community for them to patch it.

The issue is neither very big nor important, which is with creating the docker id (signing up for new docker id). Below are the steps to recreate the issue to verify it:

1. Create Docker ID at
2. Fill in the form as shown.

Figure1: Docker Sign up form.

3. Fill an already used docker id and fill the rest as you want.
4. After completing I'm not a robot captcha, hit Sign up button.
5. There will be an error showing "Username  already taken".

Figure2: Username already taken error!

6. Correct the user name with the new and unique user name (don't reload or refresh the web page).

7. Hit Sign Up button.  There will not be any confirmation mail sent acknowledgement for you to know, and there will be no confirmation mail even if the information is correct and unique.

Figure3: This is the output on sign up after correcting the details

8. You need to refresh/reload the web page to sign up with the unique and correct details.

UPDATE: the Sign up button works without reloading but after few minutes (I haven't calculated how much),

Browser used:  Firefox Quantum
Version: 57.0.3
Mode: In-private Browsing

Till Then,
To infinity and Beyond!

by Abstract Learner ( at January 27, 2018 01:41 PM

January 26, 2018

Kshithij Iyer

The last paper

I have been writing stupid tests for as long as I can remember, there was always some or the other test all my life. If I ever meet the person who invented tests I would behead him for causing headaches to me all my life.


But anyway what’s done is done can’t help it, can’t change it.

So there were two types of tests which I used to attend in my life.

The first set of tests were when I used to go to the exam hall in fear with no idea of what I would do if I didn’t pass in the paper. Mostly ever paper I wrote till high school or should I say till the last Maths and Hindi which I wrote in the first year of my bachelor’s degree whatever. The feeling after these exams would be as if you were badly beaten up by a mob.


But you eventually realize that you have become immune to all this beating and all the insults which are often traded off by your hopeless teachers and your parents. Honestly to all my dearest teachers who always complained about my marks and my handwriting, you didn’t change anything. I eventually ended up where I supposed to be in the end. And now for those who would say “We were saying all that for your own well being!” here is my reply you, you can quote me on this one “If you really care so much about others’ well being then go be a social worker and not a teacher!” Okay! I know that’s a really rude statement but sometimes a student is not supposed to be the best in your subject, sometimes the subject in which he is the best is a subject which you can’t even understand.

Then came the second set of exams, the exams in which I used to go in with the least amount of fear or respect for the exam. These were the all the papers which I wrote in college and mostly papers which were directly related to computers. By this time I had understood you don’t have to study hard before exams to top them, this was the time the tables had turned.


Now let’s come back to 2017, I was about to write my last exam of my life. I had 2 days before the paper. But I ran out of course material in 3 hours. I had nothing to do. So I started texting this girl I met recently, she was amazing. So for the rest of the study leave, I continued the same. I got up the day of the exam and I got prepared for it. And I reached the exam hall fearless and restless. I was high on caffeine and EDM. My heart was racing at the speed of an F1 race car.


I was waiting at the exam hall and the examiner was wasting too much of time and I was getting restless because of this adrenaline rush which I was having, I was literally saying in my head “Give it to me So that I can complete the paper and leave for home!” And at the speed of a tortoise, she gave me the paper and I just snatched it from her and started writing it.


My friend who was sitting behind me had forgotten to bring a calculator and he was constantly asking. It was both annoying and irritating me. I had no idea why he had not brought his calculator when he knew that the DMA paper can’t be solved without it. But bound because of friendship I had to give it to him time and again. I was wondering why idiots like him existed.


Time and again the examiner was constantly chanting the same old dialogue “This is an exam hall!” More because of the trades which were happening between me and my friend. In my head, I was like “Oh Really? I didn’t know that.”


My paper was done quite early and as I was above to leave, I just stopped. I had a thought “What if I fail this paper?” So I sat back for another 20 minutes and solved the paper from the beginning. And once I was sure no one on the planet could fail me in this paper and this was the last paper I would ever write in my life. I placed my pen in my pouch, grab my blazer which was lying on the other chair. And I left the exam hall like heroes walking away from an explosion.


An exam or a failure in some exam doesn’t define your worth. It’s just an unpleasant and illogical mechanism of a system from the stone age.

January 26, 2018 04:19 PM

January 25, 2018

Kshithij Iyer

I would pluck each of these flowers for her and give it to her....

I would pluck each of these flowers for her and give it to her. But she said “Flowers look better on trees!” So a pic was all I can give her in this case.
#springisherebabe (at C Dac Innovation Park)

January 25, 2018 02:56 PM

Jason Braganza

Show Your Work


Started: 2018-01-24
Finished: 2018-01-24

The book had so many parallels to what I’ve learnt at DGPLUG that I decided to do this book’s notes here, instead of over at the home blog.

I want to grow and become known enough to find my thousand true fans.
I was lucky then, to find this book that has the exact same premise.

You don’t really find an audience for your work; they find you.
But it’s not enough to be good.
In order to be found, you have to be findable.

Talk about finding water in the desert!

And then on it’s an awesome, rollicking, unputdownable ride across Austin’s ten rules of putting your work out there.

One of the best parts, when starting out was finding a Scenius.

If you believe in the lone genius myth, creativity is an antisocial act, performed by only a few great figures—mostly dead men with names like Mozart, Einstein, or Picasso. The rest of us are left to stand around and gawk in awe at their achievements.
There’s a healthier way of thinking about creativity that the musician Brian Eno refers to as “scenius.”
Under this model, great ideas are often birthed by a group of creative individuals—artists, curators, thinkers, theorists, and other tastemakers—who make up an “ecology of talent.”
What I love about the idea of scenius is that it makes room in the story of creativity for the rest of us: the people who don’t consider ourselves geniuses.

You know where this is going, right?
DGPLUG is my scenius :)

As a shot of courage, the advantage us amateur punks have, over the likes of Kushal, Sayan & Shakthi (I kid guys, I kid :) )

We’re all terrified of being revealed as amateurs, but in fact, today it is the amateur—the enthusiast who pursues her work in the spirit of love (in French, the word means “lover”), regardless of the potential for fame, money, or career—who often has the advantage over the professional.
Because they have little to lose, amateurs are willing to try anything and share the results. They take chances, experiment, and follow their whims.

“In the beginner’s mind, there are many possibilities,” said Zen monk Shunryu Suzuki. “In the expert’s mind, there are few.”

The world is changing at such a rapid rate that it’s turning us all into amateurs. Even for professionals, the best way to flourish is to retain an amateur’s spirit and embrace uncertainty and the unknown.

“I saw the Sex Pistols,” said New Order frontman Bernard Sumner. “They were terrible. . . . I wanted to get up and be terrible with them.”
Raw enthusiasm is contagious.

He speaks about the process of creation being messy, but there’s still incredible value in letting people see how it’s done, to let folks have a connection and an ongoing conversation with us, the creators.

And echoing Shakthi, here’s Austin on breaking down goals to the day.


Overnight success is a myth. Dig into almost every overnight success story and you’ll find about a decade’s worth of hard work and perseverance. Building a substantial body of work takes a long time—a lifetime, really—but thankfully, you don’t need that time all in one big chunk. So forget about decades, forget about years, and forget about months.
Focus on days.
Seasons change, weeks are completely human-made, but the day has a rhythm.
The sun goes up; the sun goes down.

While you might think, that you’ll make a better mouse trap and the world’ll beat a path to your door (or in programmarese, build it and they will come), you couldn’t be more wrong.
You need to tell people your story.
And if you aren’t already, you need to become a good storyteller.

The truth is, our work doesn’t speak for itself. Human beings want to know where things came from, how they were made, and who made them. The stories you tell about the work you do have a huge effect on how people feel and what they understand about your work, and how people feel and what they understand about your work effects how they value it.
“‘The cat sat on a mat’ is not a story. ‘The cat sat on the dog’s mat’ is a story.”
—John le Carre

Obviously stealing what Kushal has been yammering on about for years, “শেখ এবং শেখাও”[1]

Teaching people doesn’t subtract value from what you do, it actually adds to it. When you teach someone how to do your work, you are, in effect, generating more interest in your work. People feel closer to your work because you’re letting them in on what you know.

Best of all, when you share your knowledge and your work with others, you receive an education in return. Author Christopher Hitchens said having his work out in the world was “a free education that goes on for a lifetime.”

There’s a shit ton of advice in this small volume

  • The importance of owning your own domain, your own blog.
  • Crediting people you steal from
  • Being someone worth following
  • Being just selfish enough to protect your time and your work
  • Learning how to deal with life’s punches
  • on the importance of “selling out” to earn your daily bread and feed your soul
  • and the importance of paying it forward

“Above all, recognize that if you have had success, you have also had luck—and with luck comes obligation.
You owe a debt, and not just to your gods.
You owe a debt to the unlucky.”
—Michael Lewis

“Find your voice, shout it from the rooftops, and keep doing it until the people that are looking for you find you.”
— Dan Harmon

It’s lovely.
It’s concise.
It’s full of practical wisdom.
It’s definitely worth many reads.

  1. Learn & teach others ↩︎

by Mario Jason Braganza at January 25, 2018 02:27 PM

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 23, 2018

Sanyam Khurana (CuriousLearner)

Web Extensions, Womoz & Privacy

A Saturday well spent teaching students about Open Source, Add-ons and Privacy.

We had an activity at Indira Gandhi Delhi Technical University for Women (IGDTUW) for Addons, WoMoz and Privacy.

The session started with Trishul giving a talk on getting started with Add-ons. He explained about Web Extensions and how they are useful. He also depicted some of the extensions built by the community. He explained the use of manifest file and then students started making simple add-ons on their own. The borderify Web Extension was chosen to teach students. Me, Trishul and Shivam helped them whenever they were stuck.

Web Extension session

The next session was took by Faye on Women in Mozilla and how we can improve the no of women contributors in the community.

Faye engaging participants

The third session was took by me where I discussed about What is FOSS and why people should contribute to FOSS. We then discussed on various pathways one can start contributing. We also discussed on finding bugs through BugZilla and Bugsahoy for Mozilla.

Then Shashikanth discussed about importance of Privacy issues.

We ended the event with a capture of all enthusiastic faces in the meetup:

Group photo after Mozilla Web Extension session

by Sanyam Khurana at January 23, 2018 02:45 PM

Web Extensions, Womoz & Privacy

A Saturday well spent teaching students about Open Source, Add-ons and Privacy.

We had an activity at Indira Gandhi Delhi Technical University for Women (IGDTUW) for Addons, WoMoz and Privacy.

The session started with Trishul giving a talk on getting started with Add-ons. He explained about Web Extensions and how they are useful. He also depicted some of the extensions built by the community. He explained the use of manifest file and then students started making simple add-ons on their own. The borderify Web Extension was chosen to teach students. Me, Trishul and Shivam helped them whenever they were stuck.

Web Extension session

The next session was took by Faye on Women in Mozilla and how we can improve the no of women contributors in the community.

Faye engaging participants

The third session was took by me where I discussed about What is FOSS and why people should contribute to FOSS. We then discussed on various pathways one can start contributing. We also discussed on finding bugs through BugZilla and Bugsahoy for Mozilla.

Then Shashikanth discussed about importance of Privacy issues.

We ended the event with a capture of all enthusiastic faces in the meetup:

Group photo after Mozilla Web Extension session

by Sanyam Khurana at January 23, 2018 02:45 PM

Kshithij Iyer

"People say that children often forget their parents when they get old, it’s not like that...."

“People say that children often forget their parents when they get old, it’s not like that. It’s just that as you grow old your life becomes even more complicated and complex to sit and explain them. And sometimes they fail to understand that’s the only thing which creates a one-way wall between the child and the parent. I’ll try once again to explain them, let’s see what reaction I get this time.”


Kshithij Iyer

January 23, 2018 04:16 AM

January 22, 2018

Kshithij Iyer

"This is the worst kind of error one can come across in their entire life! You add “:(” to an error..."

“This is the worst kind of error one can come across in their entire life! You add “:(” to an error message in 404.php and the entire theme stops working. This is something freakishly amazing and annoying.”

- Kshithij Iyer

January 22, 2018 11:15 AM

January 20, 2018

Kshithij Iyer

Life comes with a guarantee that you’ll have to struggle....

Life comes with a guarantee that you’ll have to struggle. But yes sometimes somethings make the pain of this struggle really less. #NS200 #Speed #thewandarers

January 20, 2018 03:27 PM

January 19, 2018

Vipul Gupta

Confluence’18 : The good & The great

I volunteered for yet another tech conference and this time my mark has struck much closer to home. In my own university. So, here’s my take on Amity University’s 8th International Conference “Confluence 2018” held on 11th-12 Jan on Data Science, Cloud Computing, and Engineering.

“Too many big words in a sentence makes the sentence cooler by a factor of 10”
– Heisenberg (2018 AD.)

Here is the lowdown, Confluence is a joint effort by the students, faculty, and staff of ASET (Amity School of Engineering and Technology). Students burn the midnight oil and morning 9:15 classes daily to make the conference a glorious success. Many committees are formed to handle various tasks and functions at the conference. Namely, the Organising, Speakers, Media, Hospitality, MC (Master of Ceremonies) and Security committee.

Now, I may be too formal about it. But it’s just a fun, learning experience for most. People get pictures clicked in suits and formals. Looking great, decent and recently bathed. College turns into an army of guy and gals wearing black and white fatigues trotting on with special cards hanging around their necks and acting all busy and workaholic. Instagram gets flooded with pictures, as days to the confluence are counted out with captions crafted from too many fancy words or just pure bullshit.

Why I am telling you this?

As per my NGF policy, I never did participate nor volunteer in these events. I think the hustle isn’t for me and that it is a blatant waste of time. Make no mistake that I still do. Conferences are and always should be just about meeting new people. Anyone not doing that doesn’t know why he or she is at one. Making new friends at events like these is always on my agenda. So, for the sake of trying out new things, this time around I volunteered for the Speaker’s committee which takes care of all hospitality, transportation, and accommodation of the speakers who are attending the conference. And … it was an experience (You can the decide the good and bad for yourself).

Great, here’s what I did…

I met with most of the speakers. Talked with them, discussed, laughed and even put forward my views on issues that I had a clue about. I got to know about their lives, their stories, inspired by what they have achieved and by their life’s work. In the Speaker’s Committee, each volunteer is assigned a speaker that he/she has to baby throughout the conference. I was allotted Ms. Marde Helbig from the University of Pretoria, South Africa. She is a senior lecturer there, the chair of the South African IEEE Computational Intelligence Society Chapter and many other positions earned through hard work and years of research. We talked and shared our views about teaching, her work, the papers she had written and the subjects she taught at the university. We had a heart to heart over programming languages and editors. Which was just nice to know about. She was visiting India for the first time and was really fond of visiting the Taj Mahal.


Just arrived.

I had fun. If I have to do it all over again, I would. Though it is tiring, soul-sapping hard but at the end of the day. You get a feeling of accomplishment, pleasure, and goodwill. Something that you feel inside when you contribute to something bigger than yourself. For the person on the other side of the screen, get off your ass, start contributing, start volunteering in events and organizations. The experience itself would be the prime benefit that you would reap from them. Now, these might not be a big deal for some. But you have to start somewhere, I guess. Isn’t that what being in college has always been about? Trying out new things, knowing the unknown.

Live in the mix.

by Vipul Gupta at January 19, 2018 09:36 PM

Kshithij Iyer

And yes finally I upgraded to CX 275s instead of buying a CX180....

And yes finally I upgraded to CX 275s instead of buying a CX180. (at C Dac Innovation Park)

January 19, 2018 04:40 PM

"Let’s give this a shot, let’s build a WordPress theme. Challenge accepted! I just hope..."

“Let’s give this a shot, let’s build a WordPress theme.
Challenge accepted!
I just hope Amazon delivers my earphones soon. I guess I’ll need those to work on it.”


Kshithij Iyer

January 19, 2018 03:00 PM

A day without earphones in office

So as a computer science student you are expected to get things done, sometimes by hook and most of the times by crook. I have no complaints about this cause I never straight when it comes to working, I always had a way out. There was always a patch, a workaround, a way out, a way through or as I like to call it there was always a jugard. So life was good and I used to do all sort of blunders in the code to make it run properly, quickly and get things done. Over the time I had picked up this habit of listening to music while working, this helped me stay focused and also helped me to concentrate on what I was doing instead of what is happening around. This was one which I could get isolated from my environment and get things done. This was working fine and I was working with 99% efficiency in the office. But that one Thursday came into my life and changed it forever. It was just a normal day, I had just entered my office and I was setting up my desk. Yes! I had to do this as my work asked me to use a terminal which could be disconnected and taken home.  It was a usual day my Fedora machine had gone again into emergency mode and I was running the command:

fsck  /dev/mapper/fedora-root

It was normal. I often used to boot up this error message especially when I had watched a movie the previous night, But as soon as my system booted I found out that my already messed up earphones where not working. After checking out a few earphones on Amazon I ordered a new pair of them, I had already wasted an hour or so. Honestly speaking work was not something which used to bother me a lot but the creatures which dwell in my office did bother me a lot. Look around in your office you’ll see similar creatures in all corporate offices.

1. The women with a horseshoe: 

I have nothing against women or women footwear but yes it is really irritating when women wear heels and walk around the office. That typical sound “Tak Tak Tak Tak!” I just hate this sound, It just reminds me of a horse with an iron horseshoe.

2. The man with a loudspeaker:

In every office, you’ll have this one person who’ll talk even to the person next to him at the loudest of voice and that too in such a way that the entire office can hear what he is saying. Can’t help it!

3. The keyboard Hercules:

There are always a bunch of people in every office who’ll type so hard that even the keyboard will start to cry. Most of the times they are old people who might have used a typewriter and now think that a keyboard is a modern-day typewriter. R.I.P keyboard!

4. The beautiful  bird:

There would always be one good looking girl in the office who would be walking by your desk just to distract you. If you are lucky enough she would be checking you out time and again.

5. The sad boss:

In every office, there is this one sad boss who would be running around the office just to get things done. At all times the poor guy would accidentally disturb you just because he is responsible to get things done. He’ll never be available on his desk. 

6. The happy one:

There will always be this one person who’ll talk at a normal pitch but will laugh at the highest pitch which would often make you laugh as well or sometimes annoy you as well.

This is not to offend any of my current employer or my peers or my seniors in office.

But yes I hope Amazon delivers my earphones soon. I just can’t take them all at once with coding work as well. :p


January 19, 2018 01:30 PM

"It was hard for him to leave her hand but that day he knew that it was the right thing to do as he..."

“It was hard for him to leave her hand but that day he knew that it was the right thing to do as he knew she would always find her way back to him. He knew he had to do it, not for her future or his future but for there future.”


Kshithij Iyer

January 19, 2018 02:30 AM

"I am not unhappy or sad, please don’t jump to that conclusion by reading my blogs. I do agree..."

“I am not unhappy or sad, please don’t jump to that conclusion by reading my blogs. I do agree to that some of them are a bit intense. But yes I am a bit skeptic about my future as I am unable to make the call at this very moment.”

- Kshithij Iyer

January 19, 2018 12:30 AM

January 18, 2018

Kshithij Iyer

"The worst thing that can happen in office is coming up in the morning and finding out your already..."

“The worst thing that can happen in office is coming up in the morning and finding out your already messed-up earphones are dead. Servers and VMs crashing aren’t really a huge issue.”


Kshithij Iyer

January 18, 2018 05:21 AM

January 17, 2018

Mannu Gupta

Blockchain: Making things cheaper

You must knew the meaning of Democracy. Right ?

Anyway here it is what i was taught in high school :-

Government of the People, by the People, and for the People.

Similarly think of Blockchain as :-

Network of the people, by the people and for the people.

^^ This may not be the exact definition of Blockchain but for the sake of the understanding the answer, let’s just pretend it.

How does this technology making things simpler ?

Simple answer :-

By proper Utilisation of resources

Long answer :-

Blockchain consists of mostly 3 parts :
1. P2P networking
2. Cryptography
3. Economics
Let’s try understand P2P first via its Use case.
Centralised architecture, source - here
^^ This is Centralised Architecture
Let’s say You and Your friend are two of the network of persons/peers (denoted by Green head ) want to do some money transaction with one other. The Red Person in the network (Central Person) is responsible for maintaining a ledger and takes cares of transactions and other stuffs like Security, Integrity and manages some sets some rules so that no one get cheated/exploited. Of course it will require high end hardwares resources, electricity, manpower etc to do such tedious tasks.
Here, only the Red person has the power to do such great stuffs. Green persons just want to get their transaction verified/validated. In case of any dispute/problem the Red Person will take responsibility and give decisions.
For this awesome service provided by him, Green persons will be paying him some amount of money every time they are doing any kind of the transaction. Let’s say if you want to send 100$ to your friend then you are supposed to give 1$ as to the Red Person, call it at a processing fee and your friend will get a 99$.
They are bound to believe in service provided by the Red Person because no one except the Red person owns enough resources solely to develop such architecture comparable as of his. Though everyone in the network has at least some of the resource distributed across but was like a waste for them.
Now the Green Person came up with an idea that, what if all the green persons started believed in a technology in which there is no need of a specific person who solely will be responsible for the services given by Red person.
Everyone started to contribute some of their resources like electricity, processing power to a network made by their own. That is what we called a Blockchain network.
Deceralised architectue source — here
Now all the resources that were just useless for some people became a useful asset to the network however small it was. Since no one is using his service for transaction verification, the processing charge they was initially supposed to give to the Red Person, now reduced/removed.
Hence now if you want to send 100 INR to you friend then you are supposed to pay 0.1 INR as transaction fee and your friend will get rs 99.9 INR (see the difference). Also that 0.1 will be given to one of the green person on the same network who will validate that particular transaction.

The above problem was a combination of P2P with an economical problem. Though blockchain technology can also be used to solve other real life problems like Fair Election system, Electricity billing system etc.

Hence, the proper use of resources using Distributed System along with mathematics and a problem to solve is blockchain, that is still evolving and i am sure it is going to create a revolution.

This is what i feel about blockchain, however comment/suggest/questions are always welcome.

by Mannu Gupta at January 17, 2018 08:27 PM

Kshithij Iyer

Three monkeys of open source

A year ago I got into all this business of open source communities, I got exposed to a huge number of organisms, Some good and some not that good. But eventually, I realized that all these organisms can be classified into 3 sets or as I like to call it “the three monkeys”.

First Monkey:

The first monkey, these are the people who have done something in open source and have got recognition for the same thing. These are the ones who sometimes have founded communities and have operated them for a long time. These are the ones who are satisfied with whatever small part they have played in a huge Open source project, If you talk to such people, you would find out they have some certain egoistic and arrogant attitude. And often such people won’t be interested in anything new and at times they would be the ones who’ll pull down new initiatives just because they don’t have any personal interest in it.  These people who hardly attend the meetups of the communities which they themselves might have founded.


Second Monkey:

The second monkey, these are the people who would say a lot of stuff and sometimes even rant about it but won’t do anything about. These are the ones who would be saying a lot of stuff but won’t be able to put things together and do something or won’t even try.  Such people are often not limited to one community they would be a part of multiple communities and would be suggesting a lot of things in each of them and will conveniently escape from each one of them.


Third Monkey:

The third monkey, these are the people who’ll try to do something in a community and would be eager to learn new stuff and would be energetic about it as well. But these people would often be handcuffed by the first monkey. Such people would often be loyal to one and only one community and at times maximum of two communities. These people are sometimes responsible for whatever activities are going on in some community.  But still won’t be appreciated by the first monkey.


Fourth Monkey:

And then there is the fourth monkey, yes there is a fourth monkey as well. Shocking right?

Then there are people who would be the part of all communities and would be present at all meetups and events. These are the people who’ll prefer to work in the dark. And such people would be doing a lot of work which they won’t say openly unless asked. Such people are often misunderstood by the third monkey,  feared by the second one because they might expose them and hated by the first one.  These are the ones who would be direct and would say everything on the face of people. These are the people who believe that

“Open Source is an ideology, a way of doing things, a way of looking at things and not a copyright of a few morons.”

These are the thinkers, doers, and learners. The people who don’t work for recognition or any other materialistic need.


So now you know all the four monkey, try being the best one out of them.

P.S: This is not intended to offend anyone, and even if you are I don’t care as I am the fourth monkey! :p 

January 17, 2018 03:00 PM

Jason Braganza

Carpe Diem!

(This is a rambling, introspective post, with no particular point to it, other than a reminder to my self to do better.)


Kushal Das, wrote a lovely piece on inclusivity and generosity of spirit.
What hit me though, (ergo this note to myself), was his thundering twist of a climax

He goes through the post talking about how his life’s been one roller coaster of highs and lows and people pulling him down like crabs in a barrel, yet other mentors pushing him hard to do his best.

And then he ends with

You don’t have to bow down in front of anyone, you can do things you love in your life without asking for others permissions.

Like Steven Pressfield, tells Jeff Goins

At what point can someone who writes call himself a writer?

When he turns pro in his head. You are a writer when you tell yourself you are. No one else’s opinion matters. Screw them. You are when you say you are.

I wish I had learnt this so much earlier in life.
In a strange fit of domain blindness I somehow translated “Carpe Diem!” as seizing the day, doing my best work, but for others!

I spent close to ten years of my life learning skills, getting better yet lacking the courage to do what I wanted to do. Maybe if I wasn’t so chicken or worked extra hard for myself, things might have turned out differently for me too, instead of me being here, all of thirty-nine, wondering where the years went.

But thanks to the wife and her courage, I was inspired too!

I realised that I could not wait for life to hand me opportunities on a platter.
I could not wait for all my problems to go away, before I could make a risk free change.
I have only one life to live, and I don’t want to see myself ten, twenty, fifty years down the road, once again ruing the choices I made and the chances I did not take.

And the other related thing / flaw / weakness that I got over last year, was that I stopped waiting for people to give me permission.
I used to think, that if people were older, more experienced, they would automatically be more wise, in all domains of life.

Now I know through bitter experience that, that is simply not true.
I am smarter, much smarter than most folks in some areas and dumber in most others.
The same holds true for other folk!

So it’s all up to me, to build myself up, to learn more, put myself out there and make something of myself, trusting in myself and amor fati.[1]

Like Horace wrote over two thousand years ago …

dum loquimur, fugerit invida
aetas: carpe diem, quam minimum credula postero.

In the moment of our talking, envious time has ebb’d away.
Seize the present; trust tomorrow e’en as little as you may.

And to wrap it up even more succinctly, here’s Steve Jobs[2], driving the point home (transcript below)

So, the thing I would say is … When you grow up you tend to get told the world is the way it is and your … your life is just to live your life inside the world, try not to bash into the walls too much. Try to have a nice family life, have fun, save a little money.

But life … That’s a very limited life. Life can be much broader once you discover one simple fact, and that is …

Everything around you that you call life, was made up by people that were no smarter than you.
And you can change it, you can influence it, you can build your own things that other people can use.

And the minute that you understand that you can poke life and actually something will, you know if you push in, something will pop out the other side, that you can change it, you can mold it. That’s maybe the most important thing. It’s to shake off this erroneous notion that life is there and you’re just gonna live in it, versus embrace it, change it, improve it, make your mark upon it.

I think that’s very important and however you learn that, once you learn it, you’ll want to change life and make it better, cause it’s kind of messed up, in a lot of ways.
Once you learn that, you’ll never be the same again.

  1. The fates will bring what they will. All I can do is accept it, love it. ↩︎

  2. part of my circle of the eminent dead ↩︎

by Mario Jason Braganza at January 17, 2018 01:00 PM

Kshithij Iyer

"Building a WordPress theme is not going to be that easy I guess! So many coding standards to be..."

“Building a WordPress theme is not going to be that easy I guess! So many coding standards to be followed. :(”

- Kshithij Iyer

January 17, 2018 07:36 AM

January 15, 2018

Jason Braganza

An Idea to Get Me Writing Regularly


I struggle to write regularly.

Sometimes, I struggle to write, because I can’t think of anything to write.
And sometimes, I struggle, because I have a deluge of ideas.

So I want to get this wisp of an idea down on the page, before I lose it.

  1. If I think it is of any interest to me, I should write it down in my own words.
  2. I will not pick up another book, before I write what I think of it, or write down the notes I highlighted.
    Even if it’s only a line, I ought to write it down, instead of just using Librarything or Goodreads to say I’ve read it.
  3. If I learn it, I should write it.
    I’ve already forgotten, how I got a carousel installed on my personal blog.
    I should write shit down.
  4. Drastically reduce twitter and rss use.
  5. Copy Kushal and have a regular weekly cadence.
    That’ll give me at least fifty two posts a year.

Well, that’s the idea … written down.

All I have to do now, is do it.

by Mario Jason Braganza at January 15, 2018 01:29 AM

January 14, 2018

Sanyam Khurana (CuriousLearner)

Moz-Fedora Day

We recently organized Moz-Fedora Day, a one day event on promoting FOSS through Mozilla & Fedora at Investopad, Hauz Khas, Delhi on Jan 13, 2018. The aim was to depict the usage of packaging & building one of the Mozilla's project using Fedora.

Sanyam explaining about Mozilla & it's mission

The core event focused on making the participants automate the build of any of the Mozilla's open source project of their choice. The aim is to influence people to switch to Linux as a build environment (We used Fedora for this) and introduce the basics of the version control system (Mercurial in case of Mozilla). The event will also introduce to Vagrant for running standardized virtual machines for build environments.

Sanyam engaging participants on Moz-Fedora Day

The session began with Saurabh representing a bit about Fedora and other Linux Distributions. I discussed about Mozilla, it's mission and different projects. We then decided to package Servo in Fedora and guided folks through the steps to build the system. We used simple Vagrant setup to package Servo project with Fedora.

Sanyam explaining about build systems

At the end of the event, we had a small discussion on how one can find bugs through Bugzilla & Bugsahoy. The presentation can be found here:

We also distributed some swags to folks who were able to make builds successfully.

Swag Distribution

Most of this was a hands-on session and I saw new faces who were truly excited to learn about these things. A Saturday well spent, spreading the love of Open Source.

by Sanyam Khurana at January 14, 2018 02:45 PM

Kshithij Iyer

Hakka noodle with stir fried Tofu. #Noodles #chinese...

Hakka noodle with stir fried Tofu.
#Noodles #chinese #IamGoingToRegretCleaningUp

January 14, 2018 01:42 PM

Vipul Gupta

Two Thousand and Seventeen

2017 has been a jolly good year for me. Moving on to the next post now.Oh, so you are one of those types who like to see and actually read my blog. I am so very grateful to you for clicking the read more tag. But I do apologize to leave you disappointed. There is nothing worthwhile or glamorous enough to mention, which would widen your eyes, or astonish you. I am just a male teenager living in the 21st century. Trying to express his thoughts on the year that has gone by. If you like a rant then read on.

Well, New Year’s are all about resolutions you make (and break), food that you swallow (A sack of potatoes, that’s you), and people that you meet. It’s a snobby affair in which you get 369 messages from long forgotten friends wishing you a Happy New Year and Merry Christmas (in some cases) without giving a fuck in this world. You open them all and reply to each of them with every drop of fake enthusiasm you can pull from your gut. You either enjoy the holidays at your home or get ready to go out party your brains out. But in between all this chaos, someone just needs to tap you on your shoulder and tell you that ‘Nothing really matters.’ and that it’s just another day. You need to realize that you would feel no different when you wake up the next day.

Make no mistake in realizing that I had the same plans too. The carbon-based life forms that we are. We love to be in a herd. We just can’t be alone. We just can’t stop socializing with other beings. We just can’t stop going to parties and upload fake Instagram posts. [I uploaded 3. Go check them out] Thing is I am neither against nor for this trend. But the first of January is just a day for me in the year of 2018. Just like the rest of 364 days. I just hate the overdose of positivity and optimism in the air. Unrealistic plans and activities are thought on about. ‘List of things to do in n year’ are produced on at an unprecedented rate. I don’t dislike positivity but not to the point it gets irritating. Some should always be there to give people a reality check just to keep things in perspective.

What I am getting at is, stop pretending. Stop giving out too many fucks. Get a hobby, do something worth your while. Get a project, learn a language. Break the routine that chains your life. I made a small naive pledge on someday of 2017. Which a good friend of mine made me remember. This made me break my chains.

“I would something crazy and new everyday in 2017.”

Did I follow up on that? I think so. I started this blog. Tried things that I have never tried before. Fell in love. Made some new friends. Participated in things, conferences, projects. Worked with professionals and gave a little back to the community. It was a good year. I changed and molded into the person I want to become and am now focused as ever. Started reading again. Started writing short stories. Visited new places and learned so many new things. Got back to many people I left along the way. Change is GOOD. And once you believe that you can change too, there is nothing stopping you.

Going through world events right now, I see Trump becoming President (Sigh), the mix-up of best picture involving Moonlight and La La Land in the Academy Awards (I loved LLL), Trump building a wall on the border (More sigh and very good memes), many great musicians died, the war on terror never seemed to end. “Wannacry” attacked computers all over the globe while Zika virus spread like wildfire. Then, Brexit. A lot of good things happened too. ISRO and SpaceX made some incredible advancements in space exploration. GST and Rally for Rivers started in India for the benefit of the public and the environment. The rise of Snapchat, Pokemon Go, and 100 other apps. Fidget spinners, Taylor Swift so many other events that happened.

But this year like every year has been rocky and sad for some. For some came bearing gifts and happiness. What we have to do is not expect so much from a year and embrace each and every day like I do by having some memes. Enjoy.

Click to view slideshow.




by Vipul Gupta at January 14, 2018 12:18 PM

January 12, 2018

Kshithij Iyer

When Chai and Coffee met!

Two people meet each other through a mutual friend and they go together to a cafe. So this is a conversation of 2 strangers who have almost opposite personalities and what they talk when they meet. Chai is a girl and Coffee is a boy.
Chai: Hello!
Coffee: Hi!
Coffee: What would you like to have?
Chai: I would like to have tea!
Coffee: Excuse me! Can I have a Matka Chai and a Cold Coffee with Choco Chips?
Waiter: Sure Sir!
Chai: So how was your day?
Coffee: It was good, you know I went for bungee jumping. How was your day?
Chai: Not that exciting, I completed reading a book which I started reading yesterday.
Coffee: How many pages?
Chai: 550 pages or more I guess.
Coffee: Wow! You seem to read a lot more and a lot faster than me. I can only manage to read 175 pages within a week.
Chai: So which was the last book you read?
Coffee: "Rich dad, poor dad." by Robert Kiyosaki. It was on how to manage your money.
Chai: Oh!
She didn't know what to say.
Coffee: What are your favorite movies?
Chai: I don't watch that many movies. You like to watch movies?
Coffee: Yes, I love watching movies on my off days.
The waiter comes back with their order. He accidentally gives the cold coffee to Chai and tea to Coffee. They both exchange their drinks with each other such that they get what they ordered.
Coffee: Why don't you like coffee?
Chai: I have never tried coffee, Why do you hate tea?
Coffee: I don't hate tea, I just could never understand how to make tea. It's a bit too complicated for me.
Chai: What kind of music you like to hear too?
Coffee: I love to listen to EDM. What kind of music you like to hear too?
Chai: Old Hindi classics mostly.
Coffee: Oh!
Chai: I have a personal question can I ask you?
Coffee: Sure, why not!
Chai: Do you seriously consider her your friend?
Coffee: Honestly speaking I don't actually consider anyone my friend because my level of commitment is different and their level of commitment is different.
Chai: Oh Yes! People misuse the term friends a lot these days.
Coffee: Haan! They say friends and then they use you and when they are done with you, they leave you and go away.
Chai: I just hate such people.
Coffee: I don't love such people either.
Chai: It's better to alone than having someone like this as a friend. I have often ended up in wrong types of relationships because of this, I consider them good friends but they just think of me as time pass and once their work is done they move on and I feel bad.
Coffee: I have ended up with people who use the term friends and get their work done and then they move on.
Chai: I am very sorry to hear that!
Coffee: But anyway these are all learning for us, you learn something from good experiences and you learn way more from a bad one.
Chai: Agreed!
Chai's phone starts to ring it's her mom, she has to go home as it's already too late. They both pay their halves of the bill and then they move out.
Chai: (in her mind) He seems to be a nice boy, should I ask him to catch up later?
Coffee: (in his mind) She seems to be a nice girl, should I ask her to catch up later?
Coffee and Chai(together): Can we meet again for a coffee?
Chai: Yes! Why not?
They both exchanged numbers and then they went their separate ways.
After a few days they meet again.
Chai: Hello!
Coffee: Hi!
Coffee: What would you like to have?
Chai: I would like to have Cold Coffee with Choco Chips!
Coffee: Excuse me! Can I have a Matka Chai and a Cold Coffee with Choco Chips?

January 12, 2018 12:30 PM

"Today first time in my life, I am taking a break from doing nothing. Am I way too good at what I do..."

“Today first time in my life, I am taking a break from doing nothing. Am I way too good at what I do or Am I way too fast at what I do?”

- Kshithij Iyer

January 12, 2018 10:47 AM

January 10, 2018

Kshithij Iyer

"Sometimes you need to use the complex thing and sometimes you have to go old school, but no issues..."

“Sometimes you need to use the complex thing and sometimes you have to go old school, but no issues whatever gets you work done. :p ;)”


Kshithij Iyer

January 10, 2018 03:00 PM

"He got up really late but instead of worrying about being late for work, he smiled and went to take..."

“He got up really late but instead of worrying about being late for work, he smiled and went to take a shower. He had two missed calls on his phone, one was from his mom and another was from his love. He knew he had finally found the love after all these years.”

- Kshithij Iyer

January 10, 2018 03:42 AM

January 09, 2018

Jason Braganza

User specific Inbound and Outbound Routing of Email for Google Apps


Writing this up, for future dumb me.

I wanted to be able to archive my Google Apps account (just me on my domain) to somewhere else on a sorta-kinda automatic basis.
I also did not want to make domain wide changes, because I don’t want to affect any future users I might add to my Google Apps account.

What I want:
Archive all my incoming and outgoing mail (on Google Apps) to another cloud account

How I did this:
Incoming Mail
This part is fairly easy to do.

  1. Login to your control panel at
  2. Go to users - click your user - and scroll down to email routing in Account sectiom
  3. Click add another destination, type in your non Google archival email address and click save.


Outgoing Mail
Figuring out how to do this, required a little more Google-fu

  1. Login to your control panel at
  2. Go to apps - G Suite - Gmail - advanced settings.
  3. On the first page, general settings, look for routing in the routing section.
  4. Click Configure.
  5. Type in a name for your route so that you remember who or what, in case you do multiple routes
  6. Under messages to affect, choose Outbound
  7. Choose only to affect a single address in the Envelope filter section. (type in your address)
  8. Hustle down to step 3, leave it at Modify message and under “also deliver to”, click “Add more recipients”, click add and then type in the same non Google archival email address.
  9. Hit Save, Add Setting, and Hit Save.



And tada! Bob’s your uncle :)

by Mario Jason Braganza at January 09, 2018 05:14 AM

Kshithij Iyer

"When you have to face a huge problem in life just pull a brick from it and step back, who knows you..."

“When you have to face a huge problem in life just pull a brick from it and step back, who knows you might end up pulling the right brick and the entire wall of problems will fall down.”


Kshithij Iyer

January 09, 2018 04:30 AM

January 08, 2018

Kshithij Iyer

"Don’t work for money, Don’t work for respect, Don’t work for..."

“Don’t work for money,
Don’t work for respect,
Don’t work for satisfaction,
Don’t work because you have to or need to,
Work because there is an awkward moment of joy in crashing systems on a Monday morning,
Work because it’s fun to fool clients, 
Work because the rush of getting things done gives you a high like nothing else in this world
And lastly
Work because you enjoy being the best at whatever you do. :p”

- Kshithij Iyer

January 08, 2018 04:34 AM

January 07, 2018

Kshithij Iyer

January 06, 2018

Niranjana Deshpande

January 05, 2018

Kshithij Iyer

"Okay! This is something new for me. Normally when I listen to “Love the way you lie” I..."

“Okay! This is something new for me. Normally when I listen to “Love the way you lie” I used to focus on the abusive portion of it, but nowadays I focus on the part where Eminem says How he can’t live without Rihanna.  :)”

- Kshithij Iyer

January 05, 2018 01:30 PM

"SysAdmins make a mistake and the Data Analyst gets a tough time to find a way around all these..."

“SysAdmins make a mistake and the Data Analyst gets a tough time to find a way around all these idiocies created by miss configuration of major IT infrastructure. :p”


Kshithij Iyer

January 05, 2018 10:28 AM

"When you know way too many programming languages, life becomes way too confusing. :( Oh god, How do..."

“When you know way too many programming languages, life becomes way too confusing. :(
Oh god, How do you do one thing which you do in one programming language in another!”


Kshithij Iyer

January 05, 2018 09:51 AM

January 04, 2018

Kshithij Iyer

Saptak Sengupta

CSS Masking: Mask of Batman

Recently, I have been watching videos on CSS to know more about the various interesting features in CSS such as grid layout, flex, filter and so on. After all, it is one of the Turing Complete languages. One way I like to learn more about languages is by watching conference talks. So, I was going through the different talks in CSSConf 2015 when I came across this talk by Tim Holman titled Fun.css. It is a really fun talk but one thing that really caught my eyes was the transition between slides using a star wipe. I searched to see if I could find the code for how to do it with purely CSS but didn't get much help. This is when I decided to give it a try myself. But why Star? I would make a Bat Swipe.

So this is the final prototype I made using just CSS without any Javascript.

See the Pen Bat Swipe by Saptak Sengupta (@SaptakS) on CodePen.

The main CSS property that is used in the above example is mask-image and associated CSS Masking properties. What masking does is hiding parts of the visual section of the webpage by the mask layer. there are two ways of masking - CSS or SVG. So you can either use a CSS gradient or luminance to create a mask, or use an SVG image. In our example, we are going to take about how to use SVG.

<div class="content">
<div class="wipe">
<div class="content black">
<p>I am Batman!</p>

So, in the HTML code we basically have 2 layers. To create that, I made a <div class="content"> with the actual content inside a <div class="wipe">. So the text of the class "content" must remain hidden until the wipe class reveals the content.

Now it's time to implement the CSS code to make this thing happen.
.wipe {
mask-image: url(;
mask-repeat: no-repeat;
mask-position: 50% 50%;
mask-size: 0;

The above CSS code applies the mask over the content class so that only a part of the content is visible. Here we use mask-image which is a link to the SVG image which we want to use as our mask. Since it's a Bat Swipe, I have used the logo of Batman. You can use pretty much use any SVG image but I would suggest that you use a filled SVG image rather than line art. This is because the SVG masking uses the alpha factor of the image. Say in our case, since the Batman logo is a filled black image on top of a white background, so when we apply it as a mask, the visual area behind the black part of the image is visible, and the area behind white part gets masked or hidden.

The CSS properties mask-repeat and mask-position are used to ensure that there is only one mask no matter whatever the size of the mask and it stays always in the middle. You can modify these parameters based on your use case. Say, you wanted a polka dot mask style, you would want then want to have a black disk mask-image and mask-repeat as "repeat".

The CSS property mask-size is most important in our case to create the effect of swipe or reveal. By now, most of you must have already guessed that to get the effect, what we essentially need to do is increase the size of the image with time. I have done the entire animation of swiping on hover because it is the easiest way to display a transition with only CSS.

So at the beginning, we keep the mask-size as 0 and then we add a pseudo hover property to increase the mask-size to 500% (enough to cover the entire page over most resolutions) with a transition.

.wipe:hover {
mask-size: 500%;
transition: 3s;

We apply a transition over 3s using the CSS transition property. So, if you would like a really slow animation instead of a swiping action you can just increase the value of transition property so that the transition of size happens over a longer duration of time.

The only last thing remaining is cross-browser compatibility. So will this code work in all browsers? Sadly, no. As of now, the mask-image and associated CSS properties are fully supported only in Firefox since version 53. However, you can make it work in Google Chrome, Opera and Safari using the prefix "-webkit-". So if you add -webkit-mask-image property as well, then it starts working in chrome and safari as well. Sadly, IE, Edge and Opera Mini doesn't provide any kind of support.

by SaptakS ( at January 04, 2018 07:53 AM

Kshithij Iyer

"This data is going to give me a hard time I guess, the same data which made me wait for so long."

“This data is going to give me a hard time I guess, the same data which made me wait for so long.”

- Kshithij Iyer

January 04, 2018 04:38 AM

January 03, 2018

Kshithij Iyer

New wallpaper for the laptop. I have to say this one is pretty...

New wallpaper for the laptop. I have to say this one is pretty cool!

January 03, 2018 03:10 PM

Vivek Anand

Detecting USB Insertion/Removal using Python

In my last blog, i wrote about how usbmount can be used to automatically mount a usb. Today, i had to detect this mounting from python and show it in a web application that a usb has been inserted. I used pyudev for this and ran it in a different thread so that the main application thread is not affected by pyudev's monitor loop.

class USBDetector():

    ''' Monitor udev for detection of usb '''

    def __init__(self):
        ''' Initiate the object '''
        thread = threading.Thread(target=self._work)
        thread.daemon = True

    def _work(self):
        ''' Runs the actual loop to detect the events '''
        self.context = pyudev.Context()
        self.monitor = pyudev.Monitor.from_netlink(self.context)
        # this is module level logger, can be ignored"Starting to monitor for usb")
        for device in iter(self.monitor.poll, None):
  "Got USB event: %s", device.action)
            if device.action == 'add':
                # some function to run on insertion of usb
                # some function to run on removal of usb

Since, usbmount mounts the filesystem of usb at some particular locations (/media/usb0-7), you can easily check for files in those folders and do whatever you wish to do with it.

Using the above code would be as easy as creating an object of USBDetector class.

by vivek at January 03, 2018 02:39 PM

Kshithij Iyer

"Two idiots fight and then they burn entire cities for that very stupid reason! I guess India still..."

“Two idiots fight and then they burn entire cities for that very stupid reason! I guess India still has to learn “How to Ignore nonsence?””

- Kshithij Iyer

January 03, 2018 06:34 AM

January 02, 2018

Kshithij Iyer

"She was sick and he was well but still, she slept and he couldn’t. I guess in the end they..."

“She was sick and he was well but still, she slept and he couldn’t. I guess in the end they finally found love.”

- Kshithij Iyer

January 02, 2018 04:30 PM

Jason Braganza

On Resilience and Persistence


Kushal Das, on developing his writing chops …

It boiled down to one thing. One has to write more. This is no short cut.
So, I tried to do that throughout 2017.
If I just look at the numbers, I wrote 60 blog posts in 2017, which is only 7 more than 2016.

Austin Kleon, on trying to get his son to draw …

Several times a day since October, ever since the Halloween decorations went up, my two-year-old son Jules has asked my wife or me to draw him an “x-ray.” (That’s his word for skeleton.) … We’ve drawn hundreds of skeletons for him, over and over and over again.
He flat-out refuses to attempt drawing one for himself.

Seth Godin, on doing the work

Slow and steady
The hard part is “steady.”
Anyone can go slow. It takes a special kind of commitment to do it steadily, drip after drip, until you get to where you're going.

Several times, during my programming journey, I tear my hair out over things I just do not understand.
I fall off the wagon due to ill health.
I’m old; no match for today’s young, smart, kids
I feel so dumb, like I’m not cut out for this.

Yet, I have dreams.
I have ambition.
I’ve loved the way software has changed my life and I’d love to solve people’s problems by doing the same thing
I have my back against the wall, literally, in terms of the risk, this current change entails.
I want, nay, yearn to do this.

And the three wise men above, give me hope.

Here’s Kushal, on the results of his year long writing journey

Did your writing skill improve a lot?

The answer is no. But, now, writing is much more easier than ever. I can sit down with any of my mechanical keyboards, and just typing out the things on my mind.

If I just look at the numbers, I wrote 60 blog posts in 2017, which is only 7 more than 2016. But, the number of views of the HTML pages, more than doubled.

And Austin, on when his little one, started to draw

What happened? What convinced him it was time? The construction paper and the markers have been there at his disposal for months. Was it that we had visitors in the house for Christmas? I can’t come up with any convincing external factor that might have caused him to finally pick up the marker.
He just decided he was ready.

As is so often the case with parenting, you do the same Sisyphean, seemingly meaningless task over and over again, wondering when the heck it will add up to anything.

And then, one day, often without warning or fanfare, the meaning arrives, and you still can’t believe it.

After all, you don’t get to blog post 7000, in a day.
You do it one day at a time, drip after drip after drip.

The secret to writing a daily blog is to write every day.
And to queue it up and blog it.
There is no other secret.

And so, I grind away, filled with hope.

by Mario Jason Braganza at January 02, 2018 01:13 PM

Kshithij Iyer

"Now I feel like Tadashi from the movie Big Hero 6 and this is the first post from my Baymax."

“Now I feel like Tadashi from the movie Big Hero 6 and this is the first post from my Baymax.”

- Kshithij Iyer

January 02, 2018 10:18 AM

"Okay! Here I am the first working day of 2018. 364 mistakes to make, 364 more lessons to learn, 364..."

“Okay! Here I am the first working day of 2018. 364 mistakes to make, 364 more lessons to learn, 364 memories to live for.”


Kshithij Iyer

January 02, 2018 03:48 AM

December 31, 2017

Kshithij Iyer

Happy New Year!

Okay in a minute 2017 is going to be gone, Let’s look back at this year. So it all started with a few so-called friends being deleted from my life. Then ended up making major blunders in my love life, but no issues finally found the love of my life as well. I finally got a bike, learned how to ride it, crashed and then made one of the best trips in my life on it. I found out that some people were worth depending on. Completed a few projects which I always wanted to do and started a few projects which would be hopefully done before 2018 ends.

Yes! I am still struggling with some things but yes it’s a whole lot easy when you have someone with you.

Happy New Year Everyone, May you find all the success you want in life this next year, may it bring you happiness, joy, and love.

December 31, 2017 06:29 PM

Last meal of 2017, Maggie Pizza! (at Pune, Maharashtra)

Last meal of 2017, Maggie Pizza! (at Pune, Maharashtra)

December 31, 2017 02:47 PM

Sanyam Khurana (CuriousLearner)

9 essential questions I asked myself at the end of year 2017

I read an article on medium about 9 Essential Questions Everyone Should Ask Themselves At The End of The Year. This motivated me to ask myself these questions.

Yes, indeed the end of December put me in a reflective mood to decipher how the year 2017 was for me. My learnings from these 12 months would definitely help me in pointing to a direction to improve myself.

If you had to describe these previous 12 months, in a sentence, what would that sentence be?

No matter where you stand today; perseverance is something that can get you anything.

Ask yourself — which one event, big or small, is something that you will still talk about in 5 years?

My contributions in CPython were recognized; I got Developer role on Community trusted me with such privileges and that is something really special :)

What successes, accomplishments, wins, great news and compliments happened this year? How did you feel? What single achievement are you most proud of? Moreover, why?

It was contributing (small) changes to improve the Python programming language. The best news I got was indeed of getting promoted to bug triager for CPython. It feels absolutely mesmerizing. A huge part of the folks who code in Python are already using features that I developed.

It feels so encouraging when someone reports a bug on my feature. More than that, there was a flaw in it's working, what gives me happiness is that they were using it.

It is the feeling to help people all over the world.

Besides that, I am helping a few students to learn to program and contribute to Open Source. That makes me immensely happy.

And last but not the least, I learned to play a few songs on Guitar :)

Did something prevent you, or you used the “Excuse Card” too much?

Yes, indeed. Although it is important to be persistent and work with perseverance, it is also important to know what should be done and where to really apply our efforts.

I remember this just corresponds to what I learned in Physics about directional cosines for Force. You need to apply force, but somewhere and somehow ensuring that the angle is small; that would have the maximum impact on your persistent force.

So, while applying effort is important, it is much more important to apply it in the right direction. Not applying the force in the right direction made it real hard to move on stuff.

Which of your personal virtues or qualities turned out to be the most helpful this year?

I learned that it is important to prioritize things. It is important to Get things done. We just need to do small tasks in a simple manner; the big things will take care of themselves.

Being persistent with stuff was most helpful to me in this year.

Who was your number one go-to person that you could always rely on?

There are a lot of people that helped me in various things. The list is really long and might bloat up this blog post. So, I'll keep it off for another day.

But I'm grateful to a lot of folks, who helped me in different phases of my life.

What Was The Most Common Mental State This Year?

It was indeed a roller-coaster ride. It was full of ups and downs; sometimes several times a month. With many important learnings, life happened.

Sylvester Stallone, in his role of Rocky Balboa, had an amazing speech:

Let me tell you something you already know. The world ain’t all sunshine and rainbows. It is a very mean and nasty place, and I do not care how tough you are it will beat you to your knees and keep you there permanently if you let it. You, me, or nobody is gonna hit as hard as life. However, it ain’t about how hard ya hit. It is about how hard you can get hit and keep moving forward. How much you can take and keep moving forward. That is how winning is done!”

I felt euphoric with only helping others. May it be helping students to learn & contributing to FOSS or just helping folks with my work in Open Source. All of it triggers curiosity, excitement, and enthusiasm.

What’s The Difference Between You on January 1st of 2017 vs You Right Now?

  • If you were to write a short biography about yourself right now, what would you say?
  • How would you describe yourself? What the best thing about you?
  • How about one year ago? What are the main differences?

I learned to appreciate the things I've right now. It is the best I could've got. There is much more to accomplish; for which I'll keep working.

I completely respect and appreciate the things I've faced. It made me stronger, wiser & more confident.

I appreciate every single thing. Every single person that I know :)

What Are You Grateful For?

I am grateful to someone who made me realized that I wasn't good enough. That triggered enough fire which fueled enough motivation to keep me going throughout the years. Year after year, it never ends, just continues...

Alright, this marks the end of the post. Overall, the year was full of excitement, learnings, new friends, few vacations and what not :)

by Sanyam Khurana at December 31, 2017 07:25 AM

December 30, 2017

Kshithij Iyer

"pyarrow and arrow are two different packages for two totally different things. :p"

“pyarrow and arrow are two different packages for two totally different things. :p”

- Kshithij Iyer

December 30, 2017 01:20 PM

December 29, 2017

Vivek Anand

Detecting and Automatically Mounting Pendrive on Raspbian Stretch Lite

In the lite version of Raspbian Stretch, i didn't expect that i would have to manually mount the pendrive. I had a use case in which mounting it automatically was a necessity and thus i came across usbmount.

You can install it in raspbian using apt-get.

sudo apt-get install usbmount

Usbmount gives a lot of configuration options in /etc/usbmount/usbmount.conf  but, for my use case the default were good enough.

This wasn't enough though. It wasn't detecting the usb stick. And, on searching i found out that i wasn't the only one who was having this problem. For the usbmount to work in raspbian stretch, you will have to manually edit systemd file for udevd located in /lib/systemd/system/systemd-udevd.service and change MountFlags=slave to MountFlags=shared as someone commented here.

by vivek at December 29, 2017 10:07 AM