<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Divjot Singh — Blog</title>
<link>https://bogas04.github.io</link>
<description>My thoughts on work, life and world.</description>
<language>en-us</language>
<atom:link href="http://bogas04.github.io/blog.xml" rel="self" type="application/rss+xml" />
<lastBuildDate>Sat, 18 Jul 2026 19:05:06 GMT</lastBuildDate>
<item>
<title><![CDATA[Unusual feelings evoked by music]]></title>
<link>https://bogas04.github.io/blog/unusual-feelings-evoked-by-music-7-18-2026</link>
<guid>https://bogas04.github.io/blog/unusual-feelings-evoked-by-music-7-18-2026</guid>
<pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
<description><![CDATA[On learning to let yourself enjoy the bliss of subjectivity]]></description>
<content:encoded><![CDATA[<p>So this is my entry to a prompt "Write about an album that got you through a hard time".</p>
<p>Without thinking much, my mind instantly thought about my unusual relationship with the music I've been listening to lately. I firmly believe that our choice in music reveals multiple layers about our experiences.</p>
<p>Our choice of music is never objective, there are no objectively perfect lyrics, objectively melodious melodies, objectively perfect cacophony of vibrations and precurssions that can soothe every human mind, at all times. In fact, you'd find people change their taste over the years in unrecognisable ways. For no development of taste in music is also objectively predetermined. Not all roads lead to Jazz.</p>
<p>With this perspective, the question arises why then one chooses to prefer certain music, and why do they prefer to change that taste over life experiences? This blog is my answer to these questions.</p>
<p>I've been raised in a rather orthodox atmosphere of obedience, subservience, unquestionable loyalty, and an unpayable debt towards your parents. The kind of climate where things were either Godly good or Evilly bad, and doing bad things meant you, a child, figuring out this complex world, are bad, disgrace and worthy of abuse.</p>
<p>What does a <em>fairly straightforward</em> upbringing like this, though highly lucrative in psychotherapy spheres,  does to the taste of music of a growing human mind?</p>
<p>Naturally, in this very monochromatic world, the cosmic dance of vibrations and the fractal strings of alphabets, becomes objective.</p>
<p>Not only the child develops an <em>acceptable</em> taste in music, and seeks out music that <em>earns</em> validation in the eyes of their caretakers, peers, and every single person they want to impress, silently, a very loud playlist gets developed that the child subjectively enjoys but tries very hard to hide by objectively looking down at people who like such music.</p>
<p>With this background, as I was recovering from what seemed to be fever after a fall from bike on slippery curvy hilly roads of sleeper town of Munduk in Bali, a day before Nyepi, the auspicious Hindu festival of silence, when even airports are shut and almost no hotels provide any service, turned out to be actually entirely unrelated to the fall, and was simply the worst fever I've ever had, for it was the first sign of a very common viral infection of dengue.</p>
<p>In such a catatonic state, the guards of that child lowered, and he finally allowed to be soothed with the music that the algorithm kept recommending but he kept avoiding it coz he learned to believe it was objectively bad music.</p>
<p>And soothed he, the child, was. He can't explain why he loves this music, it makes his stoic persona want to dance, it makes him happy even though the lyrics are far from his acquired personality, but he feels an unexplainable connection to it which his objectivity cannot rationalize.</p>
<p>And that's how I got through a hard time, by learning to let that child enjoy the bliss of subjectivity.</p>]]></content:encoded>
</item>

<item>
<title><![CDATA[How Holi is related to narcissism and patriarchy]]></title>
<link>https://bogas04.github.io/blog/how-holi-is-related-to-narcissism-and-patriarchy-3-22-2021</link>
<guid>https://bogas04.github.io/blog/how-holi-is-related-to-narcissism-and-patriarchy-3-22-2021</guid>
<pubDate>Mon, 22 Mar 2021 00:00:00 GMT</pubDate>
<description><![CDATA[My views on emotional abuse done by narcissistic parents and how the epic of Bhagat Prahlad relates to it.]]></description>
<content:encoded><![CDATA[<h2 id="user-content-originally-a-twitter-thread"><a href="https://bogas04.github.io/blog/how-holi-is-related-to-narcissism-and-patriarchy-3-22-2021#originally-a-twitter-thread" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Originally a <a href="https://twitter.com/i/status/1373926490279178245">Twitter Thread</a>.</h2>
<p>With Holi coming up and me witnessing a lot of turmoil in my personal life, I was forced to think about Holi in a very specific way. At risk of over-simplifying and appropriating the narrative, here are my unpopular views on the epic of Bhagat Prahlad and how it relates with <a href="https://www.psychologytoday.com/us/blog/victim-victor/202011/is-how-narcissists-think">narcissism</a> and toxic <a href="https://www.psychologytoday.com/us/blog/acquired-spontaneity/201708/why-patriarchy-is-not-about-men">patriarchy</a>.</p>
<p><img src="https://bogas04.github.io/img/blog/prahlad-1.jpg" alt="Prahlad in lap of his angry father"></p>
<p>If you are to believe the ancient epic of Bhagat Prahlad and Hirnaykashyap, AKA Harnaakash in Sikhi, you'll find some interesting things around patriarchal family dynamics. There was an ideological difference between Prahlad and his father. His father felt superior and he felt that he was worthy of worship. This inflated self-view was further exemplified by the fact that his province &amp; society agreed, thanks to his boon of invincibility.</p>
<p><img src="https://bogas04.github.io/img/blog/prahlad-2.jpg" alt="Bhagat Prahlad in pyre chanting Ram Ram while his father watches him burn"></p>
<p>Prahlad, on other hand, by grace of his own wisdom given by Narad, believed Vishnu to be his God. This was completely unacceptable to his narcissist father. Prahlad's defiance was followed by series of attempts by his father to get his son to conform to his ideology.</p>
<p><img src="https://bogas04.github.io/img/blog/prahlad-3.jpg" alt="Narad giving spiritual wisdom to Prahlad's pregnant mother"></p>
<p>While the world around Hirnaykashyap believed him to be equivalent of God, Prahlad didn't bow down to his teachers, friends, sister and as well as his mother. He stood against and outright fought the entire world for his right to lead his life his way.</p>
<p><img src="https://bogas04.github.io/img/blog/prahlad-4.jpg" alt="Prahlad thrown off cliff only to be protected by Vishnu"></p>
<p>Imagine what a typical patriarchal mindset person in that era would have said. Wouldn't they instruct Prahald to leave his ego and just bow down to his parents? After all, his mother nurtured and nourished him, and his father took care of him, isn't it his moral obligation?</p>
<p><img src="https://bogas04.github.io/img/blog/prahlad-5.jpg" alt="Prahlad preaching his friends about Vishnu"></p>
<p>Guru Amardaas Jee, 3rd Guru of Sikhs, in his <a href="http://sttm.co/s/4054/48255">rendition</a> of the epic, shows how Prahlad talks back to his own mother.</p>
<p><img src="https://bogas04.github.io/img/blog/prahlad-6.jpg" alt="Shabad in Guru Granth Sahib showing how Bhagat Prahlad defies his mother"></p>
<p>Ultimately, after multiple attempts of coercing Prahlad, including multiple attempts of murder for not agreeing with his father, Prahlad was protected by Narsingh (an avatar of Vishnu) after He killed his father, thanks to some loop-hole in the invincibility spell.</p>
<p><img src="https://bogas04.github.io/img/blog/prahlad-7.jpg" alt="Narsingh killing Hirnaykashyap"></p>
<p>My point over here is that, since bygones we know of narcissism &amp; toxic patriarchy, and this story shows how a minor stood up against something he believed to be false and didn't bow down at all. In the world of obedient <a href="https://en.wikipedia.org/wiki/Shravan">Shravan Kumar</a> &amp; Raam, we also have disobedient Prahald.</p>
<p><img src="https://bogas04.github.io/img/blog/prahlad-8.jpg" alt="Shravan Kumar carrying his disabled parents"></p>
<p>Whether you believe children should indeed never defy their parents, or that Prahlad was an exception because he was a devotee of Vishnu, truth is that Prahlad wasn't supported by anyone he could rely on (his parents, siblings, friends or school) but he didn't conform to them.</p>
<p>In my opinion, the notion that children must be obedient to their parents is rejected by this story. Whether Prahlad was right or wrong, that's a separate ideological question, but we all can agree that children have been defying parents since bygones &amp; Sikhi even celebrates that.</p>
<p>The number of times Prahlad's story is mentioned in Sikhi, makes me feel that Gurus didn't really want Sikhs to become obedient children of their parents, but rather be autonomous and sovereign. Defiance against old systems is pretty much a norm in Sikhi.</p>
<p>Controlling parents and <a href="https://www.psychologytoday.com/us/blog/insight-is-2020/201405/narcissistic-parents-psychological-effect-their-children">emotional abuse by narcissistic parents</a> is not a new story, and it even needed intervention by Vishnu themself to save Prahlad.</p>
<p>If <a href="https://www.psychologytoday.com/us/blog/the-legacy-distorted-love/201802/the-real-effect-narcissistic-parenting-children">you're a victim</a> of such emotional abuse by controlling parents, you may take inspiration from this epic.</p>]]></content:encoded>
</item>

<item>
<title><![CDATA[Effective Remote Communication]]></title>
<link>https://bogas04.github.io/blog/effective-remote-communication-11-1-2020</link>
<guid>https://bogas04.github.io/blog/effective-remote-communication-11-1-2020</guid>
<pubDate>Sun, 01 Nov 2020 00:00:00 GMT</pubDate>
<description><![CDATA[My take on team communication in a remote world.]]></description>
<content:encoded><![CDATA[<p>Thanks to COVID-19, working classes are either privileged to work remotely for their company, or severely unfortunate to lose their jobs and having to rebuild their careers from scratch. While the privilege of remote work is certainly a godsend, most companies, in my honest opinion, are struggling to make it work effectively. Here are some of my thoughts on how to improve that. I might be wrong or missing some points, would be more than happy to discuss about it on <a href="https://twitter.com/bogas04">Twitter</a>!</p>
<h2 id="user-content-asynchronous-communication"><a href="https://bogas04.github.io/blog/effective-remote-communication-11-1-2020#asynchronous-communication" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Asynchronous Communication</h2>
<p>Pretty much all developers know how synchronous blocking code isn't really ideal, especially when multiple actors are involved. The same applies to a team of employees. If every problem requires another employee to stop what they're doing and help you out, it causes a pipeline stall. Because they've stalled what they were doing, dependents of their work would also be stalled. It isn't immediately obvious, but as the team scales without adopting asynchronous communication, productivity counter-intuitively decreases, despite the increase of workforce. In my opinion addition of new members doesn't also mean improvement of efficient communication amongst them.</p>
<p><img src="https://bogas04.github.io/img/blog/asynchronous-vs-synchronous.png" alt="Image comparing how synchronously processes stall the pipeline while asynchronous processes do not do so"></p>
<ul>
<li>Make it easy for other person to reply quickly, for example:</li>
<li>
<ul>
<li>A yes/no question can be answered faster than an ambiguous monologue.</li>
</ul>
</li>
<li>
<ul>
<li>Scheduling a meeting in advance (after checking their calendar) is better than asking "are you free?" and waiting for hours.</li>
</ul>
</li>
<li>
<ul>
<li>Sharing relevant details/attachments is better than waiting for them to ask you for that.</li>
</ul>
</li>
<li>Sharing a deadline in your ask gives other person time to organize their week plans better.</li>
<li>Expect delays in replies, that's the norm, not an exception.</li>
<li>Keep some extra chores at hand while you wait for a reply, so as to not stay blocked until you receive one.</li>
</ul>
<h2 id="user-content-clear-articulate-communication"><a href="https://bogas04.github.io/blog/effective-remote-communication-11-1-2020#clear-articulate-communication" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Clear Articulate Communication</h2>
<blockquote>
<p>Effective written communication becomes critical the more companies embrace remote work. With an aversion to "jumping on calls" at a whim, and a preference for asynchronous communication, most of remote-friendly company's communications are text-based, and so articulate and timely articulation becomes key.</p>
</blockquote>
<p><a href="https://medium.com/swlh/the-five-levels-of-remote-work-and-why-youre-probably-at-level-2-ccaf05a25b9c">Source</a></p>
<p><img src="https://bogas04.github.io/img/blog/articulate-communication.png" alt="Image comparing 3 examples of articulation. First: call the person directly to get answer, Second: &quot;a-fairly-large-module isn't working , can you join this meeting for 5 minutes?&quot;, Third: &quot;Hey, I got complete-error-message error when running code-snippet. I've tried attempts-to-fix and saw links-to-documentation, but I'm still stuck. Here's my code branch if you want to checkout and debug.&quot;>"></p>
<p>The next problem is that folks prefer to communicate as little as possible about their issue, while expect an immediate fix for their issue. Observe the three scenarios above. The first message is essentially a <a href="https://chelseatroy.com/2018/04/17/but-what-if-i-cannot-tap-my-remote-employee-on-the-shoulder/">shoulder tap equivalent of office</a>. You completely break the flow of the other person, without being considerate about their time and their context switch. Please don't do this unless it's basically EMERGENT as well as URGENT. To understand the difference between the two, let's look at this quote:</p>
<blockquote>
<p>The main difference between emergency and urgency is that in emergency there is immediate threat to life, health, property or environment; whereas in urgency, there is no immediate danger or threat to life, health, property or environment but if not taken care in a given period of time, then the situation may turn into an emergency situation.</p>
</blockquote>
<p><a href="http://www.differencebetween.net/science/nature/difference-between-urgence-and-emergency/">Source</a></p>
<p>I hope we can all agree that first message should ONLY be reserved for emergencies. If we keep crying foul, like calling a person to help with an unreleased software or upcoming demo, what eventually happens is that employees lose seriousness and start skipping calls. This can be catastrophic when you really have an emergency, like a huge outage or critical crash that's costing millions of dollars.</p>
<p>Now that we've established that the first message is basically reserved for emergencies, let's see why the second message isn't ideal either. The problem is that it's focused only in getting the solution, but with minimum effort. It's basically like asking someone to take over and fix your issue, i.e. <a href="https://theleegroup.com/spoon-fed-vs-supportive-management/">spoon feeding</a>. This is detrimental in several ways;</p>
<ul>
<li>You don't actually go through the process of reading, debugging, trying, thinking, and learn less.</li>
<li>You stop someone else from doing their work and making it difficult for them to resume after having disconnected the call.</li>
<li>The person who you're asking help from has to ask you a bunch of questions which you could've written to avoid extra time spent on the problem. "Did you try this? Did you read this? Can you share the error message? Can you share your branch?", all this could've been avoided and saved everybody's time.</li>
<li>It negatively effects the mood of the other person because deep down everyone wants to help each other, but they've to make a choice between being polite and slacking off in their job. That's a tough one and not everyone would be assertive enough to triage help.</li>
<li>Chances are, by the time you read the error message, Google a bit, read documentation and try certain fixes, you might have found the fix.</li>
</ul>
<p>Even if you are using the third message format, take some time to type out the entire thing, and re-read it yourself once. Not only you'll avoid spamming, you'll also get an opportunity for some self-reflection. Sometimes you just need to see a gist of the whole thing for something to "click".</p>
<h3 id="user-content-open-communication"><a href="https://bogas04.github.io/blog/effective-remote-communication-11-1-2020#open-communication" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Open Communication</h3>
<p>Now that we understand importance of asynchronous and clear articulate communication, last thing that we need is open communication. There's no need to discuss in small silos when you know there are several of employees who might be facing the same issue, might have fixed it somehow and might have better ideas than the person you're taking help from. So asking for helping to your favorite goto person for xyz type of issue is only going to wear them out and give you less imaginative solutions. Discuss in open as much as possible, albeit in a clear articulate fashion, so as to enable meaningful discussion for systematic solutions.</p>
<ul>
<li>Try to discuss in channels &amp; groups, not just DMs.</li>
<li>Realize that asking questions in open doesn't reflect poorly on you.</li>
<li>Fear of conflicting opinions is a <a href="https://www.entrepreneur.com/article/238993">net negative for a team</a>.</li>
<li>Sharing your progress timely with the concerned audience helps in avoiding working in isolation.</li>
<li>Gathering continuous feedback from multiple people helps in adapting to changing requirements.</li>
</ul>
<p>I hope this post made some sense to you and encourages you to form <a href="https://www.careercontessa.com/advice/healthy-boundaries-at-work/">boundaries</a> for your sanity and that of your team members. I'll highly recommend you to go through the links I've shared in this blog to learn more.</p>]]></content:encoded>
</item>

<item>
<title><![CDATA[JavaScript cheat sheet in 2020]]></title>
<link>https://bogas04.github.io/blog/javascript-cheat-sheet-in-2020-9-14-2020</link>
<guid>https://bogas04.github.io/blog/javascript-cheat-sheet-in-2020-9-14-2020</guid>
<pubDate>Mon, 14 Sep 2020 00:00:00 GMT</pubDate>
<description><![CDATA[List of snippets to learn basics of JavaScript]]></description>
<content:encoded><![CDATA[<p><img src="https://bogas04.github.io/img/blog/ecmascript.png" alt="Evolution of ECMAScript">
<a href="https://engineering.carsguide.com.au/javascript-context-ecmascript-84d709ef9165">Source</a></p>
<h2 id="user-content-basic-javascript-syntax"><a href="https://bogas04.github.io/blog/javascript-cheat-sheet-in-2020-9-14-2020#basic-javascript-syntax" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Basic JavaScript syntax</h2>
<p>If you want to learn from a book, this is a great one <a href="https://exploringjs.com/impatient-js/toc.html">https://exploringjs.com/impatient-js/toc.html</a></p>
<h3 id="user-content-variable-definition"><a href="https://bogas04.github.io/blog/javascript-cheat-sheet-in-2020-9-14-2020#variable-definition" aria-hidden="true" tabindex="-1"><span>🔗 </span></a><strong>Variable definition</strong></h3>
<div><pre><code><span>const</span> a <span>=</span> <span>123</span><span>;</span>

<span>let</span> b <span>=</span> <span>123</span><span>;</span>
b <span>=</span> a<span>;</span>

<span>var</span> c <span>=</span> <span>123</span><span>;</span>
c <span>=</span> a<span>;</span>
</code></pre></div>]]></content:encoded>
</item>

<item>
<title><![CDATA[Learning ReactJS in 2020]]></title>
<link>https://bogas04.github.io/blog/learning-reactjs-in-2020-9-14-2020</link>
<guid>https://bogas04.github.io/blog/learning-reactjs-in-2020-9-14-2020</guid>
<pubDate>Mon, 14 Sep 2020 00:00:00 GMT</pubDate>
<description><![CDATA[My take on introducing you to ReactJS]]></description>
<content:encoded><![CDATA[<p><strong>Prerequisites</strong>: Working knowledge of JavaScript, ES6 features (classes, arrow functions at least). Here's a <a href="https://bogas04.github.io/blog/javascript-cheat-sheet-in-2020-9-14-2020">cheatsheet</a> for same.</p>
<p><img src="https://bogas04.github.io/img/blog/reactjs.png" alt="ReactJS Logo">
Screenshot of official <a href="https://reactjs.org">ReactJS</a> website.</p>
<h2 id="user-content-why-do-we-even-need-react"><a href="https://bogas04.github.io/blog/learning-reactjs-in-2020-9-14-2020#why-do-we-even-need-react" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Why do we even need React?</h2>
<ul>
<li>Every frontend application deals with calling APIs, transforming data, listening to user's actions (click, key presses) and updating UI accordingly.</li>
<li>As you have more and more interactable/dynamic elements in your UI, keeping a reference of each element and manually changing it whenever data (let's call it state of application) changes can be cumbersome. It can also be hard to remember to update all elements that are related to one particular state variable.</li>
<li>Let's take example of an app like Swiggy. When I click on add item, see how many elements update, and how many calculations are going on.</li>
</ul>
<p></p>
<ul>
<li>Not just that, there are a lot of edge cases that have to be handled. Observe what happens when I try to add item from other restaurant.</li>
</ul>
<p></p>
<ul>
<li>Clearly manually updating each state variable and element is invitation to a messy codebase. And we've not yet seen how hard it can be to update UI code.</li>
<li>For something as simple as updating text of any element, we've to do the following. Imagine having id's all over your HTML code and writing code to manually mutate every single field, each time one state variable changes.</li>
</ul>
<div><pre><code><span>// pseudo-ish code, just to illustrate how one might tackle the problem</span>
<span>// with imperative procedural approach</span>

<span>const</span> addToCart <span>=</span> <span>document</span><span>.</span><span>getElementById</span><span>(</span><span>"add-to-cart"</span><span>)</span><span>;</span>

addToCart<span>.</span><span>addEventListener</span><span>(</span><span>"click"</span><span>,</span> <span>(</span><span>e</span><span>)</span> <span>=&gt;</span> <span>{</span>
  <span>if</span> <span>(</span><span>getCartRestaurant</span><span>(</span><span>)</span> <span>!==</span> <span>getCurrentRestaurant</span><span>(</span><span>)</span><span>)</span> <span>{</span>
    <span>showPopup</span><span>(</span><span>)</span><span>;</span>
    <span>return</span><span>;</span>
  <span>}</span>

  e<span>.</span><span>target</span><span>.</span><span>innerText</span> <span>=</span> e<span>.</span><span>target</span><span>.</span><span>innerText</span> <span>+</span> <span>1</span><span>;</span>

  <span>const</span> itemDetails <span>=</span> itemStore<span>.</span><span>get</span><span>(</span>addToCart<span>.</span><span>data</span><span>.</span><span>itemId</span><span>)</span><span>;</span>
  <span>if</span> <span>(</span><span>!</span><span>cartExists</span><span>(</span><span>)</span><span>)</span> <span>{</span>
    <span>addCartToUI</span><span>(</span><span>)</span><span>;</span> <span>// series of commands to build up cart UI</span>
    <span>addItemToCartUI</span><span>(</span>itemDetails<span>)</span><span>;</span> <span>// series of commands to update cart UI with new itemDetails</span>
  <span>}</span>

  <span>addItemToCartUI</span><span>(</span>itemDetails<span>)</span><span>;</span>
<span>}</span><span>)</span><span>;</span>
</code></pre></div>]]></content:encoded>
</item>

<item>
<title><![CDATA[My macOS setup]]></title>
<link>https://bogas04.github.io/blog/my-macos-setup-4-3-2020</link>
<guid>https://bogas04.github.io/blog/my-macos-setup-4-3-2020</guid>
<pubDate>Fri, 03 Apr 2020 00:00:00 GMT</pubDate>
<description><![CDATA[Stuff I do while setting up a new mac]]></description>
<content:encoded><![CDATA[<p><img src="https://bogas04.github.io/img/blog/macos.jpg" alt="Picture of a macbook"></p>
<h2 id="user-content-preferences"><a href="https://bogas04.github.io/blog/my-macos-setup-4-3-2020#preferences" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Preferences</h2>
<p>I dislike macOS's fullscreen mode, so in order to get maximum screen real estate, I autohide menu bar and dock.</p>
<h3 id="user-content-autohide-menu-bar"><a href="https://bogas04.github.io/blog/my-macos-setup-4-3-2020#autohide-menu-bar" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Autohide menu bar</h3>
<p>Refer to <a href="https://www.cnet.com/how-to/how-to-hide-the-menu-bar-in-os-x-el-capitan/">this</a> article.</p>
<h3 id="user-content-autohide-dock--disable-recent-applications"><a href="https://bogas04.github.io/blog/my-macos-setup-4-3-2020#autohide-dock--disable-recent-applications" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Autohide dock &amp; disable recent applications</h3>
<p>I also like a clean setup, so I keep only essential items in the dock for quick access, for rest I use spotlight.</p>
<p>Refer to <a href="https://www.cnet.com/how-to/macos-mojave-shows-recent-apps-in-the-dock-heres-how-to-hide-them/">this</a> article.</p>
<h2 id="user-content-git-default-push-to-current-branch"><a href="https://bogas04.github.io/blog/my-macos-setup-4-3-2020#git-default-push-to-current-branch" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Git default push to current branch</h2>
<div><pre><code><span>git</span> config push.default current <span>--global</span>
</code></pre></div>]]></content:encoded>
</item>

<item>
<title><![CDATA[Monorepos, lets talk about it]]></title>
<link>https://bogas04.github.io/blog/monorepos-lets-talk-about-it-9-17-2019</link>
<guid>https://bogas04.github.io/blog/monorepos-lets-talk-about-it-9-17-2019</guid>
<pubDate>Tue, 17 Sep 2019 00:00:00 GMT</pubDate>
<description><![CDATA[Recall the days when you were just introduced to git or a similar type ofversion control system. I’m guessing you must have faced some…]]></description>
<content:encoded><![CDATA[<p><img src="https://bogas04.github.io/img/blog/1__zWhHZUDWuxJwfEoumC1__OQ.png" alt="Image credits: undraw"></p>
<p>Recall the days when you were just introduced to <code>git</code> or a similar type of version control system. I’m guessing you must have faced some friction initially, how it breaks your flow, how you just can’t merge to master without rebasing/merging changes in first.</p>
<p>Despite that, you might agree today that it’s actually very helpful in collaborating with the team, and those pain points were necessary to get here.</p>
<p>Monorepos are somewhat similar.</p>
<p>While git was solving problems around managing single codebase with multiple team members or just better versioning, Monorepo kind of does the same but for multiple projects/codebases.</p>
<h3 id="user-content-the-what"><a href="https://bogas04.github.io/blog/monorepos-lets-talk-about-it-9-17-2019#the-what" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>The what.</h3>
<blockquote>
<p>Is Monorepo that cool font I see on&nbsp;Twitter?</p>
</blockquote>
<p><img src="https://bogas04.github.io/img/blog/1__ZzlBaQH6w1BgwZdo3bIYRQ.png" alt="Image credits: undraw"></p>
<p>Before diving into the topic, let’s first understand what Monorepo truly means. This is what Wikipedia has to say:</p>
<blockquote>
<p>In revision control systems, a Monorepo is a software development strategy where code for many projects are stored in the same repository.</p>
</blockquote>
<p>In other words, your ‘Work’ folder is close to what a Monorepo would look like. It would have packages that deal with server, web app, native app, documentation, etc.</p>
<p>This is different from a ‘monolith’ where all your application logic is<br>
centralized to one entry point as opposed to distributed services (microservices).</p>
<p>While code for various services would sit in a single repository, it doesn’t mean it would be deployed as a single entity, just like your ‘Work’ folder. Individual projects have separate life-cycles.</p>
<h3 id="user-content-the-why"><a href="https://bogas04.github.io/blog/monorepos-lets-talk-about-it-9-17-2019#the-why" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>The why.</h3>
<blockquote>
<p>So, do I just <code>git add</code> my entire ‘Work’&nbsp;folder?</p>
</blockquote>
<blockquote>
<p>“Why would you want to do this? Whatever happened to separation of concern?”</p>
</blockquote>
<p>There are several arguments both in favour and against Monorepos. And I don’t mean “Oh Google uses it” kind of arguments. This blog will give a sneak-peek into our problems and Monorepo’s solutions to them.</p>
<p>Regardless, I recommend that you identify the problems your codebase is facing, and see if Monorepo is truly the answer to those.</p>
<h3 id="user-content-the-story"><a href="https://bogas04.github.io/blog/monorepos-lets-talk-about-it-9-17-2019#the-story" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>The story.</h3>
<p>Before moving to Monorepo, we as a team worked on 3 codebases at the same time;</p>
<ul>
<li><strong>dweb</strong> (Desktop website of Swiggy)</li>
<li><strong>mweb</strong> (Mobile website of Swiggy)</li>
<li><strong>service</strong> (API proxy NodeJS middleware, used by dweb and mweb)</li>
</ul>
<p>When I say work, I mean writing features, updating build pipeline, reviewing code and fixing bugs.</p>
<p>As the codebases grew, we recognized some patterns:</p>
<p><img src="https://bogas04.github.io/img/blog/1____L__bUfSLVT6EboXRO7SSGg.png" alt="Image credits:&nbsp;undraw"></p>
<ul>
<li>Features written on mweb, while dissimilar enough to not to be dragged and dropped to dweb, held enough similarities to be broken into reusable parts.</li>
<li>Fixes that go on mweb are also needed on dweb.</li>
<li>Code reviewers often ended up reviewing the same code (between mweb and dweb) in a slightly different context.</li>
<li>Code review changes on dweb are also relevant to mweb</li>
<li>Changes to contracts of service, a common dependency, are also needed to be individually coded, tested, and reviewed.</li>
<li>Updating dependencies like <a href="https://reactjs.org/">React</a>/<a href="https://webpack.js.org/">Webpack</a>/<a href="https://babeljs.io/">Babel</a> becomes cumbersome between the two codebases.</li>
<li>Conventions are difficult to enforce between the three repositories. One has an older version of <a href="https://eslint.org/">ESLint</a>, one hasn’t been updated when new lint rules were added, one is still using old test runner.</li>
<li>Attempts to make a new repository to keep common code failed due to the amount of setup and code management. Imagine working with multiple team members on multiple repositories with multiple Pull Requests.</li>
</ul>
<p>As you can see, while the projects are very different (check out <a href="https://portal-sentry.swiggyapp.com/settings/swiggy/go-front-staging/keys/">swiggy.com</a> on your desktop and mobile to realize that), they still have quite a lot of common code interactions.</p>
<blockquote>
<p>Bike-shedding: Have you tried <a href="https://www.swiggy.com?utm_source=medium">Swiggy</a> website on your desktop or mobile browser? We would love to hear your feedback!</p>
</blockquote>
<h3 id="user-content-the-how"><a href="https://bogas04.github.io/blog/monorepos-lets-talk-about-it-9-17-2019#the-how" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>The how.</h3>
<p><img src="https://bogas04.github.io/img/blog/1__0WjBWfdkbcob39FMklwp7A.png" alt="Logo of Lerna"></p>
<p><a href="https://lerna.js.org/">https://lerna.js.org/</a></p>
<p>Depending on your ecosystem, there will be different tools to help you with maintaining a Monorepo. You can obviously go vanilla and just use different folders per project. We use <a href="https://lerna.js.org/">Lerna</a> for maintaining our JavaScript codebase.</p>
<p>Thanks to its community, there’s a <a href="https://github.com/lerna/lerna/tree/master/commands/publish">lot</a> <a href="https://github.com/lerna/lerna/blob/master/FAQ.md">of</a> <a href="https://lerna.js.org/#commands">documentation</a> and <a href="https://medium.com/mitterio/multirepo-to-lerna-js-monorepo-80f6657cb443">help</a> for Lerna <a href="https://github.com/lerna/lerna/blob/master/doc/troubleshooting.md">related</a> <a href="https://github.com/lerna/lerna/blob/master/doc/guides.md">queries</a>.</p>
<div><pre><code><span># Install lerna globally</span>
<span>npm</span> i <span>-g</span> lerna

<span># Change directory to your work folder</span>
<span>cd</span> ~/Work

<span># Make the folder you want to keep your monorepo in</span>
<span>mkdir</span> portal-web

<span># Change directory to monorepo folder</span>
<span>cd</span> portal-web

<span># Initialize lerna (it will handle `git init`)</span>
lerna init

<span># Commit the changes</span>
<span>git</span> <span>add</span> <span>.</span> <span>&amp;&amp;</span> <span>git</span> commit <span>-m</span> <span>"Initial commit"</span>

<span># Import other packages (https://github.com/lerna/lerna/tree/master/commands/import)</span>
lerna <span>import</span> ~/Work/portal-mweb

<span># That's pretty much it!</span>

<span># Fun fact: If you want to rename your package, simply rename the folder before importing.</span>
<span># Fun fact 2: You might need to flatten out the commits in most cases (https://github.com/lerna/lerna/tree/master/commands/import#--flatten)</span>
</code></pre></div>]]></content:encoded>
</item>

<item>
<title><![CDATA[Sharing made ridiculously easy with Web Share API]]></title>
<link>https://bogas04.github.io/blog/sharing-made-ridiculously-easy-with-web-share-api-9-22-2017</link>
<guid>https://bogas04.github.io/blog/sharing-made-ridiculously-easy-with-web-share-api-9-22-2017</guid>
<pubDate>Fri, 22 Sep 2017 00:00:00 GMT</pubDate>
<description><![CDATA[With growing mobile usage, performance and leanness (yeah, that’s a word) isbecoming top priority for web apps. Oddly enough, sharing has…]]></description>
<content:encoded><![CDATA[<p><img src="https://bogas04.github.io/img/blog/1__qp3z0ij8v372R__DVbuJB6Q.jpeg" alt="Image with icons of social media platforms"></p>
<blockquote>
<p>With growing mobile usage, performance and leanness (yeah, that’s a word) is becoming top priority for web apps. Oddly enough, sharing has never worked out well for web, until now (hopefully).</p>
</blockquote>
<h4 id="user-content-history-time"><a href="https://bogas04.github.io/blog/sharing-made-ridiculously-easy-with-web-share-api-9-22-2017#history-time" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>History time</h4>
<p>Since the social network explosion, ad revenue on page views and obsession with <a href="http://digg.com/">digg</a>-ing websites, social sharing “widgets” have polluted our browsing experience with numerous flaws:</p>
<p><img src="https://bogas04.github.io/img/blog/1__rW9LubrRX5l06KUeRoCzsA.png" alt=""></p>
<ul>
<li>They came with a dozen of JavaScript SDK files for every-single-social-network.</li>
<li>They were usually “sticky”, because that’s so cool.</li>
<li>They were hard to style, always looking pretty off from your website’s look and feel.</li>
<li>They almost always lacked one social network which was big in your region or for your audience.</li>
</ul>
<p>All these flaws became more prominent with rise of smartphones. SDKs burdened (and <a href="https://medium.freecodecamp.org/why-16-of-the-code-on-the-average-site-belongs-to-facebook-and-what-that-means-68956cd731be">still do</a>) the network and CPU, “sticky” widgets janked scrolling, and became unsurprisingly <a href="http://thinksem.com/blog/floating-social-media-share-bar-good-or-bad/">very annoying</a> at smaller resolutions (like they weren’t otherwise). And they certainly weren’t meant for everyone.</p>
<p>While solutions like lazy-loading and simpler designs helped a lot, it still is a painful job to find the right widget for your website, tweak it till the point it isn’t an eye-sore, only to find out that the users aren’t digg-ing it anymore (shameless pun-intended), and want to share it on XYZ messenger, which doesn’t have an <a href="https://faq.whatsapp.com/en/android/28000012">intent</a> URL yet.</p>
<p><img src="https://bogas04.github.io/img/blog/1__4xpPKwDeI__BomsMMRntRTw.png" alt="1990s called and it wants you to reply&nbsp;back.">
1990s called and it wants you to reply&nbsp;back.</p>
<p>Sadly, browsers haven’t cared enough to innovate much in this space lately. There were several attempts by Mozilla, Chrome and even <a href="http://www.lovemysurface.net/using-windows-8-share-charm-surface/">Windows 8</a>. While they still let you “email” your website on Desktop, and share to your favorite app on mobile, but that’s about it. Developer has no control over the shared title, content or the URL, which is a bigger problem when we talk about SPAs with fancy URLs.</p>
<h4 id="user-content-tldr"><a href="https://bogas04.github.io/blog/sharing-made-ridiculously-easy-with-web-share-api-9-22-2017#tldr" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>tl;dr</h4>
<p>And this changes with <a href="https://developers.google.com/web/updates/2016/09/navigator-share">Web Share API</a>. Wow, that’s quite a lot of build up for a simple API, isn’t it&nbsp;? But this API is remarkable&nbsp;!</p>
<p>And that’s it&nbsp;! In order to use it, you need to meet following conditions though:</p>
<blockquote>
<p>Your site must be served over <a href="https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features">HTTPS</a>.</p>
</blockquote>
<blockquote>
<p>You can only invoke the API in response to a user action, such as a click (e.g., you can’t call <code>navigator.share</code> as part of the page load).</p>
</blockquote>
<blockquote>
<p>You can also share any URL, not just URLs under your website’s current scope: and you may also share <code>text</code> without a URL.</p>
</blockquote>
<blockquote>
<p>You should feature-detect it in case it’s not available on your users’ platform (e.g., via <code>'share' in navigator</code>)</p>
</blockquote>
<p>The API is still a proposal, however it’s implemented in Chrome 61, which is the latest stable version at time of writing. Which means, in next 6 weeks, this API would be available on almost every other Android phone. If you’re still not sold and think intents are the way to go, you can head over to the <a href="https://github.com/WICG/web-share/blob/master/docs/explainer.md#frequently-asked-questions">FAQ</a> section of the proposal to learn about some decent arguments.</p>
<p>The <a href="http://mobile.twitter.com/">awesome PWA</a> of <a href="https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3">Twitter</a> already uses <img src="https://bogas04.github.io/img/blog/1__tGS6QdpXiL7m21oPm25v7A.png" alt="Web Share API for sharing&nbsp;tweets."></p>
<h4 id="user-content-future"><a href="https://bogas04.github.io/blog/sharing-made-ridiculously-easy-with-web-share-api-9-22-2017#future" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Future</h4>
<p>Did I say that’s it? Because that isn’t it yet.</p>
<ul>
<li>The share data (title, url and text presently) isn’t just limited to current set. There <a href="https://wicg.github.io/web-share/#extensibility-of-this-api">would</a> be additions to it in future, <code>image</code> being one for example.</li>
<li>There’s a sibling API, <a href="https://github.com/mgiuca/web-share-target">Web Share Target</a>, which allows a <a href="https://developers.google.com/web/progressive-web-apps/">PWA</a> to be listed in the native app share drawer. This brings web apps way closer to the native experience. Learn more about that proposal <a href="https://github.com/mgiuca/web-share-target/blob/master/docs/explainer.md">here</a>.</li>
</ul>
<h4 id="user-content-contribute"><a href="https://bogas04.github.io/blog/sharing-made-ridiculously-easy-with-web-share-api-9-22-2017#contribute" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Contribute</h4>
<p>So start adding support to this awesome API right now, and if you would like to have this API well supported please follow/vote/share/contribute to the bug numbers I’m listing below;</p>
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1402369">Firefox Bug 1402369</a></li>
<li><a href="https://bugs.webkit.org/show_bug.cgi?id=171100">Webkit Bug 171100</a></li>
<li><a href="https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/31563175-implement-web-share-api">Edge User Voice</a></li>
</ul>]]></content:encoded>
</item>

<item>
<title><![CDATA[My 15 kg weight loss journey]]></title>
<link>https://bogas04.github.io/blog/my-15-kg-weight-loss-journey-7-20-2017</link>
<guid>https://bogas04.github.io/blog/my-15-kg-weight-loss-journey-7-20-2017</guid>
<pubDate>Thu, 20 Jul 2017 00:00:00 GMT</pubDate>
<description><![CDATA[So coming to my story, I didn’t quite intend to lose weight, or follow anydiet, or did a rigorous workout. I believe that it’s basically…]]></description>
<content:encoded><![CDATA[<p><img src="https://bogas04.github.io/img/blog/1__AW6KCuaBBSUSWKu8dIrmLA.png" alt="A picture showing downward trend of my body weight from 90kg to 69kg over few months"></p>
<p>So coming to my story, I didn’t quite intend to lose weight, or follow any diet, or did a rigorous workout. I believe that it’s basically the result of negative-feedback in my brain. Sounds weird right? I’ll explain.</p>
<h3 id="user-content-before"><a href="https://bogas04.github.io/blog/my-15-kg-weight-loss-journey-7-20-2017#before" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Before</h3>
<p>I’ll first go through initial state variables;</p>
<ul>
<li>Age: 22 years and 9 months</li>
<li>Weight: 87 kilograms | 191 pounds</li>
<li>Height: 174 centimeters | 5 feet 8.5 inches</li>
<li>Waist: 91 centimeters | 36 inches</li>
<li><a href="https://www.nhlbi.nih.gov/health/educational/lose_wt/BMI/bmi-m.htm">BMI</a>: 28.7 (Overweight, 4 kilograms from being obese)</li>
<li><a href="https://www.health-calc.com/body-composition/waist-to-height-ratio">Waist to Height</a>: 0.52 (Males at increased risk)</li>
<li>Vegetarian? ✔</li>
<li>Very low sugar intake? ✔</li>
<li>Significant workout throughout the day? ✗</li>
</ul>
<p>Depending on where you come from, this might not look bad enough, and which was the exact attitude that kept me from doing anything significant about it (and I never did!). I tried the gym, but I always felt it wasn’t quite a sustainable solution, I wanted something that I could do in my daily routine.</p>
<p>It’s like, you can starve for 2 months and lose plenty, but that one day when you decide to eat something good, you just lose your control. Similarly, you might work out well for 2 months, but a long vacation to grandma’s might be enough to make you lousy again. These are very fragile methods in my opinion, for my sort of lifestyle in which work, commute, <em>*cough* Netflix</em> take most of the time.</p>
<h3 id="user-content-the-change"><a href="https://bogas04.github.io/blog/my-15-kg-weight-loss-journey-7-20-2017#the-change" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>The Change</h3>
<p>So what started the chain of events was this app called <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.fitness">Google Fit</a>. It’s a basic fitness app that uses your phone sensors to calculate steps/calories burnt/distance covered. That’s pretty much it.</p>
<p><img src="https://bogas04.github.io/img/blog/1__WFkALvcY68HD__PaoixgiiQ.png" alt="23rd of February is when I installed the app, though it took 3 days to get me to work on my&nbsp;goal.">
23rd of February is when I installed the app, though it took 3 days to get me to work on my&nbsp;goal.</p>
<p>Annnnd I forgot about it for three days. I opened it one day to see that I actually completed the goal of 10,000 steps on a Saturday when I went for a walk by the lake. That was easy! What I also observed was that I roughly burnt 1,700 ~ 2,000 calories by doing nothing throughout the day. Even if the data isn’t accurate, the sensor and environment conditions remain the same, making it a reliable way to observe variations and not the absolute values.</p>
<p>My brain was intrigued by these numbers. It’s almost how you add hashtags to Instagram posts to get more likes, and once you do get more, you overdo it, and the cycle continues. Just that, here you get likes from health!</p>
<p><img src="https://bogas04.github.io/img/blog/1__EmZytUAuspI__mycZ__o9OGw.png" alt="VERY TECHNICAL. MUCH&nbsp;SCIENCE.">
VERY TECHNICAL. MUCH&nbsp;SCIENCE.</p>
<p>So the first thing I did was that I <em>reduced the goal to 9,000 steps</em> to make myself feel better. And every week I increased it by 500–1000 steps as and when I started getting a good rhythm.</p>
<p>The other thing that I did was that I took interest in knowing calories of things I ate daily. By learning that a spoon of oil has as many calories as a bowl of corn flakes, which in turn has as many calories as a can of cola, I somehow started making food at home to avoid the extra cheese/butter/oil the chefs put in.</p>
<p><img src="https://bogas04.github.io/img/blog/1__UFCQ__sve25zCXqzQc__rYxA.png" alt="Remember, one is a breakfast, one is a drink with a snack, and other is added to your lunch just like&nbsp;that!">
Remember, one is a breakfast, one is a drink with a snack, and other is added to your lunch just like&nbsp;that!</p>
<p>Again, didn’t intend to, it’s just my brain trying to optimize calorie intake.</p>
<p>Not only I became more aware of the calories that I put it, I also started reducing them by simply cooking at home with better alternatives.</p>
<p>This number was insightful in an indirect way. Knowing that I was burning say 2000 calories daily, by ensuring low-calorie diet (without compromises), and burning more than the usual 2000, there was no way for me to not lose weight. And I did.</p>
<p><img src="https://bogas04.github.io/img/blog/1__7emoMCCIFij0dncEASB94g.gif" alt="MILLIONS OF&nbsp;CALORIES">
MILLIONS OF&nbsp;CALORIES</p>
<p>Losing weight is really no rocket-science. Either take in lesser calories or burn more than you eat or BOTH!</p>
<p>Adding to these two numbers, I also bought a nice digital weighing scale, only to get depressed every morning, which again helped me complete those extra 500 steps or choose fruits overs chips for snacks.</p>
<p>So to summarize, all I did was;</p>
<ul>
<li>Ensure I complete my steps daily, and increase them ever-so-slightly every week. I stopped increasing beyond 15,000 steps though.</li>
<li>Count calories of random food that I regularly ate, and replaced with better non-processed alternatives.</li>
<li>Eat out less often.</li>
<li>Check my weight regularly. The more aware I became of how previous day’s activity resulted in lower weight, the more my brain took it as a reward and probably released <a href="https://en.wikipedia.org/wiki/Oxytocin">Oxytocin</a> to give a sense of contentment and incompleteness at the same time. Negative feedback.</li>
</ul>
<h3 id="user-content-the-results"><a href="https://bogas04.github.io/blog/my-15-kg-weight-loss-journey-7-20-2017#the-results" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>The Results</h3>
<p><img src="https://bogas04.github.io/img/blog/1__OHlYFf__A8U689ORGveNMHA.png" alt="Downward trend of weight"></p>
<ul>
<li>Age: 23 years and 1 month</li>
<li>Weight: 72 kilograms | 158.7 pounds</li>
<li>Height: 174 centimeters | 5 feet 8.5 inches</li>
<li>Waist: 84 centimeters | 33 inches</li>
<li><a href="https://www.nhlbi.nih.gov/health/educational/lose_wt/BMI/bmi-m.htm">BMI</a>: 23.8 (Normal weight, 4 kilograms from being overweight)</li>
<li><a href="https://www.health-calc.com/body-composition/waist-to-height-ratio">Waist to Height</a>: 0.48 (OK)</li>
<li>Pseudo-Vegan? ✔</li>
<li>Very low sugar intake? ✔</li>
<li>Significant workout throughout the day? ✔</li>
</ul>
<h3 id="user-content-conclusion"><a href="https://bogas04.github.io/blog/my-15-kg-weight-loss-journey-7-20-2017#conclusion" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Conclusion</h3>
<p>I basically lost roughly 1 kilogram a week. At the same time I also went to grandma’s house (= fat rich food), ate out and ate heavy items (= too many calories), and even fall ill (= very little walk). I simply increased my steps for those days or did extra steps later. Basically, I didn’t change my lifestyle at all, apart from dedicating 2–3 hours to walk and cooking daily.</p>
<p><img src="https://bogas04.github.io/img/blog/1__B3QKpZdPXxmFaDsc9XQbdg.png" alt="I meet my goals daily, and compensate whenever I eat&nbsp;outside.">
I meet my goals daily, and compensate whenever I eat&nbsp;outside.</p>
<p>So by minor changes in my lifestyle, I found myself becoming less lethargic, which only helped me improve it more and more. I could work for long hours, walk for 2 hours, then cook food and still feel active!</p>
<p>Over time, I also found myself leaning towards a vegan diet. Watching <a href="http://www.cowspiracy.com/">Cowspiracy</a> and <a href="http://www.whatthehealthfilm.com/">What the Health</a> helped me with it greatly. I still have milk in coffee (creamer as it’s called in the west) &amp; ice creams on some days though. Still working on it. YouTube Channels like <a href="https://www.youtube.com/user/rawvegannotgross">Raw. Vegan. Not Gross</a> &amp; <a href="https://www.youtube.com/channel/UCEjkioV3LO_OIUaSWRxFZ3A">Cheap Lazy Vegan</a> help me a lot with non-dairy experiments. It’s simply unavailability of vegan alternatives in India that make me lose to coffee creamer.</p>
<p>Some clarifications I want to make here;</p>
<ul>
<li>I didn’t starve. I just ate better alternatives. I still had plenty of cheat days, but with reduced quantities and compensation for same.</li>
<li>I didn’t exhaust myself. Walking is the most basic exercise which is good for general health and doesn’t quite focus on any one body part. I lost weight not only from my calves &amp; thighs, but also from my face, arms, and waist. I also did push-ups to ensure muscle growth in torso region.</li>
<li>Girls are still not interested in me. Sigh.</li>
<li>Men on other hand compliment, saying I’ve become leaner. PROFIT???</li>
</ul>
<p>As always, it worked for me, but might not work for you. However, I’ve seen people reduce weight just by, say, getting rid of sugar, or meat, or dairy. In my case, these were already pretty much absent. Apparently, dieting wasn’t enough to pull this off alone, which is why I believe basic exercise like walking together with a better diet helped me overall. My advice would be to not look at long term gains, but to compare between days and weeks.</p>
<p>My quest is still on. I intend to sit in the middle of the ideal BMI range, and also improve on my Vegan skills.</p>
<p>Here’s a before (Feb 2017, 87kg | 192lb) &amp; after (Oct 2017, 69kg | 152 lb) picture.</p>
<blockquote>
<p><strong>Update Nov 2017:</strong> I lost even more weight since the time I posted this blog, about 3–4 kgs (6.6–8.8 lbs). And I also turned full vegan.</p>
</blockquote>
<p>PS:</p>
<ul>
<li>BMI and other such metrics have flaws. Don’t be too serious about them.</li>
<li>Losing weight doesn’t always mean better health. Consult a dietitian or whatever.</li>
<li>Feel free to analyze my case &amp; give remarks.</li>
</ul>]]></content:encoded>
</item>

<item>
<title><![CDATA[Release of Samsung Internet Chrome Extension v2]]></title>
<link>https://bogas04.github.io/blog/release-of-samsung-internet-chrome-extension-v2-3-9-2017</link>
<guid>https://bogas04.github.io/blog/release-of-samsung-internet-chrome-extension-v2-3-9-2017</guid>
<pubDate>Thu, 09 Mar 2017 00:00:00 GMT</pubDate>
<description><![CDATA[]]></description>
<content:encoded><![CDATA[<blockquote>
<p><strong>Update Oct 2017:</strong> Since the release of v2 (March 2017), we saw a <strong>9.3x increase</strong> in our monthly active users (~8k to 75k). We also observed <strong>35% jump</strong> in the rating. Thank you so much for using &amp; liking our extension, stay tuned for more updates!</p>
</blockquote>
<p><img src="https://bogas04.github.io/img/blog/1__e16MS4BgBe8e__DtlF666JA.png" alt=""></p>
<p>Today we are very glad to release the much awaited <a href="https://chrome.google.com/webstore/detail/samsung-internet/epejdmjgfibjaffbmojllapapjejipkh">version 2</a> of our Chrome Extension. <a href="https://chrome.google.com/webstore/detail/samsung-internet/epejdmjgfibjaffbmojllapapjejipkh">Install</a> it today to sync bookmarks across your Chrome browser on PC and Samsung Internet.</p>
<p>The Samsung Internet extension, earlier known as Samsung Sync (v1.4), not only sports a new name but also comes with tonnes of features and a massive UI overhaul. I’ll walk-through the new additions in the article.</p>
<blockquote>
<p>Drastic improvements to first-sync performance.</p>
</blockquote>
<p>First-sync performance was the number one complaint in our web store reviews, usually leaving users to never actually getting around to use our extension. We hit the heart of the issue with a dagger by rewriting several modules and chaining network requests, database queries and DOM updates in a much more optimized manner. With this release, you can now not only see the progress of sync, but also the fetched bookmarks as and when they arrive. We feel this will solve the top complaint and allow users to enjoy the extension.</p>
<p><img src="https://bogas04.github.io/img/blog/1__qYPi94TVyTF1p1aX1BCW9g.gif" alt=""></p>
<blockquote>
<p>Consistent UI with <a href="https://play.google.com/store/apps/details?id=com.sec.android.app.sbrowser">Samsung Internet on&nbsp;Android.</a></p>
</blockquote>
<p>We are proud of our UX team’s efforts in offering a very modern look and feel to the extension. The small 600 x 400 screen real estate makes it much harder to add features while keeping the interface user-friendly. After several iterations, I think we’ve pretty much nailed it. From a progress bar to show sync status to modals for bookmark management, the UI even though offering several functionalities doesn’t overwhelm the user.</p>
<p><img src="https://bogas04.github.io/img/blog/1__hE8PGhNMYIhyt3WsuEF50Q.png" alt="Live loading of bookmarks, top requested feature.">
Live loading of bookmarks, top requested feature.</p>
<blockquote>
<p>Enhanced bookmark management.</p>
</blockquote>
<p>The previous version (1.4) was bit limiting in the sense users could only edit title or delete a bookmark. We felt that the extension can offer much more than that and with today’s release, not only basic create / update / delete / move is supported, but users can also import Chrome bookmarks into their Samsung account. We feel that this brings the control back to the user.</p>
<p><img src="https://bogas04.github.io/img/blog/1__d6bWg__Yhi2DyDM0JSZdrjA.png" alt="Improved Bookmark Management">
Improved Bookmark Management</p>
<blockquote>
<p>And much&nbsp;more…</p>
</blockquote>
<p>The feature list just doesn’t stop here&nbsp;! Some of the other miscellaneous changes:</p>
<ul>
<li>Context menu support to bookmark current tab with a single click.<br>
<em>Pro tip: You can use</em> <strong><em>Ctrl/Cmd + Shift + Y</em></strong> <em>combination to bookmark instantly.</em></li>
<li>Improved internationalization for supported languages.</li>
<li>Improved keyboard accessibility, you can tab your way through all items.</li>
</ul>
<blockquote>
<p><strong>Update April 2017:</strong> Version 2.0.5 is now released to Chrome Web Store that fixes login related issues faced by certain users with the previous version (2.0.3).</p>
</blockquote>
<p>Let us know if you run into issues, or just want to give us some feedback. We’ll follow up soon with our plans for releasing the extension for other browsers. Make sure you follow <a href="https://medium.com/samsung-internet-dev">Samsung Internet Developers</a> on <a href="https://twitter.com/samsunginternet">twitter</a>.</p>
<p><strong>Note:</strong> The Sync functionality is only available for phones logged in with a Samsung Account on a stable release of Samsung Internet, which means that it won’t work with <a href="https://medium.com/samsung-internet-dev/samsung-internet-beta-now-available-without-sign-up-e0d5d4010838#.ntaxejovf">Samsung Internet Beta</a> (v5.4) on non-samsung phones, just yet.</p>]]></content:encoded>
</item>

<item>
<title><![CDATA[Living in Suwon, Korea]]></title>
<link>https://bogas04.github.io/blog/living-in-suwon-korea-11-27-2016</link>
<guid>https://bogas04.github.io/blog/living-in-suwon-korea-11-27-2016</guid>
<pubDate>Sun, 27 Nov 2016 00:00:00 GMT</pubDate>
<description><![CDATA[First of all, let me clear out that I’m not a blogger, and definitely not asequipped in English as I would say I’m in JavaScript.]]></description>
<content:encoded><![CDATA[<p>First of all, let me clear out that I’m not a blogger, and definitely not as equipped in English as I would say I’m in JavaScript. Now that’s been established, let’s talk about me, Samsung and Suwon.</p>
<p><img src="https://bogas04.github.io/img/blog/south-korea-xmas.jpg" alt="Christmas celebrations in Seoul, South Korea"></p>
<h3 id="user-content-me"><a href="https://bogas04.github.io/blog/living-in-suwon-korea-11-27-2016#me" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Me</h3>
<p>A Sikh Male rocking sick beard with a Punjabi Turban, and Orange Gaatra that holds a long&nbsp;<a href="https://en.wikipedia.org/wiki/Kirpan">Kirpan</a>.</p>
<p><img src="https://bogas04.github.io/img/blog/1__sCPawDEOQs9dTX5wPN4e__A.jpeg" alt="A Sikh Male rocking sick beard with a Punjabi Turban, and Orange Gaatra that holds a long&nbsp;Kirpan"></p>
<p>I’m a <a href="http://www.sikhiwiki.org/index.php/Main_Page">Sikh</a> male who graduated from <a href="http://nsit.ac.in/">NSIT</a>, <a href="https://en.wikipedia.org/wiki/New_Delhi">New Delhi</a> in Computer Engineering discipline in 2016. Before starting off my engineering career, I’d developed horrible Visual Basic applications and knew exactly what I wanted to do in my life; create <a href="https://www.youtube.com/watch?v=d5LzH2sh1rk">stupid</a> UIs with no knowledge of design. After joining the college, I made a very sane unintentional decision of learning JavaScript to make websites/webapps. Back then, JavaScript wasn’t even looked upon as a serious language, NodeJS was in its baby years of popularity, and using jQuery was cool. But I don’t know why, I kept coding in it. And this very thing and some luck landed me up in a summer internship at Samsung R&amp;D Institute, Bangalore where I worked on a NodeJS project. And that lead me to,,, wait, I need to start a Samsung heading.</p>
<h3 id="user-content-samsung"><a href="https://bogas04.github.io/blog/living-in-suwon-korea-11-27-2016#samsung" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Samsung</h3>
<p><img src="https://bogas04.github.io/img/blog/1____g5l9BybNJiUO22dNPEeYg.jpeg" alt="Samsung Digital City,&nbsp;Suwon">
Samsung Digital City,&nbsp;Suwon</p>
<p>Yeah, so that lead me to a full time job at SRIB, which again lead me to Suwon, the place where HQ of Samsung Electronics resides. I’m part of Web Team in SRIB, that is also responsible for <a href="https://medium.com/samsung-internet-dev">Samsung Internet</a>, and I am currently overhauling the <a href="https://chrome.google.com/webstore/detail/samsung-sync/epejdmjgfibjaffbmojllapapjejipkh?hl=en">Samsung Sync extension</a>. Expect a major update soon!</p>
<p>It’s funny how the ship of JavaScript sailed me across from one island to another. And now, I’m typing this from Suwon as my last week of business trip is about to start.</p>
<p>I love the wide range of technologies that exist within Samsung Electronics. This provides a great canvas for freshers to try and experiment with all domains without having to switch jobs.</p>
<h3 id="user-content-korea"><a href="https://bogas04.github.io/blog/living-in-suwon-korea-11-27-2016#korea" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Korea</h3>
<p>This last week has brought several memories of this 2 month stay in Korea, which in turn encouraged me to write this post on a Sunday evening.</p>
<p><img src="https://bogas04.github.io/img/blog/1__ng__tz1ZRfUcuEaSPWdKFdQ.jpeg" alt="Somewhere in&nbsp;Suwon">
Somewhere in&nbsp;Suwon</p>
<p>The country is amazing, it’s a developed nation, which is a thing a citizen of a developing nation would observe first. The racial and social security is really great here, in contrast to west where <a href="https://en.wikipedia.org/wiki/Islamophobia">Islamophobia</a> is a big deal. And the people are really humble. I love how everyone greets you and bows down a little, they take out time to wish you well, and that’s heart warming for a foreigner.</p>
<p><img src="https://bogas04.github.io/img/blog/1__qDzv5NoBmcDetWPiftOj__A.jpeg" alt="Hotel staff at DreamVill">
Hotel staff at DreamVill</p>
<p>I was lucky enough to witness both falls; fall fall and first snowfall, former being a phenomenon that doesn’t really exist in India.</p>
<p><img src="https://bogas04.github.io/img/blog/1__KvkZ__uwm7oa3ENgorLT5ug.jpeg" alt="">
<img src="https://bogas04.github.io/img/blog/1__BrdQH1cUwbrbO6MO7QF__aQ.jpeg" alt="Fall Leaves">
Fall Leaves</p>
<p><img src="https://bogas04.github.io/img/blog/1__zRKNo__JVjQFn2EOCwQ1QNA.gif" alt="Snow Falls">
Snow Falls</p>
<p>However, as a vegetarian I found myself at great discomfort in finding food outside DreamVill that serves Indian cuisine. So for vegetarian/vegan visitors, please bring some packaged food if you’re planning a long visit.</p>
<p><a href="https://www.google.co.kr/maps/place/Hwaseong+Fortress/@37.2807935,127.0102456,15z/data=!4m2!3m1!1s0x0:0x809c61d30ab56214?sa=X&amp;ved=0ahUKEwipktCA7sjQAhWFybwKHUA4B8QQ_BIIgwEwDg">Hwaseong Fortress</a>]</p>
<p><a href="https://bogas04.github.io/img/blog/1__RDHDZhOnDTUKypNH__vp1wQ.jpeg">Imagee of Hwaseong Fortress</a></p>
<p>Some places like <a href="https://www.google.com/maps/place/%ED%8C%8C%EB%A6%AC%EB%B0%94%EA%B2%8C%EB%9C%A8+%EC%98%81%ED%86%B5%EB%89%B4%EC%9B%94%EB%93%9C%EC%A0%90/@37.2536243,127.0674148,15z/data=!4m8!1m2!2m1!1sparis+baguette!3m4!1s0x0:0x794b659d3dad89b8!8m2!3d37.2520187!4d127.0710522?hl=en">Paris Baguette</a>, <a href="https://www.google.com/maps/place/%EB%9A%9C%EB%A0%88%EC%A5%AC%EB%A5%B4/@37.2536913,127.0674148,15z/data=!4m8!1m2!2m1!1sTous+Les+Jours!3m4!1s0x357b44c4c1f2a6bd:0xb1aff268e48c54e2!8m2!3d37.2520193!4d127.0709693?hl=en">Tous Les Jours</a> etc. are good to look for vegan/vegetarian bread or salad sandwiches. If you’re lucky enough, you can find meat-free salads at bakeries and eateries of the like however.</p>
<p><img src="https://bogas04.github.io/img/blog/1__axarHRa8ZbcIwJwJr2xGoA.jpeg" alt="Early Christmas Decorations in&nbsp;Seoul">
Early Christmas Decorations in&nbsp;Seoul</p>
<p>There are various tourist places that you can visit, though I primarily remained near the city. As a Sikh, it was pleasant surprise to find a <a href="https://en.wikipedia.org/wiki/Gurdwara">Gurdwara</a> in the country however. Run by primarily the <a href="https://en.wikipedia.org/wiki/Punjabis">Punjabi</a> community, the Gurdwara is well maintained and open to all. I visited it during lunch time and it was lovely to find everyone enjoying <a href="https://en.wikipedia.org/wiki/Langar_%28Sikhism%29">Langar</a> together on a Sunday noon.</p>
<p><img src="https://bogas04.github.io/img/blog/1__x9oZ2fWNHKVWgEap__5YoCA.jpeg" alt="Image of Gurdwara">
<a href="https://www.google.co.kr/maps/place/Gurudwara+Shri+Singh+Sabha/@37.8185614,127.1303603,15z/data=!4m2!3m1!1s0x0:0x7b23842b65fbbbd4?sa=X&amp;ved=0ahUKEwjH0eHk7MjQAhVRNrwKHfTaBL8Q_BIIggEwCg">Gurdwara Shri Singh Sabha&nbsp;Sahib</a></p>
<h3 id="user-content-closing-note"><a href="https://bogas04.github.io/blog/living-in-suwon-korea-11-27-2016#closing-note" aria-hidden="true" tabindex="-1"><span>🔗 </span></a>Closing Note</h3>
<p>So as I begin packing for my return flight to India, I wish to thank every Korean that has helped me find my way and replied with an <a href="http://www.123rf.com/photo_8638384_serious-and-determined-young-man-makes-an-x-shape-with-his-arms-and-hands-this-could-mean-stop-cross.html">arm cross</a> to my search of vegetarian food. Your country is amazing, and I definitely wish to visit it again, hopefully after learning Korean. Gamsahamnida&nbsp;:)</p>
<p>Stick around to see more random blog posts from this idiot.</p>]]></content:encoded>
</item>
</channel>
</rss>
