Github profile readme

Github profile readme is an excellent way to create a short (or over-engineered !) introduction about yourself. This will be displayed above your pinned items in your github profile.

There are a plethora of choices to personalize since the readme is a markdown file. Profiles are having spotify lists, games, gifs etc.

I wanted something clean, simple and self-updating.

I created a technical blog and ‘Today-I-learnt’ blog towards this endeavor. 

The exact code and how-to can be found at this link — 

https://vidyabhandary.github.io/blog/github/2020/07/27/Self-updating-profile-readme.html

And this is how Github profile looks now — https://github.com/vidyabhandary

Self-updating Github profile readme (completely within Github ecosystem)


Swap bits - Visual Explanation

Code that takes as input an integer (x) and swaps the bits at indices (i) and (j).

The code below is taken from EPI 4.2

def swap_bits(x, i, j):
    if (x >> i) & 1 != (x >> j) & 1:
        # ith and jth bits differ. We will swap them by flipping their values
        # Select the bits to flip with bit mask.
        # Since x^1 = 0 when x = 1 and 1 when x = 0 we can perform flip XOR
        bit_mask = (1 << i) | (1 << j)
        x ^= bit_mask
    return x

Visual Explanation

1. Most Significant bit and Least Significant bit of the integer (x)

In this problem x = 73. The bits to be swapped are at positions 6 and 1. So i = 6 and j = 1.



2.  Move the relevant bit at index i to the LSB position.

x >> i



3. Perform a bit AND operation to extract the bit value. In this case it gives 1.

(x >> i) & 1



4. Move the relevant bit at index j to the LSB position.

x >> j



5.  Perform a bit AND operation to extract the bit value. In this case it gives 0.

(x >> j) & 1


6.  At this point it is clear that the two bits to be swapped are different. Hence they need to be interchanged. If the bits were same we would simply return (x).

(x >> i) & 1 != (x >> j) & 1


7. Bit mask  - Use a bit mask to mark the position of the indices.

(i << i) | (i << j)


7a. Mark the first index position i with 1  

(i << i)





7b. Mark the second index position j with j 1

(i << j)


7c. Perform a bitwise OR to mark both the index positions in the bitmask

(i << i) | (i << j)


8.  Toggle the bits to perform the swap operation. Use the bitmask with the index positions marked and perform bitwise XOR. Return the result.

x ^= bit_mask ( XOR to toggle the bits )




Unsubscribe ... with a zeal ...

It had to happen ! Yesterday I was watching a TED talk on concentration and one of the items listed in the suggestion was a talk I had viewed before. But for the life of me I just could not remember anything about it. I know I had watched it solely because the title intrigued me (clickbait?!) and the talk did not disappoint - and yet here I was, hardly a couple of months since I had watched it (yes - I remembered that too) and could recall nothing of the talk itself.

So that made me curious - like any self-respecting software professional - I bookmark tons of articles, blog posts, books and videos to consume. This is continuous learning I am writing about. Not fiction.

Books 
I looked at the list of books I had read and there they were - couple of books that I had no recollection of at all !! Not a single point of those books stood out.

There could be couple of things here - One that I read so widely that nothing in those books stood out from the many blogs / TED Talks / Articles etc that I read. I already knew the material in bits and pieces from various resources.

I don't think this is entirely true. When I pick up a book - I try to do a basic synopsis (not as much in depth - as suggested in 'How to read a book') and at least as far as the books of last year are concerned I did not think I knew about those topics as much.

Two - They were just entirely forgettable simply due to a non-connect emotionally or due to no-usage day in and day out.  The forgetfulness curve set in and with nothing to make me remember (not yet added to my trusty Anki Spaced Repetition App) - like water through a sieve - it just drained out.

Subscriptions
Too many blogs these days do not have a RSS feed. Sometime last year I decided that if a website does not have RSS feed I would not bother with updates from that website. Yes, I may get less content but then it is not like I do not have plenty of good material to read. I am drowning in the To-Read pile.

