2016: Year (and a half) in Review

I wanted to write an EoY Review post last year like I did two years ago but I didn’t as I was too busy making sure 2016 was beginning with my most important goal for that year—overcoming my fear of coding and becoming a better programmer. 2016 has been a great year of personal learning and I want to celebrate its passing by documenting some of that learning and experiences.

But before that, some background from 2015.

2015: Back to School

The major turn of events in 2015 was the hurried decision to apply to Brown University early in Jan and their equally quick decision in Feb. This led to a series of adventures from quitting my job by end of May to moving away from Bangalore in early July to flying out of India for the first time, and of course, the start of a new life in the USA.

I spent a major part of second half of the year at the University (specifically at the CIT). It was challenging to be part of a completely different culture, way of thinking and fast-paced learning environment. I was not quite satisfied with how I had fared thus far, both academically and otherwise, but I looked forward to changing that next year (2016).

2016: Year in Review

Reading

I did not complete my Goodreads 2016 Reading Challenge (first time in last 5 years, since I started in 2012), but I am rather content about how I did this time by being completely honest about what I wanted out of the challenge and using better metrics to track my progress (and not running after numbers). There are some (imprecise) stats at my year in books page generated by Goodreads.

My analysis suggests that even though the total number of books I read reduced, I did a lot more reading this year. This included a lot of technical material in the form of scores of papers, about a dozen textbooks, hundreds of blog posts, a few RFCs, etc.

Some of my favorite reads from 2016 (non-exhaustive, because I did not always keep track) and some that I would like to remember:

(Observation as I write this: A common theme that I see in papers I like is that they provide a fair bit of historical perspective on how big ideas in computing/systems emerged)

For 2017, I will stick to a modest goal of reading 26 full-length books. I will try to keep up my pace for reading technical material with the primary focus on papers as I dive further into becoming a researcher (more on this below).

Work

  • During December to January, I volunteer TA’d for Citizen + Virtual version of the annual STEAM workshop. As a CS person, it was great learning experience for me interacting with artists and other art-minded folks from RISD, Brown, and MIT applying cross-disciplinary skills to relevant social problems. I gave a small workshop on Web Scraping with Python.
  • From December to May, I served as one of the many TA’s for JJ’s Software Engineering course. As a first time TA for a semester-long course, it was a great experience interacting with students, observing how they framed questions, leading them to come up with answers on their own and working with the amazing TA staff. Labs were particularly interesting where I could help students understand concepts from my practical experience.
  • I spent my summer at Hewlett-Packard Labs where I got to do research properly for the first time. It was an amazing summer spent discussing ideas at the cutting edge of technology with research scientists, industry veterans and a lot of PhD students who were fellow interns. I faced first-hand what doing research is like with a lot of reading, brainstorming of ideas, frustrations of not making enough progress, taking quite some time to even define the exact problem I could work on, realizing how software engineering is different from research, and finally producing something reasonable from scratch (of course, with a lot of help from my mentors and peers). I also got to do my first poster session during the summer apart from a couple of presentations to the team. I really liked that kind of research environment where people from diverse backgrounds and expertise were freely able to exchange ideas and collaborate.
    I also came to realize that to achieve my long term goals going back to the industry will not help. I was still interested in the sweet spot of systems and PL research that focuses on concurrency and figured that the right way forward will be to work in a research environment where I could focus on things that I really want to do. This realization and a lot of encouragement from people around me led to my decision to apply for a PhD.
  • In my first semester at Brown, I had worked part-time at CCV. During last semester, I gave it a try again but then dropped out to give more time to my research and coursework. Looking back, it was a good decision to focus deeply on fewer things than running around for hourly pay to avoid cooking (more on this later).
  • I got a job offer for the next summer. An interesting observation in my experience is that I perform way better on whiteboard-based interviews than either of phone or paper based formats.

Coding

Coming to my primary goal of the year, I had realized early during the year that this was my weakest spot when it came to being successful in CS and wanted to tackle this problem head on. The only way I knew that will be effective was to write a lot of code, which is what I did:

2016 was my Year of Coding

2016 was my Year of Coding

Here’s a non-exhaustive list of non-trivial projects that I worked on (most links are private as they were school projects, I will open-source a few eventually):

  • C:
    • cpslib – A port of Python’s psutil to C
    • Kash – A minimal shell.
    • UThreads – User-level threads package (single core)
    • MThreads – Multiprocessor-safe user-level threads package (many cores)
    • weenix – A Unix-like operating system
  • C++:
    • Atlas – A programming model and a C/C++ runtime that provides consistency guarantees in case of failure for lock-based code for persistent programming
    • Concurrent Graph – A graph DS designed to show the usefulness of Atlas
  • Rust:
    • Rustcast – A simple Internet Radio Station
    • TCP/IP Protocol Implementation
    • BitTorrent Protocol and Client Implementation

I fell in love with Rust along the way.

People & Relationships

