Kushal Das

FOSS and life. Kushal Das talks here.

kushal76uaid62oup5774umh654scnu5dwzh4u2534qxhcbi4wbab3ad.onion

2018 blog review

Last year, I made sure that I spend more time in writing, mostly by waking up early before anyone else in the house. The total number of posts was 60, but, that number came down to 32 in 2018. The number of page views were though 88% of 2017.

I managed to wake up early in most of the days, but, I spent that time in reading and experimenting with various tools/projects. SecureDrop, Tor Project, Qubes OS were in top of that list. I am also spending more time with books, though now the big problem is to find space at home to keep those books properly.

I never wrote regularly through out the year. If you see the dates I published, you will find that sometimes I managed to publish regularly for a month and then again vanished for sometime.

There was a whole paragraph here about why I did not write and vanish, but, then I deleted the paragraph before posting.

You can read the last year’s post on the same topic here.

2017 blog review

Around December 2016, I decided to work more on my writings. After asking around a few friends, and also after reading the suggestions from the masters, it boiled down to one thing. One has to write more. This is no shortcut.

So, I tried to do that through out 2017. I found early morning was the easiest time for me to read/write as there is not much noise, and most importantly, Py still sleeps :).

The biggest point while starting was about what to write? I tried to write about whatever I found useful to me, or things I am excited about. I wrote using FocusWriter (most of the time), and saved the documents as a plain text file (as I use Markdown format in my blog). I also received help from many of my friends, who were kind enough to review my writings. Having a second pair of eyes for the writings is really important, as they can help to not only find the errors, but also show you better ways to express yourself.

One of my weak point (from the childhood) is a small stock of words to express myself. But, that also means my sentences do not have any words which one has to search to find the meaning.

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

Did your writing skill improved 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 you ask me about one single thing to read on this topic, I will suggest On Writing by Stephen King.

One thing still can not do on time is replying to emails. Kind of drowned in too many emails. I am trying to slowly unsubscribe from various lists I have joined over the years. I hope you will find the future blog posts useful in different ways.

Looking back at 2016 blog posts

Writing more blog posts was one of my goal in 2016. Every time I tried that before, I slowly moved into a writer's block mode. But, finally, it seems to be working for me.

Number of posts

In 2016, I wrote 53 blog posts, in 2015 the number was 37.

Number of words

I wrote around 23704 words in 2016, the year before, around 13.5k words.

Change in the workflow/tools

I am still using Shonku as my blogging tool. But, I am writing the posts first on focuswriter, and later I am moving them into the right place. I use vim for the final edit, before pushing them live. A few days back, I added AMP support in Shonku, it currently lives on a private git branch. I will push it out after few more days of testing it on my blog.

I will be writing more in the coming months. I generally speak a lot, but never managed to write down my ideas. I hope, I will be doing that regularly now.

Event report Fedora 21 release party Kolkata

On 1st February, we had a Fedora 21 release party in Kolkata. I arranged the meet in my house. It had low attendance, but we had people who are using Fedora as their primary distribution. We also had Subratam Biswas, who is looking forward to contribute to the Fedora security team.

At the beginning we went through the feature changes of Fedora 21, though we spent most of the time talking about two flavors, server and cloud. I had cockpit running in one the box, so we played around a bit with that. After that the discussions went more on the tools and workflows we follow in Fedora project. We looked into the cloud images and containers, and discussed how they can help developers.

Discussions related to the FOSS communities in India went on for a long time. I ordered few pizzas in between. People picked up workstation DVDs, I had the ISO image also handy, we made a few Liveusb sticks during the meeting.

We will be meeting again in the next week, to discuss more on latest developments and to play around with the latest Raspberry Pi 2.

PyCon Development sprints and why should you attend it?

What are development sprints?

At PyCon, after the main conference, the next four days many developers and contributors sit together in different rooms. They work on their projects, they submit patches to other projects. Lots of discussions happen over lunch, or in the corridors.

Demonstration time

How do these sprints start?

The long queue of sprinters

After the last keynote, project owners queue up near the stage and come up one by one to describe their projects and what they will be working on. Attendees then go to different rooms allotted to these projects to start working on them.

Is this something a new developer can join in?