Even with that I had a lot of mail subscriptions from authors that I thought I cared about. Looking through more than ~125 mail subscriptions I could not adequately recall enough to justify this kind of deluge and the time I spent on that deluge.

That UX design mail course - nothing remains in mind. I remember instead the UX designing trade offs that we had to make while developing our app.

That snippet of daily knowledge  - uh oh .. just cannot recall.

So ...... 

The end result -

1. I unsubscribed from almost all of the mail subscriptions - and they were quite a lot ! Phew !
2. Pared down my bookmarks to a minimum ( this took a while - I think there are some time-wasters lurking there but for now it will do)
3. Removed more than 100 RSS subscriptions
4. I always have a humongous list of next books to read - slashed it to 1/3rd !!
5. Videos and videos list - Completely revised the list and removed everything that went - 'I may get to this topic later' !! It never happens. Because then one makes a fresh search and list !!!

This clean up was definitely not my new year resolution but I am glad the way to have started this.

I have realized that I prefer my learning mostly from books / some MOOCs  and then projects. So I am sticking to what works for me.

'Deep Work' by Cal Newport made an impression on me and since then I have been following its tenets as much as possible. This year I hope to read 'Digital Minimalism' by him and make it even more easier to do deep work. Let's see.

And to ensure I stay on course if I do not consume what I mark for reading (articles/blogposts/videos) in a month - I will just delete it.

Books do not come in this list because some books are big and I take time to read them so the 1 month criteria does not work. What does work is keeping the book aside if it does not appeal. Life is too short to read boring books even if they are non-fiction. With some search - there will be other authors who will present the same material in a more engaging way.  Or even a youtube list !! LOL ... Back to the vicious circle !!!!


I have realized 'To-Be-Consumed-later' is a black-hole. Nothing that goes there seems to come out !!!

And so when I read this - I thought I am glad I am on the journey to consume more meaningfully.

500 unread mails, 2K unread articles, 5K unread posts – I am drowning

But I realized I had completely forgotten learning this lesson once before -

Infinity Redefined

MLCourse.ai :  Fall 2019

I came across MLCourse.ai mentioned in many articles when I was looking at good introductory courses to learn Data Science from. It was always listed in the top few. I had tried my hand at MLCourse.ai in Spring 2019 but could not complete it. However I was determined to finish it in the Fall version. And I am glad I did. This could be the last live version of the course. 

There is no certificate and the Yuri is clear this course is only to learn skills. Only the top 100 will be have their name mentioned in the course site. Sadly I didn’t finish in the top 100. 

So what stands out ?

Pros

  1. Kaggle competitions !!! 3 required 1 optional. Lots of learning in feature engineering, EDA and hyper parameter turning and model training. So many high value kernels from the past MLCourse.ai participants to learn from.
  2. Vibrant, Highly Knowledgeable and helpful community. The slack community of participants is very interactive and helpful. Clarifications / Doubts/ Discussing strategies /Commiserating on the struggles of clearing the baseline and celebrating clearing it !!! Cannot underestimate the value of a good community. It was sheer fun to be here.
  3. Quiz and Assignments. The perfect blend of hand holding and learning. I thought these were simple enough to understand but not so simple that one could breeze through them. 
  4. Worked solutions. There are many demo assignments with solutions.

Cons

  1. Lots of material. Difficult to check them all out while doing the course. 
Kaggle
Kaggle
 

Me ? 

So where did I end up ? I fared reasonably well in the Quizzes and Assignments. Couldn’t clear the baselines for the first two competitions at all !! However I guess I did learn because in the final DOTA competition I ended up in the top 20% which I did not expect at all. Rank around 200.(Many have same marks)
The competitions — mlcourse.ai
The competitions — mlcourse.ai

Some participants have done this course 4 times. Some have come with hardly any knowledge of programming and ended up in the top 20. There were ML lecturers and data science practitioners too. In the end impostor's syndrome is not unknown but all one can do is try one’s best !!

Feeling the withdrawal symptoms !!