Vikesh Tiwari

All posts in one long list


The year of Adventure

Hola!

2016! The year end is coming, and in a few days it’ll be a new year! Lots of things happened in 2016, it was full of surprises, some good, some less good. While globally it was a very challenging year. Just like 2015, I want to look back at this year, and recount major personal highlights.


Goals of 2016 and How did I do?

I had written about goals of this year. It’s time to rate myself and see how things went. Here is my report card.

I am going to score on the scale of 0 - 10. A score of 10 means I achieved what I wanted, 0 means I did nothing and almost ignored that goal.

  • Lose xx Kgs (Not listing the number here) - 6/10: Yes, I did lose a lot of extra Kgs (16 to be exact). Last four months were really good and I can feel the change. Now, I do not really want to lose weight, I want to be in a good shape. I eat healthy and go to gym daily.

  • Running on alternate days - (5/10): I really really love running now. If I miss a day, my mind keeps reminding me about it. Ohh, You didn’t go out today. Vicky, go and run at least 2 kms. I will be talking about running half and full marathon in 2017 goals.

  • Write more - (4/10): I did write many posts and other stuff in my book and on Medium but, my goal was to write at least one post each week here. I almost failed in maintaining this, but I hope I can change that in 2017.

  • Read more - (4/10): Goal was to read at least one book in a month. I completed 5 books only. I need to focus on this goal.

  • Improve and participate in public speaking - (3/10): I took few workshops in college and talked about my internship in few events in the US. But, I really really need to work on this.

  • Less Facebook - (7/10): I do not really use fb. I had deactivated my account and wasn’t there for almost 1.5 months. I was working on a messenger bot so I had to login there and I started using Fb again :/.

  • Do lot of open souce - (5/10): Yes I contributed to many open source projects and made my couple of projects open source. This goal is going to be in 2017 as well.

  • Improve Networking - 7/10: I met so many brilliant people during my internship in US. Networking is something I really love doing. I made so many friends, met cofounders of many startups and talked to company recruiters about work and culture. I don’t believe in virtual networking now, I want to meet people in real life and talk about everything from Geeky stuff to places and food.

2016 Rewinds

CodeChef Internship

After coming from my North East trip, I joined CodeChef as an intern and worked there from Jan (2nd week) to March.

April - May : Boring submissions and Semester exams

Slack Internship!

I can’t describe this experience in words. This is the best thing happened to me this year. Three months of my internship in US has changed me in many ways. This was totally a unique experience. Travelling alone, living away from family, cooking, meeting great people of different backgrounds and culture. Slack, a beautiful place, I wish I could go work there as soon as I can. I love that place, the most unique thing about Slack is the people and our mission.

From walking alone in the night at 2, to exploring places for food. From cycling across the Golden Gate bridge to friday night parties. I have learnt a lot of things in these three months and I have many stories and memories to cherish forever.

Scroll down for pics

I was back to India in August and then our college has already started. So last four months I focused on my body and our final year projects. I didn’t do much during this period. So, September - December, nothing new. :/

Click on the image to view in fullscreen.
Pawan bhai bought A6
Jan 2016 and Dec 2016
North East trip at the start of year
My first day at Slack (was very nervous)
Went on hiking with friends
empty AT&T park and me at around 9
Alcatraz tour with Slack Interns
Cyclking across the bridge
Watched Giants game with Slack Interns
Lunch with Slack CEO
Lunch with Slack CTO
Slack interns at Exploratorium
Slack Interns on Mission Food Tour

I’m not saying it was a great and nothing bad happened. Problems will be there always either in personal life or career. I shouldn’t be discussing all of them here but if you read my blog posts, you can easily guess what’s going on. :)

So now,

What's going to happen in 2017?

Be in a good shape/lose few more kgs.

Read at least 10 Books: Last year I had decided to read at least 20 books later I realized, it wasn’t really a very feasible goal. This year I’m going to keep it 10 and I will try to read more that 10 books.

Do lot of Open Source: This will be there always. I want to work on few really good projects and also contribute to other open source projects.

Write at least 3 blog post in a month last year it was one post in a week not making it 3 blog post in a months. Goals should be achievable right? :p

Travel and take photos: This is going to start right from the first week. This year I will cover 10+ states, meet people and do photography.

Do good in personal and Professional Life:

Spread love, happiness and Joy :)


So that’s about it. That was my year. How was yours? I’d love to hear your story. Email me or Message me on Fb. I reply to everything I receive.

May The Year 2017 Bring for You…. Happiness,Success and filled with Peace, Hope & Togetherness of your Family & Friends…. Wishing You a…HAPPY NEW YEAR 2017

I don't know what's happening...

Hi!

Before you start reading I want you to read and visualize everything. :)

My village has ritual, when one someone dies, all the relatives and family sleep with the dead body for one night. Now, i don’t know what really happened, it didn’t see anything about how and when it had happened. It was a winter season people used to sleep in their houses without electricity.

Let’s call this person ‘X’ because I don’t want to mention his name on my blog. This person ‘X’, sadly died (I don’t know how) and now the ritual, all family and relatives have to sleep with him for one whole night. I was sleeping right next to this dead body and my dad was sleeping next to me. This whole think was freaking me out and I was kept on telling everyone that I don’t want to sleep right next to him and finally dad agreed and we swapped our place. Now ‘X’, next to him my dad and then me shivering there. X -> Dad -> Me.

Few hours went quitely, most of the people were in deep sleep. They have already done this many times so this thing is very common for them. Suddenly that dead body starts shacking heavily and started making strange loud noises. Before I could understand what’s really happening, that body was standing right front of me. He grabbed my shirt, tried to pull me up from the floor. My dad asked him to leave me and dad were holding me tightly. He - “What were you saying? You didn’t want to sleep next to me? You called me a dead body?” and he tried to kill me.

I opened my eyes quickly and didn’t sleep that night. Have you ever had a dream that felt so real than when you wake up you just have to make sure it was just a dream? The warmth of the sun can not wake me up from this dream that I have been cast into. I sweat and turn and toss under my heavy blanket on my lumpy bed as I try to wake up. But the dream draws me in. I’m seeing such horrible dreams since last four weeks.

Nightmares are helpful to our survival or else they probably would have been done away with by evolution, said Deirdre Barrett, a psychologist at Harvard University. Barrett theorizes that nightmares act as the brain’s way of focusing a person’s attention on issues they need to address.

You can read this here - Why do we have nightmares

Really!? Do I really need to think about someone is going to kill me? Haha I don’t care.

Now, the best part about a nightmare is the waking-up-afterwards part. Because it’s then that you realize you don’t have to go back and fix all the crazy, horrible shit that happened to you in your dream.

Sure, it may have been scary as hell. But there’s nothing like that big sigh of relief that you know you can just wake up….And go about your day.

Such is life. We’re not broken. I don’t believe there’s anything in us that we need to go back and ‘fix’. Yes, it happened. Yes, it molded us. But now we see it. Now we realize it’s all just ghosts from the past.

Our past horror stories are merely nightmares. Freedom comes when we realize we can just wake up, throw our slippers on, and go about our lives.

The only power the nightmare has over us is the power we give it. We keep it alive and re-live it over and over again. It has no inherent reality other than the shape and form we’ve molded it into in our heads.

Bless it. Thank it. High-five it. And get out of the bed. The beautiful day is waiting for you to make memories…

I would to hear your thoughts about nightmares and how can I avoid them.

P.S. : This is not related to me… :p

Thank you!

   

You may also like:

Article Poem
Moments In My Dreams Staring at the Sky

Moments with you

Saturday, I was at home whole day and I didn’t do anything. My laptop is not working so I have my phone only.

I had deactivated my Fb account so I was away from my virtual friends. Now sitting at home and having cellphone in your hand.

I know, I won’t receive a text from you but I was waiting.

I kept looking at my phone hoping to see a message from you.

I keep looking at my phone; looking at that black sleek face hoping to hear that specific notification tone I had set for you, letting me know that a message has arrived and that it would be from you.

I should be watching a TV series, I should maybe even dive into Death Note once more but all I want to do is chat with you.

All I want to do is hear your voice again.

It has only been 3 days since I left you and yet all I want to do is go back to you and have you caress my brow with your lovely hands as you smile down at me.

That smile of a thousand watts that shows off your beautiful dentition.

That smile that makes me shy because of how full and alluring it is.

Time spent with you flies by without a trace.

I can remember every meaningful word shared with you.

I can remember every evening.

Every kiss…

Moments with you are moments I always cherish.

They end far too quickly.

So I’ll savor the memories as they come and relive every moment as often as I can.

Until I come into your arms again.


Just imaginary thoughts :p and are not meant for anyone

   

You may also like:

Article Poem
Moments In My Dreams Staring at the Sky

Slack Internship, San Francisco and Silicon Valley

Hello!

It’s been a long time. I’m writing blog post after almost 3 months, aplogies for being away from you all for so long. I was extremely busy during my whole internship, weekdays at work and weekends mostly spent in exploring places, meeting new people and attending events. This post is all about my internship experience and how it feels like to be in San Francisco and Silicon Valley.

After talking to my friends in many big companies, I can say that Slack has possibly the best internship program. Three years in college can be compared to 10 weeks of my internship. Honestly, Now I feel like a developer, a real software engineer who can create something. People at Slack are very passionate, they love the product so much and value our mission of making working life simpler, more pleasant and more productive. It doesn’t feel like you are working here or it’s a daily job that you need to do. You can reach out to anyone for help. I worked with our CTO very closely and our CEO used to sit one row behind my desk and guess what? He added me on SnapChat :p

First whole week was only orientation and onboarding process and having a great onbaording process is extremely important. At the end of my first week, I was knowing how Slack works from the bottom to top and started working from my second week. I worked mostly on Testing and Test infrastructure. Now I want to focus more on web/Test Infrastructure and operations.

If you are in third year and preparing for summer internship, prepare well and apply to companies wisely. It’s extremely important to decide what you actually want to work on and your role before you apply for the internship.

Choose a company wisely:

Many people get internship in companies having very high pay but what they actually do there is; replying to customer emails and feeding excel sheets. It’s better to work in a small tech startup with low stipend than working in big banks. Do what is good for your career.

Why role is extremely important:

You will see many ‘Software Engineer Internship’ post on career websites and they don’t mention what you are going to do there. So, it’s better to tell them in your first round or apply to specific internship roles. Hopefully then, you won’t struggle in your internship fixing a div element being a Backend developer.


San Francisco, A crimson bridge, cable cars, a sparkling bay, and streets lined with elegant Victorian homes—San Francisco is undeniably one of the world’s great cities. San Francisco has everything you can dream of! San Francisco is known for its cool summers (the coolest summer in the US), fog, steep rolling hills, eclectic mix of architecture, and landmarks including the Golden Gate Bridge, cable cars, the former prison on Alcatraz Island, and its Chinatown district.

I’d love to spend all my time in San Francisco but everything is very expensive. There are so many homeless people and its advised to not to walk alone after 9-10 PM but I did go out in the night at 3 AM many times just to experience everything and see what actually happens in the SOMA and Tenderlion Neighborhood. You can see people buying and selling drugs, taking Marijuana on the streets even during day time. If you are moving there alone then you can definitely live in the city but with family, No! I can’t even think of living in the city with my family. I can live somewhere near SF maybe in Berkeley or Sunnyvale.

If you are going there for internship, you should definitely live in the city. There are so many places to explore, amazing restaurants and clubs almost after every two blocks.


