{"@attributes":{"version":"2.0"},"channel":{"title":"Rahul Jha","description":"A means to being!","link":"https:\/\/rj722.github.io\/","pubDate":"Fri, 01 May 2020 13:26:41 +0530","lastBuildDate":"Fri, 01 May 2020 13:26:41 +0530","generator":"Jekyll v3.8.6","item":[{"title":"\"isn't a title of this post\" isn't a title of this post","description":"<p>[NOTE: This post originally appeared <a href=\"https:\/\/deepsource.io\/blog\/self-referential\">on\ndeepsource.io<\/a>, and has been\nposted here with due permission.]<\/p>\n\n<p>In the early part of the last century, when David Hilbert was working on\nstricter formalization of geometry than Euclid, Georg Cantor had worked out a\ntheory of different types of infinities, <i>the theory of sets<\/i>. This\ntheory would soon unveil a series of confusing paradoxes, leading to <a href=\"https:\/\/en.wikipedia.org\/wiki\/Foundations_of_mathematics#Foundational_crisis\">\na\u00a0crisis in the Mathematics community\u00a0<\/a> regarding the stability of the\nfoundational principles of the math of that time.<\/p>\n\n<script src=\"https:\/\/polyfill.io\/v3\/polyfill.min.js?features=es6\"><\/script>\n\n<script id=\"MathJax-script\" async=\"\" src=\"https:\/\/cdn.jsdelivr.net\/npm\/mathjax@3\/es5\/tex-mml-chtml.js\"> <\/script>\n\n<p>Central to these paradoxes was the <em>Russell\u2019s paradox<\/em> (or more generally, as\nwe\u2019d talk about later, the <em>Epimenides Paradox<\/em>). Let\u2019s see what it is.<\/p>\n\n<!--more-->\n\n<p>In those simpler times, you were allowed to define a set if you could describe\nit in English. And, owing to mathematicians\u2019 predilection for self-reference,\nsets could contain other sets.<\/p>\n\n<p>Russell then, came up with this:<\/p>\n\n<p class=\"text-center text-bold\">\n\n\\(R\\)&nbsp; is a set of all the sets which do not contain themselves.\n\n<\/p>\n\n<p>\n\nThe question was \"Does \\(R \\) contain itself?\" If it doesn\u2019t, then according to\nthe second half of the definition it should. But if it does, then it no longer\nmeets the definition.\n\n<\/p>\n\n<p>The same can symbolically be represented as:<\/p>\n\n<p class=\"text-center text-bold\">\n\nLet \\(R = \\{ x \\mid x \\not \\in x \\} \\), then \\(R \\in R \\iff R \\not \\in R \\)\n\n<\/p>\n\n<p>Cue mind exploding.<\/p>\n\n<p>\u201cGrelling\u2019s paradox\u201d is a startling variant which uses adjectives instead of\nsets. If adjectives are divided into two classes, autological\n(self-descriptive) and heterological (non-self-descriptive), then, is\n\u2018heterological\u2019 heterological? Try it!<\/p>\n\n<h3 id=\"epimenides-paradox\">Epimenides Paradox<\/h3>\n\n<p>Or, the so-called <em>Liar Paradox<\/em> was another such paradox which shred apart\nwhatever concept of \u2018computability\u2019 was, at that time - the notion that things\ncould either be true or false.<\/p>\n\n<p>Epimenides was a Cretan, who made one immortal statement:<\/p>\n\n<blockquote>\n  <p>\u201cAll Cretans are liars.\u201d<\/p>\n<\/blockquote>\n\n<p>If all Cretans are liars, and Epimenides was a Cretan, then he was lying when\nhe said that \u201cAll Cretans are liars\u201d. But wait, if he was lying then, how can\nwe \u2018prove\u2019 that he wasn\u2019t lying about lying? Ein?<\/p>\n\n<p><label for=\"mf-mobius\" class=\"margin-toggle\">\u2295<\/label><input type=\"checkbox\" id=\"mf-mobius\" class=\"margin-toggle\" \/><span class=\"marginnote\"><img class=\"fullwidth\" src=\"https:\/\/i.imgur.com\/Cdd6LpT.png\" \/><br \/><\/span><\/p>\n\n<p>This is what makes it a <em>paradox<\/em>: A statement so rudely violating the assumed\ndichotomy of statements into true and false, because if you tentatively think\nit\u2019s true, it backfires on you and make you think that it is false. And a\nsimilar backfire occurs if you assume that the statement is false. Go ahead,\ntry it!<\/p>\n\n<p>If you look closely, there is one common culprit in all of these paradoxes,\nnamely \u2018self-reference\u2019. Let\u2019s look at it more closely.<\/p>\n\n<h3 id=\"strange-loopiness\">Strange Loopiness<\/h3>\n\n<p>If self-reference, or what Douglas Hofstadter - whose prolific work on the\nsubject matter has inspired this blog post - calls \u2018Strange Loopiness\u2019 was the\nsource of all these paradoxes, it made perfect sense to just banish\nself-reference, or anything which allowed it to occur. Russell and Whitehead,\ntwo rebel mathematicians of the time, who subscribed to this point of view, set\nforward and undertook the mammoth exercise, namely <em>\u201cPrincipia Mathematica\u201d<\/em>,\nwhich we as we will see in a little while, was utterly demolished by G\u00f6del\u2019s\nfindings.<\/p>\n\n<p>The main thing which made it difficult to ban self-reference was that it was\nhard to pin point where exactly did the self-reference occur. It may as well be\nspread out over several steps, as in this \u2018expanded\u2019 version of Epimenides:<\/p>\n\n<blockquote>\n  <p>The next statement is a lie.<\/p>\n<\/blockquote>\n\n<blockquote>\n  <p>The previous statement is true.<\/p>\n<\/blockquote>\n\n<p>Russell and Whitehead, in <em>P.M.<\/em> then, came up with a multi-hierarchy set\ntheory to deal with this. The basic idea was that a set of the lowest \u2018type\u2019\ncould only contain \u2018objects\u2019 as members (not sets). A set of the next type\ncould then only either contain objects, or sets of lower types. This,\nimplicitly banished self-reference.<\/p>\n\n<p>Since, all sets must have a type, a set \u2018which contains all sets which are not\nmembers of themselves\u2019 is not a set at all, and thus you can say that Russell\u2019s\nparadox was dealt with.<\/p>\n\n<p>Similarly, if an attempt is made towards applying the expanded Epimenides to\nthis theory, it must fail as well, for the first sentence to make a reference\nto the second one, it has to be hierarchically above it - in which case, the\nsecond one can\u2019t loop back to the first one.<\/p>\n\n<p>Thirty one years after David Hilbert set before the academia to rigorously\ndemonstrate that the system defined in <em>Principia Mathematica<\/em> was both\n<em>consistent<\/em> (contradiction-free) and <em>complete<\/em> (i.e. every true statement\ncould be evaluated to true within the methods provided by <em>P.M.<\/em>), G\u00f6del\npublished his famous Incompleteness Theorem. By importing the Epimenides\nParadox right into the heart of <em>P.M.<\/em>, he proved that not just the\naxiomatic system developed by Russell and Whitehead, but none of the\naxiomatic systems whatsoever were <em>complete<\/em> without being <em>inconsistent<\/em>.<\/p>\n\n<p>Clear enough, <em>P.M.<\/em> lost it\u2019s charm in the realm of academics.<\/p>\n\n<p>Before G\u00f6del\u2019s work too, <em>P.M.<\/em> wasn\u2019t particularly loved as well.<\/p>\n\n<p>Why?<\/p>\n\n<p>It isn\u2019t just limited to this blog post, but we humans, in general, have a diet\nfor self-reference - and this quirky theory severely limits our ability to\nabstract away details - something which we love, not only as programmers, but\nas linguists too - so much so, that the preceding paragraph, \u201cIt isn\u2019t \u2026\n<em>this<\/em> blog \u2026 <em>we<\/em> humans \u2026\u201d would be doubly forbidden because the \u2018right\u2019\nto mention \u2018<em>this blog post\u2019<\/em> is limited only to something which is\nhierarchically above blog posts, \u2018<em>metablog-posts<\/em>\u2019. Secondly, me (presumably a\nhuman) belonging to the class <em>\u2018we\u2019<\/em> can\u2019t mention \u2018<em>we<\/em>\u2019 either.<\/p>\n\n<p>Since, we humans, love self-reference so much, let\u2019s discuss some ways in which\nit can be expressed in written form.<\/p>\n\n<p>One way of making such a strange loop, and perhaps the \u2018simplest\u2019 is using the\nword \u2018this\u2019. Here:<\/p>\n\n<ul>\n  <li>This sentence is made up of eight words.<\/li>\n  <li>This sentence refers to itself, and is therefore useless.<\/li>\n  <li>This blog post is so good.<\/li>\n  <li>This sentence conveys you the meaning of \u2018this\u2019.<\/li>\n  <li>This sentence is a lie. (Epimenides Paradox)<\/li>\n<\/ul>\n\n<p>Another amusing trick for creating a self-reference without using the word\n\u2018this sentence\u2019 is to quote the sentence inside itself.<\/p>\n\n<p>Someone may come up with:<\/p>\n\n<blockquote>\n  <p>The sentence \u2018The sentence contains five words\u2019 contains five words.<\/p>\n<\/blockquote>\n\n<p>But, such an attempt must fail, for to quote a finite sentence inside itself\nwould mean that the sentence is smaller than itself. However, infinite\nsentences can be self-referenced this way.<\/p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>The sentence\n    \"The sentence\n        \"The sentence\n                                ...etc\n                                ...etc\n        is infinitely long\"\n    is infinitely long\"\nis infinitely long\"\n<\/code><\/pre><\/div><\/div>\n\n<p>There\u2019s a third method as well, which you already saw in the title - the Quine\nmethod. The term \u2018Quine\u2019 was coined by Douglas Hofstadter in his book \u201cG\u00f6del\nEscher, Bach\u201d (which heavily inspires this blog post). When using this, the\nself-reference is \u2018generated\u2019 by describing a typographical entity, isomorphic\nto the quine sentence itself. This description is carried in two parts - one is\na set of <em>\u2018instructions\u2019<\/em> about how to \u2018build\u2019 the sentence, and the other, the\n<em>\u2018template\u2019<\/em> contains information about the construction materials required.<\/p>\n\n<p>The Quine version of Epimenides would be:<\/p>\n\n<blockquote>\n  <p>\u201cyields falsehood when preceded by it\u2019s quotation\u201d yields falsehood when preceded by it\u2019s quotation<\/p>\n<\/blockquote>\n\n<p>Before going on with \u2018quining\u2019, let\u2019s take a moment and realize how awfully\npowerful our cognitive capacities are, and what goes in our head when a\ncognitive payload full of self-references is delivered - in order to decipher\nit, we not only need to know the language, but also need to work out the\nreferent of the phrase analogous to \u2018this sentence\u2019 in that language. This\nparsing depends on our complex, yet totally assimilated ability to handle the\nlanguage.<\/p>\n\n<p>The idea of referring to itself is quite mind-blowing, and we keep doing it all\nthe time \u2014 perhaps, why it feels so \u2018easy\u2019 for us to do so. But, we aren\u2019t born\nthat way, we grow that way. This could better be realized by telling someone\nmuch younger \u201cThis sentence is wrong.\u201d. They\u2019d probably be confused - What\nsentence is wrong?. The reason why it\u2019s so simple for self-reference to occur,\nand hence allow paradoxes, in our language, is well, our language. It allows\nour brain to do the heavy lifting of what the author is trying to get through\nus, without being verbose.<\/p>\n\n<p>Back to Quines.<\/p>\n\n<h2 id=\"reproducing-itself\">Reproducing itself<\/h2>\n\n<p>Now, that we are aware of how \u2018quines\u2019 can manifest as self-reference, it would\nbe interesting to see how the same technique can be used by a computer program\nto \u2018reproduce\u2019 itself.<\/p>\n\n<p>To make it further interesting, we shall choose the language most apt for the\npurpose - brainfuck:<\/p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>&gt;&gt;&gt;&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&gt;++++++++[-&gt;++++++++&lt;]&gt;--....[-]&lt;&lt;[&lt;]&lt;&lt;++++++++[-&gt;+++++&gt;++++++++&lt;&lt;]&gt;+++&gt;--&gt;[[-&lt;&lt;&lt;+&gt;.&gt;&gt;]&lt;.[-&gt;+&lt;]&lt;[-&gt;+&lt;]&gt;&gt;&gt;]&lt;&lt;&lt;&lt;[&lt;]&gt;[.&gt;]\n\n<\/code><\/pre><\/div><\/div>\n\n<!-- Here's an EasterEgg: https:\/\/www.youtube.com\/watch?v=F5P6Q7vs_-Y -->\n\n<p>Running that program above produces itself as the output. I agree, it isn\u2019t the\nmost descriptive program in the world, so written in Python below, is the\nnearest we can go to describe what\u2019s happening inside those horrible chains of\n+\u2019s and &gt;\u2019s:<\/p>\n\n<div class=\"language-python highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"n\">THREE_QUOTES<\/span> <span class=\"o\">=<\/span> <span class=\"s\">'\"'<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">3<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">eniuq<\/span><span class=\"p\">(<\/span><span class=\"n\">template<\/span><span class=\"p\">):<\/span> <span class=\"k\">print<\/span><span class=\"p\">(<\/span>\n  <span class=\"n\">f<\/span><span class=\"s\">'{template}({THREE_QUOTES}{template}{THREE_QUOTES})'<\/span><span class=\"p\">)<\/span>\n\n<span class=\"n\">eniuq<\/span><span class=\"p\">(<\/span><span class=\"s\">\"\"\"THREE_QUOTES = '\"' * 3\n\ndef eniuq(template): print(\n  f'{template}({THREE_QUOTES}{template}{THREE_QUOTES})')\n\neniuq\"\"\"<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre><\/div><\/div>\n\n<p>The first line generates <code class=\"highlighter-rouge\">\"\"\"<\/code> on the fly, which marks multiline strings in\nPython.<\/p>\n\n<p>Next two lines define the <code class=\"highlighter-rouge\">eniuq<\/code> function, which prints the argument template\ntwice - once, plain and then surrounded with triple quotes.<\/p>\n\n<p>The last 4 lines cleverly call this function so that the output of the program\nis the source code itself.<\/p>\n\n<p>Since we are printing in an order opposite of quining, the name of the function\nis \u2018quine\u2019 reversed -&gt; <code class=\"highlighter-rouge\">eniuq<\/code> (name stolen from Hofstadter again)<\/p>\n\n<p>Remember the discussion about how self-reference capitalizes on the processor?\nWhat if \u2018quining\u2019 was a built-in feature of the language, providing what we in\nprogrammer lingo call \u2018syntactic sugar\u2019?<\/p>\n\n<p>Let\u2019s assume that an asterisk, <code class=\"highlighter-rouge\">*<\/code> in the brainfuck interpreter would copy the\ninstructions before executing them, what would then be the output of the\nfollowing program?<\/p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>*\n<\/code><\/pre><\/div><\/div>\n\n<p>It\u2019d be an asterisk again. You could make an argument that this is silly, and\nshould be counted as \u2018cheating\u2019. But, it\u2019s the same as relying on the\nprocessor, like using \u201cthis sentence\u201d to refer to this sentence - you rely on\nyour brain to do the inference for you.<\/p>\n\n<p>What if <code class=\"highlighter-rouge\">eniuq<\/code> was a builtin keyword in Python? A perfect self-rep was then\njust be a call away:<\/p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>eniuq('eniuq')\n<\/code><\/pre><\/div><\/div>\n\n<p>What if <code class=\"highlighter-rouge\">quine<\/code> was a verb in the English language? We could reduce a lot of\nexplicit cognitive processes required for inference. The Epimenides paradox\nwould then be:<\/p>\n\n<blockquote>\n  <p>\u201cyields falsehood if quined\u201d yields falsehood if quined<\/p>\n<\/blockquote>\n\n<p>Now, that we are talking about self-rep, here\u2019s one last piece of entertainment\nfor you.<\/p>\n\n<h2 id=\"the-tuppers-self-referential-formula\">The Tupper\u2019s self-referential formula<\/h2>\n\n<p>This formula is defined through an inequality:<\/p>\n\n<p align=\"center\">\n\n\\({1 \\over 2} &lt; \\left\\lfloor \\mathrm{mod}\\left(\\left\\lfloor {y \\over 17} \\right\\rfloor 2^{-17 \\lfloor x \\rfloor - \\mathrm{mod}(\\lfloor y\\rfloor, 17)},2\\right)\\right\\rfloor\\)\n\n<\/p>\n\n<p>\n\nIf you take that absurd thing above, and move around in the cartesian plane for\nthe coordinates \\(0 \\le x \\le 106, k \\le y \\le k + 17\\), where \\(k\\) is a <a href=\"https:\/\/gist.githubusercontent.com\/RJ722\/cad7deff9a11ed927e0979091d45b479\/raw\/dd3b18d6e6b693685724a148f6ce937e6347f587\/544-1.txt\">\n544 digit integer <\/a> (just hold on with me here), color every pixel black for\nTrue, and white otherwise, you'd get:\n\n<\/p>\n\n<figure class=\"fullwidth\"><img src=\"https:\/\/i.imgur.com\/aGouM3u.png\" \/><figcaption><\/figcaption><\/figure>\n\n<p>\n\nThis doesn't end here. If \\(k\\) is now replaced with <a href=\"https:\/\/gist.githubusercontent.com\/RJ722\/cad7deff9a11ed927e0979091d45b479\/raw\/4ab074d235de9e58f10b2d94fe4e9970cb03a6c7\/291.txt\">\nanother integer containing 291 digits<\/a>, we get yours truly:\n\n<\/p>\n\n<figure class=\"fullwidth\"><img src=\"https:\/\/i.imgur.com\/NvPlE33.png\" \/><figcaption><\/figcaption><\/figure>\n","pubDate":"Mon, 20 Jan 2020 00:00:00 +0530","link":"https:\/\/rj722.github.io\/articles\/20\/self-referential-blog-post","guid":"https:\/\/rj722.github.io\/articles\/20\/self-referential-blog-post","category":"blog"},{"title":"A panegyric about my mentor, Omar Bhai","description":"<p>I was still up at this unearthly hour, thinking about life for a while now - fumbled thoughts about where I had come, where I started, and quite expectedly, Omar Bhai, your name popped in.<\/p>\n\n<p>The stream continued. I started thinking about everything I\u2019ve learned from you and was surprised with merely the sheer volume of thoughts that followed. I felt nostalgic!<\/p>\n\n<p>I made a mental note to type this out the next day.<\/p>\n\n<!--more-->\n\n<p>I wanted to do this when we said our final goodbyes and you left for the States, but thank God, I didn\u2019t - I knew that I would miss you, but never could I have guessed that it would be so overwhelming - I would\u2019ve never written it as passionately as I do today.<\/p>\n\n<p>For those of you who don\u2019t already know him, here\u2019s a picture:<\/p>\n\n<p><img src=\"https:\/\/i.imgur.com\/f5GRyet.png\" alt=\"Omar Khursheed\" \/><\/p>\n\n<p>I\u2019m a little emotional right now, so please bear with me.<\/p>\n\n<p>You have been warned - the words \u201cthank you\u201d and \u201cthanks\u201d appear irritatingly often below. I tried changing, but none other has quite the same essence.<\/p>\n\n<h2 id=\"how-do-i-begin-thanking-you\">How do I begin thanking you?<\/h2>\n\n<p>Well, let\u2019s start with this - thank you for kicking me on my behind, albeit civilly, whenever I would speak nuisance (read chauvinism). I can\u2019t thank you enough for that!<\/p>\n\n<p>I still can\u2019t quite get how you tolerated the bigot I was and managed to be calm and polite. Thank You for teaching me what tolerance is!<\/p>\n\n<p>Another thing which I learnt from you was what it meant to be privileged. I can no longer see things the way I used to, and this has made a huge difference. Thank You!<\/p>\n\n<p>I saw you through your bad times and your good. The way you tackled problems, and how easy you made it look. Well, it taught me [<em>drum roll<\/em>] how to think (before acting and not the other way round). Thank You for that too!<\/p>\n\n<p>And, thank you for buying me books, and even more so, lending away so many of them! and even more so, educating me about why to read books and how to read them. I love your collection.<\/p>\n\n<p>You showed all of us, young folks, how powerful effective communication is. Thank You again for that! I know, you never agree on this, but you are one hell of a speaker. I\u2019ve always been a fan of you and your puns.<\/p>\n\n<p>I wasn\u2019t preparing for the GRE, but I sat in your sessions anyways, just to see you speak. The way you connect with the audience is just brilliant.<\/p>\n\n<p>For all the advice you gave me on my relationships with people - telling me to back off when I was being toxic and dragging me off when I was on the receiving side - I owe you big time. Thank You!<\/p>\n\n<p>Also, a hearty thank you for making me taste the best thing ever - yes, fried cheese it is. :D<\/p>\n\n<p><img src=\"https:\/\/i.imgur.com\/uwuWXic.jpg\" alt=\"Fried Cheese\" \/><\/p>\n\n<p>Thank You for putting your trust and confidence in me!<\/p>\n\n<p>Thank you for all of this, and much more!<\/p>\n\n<p>Yours Truly,\nRahul<\/p>\n","pubDate":"Wed, 25 Sep 2019 00:00:00 +0530","link":"https:\/\/rj722.github.io\/articles\/19\/panegyric-omar-bhai","guid":"https:\/\/rj722.github.io\/articles\/19\/panegyric-omar-bhai","category":"blog"},{"title":"The [deceptive] power of visual explanation","description":"<!--more-->\n\n<p>Quite recently, I came across Jay Alammar\u2019s, rather beautiful blog post, <a href=\"https:\/\/jalammar.github.io\/visual-numpy\/\">\u201cA\nVisual Intro to NumPy &amp; Data Representation\u201d<\/a>.<\/p>\n\n<p>Before reading this, whenever I had to think about an array:<\/p>\n\n<div class=\"language-python highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>\n<span class=\"n\">In<\/span> <span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]:<\/span> <span class=\"kn\">import<\/span> <span class=\"nn\">numpy<\/span> <span class=\"k\">as<\/span> <span class=\"n\">np<\/span>\n\n<span class=\"n\">In<\/span> <span class=\"p\">[<\/span><span class=\"mi\">2<\/span><span class=\"p\">]:<\/span> <span class=\"n\">data<\/span> <span class=\"o\">=<\/span> <span class=\"n\">np<\/span><span class=\"o\">.<\/span><span class=\"n\">array<\/span><span class=\"p\">([<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"mi\">3<\/span><span class=\"p\">])<\/span>\n\n<span class=\"n\">In<\/span> <span class=\"p\">[<\/span><span class=\"mi\">3<\/span><span class=\"p\">]:<\/span> <span class=\"n\">data<\/span>\n<span class=\"n\">Out<\/span><span class=\"p\">[<\/span><span class=\"mi\">3<\/span><span class=\"p\">]:<\/span> <span class=\"n\">array<\/span><span class=\"p\">([<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"mi\">3<\/span><span class=\"p\">])<\/span>\n<\/code><\/pre><\/div><\/div>\n\n<p>I used to create a mental picture somewhat like this:<\/p>\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>\n       \u250c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2510\ndata = \u2502  1 \u2502  2 \u2502  3 \u2502\n       \u2514\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2518\n<\/code><\/pre><\/div><\/div>\n\n<p>But Jay, on the other hand, uses a vertical stack for representing the same array.<\/p>\n\n<figure class=\"fullwidth\"><img src=\"https:\/\/jalammar.github.io\/images\/numpy\/numpy-array.png\" \/><figcaption>Image\nfrom <a href=\"https:\/\/jalammar.github.io\/visual-numpy\/\"> Jay's blog post. <\/a>\n<\/figcaption><\/figure>\n\n<p>At the first glance, and owing to the beautiful graphics Jay has created, it\nmakes perfect sense.<\/p>\n\n<p>Now, if you had only seen this image, and I ask you the dimensions of <code class=\"highlighter-rouge\">data<\/code>,\nwhat would your answer be?<\/p>\n\n<p>The mathematician inside you barks <code class=\"highlighter-rouge\">(3, 1)<\/code>.<\/p>\n\n<p>But, to my surprise, this wasn\u2019t the answer:<\/p>\n\n<div class=\"language-python highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>\n<span class=\"n\">In<\/span> <span class=\"p\">[<\/span><span class=\"mi\">4<\/span><span class=\"p\">]:<\/span> <span class=\"n\">data<\/span><span class=\"o\">.<\/span><span class=\"n\">shape<\/span>\n<span class=\"n\">Out<\/span><span class=\"p\">[<\/span><span class=\"mi\">4<\/span><span class=\"p\">]:<\/span> <span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"p\">,)<\/span>\n<\/code><\/pre><\/div><\/div>\n\n<p><code class=\"highlighter-rouge\">(3, )<\/code> eh? wondering, what would a <code class=\"highlighter-rouge\">(3, 1)<\/code> array look like?<\/p>\n\n<div class=\"language-python highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>\n<span class=\"n\">In<\/span> <span class=\"p\">[<\/span><span class=\"mi\">5<\/span><span class=\"p\">]:<\/span> <span class=\"n\">data<\/span><span class=\"o\">.<\/span><span class=\"n\">reshape<\/span><span class=\"p\">((<\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span> <span class=\"mi\">1<\/span><span class=\"p\">))<\/span>\n<span class=\"n\">Out<\/span><span class=\"p\">[<\/span><span class=\"mi\">5<\/span><span class=\"p\">]:<\/span>\n<span class=\"n\">array<\/span><span class=\"p\">([[<\/span><span class=\"mi\">1<\/span><span class=\"p\">],<\/span>\n       <span class=\"p\">[<\/span><span class=\"mi\">2<\/span><span class=\"p\">],<\/span>\n       <span class=\"p\">[<\/span><span class=\"mi\">3<\/span><span class=\"p\">]])<\/span>\n<\/code><\/pre><\/div><\/div>\n\n<p>Hmm, This begs the question: what is the difference between an array of shape\n<code class=\"highlighter-rouge\">(R, )<\/code> and <code class=\"highlighter-rouge\">(R, 1)<\/code>. A little bit of research landed me at <a href=\"https:\/\/stackoverflow.com\/a\/22074424\/6426752\">this answer on\nStackOverflow<\/a>. Let\u2019s see:<\/p>\n\n<blockquote>\n  <p>The best way to think about NumPy arrays is that they consist of two parts, a\n<em>data buffer<\/em> which is just a block of raw elements, and a <em>view<\/em> which\ndescribes how to interpret the data buffer.<\/p>\n<\/blockquote>\n\n<blockquote>\n  <p>For example, if we create an array of 12 integers:<\/p>\n\n<\/blockquote>\n\n<div class=\"language-python highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>\n<span class=\"o\">&gt;&gt;&gt;<\/span> <span class=\"n\">a<\/span> <span class=\"o\">=<\/span> <span class=\"n\">numpy<\/span><span class=\"o\">.<\/span><span class=\"n\">arange<\/span><span class=\"p\">(<\/span><span class=\"mi\">12<\/span><span class=\"p\">)<\/span>\n<span class=\"o\">&gt;&gt;&gt;<\/span> <span class=\"n\">a<\/span>\n<span class=\"n\">array<\/span><span class=\"p\">([<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span>  <span class=\"mi\">1<\/span><span class=\"p\">,<\/span>  <span class=\"mi\">2<\/span><span class=\"p\">,<\/span>  <span class=\"mi\">3<\/span><span class=\"p\">,<\/span>  <span class=\"mi\">4<\/span><span class=\"p\">,<\/span>  <span class=\"mi\">5<\/span><span class=\"p\">,<\/span>  <span class=\"mi\">6<\/span><span class=\"p\">,<\/span>  <span class=\"mi\">7<\/span><span class=\"p\">,<\/span>  <span class=\"mi\">8<\/span><span class=\"p\">,<\/span>  <span class=\"mi\">9<\/span><span class=\"p\">,<\/span> <span class=\"mi\">10<\/span><span class=\"p\">,<\/span> <span class=\"mi\">11<\/span><span class=\"p\">])<\/span>\n<\/code><\/pre><\/div><\/div>\n\n<blockquote>\n\n  <p>Then <code class=\"highlighter-rouge\">a<\/code> consists of a data buffer, arranged something like this:<\/p>\n<\/blockquote>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>\n \u250c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2510\n \u2502  0 \u2502  1 \u2502  2 \u2502  3 \u2502  4 \u2502  5 \u2502  6 \u2502  7 \u2502  8 \u2502  9 \u2502 10 \u2502 11 \u2502\n \u2514\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2518\n<\/code><\/pre><\/div><\/div>\n\n<blockquote>\n  <p>and a view which describes how to interpret the data:<\/p>\n<\/blockquote>\n\n<div class=\"language-python highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>\n    <span class=\"o\">&gt;&gt;&gt;<\/span> <span class=\"n\">a<\/span><span class=\"o\">.<\/span><span class=\"n\">flags<\/span>\n      <span class=\"n\">C_CONTIGUOUS<\/span> <span class=\"p\">:<\/span> <span class=\"bp\">True<\/span>\n      <span class=\"n\">F_CONTIGUOUS<\/span> <span class=\"p\">:<\/span> <span class=\"bp\">True<\/span>\n      <span class=\"n\">OWNDATA<\/span> <span class=\"p\">:<\/span> <span class=\"bp\">True<\/span>\n      <span class=\"n\">WRITEABLE<\/span> <span class=\"p\">:<\/span> <span class=\"bp\">True<\/span>\n      <span class=\"n\">ALIGNED<\/span> <span class=\"p\">:<\/span> <span class=\"bp\">True<\/span>\n      <span class=\"n\">UPDATEIFCOPY<\/span> <span class=\"p\">:<\/span> <span class=\"bp\">False<\/span>\n    <span class=\"o\">&gt;&gt;&gt;<\/span> <span class=\"n\">a<\/span><span class=\"o\">.<\/span><span class=\"n\">dtype<\/span>\n    <span class=\"n\">dtype<\/span><span class=\"p\">(<\/span><span class=\"s\">'int64'<\/span><span class=\"p\">)<\/span>\n    <span class=\"o\">&gt;&gt;&gt;<\/span> <span class=\"n\">a<\/span><span class=\"o\">.<\/span><span class=\"n\">itemsize<\/span>\n    <span class=\"mi\">8<\/span>\n    <span class=\"o\">&gt;&gt;&gt;<\/span> <span class=\"n\">a<\/span><span class=\"o\">.<\/span><span class=\"n\">strides<\/span>\n    <span class=\"p\">(<\/span><span class=\"mi\">8<\/span><span class=\"p\">,)<\/span>\n    <span class=\"o\">&gt;&gt;&gt;<\/span> <span class=\"n\">a<\/span><span class=\"o\">.<\/span><span class=\"n\">shape<\/span>\n    <span class=\"p\">(<\/span><span class=\"mi\">12<\/span><span class=\"p\">,)<\/span>\n<\/code><\/pre><\/div><\/div>\n\n<blockquote>\n  <p>Here the <em>shape<\/em> <code class=\"highlighter-rouge\">(12,)<\/code> means the array is indexed by a single index which\nruns from 0 to 11. Conceptually, if we label this single index <code class=\"highlighter-rouge\">i<\/code>, the array\n<code class=\"highlighter-rouge\">a<\/code> looks like this:<\/p>\n\n  <div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>i= 0    1    2    3    4    5    6    7    8    9   10   11\n  \u250c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2510\n  \u2502  0 \u2502  1 \u2502  2 \u2502  3 \u2502  4 \u2502  5 \u2502  6 \u2502  7 \u2502  8 \u2502  9 \u2502 10 \u2502 11 \u2502\n  \u2514\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2518\n<\/code><\/pre><\/div>  <\/div>\n\n  <p>If we <a href=\"http:\/\/docs.scipy.org\/doc\/numpy\/reference\/generated\/numpy.reshape.html\">reshape<\/a> an array, this doesn\u2019t change the data buffer.\nInstead, it creates a new view that describes a different way to interpret the\ndata. So after:<\/p>\n\n  <div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>&gt;&gt;&gt; b = a.reshape((3, 4))\n<\/code><\/pre><\/div>  <\/div>\n\n  <p>the array <code class=\"highlighter-rouge\">b<\/code> has the same data buffer as <code class=\"highlighter-rouge\">a<\/code>, but now it is indexed by <em>two<\/em>\nindices which run from 0 to 2 and 0 to 3 respectively. If we label the two\nindices <code class=\"highlighter-rouge\">i<\/code> and <code class=\"highlighter-rouge\">j<\/code>, the array <code class=\"highlighter-rouge\">b<\/code> looks like this:<\/p>\n<\/blockquote>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>\ni= 0    0    0    0    1    1    1    1    2    2    2    2\nj= 0    1    2    3    0    1    2    3    0    1    2    3\n\u250c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2510\n\u2502  0 \u2502  1 \u2502  2 \u2502  3 \u2502  4 \u2502  5 \u2502  6 \u2502  7 \u2502  8 \u2502  9 \u2502 10 \u2502 11 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2518\n<\/code><\/pre><\/div><\/div>\n\n<p>So, if were to actually have a <code class=\"highlighter-rouge\">(3, 1)<\/code> matrix, we would have the exact same\nstack representation as a <code class=\"highlighter-rouge\">(3, )<\/code> matrix, thus creating the confusion.<\/p>\n\n<p>So, what about the horizontal representation?<\/p>\n\n<p>An argument can be made that the horizontal representation can be misinterpreted\nas a <code class=\"highlighter-rouge\">(1, 3)<\/code> matrix, our brains are so accustomed to seeing it as 1-D array,\nthat it is almost never the case (at least with folks who have worked with\nPython before).<\/p>\n\n<p>Of course, it all makes perfect sense now, but it did take me a while to figure\nout what exactly was going under the hood here.<\/p>\n\n<p><label for=\"margin-figure-id\" class=\"margin-toggle\">\u2295<\/label><input type=\"checkbox\" id=\"margin-figure-id\" class=\"margin-toggle\" \/><span class=\"marginnote\"><img class=\"fullwidth\" src=\"https:\/\/i.stack.imgur.com\/4lunM.gif\" \/><br \/>Visual\nExplanation of Fourier Series - Decomposition of a square wave into a sum of\ninfinite sinusoids. From <a href=\"https:\/\/math.stackexchange.com\/a\/736986\"> this\nanswer on math.stackexchange.com<\/a> <\/span><\/p>\n\n<p>I also realized that while it is <a href=\"https:\/\/math.stackexchange.com\/questions\/733754\/visually-stunning-math-concepts-which-are-easy-to-explain\"> hugely helpful to visualize <\/a> something\nwhen learning about it, but one should always take the visual representation\nwith a grain of salt. As <a href=\"https:\/\/math.stackexchange.com\/questions\/743067\/visually-deceptive-proofs-which-are-mathematically-wrong\">we can see, they are not entirely accurate<\/a>.<\/p>\n\n<p>For now, I\u2019m sticking to my prior way of picturing a 1-D array as a horizontal\nlist to avoid the confusion. I shall update the blog if I find anything\notherwise.<\/p>\n\n<p>My point is <em>not<\/em> that Jay\u2019s drawings are flawed, but how susceptible we are to\nvisual deceptions. In this case, it was relatively easier to figure out, because\nit was code, which forces one to pay attention to each and every detail, however\nminor it may be.<\/p>\n\n<p>After all, human brain, prone to so many biases, taking shortcuts for nearly\nevery decision we make (thus leaving room for sanity) isn\u2019t anywhere near as\nperfect as it thinks it is.<\/p>\n\n","pubDate":"Mon, 22 Jul 2019 00:00:00 +0530","link":"https:\/\/rj722.github.io\/articles\/19\/visual-explanation","guid":"https:\/\/rj722.github.io\/articles\/19\/visual-explanation","category":"blog"},{"title":"My Experience with OBM","description":"<p>If you want an overview about OBM, please <a href=\"\/articles\/19\/obm\"> read my post on the same <\/a>.<\/p>\n\n<p>I\u2019ve participated in three sprints until now, in which I\u2019ve completely failed\nmyself, but I\u2019ve already experiencing a drastic changes in my habits, which is\ngood.<\/p>\n\n<p>Here is what I\u2019ve learned from this short, but significant experience:<\/p>\n\n<!--more-->\n\n<p>First and foremost, the structure of OBM forces you to formalize things. You\nneed to setup goals for yourself. Even better is that the setup makes it very\ndifficult to be vague. You\u2019ve to setup smaller tasks you need to achieve in\norder to complete the goal. The research, which is required for listing these\ntasks (thus, providing you with a big picture), getting a correct estimate of\ntime required, helps you plan efficiently.<\/p>\n\n<p>The next thing is priority - what do you decide to do now. I tend to perform\nbetter, if I\u2019ve only 3 things on my TODO list, rather than 10. And OBM\naccommodates that - Send a list of all the tasks you want to work for the next\n15 days, and then spend time doing them, rather than managing your list.<\/p>\n\n<p>The difficult thing about writing that blog post you\u2019d been thinking about for\na week, or deciphering the math equation which just popped out of nowhere in\nthat paper often isn\u2019t actually writing, or performing an analysis. It\u2019s taking\nout dedicated time from your time-poor schedule just for this. Once you get\nstarted, it\u2019s way easier.<\/p>\n\n<p>A nice analogy to this argument - the hardest part of going to a gym is actually\nphysically going to the gym. Once you\u2019re there all geared, and warmed up,\nexercise are much more fun. Getting over this initialization barrier is a must.\nThe way I manage this is having slots in my schedule named \u201cOBM\u201d, where I\n<strong>only<\/strong> complete the tasks I\u2019ve mentioned for OBM. No, you aren\u2019t allowed to\nbrowse through twitter during that time - just start grinding, and you shall\nreap the produce afterwards.<\/p>\n\n<p>One other important behavior I\u2019ve observed is misalignment between what I\nbelieve I\u2019m interested in, and how much I can afford to work towards it. If\nrepeatedly, I find myself not indulging with the task, I know it\u2019s not made for\nme and quit early (thus saving my time and resources to further go down the\ndrain. More about this in <a href=\"https:\/\/www.goodreads.com\/book\/show\/324748.The_Dip\">\u201cThe Dip\u201d by Seth Godin<\/a>).<\/p>\n\n<h2 id=\"conclusion\">Conclusion<\/h2>\n\n<p>OBM serves as a great tool for introspection, monitoring one\u2019s progress and\ngetting things done. As side \u2018effects\u2019, it also gives you a taste of\nprofessionalism, punctuality and reporting relationships - a complete package\naimed towards self improvement. \\o\/<\/p>\n\n<p>But, if you\u2019re overwhelmed with the notion of public accountability, just yet,\nI\u2019d recommend you to run your own personal OBM and see the difference. If you\nwant anymore advice, feel free to contact me (RJ722 on #dgplug, freenode)<\/p>\n\n","pubDate":"Fri, 19 Jul 2019 00:00:00 +0530","link":"https:\/\/rj722.github.io\/articles\/19\/experience-with-obm","guid":"https:\/\/rj722.github.io\/articles\/19\/experience-with-obm","category":"blog"},{"title":"Operation Blue Moon","description":"<p>It\u2019s been a couple of years since I read <a href=\"http:\/\/www.shakthimaan.com\/what-to-do.html\">\u201ci want 2 do project tell me wat 2 do\u201d<\/a>, which then landed me on the home page of <a href=\"https:\/\/gitlab.com\/shakthimaan\/operation-blue-moon\/\">Operation Blue Moon (OBM)<\/a>, a project run single-handedly by the author of the book - <a href=\"http:\/\/shakthimaan.com\/\">Shakthi Kannan (mbuf)<\/a>. It is aimed towards time management and getting things done.<\/p>\n\n<p>The project not only borrows it\u2019s name, but also the spirit of discipline, from our miliary counterparts. The practices here, built upon Shakthi\u2019s years of experience of dealing with people trying, and failing, and learning from their mistakes, regarding time management.<\/p>\n\n<!--more-->\n\n<!--\nDISCLAIMER: With this blog, I mean to give an overview of what were my takeaways\nwith OBM, in no way this serves as a definitive guide about how you should go about\nattempting it. One thing is for sure,\n-->\n\n<p>OBM, at it\u2019s core, provides one with a framework (the ability to define WHY, WHAT,\nWHEN and HOW) to align their thoughts, expectations and action practically,\nalong with the ability to monitor your success. How does it do so? Read on.<\/p>\n\n<blockquote>\n  <p>It\u2019s difficult. It\u2019s this difficulty that creates the scarcity and you, the winner.<\/p>\n<\/blockquote>\n\n<p>Every participant of OBM has a <code class=\"highlighter-rouge\">plan<\/code> file <label for=\"sn-id-plan\" class=\"margin-toggle sidenote-number\"><\/label><input type=\"checkbox\" id=\"sn-id-plan\" class=\"margin-toggle\" \/><span class=\"sidenote\">every plan\nis inside a particular track (theme), eg. data scientist, devops, etc. - this\nserves as WHY <\/span> (an emacs org file), which enlists their goals - long term,\nshort term, secondary, etc. - all goals - The WHAT.<\/p>\n\n<p>Then, under each subsequent heading, define what tasks do you need to do in\norder to achieve that goal - The HOW. The tasks have the following propoerties:<\/p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>*** TODO Write one blog post\n    :PROPERTIES:\n    :ESTIMATED: 3\n    :ACTUAL:\n    :OWNER: RJ722\n    :ID: WRITE.1562247371\n    :TASKID: WRITE.1562247371\n    :END:\n<\/code><\/pre><\/div><\/div>\n\n<p><code class=\"highlighter-rouge\">ESTIMATED<\/code> - The time you estimate you would take for completing the task.<\/p>\n\n<p><code class=\"highlighter-rouge\">ACTUAL<\/code> - The actual amount it takes for you to complete it.<\/p>\n\n<p><code class=\"highlighter-rouge\">OWNER<\/code>, <code class=\"highlighter-rouge\">ID<\/code> and <code class=\"highlighter-rouge\">TASKID<\/code> are there for better visualizations. (more on this\nlater)<\/p>\n\n<p>I\u2019ve the following function (courtesy of <a href=\"http:\/\/shakthimaan.com\/\">mbuf<\/a>) in my\n<a href=\"http:\/\/spacemacs.org\/\">spacemacs<\/a> config to help me generate these tasks:<\/p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>\n  (define-skeleton insert-org-entry\n    \"Prompt for task, estimate and category\"\n    nil\n    '(setq task  (skeleton-read \"Task: \"))\n    '(setq estimate  (skeleton-read \"Estimate: \"))\n    '(setq category (skeleton-read \"Category: \"))\n    '(setq timestamp (format-time-string \"%s\"))\n    \"*** TODO \" task \\n\n    \":PROPERTIES:\" \\n\n    \":ESTIMATED: \" estimate \\n\n    \":ACTUAL:\" \\n\n    \":OWNER: RJ722\" \\n\n    \":ID: \" category \".\" timestamp \\n\n    \":TASKID: \" category \".\" timestamp \\n\n    \":END:\")\n<\/code><\/pre><\/div><\/div>\n\n<p>The more important question is WHEN. Here\u2019s where the \u2018sprints\u2019 chime-in. If\nyou\u2019re participating in OBM, you\u2019re always sprinting (which makes perfect sense,\nsince ideally you wouldn\u2019t want yourself \u2018unmanaging\u2019 your time). A sprint,\ngenerally lasts for around 14-18 days. Before the sprint starts, move the tasks\nyou want to get done in that sprint, under it\u2019s \u2018tab\u2019 (which exists in the plan\nfile, <a href=\"https:\/\/gitlab.com\/shakthimaan\/operation-blue-moon\/blob\/master\/plan\/data-scientist\/RJ722.org\">an example here<\/a>). You also need to enter an average amount\nof time you can dedicate on a per day basis for this sprint.<\/p>\n\n<p>Shakthi would then move such tasks from all participants to a file dedicated to\nthat sprint. The participants can now clock their tasks (track the amount of\ntime they have spend doing each of these tasks) - in emacs\u2019 org mode\n(<code class=\"highlighter-rouge\">org-clock-in<\/code>, <code class=\"highlighter-rouge\">org-clock-out<\/code>).<\/p>\n\n<p>If you have done everything until now correctly, you should have a holistic view\nof how well your performance was for the last sprint. And, <em>this<\/em> is the most\nimportant step. Introspection - See what you did you wrong, what factor did you\nforget to take into account - how much was the difference between the actual and\nexpected time of completion. Were you not able to complete all the tasks - why?\nwhat could you do to improve your estimates?<\/p>\n\n<p>You don\u2019t even have to do this formally (although, it helps). Just doing the\nwork, clocking it, and sending it over is enough to spark an introspective\nimpulse. Just stick with the plan long enough and you\u2019d see improvements. You\u2019d\nsee major improvements. I want to attribute the reason for OBM\u2019s success to\nit\u2019s simplicity, but it really is the discipline, showing up everyday and doing\nthe work.<\/p>\n\n<p>If you currently find yourself in a position, where it feels like you\u2019re stuck -\nyou know what you want to do, but there\u2019s this \u2018something\u2019 stopping you, and it\nfeels forever since you\u2019ve been wanting to do this thing, but there\u2019s been no\ntangible progress so far. Well, then OBM is exactly the right thing for you.\nWith this framework, you\u2019re forced to formalize things, diagnose the \u2018something\u2019\nstopping you, make changes to your current schedule and to see the different\nbetween the direction you aim to go towards and the one where you\u2019re heading\n(with your current planning).<\/p>\n\n<p>Lastly, I want to thank <a href=\"http:\/\/shakthimaan.com\/\">Shakthi<\/a> for all the energy and\nmotivation he\u2019s been pumping into the project himself. Thank you so much\nShakthi!<\/p>\n\n<p>Have fun experiencing OBM!<\/p>\n\n","pubDate":"Fri, 12 Jul 2019 00:00:00 +0530","link":"https:\/\/rj722.github.io\/articles\/19\/obm","guid":"https:\/\/rj722.github.io\/articles\/19\/obm","category":"blog"},{"title":"Using Weechat with Glowing Bear for IRC","description":"<p><span class=\"newthought\">Last<\/span>  month, I had a new addition to my toolbox - <a href=\"https:\/\/www.glowing-bear.org\/#!\/\">Glowing\nBear<\/a>, which has been a really nice improvement, allowing me to access\nWeechat (hosted on a server) through my browser. Here\u2019s how I set it up.<\/p>\n\n<!--more-->\n\n<p>But, before we begin - the curious folks might ask, <i>\u201cWhat had you been using\nall this time?\u201d<\/i><\/p>\n\n<p>Previously, I could directly ssh <label for=\"ssh-id\" class=\"margin-toggle sidenote-number\"><\/label><input type=\"checkbox\" id=\"ssh-id\" class=\"margin-toggle\" \/><span class=\"sidenote\">using mosh - mobile\nshell, which supports intermittent connectivity, which is to say that it allows\nme to retain the session if the network breaks in between. <\/span> into my server,\nand attach to a <a href=\"https:\/\/www.gnu.org\/software\/screen\/\"><code class=\"highlighter-rouge\">screen<\/code><\/a> session which ran weechat, using the command:<\/p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>mosh USERNAME@SERVER_IP -- screen -D -RR weechat\n<\/code><\/pre><\/div><\/div>\n\n<p><i> \u201cThis is pretty neat, why would you want to change it? <\/i><\/p>\n\n<p>\u201cLatency\u201d  -  It was not pleasant, so much so, that I started running two\ninstances of weechat - one locally for chatting, and the one on the\nserver for listening to messages when AFK <label for=\"\" class=\"margin-toggle sidenote-number\"><\/label><input type=\"checkbox\" class=\"margin-toggle\" \/><span class=\"sidenote\"><strong>A<\/strong>way <strong>F<\/strong>rom\n<strong>K<\/strong>eyboard <\/span>. It was getting pretty unmanageable, so I decided to look for\nalternatives. Luckily, one of my friends, <a href=\"https:\/\/blog.lazkani.io\/about_me\/\">Armageddon<\/a>, pointed me\ntowards <a href=\"https:\/\/www.glowing-bear.org\/#!\/\"> Glowing Bear <\/a> - which provides a nice web frontend to weechat.<\/p>\n\n<h2 id=\"setting-up-glowing-bear\">Setting Up Glowing Bear<\/h2>\n\n<p>Glowing Bear has pretty decent documentation available at\n<a href=\"https:\/\/www.glowing-bear.org\/#!\/\">https:\/\/www.glowing-bear.org\/#!\/<\/a>.<\/p>\n\n<p>The basic architecture is somewhat similar to the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Publish%E2%80%93subscribe_pattern\"> pub-sub architecure\n<\/a> - weechat \u2018relays\u2019 (publishes) all messages at a particular port on\na machine where glowing bear can then \u2018listen\u2019 for the messages (subscribe).<\/p>\n\n<p><i> \u201cCan\u2019t other people listen to my messages?\u201d <\/i><\/p>\n\n<p>If you\u2019re running glowing bear with a local instance of weechat, you shouldn\u2019t\nworry too much. However, if connecting to a remote instance, you must encrypt\nall communications between your browser and WeeChat.<\/p>\n\n<p>Since <a href=\"https:\/\/www.glowing-bear.org\/#!\/\">Glowing Bear<\/a> uses TLS for encryption, it means that we need to put\nup a signed certificate. They recommend using <a href=\"https:\/\/letsencrypt.org\/\">Let\u2019s Encrypt<\/a> for\ngetting a certificate, which is really easy. Just install <a href=\"https:\/\/certbot.eff.org\/\">certbot<\/a> and\nrun:<\/p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>certbot certonly --standalone -d DOMAIN_NAME\n<\/code><\/pre><\/div><\/div>\n\n<p>Once the certificates are generated, the only thing was to make them\nvisible to weechat:<\/p>\n\n<div class=\"language-bash highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>\n<span class=\"nb\">mkdir<\/span> <span class=\"nt\">-p<\/span> ~username\/.weechat\/ssl\n<span class=\"nb\">cat<\/span> \/etc\/letsencrypt\/live\/DOMAIN_NAME\/<span class=\"o\">{<\/span>fullchain,privkey<span class=\"o\">}<\/span>.pem <span class=\"o\">&gt;<\/span> ~username\/.weechat\/ssl\/relay.pem\n<span class=\"nb\">chown<\/span> <span class=\"nt\">-R<\/span> username:username ~username\/.weechat\/ssl\/\n<\/code><\/pre><\/div><\/div>\n\n<p>Now, the only issue with me was that I did not have superuser access to the box\nI was running weechat into, and therefore could not access cert files. But,\nAfter talking to my wonderful host at <a href=\"https:\/\/wwww.insomnia247.nl\">insomnia247.nl<\/a>:\n<a href=\"https:\/\/git.insomnia247.nl\/coolfire\">coolFire<\/a>, I came to know that certificates I\u2019m using for my Apache VHost\nshould be enough to encrypt my communication (through port 443) and I need not\nstart an encrypted relay from weechat. coolFire was also gracious enough to\nthrow in some voodoo <label for=\"voodoo-id\" class=\"margin-toggle sidenote-number\"><\/label><input type=\"checkbox\" id=\"voodoo-id\" class=\"margin-toggle\" \/><span class=\"sidenote\">of course, by which I mean that I didn\u2019t\nunderstand it <\/span> and give me a custom URL for running my weechat instance.<\/p>\n\n<p>Now, let\u2019s start a WeeChat relay:<\/p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>\n\/set relay.network.password y0ur_StRonG-pa$sw0rd:of*choice\n\/relay add weechat 9001 # Note that this is NOT encrypted.\n<\/code><\/pre><\/div><\/div>\n\n<p>For connecting to Glowing Bear, I use port 443 - which allows me to encrypt my\nconnection. Note that this isn\u2019t entirely safe, because the fellow users on my\nhost can still monitor port 9001, which is unecrypted and only protected by a\npassword. But, I can manage this level of risk! :-)<\/p>\n\n<h2 id=\"icing-over-cake\">Icing over cake<\/h2>\n\n<p>I run glowing bear on qutebrowser, through which I can access the whole interface\nwithout ever having to leave the comfort of my keyboard. \\o\/<\/p>\n\n<h2 id=\"further-todos\">Further TODO\u2019s<\/h2>\n\n<p>Glowing Bear\u2019s notification system is a little weird - it just stops notifying\nme out of the blue. Remember my friend, <a href=\"https:\/\/blog.lazkani.io\/about_me\/\">Armagaeddon<\/a> - he actually\nhas a weechat plugin for channeling remote notifications to local systems, but\nit turned out that the script will take some additional work to work with macOS.<\/p>\n\n<p>Another thing that I want to do is employ a chat logger - I\u2019ve had some pretty\ninteresting conversation with people, and they just wash away as soon as I\nrestart weechat. This should be pretty easy to do, but I\u2019ve had too much on my\nplate to care right now.<\/p>\n\n","pubDate":"Tue, 02 Jul 2019 00:00:00 +0530","link":"https:\/\/rj722.github.io\/articles\/19\/using-weechat-with-glowing-bear","guid":"https:\/\/rj722.github.io\/articles\/19\/using-weechat-with-glowing-bear","category":"blog"},{"title":"Silk Road, Revolutions and Systems","description":"<p>Today, I read the <a href=\"https:\/\/www.wired.com\/2015\/04\/silk-road-1\/\">story of Silk Road<\/a>: how the young idealist Ross\nUlbricht, tired of chasing success the old school way, found his way around the\ndarkweb to create an online\n<label for=\"sn-id-darknet\" class=\"margin-toggle sidenote-number\"><\/label><input type=\"checkbox\" id=\"sn-id-darknet\" class=\"margin-toggle\" \/><span class=\"sidenote\">As a part of the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Darknet\">darkweb<\/a>, it was\noperated as a <em>Tor<\/em> hidden service which protected the personal privacy of users\nby concealing their details from anyone - from the Government to their ISP -\nconducting network surveillance. Additionally, all payments were made using <a href=\"https:\/\/en.wikipedia.org\/wiki\/Bitcoin\">\nBitcoin <\/a>, a cryptocurrency which provides a certain degree of\nanonymity. <\/span>\nbazaar for the trading of illicit materials, mainly drugs, which he named Silk\nRoad.<\/p>\n\n<p>The aim behind writing this blog post is to think out loud and try to gain\ninsight into the oversights made by some of the most prominent revolutionaries\nin history.<\/p>\n\n<!--more-->\n\n<p>When operating his online empire, Ross would take on the identity of Dread\nPirate Roberts (~DPR) (borrowing the name from <em>\u201cThe Princess Bride\u201d<\/em>, in which\nthe pirate was a mythical character, inhabited by the wearer of the mask).<\/p>\n\n<p>Ross (aka DPR) was having trouble switching back-and-forth between these\ndifferent personalities, the many different facets of which were penned down\nbeautifully <a href=\"https:\/\/www.wired.com\/2015\/04\/silk-road-1\/\">in the original article <\/a>:<\/p>\n\n<blockquote>\n  <p>To Alex, Ross was the cool new roommate; to Julia [his on-and-off girlfriend],\na passionate lover and inspiration; to his family, the perpetual Eagle Scout;\nto Force [undercover DEA Agent posing as a Puerto Rican cartel middlemen], an\nunlikely friend in the night; to Tarbell [FBI Agent investigating his case], a\nsmart kid defeated by his own arrogance. To the Southern District of New York\nUS attorney\u2019s office, Ross was simply the criminal conspirator Dread Pirate\nRoberts.<\/p>\n\n  <p>The likeliest reality is that Ross was all of those things. The open-minded\nseeker who conscientiously tried to pluck trash from a tree was Ross. As was\nthe feverish visionary creating a virtual empire at any cost. Neither truth\ninvalidated the other. Ross and DPR can (and did) coexist.<\/p>\n<\/blockquote>\n\n<p>Ross didn\u2019t exactly dream of building this huge empire of illicit business, but\nit was essentially all baby steps,\n<label for=\"sn-id-baby\" class=\"margin-toggle sidenote-number\"><\/label><input type=\"checkbox\" id=\"sn-id-baby\" class=\"margin-toggle\" \/><span class=\"sidenote\">As B.J. Neblett said \u201cWe are the sum total of our\nexperiences. Those experiences \u2013 be they positive or negative \u2013 make us the\nperson we are, at any given point in our lives. And, like a flowing river, those\nsame experiences, and those yet to come, continue to influence and reshape the\nperson we are, and the person we become. None of us are the same as we were\nyesterday, nor will be tomorrow.\u201d <\/span>\nstemming from the influence Ludwig von Mises - an Austrian economist described\nin the <a href=\"https:\/\/www.wired.com\/2015\/04\/silk-road-1\/\">story<\/a> as \u201ca totem of the modern American libertarian\northodoxy\u201d - had on Ross. According to von Mises, a citizen must have economic\nfreedom to be politically and morally free.<\/p>\n\n<p>If you haven\u2019t read the <a href=\"https:\/\/www.wired.com\/2015\/04\/silk-road-1\/\">story<\/a> yet, please do and then come back! It\nmight easily be one of the most riveting cyber-criminology reports you ever\nread.<\/p>\n\n<p>Joseph Stalin, Adolf Hitler and Ludwig von Mises, they all had an ideology - a\nvision of the ideal world, and a way of bringing peace to world. For them, it\nembodied an expression which society must adhere to lead them towards utter\ncompleteness and happiness.<\/p>\n\n<p>The ideology of Hitler was an ideology of conquest: the \u201cmanifest destiny\u201d of\na superior race to conquer, occupy, and control lands of the \u201clesser\u201d people -\nthe <em>Untermenschen<\/em> - for the sole benefit of the superior race.<\/p>\n\n<p>The ideal society for Stalin was one in which people contribute to it because\nthey feel it is their pleasure and responsibility to do so, and in which people\nonly consume what they need while being mindful of the needs of others.<\/p>\n\n<p>And they executed their ideas, bringing about their \u2018revolution\u2019!<\/p>\n\n<p>Both regimes - the Third Reich and Stalinism - were responsible for millions of\ndeaths and untold amounts of suffering.<\/p>\n\n<p>Although one can argue that Ross Ulbricht\u2019s \u2018revolution\u2019 was nowhere near that\nscale, but that is immaterial to our discussion. It followed the same pattern\nwhich was summed up by Bearman rather well in the original story:<\/p>\n\n<blockquote>\n  <p>It\u2019s an age-old story, the bloom and wilt of revolution. After tearing down\nthe establishment\u2019s walls, the new regime soon realizes the rubble would make\na fine set of gallows. Just as Tarbell thought, all systems are the same. At\nthe beginning of Silk Road, what Ross created was just a system. Then, at a\ncertain point, it became his system\u2014at which moment the system was doomed.<\/p>\n<\/blockquote>\n\n<p><em>Isn\u2019t it strange - How we become the very thing we fight against!<\/em><\/p>\n\n<p><label for=\"mf-id-abyss\" class=\"margin-toggle\">\u2295<\/label><input type=\"checkbox\" id=\"mf-id-abyss\" class=\"margin-toggle\" \/><span class=\"marginnote\"><img class=\"fullwidth\" src=\"\/assets\/img\/abyss.jpg\" \/><br \/>Gazing into Abyss<\/span><\/p>\n\n<blockquote>\n  <p>\u201cBeware that, when fighting monsters, you yourself do not become a monster\u2026\nfor when you gaze long into the abyss. The abyss gazes also into you.\u201d<\/p>\n\n  <p>\u2015 Friedrich W. Nietzsche<\/p>\n<\/blockquote>\n\n<p>For people who prefer examples in fiction over history, what happened with the\n<a href=\"https:\/\/gameofthrones.fandom.com\/wiki\/Season_8\">finale of Game of Thrones<\/a> is a prime example of this pattern.\n[Spoilers Ahead] In light of everything Daenerys [one of show\u2019s main\nprotagonists] accomplished \u2014 birthing dragons out of stone, freeing thousands of\nslaves, helping the Starks defeat an army of ice-zombies \u2014 the viewers first\nhandedly experienced the mindset of a revolutionary who believed that it was\nincumbent upon her to liberate the entire world. Yet it was when she failed to\ndraw a line between herself and her vision\n<label for=\"sn-id-dany\" class=\"margin-toggle sidenote-number\"><\/label><input type=\"checkbox\" id=\"sn-id-dany\" class=\"margin-toggle\" \/><span class=\"sidenote\">The time when she succumbed to her temptations,\nburning alive and hence killing thousands of people in King\u2019s Landing <\/span>\nthat she failed as a ruler, becoming exactly what she had hoped to abolish:\ntyranny. It is worth noting here that all the while she unapologetically burnt\nthe innocent, she was fueled by the exact same idea - to liberate the innocents\nof the world from tyranny.<\/p>\n\n<p>In Ross\u2019s case, the fact that he was feeling uneasy even as DPR (who was a\nrather confident and eloquent character); that he had already begun failing at\nwhat he had intended to do was the first clue that the shadows of doom had\nalready fallen upon him. But he deceived himself in the name of his idea - in\nthe belief that he was doing the <em>right thing<\/em>.<\/p>\n\n<p>Is it really this belief and total devotion to our idea that blinds us, or is it\nthe power and the riches which corrupts us? Or maybe it is a fundamental\nmisunderstanding of our very own conceived idea? Perhaps it might be a skewed\ncombination of all of the above.<\/p>\n\n<p>I do not claim to know the answers to any of the above questions.<\/p>\n\n<p>But let\u2019s look at another revolutionary: Mahatma Gandhi and the revolution\nhe brought about in India.<\/p>\n\n<p><label for=\"mf-id-gandhi\" class=\"margin-toggle\">\u2295<\/label><input type=\"checkbox\" id=\"mf-id-gandhi\" class=\"margin-toggle\" \/><span class=\"marginnote\"><img class=\"fullwidth\" src=\"\/assets\/img\/gandhi.jpg\" \/><br \/>Mahatma Gandhi was\ncalled Bapu (Father) by many, including Jawaharlal Nehru<\/span><\/p>\n\n<p>In response to the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Rowlatt_Act\">Rowlatt Act<\/a> imposed by the British and the\n<a href=\"https:\/\/en.wikipedia.org\/wiki\/Jallianwala_Bagh_massacre\">Jallianwala Bagh Massacre<\/a>, Gandhi lead the non-cooperation\nmovement, appealing to the masses to adopt swadeshi goods and local handicrafts\nto boycott British goods. The movement was based on the principle of <em>Ahimsa<\/em>\n(Non-Violence), and after two years of hard work, it gained full momentum\nin 1922. It seemed that the dream of <em>Swaraj<\/em> (self-governance) was finally\nturning to reality.<\/p>\n\n<p>But giving a face to Gandhi\u2019s fears, cases of violence were reported from\nall over the nation, and after the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Chauri_Chaura_incident\">Chauri-Chaura<\/a>\n<label for=\"sn-id-chauri\" class=\"margin-toggle sidenote-number\"><\/label><input type=\"checkbox\" id=\"sn-id-chauri\" class=\"margin-toggle\" \/><span class=\"sidenote\">A large group of protesters participating in the\nNon-cooperation movement clashed with the police, who opened fire. In\nretaliation, the demonstrators attacked and set fire to a police station,\nkilling all of its occupants. <\/span>\nincident, he decided to call off the protest indefinitely. This was indeed a\nvery difficult and brave decision on his part - he could have gotten what he\nwanted and ignored the \u2018milder\u2019 cases of violence for the nation, but his moral\ncaliber was defiant of such behavior and he chose to voice it.<\/p>\n\n<p>It was perhaps because he believed in a perpetual fight - a fight we\nall have to fight against our own moral demons - in which the nation must not\nsuccumb to the demon of violence.<\/p>\n\n<p>Subsequently, Gandhi launched many campaigns perfecting the concept of\n<a href=\"https:\/\/en.wikipedia.org\/wiki\/Satyagraha\"><em>Satyagrah<\/em><\/a> <label for=\"sn-id-satyagrah\" class=\"margin-toggle sidenote-number\"><\/label><input type=\"checkbox\" id=\"sn-id-satyagrah\" class=\"margin-toggle\" \/><span class=\"sidenote\">\u0938\u0924\u094d\u092f\u093e\u0917\u094d\u0930\u0939 (Satyagrah):\n\u0938\u0924\u094d\u092f (Truth) + \u0906\u0917\u094d\u0930\u0939 (insistence) - \u0938\u0924\u094d\u092f \u0915\u0947 \u0932\u093f\u090f \u0906\u0917\u094d\u0930\u0939 - <em>The truth force<\/em>, is a\nparticular form of non-violent civil resistance <\/span>, finally leading the nation\nto independence in 1947.<\/p>\n\n<p>I guess we all get to play Ross sometimes, and I believe that creating barriers,\nas Gandhi did, to encourage the higher moral stance of one\u2019s own values - be it\nby ruthless questioning of one\u2019s own beliefs and biases, or having an external\nsupport mechanism for keeping oneself on track - would help us dodge the doom of\nour system.<\/p>\n\n<p>But I do find it very interesting to ponder upon how \u2018easy\u2019 it is to be lost, to\nbe engrossed so deeply into our visions to forget what it stood for in the first\nplace; to cross the rather fine line drawn between us and the monster, and how\ntools like identities and the different masks we wear make it all the more\neasier.<\/p>\n\n<p>Special thanks to <a href=\"https:\/\/github.com\/chiral-carbon\">Abhipsha<\/a> for proofreading and <a href=\"https:\/\/github.com\/RJ722\/rj722.github.io\/pull\/1\/files\">making this article\nreadable<\/a>!<\/p>\n\n","pubDate":"Sun, 26 May 2019 00:00:00 +0530","link":"https:\/\/rj722.github.io\/articles\/19\/revolution-and-systems","guid":"https:\/\/rj722.github.io\/articles\/19\/revolution-and-systems","category":"blog"},{"title":"Freedom of Speech, Authoritarianism, Freedom of Press and Faiz","description":"<p>Right to Free Speech is essential for a democracy. This blog post aims to shed\nsome light on the recent authoritarian attempts made by hindutva-right-wing to\ncurb free speech and how can we fight back.<\/p>\n\n<!--more-->\n\n<h3 id=\"indias-divider-in-chief\"><em>\u201cIndia\u2019s Divider in chief\u201d<\/em><\/h3>\n\n<p>TIME magazine, in it\u2019s May 20 edition, featured the Prime Minister of India, Mr.\nNarendra Damodardas <a href=\"https:\/\/indianexpress.com\/article\/india\/indias-divider-in-chief-pm-modi-features-on-time-magazine-cover-5720637\/\">Modi on it\u2019s cover page<\/a><\/p>\n\n<p><label for=\"mf-id-modi19\" class=\"margin-toggle\">\u2295<\/label><input type=\"checkbox\" id=\"mf-id-modi19\" class=\"margin-toggle\" \/><span class=\"marginnote\"><img class=\"fullwidth\" src=\"https:\/\/i.imgur.com\/necOF1d.jpg\" \/><br \/>The photo, which appeared rather grim, was tagged <code class=\"highlighter-rouge\">India's Divider in Chief<\/code><\/span><\/p>\n\n<p>The article opens with the sentence:<\/p>\n\n<blockquote>\n  <p>\u201cOf the great democracies to fall to populism, India was the first.\u201d<\/p>\n<\/blockquote>\n\n<p>Under Prime Minister Modi, the story read,<\/p>\n\n<blockquote>\n  <p>\u201cNation\u2019s most basic norms, such as the character of the Indian state, its\nfounding fathers, the place of minorities and its institutions, from\nuniversities to corporate houses to the media, were shown to be severely\ndistrusted.\u201d<\/p>\n<\/blockquote>\n\n<p>Furthering the argument, it says:<\/p>\n\n<blockquote>\n  <p>\u201c\u2026Under Modi, minorities of every stripe \u2013 from liberals and lower castes to\nMuslims and Christians \u2013 have come under assault\u201d<\/p>\n<\/blockquote>\n\n<p>It talked about the promise of the economic reform of the messiah which has\nfailed to materialize and how \u201che [the BJP] is lucky to be blessed with so weak\nan opposition\u2013a ragtag coalition of parties, led by the Congress, with no agenda\nother than to defeat him<\/p>\n\n<p>But, we aren\u2019t here to debate this. Let\u2019s look at the before and aftermath of\nthe incident.<\/p>\n\n<p><strong>2012<\/strong><\/p>\n\n<p><label for=\"mf-id-manmohan\" class=\"margin-toggle\">\u2295<\/label><input type=\"checkbox\" id=\"mf-id-manmohan\" class=\"margin-toggle\" \/><span class=\"marginnote\"><img class=\"fullwidth\" src=\"http:\/\/img.timeinc.net\/time\/images\/covers\/asia\/2012\/20120716_600.jpg\" \/><br \/>Manmohan Singh featured on one of the 2012 editions of the same magazine<\/span><\/p>\n\n<p>In 2012, Manmohan Singh appeared on the cover of the same magazine as <em>\u201cThe\nUnderachiever\u201d<\/em>, even which might have been an understatement at the time.<\/p>\n\n<p>Many of BJP supporters including but not limited to their leader\n<a href=\"https:\/\/www.thehindu.com\/news\/national\/bjp-attacks-manmohan-after-time-magazine-report\/article3616536.ece#!\">Ravi Shankar Prasad, without a shred of doubt on the authenticity of the\narticle, straight away demanded his resignation<\/a> on the grounds\nthat the image of India has been spoiled.<\/p>\n\n<p><label for=\"mf-id-modi12\" class=\"margin-toggle\">\u2295<\/label><input type=\"checkbox\" id=\"mf-id-modi12\" class=\"margin-toggle\" \/><span class=\"marginnote\"><img class=\"fullwidth\" src=\"https:\/\/i.pinimg.com\/originals\/3d\/8f\/69\/3d8f69a98f3fdeef9359d8a1ef7b49ba.jpg\" \/><br \/>Narendra Modi appears for the first time on the cover page of TIME, highlighted positively - <code class=\"highlighter-rouge\">Modi means business<\/code><\/span><\/p>\n\n<p>A subsequent edition of TIME in 2012 again showed interest in Indian economy\nfeaturing Modi on cover page entitled \u201cModi means business\u201d - enforcing the\ndream BJP instilled in Indians of the economic reform it promised.<\/p>\n\n<p><strong>2015<\/strong><\/p>\n\n<p><label for=\"mf-id-modi15\" class=\"margin-toggle\">\u2295<\/label><input type=\"checkbox\" id=\"mf-id-modi15\" class=\"margin-toggle\" \/><span class=\"marginnote\"><img class=\"fullwidth\" src=\"https:\/\/imagesvc.timeincapp.com\/v3\/mm\/image?url=https%3A%2F%2Ftimedotcom.files.wordpress.com%2F2015%2F05%2Findia-final.jpg&amp;w=800&amp;c=sc&amp;poi=face&amp;q=85\" \/><br \/>Modi, now Prime Minister, appeared once again on the cover page of TIME. This time, it said <code class=\"highlighter-rouge\">Why Modi Matters<\/code><\/span><\/p>\n\n<p>And again in 2015, Modi was featured, this time as the Prime Minister. The tag\nline said \u201cWhy Modi Matters\u201d depicting Modi government positively.<\/p>\n\n<p>Apart from this, he was also rewarded a place in the list of \u201cThe 100 Most\nInfluential People\u201d by (yes, you guessed it right) TIME in 2014, 2015 and 2017\neditions.<\/p>\n\n<p>Up until now, all in favour, all good - Lo and behold, TIME magazine is the best\nmagazine in the world.<\/p>\n\n<p><strong>2019<\/strong><\/p>\n\n<p>The trend line of TIME on the opinion on Narendra Modi is very similar to the\nchange of opinion of people, slowly declining until 2017 and a much steeper fall\nafter that. The cover page of 2019 is a simple depiction of that, but now the\ncomplaints begin.<\/p>\n\n<h3 id=\"controversy-behind-pakistani-writer\">Controversy behind Pakistani Writer<\/h3>\n\n<p>The author of article, Mr. Aatish Taseer is a Pakistani Journalist. Following the\nrelease of the magazine, his <a href=\"https:\/\/en.wikipedia.org\/w\/index.php?title=Aatish_Taseer&amp;type=revision&amp;diff=896408874&amp;oldid=896403743\">wikipedia page was severly vandalized<\/a> - stating\nthat he writes against Brahmins, is a member of Lashkar-E-Tayabba, a pakistani\nmilitant group and that he is also working as a PR manager for Congress.<\/p>\n\n<figure><figcaption>Wikipedia page of Aatish vandalized<\/figcaption><img src=\"\/assets\/img\/ateesh-wiki.png\" \/><\/figure>\n<figure><figcaption><\/figcaption><img src=\"\/assets\/img\/ateesh-wiki2.png\" \/><\/figure>\n\n<p>This false information was then tweeted numerous times as widespread propaganda\nby some trolls on the internet. Other means to defame him were also adopted.<\/p>\n\n<p><label for=\"mf-id-aatish\" class=\"margin-toggle\">\u2295<\/label><input type=\"checkbox\" id=\"mf-id-aatish\" class=\"margin-toggle\" \/><span class=\"marginnote\"><img class=\"fullwidth\" src=\"https:\/\/i.imgur.com\/9d2Z78v.jpg\" \/><br \/>One of many fake TIME cover created by trolls for defaming Aatish<\/span><\/p>\n\n<p>One thing worth noting here is that yes, the author actually is half-pakistani\n(born to an Indian mother, Mrs. Tavleen Singh and a Pakistani father, Mr. Salmaan\nTaseer). In fact, Mr. Salmaan was one of the most liberal politicians of Pakistan,\nleading to his <a href=\"https:\/\/foreignpolicy.com\/2011\/01\/04\/pakistans-dangerous-blasphemy-laws-claim-the-governor-of-punjab\/\">assassination in 2011 because of his strong opinions on Blasphemy\nLaws in Pakistan<\/a> and his mother, <a href=\"https:\/\/twitter.com\/tavleen_singh\/status\/1126665638582177792\">Mrs. Tavleen appeers to be a Modi supporter<\/a>.<\/p>\n\n<p>This was the journey of the TIME magazine - from being used as a source for\nasking resignation of a Prime Minster in 2012 to being stamped as an\nanti-nationalist, anti-hindu, pro-Pakistani and pro-Congress magazine - which\ncannot be trusted at all.<\/p>\n\n<h2 id=\"the-rise-of-authoritarianism\">The Rise of authoritarianism<\/h2>\n\n<p>For the past few years, there has been a shift in governance model and their\npolicy and stance on failures - furthering more and more towards\nauthoritarianism. Anyone who dare questions them or speaks against them is\ndrafted \u2018anti-national\u2019 and crazy as it might sound - \u2018anti-hindu\u2019. First comes\nhate speech, death threats and trolling for propaganda. Even then, if someone\ndoesn\u2019t stop, then, if they are lucky, <a href=\"https:\/\/www.ndtv.com\/india-news\/sedition-case-registered-against-arundhati-roy-geelani-440611\">they are charged with sedition<\/a> <label for=\"sn-id-sedition\" class=\"margin-toggle sidenote-number\"><\/label><input type=\"checkbox\" id=\"sn-id-sedition\" class=\"margin-toggle\" \/><span class=\"sidenote\">Arundhati Roy, Kanhaiya Kumar, Umar Khalid, Aseem\nTrivedi are just a few famous names who have been charged with sedition,\nprimarily because they spoke against the ruling party. It\u2019s ironic that this\ndraconian law was used by the British to suppress the freedom movement. <\/span>, or\nelse they are <a href=\"https:\/\/www.india.com\/news\/india\/jnu-row-pro-bjp-lawyers-admit-thrashing-kanhaiya-kumar-inside-police-custody-till-he-wet-his-pants-watch-video-971691\/\">either dealt with violence<\/a> - <a href=\"https:\/\/indianexpress.com\/article\/india\/india-news-india\/jnu-kanhaiya-kumar-patiala-house-court-lawyers-media-attacked\/\">lynched by a mob <\/a>,\n<a href=\"https:\/\/www.hindustantimes.com\/india-news\/anyone-speaking-against-bjp-rss-is-silenced-sonia-rahul-on-gauri-lankesh-s-murder\/story-Z240UB6qkxJnzcTD9rzYmO.html\">assassinated<\/a> or <a href=\"https:\/\/indianexpress.com\/article\/india\/india-news-india\/behind-dalit-student-suicide-how-his-university-campus-showed-him-the-door\/\">forced to commit suicide<\/a> (which the government\nofficials would then put up a huge mournful act to).<\/p>\n\n<p>The cases for all these victims was made further down by defaming them across\nmainstream media portraying them as criminals or associating them with terrorist\norganizations, which brings me to my second point\u2026<\/p>\n\n<h2 id=\"freedom-of-the-press\">Freedom of The Press<\/h2>\n\n<p>It isn\u2019t just the voice of the student leaders and activists which is silenced,\nbut even the mainstream media journalists are being denied their right to free\nspeech.<\/p>\n\n<p><a href=\"https:\/\/www.hindustantimes.com\/india-news\/anyone-speaking-against-bjp-rss-is-silenced-sonia-rahul-on-gauri-lankesh-s-murder\/story-Z240UB6qkxJnzcTD9rzYmO.html\">Gauri Lankesh, one of the top political journalists of India was shot dead\noutside her house<\/a> because she was an outspoken critic of\nright-wing-\u2018hindutva\u2019-politics and was present at the forefront of many\nprotests, including the protest against the smearing of Kannada writer Yogesh\nMaster\u2019s face with black ink.<\/p>\n\n<p>When Punya Prasun Bajpayi, in his show <em>Masterstroke<\/em> uncovered some false\nclaims made by Prime Minister regarding a rural lady by interviewing her, TV\nscreens <a href=\"https:\/\/scroll.in\/article\/889026\/resignations-of-two-journalists-at-abp-news-cause-disquiet-in-newsrooms-and-far-beyond\">were blackened out<\/a> for the consequent episodes for his show in many\nparts of the nation. This political pressure on ABP news further lead to\n<a href=\"https:\/\/scroll.in\/article\/889026\/resignations-of-two-journalists-at-abp-news-cause-disquiet-in-newsrooms-and-far-beyond\">resignation of ABP\u2019s network managing editor, Milind Khandekar<\/a>, closely\nfollowed by Bajpayi\u2019s own. After this round of resignations, another journalist\nat the network <a href=\"https:\/\/www.newslaundry.com\/shorts\/abp-news-abhisar-sharma-resigns\">Abhisar Sharma went for leave<\/a> and <a href=\"https:\/\/www.newslaundry.com\/shorts\/abp-news-abhisar-sharma-resigns\">finally resigned a few\ndays later<\/a>.<\/p>\n\n<p>This is an organized attack on media, disrupting any dialogue or questions in\nthe matter of starvation deaths, unemployment, education affairs, farmer\nsuicides, clean air and water.<\/p>\n\n<p>The <a href=\"https:\/\/www.ndtv.com\/opinion\/modi-interviews-packed-with-lines-rg-could-never-get-away-with-2037244\">scripted interviews<\/a> which our Prime Minister gives, all the\nwhile bluntly <a href=\"https:\/\/www.thequint.com\/elections\/social-dangal\/incredible-liar-twitter-pm-modi-email-digital-camera-1988\">blurting out lies, gibberish<\/a> and <a href=\"https:\/\/www.aljazeera.com\/news\/2019\/05\/laughing-matter-india-modi-mocked-tech-gaffes-190513091851774.html\">factually incorrect\nstatements<\/a>, would be comprised of questions aimed at reinforcing the\npropaganda amongst the masses.<\/p>\n\n<p><br \/><\/p>\n\n<figure class=\"fullwidth\"><img src=\"https:\/\/i.imgur.com\/EQRoyEe.jpg\" \/><figcaption>This is a mainstream media\nhouse - The job of these 'journalists' has crumbled to the extent that they now\nspend time on Kim Jong Un's wives rather than questioning or analyzing\ngovernment policies, creating awareness or showing statistics about the current\nunemployment in India.<\/figcaption><\/figure>\n\n<p><br \/><\/p>\n\n<p>India currently <a href=\"https:\/\/rsf.org\/en\/india\">ranks 140 out of 180 countries on World Press Freedom\nIndex<\/a>, which is a disaster for the world\u2019s largest democracy.<\/p>\n\n<h2 id=\"what-can-we-do\">What can we do?<\/h2>\n\n<p><a href=\"https:\/\/youtu.be\/stNh_di8OM8?t=920\">In the words of Ravish Kumar<\/a> (one of the handful journalists\n<label for=\"sn-id-himmat\" class=\"margin-toggle sidenote-number\"><\/label><input type=\"checkbox\" id=\"sn-id-himmat\" class=\"margin-toggle\" \/><span class=\"sidenote\">Himmat, a magazine, edited by Rajmohan Gandhi, which maintained independence despite State repression [when Emergency was imposed during 1975] serves as a means of great inspiration for today\u2019s journalists, to find ways to resist corporate control and to tell readers the truth. <a href=\"https:\/\/scroll.in\/article\/735844\/himmat-during-the-emergency-when-the-press-crawled-some-refused-to-even-bend\">Read complete story here<\/a> <\/span>\nwho haven\u2019t yet forgotten what journalism is and and still have the courage to raise the right\nquestions):<\/p>\n\n<blockquote>\n  <p>Ask questions. Questioning government is the highest service to the nation.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Faiz_Ahmad_Faiz\">Faiz Ahmad Faiz<\/a>, one of the most celebrated poets in Urdu literature,\nwho was also a protagonist of the Progressive Movement of India (1936), wrote\na <a href=\"https:\/\/en.wikipedia.org\/wiki\/Nazm\">nazm<\/a>: <em>\u201cBol ke Lab Aazad Hain Tere\u201d<\/em> <label for=\"sn-id-safdar-hashmi\" class=\"margin-toggle sidenote-number\"><\/label><input type=\"checkbox\" id=\"sn-id-safdar-hashmi\" class=\"margin-toggle\" \/><span class=\"sidenote\">When Safdar Hashmi, who later became a symbol of cultural resistance against\nauthoritarianism for the Indian left, was murdered while performing his\nstreet-play \u2018Halla Bol\u2019 (Attack), Faiz\u2019s nazm served a rallying cry for the\nprotestors with each line followed by chanting \u2018Halla Bol\u2019. <\/span> (English: Speak,\nfor your lips are free), <a href=\"https:\/\/kashmirlife.net\/famous-faiz-poem-bol-ki-lab-azad-hein-teray-was-for-sheikh-abdullah-193424\/\">possibly in the wake of Kashmir Liberation\nMovement<\/a> dedicated to his friend and renowned music composer\nArshad Mahmud, who was also his student and compatriot.<\/p>\n\n<p>This nazm couldn\u2019t be any more relevant today. Have a read for yourself (English translation below):<\/p>\n\n<div style=\"font-size:34px\">\n<br \/>\n\u0628\u0648\u0644 \u06a9\u06c1 \u0644\u0628 \u0622\u0632\u0627\u062f \u06c1\u06cc\u06ba \u062a\u06cc\u0631\u06d2\n<br \/>\n<br \/>\n\u0628\u0648\u0644 \u0632\u0628\u0627\u06ba \u0627\u0628 \u062a\u06a9 \u062a\u06cc\u0631\u06cc \u06c1\u06d2 \n<br \/>\n<br \/>\n\u062a\u06cc\u0631\u0627 \u0633\u062a\u0648\u0627\u06ba \u062c\u0633\u0645 \u06c1\u06d2 \u062a\u06cc\u0631\u0627 \n<br \/>\n<br \/>\n\u0628\u0648\u0644 \u06a9\u06c1 \u062c\u0627\u06ba \u0627\u0628 \u062a\u06a9 \u062a\u06cc\u0631\u06cc \u06c1\u06d2 \n<br \/>\n<br \/>\n\u062f\u06cc\u06a9\u06be \u06a9\u06c1 \u0622\u06c1\u0646 \u06af\u0631 \u06a9\u06cc \u062f\u06a9\u0627\u06ba \u0645\u06cc\u06ba \n<br \/>\n<br \/>\n\u062a\u0646\u062f \u06c1\u06cc\u06ba \u0634\u0639\u0644\u06d2 \u0633\u0631\u062e \u06c1\u06d2 \u0622\u06c1\u0646 \n<br \/>\n<br \/>\n\u06a9\u06be\u0644\u0646\u06d2 \u0644\u06af\u06d2 \u0642\u0641\u0644\u0648\u06ba \u06a9\u06d2 \u062f\u06c1\u0627\u0646\u06d2 \n<br \/>\n<br \/>\n\u067e\u06be\u06cc\u0644\u0627 \u06c1\u0631 \u0627\u06a9 \u0632\u0646\u062c\u06cc\u0631 \u06a9\u0627 \u062f\u0627\u0645\u0646 \n<br \/>\n<br \/>\n\u0628\u0648\u0644 \u06cc\u06c1 \u062a\u06be\u0648\u0691\u0627 \u0648\u0642\u062a \u0628\u06c1\u062a \u06c1\u06d2 \n<br \/>\n<br \/>\n\u062c\u0633\u0645 \u0648 \u0632\u0628\u0627\u06ba \u06a9\u06cc \u0645\u0648\u062a \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \n<br \/>\n<br \/>\n\u0628\u0648\u0644 \u06a9\u06c1 \u0633\u0686 \u0632\u0646\u062f\u06c1 \u06c1\u06d2 \u0627\u0628 \u062a\u06a9 \n<br \/>\n<br \/>\n\u0628\u0648\u0644 \u062c\u0648 \u06a9\u0686\u06be \u06a9\u06c1\u0646\u0627 \u06c1\u06d2 \u06a9\u06c1\u06c1 \u0644\u06d2 \n<br \/>\n<br \/>\n\n<\/div>\n\n<h3 id=\"english\">English:<\/h3>\n<p>bol ki lab \u0101z\u0101d hai\u00f1 tere<\/p>\n<blockquote>\n  <p>Speak, for your lips are free<\/p>\n<\/blockquote>\n\n<p>bol zab\u0101\u00f1 ab tak ter\u012b hai<\/p>\n<blockquote>\n  <p>Speak, your tounge is still your own<\/p>\n<\/blockquote>\n\n<p>ter\u0101 sutv\u0101\u00f1 jism hai ter\u0101<\/p>\n<blockquote>\n  <p>That this frail body is still yours<\/p>\n<\/blockquote>\n\n<p>bol ki jaa\u00f1 ab tak ter\u012b hai<\/p>\n<blockquote>\n  <p>Speak, your life is still your own<\/p>\n<\/blockquote>\n\n<p>dekh ki \u0101han-gar k\u012b duk\u0101\u00f1 me\u00f1<\/p>\n<blockquote>\n  <p>See how in the blacksmith\u2019s forge<\/p>\n<\/blockquote>\n\n<p>tund hai\u00f1 sho.ale sur\u1e33h hai aahan<\/p>\n<blockquote>\n  <p>Flames leap high and steel glows red<\/p>\n<\/blockquote>\n\n<p>khulne lage quflo\u00f1 ke dah\u0101ne<\/p>\n<blockquote>\n  <p>Padlocks opening wide their jaws<\/p>\n<\/blockquote>\n\n<p>phail\u0101 har ik zanj\u012br k\u0101 d\u0101man<\/p>\n<blockquote>\n  <p>Every chain\u2019s embrace outspread!<\/p>\n<\/blockquote>\n\n<p>bol ye tho\u1e0c\u0101 vaqt bahut hai<\/p>\n<blockquote>\n  <p>Time enough is this brief hour<\/p>\n<\/blockquote>\n\n<p>jism o zab\u0101\u00f1 k\u012b maut se pahle<\/p>\n<blockquote>\n  <p>Until body and tounge lie dead<\/p>\n<\/blockquote>\n\n<p>bol ki sach zinda hai ab tak<\/p>\n<blockquote>\n  <p>Speak, for the truth is living yet<\/p>\n<\/blockquote>\n\n<p>bol jo kuchh kahn\u0101 hai kah le<\/p>\n<blockquote>\n  <p>Speak whatever must be said!<\/p>\n<\/blockquote>\n\n<p>It is rather pressing that we give a form factor to voice of Faiz and Ravish. I\nappeal that we, the citizens of India speak out, question the government, and\nspread awareness amongst our fellows citizens our rights.<\/p>\n","pubDate":"Wed, 22 May 2019 00:00:00 +0530","link":"https:\/\/rj722.github.io\/articles\/19\/freedom-of-speech","guid":"https:\/\/rj722.github.io\/articles\/19\/freedom-of-speech","category":["history","blog"]},{"title":"A glimpse into the darkness: the 'Brutish' rule in India","description":"<p>A second-generation freeborn attempts to understand the impact and aftermath of\ncolonization of India by British. It turns out that even an educated Indian of\ntoday is still not aware of the atrocities and turmoil it caused the country.<\/p>\n\n<!--more-->\n\n<p>India - the golden bird of medieval times, known for it\u2019s riches - the diamonds\nand the muslins, one of the world\u2019s greatest exporter of silk - a country\nsharing a cut of more than 27% in the world\u2019s economy during the sixteenth\ncentury - the country which was then capitalized for 200 years all the while\nfeeding to the interests of Britain, leaving the post-British India with a\ncrumbling share of a little more than 3% in the world GDP.<\/p>\n\n<p>This is my country.<\/p>\n\n<p>I am an Indian. This blog post highlights the pain it causes me that we, the\nyouth of India - the second-generation freeborn aren\u2019t afflicted by this dark\nside of the history, and how our education [A British establishment] merely\nportrays colonization as a chronological series, celebrating the independence and\nmapping it with subsequent post-independence failures. There is none or timid\nattempt made to lay emphasis on the curtailed legacy of India, the utter\namorality of the British rule or the atrocities imposed on our forefathers\nwithout scruple or principle. This case of insincerity has lead to an incomplete\nanalysis of the deep wounds of the colonization and of finding a cure.<\/p>\n\n<p>On the contrary, the notions about how the British brought industrialization to\nIndia, how trains were supposedly a precious \u2018gift\u2019, and how British were key to\nthe political \u2018unification\u2019 of India are quite popular.<\/p>\n\n<p>But recently coming across an Oxford Union Debate by Dr. Shashi Tharoor, a\nnovelist, diplomat and Indian politician, on the proposition \u201cBritain Owes\nReparations to her Former Colonies\u201d - which he admissibly won with his\ncharacteristically impassioned and precisely argued speech - was an eye-opening\nexperience, which lead me to further pursue the topic.<\/p>\n\n<h2 id=\"the-debate\">The Debate<\/h2>\n\n<p><br \/><\/p>\n\n<div>\n  <iframe width=\"70%\" height=\"533\" src=\"https:\/\/www.youtube.com\/embed\/f7CW7S0zxv4\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\"><\/iframe>\n<\/div>\n\n<p><br \/>\nAfter the debate, Tharoor left England (in his own words, \u201cpleased enough, but\nwithout giving the proceedings a second thought\u201d). However, a couple of months\nlater, once the speech was posted online, it took on an almost surreal\nafterlife, not only going viral across various social media platforms and\ncausing many a storm in chai cups across the sub-continent and Britain, but also\nmanaged to unite, in India, the old and the young, the radical and the\nconservative, and most uniquely, the ever-estranged political left, right, and\ncentre of our country in unequivocal approbation.<\/p>\n\n<p>On this, says Tharoor<\/p>\n\n<blockquote>\n  <p>\u201cYet the fact that my speech struck such a chord with so many listeners\nsuggested that what I considered basic was unfamiliar to many, perhaps most,\neducated Indians. They reacted as if I had opened their eyes, instead of\nmerely reiterating what they had already known.<\/p>\n\n  <p>It was this realisation that prompted my friend and publisher, David Davidar,\nto insist I convert my speech into a short book \u2013 something that could be read\nand digested by a layman but also be a valuable source of reference to\nstudents and others looking for the basic facts about India\u2019s experience with\nBritish colonialism. The moral urgency of explaining to today\u2019s Indians \u2013 and\nBritons \u2013 why colonialism was the horror it turned out to be could not be put\naside.\u201d<\/p>\n<\/blockquote>\n\n<h2 id=\"the-book\">The Book<\/h2>\n\n<p>He indeed did gift India with his book \u201cAn Era of Darkness\u201d deconstructing the\nbritish rule, unfolding around various themes: Of loot and of the hemorrhaged\nIndian wealth, of the increased rural poverty, the nefarious British policies\n(like divide-and-rule) which continue to haunt the contemporary India to date,\nthe famines and the holocausts, and <em>of course<\/em> Cricket.<\/p>\n\n<p>The book provides as a leaping point, marking a paradigm shift forward so that\nthe Youth of India knows the importance of the past and of talking about it, if\nonly to unpick its skein better \u2013 but to do it yet, with a sense of irony and\nwisdom.<\/p>\n\n<h3 id=\"tldr\">TLDR;<\/h3>\n\n<p>An Era of Darkness, by Shashi Tharoor is a must read!<\/p>\n","pubDate":"Sat, 18 May 2019 00:00:00 +0530","link":"https:\/\/rj722.github.io\/articles\/19\/a-glimpse-into-the-darkness","guid":"https:\/\/rj722.github.io\/articles\/19\/a-glimpse-into-the-darkness","category":["history","blog"]},{"title":"Do we really need to cover coverage with Vulture?","description":"<p>The team behind Vulture (a tool used for detecting unused Python code) decided\nnot to integrate it with coverage (a tool for measuring code coverage of Python\nprograms). Read why!<\/p>\n\n<!--more-->\n\n<h2 id=\"coverage---wow-so-accurate---we-need-it\"><code class=\"highlighter-rouge\">coverage<\/code> - wow, so accurate - we need it\u2026?<\/h2>\n\n<p>When this phase kicked in, I was still wrapping my head around coverage - My\nplan was to get coverage integrated with Vulture, which would allow users to\n\u201ctransfer\u201d the results from coverage to Vulture so that the false positives were\nautomatically detected and thereby supressed. It sounded so neat and moreso\ndoable (using an interminnent xml file) and so naturally, I just quickly got\ndown to nuts and bolts and started a Pull Request. But, alongst those splendid\ncolors of awesome functionality, Jendrik comes in and talks a bunch on why we\nshouldn\u2019t do it. I could extrapolate the following reasons:<\/p>\n<ul>\n  <li>We already created an easier, dynamic and robust way to create and manage\nwhitelists (<code class=\"highlighter-rouge\">--make-whitelist<\/code>) which shall eliminate the need of having 10\ndifferent things for dealing with false positives.<\/li>\n  <li>Coverage is a tool for dynamic analysis (which requires your code to be\nactually run) and is therefore slow, but gives much more accurate results.\nAnd, if we already have results from coverage, why would we then need Vulture\nfor??<\/li>\n  <li>Vulture is supposed to be a static analysis tool.<\/li>\n  <li>Vulture would\u2019ve no longer been independent of external modules.<\/li>\n<\/ul>\n\n<p>But, still it struck me as a little odd at that time because I thought that the\nfunctionality was optional and if someone didn\u2019t want it, he would simply just\nnot use it - simple. By now, may be you\u2019ve judged that that this was the\n<em>\u201cfeature syndrome\u201d<\/em> talking (The more features we have, the more usable we are)\nand yes, you\u2019re right. Luckily, Jendrik foresaw this early and redirected me\ntowards <a href=\"this blog post\">http:\/\/neugierig.org\/software\/blog\/2018\/07\/options<\/a>\nwhich explains why it\u2019s actually toxic for anything to have more \u201coptions\u201d and\nhow it was an expensive process in terms of time spent on writing, documenting\nand maintaining it.<\/p>\n\n<p>I\u2019m very thankful of Jendrik and proud of the fact that we\u2019ve still managed to\nkeep the workflow involved when using <code class=\"highlighter-rouge\">Vulture<\/code> as simple as it could get. :-)<\/p>\n","pubDate":"Sat, 18 Aug 2018 00:00:00 +0530","link":"https:\/\/rj722.github.io\/articles\/18\/cover-coverage-vulture","guid":"https:\/\/rj722.github.io\/articles\/18\/cover-coverage-vulture","category":["vulture","blog"]}]}}