Absolutely. If you come to the tables of any major project, you will find people helping others setup their development environment. Sometimes you will find a table with one or two people on it. If you ask them about their project, they will be really interested to explain the project to you and they will also help you start working on the project. I spend most of the time at the CPython development table, where I've seen people getting patches merged within those four days. Many said that they've never contributed to any upstream project before.

What kind of projects can I expect to see at these sprints?

You will find most of the major projects in these development sprints. If you have not decided any particular project, you can roam around in the different rooms and visit all the tables. You will find different kinds of projects on those tables. Starting from web frameworks, to the latest scientific Python stack or even people writing games with PyGames.

The mailman team

Untitled

But I can do that from my home over IRC, isn't?

Actually no, you cannot. In the development sprints you can meet developers face to face, which is very important in building trust. Before getting commit access to your favorite project, you have to gain trust of your fellow developers from that project. You have to submit quality patches, and face to face meeting adds up to your credits.

Mercurial team

Let me tell you a story from 2014 sprints. At the Cpython development table I was having issues with the Mercurial. As I was telling that to the other core developers at the table, I figured out that there were few people looking at my screen from behind. When I looked back, they told me that they are the authors of Mercurial project and they would love to solve my issue. Within next ten minutes, all of my questions were answered, all issues were solved. This is not possible if you decide to stay at home. Come to the development sprints and experience this yourself.

Untitled

Is this only code, no other fun?

You will find lots of tips and funny stories while writing patches. The kind of stories you cannot hear or read anywhere. When I managed to break CPython builds for the first time, I heard stories from other core developers and we all had a good laugh. We also go out to different food joints in the evening. I personally found Montreal is amazing for food lovers.

Can I attend only first two days of the sprint?

Of course you can. We all have other commitments. You may want to work on your favorite project for the first two days and then go out for other work. With each day, the number of participants will come down, but even on the last day you will find a good number of Pythonistas to hangout with.

This sounds like fun, so how can I add my project to the sprints?

Untitled

Untitled

First create a wiki page with details about the things you want to do in your project during the sprints. This can be writing code, writing documentation or discussing design decisions. After you have a page ready for others to look at, you add that page url to this page. It is always better to have things ready than doing it on the spot. Remember to stay after the keynote on the last day of the main conference, come on the stage and talk about your sprint ideas in front of everyone.

I go to conferences in different countries, but none have such amazing effect like PyCon development sprints. Maybe because it is huge. The number of people attending or the number of projects, both are really high. People are engaging in various technical discussions, some are talking about next conference we all can meet.

So if you are yet to book your hotel and flight details, make sure that you keep room for PyCon development sprints. Your life will be changed.

Few more photos from sprints 2014

More discussion to follow

Untitled

Looking back at my blog posts

Few weeks back I wrote about my writing habit. I decided to look back at the previous years for more numbers on the same. This post is about those numbers. I looked at 2012-2014 as reference time frame.

2012

I was using Wordpress as the blogging engine. Posts were made from a desktop client. I had total twenty four posts and around 4263 total words on them. Total page views 70598.

2013

I moved into Nikola as my blogging engine. Moving to static was a major decision, but it went well. Wrote twenty three posts with 9523 words in them. Total page views 380011.

2014

I stayed with static posts, but started writing ink the Markdown format. Writing was even simpler than restructured text formats. I also started using Shonku, a static blogging tool written in golang. I. Wrote twenty nine posts with 8499 words. Total page views 756604.

I can see more people or bots are reading my blog posts. Not much improvement in writing quality or in numbers of posts, though I am trying to keep the posts in even simpler English.

I am writing regularly every night. Whatever is in my mind, I am writing them down. I will not publish them, but at least feeling good with regular writing.

On contribution

Contribution, a word a I first heard in 2004. I was a student back then. I first contribution was to the KDE l10n project with help from Ankur Bangla project. More than anything else it was fun. All the people I first met were already doing many things, they used to do more work than talking, they still do a lot more work than many people I know.

The last 10 years

Over the last 10 years the scenario of FOSS movement in India has changed. Contributors used to be the rock stars. The people just starting always wanted to become contributors. But a new word has taken the place, evangelist. Now everyone wants to become an evangelist. Most of the students I meet during conferences come to me and introduce themselves as evangelists of either Open Source or some other FOSS project, they do only talking and all of them want to change the world. But sadly, none of them seem to want to contribute back.