Silicon Valley, yes it is! Whether you are sitting in a restaurant or in a club or you are walking on the street, you will hear people talking about start ups, funding and everything about tech. When you are surrounded by geeks its very easy to initiate a conversation, make friends and create network. During summer most of the companies organize many open house and intern events to attract talents but it’s a very good opportunity to meet new people and make friends. Now I have so many friends there and also I know someone in almost all the big companies and good startups.

If you are going there for summer internship, there are many groups on Facebook and Slack for ‘bay area interns’ join them if you want to make the most of your internship.


That’s all!

You can check All San Francisco Photos on Instagram : @tvicky002

   

You may also like:

Article Article
Summer Internship: The Ultimate Guide My Internship Interview with Amazon, LinkedIn, BrowserStack, Mozilla and Slack

Tomorrow's Sunrise

I woke up a bit late today, as per the daily routine, I washed my face, drank a glass of water and Dad gave me a cup of tea. Dad loves to make our early morning tea and this is happening since many years. The morning spent in revising few chapters for the exam and little bit of packing stuff. It was 1:30 PM and I picked my bag, mom gave me a napkin, a water bottle, and socks and I was ready to go. I touched my parents’ feet and moved out of the house. A guard at the entry gate smiled and waved his hands at me and I did the same. I don’t even know his name, he just knows that I’m “Tiwariji Ka beta” (son of Tiwariji). I don’t have my train pass so I was standing in the queue for the ticket, a beggar came and asked for some money. It’s very rare that I give money to beggars, only to those who I see very differently abled and those who are struggling to survive but today I felt like giving her few bucks. I gave her 10 rs. and she wished me luck. Afternoon trains are usually empty so I was standing at the gate with earphones in my ears, I tried to observe things as much as I can. I got down at the Andheri Station, took a rickshaw and reached college. One thing I always liked about my college is the air at the entrance. I can spend hours sitting at the entrance with friends or even alone in the evening with earphones playing some old (sad) songs. My exam was about to start so I just spent 15 minutes standing there and moved to the classroom.

Exam was ok as always (I never said “My paper was awesome!”). I met my friends, they all wished me luck. I tried to meet as many friends as possible. It was our last paper so we all were very happy. I was in a bit hurry so I took a rikshaw to Andheri station. That 7:1 PM local train from platform no. 8, a fully packed train but you need to stand like a statue with no motion just for 30 minutes and I am doing this since last three years so it was fine. I got down at Mira Road and reached back home. Mom opened the door and as I get fresh, A water bottle and Tea/coffee is ready for me and my dad to my mom, right after entering the house, “Vicky aa gya?” (Had vicky come?), mom says ‘yes’. I never responded to this question.

I won’t see all these things for the next three months. I am going to the U.S. for my internship and I am super excited about it. It’s kind of mixture of all the feelings, I will be away from my family, my best friends and you. Doing an internship in a foreign country or out of your city is not about trying to learn as much as you can. That’ll be there always and it’s the most important thing to do, that should be one’s goal to learn as much as possible. Being an intern in the foreign country/city is also about leaving home and life you’re used to. I see the true benefit in having the courage to step out and do something unusual which can open your eyes and help you in future to not to be afraid to make necessary changes in your life in order to be successful. You learn how to be independent, self-aware, how to deal with situations on your own far away from home and you, of course, learn another language (rather improve) in the process which is more than helpful. This is just like a trailer of the movie when I actually leave my home next year. As a Software engineer a job is pretty much guaranteed away from your home.

Talking about all the good things there; Slack, it was really my dream to work for this startup since the day I know about it. I am super excited that I will be interning at my dream company and maybe later as a full time employee. I will be meeting some of the smartest students in the Silicon Valley, it’d be the best opportunity for me to make friends and learn from them. There’s so much to explore. So many people to meet. People that are like me, but not like me. So many to things to learn from a different culture. The best part, I’ll be meeting my brothers after my internship! Omg! I am so excited to meet you, Bhai and Bhabhi ji! :)

I will fail a lot. Whether it is cooking, meetings, washing clothes, forget to call to my parents and there can be so many things. I’m not scared though. No, I’m excited. I love home and I love the little bubble of safety my parents worked so hard to create, but it’s time to leave. I know, I know, I’ll be back home very soon but I am just saying, this is the time to experience something new.

I am experiencing a melange of emotions right now. I am earnestly looking forward to interning at Slack, working in the technologically most advanced country in the world. Eventually, I will be in the heart of Silicon Valley and be living the life of my dreams. But, I will be away from home. Away from some of the most important people in my life. I know that I’ll always make time for the important people in my life. I am used to meeting and seeing few people twice or once in 2-3 months but we are 24/7 online. I am going to miss them so much. Yes, I am a very emotional guy, nothing can be done about it. I know you are reading this, just know that I will miss you very badly. I know you were and you’ll be there always when I feel low, stressed or worried about anything. We are away but still close.

I am going to work my ass off at Slack. I will try my hardest to achieve my goals. Day or night doesn’t matter, I have the best opportunity to show my skills and I will never let myself down. I am competing with myself to give the best in everything. No more bullshit. I am going to do my workouts, eat right, and read personal development every single day. These three months are the best months to do all possible things to change myself. And I won’t stop until I find success, even if that means being a little lost at times. Even if that means venturing away from home to find it.

I am stepping into a pool of uncertainty and unpredictability. Such is the reality of moving out. Of doing something new. I will make a lot of mistakes. But I finally get to do what I wanted to do for so long. What I wanted to experience. Tomorrow’s sunrise will rise in a different part of the world and it’ll be the beginning of something new. Life is going to become a rollercoaster ride.. for the next three months….because…I’m leaving home!


Please ignore all the typos and grammer mistakes. I have my flight in just few hours so I don’t have time to fix them right now. I will fix them all once I reach there.

Thank you :)

   

You may also like:

Article Poem
Moments In My Dreams Staring at the Sky

Staying In Touch

Has the time come when all of our emotions, feelings and sentiments are merely some binary-coded arrangements?

Today, It’s easier to turn a friend’s life upside-down who’s living on the other side of the city, just by sending a text with some mixed emojis, than to go across the hall to pour yourself a glass of water. We have been communicating around our network through some easy taps on the screen, use of thumbs and, of course, budget-friendly data plans. A minute though your Fb and Instagram news-feed, and you are all filled in with what’s going on with every kind of friends you have out there-even those who are way beyond the acceptable limits of annoyance, but because their unfailing likes and punctual comments are vital to your profile’s reputation, we always have to bear with them.

We constantly gossip with our friends on WhatsApp, share pictures and send memes, and based on how frequently we indulge in such fulfilling activities, we rate our friendships. Those blue ticks on WhatsApp are deadlier than a nuclear holocaust. People run to kill each other when their texts are read but not replied-after. People are pissed when their calls are missed and not returned. We measure our worth to them through the extent of their availability. It doesn’t take long for us to jump to a conclusion: “I am sure, he’s avoiding me. Damn, am I being ditched?” There are over a trillion more possibilities for their unresponsiveness but our insecurity and impatience have blinded us. We have occupied their space, shrunk our trust, breached their privacy and forgotten their individuality. The term ‘personal’ belongs to them just as it belongs to you.

This is what I do, I was thinking about all these today. How much time I waste chatting with friends and also with those who I haven’t seen in real life, my virtual friends. I am highly active on all social websites, I have around 1200+ friends on fb and 250+ contacts on WhatsApp but I have only met and talked to 90-100 people in real life. For most of them, This WhatsApp and Messenger screen is their best friend. This needs to be changed now! I have to change myself, I have to be more active in real life too.

Now, for me hanging out with them for an hour is more precious than a month-long texting. It is more valuable to see them smile in real than to receive thousands of their emoticons. It is lovelier to see them laugh than to receive their annoying “LOLs” and “HAHAs”. (Note to friends: I love your LOLs and HAHAs, I was just trying to make a point here. I don’t want you to revolutionize yourself and stop sending me your smileys.) When I meet them, it is a real feeling. I get the undeniable evidence of their livelihood, non-encrypted compassionate conversations, a sense of being in the moment and, of course, a pleasure of seeing their real-life expressions. There’s no match to the fun it becomes, there is no match to the experience it becomes.

Let’s work on building trust, fostering patience, respecting circumstances and becoming more friendly. Your friendship is represented by the actions of your hearts, not by the activities of your SIM-card. Let’s meet and discuss all about programming, life and love? I’m very sure, you’ll like my stories and I talk a lot, once I get comfortable with someone. I can discuss all crazy stuff and you know I am very funny, your laugh won’t stop. From politics to food to old hind songs to love and Tech, we can talk a lot.

I know there are people who ignore us deliberately because they lack interests. They are people whose priority-list don’t feature us, even at the bottom. But what can we do? They’re at liberty to customize their priorities their way and form interests based on their liking because they’re not robots or PlayStation devices which can be owned, they’re humans. The best I can do is be nice, patient and at peace with my lack of worthiness. Is it really hard to accept your shortcomings? It could be, but once you embrace it, everything gets easier.


Hey, planning to meet and discuss something? I’d love to meet you, I’m flying to the US on 1st June but I still have 10 days so, if you want to meet, just hit me up (Can’t post my contact number here :p). Will plan and meet :)

   

You may also like:

Article Poem
Moments In My Dreams Staring at the Sky

Thank you :)

Getting started with Open Source: The Ultimate guide

Hello!

After few, Love, life and personal articles, this is the time to write some technical stuff. After my post on Competitive programming or open source development which one to choose?, I received so many emails asking How to start with open source. I wanted to write about this since a very long time so as the title suggests, this blog post is for beginners who want to work on their own projects or contribute to other open source projects. This is going to be a long post so grab some snacks, take a notebook and make a note of points that you think may help in the future.

Before we start, Don’t think about:

Am I good enough? Will my pull request get rejected? Will my code bring me shame for years? Is it worth the hassle?

Many people are afraid to contribute to open source because they don’t feel up to the task or don’t have years of experience or enough in-depth knowledge about something.

Trust me, The first time is always the hardest, and once you get started contributing to open source you will see how easy it is and what are the benefits and rewards.

You do not need a degree or an invitation to contribute to open source. If you want one, you are hereby cordially invited :).

So let’s get started!

So Vicky, tell me what exactly is open source?

The term “open source” refers to something that can be modified and shared because its code is publicly accessible. Open source software is

a computer software or application with its source code made available for free with a license which can be modified, changed and distributed to anyone and for any purpose.

  • free: A software is not open source if you need to pay for the source code
  • license: License provides the rights to study, change and distribute the software.

Companies make their projects open source which allows developers to stop complaining about the bugs or required features and actually solve them.

Ok Vicky. Now I know about Open Source but why should I contribute?

I’m glad you asked this question before we actually start the main part. There are tons of benefits associated with open source. I can write another blog post on benefits of Open source.

Below are some benefits of contributing to open source.

  • Open source is an excellent way to level-up your skills as a developer. It’s handy to point to your open source projects and contribution work as an example of what you’re capable of.
  • It makes you learn more.
  • Gives a good impression about you that you work with development because you love it. Love it enough to spend your free time on a free project.
  • You help eagerly to make a better software for yourself and others. It gives immense pleasure to contribute to a software which is used by thousands of people.
  • This will improve your development skills, more skills’ means more opportunity, and by working on projects you enjoy, that opportunity can be more enjoyable too.
  • Open source is fun, challenging, and totally worth your time and effort.

