<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>/dev/yash/notes</title><link>https://tufte.yashagarwal.in/</link><description>Recent content
on /dev/yash/notes</description><language>en-us</language><managingEditor>yashagarwaljpr+blog@gmail.com (Yash Agarwal)</managingEditor><webMaster>yashagarwaljpr+blog@gmail.com (Yash Agarwal)</webMaster><lastBuildDate>Thu, 13 Jul 2023 03:01:46 +0000</lastBuildDate><generator>Hugo -- gohugo.io</generator><docs>https://validator.w3.org/feed/docs/rss2.html</docs><atom:link href="https://tufte.yashagarwal.in/index.xml" rel="self" type="application/rss+xml"/><item><title>2022 - The Year of Plentiful</title><link>https://tufte.yashagarwal.in/posts/2022/12/2022-the-year-of-plentiful/</link><description>&lt;p>2022 is about to end. It is that time when I say goodbye to one more year in my life and welcome a new one. 2022 was a hectic year for me. Many of my decisions this year will have rippling effects for years to come. But there was also a good realization that I must take action; sitting idle won&amp;rsquo;t help.&lt;/p>
&lt;p>As always, I have divided this review into those areas of my life where I have been putting more focus throughout the year.&lt;/p>
&lt;h2 id="health">Health&lt;/h2>
&lt;h3 id="fitness">Fitness&lt;/h3>
&lt;p>I wish I had put more focus on my fitness this year. My sedentary lifestyle may put me at many health risks in years to come. My activity levels have been abysmally poor for most of the year. A big reason behind this was my busyness in other parts of my life. 2022 was an amalgamation of stress, fear, anxiety, surprises, gratitude, and happiness. Fitness took a back seat due to the quick turnaround of events throughout the year. Early in the year, I continued with Yoga. However, I was a lot more irregular this year because I wanted to gain muscles while keeping my weight constant. So, I decided to join a gym in the second half of the year to focus on muscle building. However, due to the stress of wedding preparations, I couldn&amp;rsquo;t find the motivation to continue beyond two months. There was one positive, though - whenever I committed to working out, I could notice a boost of confidence spurting inside me. Unfortunately, I found it challenging to maintain this motivation for long.&lt;/p>
&lt;p>I didn&amp;rsquo;t have to suffer from any significant illness this year. I occasionally suffered from slight back pain, which can be attributed to my poor posture. Doing Yoga keeps my back in shape, but whenever I stop doing Yoga, I start feeling the pinch again in one or two months. This factor alone makes me realize the importance of keeping my body active.&lt;/p>
&lt;h3 id="sleep">Sleep&lt;/h3>
&lt;p>I managed to sleep around seven hours each day throughout the year. However, this data doesn&amp;rsquo;t include my afternoon naps, so my daily sleep duration is undoubtedly higher than 7 hours. Sleeping in the afternoons has become a habit that I never intended to develop. But now, it has become a permanent fixture in my life. In 2023, I plan to keep my tendency to sleep in the afternoon in control, but that will require sleeping enough at night, without which all my efforts will remain useless.&lt;/p>
&lt;p>&lt;figure class="normal">
&lt;p class="caption">
How much I slept in 2022?&lt;/p>
&lt;img class="lazyload blur-up" data-sizes="auto" src="https://tufte.yashagarwal.in/images/posts/2022-12-31/average_sleep_duration_hu4148913a37886b0bf2fb5c3d7929aeee_213626_20x0_resize_box_3.png" data-srcset="https://tufte.yashagarwal.in/images/posts/2022-12-31/average_sleep_duration_hu4148913a37886b0bf2fb5c3d7929aeee_213626_900x0_resize_box_3.png 900w,https://tufte.yashagarwal.in/images/posts/2022-12-31/average_sleep_duration_hu4148913a37886b0bf2fb5c3d7929aeee_213626_800x0_resize_box_3.png 800w,https://tufte.yashagarwal.in/images/posts/2022-12-31/average_sleep_duration_hu4148913a37886b0bf2fb5c3d7929aeee_213626_500x0_resize_box_3.png 500w" alt="Sleeping in 2022">
&lt;noscript>&lt;img sizes="100vw" srcset="https://tufte.yashagarwal.in/images/posts/2022-12-31/average_sleep_duration_hu4148913a37886b0bf2fb5c3d7929aeee_213626_900x0_resize_box_3.png 900w,https://tufte.yashagarwal.in/images/posts/2022-12-31/average_sleep_duration_hu4148913a37886b0bf2fb5c3d7929aeee_213626_800x0_resize_box_3.png 800w,https://tufte.yashagarwal.in/images/posts/2022-12-31/average_sleep_duration_hu4148913a37886b0bf2fb5c3d7929aeee_213626_500x0_resize_box_3.png 500w" src="https://tufte.yashagarwal.in/images/posts/2022-12-31/average_sleep_duration.png" alt="Sleeping in 2022">&lt;/noscript>
&lt;/figure>
&lt;/p>
&lt;p>I slept the least in June, which is surprising. I was expecting it to be in July, August, and September when I was in the midst of my courtship period.&lt;/p>
&lt;p>I would have liked to put a graph showing my sleep and wake-up times as well, but my graph plotting skills require some polishing, so for now, I will stop here. Someday, I would like to analyze that data as well.&lt;/p>
&lt;h2 id="career">Career&lt;/h2>
&lt;h3 id="netskope">Netskope&lt;/h3>
&lt;p>Joining Netskope was a good decision for my career. While I learned a lot at Cisco, my experience at Netskope has been different. This year, after seeing the turbulent market conditions, I kept on wondering if joining Netskope was a financially prudent decision. If I keep this fact aside, my experience at Netskope has been good.&lt;/p>
&lt;h3 id="learning">Learning&lt;/h3>
&lt;p>I have not been able to keep up with emerging technologies in the last two-three years. While my basics are solid, I should invest some time in learning new trends to stay relevant and employable in the future. The tech industry can be fierce at times. With all the turmoil in the world, it becomes even more important to keep myself updated. For the last four years, I have been lacking in learning new things (irrespective of their connection to my work). That may have put me behind my peers by a few years. Whenever I see my peers racing ahead of me, I feel disappointed. I know that becoming part of this rat race will only give me grief, but as a human, I am not immune to these emotions. However, I am very well aware that taking action is the only way to come back on track.&lt;/p>
&lt;h3 id="future">Future&lt;/h3>
&lt;p>For the first time in the last three years, I feel clarity in my thoughts about my future direction, which may be a good sign. Going into 2023, this clarity can prove miraculous for my career and personal life. I hope it is the case.&lt;/p>
&lt;h2 id="writing">Writing&lt;/h2>
&lt;h3 id="the-problem">The Problem&lt;/h3>
&lt;p>Writing regularly was one of my primary goals this year. For the last couple of years, I have been struggling with some mental block when it comes to writing. It turns out that the problem was the lack of content. I either did not have anything to write about, or needed to try harder to gather the material, or procrastinated. I wrote less this year too, but I could get into the flow whenever I wanted to.&lt;/p>
&lt;h3 id="journaling">Journaling&lt;/h3>
&lt;p>Blogging was not a priority this year. However, journaling has proven to be a wonderful experience for me this year. More so, it gave me a window into my thought process when making the most critical decision of my life - whether to marry or not. I wrote extensively around that time about what I was thinking, what I liked in her, and what I didn&amp;rsquo;t. When I reread those entries, it immediately brings a smile to my face. Such has been the impact of journaling on me. I plan to write many more journal entries next year. I hope these new entries will also bring a smile to my face in the distant future.&lt;/p>
&lt;h3 id="hobby">Hobby&lt;/h3>
&lt;p>I have a long-term wish to start a newsletter and grow my audience, but I wonder if I am ready to put in the effort required for this task at this moment. Also, I need to be more confident about whether I have good content/topic to write about. Since I still hesitate to share my blog posts on social media, starting and growing a newsletter will be an uphill task.&lt;/p>
&lt;p>Getting committed this year meant that I finally had some inspiration to engage with creative writing. And I thoroughly enjoyed writing for someone else. In the last seven years since I started writing, I have never tried to write in Hindi. But after doing it this year, I realized that I enjoy writing in Hindi. I plan to continue this (even if sporadically) in 2023.&lt;/p>
&lt;h2 id="reading">Reading&lt;/h2>
&lt;h3 id="the-failure">The failure&lt;/h3>
&lt;p>I have a feeling of disappointment while writing this section. I decided to read 24 books this year. I am ending it without reading a single book. Throughout the year, I could not make up my mind about reading. A significant reason behind this was the double thoughts in my mind about the objective for which I was reading and whether I could retain whatever I was reading. I found myself struggling to come to terms with the fact that no matter what I do, I will never be able to recall everything I read. This realization was the root cause behind my disillusion with reading. Unfortunately, I still need to find a definite answer to this dilemma. However, I can still restart my reading journey with fiction books, as I don&amp;rsquo;t see the need to remember such books.&lt;/p>
&lt;h3 id="but">But&amp;hellip;&lt;/h3>
&lt;p>Having said this, it is not that I didn&amp;rsquo;t read anything at all. I managed to read the first three modules of Zerodha&amp;rsquo;s varsity content. These modules are such a valuable source to learn about the markets. I thoroughly enjoyed reading them. Unfortunately, at least this year, I didn&amp;rsquo;t use the knowledge gathered. To start with the stock market again, I may have to reread the modules to recall the concepts (this is one example of the issues I mentioned in the previous paragraph).&lt;/p>
&lt;h2 id="media-consumption">Media Consumption&lt;/h2>
&lt;h3 id="bingeing">Bingeing&lt;/h3>
&lt;p>One side effect of not reading enough books was that my mind tried to find other avenues to pass the time. In the first half of the year, I took refuge in movies and TV series to relieve myself from day-to-day life. I watched 22 films and three web series in the year&amp;rsquo;s first half. Before getting married, I watched only two movies between July and November. After getting married, in December, I watched five movies.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;strong>Name&lt;/strong>&lt;/th>
&lt;th>&lt;strong>Type&lt;/strong>&lt;/th>
&lt;th>&lt;strong>Month&lt;/strong>&lt;/th>
&lt;th>&lt;strong>Rating&lt;/strong>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Loki&lt;/td>
&lt;td>Show&lt;/td>
&lt;td>January&lt;/td>
&lt;td>7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Eternals&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>January&lt;/td>
&lt;td>6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Pushpa: The Rise - Part 1&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>January&lt;/td>
&lt;td>7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>What If…&lt;/td>
&lt;td>Show&lt;/td>
&lt;td>January&lt;/td>
&lt;td>8&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Kingsman: The Golden Circle&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>February&lt;/td>
&lt;td>8&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>The King&amp;rsquo;s Man&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>February&lt;/td>
&lt;td>6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Mortal Kombat&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>February&lt;/td>
&lt;td>4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Rudra&lt;/td>
&lt;td>Show&lt;/td>
&lt;td>March&lt;/td>
&lt;td>7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Spider-Man: No Way Home&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>March&lt;/td>
&lt;td>8&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Bell Bottom&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>March&lt;/td>
&lt;td>5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Wanted&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>March&lt;/td>
&lt;td>4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Housefull 4&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>March&lt;/td>
&lt;td>2&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Dasvi&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>April&lt;/td>
&lt;td>7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>National Treasure&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>April&lt;/td>
&lt;td>7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Badhaai Do&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>April&lt;/td>
&lt;td>6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>National Treasure: Book of Secrets&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>April&lt;/td>
&lt;td>6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>The Batman&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>April&lt;/td>
&lt;td>9&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Pirates of the Caribbean: The Curse of the Black Pearl&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>May&lt;/td>
&lt;td>8&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Pirates of the Caribbean: Dead Man&amp;rsquo;s Chest&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>May&lt;/td>
&lt;td>7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>The Lost City&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>May&lt;/td>
&lt;td>3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>The Chronicles of Narnia: The Lion, the Witch and the Wardrobe&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>May&lt;/td>
&lt;td>8&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>The Chronicles of Narnia: Prince Caspian&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>May&lt;/td>
&lt;td>8&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>The Chronicles of Narnia: The Voyage of the Dawn Treader&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>May&lt;/td>
&lt;td>9&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>K.G.F: Chapter 2&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>May&lt;/td>
&lt;td>7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Doctor Strange in the Multiverse of Madness&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>June&lt;/td>
&lt;td>8&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Brahmāstra Part One: Shiva&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>September&lt;/td>
&lt;td>7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Thor: Love and Thunder&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>October&lt;/td>
&lt;td>7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Doctor G&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>December&lt;/td>
&lt;td>7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cirkus&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>December&lt;/td>
&lt;td>5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Govinda Naam Mera&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>December&lt;/td>
&lt;td>6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Encanto&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>December&lt;/td>
&lt;td>7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>The Dictator&lt;/td>
&lt;td>Movie&lt;/td>
&lt;td>December&lt;/td>
&lt;td>6&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="social-media">Social Media&lt;/h3>
&lt;p>I was in control of my social media usage in the first half of the year, but Instagram caught me off guard after that. I have never been a fan of Instagram, but this year, circumstances forced me to get into the rabbit hole. Currently, I have managed to control my Instagram usage. Still, I need to keep my eyes open to avoid any addiction.&lt;/p>
&lt;h3 id="phone">Phone&lt;/h3>
&lt;p>I don&amp;rsquo;t have my phone usage data, but I am sure it has skyrocketed this year. Since July, I have managed to use my phone for more than 6 hours every day on a routine basis. I must figure out how to reduce this usage and focus on more important things.&lt;/p>
&lt;h2 id="family">Family&lt;/h2>
&lt;h3 id="back-to-office">Back to Office&lt;/h3>
&lt;p>Since the beginning of the pandemic, I have been staying with my family. It has been three years, and with each passing day, I feel uncomfortable even thinking about moving back to Bengaluru. With the feeling of belongingness combined with the mess that Bengaluru is in, I find myself resisting moving back to Bengaluru, at least in the near future. My employer supports remote work, which gives me hope that I can spend a few more months here in Jaipur. Staying in Jaipur has obvious monetary benefits, but I see long-term hindrances in career growth. I may have to find a middle path to avoid stagnating in my career and satisfy my emotional cravings towards my family.&lt;/p>
&lt;h3 id="fam">Fam&lt;/h3>
&lt;p>On the family front, this year has been incredible. Several long-term wishes of my family got fulfilled this year. My mother came back home after a successful recovery from a severe ailment. We shifted to a new house. I got married. My brother got a government job. What else could I have asked for?&lt;/p>
&lt;h3 id="vishi">Vishi&lt;/h3>
&lt;p>As the latest entrant into my family, she has been a welcome addition. When 2022 started, the idea of getting married was completely absent from my mind. There were other &lt;em>more&lt;/em> &lt;em>important&lt;/em> stuff in my life that required immediate attention. But life had its plans. And I am glad that life had its way. Though I was not rooting to get married, I found a person with whom my thoughts match. I have not been a people-friendly person in my personal life, so it will take some time to adjust to another person&amp;rsquo;s presence. Still, the way we have spent the last five months together, this will be a fun journey together.&lt;/p>
&lt;h2 id="what-in-2023">What in 2023?&lt;/h2>
&lt;p>My experience says I could improve following up with my new year&amp;rsquo;s resolutions. However, that is not going to stop me from resoluting some more goals this year as well. Even if I don&amp;rsquo;t achieve any of these, they will linger around in the back of my mind and remind me to take at least one step toward them.&lt;/p>
&lt;h3 id="fitness-1">Fitness&lt;/h3>
&lt;p>I don&amp;rsquo;t know of any method to quantify my fitness progress, but I aim to keep my weight under 65 kgs while transferring some of my weight from fat to muscles.&lt;/p>
&lt;h3 id="reading-1">Reading&lt;/h3>
&lt;p>I have decided to read &lt;strong>at least&lt;/strong> 24 books (2 books per month) this year. A combination of fiction, non-fiction, Hindi, and technical books would be ideal and help me avoid the sudden lack of interest. You can track my progress &lt;a href="https://www.goodreads.com/user/show/63354397-yash" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;h3 id="writing-1">Writing&lt;/h3>
&lt;p>Some journal entries, &lt;a href="https://www.futureme.org" target="_blank" rel="noopener">FutureMe&lt;/a> letters, and a few blog posts should be enough for this year. I am writing more than ever privately, but as a side effect, public writing has taken a back seat for now. I will write on this blog whenever I have something important to share.&lt;/p>
&lt;p>I enjoyed journaling in 2022, so this is also high on my priority list for 2023. I intend to write only sometimes, but doing it once in a while - on important events of my life - should be doable.&lt;/p>
&lt;h3 id="travel">Travel&lt;/h3>
&lt;p>Now that I have a partner-in-crime, I plan to travel extensively (while keeping financial and professional commitments in mind). The resurge of COVID is threatening to spoil one of my trips early next year, so I also need to keep an eye on that. However, I will travel as and when possible. Expect some travelogue posts on this blog in the near future.&lt;/p>
&lt;hr>
&lt;p>2022 was a good year for me. I achieved many goals this year. After a long time, I have some clarity in my mind about my future course of action. I hope to execute some (or all) of my plans in 2023.&lt;/p>
&lt;p>This year taught me a vital lesson - every time you plan something, there will be a lot of apprehensions. All it takes to proceed further is to take one step. Everything else automatically falls into place.&lt;/p>
&lt;p>Thank you, 2022, for this critical lesson. Adios, I will never forget you for bringing so many new memories into my life.&lt;/p>
&lt;p>And welcome to you, 2023!!!&lt;/p></description><author>Yash.Agarwal@fakeEmailToMakeValidatorHappy.com (Yash Agarwal)</author><category domain="https://tufte.yashagarwal.in/categories/write-ups">Write-ups</category><category domain="https://tufte.yashagarwal.in/tags/review">review</category><guid>https://tufte.yashagarwal.in/posts/2022/12/2022-the-year-of-plentiful/</guid><pubDate>Sat, 31 Dec 2022 18:55:03 +0530</pubDate></item><item><title>I Got Engaged 💍</title><link>https://tufte.yashagarwal.in/posts/2022/08/i-got-engaged/</link><description>&lt;p>Life sometimes takes such unexpected turns that we humans can only stand still and wonder. That&amp;rsquo;s what happened to me. Just two months back, I was urging my father to stop talking to me about my marriage plans, and here I am today, announcing my engagement. It is how the sequence of events has been in my life in the last two months. However, I am not at all troubled with all these sudden turns and twists.&lt;/p>
&lt;p>Coming to the topic of the discussion, the name of my fiancée is Vishakha. Our roka-cum-engagement ceremony took place on 30th of July. We exchanged rings before a small family gathering and had our first pooja together. Now, we are officially in our courtship period. We both belong to slightly different educational backgrounds and academic interests. However, that doesn&amp;rsquo;t seem to be a barrier between us, and we share many views about life, family, society, and other things in general.&lt;/p>
&lt;p>I have been timid in talking to strangers, but right from our first meeting, I struck a strange connection with her. Our first meeting lasted for around one and a half hours, which astonished our families, given that she and I don&amp;rsquo;t talk much, even among family members. Since then, we have spoken for uncountable hours, discussing our priorities, ambitions, goals, thoughts about life, likes, dislikes, etc.&lt;/p>
&lt;p>It may be initial excitement or infatuation, but I can feel the emotions of care and love blossoming in me. These are some unfamiliar emotions for me. I have never attached to any human being other than my parents. Now having the same feelings for a stranger is difficult to digest. I don&amp;rsquo;t know if love can blossom so quickly. But if it does, then I am definitely in love. And if it doesn&amp;rsquo;t, it will happen soon.&lt;/p>
&lt;p>When I broke the news on Instagram, many people asked me one question - Why so early? While there were no particular reasons behind my decision, in retrospect, I think this was an excellent decision to take at this juncture of my life.&lt;/p>
&lt;ol>
&lt;li>I am currently stagnating in my life and career. I am going through that phase where I don&amp;rsquo;t see any yield of my work on both personal and professional fronts. Although I am confident that I will reap the results of this work in the future, the present appears to be the best time to welcome another person into my life. I hope her entry into my life and the resultant influence will help me come out of this slump phase. I must mention that this is a double-edged sword, and I am taking a huge risk here. But that is something only time will tell.&lt;/li>
&lt;li>My parents would have started forcing me to get married in the next year or two. I preferred not to juggle between Bengaluru (or elsewhere) and Jaipur, hoping to find a match. I have seen my cousins struggling with that.&lt;/li>
&lt;li>I had planned to go for a corporate-sponsored graduate program. But then I left Cisco, and since Netskope doesn&amp;rsquo;t have any such program; I had to put this plan on hold for a couple of years. So, I am relatively free at this point in my life. I believe there couldn&amp;rsquo;t have been a better time to hook up than this.&lt;/li>
&lt;li>After the pandemic began, I came back to my hometown. Since then, my life has become highly monotonous, and I was looking for some respite from it. I was feeling the need for another person in my life who could push me out of my comfort zone while also respecting my boundaries.&lt;/li>
&lt;li>Perhaps I was also looking for lady luck.&lt;/li>
&lt;/ol>
&lt;p>&lt;figure class="normal">
&lt;p class="caption">
Vishi and Yash&lt;/p>
&lt;img class="lazyload blur-up" data-sizes="auto" src="https://tufte.yashagarwal.in/images/posts/2022-08-06/vishi_and_yash_hu42db44ddff30c1161903bb529e47278a_8045897_20x0_resize_q75_box.jpg" data-srcset="https://tufte.yashagarwal.in/images/posts/2022-08-06/vishi_and_yash_hu42db44ddff30c1161903bb529e47278a_8045897_800x0_resize_q75_box.jpg 800w,https://tufte.yashagarwal.in/images/posts/2022-08-06/vishi_and_yash_hu42db44ddff30c1161903bb529e47278a_8045897_500x0_resize_q75_box.jpg 500w" alt="Vishi and Yash">
&lt;noscript>&lt;img sizes="100vw" srcset="https://tufte.yashagarwal.in/images/posts/2022-08-06/vishi_and_yash_hu42db44ddff30c1161903bb529e47278a_8045897_800x0_resize_q75_box.jpg 800w,https://tufte.yashagarwal.in/images/posts/2022-08-06/vishi_and_yash_hu42db44ddff30c1161903bb529e47278a_8045897_500x0_resize_q75_box.jpg 500w" src="https://tufte.yashagarwal.in/images/posts/2022-08-06/vishi_and_yash.jpg" alt="Vishi and Yash">&lt;/noscript>
&lt;/figure>
&lt;/p>
&lt;p>Marrying means leaving your bachelorhood behind, and that has its downsides.&lt;/p>
&lt;ol>
&lt;li>Time spent on your family means you can&amp;rsquo;t spend time on your career and other outside-of-work activities. But I think, at some point, I had to find a balance anyway.&lt;/li>
&lt;li>The responsibility to maintain a family is not an easy one. It comes with its challenges. Bachelorhood is relatively easy; you are on your own. But in married life, someone else is looking up to you for constant support, dedication, and love. I wonder how long it will take me to adjust to this.&lt;/li>
&lt;li>Your goals and ambitions are not only yours anymore. They get shared with your spouse. And if the spouse is not supportive, life can take a downturn quickly.&lt;/li>
&lt;li>You can&amp;rsquo;t just think about yourself selfishly. You need to consider the effect of every decision of yours on your spouse as well. It can get clumsy sometimes.&lt;/li>
&lt;/ol>
&lt;p>As usual, I have spoiled this post by talking about ups and downs 🤣. My habit of weighing everything in pros and cons will not die so quickly 🤓. But I want to clarify one thing: I am thrilled and content with my decision.&lt;/p>
&lt;p>I am looking forward to this alliance and spending more time getting to know Vishi 💗. I hope I will be a worthy partner to her.&lt;/p></description><author>Yash.Agarwal@fakeEmailToMakeValidatorHappy.com (Yash Agarwal)</author><category domain="https://tufte.yashagarwal.in/categories/write-ups">Write-ups</category><category domain="https://tufte.yashagarwal.in/tags/life">Life</category><category domain="https://tufte.yashagarwal.in/tags/experiences">Experiences</category><guid>https://tufte.yashagarwal.in/posts/2022/08/i-got-engaged/</guid><pubDate>Sat, 06 Aug 2022 17:35:24 +0530</pubDate></item><item><title>ISRO interview experience and takeaways</title><link>https://tufte.yashagarwal.in/posts/2022/01/isro-interview-experience-and-takeaways/</link><description>&lt;p>&lt;strong>Note:&lt;/strong> This post was originally written on Jan 29, 2022 but I never posted it. Posting it now keeping the original authoring date, but with commit date of Aug 05, 2022.&lt;/p>
&lt;p>This post was on my bucket list for almost one year, but I kept ignoring it for one or another reason. Anyway, I wanted to write this post to add my experience to several other interview experiences to help others. Another intention was to document this experience for my own consumption in the future to relive one of the greatest moments in my life and career without worrying about diminishing memory.&lt;/p>
&lt;p>I had decided to take the ISRO exam as part of my GATE preparation strategy. The paper was apparently very lengthy and came with time-consuming calculations. With some difficulty, I could solve a fair number of questions. Then, I forgot about this and started focusing on my GATE preparation again. The GATE journey is also memorable, which I may describe in a future post. While I was waiting for results for both ISRO and GATE, the pandemic hit the country, and I made a quick jump back to my hometown. The pandemic also delayed the ISRO results. But when it was announced, it was a surprise for me. I was selected for further interview rounds. Then, a long wait ensued. I had to wait till February 2021 to get an interview call. I attended the interview for the post of &amp;lsquo;Scientist&amp;rsquo; in ISRO on March 4, 2021, in New Delhi.&lt;/p>
&lt;p>I had been part of very few interviews in my life until ISRO&amp;rsquo;s interview. I could count them on fingers -&lt;/p>
&lt;ol>
&lt;li>SSL admin interview at NITC (which I rocked :P)&lt;/li>
&lt;li>The Directi interview (where I reached till last round), and&lt;/li>
&lt;li>The Cisco interview (I rocked this one too).&lt;/li>
&lt;/ol>
&lt;p>I haven&amp;rsquo;t been part of any other interview in my life, so far. So, I am notably less experienced in giving interviews. But, unlike other fields in my life, I have never felt nervous while giving interviews. I am not yet sure of the exact reasons behind this confidence. Perhaps, I am not an introvert as I think I am.&lt;/p>
&lt;p>Anyway, the decision to attend or not attend the interview was tough. There were many reasons -&lt;/p>
&lt;ol>
&lt;li>What if I get selected for the interviews! The pressure to join ISRO will be enormous.&lt;/li>
&lt;li>What if I get COVID during the journey or stay in New Delhi!&lt;/li>
&lt;li>If I am not interested in joining ISRO, why should I waste money on travel and accommodation!&lt;/li>
&lt;/ol>
&lt;p>My parents didn&amp;rsquo;t know that I had taken the ISRO exam. So, it was a pleasant surprise for them. I decided to attend the interviews because my parents looked ecstatic about this opportunity. My brother accompanied me to Delhi; we stayed in a nice hotel, ate good food, and visited some excellent locations in Delhi together.&lt;/p>
&lt;p>Coming to the primary purpose of this post, how was my interview experience? Well, it was a mixed bag. I wasn&amp;rsquo;t satisfied with some of my answers, but I could feel that the interview panel liked my answers. Like all other interviews I have given, this interview revolved mostly around Linux, Networking, OS, and Security. One good thing about ISRO interviews is that ask your preferred subjects before starting the discussion. I said that my favorite subjects are OS, Security, and Networking. They did ask me why I don&amp;rsquo;t like DBMS. I told them that I had never worked with DBs until now, so I am not very familiar with its practical aspects. After that, they asked me questions from my preferred domains only. As expected, I had absolutely no issues answering most of the questions accurately. There were some tricky questions where they tried to stress-test me, but I was able to deflect them.&lt;/p>
&lt;p>Although I had to be physically present at the ISRO center, the actual interview happened virtually on Cisco WebEx (!).&lt;/p>
&lt;p>Below is an inaccurate version of the converstaion -&lt;/p>
&lt;p>&lt;strong>Interview Panel (IP):&lt;/strong> Please introduce yourself.&lt;/p>
&lt;p>&lt;strong>Me:&lt;/strong> Introduced myself. The panel specifically asked about my graduation details and final project details.&lt;/p>
&lt;p>&lt;strong>IP:&lt;/strong> So, you work in Cisco. What are you doing there?&lt;/p>
&lt;p>&lt;strong>Me:&lt;/strong> Explained my work in Snort and FTD team&lt;/p>
&lt;p>&lt;strong>IP:&lt;/strong> What purpose does FTD serve?&lt;/p>
&lt;p>&lt;strong>Me:&lt;/strong> Explained in brief, as I had just joined the FTD team at that time.&lt;/p>
&lt;p>&lt;strong>IP:&lt;/strong> We are using FTDs in ISRO. It is giving us too many issues. How do we fix it?&lt;/p>
&lt;p>&lt;strong>Me:&lt;/strong> Suggested some solutions, including Hardware and Software ones. They tried to stress-test me on this. Thankfully I didn&amp;rsquo;t lose my patience and kept giving them some answers.&lt;/p>
&lt;p>&lt;strong>IP:&lt;/strong> What happens behind the scenes when you type a web address in the browser?&lt;/p>
&lt;p>&lt;strong>Me:&lt;/strong> Explained&lt;/p>
&lt;p>&lt;strong>IP:&lt;/strong> How does the router know where to forward the packet?&lt;/p>
&lt;p>&lt;strong>Me:&lt;/strong> I fumbled a bit on this one because I did make a mistake in the previous question. Anyway answered it correctly in the end.&lt;/p>
&lt;p>&lt;strong>IP:&lt;/strong> What is page fault and context switch? Does a page fault require a context switch?&lt;/p>
&lt;p>&lt;strong>Me:&lt;/strong> Answered. Don&amp;rsquo;t remember the answer now. It is very clearly explained in OSTEP.&lt;/p>
&lt;p>&lt;strong>IP:&lt;/strong> How is kernel mode switched?&lt;/p>
&lt;p>&lt;strong>Me:&lt;/strong> Explained&lt;/p>
&lt;p>&lt;strong>IP:&lt;/strong> What is a trap? What does the trap handler do? How is it invoked?&lt;/p>
&lt;p>&lt;strong>Me:&lt;/strong> Explained&lt;/p>
&lt;p>&lt;strong>IP:&lt;/strong> Explain Linux File Permissions? How to interpret directory 555 and file 777 permissions?&lt;/p>
&lt;p>&lt;strong>Me:&lt;/strong> Explained&lt;/p>
&lt;p>&lt;strong>IP:&lt;/strong> Do you know about the security of OS?&lt;/p>
&lt;p>&lt;strong>Me:&lt;/strong> Explained some concepts. I mentioned Linux Hardening, then they asked many questions on the overall idea of hardening of the OS.&lt;/p>
&lt;p>&lt;strong>IP:&lt;/strong> How to modify a Kernel to work with resource-constrained devices?&lt;/p>
&lt;p>&lt;strong>Me:&lt;/strong> I explained some modifications, like removing unnecessary drivers and blobs used for generic purposes, etc.&lt;/p>
&lt;p>&lt;strong>IP:&lt;/strong> What is a TCP wrapper? Do you know about Netstat?&lt;/p>
&lt;p>&lt;strong>Me:&lt;/strong> I didn&amp;rsquo;t know about TCP wrappers, so I said I don&amp;rsquo;t know. Explained Netstat briefly.&lt;/p>
&lt;p>&lt;strong>IP:&lt;/strong> How can we improve the security of an OS?&lt;/p>
&lt;p>&lt;strong>Me:&lt;/strong> I explained some ways to secure OS connected to a network by installing some tools and firewalls, like Fail2Ban, FTDs, UFW, etc. They were expecting IPTables, so they asked about it next.&lt;/p>
&lt;p>&lt;strong>IP:&lt;/strong> What are IPTables? Do you know about chains in IPTables?&lt;/p>
&lt;p>&lt;strong>Me:&lt;/strong> I explained IPTables, but couldn&amp;rsquo;t answer the concept of chains.&lt;/p>
&lt;p>&lt;strong>IP:&lt;/strong> Explain some common web attacks?&lt;/p>
&lt;p>&lt;strong>Me:&lt;/strong> I explained OWASP Top 10 and a few attacks like SQL Injection, XSS, etc.&lt;/p>
&lt;p>&lt;strong>IP:&lt;/strong> Which attacks are possible in an OS?&lt;/p>
&lt;p>&lt;strong>Me:&lt;/strong> Explained buffer overflow, heap overflow, stack smashing, etc.&lt;/p>
&lt;p>In the end, they asked some general questions about Linux Kernel, which I don&amp;rsquo;t remember now. Then they concluded the interview and asked me to leave. The interview took around 30-45 minutes. The discussion entirely revolved around the systems side of things, which worked in my favor.&lt;/p>
&lt;p>I analyzed my performance after the interview. There were some things that I would like to fix in the future.&lt;/p>
&lt;ol>
&lt;li>While preparing for GATE, I didn&amp;rsquo;t focus on making notes. Having short notes helps at the last moment. I suffered because I had to go through the entire syllabus again, even for a quick revision.&lt;/li>
&lt;li>I have improved my communication skills significantly, but they are still not up to the mark. My inherently introverted nature keeps pulling me back. During this interview, I fumbled quite a bit. It may be that seeing myself on camera on screen made me self-conscious. Still, I need to work on this aspect of my soft skills because I am sure that I will need to use communication skills a lot in the coming future.&lt;/li>
&lt;li>My knowledge of Linux, Networking, and OS is invaluable. I need to make sure that I don&amp;rsquo;t neglect them in the future and keep myself up to date with the latest trends in the field.&lt;/li>
&lt;li>I severely lack focus and motivation. Even during the interview, I faced issues with focusing on the questions. My mind keeps on having distracting thoughts. I need to find some ways to improve my focus significantly. Otherwise, my mind will lose its capabilities even faster with growing age.&lt;/li>
&lt;li>My understanding of Cisco products is severely limited. I spent three years in Cisco. Still, I don&amp;rsquo;t know much about any Cisco product lines completely. I don&amp;rsquo;t even know about all Cisco&amp;rsquo;s Security unit&amp;rsquo;s products, even after spending my entire 3 years there. This is a difficult situation. Unfortunately, now that I have left Cisco, there is no way/reason to get that understanding.&lt;/li>
&lt;/ol>
&lt;p>The results came in September 2021, and to my surprise, I was selected for the post with AIR 30. My final marks in the written exam were 110/216 (some questions were canceled), and I scored 83.18/100 in interviews. However, I decided not to join ISRO because the center assigned to me didn&amp;rsquo;t align with my interests and other reasons that I mentioned in a &lt;a href="https://tufte.yashagarwal.in/posts/2022/01/why-i-decided-to-not-join-isro/">separate post&lt;/a>. My parents were delighted with my achievement; however, they supported my decision not to join ISRO.&lt;/p>
&lt;p>August 2018 to February 2020 was a very frustrating yet fruitful phase of my life. The knowledge I acquired during this time helped me overcome my self-doubt due to my failures in academics in NITC. Getting selected for ISRO made the entire process memorable in the end. I will always cherish this achievement of mine.&lt;/p></description><author>Yash.Agarwal@fakeEmailToMakeValidatorHappy.com (Yash Agarwal)</author><category domain="https://tufte.yashagarwal.in/categories/isro">ISRO</category><category domain="https://tufte.yashagarwal.in/categories/experiences">Experiences</category><category domain="https://tufte.yashagarwal.in/categories/lessons">Lessons</category><category domain="https://tufte.yashagarwal.in/tags/write-ups">Write-ups</category><guid>https://tufte.yashagarwal.in/posts/2022/01/isro-interview-experience-and-takeaways/</guid><pubDate>Sat, 29 Jan 2022 14:31:58 +0530</pubDate></item><item><title>Why I decided to not join ISRO?</title><link>https://tufte.yashagarwal.in/posts/2022/01/why-i-decided-to-not-join-isro/</link><description>&lt;p>&lt;strong>Note:&lt;/strong> This post was originally written on Jan 26, 2022 but I never posted it. Posting it now keeping the original authoring date, but with commit date of Aug 05, 2022.&lt;/p>
&lt;p>Sometimes, life presents you with some choices that it becomes tricky to choose any one of them. Last year, my turn came when I was selected for a prestigious job at Indian Space Research Organization (ISRO). I was chosen for the post of Scientist in the organization. The pay was top notch with the pay grade equivalent to that of new bureaucrats. The pride that comes with the service to the nation was also associated with the job. I could have enjoyed my life without any worry about layoffs, pay cuts, workload, always having to learn new things, etc. But I decided to leave the offer and continue with what I was doing.&lt;/p>
&lt;p>Why did I do that? Was I mad? It has been almost one year since my final interview and nearly 3 months since I declined the offer. In this post, I intend to publicize my reasons for not joining ISRO. You may or may not agree with a lot of these reasons (even I doubt some of my decisions), but don&amp;rsquo;t hesitate to voice your opinion. Perhaps, it will give me another perspective to think about similar situations in the future.&lt;/p>
&lt;h2 id="the-job-profile-and-assigned-isro-center">The job profile and assigned ISRO center&lt;/h2>
&lt;p>I studied Computer Science during my undergraduate and have been working in the software industry since then. I know I can learn any new field (aerospace engineering, in this case) if I want to. Still, it was not a financially lucrative choice, and also it was not in alignment with my interests.&lt;/p>
&lt;p>I was assigned to NRSC, Hyderabad, which would be my base for the rest of my career. NRSC stands for National Remote Sensing Center. As I understand it, the NRSC primarily works on analyzing the images and media received from various ISRO satellites. I have never been an enthusiast of the field of computer vision and image processing (perhaps because of the maths associated with it). So I wasn&amp;rsquo;t very keen on doing something which does not align with my current interests. Although, one can say that you start loving anything if given enough time. But I wasn&amp;rsquo;t very sure about taking chances.&lt;/p>
&lt;p>Of course, I queried about the possibilities of transfer to some other center. I was told that the chances of a transfer are slim unless there are exceptional circumstances or a mutual transfer.&lt;/p>
&lt;h2 id="the-location">The location&lt;/h2>
&lt;p>As I mentioned earlier, if I had accepted the offer, I would have been bound to Hyderabad for the rest of my career. This was totally unacceptable to me. Many things have changed globally since the pandemic started, and the work location flexibility is one of the positive changes. Earlier, it was challenging to work from home, but now, it is/will be accepted as an industry norm. ISRO, being a government organization and from a national security perspective, will not allow its employees to work from home, rightly so. At present, I would perhaps be okay with the idea of exploring the world and staying away from the family. Still, I would like to settle down at some familiar place in the longer run. Joining ISRO would have stolen that possibility from me ultimately, if not immediately.&lt;/p>
&lt;p>I have been staying at my home for the last 2 years due to COVID lockdowns. This has affected my psyche at a deep level. I no longer wish to stay away from my parents. The detachment caused by my 7 year-long explorations ended with COVID lockdown. It will be tough for me to stay away from them for any long duration now. Air travel has reduced the distances drastically, but the possibility of a WFH-friendly future has spoiled me. ISRO is unlikely to provide this kind of option in the foreseeable future.&lt;/p>
&lt;h2 id="money">Money&lt;/h2>
&lt;p>Money always plays a part in every decision a working adult takes. While the starting salary given by ISRO is comparable to private sector companies, the yearly increments are peanuts. One gets 18% conditional increment + possible promotions every four years, which looks terrible compared to MNCs. Although joining ISRO comes with certain other perks which will definitely match or even outshine the overall CTC offered by MNCs in some cases.&lt;/p>
&lt;p>Suppose I had decided to join ISRO in an alternate universe. In that case, I could have given you a lot of reasons why money should not be a factor in deciding whether to take the job or not. So, I will stop discussing the importance of money in a job offer here.&lt;/p>
&lt;h2 id="not-my-kind-of-government-job">Not my kind of government job&lt;/h2>
&lt;p>Government jobs are lucrative in India. They pay decent, have excellent perks, give life-long job security, and calm and peaceful life on most days. However, you can divide the government jobs into three categories -&lt;/p>
&lt;ol>
&lt;li>Those with power, status, money, meaningful work, and hectic life&lt;/li>
&lt;li>Those with meaningful work, money, and peaceful life but no power and status&lt;/li>
&lt;li>Those with peaceful life (?), nothing else&lt;/li>
&lt;/ol>
&lt;p>In my opinion, ISRO&amp;rsquo;s job falls into category 2, where you have good work, money, and life but no power or status. I have good work and money in the private sector (life is a hit or miss). So, I couldn&amp;rsquo;t find any reason good enough to join ISRO. If I had the option to choose a job from category 1 (for example, all India services), I wouldn&amp;rsquo;t have given a second thought to the idea. My current thinking is that if I have to live someplace other than my hometown, I would like to have either big money or power and social status.&lt;/p>
&lt;h2 id="it-wasnt-my-original-target">It wasn&amp;rsquo;t my original target&lt;/h2>
&lt;p>I attempted the ISRO exam to get some additional practice for the GATE exam. I had plans to get into some good colleges (IISc!) for further studies. ISRO&amp;rsquo;s exam format coincides very much with the GATE&amp;rsquo;s. So I thought that it would be an excellent opportunity to get some much-needed real exam experience. There was no other aspect to this fact. If I had taken the exam intending to join ISRO on selection, it would have been effortless to convince myself. But, in my scenario, I could not convince myself about the opportunity. Some may say that not everybody gets this opportunity, and I should have accepted it happily. I am sorry, but I don&amp;rsquo;t subscribe to this viewpoint. I understand that the gods were kind enough to provide me with this opportunity. But I firmly believe that the same gods would also appreciate my reasoning about the decision to decline the offer.&lt;/p>
&lt;p>For some people, these reasons may seem non-important. My personal circumstances and professional ambitions, and my self-confidence (perhaps over-confidence) contributed to my final decision to decline the ISRO offer. It is very much possible that I may regret this decision in the future when my life takes a downturn. I hope that this post will remind me of my present situation and bring me out of my grief. The decision taken is what matters now. I should focus on the next minute, hour, day, month, and years to come.&lt;/p>
&lt;p>Wish me luck 🍀&lt;/p></description><author>Yash.Agarwal@fakeEmailToMakeValidatorHappy.com (Yash Agarwal)</author><category domain="https://tufte.yashagarwal.in/categories/write-ups">Write-ups</category><category domain="https://tufte.yashagarwal.in/tags/isro">ISRO</category><category domain="https://tufte.yashagarwal.in/tags/life">Life</category><category domain="https://tufte.yashagarwal.in/tags/lessons">Lessons</category><category domain="https://tufte.yashagarwal.in/tags/review">Review</category><guid>https://tufte.yashagarwal.in/posts/2022/01/why-i-decided-to-not-join-isro/</guid><pubDate>Wed, 26 Jan 2022 20:49:58 +0530</pubDate></item><item><title>Things I learned in Cisco</title><link>https://tufte.yashagarwal.in/posts/2022/01/things-i-learned-in-cisco/</link><description>&lt;p>&lt;strong>Note:&lt;/strong> This post was originally written on Jan 22, 2022 but I never posted it. Posting it now keeping the original authoring date, but with commit date of Aug 05, 2022.&lt;/p>
&lt;p>After three years at Cisco, I finally decided to explore other opportunities in 2021. 22/01/2022 was my last day in Cisco. It has been an exhilarating journey. Even more so because it was my first such journey. I thoroughly enjoyed my time at Cisco, both professionally and personally.&lt;/p>
&lt;p>Cisco provided me ample chances to work on a variety of problems. I started in a totally independent role exploring various open-source products and developing POCs integrating multiple open-source tools to the Cisco product line. I worked with OPA, ModSecurity, OpenRASP, etc. along with evaluation of Signal Sciences, K2 etc. We also worked on identifying differences between Snort&amp;rsquo;s http module and ModSecurity, apart from developing POCs to identify supply chain attacks by evaluating the build artefacts generated in a CI pipeline.&lt;/p>
&lt;p>Later I got a chance to work with a typical product development team when I switched to Snort team where I worked on the FTD integration for Snort, and helped in shipping high-quality code enhancing legacy Cisco firewalls. I also got an opportunity to contribute to some significant components to the very early stage Secure Firewall Cloud Native (SFCN) – Cisco&amp;rsquo;s own cloud-based security solution – where I introduced an important component required for health monitoring in the SFCN clusters. Throughout my tenure at Cisco, I got opportunities to work on both the legacy (Lina ASA - a 20-year-old product) and the latest tools and technologies – Kubernetes, Docker, Terraform, Prometheus etc.&lt;/p>
&lt;p>But, work was not the best thing about Cisco. The work was, of course, excellent, but what makes Cisco a dream company for many is its people. The culture that Cisco imbibes is pure gold. I don&amp;rsquo;t know how the rest of the industry operates in this department, simply because of my inexperience. But for a novice like me, Cisco provided an ideal launchpad. I have many regrets about my time at Cisco, more on this later in the post. The people I met and worked with throughout my time in Cisco were exceptional in their work and, at the same time, were quite humble and down to earth in their dealings with me. I have also heard about some bad experiences from people working in Cisco, so I may have been fortunate in this aspect. Exceptions are everywhere, but they should not be the norm. And the toxicity is definitely not the norm in Cisco.&lt;/p>
&lt;p>While I learned a lot of things in Cisco, there were a lot of opportunities that I didn&amp;rsquo;t utilize while in Cisco. There used to be many hackathons, patentothons, cultural, literary, technical clubs, and sporting facilities&lt;label for="marginnote-53df1db96477ef88c086c7990abca235-1" class="margin-toggle marginnote-symbol">*&lt;/label>&lt;input type="checkbox" id="marginnote-53df1db96477ef88c086c7990abca235-1" class="margin-toggle"/>
&lt;span class="marginnote">Pity that I never played on Cisco's badminton court&lt;/span>
in Cisco. Many of my friends were part of these activities, and some even led the organizing teams of these event. I never tried to contribute to any of these events. I had some personal and professional reasons behind this lack of enthusiasm. One of my colleagues criticized me &lt;strong>privately&lt;/strong> for this on my last day - &amp;ldquo;Yash, I wish you had shown more involvement during the team building activities.&amp;rdquo; I have been an introvert throughout my life, and changing one&amp;rsquo;s personality is not easy. But this is something I will actively try to avoid repeating.&lt;/p>
&lt;p>Now, you may ask, if everything was so rosy about Cisco, why did you leave, Yash?&lt;/p>
&lt;p>Well, the reasons are many folded -&lt;/p>
&lt;ol>
&lt;li>I am only 25. It is not a time to settle for me.&lt;/li>
&lt;li>I was trying to break away from the traditional network security domain. I have been interested in distributed systems and cloud security. Still, my current team was not an ideal place for this. Switching to some other team inside Cisco was an option. But I decided to explore the industry from another perspective by changing the company.&lt;/li>
&lt;li>Few more reasons that are not as important to mention here.&lt;/li>
&lt;/ol>
&lt;p>Anyway, Cisco will always have a special place in my heart for introducing me to the corporate world.&lt;/p>
&lt;p>It is farewell for now. Au Revoir, Cisco!&lt;/p></description><author>Yash.Agarwal@fakeEmailToMakeValidatorHappy.com (Yash Agarwal)</author><category domain="https://tufte.yashagarwal.in/categories/write-ups">Write-ups</category><category domain="https://tufte.yashagarwal.in/tags/cisco">Cisco</category><category domain="https://tufte.yashagarwal.in/tags/experiences">Experiences</category><category domain="https://tufte.yashagarwal.in/tags/lessons">Lessons</category><guid>https://tufte.yashagarwal.in/posts/2022/01/things-i-learned-in-cisco/</guid><pubDate>Sat, 22 Jan 2022 21:45:24 +0530</pubDate></item><item><title>2021 - A Bullish Year</title><link>https://tufte.yashagarwal.in/posts/2022/01/2021-a-bullish-year/</link><description>&lt;p>2021 was a year of realigning priorities for me. I started the year with a set of goals, expectations, and an enthusiasm to achieve these, and here I am, ending the year with entirely different objectives and perspectives. There were a few ups and downs throughout the year, but collectively, these have transformed me into a more fitter, confident, enthusiastic, and curious version of my past self.&lt;/p>
&lt;h2 id="health">Health&lt;/h2>
&lt;p>If you read this blog regularly, you may know that I have been struggling to make health a priority in my life for the last few years. This year also started on the same note. I started with 65 kgs of weight, and by the end of July, my weight had increased to 71 kgs. I have been underweight for most of my life, but I probably became obese for the first time on the BMI scale this year. And I am not very proud of this, even though I always desired to gain some weight while growing up. I have long realized the importance of exercise in daily life but never acted on it seriously.&lt;/p>
&lt;p>Nonetheless, this year I finally managed to work on it. Since September, I have reduced my weight from 71 kgs to 62 kgs. More importantly, I could bring my BMI down to an optimum level.&lt;/p>
&lt;p>Another important aspect of health that I am working on is sleep. For some years now, I have been working on regulating my sleep timings and the time I spend sleeping at night. I have data about my sleep duration for the entire year. Using that, I produced the chart below, which shows that I have managed to sleep at least 8 hours on average (this also includes afternoon naps).&lt;/p>
&lt;p>&lt;figure class="normal">
&lt;p class="caption">
Sleeping in 2021&lt;/p>
&lt;img class="lazyload blur-up" data-sizes="auto" src="https://tufte.yashagarwal.in/images/posts/2022-01-04/average_sleep_duration_hueb33d64371b5c5cbefca64f6f3f05447_56527_20x0_resize_box_3.png" data-srcset="https://tufte.yashagarwal.in/images/posts/2022-01-04/average_sleep_duration_hueb33d64371b5c5cbefca64f6f3f05447_56527_900x0_resize_box_3.png 900w,https://tufte.yashagarwal.in/images/posts/2022-01-04/average_sleep_duration_hueb33d64371b5c5cbefca64f6f3f05447_56527_800x0_resize_box_3.png 800w,https://tufte.yashagarwal.in/images/posts/2022-01-04/average_sleep_duration_hueb33d64371b5c5cbefca64f6f3f05447_56527_500x0_resize_box_3.png 500w" alt="Sleeping in 2021">
&lt;noscript>&lt;img sizes="100vw" srcset="https://tufte.yashagarwal.in/images/posts/2022-01-04/average_sleep_duration_hueb33d64371b5c5cbefca64f6f3f05447_56527_900x0_resize_box_3.png 900w,https://tufte.yashagarwal.in/images/posts/2022-01-04/average_sleep_duration_hueb33d64371b5c5cbefca64f6f3f05447_56527_800x0_resize_box_3.png 800w,https://tufte.yashagarwal.in/images/posts/2022-01-04/average_sleep_duration_hueb33d64371b5c5cbefca64f6f3f05447_56527_500x0_resize_box_3.png 500w" src="https://tufte.yashagarwal.in/images/posts/2022-01-04/average_sleep_duration.png" alt="Sleeping in 2021">&lt;/noscript>
&lt;/figure>
&lt;/p>
&lt;p>One of my last year&amp;rsquo;s goals was -
&lt;blockquote>
&lt;p>Sleep at proper times - &amp;hellip; I will try to sleep by 10 PM and sleep for at least 8 hours every day. I am aiming for an 80% success rate in this aspect.&lt;/p>
&lt;footer>
&lt;strong>&lt;/strong>
&lt;/footer>
&lt;/blockquote>
&lt;/p>
&lt;p>I feel that I have managed to achieve this goal with a good level of accuracy.&lt;/p>
&lt;h2 id="career">Career&lt;/h2>
&lt;p>This year, I completed three years in Cisco. It has been a wonderful experience. However, I had a feeling that I should move on and start exploring the industry from a different perspective. So, I decided to go back to the interview table. In 2022, I will be joining a late-stage US-based cloud-security startup. I will write a separate post describing my experience preparing and attending the interviews.&lt;/p>
&lt;p>I had to make a rather tough decision about my career this year. When I was preparing for GATE, I also decided to take the ISRO exam. The idea was to get some additional practice from the GATE perspective. After clearing the written test and the interviews, I got an all-India rank of 30 in the exam. As a result, I was offered a Group-A post of Scientist in NRSC Hyderabad. However, it didn&amp;rsquo;t align with my vision and plans for the future, so I decided to decline the offer. I hope to write a long-overdue post about my experience with this sometime in 2022.&lt;/p>
&lt;h2 id="blogging-and-writing">Blogging and Writing&lt;/h2>
&lt;p>The fact that I could not post this review on the first day of the year is a testament that I am struggling with writing. I am not in the proper mindset to write anything. I have tried to start small, but writing even a single sentence seems like a burden. Throughout 2021, I had a nagging feeling that I should write, but I couldn&amp;rsquo;t find the enthusiasm to sit down and get going. Unfortunately, I don&amp;rsquo;t even see myself writing anytime in the foreseeable future.&lt;/p>
&lt;p>I notice that the procedure used to publish anything on this blog is very complex. Unlike WordPress, I have to battle with markdown, git, code editor, etc., to publish a post and make subsequent updates. The complexity associated with the static sites seems to have created a block in my mind. Unfortunately, developing a new website is no longer a priority for me. And I am not yet ready to accept the tradeoff between spending money on WordPress hosting and the comfort of writing in Wordpress&amp;rsquo;s editor.&lt;/p>
&lt;p>I planned to journal regularly in 2021. I started with that, but soon it turned into a logbook kind of activity. Instead of introspecting over my day, I started tracking each hour of the day, which was not the intention. So around July, I stopped doing it.&lt;/p>
&lt;h2 id="reading">Reading&lt;/h2>
&lt;p>I had set a target to read five books this year. I completed that goal. I read a lot of PDFs this year, which can&amp;rsquo;t be classified as books, so my reading statistics are very much skewed for the year. However, I didn&amp;rsquo;t plan properly this year, so my efforts seem scattered and unfocused.&lt;/p>
&lt;p>To be very honest, I was distracted throughout the year by the continuous flooding of information. My tendency to do everything with perfection further made things complicated. Another troubling issue was my resistance to making notes or summarising the books I read. I consider this an important activity because I find it challenging to recall otherwise.&lt;/p>
&lt;p>I dabbled with Zettlekasten for some time this year. It is an exciting idea, but the time required to set it up is a big hurdle. It takes considerable effort to summarise a piece of knowledge, link it with other information, and then revise all of it. I may not be ready for it yet, but I will be trying it again in 2022 because I am very confident about the potential of this system.&lt;/p>
&lt;p>I have reduced (or stopped) my Twitter usage to minimize information overload. I felt that passively reading others' views distorts my thinking and ability to generate original ideas. Although I am not really producing any exciting ideas, I want to keep my mind clean and free from distraction as much as possible.&lt;/p>
&lt;h2 id="media-consumption">Media Consumption&lt;/h2>
&lt;p>I logged my sleep data, work schedules, perceived productivity levels, perceived sleep efficiency, mobile usage patterns, etc., in a Google Sheet document. However, around mid-year, I started to get impatient with the whole manual setup and stopped logging my data. So, unfortunately, I don&amp;rsquo;t have any way to analyze all these patterns now. I am totally disappointed with the lack of any standard tool that can collect at least mobile usage data while also ensuring privacy. Rescue time is something I have thought about, but I cannot convince myself to use that app due to privacy issues.&lt;/p>
&lt;p>Below are my media consumption habits from 2021 -&lt;/p>
&lt;p>&lt;figure class="normal">
&lt;p class="caption">
Media consumption in 2021&lt;/p>
&lt;img class="lazyload blur-up" data-sizes="auto" src="https://tufte.yashagarwal.in/images/posts/2022-01-04/media_consumption_in_2021_hu5a07bdfa4dc989e3bd17ce76584b17ca_48243_20x0_resize_box_3.png" data-srcset="https://tufte.yashagarwal.in/images/posts/2022-01-04/media_consumption_in_2021_hu5a07bdfa4dc989e3bd17ce76584b17ca_48243_900x0_resize_box_3.png 900w,https://tufte.yashagarwal.in/images/posts/2022-01-04/media_consumption_in_2021_hu5a07bdfa4dc989e3bd17ce76584b17ca_48243_800x0_resize_box_3.png 800w,https://tufte.yashagarwal.in/images/posts/2022-01-04/media_consumption_in_2021_hu5a07bdfa4dc989e3bd17ce76584b17ca_48243_500x0_resize_box_3.png 500w" alt="Media consumption in 2021">
&lt;noscript>&lt;img sizes="100vw" srcset="https://tufte.yashagarwal.in/images/posts/2022-01-04/media_consumption_in_2021_hu5a07bdfa4dc989e3bd17ce76584b17ca_48243_900x0_resize_box_3.png 900w,https://tufte.yashagarwal.in/images/posts/2022-01-04/media_consumption_in_2021_hu5a07bdfa4dc989e3bd17ce76584b17ca_48243_800x0_resize_box_3.png 800w,https://tufte.yashagarwal.in/images/posts/2022-01-04/media_consumption_in_2021_hu5a07bdfa4dc989e3bd17ce76584b17ca_48243_500x0_resize_box_3.png 500w" src="https://tufte.yashagarwal.in/images/posts/2022-01-04/media_consumption_in_2021.png" alt="Media consumption in 2021">&lt;/noscript>
&lt;/figure>
&lt;/p>
&lt;p>For some reason, I watched a lot of content in the last two months of 2021. Possible reasons may be my acceptance of the new job offer or my truce with the weather. For whatever reason, I consider this year a controlled one in the binge-watching department.&lt;/p>
&lt;h2 id="what-in-2022">What in 2022?&lt;/h2>
&lt;ul>
&lt;li>Build muscles - Now that my weight is at an appropriate level, it is time for me to build some muscles.&lt;/li>
&lt;li>Read 24 books - I plan to read 24 books this year. I am yet to decide if I want to focus on a particular subject or diversify my reading.&lt;/li>
&lt;li>Phone usage - Planning to keep it under 3 hours. However, I need to figure out how to export this data out of my phone.&lt;/li>
&lt;/ul>
&lt;p>As you might have noticed, most of my failures in 2021 have something to do with my habit of doing things perfectly. While it is good to perform any task as cleanly as possible, it sometimes becomes a big hurdle in starting up. In 2022, I hope to keep this tendency at bay as much as possible.&lt;/p></description><author>Yash.Agarwal@fakeEmailToMakeValidatorHappy.com (Yash Agarwal)</author><category domain="https://tufte.yashagarwal.in/categories/write-ups">Write-ups</category><category domain="https://tufte.yashagarwal.in/tags/review">review</category><guid>https://tufte.yashagarwal.in/posts/2022/01/2021-a-bullish-year/</guid><pubDate>Tue, 04 Jan 2022 22:25:24 +0530</pubDate></item><item><title>25, it is!!!</title><link>https://tufte.yashagarwal.in/posts/2021/06/25-it-is/</link><description>&lt;p>I turned 25 in the week gone by. I have been on the earth for a quarter of a century now, and the feelings are mixed. I love to write about myself, even at the risk of overexposing myself to the general world. This helps me in remembering my younger self. That, I think, is the best yardstick to judge myself against. Unfortunately, while I should write positive things, the tone of most of my personal experience articles tends to be negative. It is instinctive and something that I have not learned to control just yet. Nevertheless, I will consider myself successful when I look back at my life, and the memories make me smile. Some of my previous posts do make me smile.&lt;/p>
&lt;p>The last one month or so has been tough on me. Suddenly, all my plans started to collapse, I started feeling depressed, and the feeling of being an imposter hit me hard once again. All this coincided with the second wave of COVID-19 in India, and it is easy for me to blame COVID. But there are certainly other reasons that have been building up for the last few years. The eruption of these accumulated worries from time to time drains me down. This has been the essence of my life for the previous few years since I started having an idea of self-ownership.&lt;/p>
&lt;h3 id="borrowing-from-future-and-past">Borrowing from future and past&lt;/h3>
&lt;p>I see many of my friends and colleagues opting for higher studies abroad or in top institutes of India. While I also had such plans in the past, circumstances forced me to kneel down. I had hoped that I have adjusted to this reality. But a constant wave of social media posts from friends and people leaving the workplace has negatively affected my subconscious mind. Given that I decided with maturity and complete understanding of the situation, I don’t know who or what to blame for my current mental state. I guess I just need to give it some time, and it will subside on its own.&lt;/p>
&lt;p>I often tend to compare myself against others and feel low seeing people doing better than me. It is definitely not jealousy, but being competitive has so intrinsically become part of me that I can’t help. Somewhere deep down, I also know that this comparison is futile. Different people can have different life situations, and life is not the same for any two persons. A better option for me is to compare against my younger self and see how much I have changed. That should be easy to do, given my habit of writing my experiences frequently. I don&amp;rsquo;t know what is holding me back.&lt;/p>
&lt;p>When I look back at my childhood, I see a weak, frail boy bullied by good and bad alike. Unfortunately, I never mustered the courage to fight them back. The bullying and my subsequent retreat into a cocoon have had a lasting impact on my life. I am still trying to reverse it. On the other hand, I still think that I am a born introvert. My life experiences might undoubtedly have given my personality its current shape, but it didn&amp;rsquo;t all start with a blank slate.&lt;/p>
&lt;h3 id="the-struggles-of-the-present">The struggles of the present&lt;/h3>
&lt;p>One thing I am very proud of myself is that I never lost my curiosity. I am still inquisitive. I love to learn anything and everything that I can put my hands on (perhaps except artistic stuff). But what kills my enthusiasm is the fact that I don’t utilize my learnings in any way. I tend to live my life in the same way I have been living it till now. There is no adventure whatsoever in my life, as I see it. It is as if whatever new I learn doesn’t make any impact on my day-to-day life. When I think about it deeply, it appears to be a very unfortunate aspect of my quest for knowledge.&lt;/p>
&lt;p>For instance, let us talk about reading. I agree that we should not read to remember, and that way, definitely reading has given me some new perspectives. I have read anywhere between 90-100 good quality books in the last one and half years. During a typical day, I get many insights related to whatever I have read. But when I sit down to articulate them in the form of a blog post or a personal note, I go blank. According to my introspection, it seems that most of my learnings are just superficial and I suffer from so-called illusion of knowledge. This reminds me of a quote by Daniel J. Boorstin -&lt;/p>
&lt;blockquote>
&lt;p>The greatest enemy of knowledge is not ignorance, it is the illusion of knowledge.&lt;/p>
&lt;footer>
&lt;strong>&lt;/strong>
&lt;/footer>
&lt;/blockquote>
&lt;p>Another thing is my short attention span. I can’t focus on one thing for more than a couple of minutes now. This is one thing that has deteriorated over the years as I become more and more connected. I know that meditation will definitely help me with this issue. Still, I can’t find the motivation to keep meditating continuously. I can start meditating any day. I can continue it for some days by using my willpower, but this is not sustainable. With a limited stock of willpower, I am bound to fail unless I make meditation a habit. I have almost cut myself from social media, instant messaging apps, and all other forms of communication to focus on the important stuff in my free time. Still, somehow my attention betrays me every single time.&lt;/p>
&lt;p>For a couple of years now, I have been blaming my undecidedness to write regularly on so-called “writer&amp;rsquo;s block.” This is a complete sham. It has just served as a cover for my laziness and unwillingness. I often convince myself saying that I should first acquire knowledge. Then, one fine morning, I will wake up and write world-shaking articles. Of course, this is never going to happen, but why not, it is a good excuse to keep me happy with my comfort zone.&lt;/p>
&lt;h3 id="conundrums-of-asking-for-help">Conundrums of asking for help&lt;/h3>
&lt;p>There have been many people in my life who have offered to guide me and help me realize my goals. However, my reserved nature and the feeling of being an imposter have stopped me from opening up to anyone. I have been struggling with imposter syndrome for the last 3-4 years. I am not sure about the reasons yet. Still, I think my hesitation in requesting a “familiar” person for mentorship arises from the feeling that I might not perform as they would expect me to do. That would shatter my image in front of them. Therefore, my subconscious mind has decided that it is more optimal to keep the (false?) impression intact instead of getting the required help. That might also answer why I never share my articles with anyone. It is a fact that I don’t feel very confident about myself and my work. It has affected me at the workplace, and perhaps it will continue affecting me in the coming years. The only way I can think of to get rid of this problem is to face it.&lt;/p>
&lt;p>I have also often struggled to take criticism constructively. Somehow my egoistic nature and perfectionistic tendencies mixed with imposter syndrome make it challenging to learn from criticism. Just to clarify, I don’t mean that I harbor any ill thoughts for the criticizer. It is something personal, and I don’t have any words to describe it right now.&lt;/p>
&lt;h3 id="the-illusion-of-competence">The illusion of competence&lt;/h3>
&lt;p>While reading has given me new and unique perspectives to think about the world, it has also given me an illusion of competence. I feel like I know a lot, but when it comes to utilizing the “earned” knowledge, I cannot interconnect my thoughts. I have seemingly different areas of interest, and that is reflected in my reading habits. My expectation is that diverse reading habits will result in a future me who will gather ideas from multiple fields and interconnect them to build a novel abstraction. I am not sure if this is a far-fetched desire and even possible for an average human. But I can’t push myself away from this thought. Over the years, this has become one of many ambitions to get to that state. I don’t know if I will ever reach that point, but I don’t see any harm in keep trying. My only worry is how to stay away from the illusion of expert-level competence in a field, while I don’t know actually have any expertise.&lt;/p>
&lt;h3 id="the-political-me">The political me&lt;/h3>
&lt;p>Those who know me in my personal life will attest that I am not able to stay loyal to any one side of the political spectrum. I have always see-sawed between left and right. Of course, this see-sawing has subjected me to &amp;ldquo;gentle&amp;rdquo; bashing from my friends adhering to either ideology. Famous Hindi poet Ramdhari Singh Dinakar very accurately points out the situation -&lt;/p>
&lt;blockquote>
&lt;p>समर शेष है, नहीं पाप का भागी केवल व्याघ्र, &lt;!-- raw HTML omitted -->
जो तटस्थ हैं, समय लिखेगा उनका भी अपराध।&lt;/p>
&lt;footer>
&lt;strong>&lt;/strong>
&lt;/footer>
&lt;/blockquote>
&lt;p>But then, he says -&lt;/p>
&lt;blockquote>
&lt;p>जो सत्य जान कर भी न सत्य कहता है,&lt;!-- raw HTML omitted -->
या किसी लोभ के विवश मूक रहता है,&lt;!-- raw HTML omitted -->
उस कुटिल राजतन्त्री कदर्य को धिक् है,&lt;!-- raw HTML omitted -->
यह मूक सत्यहन्ता कम नहीं वधिक है।&lt;/p>
&lt;footer>
&lt;strong>&lt;/strong>
&lt;/footer>
&lt;/blockquote>
&lt;p>Now, this is one of the paradoxes that troubles me quite frequently. While taking sides mean losing some of your individuality, not taking sides is also equivalent to not having a clear goal in mind, in a way.&lt;/p>
&lt;p>Since when I started reading profusely, I have tried to keep this balance intact. I have made conscious efforts not to form &lt;em>strong&lt;/em> opinions and not adhere to one particular ideology without looking at facts and data. The engineer&amp;rsquo;s mind weighs everything in terms of data and facts and filters out personal opinions.&lt;/p>
&lt;p>I read a lot about foreign policy, society, culture, caste, religion, economy, history, and the constantly evolving political structure of India and the World. But, unfortunately, most of the quality media is dominated by the left. I don&amp;rsquo;t want to engage with keyboard-warriors on Twitter, WhatsApp, and elsewhere, so that leaves me with significantly less material to know the genuine viewpoint of the other side.&lt;/p>
&lt;p>Over the years, I have realized that socially I tend to be on the center-left and economically, on center-right. But sharing political views in the public domain without proper research is not ideal. I want to consolidate my learnings and form well-informed and well-analyzed opinions on happenings in the world in general and India in particular before I participate in political discourse. It does not mean that I don&amp;rsquo;t have any political opinions. Most events cannot be categorized as good or bad; it is just how one wants to perceive the world. Therefore, I constantly try to avoid getting influenced by what a random journalist with certain motives, sitting in a high-rise AC office, might want me to believe.&lt;/p>
&lt;h3 id="the-cs-guy">The CS guy!&lt;/h3>
&lt;p>Though I hated Computer Science a couple of years back, I have worked on my fears. Now, at least I don’t have any understanding issues with the core CS subjects (except DBMS, perhaps. I don’t like it; at all!) I didn’t focus on understanding whatever CS theory was taught during my undergraduate (again, a lack of proper mentorship.) Although this doesn’t harm me in my professional life, I want to get some kind of research experience at some point in my life. Unfortunately, it seems unlikely for me to enroll in a full-time graduate program in the foreseeable future. So, I am weighing my options to go for a Systems course via online studies. Assuming I get admission, one option is a sponsored graduate program (such as this &lt;a href="https://iken.iisc.ac.in/mtech-online/" target="_blank" rel="noopener">one&lt;/a> offered by IISc.) Another option is to go for an online &lt;a href="https://omscs.gatech.edu/" target="_blank" rel="noopener">MS degree&lt;/a> provided by some US universities. I will surely miss the unique campus experience, but I hope it will still quench my intellectual thirst. I currently have some other stuff on my plate. I will try to finish them before deciding if and when I should opt for these options. I hope to make a call in the next two years in the worst-case scenario.&lt;/p>
&lt;h3 id="originality">Originality&lt;/h3>
&lt;p>By originality, I mean a way to build upon something existing — some kind of improvement upon an already existing thing, idea, or abstraction. Almost everything humans have created has been an improvement over something preceding it, either man-made or natural. In my opinion, originality is a creative process to generate novel ideas improving upon existing processes, things, tools, and knowledge systems to make them more desirable, optimized, user-friendly, and insightful. Original need not be &amp;ldquo;original&amp;rdquo; in its literal sense.&lt;/p>
&lt;p>While I have been working on my CS skills, it is not the field where I get my most original thoughts and ideas, despite being the subject where I spent 4 years of my life. I have met many amazing people in Cisco over the last 3 years. I am often awestruck by their ability and passion for continuously generating new ideas. Whether it is a Hackathon or a Patentothon, I have been fortunate to team up with people who can generate exciting ideas with surprising depth. However, I have thought about it and realized that I am not yet at that level where I can generate original ideas worthy of patenting or publication. Some people are just born with that kind of talent, and some acquire skills superior to any talent. With growing experience, I might get to that level someday, but currently, I am yet another average Indian software engineer. Read the last section of this article to know why I am content with this situation for now.&lt;/p>
&lt;p>On the other hand, the fields where I tend to get many ideas nowadays are religion, politics, and history. One possible reason behind this might be that these subjects are my area of interest nowadays, and I read related books during my non-work day. So my mind gets a lot of time to consolidate this stuff.&lt;/p>
&lt;p>It is such a contentious issue for me that I feel embarrassed talking about it. In fact, this is the first time I have actually given any thoughts on this topic. And I am glad that I did it. I wrote above my initial impressions about an issue I was unaware of until a few moments ago. I hope to get more clarity and insights into the real reasons behind my lack of enthusiasm to produce new ideas in the coming time.&lt;/p>
&lt;hr>
&lt;p>Even if not entirely by choice, I am trying to embrace the slow-growth mindset, taking short-term hits for long-term gains. I hope this gamble will pay off, as I think it will be the right approach. Long-term gains far outweigh short-term benefits when it is a matter of whole life.&lt;/p>
&lt;p>While I keep whining about my future and past and try to piece together my present, this quote sums up the way forward succinctly —&lt;/p>
&lt;blockquote>
&lt;p>Until the day when God shall deign to reveal the future to man, all human wisdom is summed up in these two words — &amp;lsquo;Wait and hope.&amp;rsquo;&lt;/p>
&lt;footer>
&lt;strong>&lt;/strong>
&lt;/footer>
&lt;/blockquote></description><author>Yash.Agarwal@fakeEmailToMakeValidatorHappy.com (Yash Agarwal)</author><category domain="https://tufte.yashagarwal.in/categories/write-ups">write-ups</category><category domain="https://tufte.yashagarwal.in/tags/life">Life</category><category domain="https://tufte.yashagarwal.in/tags/review">Review</category><category domain="https://tufte.yashagarwal.in/tags/lessons">Lessons</category><guid>https://tufte.yashagarwal.in/posts/2021/06/25-it-is/</guid><pubDate>Sun, 06 Jun 2021 00:00:00 +0000</pubDate></item><item><title>Thoughts on the Family Man 2</title><link>https://tufte.yashagarwal.in/posts/2021/06/thoughts-on-the-family-man-2/</link><description>&lt;p>&lt;figure class="normal">
&lt;p class="caption">
The Family Man 2&lt;/p>
&lt;img class="lazyload blur-up" data-sizes="auto" src="https://tufte.yashagarwal.in/images/posts/2021-06-05/the-family-man-2-cover_hu0bd5ddb0b6a027e4cbf53546c105da3c_96717_20x0_resize_q75_box.jpg" data-srcset="https://tufte.yashagarwal.in/images/posts/2021-06-05/the-family-man-2-cover_hu0bd5ddb0b6a027e4cbf53546c105da3c_96717_900x0_resize_q75_box.jpg 900w,https://tufte.yashagarwal.in/images/posts/2021-06-05/the-family-man-2-cover_hu0bd5ddb0b6a027e4cbf53546c105da3c_96717_800x0_resize_q75_box.jpg 800w,https://tufte.yashagarwal.in/images/posts/2021-06-05/the-family-man-2-cover_hu0bd5ddb0b6a027e4cbf53546c105da3c_96717_500x0_resize_q75_box.jpg 500w" alt="The Family Man 2">
&lt;noscript>&lt;img sizes="100vw" srcset="https://tufte.yashagarwal.in/images/posts/2021-06-05/the-family-man-2-cover_hu0bd5ddb0b6a027e4cbf53546c105da3c_96717_900x0_resize_q75_box.jpg 900w,https://tufte.yashagarwal.in/images/posts/2021-06-05/the-family-man-2-cover_hu0bd5ddb0b6a027e4cbf53546c105da3c_96717_800x0_resize_q75_box.jpg 800w,https://tufte.yashagarwal.in/images/posts/2021-06-05/the-family-man-2-cover_hu0bd5ddb0b6a027e4cbf53546c105da3c_96717_500x0_resize_q75_box.jpg 500w" src="https://tufte.yashagarwal.in/images/posts/2021-06-05/the-family-man-2-cover.jpg" alt="The Family Man 2">&lt;/noscript>
&lt;/figure>
&lt;/p>
&lt;p>I binge-watched the second season of The Family Man (TFM) 2 last night. I was eagerly waiting for this season of TFM for a long time, especially after the highly gripping season 1. And I am not disappointed. While I watch digital content very selectively (young-adult fantasy depicting a dark and mid-age Europe and Russia and spy-genre Indian shows for occasional patriotic doses), very few shows have such excellent cinematography. It is the plot of TFM2 that made me ask some questions myself. While I don’t have clear answers to them yet, I thought I will just list them down, along with some of my raw thoughts.&lt;/p>
&lt;p>The plot is about the resistance of Eelam Tamils of Sri Lanka against the Sri Lankan government. The topic is riddled with complex matters of morality, humanity, human rights, ethnicity, language, majority-minority conflicts, and the right to self-governance. Sri Lankan conflict is familiar to most Indians because of India’s involvement in the struggle in the early 1980s and 90s and the subsequent assassination of Rajiv Gandhi during an election campaign in Chennai. Many such issues are spread throughout the world — e.g., Israel-Palestine conflict, Rohingya issue in Myanmar, Nagaland in India. Specific questions that perplex me about these conflicts are -&lt;/p>
&lt;ol>
&lt;li>Why do people fight for their ethnicity? How difficult is it to live alongside other people under a defined constitution prepared with a mutual agreement?&lt;/li>
&lt;li>Why are modern nation-states reluctant to give autonomy or independence to such groups just to avoid bloodshed?&lt;/li>
&lt;li>What are the causes of the origins of such conflicts?&lt;/li>
&lt;li>Are there any examples where the final settlement was acceptable to both sides, and nobody left the table feeling betrayed?&lt;/li>
&lt;/ol>
&lt;p>I look for academic (Sociology, Anthropology, and Political Science, to be precise) answers to these questions. I understand that ground realities are often very different than what we learn from news media and books. Humans tend to have a natural connection to their perceived kinsmen. Why do you think nature has decided to keep a human baby dependent on her parents for almost 1/4th of her average lifetime? The bond we generate with our society, tribe, kin, and family stays with us forever, and we strive to keep them safe and secure at any cost.&lt;/p>
&lt;p>I will give a controversial example - the Indian freedom struggle is a revered movement for most Indians, including myself. Still, for the then British rulers, it was a rebellion that had to be suppressed at any cost to save their empire. We despise the atrocities performed by the British on Indian people. How is that different from the horrors seen in the conflicts of the modern world (not just the people in power, rebels everywhere have also committed unspeakable atrocities). As I understand it, it is not a binary problem; there is no black and white in this. There are shades of grey and what amount of black you see depends on a lot of factors. Just be aware of the fact that the more powerful side need not be the necessary evil. Resolving any conflict requires some compromises from both sides. Until both sides are leaving the table feeling that they won, no negotiation will be successful. Remember -&lt;/p>
&lt;blockquote>
&lt;p>We cannot negotiate with people who say what’s mine is mine and what’s yours is negotiable.&lt;/p>
&lt;footer>
&lt;strong>&lt;/strong>
&lt;/footer>
&lt;/blockquote></description><author>Yash.Agarwal@fakeEmailToMakeValidatorHappy.com (Yash Agarwal)</author><category domain="https://tufte.yashagarwal.in/categories/humanity">Humanity</category><category domain="https://tufte.yashagarwal.in/categories/politics">Politics</category><category domain="https://tufte.yashagarwal.in/tags/conflicts">Conflicts</category><category domain="https://tufte.yashagarwal.in/tags/human-nature">Human Nature</category><guid>https://tufte.yashagarwal.in/posts/2021/06/thoughts-on-the-family-man-2/</guid><pubDate>Sat, 05 Jun 2021 17:15:02 +0530</pubDate></item><item><title>Looking back at 2020</title><link>https://tufte.yashagarwal.in/posts/2021/01/looking-back-at-2020/</link><description>&lt;p>While I thought of writing this review on 31st December, I couldn&amp;rsquo;t overcome my laziness. It has been a persistent problem with me in 2020, which I haven&amp;rsquo;t been able to fix as of now. On average, the year 2020 was a good year for me. It wasn&amp;rsquo;t equally forgiving to me on every issue of my life, but it was most undoubtedly lenient on the issues I consider most important at this phase of my life. As for most people, it was a year of self-retrospection for me as well. I identified some new goals in my life, forgot some others, compromised with some failures, and learned the value of loved ones.&lt;/p>
&lt;p>Like previous years, I have identified some critical areas of my life, where I am putting more focus year after year. It is easier to focus on one topic at a time. I have decided to omit some parts of my life from this write-up because I am not yet ready to reveal them to a specific set of people (although very few people read this blog now, thanks to my irregularity, I prefer to stay risk-averse).&lt;/p>
&lt;h2 id="health">Health&lt;/h2>
&lt;p>2020 belonged to the pandemic. So it is most prudent to start with the topic of health. For the last some years, I have been struggling with a lot of health-related issues. Although this year was a much better one for my body and mind, I am still petrified of my health issues. It seems that I am a worry-magnet, and the worry of catching coronavirus was the biggest of them all this year. I spent almost 3-4 months in this worry. It took some toll on my health, but in the end, I was able to come out of it, thanks to family.&lt;/p>
&lt;p>I should give part of the blame to my laziness. I had stopped all my learning activities in the mid-to-late year (perhaps I was exhausted). And that gave way to evil thoughts in my mind. As they say, &amp;ldquo;An idle mind is the devil&amp;rsquo;s workshop!&amp;rdquo;. Thankfully I got hold of the situation while it was still manageable.&lt;/p>
&lt;p>&lt;figure class="normal">
&lt;p class="caption">
How much I slept in 2020?&lt;/p>
&lt;img class="lazyload blur-up" data-sizes="auto" src="https://tufte.yashagarwal.in/images/posts/2021-01-03/sleep_hours_hucdc10d5568809454be065ed714d82f6f_159961_20x0_resize_q75_box.jpg" data-srcset="https://tufte.yashagarwal.in/images/posts/2021-01-03/sleep_hours_hucdc10d5568809454be065ed714d82f6f_159961_900x0_resize_q75_box.jpg 900w,https://tufte.yashagarwal.in/images/posts/2021-01-03/sleep_hours_hucdc10d5568809454be065ed714d82f6f_159961_800x0_resize_q75_box.jpg 800w,https://tufte.yashagarwal.in/images/posts/2021-01-03/sleep_hours_hucdc10d5568809454be065ed714d82f6f_159961_500x0_resize_q75_box.jpg 500w" alt="Sleeping in 2020">
&lt;noscript>&lt;img sizes="100vw" srcset="https://tufte.yashagarwal.in/images/posts/2021-01-03/sleep_hours_hucdc10d5568809454be065ed714d82f6f_159961_900x0_resize_q75_box.jpg 900w,https://tufte.yashagarwal.in/images/posts/2021-01-03/sleep_hours_hucdc10d5568809454be065ed714d82f6f_159961_800x0_resize_q75_box.jpg 800w,https://tufte.yashagarwal.in/images/posts/2021-01-03/sleep_hours_hucdc10d5568809454be065ed714d82f6f_159961_500x0_resize_q75_box.jpg 500w" src="https://tufte.yashagarwal.in/images/posts/2021-01-03/sleep_hours.jpg" alt="Sleeping in 2020">&lt;/noscript>
&lt;/figure>
&lt;/p>
&lt;p>This graph shows how my sleeping times changed throughout the year. I lost track in the third quarter of the year. Anyway, in December, I seem to have come back to the correct path.&lt;/p>
&lt;p>This chart doesn&amp;rsquo;t convey certain things very clearly. First, it shows the average amount of time I slept in a particular month. However, that time includes the afternoon nap also. And in the mid-year months, where you see 9+ hours of sleep, it means that I was sleeping quite a lot in the afternoon and less at night. In the last three months of the year, I have been trying to regulate my sleep timings at night, and I am quite satisfied with my progress. I have observed over the years with my sleep experiments that whenever I start sleeping less at night, I tend to exhaust myself in the next couple of months. This theory got validated this year when I exhausted myself from June onwards, and my health issues reappeared after sleeping significantly less in April and May (night sleep).&lt;/p>
&lt;p>I &lt;em>actually&lt;/em> did some exercise this year. I bought a gym subscription this year, but unfortunately, that became my worst financial decision in the last several years because I left Bengaluru before the government imposed the lockdowns. However, I did some light exercise at home. That didn&amp;rsquo;t do wonders, but at least I was able to keep my BMI constant throughout the year. Even after eating delicacies prepared by Mom all year!!! 😍 Hopefully, I will be able to start running in 2021, even if only on weekends.&lt;/p>
&lt;p>In November, I suffered from severe back pain. After getting an ergonomic chair, things seem to be in control. But that incident reminded me of the importance of exercise. I will try to include some simple back exercises in 2021.&lt;/p>
&lt;h2 id="family">Family&lt;/h2>
&lt;p>The year 2020 was quite an unusual year on this front. Since I started at NITC in July 2014, I have been away from my family for most years. But thanks to lockdown, I got to spend time with my family this year. I had anticipated lockdowns in India quite early, so I left Bengaluru in March just before the government imposed lockdowns in a &amp;ldquo;shock and awe&amp;rdquo; manner. So I reached home on time, and that was the best decision I have taken this year. If not for my family, I don&amp;rsquo;t think I would have been able to handle pandemic-induced health issues.&lt;/p>
&lt;p>I have been away from my brother for almost seven years now. More importantly, these seven years were the life-defining years for both of us. It turns out that he and I think very differently. I guess that our thinking results from the different environments where we spent our early adulthood. It was initially very tough to agree on something, but we slowly learned to agree to disagree. Staying away from family has made me more careful and risk-averse in some sense. I tend to (over) analyze everything, and that causes delays in decision making. On the other hand, he is quite free-minded and rebellious. How different we both have turned out to be!!!&lt;/p>
&lt;p>I don&amp;rsquo;t mind this variety, though.&lt;/p>
&lt;h2 id="reading">Reading&lt;/h2>
&lt;p>I had set a target to read 20 books this year. In the end, I managed to read a lot more than 20. Mid-year, Around July/August, I started losing track of the books I was reading. As I mentioned in my last year&amp;rsquo;s review, I was getting disillusioned with Goodreads for some time. This year I tried to use it, but ultimately I didn&amp;rsquo;t log the majority of my reading anywhere. I don&amp;rsquo;t know if this is a good thing to do. I will try to keep it this way for some more time and then analyze the data-collection pros and cons.&lt;/p>
&lt;p>I have identified some issues with my reading pattern. I tend to read the books passively. That makes it quite challenging to retain knowledge for the long term. On top of that, I don&amp;rsquo;t make notes as well. So, I cannot even revise the content quickly without going through the whole book again, which is counter-productive. It is a childhood habit, and I assume it will be tough to break this habit. However, whenever possible, I now actively remind myself to question the book and not take everything written in the book for granted. It will take some time (perhaps years), but I am confident about changing this tendency.&lt;/p>
&lt;p>I read a variety of books this year. Most of these books were related to humanities subjects like political science, history, etc. I got interested in tech quite late in my life. Before that, humanities was my favorite pastime. Once I entered the tech field, I somehow couldn&amp;rsquo;t continue this. But this year, I found myself distancing from technical topics somewhere around June. There is a reason behind that disinterest that I would like to keep private for now. At the same time, I struggled with my health issues, so I decided to start with humanities again. Looking back at that decision, I feel it was a superb choice. I have learned so much about India, its history, and the present. Somehow, I was able to ask questions about why a particular thing was done the way it was done. I was never able to think like that while reading a technical book. Does that make my knowledge about tech hollow? I don&amp;rsquo;t know yet. But I will be actively looking for an answer in the coming times.&lt;/p>
&lt;p>One subject, where I expected to glide through was Economics. I &lt;a href="https://tufte.yashagarwal.in/posts/2018/12/2018-year-in-review/#reading">mentioned&lt;/a> in my 2018 review that I find Economics interesting and want to learn more about it. I couldn&amp;rsquo;t do that in 2019, but this year I decided to pursue that goal. So I started with the most fundamental books - NCERT class 12th Microeconomics and Macroeconomics. The result is that I have lost my interest in learning economics now (hopefully temporarily). Either the books are written horribly, or I didn&amp;rsquo;t put enough effort. It took me ages to complete these two books, and still, I don&amp;rsquo;t understand a lot of the concepts. I think it was the wrong strategy to start with these books. I should have watched video lectures by some University professors. Perhaps I will do that this year, whenever I get time from my other goals.&lt;/p>
&lt;p>Another subject, which caught my interest was Anthropology. I had &lt;a href="https://highlights.yashagarwal.in/posts/2019-02-16-sapiens/" target="_blank" rel="noopener">read&lt;/a>&lt;label for="marginnote-7840063ec08685ce7ff172669d5ff640-1" class="margin-toggle marginnote-symbol">*&lt;/label>&lt;input type="checkbox" id="marginnote-7840063ec08685ce7ff172669d5ff640-1" class="margin-toggle"/>
&lt;span class="marginnote">links to a new website that I set up this year.&lt;/span>
the excellent &amp;ldquo;Sapiens&amp;rdquo; book by Yuval Noah Harari a couple of years back, and that was a thought-provoking read for me. So I decided to read further on the topic to answer some of the questions that I had about human society and why certain cultural elements got evolved in the way they are at present. It is quite an interesting subject, specifically social and cultural anthropology.&lt;/p>
&lt;p>Below are some of the superficial statistics about the books that I read this year -&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th>Year Goal&lt;/th>
&lt;th>Achieved&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Read/to-read&lt;/td>
&lt;td>20&lt;/td>
&lt;td>69&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Numpages&lt;/td>
&lt;td>7000&lt;/td>
&lt;td>16279&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>pages/day&lt;/td>
&lt;td>19.13&lt;/td>
&lt;td>44.48&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>days/book&lt;/td>
&lt;td>18.30&lt;/td>
&lt;td>5.30&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>book/month&lt;/td>
&lt;td>1.67&lt;/td>
&lt;td>5.75&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Once again, these numbers are not accurate indicators of the quality of reading. Not all of the books were worth reading. I consider around 25 of these books as a waste of my time. Some books were as small as 100 pages, while some were so good that I wanted more even after reading 800+ pages.&lt;/p>
&lt;p>Now, the question is how many of these books benefited me. I plan to reread some of these books and prepare some notes after/along with the second reading. I have tried writing on paper, but my perfectionistic tendencies stop me from &amp;ldquo;spoiling&amp;rdquo; the paper. So I will make the notes on Onenote this time and write them down on paper later. Rewriting on paper is a compulsion because my mind seems to be having issues recalling digitally-read content. It is one reason why my Kindle is inside my drawer for a very long time.&lt;/p>
&lt;p>One of my wishes for 2021 is to read &lt;a href="https://www.goodreads.com/book/show/78159.The_Story_of_Civilization" target="_blank" rel="noopener">The Story of Civilization&lt;/a>.&lt;/p>
&lt;h2 id="blogging-and-writing">Blogging and Writing&lt;/h2>
&lt;p>It is quite evident from this blog&amp;rsquo;s activity in 2020 that I didn&amp;rsquo;t write very actively. I am going through a challenging phase (imposter syndrome?) in my tech journey that is difficult to describe. I started this blog when I was actively learning new things in tech. But now, I have almost hit a plateau. If I phrase it in another way, I am not learning enough technical content now. I don&amp;rsquo;t think it is related to my work, but somehow, my attention has been on other things lately.&lt;/p>
&lt;p>I have not been able to write anything on paper as well. I did some analysis on this issue, and it turns out that I have perfectionist tendencies, as I mentioned in the last section. I try to do everything with perfection, and that doesn&amp;rsquo;t work most of the time. You can&amp;rsquo;t always have everything perfect in real life, although aiming for perfectionism is not a bad thing. But when this goal becomes the process, it starts creating problems. And I am facing the same issue. Now, whenever I sit to write anything, I remind myself at regular intervals that I don&amp;rsquo;t have to be perfect all the time. It seems to work till now.&lt;/p>
&lt;p>Anyway, in 2021, I will write a lot on paper and perhaps on this blog. I am still contemplating if I should write long-form essays on some contemporary issues on this blog. Maybe I will create a new WordPress blog for that kind of stuff and keep this blog for my technical content and everyday life-related posts.&lt;/p>
&lt;p>I figured out one more issue with my thought process. Given a topic, if you ask me to write a summary of it, I wouldn&amp;rsquo;t be able to articulate my thoughts. Something that Richard Feynman was very good at. In other words, I struggle in explaining my knowledge to others. I guess this means that I don&amp;rsquo;t understand the topic well enough to write anything about it. It might also mean that I have some issues in thinking clearly. I hope, with practice, more active reading, and regular writing practice, I will win over this issue.&lt;/p>
&lt;h2 id="work">Work&lt;/h2>
&lt;p>It isn&amp;rsquo;t easy to summarise my work experience. It&amp;rsquo;s my third year at Cisco now. The team in which I was working for the last two years got dissolved. However, higher management was quite helpful in transitioning to a new team working on Snort development. So, I will be getting a much-needed product development experience now. Till now, all is good; however, product development is slightly weird. I need to give it more time before drawing any conclusions. Since I have joined the new team, I feel that my day-to-day learning has suffered during work hours. I hope it is a temporary phenomenon and I would be able to overcome it soon.&lt;/p>
&lt;p>The COVID outbreak has spoiled some of my plans, and I am unsure if my familial circumstances would allow me to opt for those plans in the near future. I reoriented my goals to adjust to the changing conditions. But whatever happens, I will try to utilize the available resources to the maximum extent possible. Hopefully, everything will settle in the right place soon.&lt;/p>
&lt;h2 id="media-consumption">Media Consumption&lt;/h2>
&lt;p>I seem to have been able to conquer the addiction to social media. I had been trying to do this for 3-4 years, and this year, I feel that I was in control for most of the time. Whenever I lost myself in Twitter/Quora/Reddit, I found it easy to cut-off myself from these websites without any withdrawal symptoms, which is a very pleasing experience.&lt;/p>
&lt;p>Facebook deserves a special mention here. I have been entirely out of touch with Facebook for the last couple of years, partly due to self-control and partly due to the bad press Facebook has recently gotten. One thing that has helped me is that I don&amp;rsquo;t have any content on my newsfeed because I took some time to unfollow everyone. As there is no content to scroll, I don&amp;rsquo;t feel the urge to stay longer on the website. I log in occasionally to the website just for checking the notification and friend requests.&lt;/p>
&lt;p>Coming to the media content consumed by me, these are the movies that I watched this year. I did a lousy job logging this stuff, so this data is not comprehensive. Of course, I watched a lot more movies than this.&lt;/p>
&lt;p>&lt;figure class="normal">
&lt;p class="caption">
Movies in 2020&lt;/p>
&lt;img class="lazyload blur-up" data-sizes="auto" src="https://tufte.yashagarwal.in/images/posts/2021-01-03/movies_watched_hu4c9836eccaf792270a78ebd875cec05b_696124_20x0_resize_q75_box.jpg" data-srcset="https://tufte.yashagarwal.in/images/posts/2021-01-03/movies_watched_hu4c9836eccaf792270a78ebd875cec05b_696124_900x0_resize_q75_box.jpg 900w,https://tufte.yashagarwal.in/images/posts/2021-01-03/movies_watched_hu4c9836eccaf792270a78ebd875cec05b_696124_800x0_resize_q75_box.jpg 800w,https://tufte.yashagarwal.in/images/posts/2021-01-03/movies_watched_hu4c9836eccaf792270a78ebd875cec05b_696124_500x0_resize_q75_box.jpg 500w" alt="Movies in 2020">
&lt;noscript>&lt;img sizes="100vw" srcset="https://tufte.yashagarwal.in/images/posts/2021-01-03/movies_watched_hu4c9836eccaf792270a78ebd875cec05b_696124_900x0_resize_q75_box.jpg 900w,https://tufte.yashagarwal.in/images/posts/2021-01-03/movies_watched_hu4c9836eccaf792270a78ebd875cec05b_696124_800x0_resize_q75_box.jpg 800w,https://tufte.yashagarwal.in/images/posts/2021-01-03/movies_watched_hu4c9836eccaf792270a78ebd875cec05b_696124_500x0_resize_q75_box.jpg 500w" src="https://tufte.yashagarwal.in/images/posts/2021-01-03/movies_watched.jpg" alt="Movies in 2020">&lt;/noscript>
&lt;/figure>
&lt;/p>
&lt;p>I watched many web series during the July-October period. I can recall a few right now - Sacred Games 1 and 2, She, Flesh, Bard of Blood, Mirzapur 1 and 2, The Witcher, Sex Education, and Paatal Lok. In short, I wasted a lot of time watching useless content. Sensory satisfaction, peer pressure, and the urge to run away from my boredom are to blame for this binge-watching time.&lt;/p>
&lt;p>I am using &lt;a href="https://letterboxd.com/yagr/" target="_blank" rel="noopener">Letterboxd&lt;/a> to log the movies, but there does not seem to be a &lt;em>free&lt;/em> service that offers both movies and web series logging. I wish somebody will make one in 2021.&lt;/p>
&lt;p>I use an Android phone and use Digital Wellbeing to monitor my phone usage. Unfortunately, I can&amp;rsquo;t export my usage data from the Digital Wellbeing app. This data gets lost because I switch ROMs frequently. However, according to my liberal estimate, I was able to keep my per day phone usage under 4 hours on most of the days. There were some outliers, but mostly, my phone addiction was relatively under control. However, I would have liked to keep it around 3 hours per day.&lt;/p>
&lt;h2 id="what-in-2021">What in 2021?&lt;/h2>
&lt;p>This section is a new addition to this year&amp;rsquo;s review. I usually don&amp;rsquo;t set explicit targets and certainly don&amp;rsquo;t share them in public. So this is something different. I am sharing my goals here. I will take this as a benchmark when I sit to write my year review for 2021. I am hoping for at least a 60% success rate.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Publish six long-form essays&lt;/strong> - The plan is to learn the skill of articulating thoughts. I don&amp;rsquo;t have any particular topic in mind. Perhaps a mix of History, Political Science and Tech. It can be in the form of essays or an explanatory post, or anything else. Ideally, every two months.&lt;/li>
&lt;li>&lt;strong>Read five fiction books&lt;/strong> - To learn how other people write fantasy. I hope to be able to read it for learning, not just for fun. You can follow my progress &lt;a href="https://www.goodreads.com/user/show/63354397-yash" target="_blank" rel="noopener">here&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Sleep at proper times&lt;/strong> - Now that majority of my work meetings are expected to get scheduled during IST, I will try to sleep by 10 PM and sleep for at least 8 hours every day. I am aiming for an 80% success rate in this aspect.&lt;/li>
&lt;li>&lt;strong>Phone Usage&lt;/strong> - Keep it under 3.5 hours per day (Aiming for 80% success)&lt;/li>
&lt;li>&lt;strong>Write a Journal&lt;/strong> - I have tried it earlier also but failed. This year, I will try to document only important events in my life. At least once a month should be good enough. The more the merrier!&lt;/li>
&lt;li>&lt;strong>Regular exercise&lt;/strong> - I need to reduce my BMI to 22 from 23.3. That requires me to shed at least 4 kgs of weight.
&lt;ul>
&lt;li>Weekend running (Aiming to do it on 50/104 weekends, accounting for winters)&lt;/li>
&lt;li>Mild 15-minute exercises at home two days a week (Aiming for 80% success)&lt;/li>
&lt;li>Meditation on the two days of the week (Aiming for 90% success)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>██████ (redacted) - I want to achieve this one badly.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Note&lt;/strong>: A number of these goals depend on how many more months I get to spend at home, after June.&lt;/p>
&lt;hr>
&lt;p>2020 was quite a year. I hope humanity has learned its lessons. While industrialization and globalization have brought us a couple of hours away from each other, it has become equally easy for pathogens and germs to travel and reach farther ends of the world. I like to equate this situation to the disease-carrying Europeans who went to the Americas in the 17th century. Nations could practice some carefulness and proactivity in dealing with such problems. It is not the last pandemic to ravage the world, for sure.&lt;/p>
&lt;p>&lt;em>I expect to achieve some of my goals in 2021, but I won&amp;rsquo;t deny a potential role of luck or chance (whatever you like to call it). Hopefully, the gods of chance will be on my side.&lt;/em>&lt;/p></description><author>Yash.Agarwal@fakeEmailToMakeValidatorHappy.com (Yash Agarwal)</author><category domain="https://tufte.yashagarwal.in/categories/write-ups">Write-ups</category><category domain="https://tufte.yashagarwal.in/tags/review">Review</category><guid>https://tufte.yashagarwal.in/posts/2021/01/looking-back-at-2020/</guid><pubDate>Sun, 03 Jan 2021 15:49:58 +0530</pubDate></item><item><title>Two Years at Cisco</title><link>https://tufte.yashagarwal.in/posts/2020/09/two-years-at-cisco/</link><description>&lt;p>I completed two years at Cisco in August recently. I think it is a good time to jot down my learnings and experiences from the past two years. It was my first corporate job; however, I did not land up in a typical software development job. Hence, my experiences are quite different and unique in a sense.&lt;/p>
&lt;p>I joined Cisco in 2018. As it usually happens with university recruits, I was also randomly assigned to a team in the Office of CTO in Security Business Group (SBG) in Cisco. I got assigned to a non-product team that worked in a semi-research environment to develop PoCs demonstrating the integration of future-looking technologies with the existing Cisco portfolio. The nature of this work gave me some exciting skills and exposure to latest trends in industry, but it came with its own set of disadvantages. I will discuss some of them at the end of this article.&lt;/p>
&lt;h2 id="take-ownership-of-your-work">Take Ownership of your work&lt;/h2>
&lt;p>Every member worked on a reasonably independent project in my team, directly supervised by a Principal Engineer or a Technical Lead. Most of my superiors (including my manager) were located in the USA, so there were many early-night meetings involved. This also meant that nobody watched (micromanaged 🙊) me, and I was given quite a bit of autonomy. I really appreciate this aspect.&lt;/p>
&lt;p>I learned how to come out of a problem when there is nobody to help or guide you. Of course, I asked for help whenever needed; the freedom I enjoyed at work was unparalleled.&lt;/p>
&lt;p>During two years, there were many occasions when some of my design and development choices were questioned. I successfully defended some of them and had to change the others. In the process, I learned the caveats in my understanding and the importance of others' perspectives while solving difficult problems.&lt;/p>
&lt;h2 id="developers-should-have-experience-with-operations">Developers should have experience with operations&lt;/h2>
&lt;p>As I mentioned above, most of my projects were individual projects. Naturally, the responsibility of setting up and maintenance of the build-environment also fell on my shoulders. My experience with Linux system administration from college time came to my rescue here. In the process, I learned how invaluable the skills of DevOps can be for a developer.&lt;/p>
&lt;p>There is a lot that I don&amp;rsquo;t know yet, but my basics have grown strong enough to grasp any new technology in a reasonable amount of time over the past two years.&lt;/p>
&lt;h2 id="communications">Communications&lt;/h2>
&lt;p>I have never been a good speaker, and talking to strangers has been one of my weakest skills. After joining Cisco, this aspect of my personality has changed considerably. Attending regular meetings and speaking about my ideas and work gave me confidence. There are still some caveats with my public speaking skills. I hope that I would be able to overcome these challenges with more experience.&lt;/p>
&lt;h2 id="innovation">Innovation&lt;/h2>
&lt;p>The industry provides you access to the best minds in your field. You get to meet wise people working and using their knowledge and expertise to generate ideas that can change the world (or at least the industry). It motivates you to compete with them. Although I have been unable to generate any patentable idea in the past two years, I have been invited to participate in the discussions, which led to patent applications. My biggest takeaway from these discussions was that breadth is more useful than depth when it comes to idea generation. Knowing various fields and connecting two seemingly different domains is a skill whose importance cannot be overemphasized.&lt;/p>
&lt;p>Another thing I learned is that aiming for perfection doesn&amp;rsquo;t help anyone. To keep waiting for that best idea to pop up in your mind is illusionary and will never happen. I have been a victim of this tendency to perfectionism the whole of my life. For the past couple of months, I have been actively trying to avoid this habit. My inconsistency in regularly writing on this blog can also be attributed to my search for the &lt;em>ideal&lt;/em> blog post.&lt;/p>
&lt;p>In my opinion, quantity is better than quality. The same is true with the generation of ideas. If you keep waiting that you will get the ultimate idea one day, believe me, it will never happen.&lt;/p>
&lt;h2 id="take-a-step-back--rethink">Take a step back &amp;amp; rethink&lt;/h2>
&lt;p>It happened quite a few times that I started looking for a solution to a problem in one direction. After spending a considerable amount of time, I figured out that the direction was wrong or worse, my understanding of the problem was wrong. In such situations, it is better to backtrack and think again. It also helps to ask someone for help. Sometimes, others can give you a different perspective that you might not be able to see.&lt;/p>
&lt;h2 id="dont-hesitate-to-brag-about-yourself">Don&amp;rsquo;t hesitate to brag about yourself&lt;/h2>
&lt;p>When I joined Cisco, my colleagues suggested me to set up 1-1 with my manager to stay in touch with him and showcase my work. I hesitated. I thought that what is the point of talking about my work when it is visible to everybody through weekly meetings. Now I understand, it is such a crucial step which shouldn&amp;rsquo;t be ignored at all. Keep a &lt;a href="https://jvns.ca/blog/brag-documents/" target="_blank" rel="noopener">brag&lt;/a> document and use it to keep records of your work, achievements, and accomplishments. I never needed it till now, but I plan to use it in the future.&lt;/p>
&lt;hr>
&lt;p>Coming to downsides, I have only one qualm. As I mentioned above, my team was not a product team. So I missed out on some of the necessary product development experience. I believe that having some experience developing and shipping production-ready code is an absolute requirement to move towards my career goals. Thankfully, I have switched my team now, and now I will be working on a full-fledged security offering of Cisco.&lt;/p>
&lt;hr>
&lt;p>So, these are some of my insights from the past two years at Cisco. I want to share a lot of other thoughts, but their time hasn&amp;rsquo;t come yet. I will definitely share more of these as I spend more time in the industry and tech.&lt;/p></description><author>Yash.Agarwal@fakeEmailToMakeValidatorHappy.com (Yash Agarwal)</author><category domain="https://tufte.yashagarwal.in/categories/write-ups">Write-ups</category><category domain="https://tufte.yashagarwal.in/tags/cisco">Cisco</category><guid>https://tufte.yashagarwal.in/posts/2020/09/two-years-at-cisco/</guid><pubDate>Wed, 16 Sep 2020 22:03:46 +0530</pubDate></item><item><title>Cassandra - A Decentralized Structured Storage System</title><link>https://tufte.yashagarwal.in/posts/2020/05/cassandra-a-decentralized-structured-storage-system/</link><description>&lt;p>Cassandra is a distributed storage system that can spread over thousands of nodes and store terabytes of structured data. Cassandra was developed at Facebook to solve performance issues during searches in Facebook Inbox. Cassandra can provide a highly available service without a single point of failure.&lt;/p>
&lt;p>Cassandra borrows some of its architecture choices from Google&amp;rsquo;s BigTable&lt;label for="sidenote-f6c87add6298c0f7b623bd74600ac64e-1" class="margin-toggle sidenote-number">1&lt;/label>
&lt;input type="checkbox" id="sidenote-f6c87add6298c0f7b623bd74600ac64e-1" class="margin-toggle"/>&lt;span class="sidenote">1: &lt;a href="https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf" title="Bigtable">Bigtable: A Distributed Storage System for Structured Data&lt;/a>&lt;/span> and Amazon&amp;rsquo;s Dynamo&lt;label for="sidenote-f6c87add6298c0f7b623bd74600ac64e-2" class="margin-toggle sidenote-number">2&lt;/label>
&lt;input type="checkbox" id="sidenote-f6c87add6298c0f7b623bd74600ac64e-2" class="margin-toggle"/>&lt;span class="sidenote">2: &lt;a href="https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf" title="Dynamo: Amazon’s Highly Available Key-value Store">Dynamo: Amazon’s Highly Available Key-value Store&lt;/a>&lt;/span>. In some ways, Cassandra resembles the traditional databases, yet it does not support the relational data model completely.&lt;/p>
&lt;h2 id="data-model">Data Model&lt;/h2>
&lt;p>Cassandra uses a tabular data structure like relational databases. A table in Cassandra is a distributed multi-dimensional map indexed by a key. Every row operation is atomic per replica, no matter how many columns are being read or written into. Cassandra groups columns into sets called column family. A column family is of two types - Simple and Super (column family within column family). Cassandra can sort columns using name or time. Time-based sorting is useful when used in a setting like Inbox searches where most recent messages should be displayed first.&lt;/p>
&lt;p>Cassandra provides following methods -&lt;/p>
&lt;ol>
&lt;li>$insert(table, key, rowMutation)$&lt;/li>
&lt;li>$get(table, key, tableName)$&lt;/li>
&lt;li>$delete(table, key, tableName)$&lt;/li>
&lt;/ol>
&lt;h2 id="architecture">Architecture&lt;/h2>
&lt;p>A data storage system should satisfy some requirements - data persistence, scalability, membership, failure detection and handling, data partitioning, request routing, among others. Cassandra uses a variety of techniques to solve these issues.&lt;/p>
&lt;h3 id="routing">Routing&lt;/h3>
&lt;p>Any node can attend an incoming read/write request with a key. Each node in the Cassandra cluster knows about other nodes. The serving node uses this information and the request&amp;rsquo;s key to determine the route of the request to the appropriate node.&lt;/p>
&lt;p>In the case of write requests, the system routes the request to all replicas and waits for a quorum of replicas to acknowledge the completion of the writes.&lt;/p>
&lt;p>For reads, the system either routes the requests to the nearest replica with required data or forwards the request to all the replicas and waits for a quorum of responses before replying. Which method, the system utilizes, depends on the consistency requirements of the client.&lt;/p>
&lt;h3 id="partitioning">Partitioning&lt;/h3>
&lt;p>Cassandra uses consistent hashing&lt;label for="sidenote-f6c87add6298c0f7b623bd74600ac64e-3" class="margin-toggle sidenote-number">3&lt;/label>
&lt;input type="checkbox" id="sidenote-f6c87add6298c0f7b623bd74600ac64e-3" class="margin-toggle"/>&lt;span class="sidenote">3:
&lt;a href="https://en.wikipedia.org/wiki/Consistent_hashing">Consistent hashing&lt;/a>&lt;/span> with an order-preserving hash. The consistent hash function is used to hash the data key to generate identifiers. The output range of the hash function is treated as a ring (the largest hash value generated wraps around the smallest hash value). Each node is assigned a random hash, which becomes its position on the ring. Each node is responsible for the region in the ring between it and its predecessor node.&lt;/p>
&lt;p>For each data item with a key, its hash is generated using the key. The ring is traversed clockwise, and the first node with the position hash value greater than the item&amp;rsquo;s hash value is assigned to the data item. This node is deemed the coordinator of the key.&lt;/p>
&lt;p>However, consistent hashing can result in an imbalance in the load distribution and non-uniformity of data distribution. Cassandra solves these issues by periodically analyzing the load information in the ring and repositioning the lightly loaded nodes on the ring to alleviate high load nodes.&lt;/p>
&lt;h3 id="replication">Replication&lt;/h3>
&lt;p>Each data item is replicated at $N$ nodes in the ring. As mentioned above, each data item&amp;rsquo;s key is assigned to a coordinator node, which is responsible for the replication of data items falling within its range (the region between it and its predecessor node). For fault tolerance, in addition to locally storing keys, the coordinator node replicates these keys at the $(N-1)$ replicas on the ring. Replication policies such as Rack aware, Rack unaware, Datacenter aware are used for this purpose.&lt;/p>
&lt;h3 id="leader-election">Leader Election&lt;/h3>
&lt;p>Cassandra uses Zookeeper for leader election and fault tolerance. Whenever a new node joins the cluster, it contacts the leader who tells them what ranges the node is responsible for. The metadata about ranges of a node is cached locally as well as on the Zookeeper instance.&lt;/p>
&lt;h3 id="membership">Membership&lt;/h3>
&lt;p>Cassandra uses Scuttlebutt - an anti-entropy Gossip based protocol to disseminate the membership information inside the ring. Whenever a new node joins the system, it calculates a token for itself. This token is gossiped around the cluster. That&amp;rsquo;s how each node in the system knows about the membership and positions of other nodes in the system.&lt;/p>
&lt;h3 id="failure-detection">Failure Detection&lt;/h3>
&lt;p>Failure detection is a mechanism by which a node can locally determine if any other node in the system is up or down. Cassandra uses a modified version of $\phi\text{-Accrual Failure Detector}$. The basic idea is that the failure detection module emits the suspicion level of a node instead of a binary up/down status. This suspicion level is $\phi$. The idea is to represent $\phi$ on a dynamically adjustable scale, which reflects network and load conditions at the monitored nodes.&lt;/p>
&lt;p>Every node in the system maintains a sliding window of inter-arrival times of gossip messages from other nodes in the cluster. The distribution of these inter-arrival times is determined, and $\phi$ is calculated. Cassandra uses exponential distribution as an approximation for determining $\phi$. The original $\phi\text{-Accrual Failure Detection Algorithm}$ used Gaussian distribution.&lt;/p>
&lt;h3 id="scaling">Scaling&lt;/h3>
&lt;p>Whenever a new node joins the system, its token is generated such that it falls within the range of an existing heavily loaded node. This results in the new node splitting the range of the old node. The old node transfers some of its data to the new node using kernel-kernel copying techniques.&lt;/p>
&lt;h3 id="local-persistence">Local Persistence&lt;/h3>
&lt;p>Cassandra uses a commit log as well as an in-memory data structure to store the data. Each write is first committed to the commit log. Only after successful write into the commit log, the data is saved in the in-memory data structure. When the in-memory data structure crosses a predefined threshold, it is dumped to the disk along with an index file for fast lookups. A merge process runs periodically to merge these disk files.&lt;/p>
&lt;p>A read operation first queries the in-memory store. If data is not found there, then a disk lookup is required. To avoid looking into multiple files, a bloom filter, summarizing the keys in the file, is also used. The bloom filter can also be used to check the key existence.&lt;/p>
&lt;p>Paper Link:- &lt;a href="http://www.cs.cornell.edu/Projects/ladis2009/papers/Lakshman-ladis2009.PDF" target="_blank" rel="noopener">Cassandra - A Decentralized Structured Storage System&lt;/a>&lt;/p></description><author>Yash.Agarwal@fakeEmailToMakeValidatorHappy.com (Yash Agarwal)</author><category domain="https://tufte.yashagarwal.in/categories/papers">papers</category><category domain="https://tufte.yashagarwal.in/tags/cassandra">cassandra</category><category domain="https://tufte.yashagarwal.in/tags/distributed-systems">distributed-systems</category><category domain="https://tufte.yashagarwal.in/tags/notes">notes</category><guid>https://tufte.yashagarwal.in/posts/2020/05/cassandra-a-decentralized-structured-storage-system/</guid><pubDate>Fri, 08 May 2020 07:21:55 +0530</pubDate></item><item><title>Epidemic/Gossip Protocols</title><link>https://tufte.yashagarwal.in/posts/2020/04/epidemic/gossip-protocols/</link><description>&lt;p>Last week, while reading the book &lt;a href="https://www.goodreads.com/book/show/34646879-designing-data-intensive-applications" target="_blank" rel="noopener">Designing data-intensive applications&lt;/a>, I came across the term &amp;ldquo;Gossip Protocols.&amp;rdquo; The title was quite intriguing; hence I search for it on Google. It turns out that it is a communication protocol. It is sometimes also called the &amp;ldquo;Epidemic Protocol.&amp;rdquo;&lt;/p>
&lt;p>We are facing an ongoing pandemic called COVID-19. The term &amp;ldquo;Epidemic Protocol&amp;rdquo; caught my attention, and I started wondering how the knowledge of epidemics is going to be useful in computer systems. It turns out; these protocols try to emulate the spread of a virus to effectively communicate the information to all nodes in a distributed network.&lt;/p>
&lt;p>A virus spread quickly and robustly. Our goal in a distributed system is to spread the information/updates as quickly as possible without burdening the network. The epidemic protocols try to bring these ideas from epidemiology to distributed systems.&lt;/p>
&lt;p>I use both terms (Gossip and Epidemic) interchangeably in this post.&lt;/p>
&lt;h2 id="analogy-to-a-real-epidemic">Analogy to a real epidemic&lt;/h2>
&lt;p>Let' take a close look at how a virus spreads. I&amp;rsquo;ll explain it using a small sample of five people. We assume that, initially, none of these people is infected. Now, because of some external factors, one of these (say $A$) got infected with the virus. We say that $A$ is &lt;em>&lt;strong>infected&lt;/strong>&lt;/em>, and the remaining four people are &lt;em>&lt;strong>susceptible&lt;/strong>&lt;/em> to infection. $A$ followed the advice of doctors and isolated itself from the group. Now we say that $A$ is &lt;em>&lt;strong>removed&lt;/strong>&lt;/em> (either because he has the infection, but is not spreading it, or because he is recovered).&lt;/p>
&lt;p>Now, let&amp;rsquo;s extend this analogy to a network. In a network, we have multiple nodes. These nodes are classified using the terms &amp;ndash; infected, susceptible, and removed. The infected nodes try to spread some information by periodically selecting some peer nodes from the network. If a node is susceptible, that is, it does not know the said information, then after the selection and transmission of information by an infected node, the susceptible node also gets infected and starts spreading the information. A node is said to be removed, if it already knows the said information, but is not spreading it because, for example, all its peers already know the information, so there is no need to keep spreading it &amp;ndash; the so-called herd immunity).&lt;/p>
&lt;h2 id="some-theory">Some theory&lt;/h2>
&lt;p>The concept of the Gossip Protocol is not something new. The 1987 paper Epidemic algorithms for replicated database maintenance&lt;label for="sidenote-1ca998a019dedb4ba093dcbc795963e7-1" class="margin-toggle sidenote-number">1&lt;/label>
&lt;input type="checkbox" id="sidenote-1ca998a019dedb4ba093dcbc795963e7-1" class="margin-toggle"/>&lt;span class="sidenote">1: &lt;a href="https://dl.acm.org/doi/10.1145/41840.41841">Epidemic Algorithms For Replicated Database Maintenance&lt;/a>&lt;/span> is considered seminal on this topic. The Gossip Protocols were initially used to maintain consistency in replicated databases for efficient data communication. Later, these protocols found their usage in other areas such as service discovery in a distributed environment and maintaining node memberships as well.&lt;/p>
&lt;p>Usually, these protocols work as follows -&lt;/p>
&lt;ol>
&lt;li>A node ($A$) in the network randomly selects another node with which it wants to share information. Here, the assumption is that each node in the network either maintains a list of all the other nodes or gets the information from a centralized server.&lt;/li>
&lt;li>On receipt of information, the receiving node ($B$) processes the information.&lt;/li>
&lt;li>In the next round of this process, both $A$ and $B$ again select nodes randomly and transmit the information.&lt;/li>
&lt;li>These steps repeat periodically until the information is disseminated to every node in the network.&lt;/li>
&lt;/ol>
&lt;h2 id="methods">Methods&lt;/h2>
&lt;p>In the paper mentioned above, two schemes of epidemic protocols were analyzed -&lt;/p>
&lt;h3 id="anti-entropy">Anti-entropy&lt;/h3>
&lt;p>In this scheme, a node $p$ randomly contacts a random partner $q$ from the current population. The nodes $p$ and $q$ engage in information exchange to resolve any differences between them. The updates known to $p$ but not known to $q$ are transferred using different strategies (push, pull, and push-pull).&lt;/p>
&lt;p>As it turns out, anti-entropy requires significant network bandwidth, because it needs to send the complete database contents to other nodes for resolving any differences. There are many approaches, such as sharing checksums, Merkel trees, maintaining a recent update list, etc. that can be used to reduce the bandwidth requirements in the anti-entropy algorithm. These strategies allow the sending node to know what updates the receiving nodes require to become consistent.&lt;/p>
&lt;p>It can be proven that this algorithm guarantees the eventual dissemination of information. The number of updates sent in this scheme is not bounded, so there is no termination.&lt;/p>
&lt;p>This scheme is equivalent to the SI model (simple epidemic) from epidemiology. The term SI stands for susceptible-infected (same as explained above). A node is always susceptible or infected.&lt;/p>
&lt;h3 id="rumor-mongering">Rumor mongering&lt;/h3>
&lt;p>As the name suggests, this scheme works similarly to how rumors spread. Initially, all nodes are ignorant of a rumor. When a node learns about some updates, it becomes a &amp;ldquo;hot rumor.&amp;rdquo; While a node holds a hot rumor, it periodically chooses another node at random and pushes the rumor to the other site. When a node has tried to share a hot rumor with too many nodes that have already seen it, the node stops treating the rumor as hot and retains the update without propagating it further. Rumor-mongering requires very less network bandwidth because it needs to send only recent updates to other nodes.&lt;/p>
&lt;p>The equivalent of this in epidemiology is the SIR model (complex epidemic), which stands for susceptible-infected-removed. A node can be susceptible or infected or removed.&lt;/p>
&lt;p>Because of the removal of nodes, the number of messages transmitted in this algorithm is bounded. However, because of this, there is a slight chance that some updates might not reach all nodes. So it does not guarantee eventual consistency.&lt;/p>
&lt;p>There are two strategies to decide when a node should be removed -&lt;/p>
&lt;ul>
&lt;li>Random - Removed with probability $\frac{1}{k}$ after each unsuccessful attempt.&lt;/li>
&lt;li>Counter - Removed after $k$ unnecessary contacts.&lt;/li>
&lt;/ul>
&lt;p>The analysis of gossip algorithms focuses on designing strategies on how to select the best peer group to share the information with.&lt;/p>
&lt;p>If you want to get started with this topic, here I recommend some papers that are quite fundamental when it comes to an understanding of how gossiping works:&lt;/p>
&lt;ol>
&lt;li>&lt;a href="https://dl.acm.org/doi/10.1145/41840.41841" target="_blank" rel="noopener">Epidemic Algorithms For Replicated Database Maintenance&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.distributed-systems.net/my-data/papers/2007.osr.pdf" target="_blank" rel="noopener">Gossiping in Distributed Systems&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://archive.cone.informatik.uni-freiburg.de/pubs/rumor.pdf" target="_blank" rel="noopener">Randomized Rumor Spreading&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://research.cs.cornell.edu/projects/Quicksilver/public_pdfs/2007PromiseAndLimitations.pdf" target="_blank" rel="noopener">The Promise, and Limitations, of Gossip Protocols&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.inf.u-szeged.hu/~jelasity/dr/doktori-mu.pdf" target="_blank" rel="noopener">Gossip-based Protocols for Large-scale Distributed Systems&lt;/a> - Read the first chapter of this book to get a basic understanding of Gossip protocols)&lt;/li>
&lt;li>&lt;a href="https://flopezluis.github.io/gossip-simulator/" target="_blank" rel="noopener">A gossip protocol simulator&lt;/a>&lt;/li>
&lt;/ol>
&lt;hr>
&lt;p>&lt;strong>P.S.&lt;/strong> - This is my first attempt to read and summarize CS research papers. I have intentionally covered only a small part (first few pages) of the paper (first reference in the above list) here, as I am still figuring out the best way to read and summarise. I am confident that with time and practice, I will get better.&lt;/p>
&lt;p>If you find any scope of improvement in current content, please let me know through email or comment box below.&lt;/p></description><author>Yash.Agarwal@fakeEmailToMakeValidatorHappy.com (Yash Agarwal)</author><category domain="https://tufte.yashagarwal.in/categories/papers">papers</category><category domain="https://tufte.yashagarwal.in/tags/distributed-system">distributed system</category><category domain="https://tufte.yashagarwal.in/tags/gossip">gossip</category><guid>https://tufte.yashagarwal.in/posts/2020/04/epidemic/gossip-protocols/</guid><pubDate>Tue, 14 Apr 2020 08:38:15 +0530</pubDate></item><item><title>2019 - Year in Review</title><link>https://tufte.yashagarwal.in/posts/2020/03/2019-year-in-review/</link><description>&lt;p>It has been three months since 2020 started. I was not able to keep up with my yearly habit of posting year reviews due to some reasons. One primary reason behind my negligence is my disinterest in writing on this blog. I felt that it was because the old layout of this blog had been too recurrent for me. So, I decided to fix that issue before thinking about writing.&lt;/p>
&lt;p>The year 2019 was not a great year for me on many fronts. It was a year that reminded me of my limitations and brought me out of the bubble, that self-help books created for me. In retrospection, I find that I started a lot of things, with the intention of learning, but couldn&amp;rsquo;t achieve any of the targets.&lt;/p>
&lt;p>Like, I structure these posts every year, I have divided this post too in many sections. It makes it easier for me to focus on various aspects of my life in the past year. I will start with the best parts of my life.&lt;/p>
&lt;h2 id="reading">Reading&lt;/h2>
&lt;p>I had decided to read 26 books in the year. I finished the year with 28 books. Out of 12 months, I did not read any book in January, November, and December. I finished two of the fiction series that I wanted to read for years - Harry Potter, and Percy Jackson. These two books are the reasons that I was able to finish 28 books in 9 months. It took me very little time to finish these book series. Other books (mostly non-fiction) took me ages to complete.&lt;/p>
&lt;p>I am not sure if I am getting any value out of non-fiction books &lt;em>right now&lt;/em>. I do not take notes and forget most of the lessons in a few days. Not sure if this is the right strategy while reading such books. Hence I have decided that I will reduce the number of non-fiction books &lt;em>for some time&lt;/em> and put more attention to technical publications and CS books.&lt;/p>
&lt;p>Though I am confident that my note-taking skills will not help in reading technical books either, I do hope to improve over time.&lt;/p>
&lt;p>One of my reading goals from last year was to read a research paper every 15 days. I succeeded in the first quarter of the year and failed miserably after that. I started with a good intention and kept reading for some months. Then self-doubts began popping out. &lt;em>What value am I getting out of this?&lt;/em>, was the question in my mind. I started this exercise because I have specific goals in my mind, and I wanted to improve myself academically. But when you are not able to answer such a question even to yourself, then something is wrong.&lt;/p>
&lt;p>This failure has taught me some crucial lessons. I tend to start things without thinking about the end goal. It is the right approach when &lt;em>learnings&lt;/em> from the process is more important than the result. But I was not able to focus on either of them. I lost my focus when I realized this.&lt;/p>
&lt;p>I have come to understand the value of proper note-taking. I have read so many good books, but I do not remember any lessons from these books, because -&lt;/p>
&lt;ul>
&lt;li>I read passively and try to finish the book as quickly as possible.&lt;/li>
&lt;li>I did not try to implement the lessons in my day to day life while reading.&lt;/li>
&lt;/ul>
&lt;p>I lost my interest in reading news and blog articles also. I lost my interest from social media and, in general, the Internet entirely. I preferred to sleep as much as possible. That has its side-effects. Read on.&lt;/p>
&lt;h2 id="blogging-and-writing">Blogging and Writing&lt;/h2>
&lt;p>I had decided to write regularly in 2019. I didn&amp;rsquo;t. It seems that failing was a norm for me in 2019. This section was my worst hit interest in 2019. Somehow, I was not able to gather the concentration required for writing. I used to get sudden motivations for a few days, I wrote during those periods. The rest of the time, I just thought that I should write. I think I suffered from the so-called &lt;em>Writer&amp;rsquo;s Block&lt;/em>.&lt;/p>
&lt;h2 id="health">Health&lt;/h2>
&lt;p>My analysis says that all my failures last year can be traced to this section. I was sick for almost a quarter of the year. Repeatedly getting ill and the time required for recovery took a toll on my body and mind. I lost all my focus and will power to do anything.&lt;/p>
&lt;p>The exercise was again an issue. I certainly put more effort than last year, but that effort was scattered throughout the year, for small periods. So, I do not notice much difference. However, I continued to walk whenever I got time.&lt;/p>
&lt;h2 id="work">Work&lt;/h2>
&lt;p>It was not a very exciting year on the work front. I continued to work in Cisco this year. The work was neither very interesting nor very dull. The nature of my job is such that the exciting work shows up from time to time. With no fixed deadlines and no fixed way of doing things, it can be quite satisfying and quite frustrating at times.&lt;/p>
&lt;h2 id="social-media">Social Media&lt;/h2>
&lt;p>I lost my interest in social media altogether. I opened Facebook only to see the notification once in a while, sometimes after months. I got disillusioned by Twitter this year, because of the toxic political content there. I was never a regular user of YouTube anyway, so that was never a concern. However, I went to great lengths to delete every Google app from my phone, especially Gmail and YouTube. The email had become a new Facebook for me. I was checking emails every 15 minutes. So I signed out of Google account in my primary browser and restricted my email activities to a secondary browser. It helped me in keeping the urge to check email in control.&lt;/p>
&lt;p>But this sudden disinterest has created a void in my typical day, which is quite reasonable given how much my life depends on the Internet. I am yet to figure out how to fill this void. Reading books did not help, however sleeping and watching movies helped for sure (however, not without its own set of problems).&lt;/p>
&lt;h2 id="travel">Travel&lt;/h2>
&lt;p>I was somewhat dissatisfied with myself for not traveling enough. This year, I had decided to travel extensively. But my health betrayed me. Out of 365 days, I was able to take the time of 4 days for travel. I went to Coorg and Chikmagalur with friends. Both trips happened during the wrong weather conditions. But the circumstances were such that I could not deny to my friends.&lt;/p>
&lt;h2 id="miscellaneous">Miscellaneous&lt;/h2>
&lt;p>My daily routine, more or less, remained the same. Though I couldn&amp;rsquo;t wake up early in the morning most of the time, the reality is that I was not trying. My only intention behind waking up early in the morning was to meditate. I did that, however sporadically.&lt;/p>
&lt;p>One other goal in 2019 was to get rid of procrastination. I did not care about it at all. Somehow, I was too busy fixing other issues in my life, that this seemed like a minor problem. Anyway, I did not attempt to do anything on a personal level, where procrastination would affect me. On the work front, at one point or another, you have to work and show results. So there it was never apparent. I tried many things to reduce the impact and influence of &lt;em>technology&lt;/em> in my life. Although I consider myself successful to an extent, there is still scope for improvement.&lt;/p>
&lt;p>In 2018, I was in full praise for to-do lists and the concept of maintaining goals. 2019 has busted all those praises. This year, these techniques did not work for me at all. Anyway, 2019 was one of those times when nothing worked for me, so this failure does not come as a surprise to me. Though, I still believe that this is something that can genuinely help me with some of my issues.&lt;/p>
&lt;hr>
&lt;p>&lt;em>If I had written this post at the beginning of the year 2020, I would have written some wish for the year 2020 at this place, as I always do, but this time is so gloomy that I am not able to think of anything good. I just pray to God that everything gets all right soon.&lt;/em>&lt;/p>
&lt;p>&lt;em>Being with family during this time, has given me some mental stability. But, it is also true that facing such circumstances and coming out triumphant, is what shows the human character.&lt;/em>&lt;/p></description><author>Yash.Agarwal@fakeEmailToMakeValidatorHappy.com (Yash Agarwal)</author><category domain="https://tufte.yashagarwal.in/categories/write-ups">Write-ups</category><category domain="https://tufte.yashagarwal.in/tags/review">Review</category><guid>https://tufte.yashagarwal.in/posts/2020/03/2019-year-in-review/</guid><pubDate>Tue, 31 Mar 2020 11:39:47 +0530</pubDate></item><item><title>Automatic HTTPS Certs Using GoDaddy and Gitlab APIs</title><link>https://tufte.yashagarwal.in/posts/2019/07/automatic-https-certs-using-godaddy-and-gitlab-apis/</link><description>&lt;p>Before I start, here is some technical information about my website -&lt;/p>
&lt;ul>
&lt;li>Hosted on Gitlab and usage its CD for automatic deployment, which is triggered on a git commit.&lt;/li>
&lt;li>The domain name registrar is GoDaddy.&lt;/li>
&lt;li>Let&amp;rsquo;s Encrypt as the TLS certificate provider for my domain name.&lt;/li>
&lt;/ul>
&lt;p>Let&amp;rsquo;s Encrypt provides certificates for 90 days only, so I was forced to set up the &lt;code>certbot&lt;/code> every three months, then generate the certificate and &lt;em>manually&lt;/em> deploy the certificates to GitLab. It was frustrating because in three months, my shell probably will not remember the command I used last time, and I was too lazy to document the process somewhere.&lt;/p>
&lt;p>Then I came across a &lt;a href="https://github.com/pallavagarwal07/NamesiloCert" target="_blank" rel="noopener">project&lt;/a>, which was trying to do a similar thing with other domain name registrar. I thought that this is an excellent setup to adapt and modify it to suit my needs. So I decided to write my module for automatic deployment of Let&amp;rsquo;s Encrypt certificates to GitLab.&lt;/p>
&lt;h2 id="how-does-lets-encrypt-work">How does Let&amp;rsquo;s Encrypt work?&lt;/h2>
&lt;p>Before Let&amp;rsquo;s Encrypt can generate the certificate for the domain, it requires the user to prove domain ownership. Let&amp;rsquo;s Encrypt provides two &lt;a href="https://letsencrypt.org/docs/challenge-types/" target="_blank" rel="noopener">methods&lt;/a> to do this task -&lt;/p>
&lt;ul>
&lt;li>Updating the DNS records of the domain registrar (DNS-01 challenge)&lt;/li>
&lt;li>Adding an HTTP resource under a well-known URI on the website (HTTP-01 challenge)&lt;/li>
&lt;/ul>
&lt;p>Using the second method requires me to add a file on my website, and I did not want to do that. Moreover, if in the future, I decide to host some other service, which does not have a website, then this method will fail.&lt;/p>
&lt;p>The first method requires that the domain configuration on the domain registrar is modified. GoDaddy provides a robust API, and it is not difficult to utilize that API to automate specific tasks. The probability of changing the registrar is quite low, at least for the next few years. It will be easier to generate the certificates for any subdomains, as all the subdomains will also be hosted under the same domain registrar.&lt;/p>
&lt;h2 id="how-does-the-tool-work">How does the tool work?&lt;/h2>
&lt;p>So here are the steps:&lt;/p>
&lt;ol>
&lt;li>Call &lt;code>certbot&lt;/code> with all the domain names&lt;/li>
&lt;li>Invoke GoDaddy API to update the DNS records as indicated by Certbot&lt;/li>
&lt;li>Wait for 10 minutes for DNS changes to propagate&lt;/li>
&lt;li>Let &lt;code>certbot&lt;/code> verify the DNS changes&lt;/li>
&lt;li>Use the GitLab API to deploy the generated certificates to GitLab pages&lt;/li>
&lt;/ol>
&lt;h3 id="step-1-invoking-certbot">Step 1: Invoking certbot&lt;/h3>
&lt;p>In step 1, we call &lt;code>certbot&lt;/code> will the preferred method DNS. We also need to supply an email id (used by Let&amp;rsquo;s Encrypt to notify domain expiration). The &lt;code>EMAIL_ID&lt;/code> environment variable can be used to store the email id of the user.&lt;/p>
&lt;p>Certbot runs in an interactive mode by default. It is not desired in a scripted environment. Certbot also provides mechanisms to deploy the certificates to a local server automatically, but as we are hosting our website on Gitlab, we do not want the automatic deployment facility. So we need to invoke the &lt;code>certbot&lt;/code> command with &lt;code>--manual&lt;/code> and &lt;code>certonly&lt;/code> modes.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">certbot --manual &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> --preferred-challenges dns &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> --agree-tos &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> --email &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">EMAIL_ID&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> --no-eff-email &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> --expand &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> --renew-by-default &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> --manual-public-ip-logging-ok &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> --noninteractive &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> --redirect &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> --config-dir &lt;span class="si">${&lt;/span>&lt;span class="nv">DIR&lt;/span>&lt;span class="si">}&lt;/span>/generated/config &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> --work-dir &lt;span class="si">${&lt;/span>&lt;span class="nv">DIR&lt;/span>&lt;span class="si">}&lt;/span>/generated/work &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> --logs-dir &lt;span class="si">${&lt;/span>&lt;span class="nv">DIR&lt;/span>&lt;span class="si">}&lt;/span>/generated/logs &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> --manual-auth-hook &lt;span class="si">${&lt;/span>&lt;span class="nv">DIR&lt;/span>&lt;span class="si">}&lt;/span>/auth_hook.sh &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> -d yashagarwal.in &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> certonly&lt;/code>&lt;/pre>&lt;/div>
&lt;p>The explanation for most of the flags used in the above command can be found by running the following command -&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">certbot --help&lt;/code>&lt;/pre>&lt;/div>
&lt;p>The &lt;code>--manual-auth-hook&lt;/code> flag is worth looking. This hook provides a mechanism to specify the executable, which can be used to facilitate domain ownership validation. In this case, the hook points to a script &lt;code>auth_hook.sh&lt;/code>, which then calls a Go client, which interacts with GoDaddy API.&lt;/p>
&lt;h3 id="step-2-adding-dns-entry-to-godaddy-dns-manager">Step 2: Adding DNS entry to GoDaddy DNS manager&lt;/h3>
&lt;p>Certbot supplies two environment variables &lt;code>CERTBOT_DOMAIN&lt;/code>, which contains the domain name to be verified and &lt;code>CERTBOT_VALIDATION&lt;/code>, which includes a random string corresponding to &lt;code>_acme-challenge TXT&lt;/code> entry. What this means is that, if I have&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">CERTBOT_DOMAIN=yashagarwal.in
CERTBOT_VALIDATION=6VNg5kDVI_BF1S9N5s74LTBHQnwDpQqKlblKRjIzBwM&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Then the DNS manager should contain a TXT entry &lt;code>_acme-challenge.yashagarwal.in&lt;/code> with the value of &lt;code>6VNg5kDVI_BF1S9N5s74LTBHQnwDpQqKlblKRjIzBwM&lt;/code>.&lt;/p>
&lt;p>The &lt;code>auth_hook.sh&lt;/code> file calls the Go client with the abovementioned environment variables. The relevant code can be found &lt;a href="https://github.com/yashhere/GoDaddy-GitLab-Certs/blob/master/auth_hook.sh" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>Once all the DNS entries are added, the &lt;code>auth_hook.sh&lt;/code> script will sleep for 10 minutes. It is to allow DNS changes to propagate throughout the Internet. It is a random duration as I could not find any GoDaddy support page mentioning the exact period used by them.&lt;/p>
&lt;h3 id="step-3-generation-of-certificates">Step 3: Generation of certificates&lt;/h3>
&lt;p>Once the &lt;code>auth_hook.sh&lt;/code> script returns successfully, &lt;code>certbot&lt;/code> will verify the DNS records. If the verification is successful, &lt;code>certbot&lt;/code> will generate the certificates in &lt;code>./generated/config/live/{CERTBOT_DOMAIN}&lt;/code> directory.&lt;/p>
&lt;h3 id="step-4-deploying-the-certificates-to-gitlab">Step 4: Deploying the certificates to GitLab&lt;/h3>
&lt;p>I use the following command to deploy the certificates to Gitlab pages where my website is hosted -&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">curl -vvv &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> --request PUT &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> --header &lt;span class="s2">&amp;#34;Private-Token:&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">GITLAB_TOKEN&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> --form &lt;span class="s2">&amp;#34;certificate=@&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">key_dir&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">/fullchain.pem&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;span class="se">&lt;/span> --form &lt;span class="s2">&amp;#34;key=@&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">key_dir&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">/privkey.pem&amp;#34;&lt;/span> &lt;span class="se">\ &lt;/span>&lt;span class="s2">&amp;#34;https://gitlab.com/api/v4/projects/yashhere%2Fyashhere.gitlab.io/pages/domains/yashagarwal.in&amp;#34;&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>where&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="nv">key_dir&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;./generated/config/live/yashagarwal.in&amp;#34;&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Moreover, &lt;code>GITLAB_TOKEN&lt;/code> is an environment variable that contains the API token generated from the Gitlab settings page.&lt;/p>
&lt;h2 id="automatic-deployment-using-travis-ci">Automatic Deployment using Travis CI&lt;/h2>
&lt;p>It is not automation if I have to run this script manually every three months. So I created a Travis CI job to automate this process. The job will run every month and deploy my certificates automatically. It has been four months, and I have not faced any issues with this setup.&lt;/p>
&lt;p>The code for this post can be viewed at &lt;a href="https://github.com/yashhere/GoDaddy-GitLab-Certs" target="_blank" rel="noopener">Github&lt;/a>.&lt;/p>
&lt;p>Thanks for reading. Cheers 😄&lt;/p></description><author>Yash.Agarwal@fakeEmailToMakeValidatorHappy.com (Yash Agarwal)</author><category domain="https://tufte.yashagarwal.in/categories/technical">Technical</category><category domain="https://tufte.yashagarwal.in/tags/linux">Linux</category><guid>https://tufte.yashagarwal.in/posts/2019/07/automatic-https-certs-using-godaddy-and-gitlab-apis/</guid><pubDate>Tue, 23 Jul 2019 16:40:28 +0530</pubDate></item><item><title>Setting Up ModSecurity on Ubuntu</title><link>https://tufte.yashagarwal.in/posts/2019/07/setting-up-modsecurity-on-ubuntu/</link><description>&lt;p>Recently, I am experimenting with Web Application Firewalls a lot. ModSecurity is one of them. It is the most famous and useful open-source Web Application Firewall (WAF) in existence. It is supported by various web servers such as Apache, Nginx, and IIS.&lt;/p>
&lt;p>The job of ModSecurity is to sit in front of the application web server and check the incoming requests and outgoing responses to filter out malicious content. It does so by the use of powerful and complex regular expressions. ModSecurity uses a rule language for its rules. The rule language has variables and operators defined to aid in the process of parsing HTTP requests.&lt;/p>
&lt;p>ModSecurity, in itself, cannot block or allow requests. It is just a rule engine. It requires rules to operate appropriately. That&amp;rsquo;s where its sister project, Core Rule Set (CRS), comes into the picture. CRS is a rule set developed to be used with ModSecurity. It has been in active development for several years now and is very mature. Together, ModSecurity and CRS form a formidable defense against the widespread web application attacks.&lt;/p>
&lt;p>Now that you know, what a WAF is, let&amp;rsquo;s proceed to install ModSecurity on Ubuntu. I will be compiling ModSecurity&amp;rsquo;s latest version on Ubuntu 18.04. We will also configure ModSecurity to use Core Rule Set.&lt;/p>
&lt;h2 id="installing-dependencies">Installing Dependencies&lt;/h2>
&lt;p>ModSecurity requires some dependencies to work correctly. Let&amp;rsquo;s install them -&lt;/p>
&lt;p>First, upgrade the Ubuntu system.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">sudo apt-get -y update
sudo apt-get -y upgrade&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Now install the dependencies.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">sudo apt-get -y install git libtool dh-autoreconf pkgconf gawk libcurl4-gnutls-dev libexpat1-dev libpcre3-dev libssl-dev libxml2-dev libyajl-dev zlibc zlib1g-dev libxml2 libpcre++-dev libxml2-dev libgeoip-dev liblmdb-dev lua5.2-dev iputils-ping locales apache2 apache2-dev ca-certificates wget&lt;/code>&lt;/pre>&lt;/div>
&lt;p>&lt;em>Optional&lt;/em>: clean up the Ubuntu caches.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">sudo apt-get clean &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> sudo rm -rf /var/lib/apt/lists/*&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Install &lt;code>SSDeep&lt;/code> as well (as done &lt;a href="https://github.com/CRS-support/modsecurity-docker/blob/v3/apache-apache/Dockerfile" target="_blank" rel="noopener">here&lt;/a>)&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="nb">cd&lt;/span> ~
git clone https://github.com/ssdeep-project/ssdeep
&lt;span class="nb">cd&lt;/span> ssdeep
./bootstrap
./configure
make
sudo make install&lt;/code>&lt;/pre>&lt;/div>
&lt;h2 id="compiling-modsecurity">Compiling ModSecurity&lt;/h2>
&lt;p>Let&amp;rsquo;s clone ModSecurity from Github.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="nb">cd&lt;/span> ~
git clone -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity
&lt;span class="nb">cd&lt;/span> ModSecurity
git submodule init
git submodule update
./build.sh
./configure
make &lt;span class="c1"># takes ~8 minutes on AWS t2.micro&lt;/span>
sudo make install&lt;/code>&lt;/pre>&lt;/div>
&lt;h2 id="compiling-modsecurity-apache-connector">Compiling ModSecurity-apache connector&lt;/h2>
&lt;p>To configure it with Apache, we will require ModSecurity-apache connector. Let&amp;rsquo;s install that as well.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="nb">cd&lt;/span> ~
git clone https://github.com/SpiderLabs/ModSecurity-apache
&lt;span class="nb">cd&lt;/span> ModSecurity-apache
./autogen.sh
./configure --with-libmodsecurity&lt;span class="o">=&lt;/span>/usr/local/modsecurity
make
sudo make install&lt;/code>&lt;/pre>&lt;/div>
&lt;h2 id="setting-up-crs-rules">Setting up CRS rules&lt;/h2>
&lt;p>Now, let&amp;rsquo;s download CRS rule set as well.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="nb">cd&lt;/span> ~
git clone -b v3.2/dev https://github.com/SpiderLabs/owasp-modsecurity-crs
sudo mv owasp-modsecurity-crs/ /usr/local/&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Rename CRS configuration file -&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">sudo mv /usr/local/owasp-modsecurity-crs/crs-setup.conf.example /usr/local/owasp-modsecurity-crs/crs-setup.conf&lt;/code>&lt;/pre>&lt;/div>
&lt;h2 id="setting-up-modsecurity">Setting up ModSecurity&lt;/h2>
&lt;p>Now, we need to create a file in the Apache modules directory, so that Apache can know, how to activate ModSecurity.&lt;/p>
&lt;p>Create &lt;code>/etc/apache2/mods-enabled/security3.conf&lt;/code> file and paste the following contents -&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">LoadModule security3_module /usr/lib/apache2/modules/mod_security3.so
modsecurity on
modsecurity_rules_file &lt;span class="s1">&amp;#39;/etc/apache2/modsec/main.conf&amp;#39;&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>As you can see, the last line in the above code block reference a file &lt;code>main.conf&lt;/code> in a folder &lt;code>modsec&lt;/code>. This folder will not be present by default. We need to create that.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">sudo mkdir -p /etc/apache2/modsec&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Setup ModSecurity configuration file -&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="c1"># enables Unicode support in ModSecurity&lt;/span>
sudo wget -P /etc/apache2/modsec/ https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/unicode.mapping
sudo wget -P /etc/apache2/modsec/ https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/modsecurity.conf-recommended
sudo mv /etc/apache2/modsec/modsecurity.conf-recommended /etc/apache2/modsec/modsecurity.conf&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Change the SecRuleEngine directive in the configuration to change from the default &amp;ldquo;detection only&amp;rdquo; mode to actively dropping malicious traffic.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">sudo sed -i &lt;span class="s1">&amp;#39;s/SecRuleEngine DetectionOnly/SecRuleEngine On/&amp;#39;&lt;/span> /etc/apache2/modsec/modsecurity.conf&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Change the location of &lt;code>modsec_audit.log&lt;/code> file to Apache log directory.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">sudo sed -i &lt;span class="s1">&amp;#39;s/SecAuditLog \/var\/log\/modsec_audit.log/SecAuditLog \/var\/log\/apache2\/modsec_audit.log/&amp;#39;&lt;/span> /etc/apache2/modsec/modsecurity.conf&lt;/code>&lt;/pre>&lt;/div>
&lt;p>To configure ModSecurity to use CRS rule set, put the following text in &lt;code>/etc/apache2/modsec/main.conf&lt;/code> file.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">Include &lt;span class="s2">&amp;#34;/etc/apache2/modsec/modsecurity.conf&amp;#34;&lt;/span>
Include &lt;span class="s2">&amp;#34;/usr/local/owasp-modsecurity-crs/crs-setup.conf&amp;#34;&lt;/span>
Include &lt;span class="s2">&amp;#34;/usr/local/owasp-modsecurity-crs/rules/*.conf&amp;#34;&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Also enable some Apache modules for better functioning of ModSecurity.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">sudo a2enmod unique_id headers rewrite actions dav dav_fs&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Now restart the Apache server&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">sudo systemctl restart apache2&lt;/code>&lt;/pre>&lt;/div>
&lt;h2 id="fixing-some-common-issues">Fixing some common issues&lt;/h2>
&lt;p>Sometimes, I had encountered errors when ModSecurity was not able to append logs to its log file. I figured out that ModSecurity did not have enough permissions to write that file. We can fix this issue quickly.&lt;/p>
&lt;p>First, test if you really have this issue or not.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">curl &lt;span class="s1">&amp;#39;http://localhost/?q=&amp;#34;&amp;gt;&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt;&amp;#39;&lt;/span>
&amp;lt;!DOCTYPE HTML PUBLIC &lt;span class="s2">&amp;#34;-//IETF//DTD HTML 2.0//EN&amp;#34;&lt;/span>&amp;gt;
&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;403 Forbidden&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;
&amp;lt;h1&amp;gt;Forbidden&amp;lt;/h1&amp;gt;
&amp;lt;p&amp;gt;You dont have permission to access / on this server.&amp;lt;br /&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;hr&amp;gt;
&amp;lt;address&amp;gt;Apache/2.4.29 &lt;span class="o">(&lt;/span>Ubuntu&lt;span class="o">)&lt;/span> Server at localhost Port 80&amp;lt;/address&amp;gt;
&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Now go to Apache log directory and check the contents of &lt;code>modsec_audit.log&lt;/code> file.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="nb">cd&lt;/span> /var/log/apache2
tail modsec_audit.log&lt;/code>&lt;/pre>&lt;/div>
&lt;p>You should see the following content -&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">---0LzdyETA---A--
&lt;span class="o">[&lt;/span>01/Jul/2019:14:42:41 +0000&lt;span class="o">]&lt;/span> 156199216179.666171 127.0.0.1 &lt;span class="m">41824&lt;/span> ip-xxx-xx-xx-xx.ap-south-1.compute.internal &lt;span class="m">80&lt;/span>
---0LzdyETA---B--
GET /?q&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&amp;gt;&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt; HTTP/1.1
&lt;/span>&lt;span class="s2">Host: localhost
&lt;/span>&lt;span class="s2">User-Agent: curl/7.58.0
&lt;/span>&lt;span class="s2">Accept: */*
&lt;/span>&lt;span class="s2">
&lt;/span>&lt;span class="s2">---TqjMwy7h---D--
&lt;/span>&lt;span class="s2">
&lt;/span>&lt;span class="s2">---TqjMwy7h---F--
&lt;/span>&lt;span class="s2">HTTP/1.1 403
&lt;/span>&lt;span class="s2">
&lt;/span>&lt;span class="s2">---TqjMwy7h---H--
&lt;/span>&lt;span class="s2">ModSecurity: Warning. detected XSS using libinjection. [file &amp;#34;&lt;/span>/usr/local/owasp-modsecurity-crs/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf&lt;span class="s2">&amp;#34;] [line &amp;#34;&lt;/span>37&lt;span class="s2">&amp;#34;] [id &amp;#34;&lt;/span>941100&lt;span class="s2">&amp;#34;] [rev &amp;#34;&amp;#34;] [msg &amp;#34;&lt;/span>XSS Attack Detected via libinjection&lt;span class="s2">&amp;#34;] [data &amp;#34;&lt;/span>Matched Data: XSS data found within ARGS:q: &lt;span class="s2">&amp;#34;&amp;gt;&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt;&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>severity &lt;span class="s2">&amp;#34;2&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>ver &lt;span class="s2">&amp;#34;OWASP_CRS/3.1.0&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>maturity &lt;span class="s2">&amp;#34;0&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>accuracy &lt;span class="s2">&amp;#34;0&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>tag &lt;span class="s2">&amp;#34;application-multi&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>tag &lt;span class="s2">&amp;#34;language-multi&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>tag &lt;span class="s2">&amp;#34;platform-multi&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>tag &lt;span class="s2">&amp;#34;attack-xss&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>tag &lt;span class="s2">&amp;#34;OWASP_CRS/WEB_ATTACK/XSS&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>tag &lt;span class="s2">&amp;#34;WASCTC/WASC-8&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>tag &lt;span class="s2">&amp;#34;WASCTC/WASC-22&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>tag &lt;span class="s2">&amp;#34;OWASP_TOP_10/A3&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>tag &lt;span class="s2">&amp;#34;OWASP_AppSensor/IE1&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>tag &lt;span class="s2">&amp;#34;CAPEC-242&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>hostname &lt;span class="s2">&amp;#34;localhost&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>uri &lt;span class="s2">&amp;#34;/&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>unique_id &lt;span class="s2">&amp;#34;156198848361.198287&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="o">[&lt;/span>ref &lt;span class="s2">&amp;#34;v8,27t:utf8toUnicode,t:urlDecodeUni,t:htmlEntityDecode,t:jsDecode,t:cssDecode,t:removeNulls&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span>
....
....
---TqjMwy7h---I--
---TqjMwy7h---J--
---TqjMwy7h---Z--&lt;/code>&lt;/pre>&lt;/div>
&lt;p>If you do not see the following content, and the file is empty or it does not exist, then ModSecurity was not able to open this file for writing. Use the following fix -&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="c1"># find out the user, Apache is running as&lt;/span>
&lt;span class="nv">apache_user&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="k">$(&lt;/span>ps -ef &lt;span class="p">|&lt;/span> egrep &lt;span class="s1">&amp;#39;(httpd|apache2|apache)&amp;#39;&lt;/span> &lt;span class="p">|&lt;/span> grep -v &lt;span class="sb">`&lt;/span>whoami&lt;span class="sb">`&lt;/span> &lt;span class="p">|&lt;/span> grep -v root &lt;span class="p">|&lt;/span> head -n1 &lt;span class="p">|&lt;/span> awk &lt;span class="s1">&amp;#39;{print $1}&amp;#39;&lt;/span>&lt;span class="k">)&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Add this user to &lt;code>adm&lt;/code> group which owns the Apache logs directory in Ubuntu.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">sudo usermod -G adm www-data&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Now, change the owner of Apache log directory to &lt;code>apache_user&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">sudo chown -R &lt;span class="nv">$apache_user&lt;/span>:&lt;span class="nv">$apache_user&lt;/span> /var/log/apache2/*&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Now, ModSecurity should be able to append logs to the file &lt;code>modsec_audit.log&lt;/code>.&lt;/p>
&lt;h2 id="bonus-enabling-json-logs">&lt;em>Bonus&lt;/em>: Enabling JSON logs&lt;/h2>
&lt;p>&lt;strong>Note:&lt;/strong> Honestly speaking, I was not able to make it work every time. I do not know what is the issue, but it works with some of the installations, and with some of the installations, it just doesn&amp;rsquo;t log anything to the &lt;code>audit&lt;/code> directory. If anyone has managed to make it work consistently, please let me know.&lt;/p>
&lt;p>&lt;strong>Edit (13/07/2020):&lt;/strong> The JSON logging works fine. The issue was that ModSecurity did not have permission to create subdirectories in the Apache log directory. I suppose it is something related to SELinux. However, a simple solution is to add the user under which the Apache process runs to the &lt;code>adm&lt;/code> group. It might not be the right solution security-wise. However, from a quick remediation point of view, it works. Please let me know if you identify any better solution to fix the problem.&lt;/p>
&lt;p>Anyway, if you are like me, who do not like the default ModSecurity log format, ModSecurity provides an option to generate logs in JSON format as well. To enable JSON support, the YAJL library should be installed. We already installed this package when we were installing dependencies, so our ModSecurity setup is compiled with JSON support. Let us now configure ModSecurity to generate JSON logs.&lt;/p>
&lt;p>Open the &lt;code>/etc/apache2/modsec/modsecurity.conf&lt;/code> file and find the following lines -&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">SecAuditLogType Serial
SecAuditLog /var/log/modsec_audit.log&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Once you have found the following lines, replace these lines with the following lines&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">SecAuditLogFormat JSON
SecAuditLogType Parallel
SecAuditLog /var/log/apache2/modsec_audit.log
SecAuditLogStorageDir /var/log/apache2/audit/
SecAuditLogFileMode &lt;span class="m">0644&lt;/span>
SecAuditLogDirMode &lt;span class="m">0755&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Restart Apache server&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">sudo systemctl restart apache2&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Now, go to &lt;code>/var/log/apache2/&lt;/code> directory and create &lt;code>audit&lt;/code> folder.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">sudo usermod -G adm &lt;span class="nv">$apache_user&lt;/span>
&lt;span class="nb">cd&lt;/span> /var/log/apache2
sudo mkdir audit
&lt;span class="c1"># make `apache_user` owner of this directory as well...&lt;/span>
sudo chown -R &lt;span class="nv">$apache_user&lt;/span>:&lt;span class="nv">$apache_user&lt;/span> /var/log/apache2/audit&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Now, ModSecurity should be able to generate JSON logs in this directory. ModSecurity generates logs in the following format -&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">ubuntu@server:/var/log/apache2$ tree audit
audit
└── 20190701
├── 20190701-1132
│ ├── 20190701-113225-156196094515.868593
│ └── 20190701-113226-156196094691.154769
├── 20190701-1211
│ ├── 20190701-121122-156196328239.048942
│ └── 20190701-121122-156196328243.018882
....
....&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Now, your site should be relatively more secure than before.&lt;/p>
&lt;h2 id="a-warning-though">A warning, though&lt;/h2>
&lt;p>CRS is known to generate a lot of false-positive when enabled completely. We have not touched CRS paranoia levels. By default, it is set to paranoia level 1, which is known to produce false positives rarely, but still, as a measure of precaution, monitor your site&amp;rsquo;s traffic for some time, and then decide if you need to disable some of the CRS rules or not.&lt;/p></description><author>Yash.Agarwal@fakeEmailToMakeValidatorHappy.com (Yash Agarwal)</author><category domain="https://tufte.yashagarwal.in/categories/technical">Technical</category><category domain="https://tufte.yashagarwal.in/tags/linux">Linux</category><guid>https://tufte.yashagarwal.in/posts/2019/07/setting-up-modsecurity-on-ubuntu/</guid><pubDate>Mon, 01 Jul 2019 18:20:18 +0530</pubDate></item></channel></rss>