How to contribute?

I can understand, contributing is difficult in many cases. One needs some amount of preparation and some commitment to contribute to any project. That takes time, cannot be done overnight.

To begin with, you have to spend more time in reading than anything else. Read more documentation, read more source code, read more meeting minutes of the project you want to contribute in. Remember one thing, one always reads more source code than writing. But if you are just starting, you can spend more time in writing code too.

Try to get involved in the discussions of the project. Join the IRC channel, stay there. In the beginning you may not understand all the conversations in the channel, but keep a note of the things people are discussing. You can read about them later, use a tiny and shiny site called google.com :)

I know new students have a tendency of trying to solve non-programming bugs. But as most of you are in Engineering background, you should focus in programming more than anything else.

At home, try to find the things you do in computer in steps and repeatedly/regularly. Try to write small programs which can do those tasks for you. One of my first proper project was a small GUI application using which I used to upload photos to flickr.com, via emails.

When working on some other big project, try to solve easy bugs at first. These days all projects somehow mark easy bugs in their bug tracker. In case you can not find one, ask in the IRC channel for help. Remember that IRC is asynchronous, you may not get the answer right away. If someone is helping you, you may want to ask their timezone.

I am not saying doing work in other parts of the project is less meaningful. I personally want you to write more code than anything else. That way we will get more developers from India.

What about translation and documentation?

If you look at the people who contribute with translations or documentation, you will find few common things. Like they all love their language, they love writing. As I said before even my first contributions were translations. But neither me or any anyone else that time used to do this for some goodies or ticket to any conference. We love our mother tongue and we love to use the computer in our language, period. If you are doing translations, then do it for the love of the language and fun. Please do not do this for some stickers or release parties.

What about becoming an evangelist?

Before you start calling yourself an evangelist, you should learn about that project. You will have to spend a lot of time to learn about the technology behind, you will have to learn why some decisions were taken. The evangelist is a person who cares and believes in the project and most importantly, knows the project intimately. [S]he knows the developers behind the project, constantly talk, blog and spread the news about the project. If you look at the established evangelists, you will find mostly veterans who spent a lot of time contributing to the project first. It is not about the age of the person, but more about the time [s]he spent in the project. Btw, if you want to call yourself a developer evangelist, first become a developer of that project. That means some real code, not some examples.

Writing blog posts

I always wanted to write more, but I did not. Last year I spent some time thinking why I don't. One of the major reason used to be formatting but that issue was solved with my markdown based posts. Markdown is much easier and I can concentrate on the content rather than formatting. But I am still not writing enough.

I generally use vim to write my blog posts in a terminal but I do press Alt+Tab many times to move to the other windows (mostly browser) to read other random things. For me it is much easier to concentrate while writing code but not that easy to do while writing a blog post. That is why it generally takes a lot more time to write a blog post. While discussing this with my friend over phone a simple term came up self discipline or the lack of it in my case. As I wrote before, I can do this well for programming or reading but not that good when writing things on a computer.

What I am planning (with a great hope) is to move out of X for writing the blog posts. I will have only one terminal and nothing else at that time. This is still an idea and I have to do that for some time before judging if it is a good idea or not. May be it will work, may be it will not.

Right now I am writing this post in Evernote in my super old iPad. Applications in any such device is nice in that way, by default you can run only one app at one time. This will help you to concentrate in an easier way. Of course there are apps like ia writer which focuses on distraction free writing (or sublime text in distraction free mode in desktop), one can try those too. I am yet to spend enough time in writing to come to a conclusion.

I would prefer to use my mechanical keyboards any given day. May be that is why I am superbly excited about the Hemingwrite device. Less than 36 hours and it exceeded the kickstarter goal. I can see why so many people are so excited about this device. Though I have to wait till next September to get one.

Please share your ideas on the same in the comments. I really want to know how people managed to solved this issue.

Event report: dgplug 10 years meet

From 29th of August to 2nd September we had our ten years meet in Durgapur. NIT Durgapur hosted the meet.

I reached Durgapur in the morning of 28th August and made sure every thing is in place including the hotel rooms. Assistant Prof. Animesh Dutta was incharge from the college and he did an amazing job on the organizing part. In total this was a flawless event as I saw it.