Whoah! This seems very interesting Vicky, tell me the very first step?

Yeah! :) The undisputed center of the open source universe is GitHub. Github enables individuals and organizations to create projects, fork them and contribute to it. The very step is to learn about Git version control system, Installing git in your system and know about basic git commands. You can also try this interactive course on Git.

You know what’s the best thing about Github? Anyone can fork any project without approval or oversight from the original authors. Changes can be committed locally, pulled to the parent repository with a code review. Anyone can comment on any single line of code or a pull request. You can use your fork immediately in your project.

Oh I forgot to tell you about these words that developers use :p. Check what’s the meaning of a commit, pull request, fetch, pull, fork, local and parent repository in Github glossary.

Vicky, I completed the first step. What’s next?

That’s good! You’re now ready to contribute to open source. There are two major ways you can contribute to open source

  1. Contribute to an existing open source project.
  2. Start an open source project.

I am writing on the first aspect - Contributing to an existing project because almost all beginners find this hard. The hardest hurdle in open source is: The first contribution. Trust me you may not feel like a super genius, but you definitely don’t need to be one to contribute to open source. It’s just that first contribution to get you started, then you’re hooked. It doesn’t have to be monumental or anything. So what open source project should you contribute to? The best answer to this question is: You contribute to something you use regularly. This post is for beginners so I’ll take my project AlgoWiki- Collection of all CS resources at one place! and will contribute something to it. It’s extremely easy to contribute to AlgoWiki, it’s just a collection of links. I think, this is a perfect project for you and don’t worry I be nice sometimes and accept all pull requests. :p

After your first contribution, search projects on Github that you use regularly. Read code, install it in your local system and start contributing to it.

Vicky, I’m excited to contribute to AlgoWiki. Tell me how!

Ohh That’s super awesome! So let’s get started :). When, you see any big project on Github there will always be this three main files.

  • README.md: This contains the description about the project, installation, License, contributors i.e. the summary of the project.
  • LICENSE: This contains License and other copyright data.
  • Contributing.md: This file is for developers who want’s to contribute in the project.

Fork the project:

  • Open AlgoWiki, click on fork on the top right corner.

  • You can now see AlgoWiki in your profile.

Clone that repo in your local machine

  • Open Your Github Profile, open AlgoWiki forked repo in your profile.
  • Copy Clone Link to clipboard.

  • Open terminal in your local machine and paste that URL. git clone https://github.com/{your_username}/AlgoWiki.git

Making changes in your local repository

  • Read Contribution.md file of AlgoWiki. It has all details on how to make changes and maintain section, subsections etc.
  • Now add links of article, videos or books anything you that want to contribute.
  • Save those files.

Push your local changes to the main repository.

  • Now you already know how to add files, commit and push to the main repo.
    • git add file1 file2 file3
    • git commit -m 'commit message'
    • git push origin master
  • You made changes, pushed to master branch from your local machine. This is the to create a pull request.

Your first Pull Request

For your first pull request, Let the project manager know that you’re new and want some guidance to learn how to get into it. It may so happen that maybe they’re too busy to help, if so, move on and find another project. That first contribution is the hardest, you may want some help and coaching. The actual code contribution matters less than learning the process. So find a project or someone who has time and patience to mentor you.

Here, I know you are contributing for the first time so I’ll be kind here and accept your pull requests in AlgoWiki :p and I am 24/7 online to accept pull requests, discuss changes or anything related to my projects.

  • Go create a pull request and contribute to AlgoWiki!

  • One you create a pull request, owner will check everything.
  • If author finds it useful, he will merge your pull request.
  • Don’t forget to say thanks because this is your first contribution to open source.

Once your pull request is accepted, you can check your GitHub profile. See that green square on your heat map calendar, and that streak? Congratulations!! You’ve made an open source contribution!

As you contribute to larger and larger projects, you’ll get better at learning codebases well enough to track down bugs and add functionality.

That’s how you learn. That’s you grow as a developer. And that’s how you prove to future employers that you can collaborate with other people and code that’s worth sharing!

What I learnt from Open Source

I have learned so many valuable skills from my time using and contributing to open source projects. I’ve learned how many different build systems work, different styles of structuring code and files to enhance readability, Swagger for API I didn’t know existed, etc. etc. etc.

Job opportunities

You must be knowing about this. Open source contributions matter a lot. I get so many emails from recruiters to my Github email address. And by developing some street credibility on Github, people start paying attention and are interested in what you’re working on.

Friends

Lots of conversation that start on Github turn into friendships that extend to Twitter. It gets really fun when you meet these awesome people in real life and I’m super excited to meet few people during my internship at Slack in San Francisco. Friends make open source fun and rewarding.

Helping others

One of the most rewarding things when working in open source is when someone says something like: “This is amazing!” “Thank you so much!” “It’s saved me so much time!” or “I wish that I’d found this earlier!” Call to action: If a project has saved you some time, go ahead and create an issue to simply tell them thanks. (When show copied Github projects in college.)

Conclusion

If you haven’t contributed to open source before, I recommend you give it a whirl. It’s fun, it’s rewarding, and it’s good for your career. If you’re looking for a good project to contribute to, remember that

You contribute best to something you use regularly.

Contributing to open source has been awesome for me! It’s really hard getting started, but once you get over the first contribution, making future contributions is much easier. It’s not all roses. The open source community has its warts here and there. Keep working at it. You’ll do great! Good luck!

So, Do yourself a favor and move to Github! Your open source contributions will play in your favor!

PS: You are always welcome to contribute to my projects. Check out my GitHub Projects.

If you liked this articles. Don’t forget to share it with your friends. :)

Ohh see a typo?

   
You may also like: Competitve Programming or Open Source My interview experience with Slack, Mozilla, LinkedIn, Browserstack and Amazon

Thank you.

Moments in my dreams

Nainital Lake

Nainital Lake

All I want is, to sit somewhere with you by the mall road and watch people boating in Nainital lake. I want to stare at the design on my wall with you while thinking about my hair. I want to drink lukewarm tea with you. I want to watch mediocre TV with you and have low-grade headaches with you and eat bowls of overcooked pasta with you. When it’s raining outside, I want to eat onion bhajiya (cooked by me) with you. I want to start a conversation about something controversial with you until we both realize we don’t know enough about it and switch back to talking about food. I want to trace an ant running on an artificial wood tabletop while playing the business game with you. I want to sit on the terrace of my building and be bored with you. Not bored because of you. Bored together.

One trip to the Leh ladakh. Three vacations to hot, photogenic places. Five misguided ice-outs. Seven passive-agressive car rides. An afternoon when we take our career choices out of our head and put them on the table and stab them with little sticks and forks. A fight where someone throws a spoon (not fork)! An evening where both of us just sit and talk about our families and childhood memories. One night at my hometown on the roof top doing nothing just watching the stars and The Saptarishi.

After all that - I want to be bored with you.

Not bored because of you. Bored together. We can drive a Toyota Fortuner to that small food stop near Andheri station, I can just sit there and watch you, stuffing your face with Pani puri. We can stare at those beautifully written lines about food and listen to that Surbhi’s Lassi Ad “Surbhi ki lassi majjedaar lassi gaadhi lassi”. I can touch my one long eyelash and you pull your one long eyebrow hair. We should do this when it’s cloudy.

Pani Puri

A scene from movie Rab Ne Bana Di Jodi

We can let go of funny and exciting and interesting and offensive and microaggressive. We can let go of all our affectations and all the things we say. We can stop trying to be the version of ourselves that will get the most dopamine, the version that’s been engineered by and for everyone around us. We can stop auto-transcribing everything that happens between us and filtering it into Good or the bad.

We can only be bored after we’ve been everything else. We have still many things to do. I want to fall through the canopy of jokes and all talks about sitcoms and what-do-you-think-about-this-program-software-mobile-this disaster-that-happened-yesterday-in-another-city-another-country-another-another-another. I want to discuss same controversial thread with you and we will walk back and forth over fifty times and will make each other crazy with everything we said or didn’t.


The best things are boring. The best moments are boring. They don’t light up a timeline or a desktop background or a conversation, and no matter how much you try you probably won’t remember them. They are temporal equivalent of muscle, and without them you’d get nowhere.

The best people are the boring ones, too. They are the human equivalent of marble. They bought a candle from Mall road of Nainital but they haven’t lit it yet.

So maybe, if it all goes well, we’ll stand underneath yellow light and look at all those ice-cream sellers. We’ll put our hands in our jacket pockets and walk down aisles of plastic superheroes and lawn chairs.

We can stop at the candles, open one or two, and pick the one that smells the most of nothing in particular. Just a vague combination of flowers and fruit.

Nainital Candle shop

Candle shop in Nainital


   

Thank you :)

Image source: Flickr


I hope you liked this article. If you’re wondering why the title ‘In my dreams’, why I started the article with that beautiful Mall road of Nainital and ended with the same, Why one, three, seven numbers? If you want to know more the about this article. You can write an email to me, I’d love to answer all your questions. :)

Staring at the Sky

Staring at the sky

I know you’re gazing at them too

Do they make you think of me?

They make me think of you

Staring at the moon

I know you’re too

Do you see the silver piece

floating in the blue?

Staring at the sky

I know you feel it too

The vast oblivion

Cannot separate me and you.

:)

The HTTP headers related to security

Hello!

After few blog posts on internships and interview experiences, this is the time to write some technical posts. I’ll be writing about APIs, Docker and OAuth 2.0 in my upcoming blog posts but there will be few rendom funny stuffs as well! I don’t want to make you people bore with everything technical here :p.

So, as the name suggests, this post is about HTTP headers and how it’s useful in security. Among the many standard HTTP headers, some help to improve the security of web applications. This post contains quick overview of these headers. So let’s get started!

HTTP Strict-Transport-Security (HSTS)

HSTS is a mechanism to notify the user that your domain name should only be accessed using HTTPS. There is a header sent by the servers in responses to HTTP requests. A user who receives this header includes all the futures call to your domain name will be done in HTTPS and redirect internally any attempt to call HTTP during the period defined by the “max-age” option. “max-age” is the minimum time after which a browser can make insure requests.

Strict-Transport-Security: max-age = 259200; includeSubDomains; preload;

So even though your user types manually http://eulercoder.me in the URL bar, no calls will be made http. The browser will transform itself http https before executing the query. Of course, it is necessary to receive at least once for the header that protection is enabled. The user is therefore a priori not protected at his first request, if it is performed by http.

It is nevertheless possible to overcome this limitation and also protect the first query. Browsers have a list of “hard” domain names to be accessed exclusively by https. This list is managed by the Chromium project, but is also used by other browsers. You can request the addition of a domain name to this list via the form on: HSTS Preload For this to be taken into account it is also necessary to add the flag “preload” the header Strict-Transport-Security.

Content-Security-Policy (CSP)

The Content-Security-Policity used to define a whitelist of origins from which you authorize the loading of resources for your web application. For example, you can set up a CSP not allowing scripts if they are from your domain name. If your web application attempts to load a script whose origin is not allowed by the PUC, the loading will be blocked by the browser (of course if you have a modern browser that includes CSP).

Furthermore, the CSP prohibits scripts inline by default. It becomes for example possible to execute a onclick directly on your HTML elements. Your entire Javascript code should be outsourced in dedicated js files (which was anyway a good practice), and imported from an origin authorized by the PUC. MSCs are of great interest from a safety point of view. To the extent you control the source of your resources and where inline scripts are not allowed, CSPs are extremely effective against XSS flaws .