2016 was also unique in that I got to meet and learn from so many amazing people at different points. I want to take some time to acknowledge publicly that these people made a difference in my life in a positive way and I am thankful to have enjoyed their company in 2016. In no particular order:

  • Vivek – for being an amazing officemate, for helping me see beyond systems (finance and machine learning), for listening to me when I would start talking out of the blue and for all that conversation we had over food.
  • Ankur, Anshul – for that lengthy conversation we had until 4 am after my birthday and for providing me a different perspective on having someone in one’s life.
  • Josh (at Brown) – for being such a pleasant person to talk to each time we run into each other in CIT. Also, for being so honest about his approach to learning and helping me learn about school-related stress and anxiety.
  • Abhishek, Prachi – for being the only family I have in the US and for all the fun we had in Bay Area together.
  • Dhruva – for giving me a chance to try my hands on research and being such a supportive and understanding mentor throughout my summer and after.
  • Terence – for being the inspiring mentor that he is, for the book recommendations (I finally read and enjoyed a Jon Bentley book because of him). Also, for making me realize concurrent software doesn’t make any sense if sequential code outperforms it.
  • Hideaki – for making me realize the importance of being able to implement systems from scratch and for all the technical help and energy he provided during the summer.
  • Milind – for inspiring me to apply for a PhD sooner rather than later, for all the help with my statement and that insightful talk on performance related tracing.
  • Ram – for being the person who can connect to anyone, for being a manager whose only concern was that I have a good time with my internship when I was worried about not making enough progress and for helping me see the bigger picture.
  • Sangkuk, Jintack – for introducing me to the Korean culture, food and showing me what having a proper work ethic can achieve.
  • Josh (at Hacker House) – for being an inspiration for everyone around him, for helping me learn more about meditation, for his book recommendations and, especially, for helping me to look for what I wanted to accomplish in my life.
  • Junsong – for being an amazing friend in the valley, for the conversations we had at Starbucks/in his car about life, industry, Brown and all that matters.
  • Jaseem – for being a friend who keeps making me look at things a little differently.
  • Rodrigo – for being such a helpful Professor whom I could go to discuss my plans, for pointing me in the right direction when I was choosing a research project to work on, for the encouragement he provided each time when I was choosing Rust, dealing with some hard design bugs and most importantly when I was having second thoughts about applying for PhD.
  • Maurice – for being such a supportive guide that each time I go to meet him, I come out smiling or feeling much better than how I went in.
  • Sumukha – for being the only crazy one to show interest in learning Rust and partnering with me for the networks assignments and for all the things I learned from teamwork with him
  • Hasnain – for being an amazing flatmate and overall such a nice human being. Also, for patiently teaching me basics of cooking (though I still have a long way to go).

Fitness & Health

  • I got to do some biking after over a year in the Bay Area. Some stats courtesy of Strava:
    Stats

    Stats and Bikes

    Me on Cañada Road Ride

    Me on Cañada Road Ride

  • Continued learning more about fitness and have taken some steps to have a more active life.
  • Tried some new games: Ultimate (Frisbee), Bouldering, played some Badminton & Basketball after a long time and hope to continue.
  • Mental Health – Near the end of the second semester, I became aware of mental health issues that many people deal with and how I wasn’t somehow resistant to them (unlike my previous but unconscious belief). I learned to talk about and deal with common issues such as stress, anxiety, and depression. Though, I still have a long way to go.

Writing

  • I did not do a lot of public writing in 2016. The only useful post is a reflective article I wrote for my college magazine – Things I wish I knew in College. The different thing about this post was that it went through many iterations as I chose to get feedback from a few friends.
  • I did some private monthly reviews (like this post, but much smaller in length) in the beginning of the year but stopped after April.
  • This year, I picked up the habit of note taking to a good extent and kept iterating on tools such as private (local) markdown notes, Fargo, GFM based notes on Github (which explains my continuous streak from mid-August to mid-December), and these days Simplenote. I have so far not found anything which satisfies all my needs.
  • I started using Grammarly, which is a nifty tool to prevent common mistakes from all my writing and helps me learn to write better English. Highly recommended.

Misc

  • I got to visit MIT on my birthday and felt at home in the company of friends. Also, got to see a bit of CSAIL/MIT Strata Center.
  • I got selected and funded to attend Programming Languages Mentoring Workshop (PLMW) at POPL ‘16 which was a life-changing experience. Looking back, the seed for my interest in applying for a PhD in PL field was sown during this week long experience. I got to interact with PhD students and undergrads from universities all around the world, talked to many professors in person and saw first hand how welcoming the community is. Special mentions are due to Professors Benjamin Pierce and Bob Harper who humbled us (a group of students) by introducing themselves to us when we were afraid to talk to them. :)
  • One important outcome of attending PLMW and POPL was my realization of how talking to people about things I am excited about is important and can lead to insights and opportunities that I could not have imagined on my own.
  • I had a pretty awkward experience with mentoring a student for the LITG (Learn IT Girl) program where my mentee was not ready to open source her code against program guidelines and ended up deciding to drop out of the program after organizers insisted on following the guidelines.
  • I spent a great summer in Bay Area living in a Hacker House where it was common to meet new people almost every other day. I made friends from different parts of the world, learned about their world-views, understood some of their concerns.
  • Traveled to St. Petersburg (Florida), San Francisco, Palo Alto, Mountain View (Pahaadganj), Sunnyvale (Surajgarh), Baltimore, Oakland, and Boston. Visited The Internet Archive office, Stanford University, Computer History Museum, Facebook, Google HQs, Boston University, Northeastern University, etc.
  • Each of my visit to San Francisco during the summer was fun and quite eventful – DTraceConf, ride on Golden Gate Bridge, Pride Parade, July 4 Celebration and my first ferry ride, the Jane Street meet up (where I ended up drinking a pretty strong cocktail).
  • I went on an actual date (for the first time ever) in the weekend before the American election and Indian demonetization disasters. Of course, it went nowhere but it was a good learning experience in many ways.
  • I got to attend two talks by Donald Knuth and even asked him a question.
  • I made some new friends:

Bender

Bender

Lucy The Cat

Lucy

TeeJay and Kartik

TeeJay with me

Onward to a productive 2017 full of learning and new experiences!

Posted with tags year annual personal books friends