Rest of the speakers arrived in the evening in Durgapur, there was a taxi strike in Kolkata on that day but things worked out well.

Day One

The day started around 9:30am in the auditorium, our team along with the volunteers from the college were the first to reach the place. The students started coming in slowly and the event started on time. Day one was mostly filled with talks, history of dgplug, how different members started their journey in the group. Praveen led the work on introducing the Fedora project to the students. Prasad took the most anticipated talk of the day, on Iptables. The day ended with light discussions related to talks and programming in general and some cloud :)

We found that around 25 students were traveling from UIT Burdwan to Durgapur and they were going back in the evening. Almost same number of students were participating from Dr. B. C. Roy Engineering college, Durgapur. We also met few summer training students from 2014 batch (session is still going on).

The network was kind of slow, but we were prepared for that and asked everyone to install required packaged at their home/hostel.

There was a speakers/volunteers dinner in the night.

Day Two

The room was full, 150+ seats were taken. All of the dgplug members acted as TA during the Python sessions. We introduced the basic of the language and then actually went into basics of Vim editor. Most of students had trouble with typing, so introduced gtypist. As usual the highest numbers of error were from typos. But with time people were in sync with vim.

We saw the features of the language and basic data structures it provides. We were following my book Python for you and me for the same session.

By the end of the day the students managed to write few basic scripts to implement their own ls or free command. Few of the professors also attended the session. We had lot of fun during the session as students' reactions were priceless.

Day Three

I was not present in day three as I had to come back to Kolkata for a family event but the feedbacks for the day three were really good. First the team did a follow up of the day before. Then there were sessions of Flask and testing in Python.

Day Four

I was back in Durgapur in early morning and started the day with a talk, "Document your code". The talk was as usual interactive type, we heard many ideas on documentation from the students.

Then I introduced reStructuredText in the first half and then wrote some basic project documentation using Sphinx project. We also demoed how to create presentations using rst2s5 tool.

At the end we had a members meet for dgplug. The discussions from the meeting are as follows:

  • Current drupal and mediawiki systems are too heavy for our needs.
  • dgplug.org will have a static landing page.
  • We are moving into a simpler wiki system which our members can manage.

We had around 120+ people in this day.

Day Five

We did a session of git and then demoed how to send in patches to the upstream. Then there were lots of discussions on project ideas, general queries etc. It become an informal discussion session where people asked where to start or how to do certain things in their laptops. We also fixed couple of issues in people's laptops in these 5 days. Praveen actually formatted many laptops and install Fedora 20 during the sessions.

Few points for any such future event

  • Teach how to close the auditorium door properly :)
  • Teach how to type (use gtypist for the same).

These two seems to very much needed action items for any future event. The college authority were surprised to see the attendance in the sessions. We never talked about the event much. Praveen has notes from the feedback session of the event. He will write about it.

The idea is to continue doing things in the local colleges in the same way. Our goal is to build more upstream contributors, which is more difficult than writing code. But we are in it. Next 10 years we will see even more changes, new faces, new friends, new technologies but we will stay as a group of friends, having fun together.

At the end I want specially mention Abhijit, Poulami and Bikash for the all hard work during the event, Red Hat and Sanisoft for helping in many different ways.

You can view the full photoset in flickr.

Shonku, a static blogging tool

I moved my blog into a static blog more than a year back using Nikola. It was a good move, writing was simple again. I spend more time in writing my blogs than thinking about formating or themes. But someplace back in my mind I was still looking for something even simpler. May be a minimalistic Nikola.

Just before PyCon US I started writing a new tool with this approach. I named it after Professor Shonku, my childhood hero. His logs from his diary was the source of the all stories :)

Shonku is written in golang, still many issues needs to be fixed but it can be used. I moved my blog into shonku few weeks back and things seems to be normal.

  • Posts in Markdown
  • Can have themes

The above two are the initial features I kept in mind while developing it. You can see a different theme here, the source of the theme can be found here.

The documentation will require more love. I am working on it slowly. The building/installation instructions work nicely, if you find any issue or want to make any feature request, please file an issue in github.

To try it out you can download a binary or build it from the source.

$ sha256sum shonku.bin

82476d8e4006da88bf09e1333597f8c0c1a31b3ddf2281aae54ee51e4eb43469 shonku.bin