default-src: 'none'; 
style-src 'self' ' http://www.example.cdn.com '; 
frame-src: ' http://www.youtube.com ' ; 
script src 'self' ' https://ssl.google-analytics.com '; 
img src-: 'self'; 
font-src: ' http://www.yourdomain.com '; 
connect-src: ' s elf' 
report-uri: https://www.yourdomain.com/report

In this example, the styles are allowed provided they are from the domain name being (self), or Cdn. We allow scripts from self and Google Analytics, the frame of Youtube, Ajax requests (connect-src) on self, etc. The report-uri option allows to send a report every time a resource is blocked. These reports allow you either to adjust your policy by allowing a resource that should not have been blocked or to detect XSS flaws on your site.

Policy applies to a wide variety of resources

While script resources are the most obvious security risks, CSP provides a rich set of policy directives that enable fairly granular control over the resources that a page is allowed to load. You’ve already seen script-src, so the concept should be clear. Let’s quickly walk through the rest of the resource directives:

  • base-uri restricts the URLs that can appear in a page’s element.
  • child-src lists the URLs for workers and embedded frame contents. For example: child-src https://youtube.com would enable embedding videos from YouTube but not from other origins. Use this in place of the deprecated frame-src directive.
  • connect-src limits the origins to which you can connect (via XHR, WebSockets, and EventSource).
  • font-src specifies the origins that can serve web fonts. Google’s Web Fonts could be enabled via font-src https://themes.googleusercontent.com
  • form-action lists valid endpoints for submission from <form> tags.
  • frame-ancestors specifies the sources that can embed the current page. This directive applies to <frame>, <iframe>, <embed>, and <applet> tags. This directive cant be used in <meta> tags and applies only to non-HTML resources.
  • frame-src deprecated. Use child-src instead.
  • img-src defines the origins from which images can be loaded.
  • media-src restricts the origins allowed to deliver video and audio.
  • object-src allows control over Flash and other plugins.
  • plugin-types limits the kinds of plugins a page may invoke.
  • report-uri specifies a URL where a browser will send reports when a content security policy is violated. This directive cant be used in tags.
  • style-src is script-src’s counterpart for stylesheets.
  • upgrade-insecure-requests Instructs user agents to rewrite URL schemes, changing HTTP to HTTPS. This directive is for web sites with large numbers of old URLs that need to be rewritten.

Public-Key-Pin

When you access a website https, your browser checks the validity of the certificate of the domain name, up the chain of certificate authorities that issued the certificate, to find an authority in which he trusts.

This fundamental principle of public key architecture (PKI) assumes that you trust to a number of certification authorities. Unfortunately, it is not uncommon for forged certificates issued by authorities is “trusted”. In September 2015, fake certificates google.com EV (extended validation) have circulated . Public-Key-Pin is a header sent in the HTTP responses. It can send the user the hash of the public key of your certificate. When a client receives the header, it is known that during the time specified by the max-age option, it will only trust this certificate. Any other certificate will generate a security exception.

Public-Key-Pin: max-age = 259200; pin-sha256 = "426df4d6 ... .fdf / BACC ="

Rather than specifying the hash of your certificate, it is also possible to send the hash of the certificate from a certification authority. In this way, only certificates signed by that certificate authority be accepted.

Like the header HSTS, users are unprotected during the first call. And in the same way, you can ask Google to add the hash desired “hard” in Chrome . Before implementing this header, it seems necessary to assess potential risks. What will happen if the private key of your server is corrupted, and you impose a renewal certificate with public key change? From this point of view, providing the hash of the public key of a certificate authority appears more flexible, to the extent that you can make the certificate of renewal without disturbing your users, as you go through the same certification authority.

X-Frame-Options

Iframes are commonly used to implement attacks “clickjacking”. It is possible for an attacker to superimpose an invisible iframe (opacity 0) over a classic page. When a user attempts to click on a visible part of the page, click on the actually iframe and can be caused to perform unwanted actions (liker a Facebook post, retweet a message …). You will find here an example implementation on Twitter . The header X-Frame-Options to restrict the display of your site within an iframe:

X-Frame-Options: deny

X-Content-Type-Options

Some browsers (IE) enable automatic format detection of a file from its content. This allows particularly to interpret correctly files with mime-type is incorrectly entered in the HTTP response. This nevertheless poses a safety concern to the extent that we can in this way to execute the browser code that is not meant to be executable.

X-Content-Type-Options: NOSNIFF

The header X-Content-Type-Options tells the browser to rely exclusively on mime-type returned in the HTTP response, and never try to deduce the mime-type from the file contents.

X-XSS-Protection

This header is used by newer browsers, and enables an automatic detection of XSS flaws. When this option is enabled, the browser will try to detect whether certain sensitive data in settings are made as shown in the page. If this is the case, the browser will block the rendering of the page.

X-XSS-Protection: 1; mode = block

This header is used with care, to the extent possible false positives could be very disadvantageous to your site. It is also possible to activate a “report” that in addition to blocking the page allows you to send a report to each flaw found.

X-XSS-Protection: 1; report = http://site.com/report

Conclusion

These HTTP headers can improve significantly the security of your web applications. Some of them are still handled with care and it is necessary to assess potential risks before using them. It is important to remember that these headers will have no effect for browsers that support, and will be ignored by others. They are therefore an additional layer of security for some of your users, but not enough in themselves -Same. It therefore remains necessary to apply the usual security best practices.

right? Man! What are you talking about?

Summer Internships: The Ultimate Guide To Get One

Hola!

As a student each one of us has a dream. Dream of doing a great internship and landing a job in a company that you really love and want to work for! There are jazillion websites, articles, blog posts and videos available on how to land an internship. Chances are, you’ve already read or know 98 percent of this advice: edit and proofread your resume and cover letters, dress appropriately for an interview, be on time or 15 minutes early to an interview, send thank you notes etc. You won’t get any such advice in this blog post. This post will take you from zero to one. Get a notebook and pen, this is going to be a long post. Grab some snacks and start making a note of points that you think would be helpful for you in the future.

I’m assuming you are currently in second year and you’ll be applying for your dream internship in third year. You already know C/C++ or any object oriented programming knowledge and basics data structures like Linked List, Stack, Queues etc.

Let’s divide the blog into three sections.

Things you need to do before applying for an internship.

Most of the US based companies start their summer internship interview process very early, in december. After your fourth semester that is completion of second year, you’ll have 1.5-2 months of vacation (depends on your college) and that’s the perfect time to improve your basics of computer science and coding skills.

I interviewed with 5-6 companies and from my experience here is the list of topics you should know (if you haven’t decided your field).

Data Structure Algorithms Networking Operating System Database
Linked List Complexity Analysis Network Layer Process and Threads SQL Query
Doubly Linked List Searching (Linear and Binary) HTTP Protocol Memory Organization Indexing
Queue Sorting Algorithms TCP & UDP Protocol Booting Process Normalization
Stack Basics of Graphs Subnetting Paging ACID Property
Hash Table BFS and DFS Masking Deadlock SQL Injection and Prevention
Binary Tree KMP Algorithm STMP and POP3 Starvation  
Binary Search Tree Robin-Karp Algorithm Working of PING Critical Section  
Priority Queue Dijkstra’s Algorithm TCP Handshake IPC  
Trie Prim’s Algorithm   Inode  
Suffix Tree Divide & Conqure and DP      

But Vicky, I would be applying for position specific internship. Where is my list?

Here you go!

Frontend Devs Backend Stuff Android Devs iOS Devs (I don’t know much)
HTML5 HTML Java Objective C
CSS3 CSS Android Versions and changes Swift
JavaScript Server configs Working with Android Studio  
JQuery Working with APIs Android UI and UX  
Saas Chrome Dev Tools Best Practices  
React Python, PHP or Ruby    
Angular      
Chrome Dev Tools      

I’m not listing here very basic stuffs like Working with Ubuntu, Curl and telnet command etc.

Note: You don’t need to do know everything mentioned in the table above. Algorithm and Data structure are very important to crack any interview so you should spent most of the time learning and practicing problems.

Vicky, That’s huge list! Are there any good resources available?

Yes! All the useful websites, PDFs and article links are mentioned at the end of the post.


Getting shortlisted for the interviews is the toughest part and for that your resume should be very strong and of very high quality. So what are the different factors that the recruiter would love to see on your resume?

  • College
  • Projects

    Yes, before applying for an internship make sure that you have some good quality projects to mention in your resume. Upload your code on Github, make it open source and add links to code in your resume. If you’re searching for project ideas, I have a list of more than 500 projects.

  • Open Source Contributions

    Search for good projects to contribute on Github improve documentation and fix bugs and do some enhancements. Companies really love it! If you don’t have a good GPA then projects and open source contributions really add value to your resume.

  • Past internships (If any)

    Before applying to top companies in US or India, you should do at least one internship in any startup. Startup internships are really a great place to learn a lot of things in a very short time. Don’t think of stipend, if you really love their idea just mail and ask them about internship positions. There are many websites available for startup internships list of websites can be found at the bottom of the post.

  • Leadership Qualities

    Volunteer in a non profit organization and be a part of college committees.

  • Programming Skills
  • GPA (rare)

Things you need to do while applying

Ok, now you have some good quality projects, you know basics of CS fundamentals and you have a good knowledge of data structure and algorithms. This is time to write a good resume!

Your resume should have following sections.

  1. Education

    Degree and stream, College Name, Current year and graduation year. Don’t include your GPA if it’s less than 7/10.

  2. Skills

    Be honest here and mention languages and framework only if you really know. Once you get shortlisted for the interviews, recruiter may ask any questions on that and you’ll be messed up badly.

  3. Technical Experience (If you have any)

    Write sentences in past tense. Use words like ‘created’, ‘implemented’, ‘designed’, ‘fixed’. Implemented X using Y or Implemented X using Y to fix Z. Where X = any new feature, Y = language or framework and Z = issue.

  4. Projects

    Same points apply to project as well. Don’t forget to add links of code or websites if you have any.

  5. Leadership Experience

    Add your volunteering or committee work in this section.

  6. Extra-Curricular

    All your competitive programming rankings, awards and hackathon related stuff goes here.

  7. Work Authorization

    You’ll be applying to US based companies so don’t forget to add this line.

I haven’t updated my resume since last two month but have a look at it once. Ignore objective section it’s just a waste of space.

Once you created your resume, proofread it 2-3 times. Ask your friends and employees to go through your resume and finally post your resume here. This subreddit is awesome and people are very helpful. It’ll be brutal but they’ll critique your resume brilliantly.


Now you have a very good resume and you know all basics of CS. The time has come to apply for best of the best internships!

This is the right time!

Yes! This is december 2016 and Internship process for Summer 2017 has just started. I have already created a sheet for you! Open this sheet and make a copy for yourself. Edit companies as per your preferences.

Apply everywhere! Don’t think that you don’t have a perfect resume, just visit their career website or LinkedIn internship posts and fill the form. I applied to more than 20 companies this year.

Once you get shortlisted for the interviews search everywhere about past internship interview process, questions on Glassdoor, Geeksforgeeks and reddit. When I got shortlisted for the internship at Slack, I searched everywhere about interview process and questions asked. I couldn’t find any except a post on reddit. If you don’t find anything and just goto this sub and post questions or search for past interns on LinkedIn add them in your profile and message them directly. Three out of ten people will give you perfect reply and this is enough for you!

Some tips from my side:

  • Read emails properly and search for keywords.
  • Be prepared for technical questions which don’t require programming knowledge.
  • Be polite while responding to emails. (Search how to send emails to recruiters :p)
  • Before interviews read the email properly and make a list of all the questions that can be asked.
  • Make a list of all the behavioral questions and their answers.

I have collected some interview experiences of top companies from different resources. I hope you find this useful.

Resources

For startup internships

Algorithms and Data Structure

Networking

Operating System

Web Stuff

FreeCodeCamp Best JavaScript tutorial (It’s a Russian website use Chrome to translate) W3Schools

Interview preparation

GeeksforGeeks - Interview IndiaBix CareerCup KateMats

Other

  • Awesome (This contains everything you need!)

Last thing:

Keep talking and asking to people who have more knowledge than you, networking is really important.

Disclaimer: I am not a recruiter or a brilliant coder who works in your dream company. I am a student just like you and I have spent last two months searching for the internship blogs, articles and interview experiences. I applied to more than twenty companies for summer internship and interviewed with some top companies and I’d be interning at Slack this summer. Read and follow things mentioned in this post at your own risk!

right? Run..Run fast!!

Competitive Programming or Open Source Development which one to choose?

Hello!

Nowadays I’m getting a lot of messages on Quora and Facebook about competitive programming. People ask me “I’m yellow on Codeforces, I applied to many companies but no luck. I never got shortlisted for any company what should I do?”. Today I’m going to write my own ‘personal thoughts’ about competitive programming and development.

Well, I realised competitive programming is not for me and I have totally stopped Competitive Programming. I do participate occasionally and I solve practice problems on different coding problems in free time to improve my Algo and DS concepts. Now I’m more involved in development I love open source. I love feeling of creating something for community it gives me more pleasure than seeing those green tick marks.

There is big hype of competitive programming in India. Students think that doing well in CP will give them the best jobs in big tech companies. Most of the students start CP without having any interest in it, they force themselves to participate in coding challenges to get good rankings so that they can mention it on their resume. They search for solutions on different online platforms which leads to cheating in coding competitions. Ask yourself at least once, do you really like competitive programming? Why are you doing CP? Just because few amazing people have got jobs in big companies like Google, Facebook and Microsoft through CP? Will Directi hire an engineer if he has 55 percent, considering the fact that he is a very good programmer and has solved 400 problems on SPOJ? There are many such questions are Quora.

Pros and Cons of competitive programming.

Pro

  • CP improves your logical and analytical skills.
  • It improves your algorithmic knowledge.
  • You can “pass” through interview of big tech companies because interviews are mostly algorithmic based and that’s what you train for.
  • You get free T-shirts in coding competitions and people give you respect.

Cons

  • You get addicted to competitions. In real life when you work in a company with lots of responsibilities, you can quickly lose motivation, when there is no one to beat.
  • You get used to small rewards and short-term goals. In real life when you work on a project it takes months before you get rewarded for the project you’re working on.
  • You know a programming languages exceptionally well but you don’t know any frameworks. It is more practical, time consuming and more boring to learn and you need to do it a hell-lot more often!
  • In CP you see WA, AC or TLE on a problem but in real life it takes huge effort in testing a software on different data sets, platforms and devices. It takes months in testing and finalizing a software.
  • Machine learning, Artificial Intelligence, Image processing and cryptography - you never used these in coding competitions. These are highly used branches of computer science in big companies.

Vicky, Tell me what Software development really is?

Software development is the process of computer programming, documenting, testing, and bug fixing involved in creating and maintaining applications and frameworks involved in a software release life cycle and resulting in a software product.

OR

Software development is the process of designing, building, testing and shipping a software that makes the world a better place.

If you’re making something using your programming knowledge to makes anyone’s life easier and simpler then you are a software developer.

Here I’m referring to Open source development

What are Pros of Open source Development

  • Solving Problems: This gives you a sense of accomplishment, at the end of the day, you can look back and point at something that you did or made or finished and many people are using your software.
  • Learning: You work on a real life projects whether it’s a simple android app, plugins, integrations, new frameworks or bot. You learn how to work on a real life project using different languages and frameworks following a software process. There are many awesome new technologies and framework available and people are coming up with new technologies and frameworks daily.
  • Open Source Community: Open source community is so huge and there are thousands of projects available on Github to contribute and work on. When you start working on open source projects you’ll get to learn how do big organizations work and maintain large codebase, Git and SVN version control mechanism, you interact with software engineer and developer from all around the world.

And what about cons?

  • It takes lot of time and effort but trust me that feeling of creating a software or application is amazing! Recently my friend create a bot for Slack which integrate with Moodle to show all your upcoming submissions. He was telling me about how he spent last ten days working on this and how it feels after finalizing the product.

Can only competitive programming get you placed or get you a good internship?

Absolutely Not!! (Assuming that you don’t any contacts in top companies, those who can refer you for the interviews!)

The toughest part in getting a job is to get shortlisted for the interviews. Big tech companies receive thousands of resume for one single position. You can get noticed by recruiters only by doing CP if you perform exceptionally well (ACM-ICPC WFs, Regional winners, CodeJam and FB HackerCup top 50s), but still have to go through those 5-6 rounds of interviews and it depends on lots of other factors too.

So Vicky, What do I need to do to get shortlisted for the interviews?

  • A very good resume so that you get shortlisted for the interviews.
    • A very resume can be built by doing some awesome projects.
      • Some awesome projects requires knowledge of new generation languages like python , Go, dart , JS, php etc and other frameworks.
        • To learn these languages you have to give time and best way to learn something is by doing.
  • Once you get shortlisted then you also need to have good knowledge of algorithms and data structures.
    - To learn Algo and DS you need to read and practice on website like Geeksforgeeks, CodeChef, TopCoder, LeetCode, CareerCup.
  • You also need a medium level communication skills.

Conclusion

In conclusion, I think both are very good for personal development. Through Competitive programming you will be well versed with data structures and algorithms and this will surely help you in cracking job interviews. If you choose Open Source and if you pick the right project, you’ll learn to write better, cleaner code (not necessarily faster), that’s broadly acceptable. You’ll learn to organize and document your code better, which is a critical skill. You’ll gain meaningful experience on your resume, which will lead to more interviews at good companies, whatever your experience or education level is. I’d suggest you to try both, if you’re doing only CP aim for ACM-ICPC, CodeJam and HackersCup and keep doing if you really love it.

Anudeep Nekkanti describes CP perfectly:

“I see that a lot of Indians are putting a lot of effort into competitive programming (mainly for placement offers) with not so good results. Trust me, do it with complete concentration for a month, by then you will exactly know if you have to continue in this field or not. If you feel you should not continue, stop it, do not hang on to it hoping for offers. Use your time on other stuff.“

ThumbsUp Awesome isn’t it?

My internship interview experience with Amazon, LinkedIn, BrowserStack, Mozilla and Slack

Hello!

It all started in December last year before going on a trip to North East, I had applied to 20+ companies for Software engineering internships. Twelve companies sent me that same Greenhouse rejection template, three companies said their summer internship positions are full and I got shortlisted for five companies.

I had already started my internship at CodeChef (Jan’16 - April’16), my daily schedule is 8 - 4 PM college and then 4:30 - 9,10 at CodeChef. I reach home by 11-11:30, so I used to sleep late and bunk lectures in college to prepare for the interviews. I’ll write about the interview preparation plan, books and resume tips someday later, Let’s discuss about the interview process today.

Mozilla

I applied to Mozilla through career website for multiple internship position in many places. I got shortlisted for Developer Tools (Device Simulation) and Engineering Build Productivity intern positions in Paris and Mountain View respectively. For both positions first round was on Hackerrank.

  • There were 4 - 5 multiple choice questions and two coding problems.
  • For each MCQs you need to give explanation as well.
  • Questions were very easy.
  • Allowed languages depends on the position you’re applying to. For me, allowed language was JavaScript only.

Questions can be found here.

I got rejected for Developer Tools (Device Simulation) Intern position in Paris after the first round and moved to second round for Engineering Build Intern (Mountain View).

  • Second round was on Skype.
  • Interview was a bit more technical, but easy. I had to write C program to reverse a singly linked list.
  • And interviewer asked me about my projects and internship.

I had performed well but I don’t know why they replied with this ‘we appreciate your commitment to Mozilla, we will unfortunately not be moving forward at this time.’ I said OK :p.

BroswerStack

I applied through career website and got a response after almost 20 days. First round was on Hackerearth. There were total three problems to solve in three hours.

Problems

  • XPath Query Parse
  • Docs Generator
  • Server Log Analysis

Among all my first rounds this was the most challenging. Detailed questions can be found here. I could solve just one problem in three hours and they rejected me.

Amazon

I got shortlisted for Amazon internship two times. Last year they asked me if I’m available for six months internship which wasn’t possible so I said No. This time I got shortlisted again for 3 months internship. Applied through career care website and received a response from them after 15 - 20 days.

First round was on Hackerrank. There were total 2-3 problems to solve in an hour.

Problems

Problems were easy, I solved all the three problems and moved to next round.

Slack

I had moved to second round of Amazon internship and suddenly one day BAM! Subject : ‘Phone Interview with Slack!’. I wasn’t expecting this as no internship positions were mentioned on the website. I had mailed them my resume only because I really love the product and wanted to work on it. Read this : Slack the evolution of messaging

Now I was just focusing on this internship, I didn’t want to lose this one.

Interview Process

There were total fours rounds. I can’t write about the question but here is the summary of it.

First round

First round was with the recruiter it was kind of behavioral interview.

Second Round

In the second round I was given a coding assignment with two tasks to complete in a week. Both the tasks were of medium level one Coding task and one design problem. This depends on the position you’re applying for.

I completed both tasks in 3-4 days and they took 4-5 days to review my solutions. I got a mail after a week saying I’m moving to the next round. Now this was very exciting I started working hard for the next interviews. Next interview was with my mentor and senior engineering manager. I solved almost 50+ problems in 3-4 days on different coding platforms like LeetCode and TopCoder. I was expecting it to be very technical.

Third Round

Third round was with the Manager and it wasn’t very technical.

Fourth Round

After, a week I got an email saying I’m moving to the next round. Now this was so exciting and I was trying my hardest. Fourth round was very surprising. We talked about the company and my previous interviews. Finally, I was offered the internship on call. :D

Frankly telling I had never imagined that I’d intern in the US. I accepted the offer and will be joining the company in June. Recruiting team is very friendly and helpful. I’m very excited to join the Automation and Testing Team this summer at Slack.

LinkedIn

While I was interviewing with Slack (Third round), I got shortlisted for the LinkedIn Internship too. They send me a link of a coding challenge on Hackerrank. I wanted to solve the coding challenges. There were total 3 problems to solve in 3 hours.

Problems

I can not share the full problem statements but problems were purely algorithmic.

  • Angry Children : Distribute X candy packets to K children. A greedy problem.
  • ZigZagArray : Print Array in Zig Zag manner based on some conditions.
  • Acme Substring : String Based problem.

After the first round I mailed them about my Internship at Slack.


Getting a great summer internship should absolutely be your first priority, nothing else will beat the things you’ll learn and experience. The amount of impact you’ll end up having cannot be matched easily, especially as a student. As a third year student it was my first priority too. I applied to 20+ companies from Best of the best to average companies. One thing that I learnt in these three years is that networking is really important. You should talk to employees, recruiters and alumni. Tell them what you’re doing currently, tell them about your projects, past experiences and publicize it on sites like ProductHunt, Reddit and Hackernews.

There are so many opportunities available so the first step to getting an internship, is apply. A lot of people I know are just too afraid to apply, even to companies they really want to work at because they are waiting to get the perfect resume. Even I used to feel the same thanks to Krish Munot he’s an awesome guy! Last year in december we were discussing about the internships.

Here is our short discussion on FB:

Me : I’m thinking of applying for the internship .. next sem for the full time

Krish: Don’t think. Just apply. Most people make this mistake of not applying. Did you apply for the summer?

Me: No..not sure whether they would shortlist me

Krish: That is there decision bro. Maybe they might think you might be the right fit. Damn! Dont do this ever again man..trust me! You are losing out on a lot of opportunities like that..

And this was true! Thanks to my family for all the support and Special Thanks to Krish for all his motivation and encouragement.

That’s all! In my upcoming posts I’ll be writing more about the resume and interview tips. Stay tuned for updates!

Image Source : Flickr - San Francisco City


Slack the evolution of messaging

Hello!

In the past years, many messaging applications invaded the market, gaining lots of fans and offering many free features that almost destroyed the traditional SMS messaging.

One of the biggest issues with introducing new apps to a community is adoption - it’s just so hard to get people to adopt new things. Don’t shake your head, us people in the tech community are no different. Try getting people in a high-tech engineering team to move from SVN to Git. Yeah, that’s an exercise in futility.

Well, I’m using Slack for multiple team communications since last 8 months and it’s simply awesome! I have also built couple of bots using Slack API.

Reasons why Slack is better

  • Available on PC, Web and Mobile These services are ideal if you want to use the app while sat down at your computer, as well as on the go.

  • You don’t need a sim card to log in The app is not connected to your phone number, so you can use it on devices such as tablets without needing a sim card.

  • You can send documents

  • Substantially smaller app size (iOS app) A smaller app size means that app will take up less space on your device. This leaves more space for other apps, as well as other data such as photos and music.

  • You can stay invisible and switch off notifications You don’t have to logout in order to appear offline. WhatsApp will send you message if your data service is on, there is no way to stop messaging or go offfline. I find this really irritating sometimes.

  • Is a social network It is a social network, which has features such as commenting and tagging. This means you can share content quickly and easily and engage with a community.

  • More reliable web client WhatsApp web client constantly gets bogged down and needs to be refreshed. I often find myself not getting notifications messages. Slack Web app remains open with instant notifications.

  • You can use channels to keep conversations separated.

  • Better privacy Slack is designed for communication in teams and does not ask for permissions to acess address book and uses strong encryption in its message format.

  • Higher rated on the App Store
    4.5 vs 4 (WhatsApp) The app has a higher rating on Apple’s store, showing the overall quality of the app and user satisfaction.

Apart form this I have also used HipChat, IRC, Campfire and many other messaging and team communication apps. There is an impressive level of polished UX spinning every aspect of Slack that is matched by very few apps anywhere. Everything from the on-boarding to the way mobile push notifications happen where you’re AFK, to the way it atomically gives you discounts for inactive users is just incredibly well designed.

And yeah the integrations! which are where Slack makes everything else look like amateur hour. There are over hundreds turn key integrations, each of which is impeccably designed and offering comprehensive coverage of the service’s features ranging from webhooks to full API access that give you more granular control and customizability.

Imagine the delight of posting a link to a Google doc, then finding the content of the document indexed and available in search. This goes far beyond cosmetic, Slack is executing on the vision of being the actual go-to communication platform for a whole team, potentially taking a major bite out of email in a way few things have been able to in a professional setting.

Few features that can make Slack even better

  • Show that someone is typing We should be able to see when someone is typing a reply in a channel, that can prevent confusion while discussing something.

  • Send your location Send a stamp to someone with your current location. This saves a lot of messing around with directions. This may not be a great feature but obviously it’s good to have.

  • Message delivered and seen User should be able to see when someone opened your message, so he/she knows whether or not it has been read yet. Well, this features has it’s own views sometimes, I feel I don’t want user to see this whether I have read those messages or not so it can be something like if I hide read status, I shouldn’t be able to check other’s too!

  • Contacts integration There should a way to quickly invite a phone contact to a particular channel, and user will have only access to that particular group only. User have to use his/her email to join the Slack team. Their will be really helpful.

If I talk about WhatsApp, With 1 Billion users, virtually everyone including your grandma is on WhatsApp now, and hence ‘adoption’ is really a big challenge.

Slack can be used for all team communication purposes. Universities and college students should try Slack. Slack is a lot more business orientated and that definitely shows whereas WhatsApp has the convenience factor for people. Give it a try and see what you think. Upload some gifs and create some custom emoji. Integrate with the services you already use. Explore what’s possible with the application and it will be hard to go back to vanilla IM again.

The load’s of messaging apps flooding the market today and making the digital life of people more complicated than ever will leave only the best contenders in this IM app tussle.

What do you think? Post your comments below.

7.5 And Below

Most people look at Millennials and have a negative connotation with them. We suck at coding. We had everything given to us. We love technology. We rely on StackOverflow, W3Schools and GeeksforGeeks. The list goes on.

But we aren’t trying to piss off every other generation, we are only trying to impress them . See, the other generations are in the workforce. We are the ones trying to fit in. But, sometimes we don’t fully get the chance to explain our experience. Sometimes we are limited to few numbers, or even a sheet of paper. How can we be limited to talk about our vast experiences and lessons?

In today’s recruiting world, there are two ways of searching for a student. The first is the traditional ‘Let’s check out their GPA’ and the second is the newer option, which looks at the student’s full experience. The strange part is, most companies still use the first way.

Let’s talk about these two processes.

Method 1

The GPA approach. This is still a widely used approach of looking at college students. If a company is looking for a new grad Software Engineer, then this is the way to go. They want the best computer science students with the best GPAs because they will go by the norms and rules. Why? Because that student followed the norms to get that GPA. Yes, they busted their ass, but did they fully explore ideas? Were they most creative? Did they ask how, why? But, an early stage startup, might not want that 9.0 GPA. That firm is going to want that student who was creative, out of the box, and didn’t like the normal ways to do something.

gpa

Method 2

This is the innovative way. The ‘people’ way. Yes, GPA is a factor in placements, but is it the right way to judge a student? Why look at a number that only represents such a small part of the college experience? If you look at GPA only, you will miss internships, work experience, organizations they are part of, leadership within those organizations, and other kick-ass experiences in which they learn as much as they do in the classroom. See, with all of these extra curricular activities, students actually gain real life experience. You can learn as many concepts in class, but until you apply them in your life, you won’t remember or fully understand them.

Conclusion

Either way, some companies are going to use the Method 1 for a long time. That’s okay, those firms are probably larger and not ready for the change. But, the innovative companies, the ones that understand change, will be using Method 2. Why? Because they want their employees to gel personally, because that’s when the most creative work is made.

Why the title “7.5 And below”?

Ok you might be wondering what’s the logic behind the title? :p

Well, I and few of my friends have very low GPA and a company visited our campus for the internship. They had the criteria as 7.5 and above so we couldn’t sit for the internship. Now we see in our dreams the company job criteria 7.5 and below. :)

image source : Google, flickr


Git. Play. Love.

Hello!

What this post is about

  • It is a tutorial for beginner to intermediate git users on advanced git topics and practices.
  • It is a practical.

What this post is NOT about

  • It is not philosophy or theory. (I will not be discussing the pros and cons of merge and rebase. You all can fight that battle elsewhere.)
  • It is not super complex or overly achaic.
  • It is not preachy. (see the first point)
  • It is not in any way exhaustive. This is a list of git commands, tips, tricks and tools I personally find useful and use it nearly every day.

This is a series of things I often discover people struggle with, don’t know how to do, or have bizarre work arounds to get this information. You may know some or all of these already. But these are the things I learned while working on open source projects and contributing to other’s repository. I hope you find something in here and I hope it saves you time. NOTE: I use homebrew in Mac OS and default shell in Ubuntu system. I know 90% of you reading this probably use bash.

Ok let’s get started!

Shortcut for creating a new branch and switching to it

git branch foobar && git checkout foobar
git checkout -b foobar   #same as above command

Change your editor for commit messages

git config --global core.editor 'subl -w' # Sublime
git config --global core.editor 'mate -w' # TextMate 
git config --global core.editor vim # The Lord's way
git config --global core.editor emacs # Insanity

Diff between remote local

git status 
On branch test_branch 
Your branch is ahead of 'origin/test_branch' by 1 commit. (use "git push" to publish your local commits) 
nothing to commit, working directory clean 
git diff # returns nothing because there is nothing different between our locals 
git diff vicky002-git # same exact thing as above. git-talk here refers to your local 
git diff vicky002/vicky002-git  # diffs between remote and current local branch 
diff --git a/foo.txt b/foo.txt 
index 257cc56..5716ca5 100644 
--- a/foo.txt 
+++ b/foo.txt 
@@ -1 +1 @@ 
-foo 
+bar 
$ git diff vicky002/vicky002-git vicky002-git # diffs between remote and specified local branch 
diff --git a/foo.txt b/foo.txt 
index 257cc56..5716ca5 100644 
--- a/foo.txt 
+++ b/foo.txt 
@@ -1 +1 @@ 
-foo 
+bar

“But vicky, this seems unnecessary. I can clearly see in git status that I have a commit that’s not pushed yet.” You’re correct! This isn’t world’s greatest use-case example. However, I use this most often when I need to see what changes might be incoming or to diff between my branch and master. If you’re working on a feature branch for few days, and want to see a diff between your feature branch and master doing git diff master feature_branch will only show you diff between your local copy of master and feature_branch. What you need to do in this situation is this -> git fetch origin && git diff origin/master feature_branch. The fetch is important here. NOTE: If you’re unclear on the difference between fetch and pull I highly recommend you take 15 minutes and read up on it.

How to check out a file from one branch into another

git checkout -b madness 
Switched to a new branch 'madness' 
echo 'Say Hello to Vicky!' > vicky002.txt 
cat vicky002.txt 
Say Hello to Vicky! 
git add --all && git commit -m 'Added vicky002.txt' 
[madness 728f16f] Added vicky002.txt 
1 file changed, 1 insertion(+) 
create mode 100644 vicky002.txt 
git checkout -b not_funny 
Switched to a new branch 'not_funny' 
echo 'Vicky this is not funny at all!' > vicky002.txt
cat vicky002.txt 
Vicky this is not funny at all!
git add --all && git commit -m 'Added vicky002.txt' 
[not_funny 6fea3ec] Added vicky002.txt 
1 file changed, 1 insertion(+), 1 deletion(-) 
git show madness:vicky002.txt # Prints the contents of vicky002.txt from branch madness  
git checkout madness -- vicky002.txt # Checks out madness' version of vicky002.txt to branch not_funny # This is a perfect example of the insanity of git. You use : to show between branches but -- to checkout. 
cat vicky002.txt # now this branch's vicky002.txt is the same as madness' Say Hello to Vicky!

Combine multiple shorthand flags into one

git commit -n -m 'This is a commit message.' 
git commit --no-verify --message='This is a commit message.' 
git commit -nm 'This is a commit message.' # This is the same as the above two!

Combine paragraphs from the commandline with you commit message!

git commit -m Hello -m is -m it -m me -m you\'re -m looking -m for\? 
git log -1 # Using -Number limits the log to that number of commits. 
commit facbbb49d88182b50d8383323acae6696e33ff63 
Author: Vikesh Tiwari <hi@eulercoder.me> 
Date: Sun Jan 24 19:12:44 2016 -0700 
Hello 
is 
it 
me 
you're 
looking 
for?

Also, notice you don’t to use a string for your commit message if you escape. Not really useful, just fun to point out.

Stashing with a message and stashing untracked files

At the beginning of this I said I wasn’t going to preach. I lied. Always stash with a message. Just do it.

git checkout -b pikachu
Switched to a new branch 'pikachu'

echo 'lightning bolt' > attacks.txt

git status --short
?? attacks.txt

git stash save --include-untracked 'Creating attacks file for Pikachu.' # Shorthand for --include-untracked is -u
Saved working directory and index state On pikachu: Creating attacks file for Pikachu.
HEAD is now at 33b6d46 Bug fix for pokemon scapers.

git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.

git stash list
stash@{0}: On pikachu: Creating attacks file for Pikachu.

git stash show # In general this command isn't very useful. Just show's a diff of lines changed. But it's particularlly useless at this point. It doesn't show anything because attacks.txt isn't tracked by git. Git can only tell you information about things it has been told to track.

git stash pop && git add --all && git commit -m 'Initial commit of attacks.txt for Pikachu.'

echo 'shock' >> attacks.txt
git diff
diff --git a/attacks.txt b/attacks.txt
index e8eb403..4642b97 100644
--- a/attacks.txt
+++ b/attacks.txt
@@ -1 +1,2 @@
lightning bolt
+shock

git stash save 'added shock to the list of attacks'
Saved working directory and index state On pikachu: added shock to the list of attacks
HEAD is now at 97921a2 Initial commit of attacks.txt for Pikachu.

git stash show 'stash@{0}' -p # NOTE: the -p argument is short for --patch
diff --git a/attacks.txt b/attacks.txt
index e8eb403..4642b97 100644
--- a/attacks.txt
+++ b/attacks.txt
@@ -1 +1,2 @@
lightning bolt
+shock

By default git stash does not stash untracked files. Throw a -u on the end. Also, git stash list shows your stashes, however the default message it saves with it is the message of the latest commit and the branch you stashed it on. This is… super unhelpful. Make sure to add save to your git stash command and follow it with a message. You’re really smart. You’re also busy and you will totally forget what the hell is in your stashes if more than say 15 minutes pass. I promise you. Then when you come in the next day and run git stash list and see a list of stashes with commit messages that have nothing to do with the work in the stash you’ll want to scream.

Getting your stashed stuff!

git stash apply stash@{3} will apply fourth (it’s zero-indexed) stash’s content to your current branch and the stash will remain in the stash list. However, git stash pop stash@{3} will remove the fourth stash from the list moving all stashes after it up one on the index. pop is probably what you most often want, but it’s also more dangerous for obvious reasons. If you would rather use apply you can safely run git stash drop stash@{3} after you’re cool with getting rid of that stash. With git stash list the stashes reindex after you remove a stash.

Let’s say you have three stashes. If you try to do something like this git stash drop stash@{1} && git drop stash@{2} this will fail because the stash at index 2 is now at index 1 after having dropped the stash at index 1. When removing multiple stashes remove from the highest numbered index on down or… just be really really careful.

Clean up after yourself with git rebase – interactive

When you work on a project or contributing to others code. At the end of the features and fixes, you’ll have tons of shitty commits. It’s just the way things work. When I was working on Apple’s Swift repository I made lot of changes and made tons of commit. Developers and owners always ask to squash all your commits into one. Those commits aren’t going to be helpful to anyone once this is merged to master. And some day if they find a bug and have to do a git blame and see that vicky002 committed this code six months ago with the commit message “WIP. Fixed shit.” they are going to (rightfully) curse my name. Lets not be that person. Lets use interactive rebase.

git rebase --interactive 
branch_you_want_to_rebase_against_typically_master # That's it! You can also use the shorthand -i flag.

This is very, well, interactive mode. Git really holds your hand and gives you lots of nice messages. When you run that git will open your text editor and have a list of all of the commits on your branch that are not on the branch you’re rebasing against.

# Rebase c4758c3..c4758c3 onto c4758c3 (1 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

See all that lovely help from git? There’s not much more I can add here. You literally just follow along and git tells you what to do. I bring this up entirely because people seem to rarely use it.

Interactively add your changes to the commit stage

git add --patch

Note — this only works with files that are already being tracked by git. It does not work with untracked files. Split is super powerful and conveinent. If it gets really hairy you can use e to manually edit the hunk.

From the help:

Stage this hunk [y,n,q,a,d,/,e,?]? 
y — stage this hunk 
n — do not stage this hunk 
q — quit; do not stage this hunk or any of the remaining ones a — stage this hunk and all later hunks in the file 
d — do not stage this hunk or any of the later hunks in the file 
g — select a hunk to go to / — search for a hunk matching the given regex 
j — leave this hunk undecided, see next undecided hunk 
J — leave this hunk undecided, see next hunk 
k — leave this hunk undecided, see previous undecided hunk 
K — leave this hunk undecided, see previous hunk 
s — split the current hunk into smaller hunks 
e — manually edit the current hunk 
? — print help

When doing a comparison make sure you’re comparing against the latest remote version with fetch

git diff master # diffs current branch against your local copy of master
git diff origin/master # will probably do the same thing as above in *most* scenarios.
git fetch origin && git diff origin/master # diffs current branch against what is *truly* on remote master

Squash your commit if the branch is truly a mess

If your branch’s commit history is a complete mess but you know you want what is there currenlty another branch (most likely master) – squash is your friend.

git commit -m 'hey'
[new_branch bacb008] hey
1 file changed, 10 insertions(+), 2 deletions(-)

git checkout master
Switched to branch 'master'

git merge new_branch --squash
Updating 051c56b..bacb008
Fast-forward
Squash commit -- not updating HEAD
README.md           | 20 ++++++++++++++++++--
awesometextfile.txt |  3 +++
2 files changed, 21 insertions(+), 2 deletions(-)

git branch --merged # To list local branches that have not been merged run --no-merged
* master

git branch -d new_branch
error: The branch 'new_branch' is not fully merged.
If you are sure you want to delete it, run 'git branch -D new_branch'.

git branch -D new_branch
Deleted branch new_branch (was bacb008).

Vicky, what if I want just a single commit from one branch into another branch?

git checkout branch_you_want_to_move_commit_to && git cherry-pick 240982d 
# You don't need the full sha, just enough that git understands it.

This can be a tad dangerous. Specially –git will assign a new sha to the cherry-picked commit. Which means git will now have record of two sha’s with the same exact changes. Proceed with caution.

Vicky, what if I want to figure what commit broke my favourite fature?!

Bisect is your friend! (Seriously the doc is worth reading!)

 git bisect start
 git bisect bad # without passing a SHA it uses HEAD
 git bisect good SHAofLastGoodKnownCommit
 # At this point git takes over and tells you how many rivisions to test. Through a series of good and bad confirmations it will then tell you the bad commit.
 # Shoot off an email or slack message to the author with the commit sha or fix yourself if you're confident of the intended change in the commit or if you're the author
 git bisect reset # DO NOT FORGET TO DO THIS PLEASE. IF YOU FORGET YOU WILL BE VERY ANGRY LATER.

More diffing!

$ git diff ref1:path/to/file1 ref2:path/to/file2 
$ git diff origin/master -- [path/to/file] # Much simpler if you're diffing the same file at the same path.

Reset can be gentle too, you know

If there is a commit you just flat out don’t want to have and want to fix it and it has not been pushed to the remote branch yet use reset — soft

git reset --soft HEAD~1

Finally

Git is a tool. It is a means to an end. Not the end. Mastering your tools is a essential in becoming a better and more efficient programmer. However, use whatever you feel more comfortable with. If you are happy with your GUI Git applications of choice then use it. Occassioanly though these apps cause problems and you gotta jump into the commandline and get your hands dirty.

References

Wait, wait.. How do I..?

If you have any more questions, or suggestions, add them in comments. I’ll get back to you.


Code Every Day

Hello!

Fourth blog post after 20 days! I have decided that I’ll write one blog post each week. But time constaints aren’t allowing me, I am quite busy nowadays, morning 7 to evening 11 this is my timing, college and then my internship. But I don’t feel tired, this is time to learn things and accept challenges!

ok so,

I read a blog post and now I’m inspired by John Resig (Who was in turn, inspired by Jennifer Dewalt), I am going to write code every day, starting today. I hope to write about my coding progress regularly on this blog.

Why I intend on writing as I go along

  • Obligate myself to actually code every day (though this may not work because this blog has practially no readership)
  • Keep a log of my progress over time
  • Recall the reasoning I used when justifying decisions (e.g. this list describes why I decided to blog while doing this)

What I hope to gain from this

  • Better programming skills and intution. Improved familarity with tools, paradigms, etc.
  • Improve my algorithmic knowlegde.
  • Learn new languages, frameworks etc. by application rather than just reading docs.
  • Create some interesting projects, hopefully some worth mentioning in a technical interview or something (for those “describe a time you ran into a problem when programming and how you fixed your problem” type questions)
  • Spend free time more productively (as of now, coding seems like a much more useful way of spending my free time then chatting on WhatsApp or watching prank videos on YouTube)
  • Meet people, become more familiar with the many programming communities on the internet.

Ideas what to do each day

This section is more of just a brainstorm/dump of different ways I can code each day.

  • Learn a new language or framework. On my to-learn list: Dart, Go, R and other JavaScript web frameworks.
  • Solve problems on different Coding platforms and Interview problems.
  • Play with APIs and write tools for myself and the community.
  • Contribute to open Source projects.

What are the projects currently I’m working on

  • Charmandar : A New Bot for Slack, I’m trying to bring Google right there in your Slack channel. I’m working on it since a month and it is still under development.
  • Milotic Theme: Milotic is a new theme for all text editors available. Theme for sublime and Visual Studio is available and under development for other text Editors.
  • FCC-Downloder: FCC-Downloader is script to download all your solutions on FreeCodeCamp.
  • FreeCodeCamp: Next Week I’ll analysing data of FCC. You can join the gitter channel for more information about the project.

That’s all!

If you’re interested in reading my posts, you can leave your email here (expect one mail in a week :) ).

A Comprehensive Personal Year In review (2015)

Hello!

Scrap the socks and the smellies! Why not treat someone special and yourself, to something worth having this Christmas? Christmas and New Year holidays are the perfect way to really celebrate the festive season in style. Whether you choose to warm up on a golden beach somewhere, or explore an exciting city at its brighest and best!

This post is about happiness: the warm fuzzies, a contented sigh, feeling cheered up, happy as Larry, or like a dog with two tails. Call it what you will, we experience moments of happiness every day, for all sort of reasons.

Well, 2015 is now almost over, and it’s been a great year for me and my family. It’s great to look back and see all the best things happened this year.

Here is the rewind of 2015

January 2015: It was just the start of new semester. Boring college, boring lectures. I never liked going to college. On 28th Jan, I reached home from college and got to know that Pawan bhai (my brother) bought a car(Audi) :sunglasses: in US.

car

February 2015: Nothing really exciting. Well, > We are all here on earth to help others; what on earth the others are here for I don’t know. :smile:

March 2015: Yeah! March was the new beginning for me. I was in touch with the CodeChef Team and on 26th March, I got an internship at CodeChef. This is the best thing happened to me this year.

April 2015: I had just joined CodeChef, all my days were really exciting and fun with meetings, dinners, watching movies, cracking jokes. The CodeChef team is awesome! I was learning something new every day.

May 2015: On 23rd May, Mukesh bhai (my brother) got graduated from Cornell University.

graduation

June 2015: June, an amazing month! After an year Mukesh bhai was back to India with his Masters degree. The CodeChef team was busy in SnackDown World finals. Busy but it was a great fun and we shared some of the best moments, late night cricket in office, dinner at L W Marriott Hotel :smile:! Working and setting up the Arena. Those days were awesome! I got to meet some of the best coders of India.

SnackDownIDs

Pic: Our ID Cards Me with Shivam and Vishal (interns) and ignore that typo :smile:

Me with

Pic : Me with CodeChef Team and Directi CEO and CTO

July 2015: Mukesh Bhai moved to US this time to start his career at Amazon! 19th July was his first day at Amazon.

August 2015: Nothing really exciting. Well, > If you’re going to do something tonight that you’ll be sorry for tomorrow morning, sleep late.

September 2015: I and two of my friends Siddharth and Shaquib started working on a Startup ‘BooksBarter’ - An online marketplace for buying and selling of old books. It was really hard for me to manage everything college work, my internship and startup. I completed six months at CodeChef and left CodeChef on 22th September. Frankly speaking it was really hard to leave that place. While leaving the office, I had almost cried.

Few days later on 29th September Bhabhiji (Sister in law) got placed in Microsoft.

CCTeam

Pic: Me with The CodeChef Team and IOI Interns

October 2015: Nothing really exciting. Well, > It takes considerable knowledge just to realize the extent of your own ignorance.

November 2015: November again an awesome month! Bhai and Bhabhiji (Microsoft Couple) were back to India. It was a festive Season and family time. I had great moments with my family.

December 2015: Brother Moved to US again. I was busy working on few projects. I spent lot of my time during open source. On 4th December, AlgoWiki was trending on github. I created two bots The L for Twitter and Slack. Slack liked and retweeted my post. Slack-TheL was featured in Python Weekly. Lastly I had applied for an Internship at Bon Happeetee, I really liked their concept and wanted to work with them. I interviewed with Pramit Sir (CTO) and Finally I was offered an Internship.

I am going on a trip to North East with college friends to celebrate New year. I’ll be back on 5th and from 7th Jan I’ll start working at Bon Happeetee.

Goals for 2016

Ok so it was all a happy and cheerful year, but there are some things I’d like to work on for 2016. I’m listing my resolutions publicly for the first time because I think that public accountability is a huge motivator.

  • Lose xx Kgs (Not listing the number here): I have gained a lot of kgs this year. I’ve already been following few blogs and diet plans and plan on continuing it.

  • Running on alternate days: I have started running since last month and now I really love going out in the morning.

  • Write more: I have decided that I’d write at least a blog post each week.

  • Read more: Read one book in a month.

  • Improve and participate in public speaking

  • Do better in college

  • Less Facebook: I log on to facebook multiple times a day, but hardly post anything (one post in 3-4 days). I’d still like to be able to avoid using Facebook for checking random stuffs that people post on there.

  • Do lot of open source: I love to spent my time on Github working on projects, contributing to other’s code. I’d keep on doing that. Most of my projects aren’t really of very high quality, I mean it doesn’t really involve a lot of coding. A Netflix Engineer suggested me on reddit > Your goal is to prove that you are a software engineer. This means that you can show that you’ve something decently complex from beginning to end.

So now, I have decided to start working on complex projects and create something! Also Maintain my GitHub streak.

  • Improve Networking: I did work on that a lot this year, and it seems to have worked; I’d like to continue working on that.

So that’s about it. That was my year. How was yours? I’d love to hear your story. Email me or tweet at me. I reply to everything I receive.

Lastly..

With all good wishes to you and your family for health and happiness throughout the coming year. May the joys and blessings of the Holiday Season be yours. Merry Christmas and Best Wishes for Happiness in the New Year

CCTeam

See you Next year! :smile: :beers:

This is my third post. If you’re interested in reading my posts, you can leave your email here (expect one mail in a week) :) .

How to create Slack Bot using Wolframalpha API

Hello everyone,

It’s been four days, my exams just got over. During exam time my thought process reaches at its peak and I get so many project ideas, I feel like “I should try this and this. I should start coding right now. What am I studying!? It’s of no use lets create something and fuck this!” LOL :D

Ok I’ll write all my thoughts someday later. Let’s come back to topic. I read a thread on reddit about Wolframalpha API and I decided to try my hands on it. I created two Bots using Wolframalpha and both work very nicely see some of the best tweets from L . There is an issue with Wolframalpha API it allows only 2000 API calls in a month, you need to take their paid plans if you make heavy usages.

This tutorial is about How to create your own Slack Bot using Wolframa API. I created one but you can not use it directly as it uses my App-Id and can make only 2000 API calls. (Obviously I’m not going to spend my money)

You need basic knowledge of python to create your own Bot.

Steps to create Slack Bot

Step 1: Basic Stuff

  • Dev Wolframalpha
    • Go to developer Wolframalpha and create your account.
    • Go to My apps section and click on Get an AppID.
    • Note your AppID. You will use this AppID to make calls.
  • Heroku
    • Go to Heroku and create an account there. Heroku allows you to deploy maximum 5 apps on the cloud for free.
    • Once you create your account there. Go to Dashboard.
    • Click on the ‘+’ sign on the top right, create a new app.
    • Write the name and click on Create App.
    • You will be redirected to your app page. Click on Connect to dropbox. I’ll tell you the reason why we are choosing dropbox to for our code hosting.

step 2: Changes in Code

  • Download my repo in Zip or fork it to make changes on git in the future.
  • Files in your directory - LICENCE : This is my LICENCE file. - Procfile: This is a startup file and tells what is first step when we deploy our app on the cloud. - app.json: It is a manifest format for describing web apps. It declares environment variables, add-ons, and other information required to run an app on Heroku. This document describes the schema in detail. - app.py: Main part of your project. - config.py.example: config.py files store variables and other stuffs which is used in your project (Flask). - requirements.txt: This file specifies Python Module dependencies. All the required modules would be downloaded first while deploying your app. Read more about it here.
  • Changes to be made - Open your project click on config.py.example file and add your APP_ID in single quotes. - Change the name of the file from config.py.example to config.py. - If I upload my config.py file on GitHub, anyone can use my APP_ID to make calls. That’s the reason naming it as config.py.example :p

step 3: Upload your code on dropbox

  • open your dropbox account.
  • If you have connected your account to dropbox as mentioned in step 1. Open this link.
  • You’ll see a folder with the name of your app on heroku .
  • Open that folder and upload all your files there.

step 4: Deploying your app on Heroku

  • Open your Heroku Dashboard.
  • Click on your app and then deploy.
  • In deploy tab, in Deploy changes section. Write commit and click on Deploy.
  • This will download all the app dependencies. If everything is fine, you will see a green tick and your deploy is on the cloud!

Step 5: Integrate it in your team

  • Open your slack. It should be like {your_slack_url}/home.
  • Click on Integration in the uppper left section.
  • Click on Configured Integrations.
  • click on Add next to slash Commands. - Command : thel [If you want to change this check explanation of the code below] - URL: {your_herokuapp_url}/thel [This can be changed see, code below] - Customize name : Give it some name. I gave it The L. - For the Autocomplete help text, check to show the command in autocomplete list.
    • Description: The Genius L, is now in slack to answer all your queries OR [anything you want to write].
    • Usage Hint: [search query]
    • Descriptiive Level: Search Query

Step 6: All Done!

  • Open your slack channel and type /thel or [your command] and type Query.
  • Everything is working fine you will see the result.
  • Try basic Queries first for the testing purpose, it will give instant response.
  • Congratulation you just created a new Bot for your own Team!! Have fun! :beers:

Explanation of the Code

I already explained usages of the files in the directory. I created this Bot using Wolframalpha Module and Flask framework. You should know working with python modules and all the syntax to understand the code.

Here is the explanation.

__author__ = 'vikesh'  # this is the author name 

import os  # This module provides a portable way of using operating system dependent functionality.
import wolframalpha 
# I have used Wolframalpha module, written in python to work with Wolframa API.
# Read more about it here : https://pypi.python.org/pypi/wolframalpha

from flask import Flask, request, Response, redirect
# Modules from Flask



try:
    import config       # Import config.py file 
    wol_id = config.wolframalpha['app_id']   # assign APP_ID from config.py to wol_id
except:
    wol_id = os.environ.get('APP_ID')   # load envoironment variable


if not wol_id:        # if wol_id is not present display error and exit
    import sys
    print 'No config.py found exisiting...'
    sys.exit(0)


app = Flask(__name__)     # initiate flask app

client = wolframalpha.Client(wol_id)      # this is from Wolframa moudule. Initiate Client using Wol_id


@app.route('/thel',methods=['post'])
def thel():
    '''
    :Example:
    /thel current weather in mumbai?
    '''
    '''
    this is about routing of the URL in flask.
    If you want to change the command from `/thel` to something else. you have to change the app.route('/thel') to 
    your own command. Also change the function name.
    '''
    text = request.values.get('text')    # Get Query
    try:
        res = client.query(text)       # Get result from Wolframalpha API.
    except UnicodeEncodeError:    # if coudln't get the response show error.
        return Response(('Sorry I did\'t get you. Would you please simplify your query?'
                        '%s is not valid input.' % text),
                        content_type='text\plain; charset=utf-8')
    resp_qs = ['Hi Top Answer for "%s"\n' % text]    # if Query is successful show result.
    resp_qs.extend(next(res.results).text)     # iterate the result 

    return Response(''.join(resp_qs),
                    content_type='text/plain; chatset=utf-8')     # return response.

@app.route('/')
def hello():      # if someone tries to open the link directy redirect him somewhere :p
    return redirect('https://github.com/vicky002/slack-TheL')


if __name__ == '__main__':   
    port = int(os.environ.get('PORT',5000))    # run your app on local
    app.run(host='0.0.0.0', port=port)

Hope it helps!

Please comment below for the issues related to the post and anything related to My bot Please use the issue tracker to report any bugs or file feature requests.

This is my second post, I have thought of writing one post in a week. If you’re interested in reading my posts, you can leave your email here (expect one mail in a week) :) .

Hello World

Hello everyone :)

I just decided to start posting in my own blog. I have two blogs with some friends on Quora and Blogger. All posts were mostly on Algorithms and others Technical stuff. My last post was a long time ago(because it’s not exciting anymore).

I don’t really like Blogger or Wordpress. Yeah, I just don’t like it. I think both are very heavy and slow. I have decided now that I’ll try use open source platforms, softwares as much as I can. So, I decided to give a chance to Jekyll Bootstrap.

I’ll not blog about “how to setup Jekyll”, you can read it here.

It’s really simple to configure and put to work, write posts, pages, and you can see the modifications on your local server. And Yeah, it’s really fast!

In two hours, I updated the twitter bootstrap version, hacked jekyll to be responsive, worked on posts listing and setup author and other things like analytics and disquss. It also have built-in support for Disqus and Twitter/G+/Facebook/etc (aka addthis) buttons.

In short Jekyll is great, and I really liked it!

This is my first post, I have thought of writing one post in a week. If you’re interested in reading my posts, you can leave your email here (expect one mail in a week :) ).