<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Jigar Gosar on Medium]]></title>
        <description><![CDATA[Stories by Jigar Gosar on Medium]]></description>
        <link>https://medium.com/@jigargosar?source=rss-268c229a0528------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*Mlike1B2p8hTH2jNRJNsCw.jpeg</url>
            <title>Stories by Jigar Gosar on Medium</title>
            <link>https://medium.com/@jigargosar?source=rss-268c229a0528------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 02:50:40 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@jigargosar/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Elm: Decode fields that might be absent in JSON]]></title>
            <link>https://medium.com/the-functional-programmer/elm-decode-fields-that-might-be-absent-in-json-290cf88d943f?source=rss-268c229a0528------2</link>
            <guid isPermaLink="false">https://medium.com/p/290cf88d943f</guid>
            <category><![CDATA[json]]></category>
            <category><![CDATA[functional-programming]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[elm]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Jigar Gosar]]></dc:creator>
            <pubDate>Wed, 23 Aug 2017 11:08:47 GMT</pubDate>
            <atom:updated>2017-08-23T11:14:51.516Z</atom:updated>
            <content:encoded><![CDATA[<p>How to Decode JSON in Elm Part 2</p><p><a href="https://medium.com/the-functional-programmer/elm-json-decoding-recipes-part-1-d85b6e7ed977">Part1</a></p><h4>Imports</h4><pre>import Json.Decode as D exposing (Decoder)<br>import Json.Decode.Pipeline as D<br>import Json.Encode as E exposing (Value)</pre><h4>Record</h4><pre>type alias User =<br> { name : String<br> , age : Int<br> }</pre><h4>Decoder — All fields required</h4><p>If any of the fields are missing or have invalid type, following decoder will fail.</p><pre>userDecoder : Decoder User<br>userDecoder =<br>    D.succeed User<br>        |&gt; D.required &quot;name&quot; D.string<br>        |&gt; D.required &quot;age&quot; D.int</pre><p><strong>Success Example:</strong></p><pre>&gt; D.decodeString userDecoder &quot;&quot;&quot;{&quot;name&quot;: &quot;Jack&quot;, &quot;age&quot;: 25 }&quot;&quot;&quot;<br>Ok { name = &quot;Jack&quot;, age = 25 } : Result.Result String Repl.User</pre><p><strong>Failure Example: </strong>age field missing</p><pre>&gt; D.decodeString userDecoder &quot;&quot;&quot;{&quot;name&quot;: &quot;Jack&quot;}&quot;&quot;&quot;<br>Err &quot;Expecting an object with a field named `age` but instead got: {\&quot;name\&quot;:\&quot;Jack\&quot;}&quot;<br>    : Result.Result String Repl.User</pre><h4>Decoder — Age optional</h4><p>if age feild is missing, then following decoder will default its value to one specified. (3rd argument to D.optional function)</p><pre>userDecoder : Decoder User<br>userDecoder =<br>    D.succeed User<br>        |&gt; D.required &quot;name&quot; D.string<br>        |&gt; D.optional &quot;age&quot; D.int 0</pre><p><strong>Success Example: </strong>age field missing</p><pre>&gt; D.decodeString userDecoder &quot;&quot;&quot;{&quot;name&quot;: &quot;Jack&quot;}&quot;&quot;&quot;<br>Ok { name = &quot;Jack&quot;, age = 0 } : Result.Result String Repl.User</pre><p><strong>Success Example: </strong>age field present</p><pre>&gt; D.decodeString userDecoder &quot;&quot;&quot;{&quot;name&quot;: &quot;Jack&quot;, &quot;age&quot;: 25 }&quot;&quot;&quot;<br>Ok { name = &quot;Jack&quot;, age = 25 } : Result.Result String Repl.User</pre><h3>CAUTION</h3><p>If the optional field is present then it will be decoded using specified decoder, which may result in failure.</p><p><strong>Failure Example</strong>: age field present, but not int compatable</p><pre>&gt; D.decodeString userDecoder &quot;&quot;&quot;{&quot;name&quot;: &quot;Jack&quot;, &quot;age&quot;: &quot;25&quot; }&quot;&quot;&quot;<br>Err &quot;I ran into a `fail` decoder: I ran into the following problems:\n\nExpecting an Int but instead got: \&quot;25\&quot;\nExpecting null but instead got: \&quot;25\&quot;&quot;<br>    : Result.Result String Repl.User</pre><h3>Complete example</h3><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fembed.ellie-app.com%2F46y58BvsTjMa1%2F12&amp;url=https%3A%2F%2Fellie-app.com%2F46y58BvsTjMa1%2F12&amp;image=https%3A%2F%2Fdbamidicc4dm6.cloudfront.net%2Fimages%2Fellie-announcement%2Fellie_profile_pic_2.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=ellie-app" width="800" height="400" frameborder="0" scrolling="no"><a href="https://medium.com/media/de08ea64d80aa159c33037e5cd2fa9e5/href">https://medium.com/media/de08ea64d80aa159c33037e5cd2fa9e5/href</a></iframe><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=290cf88d943f" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-functional-programmer/elm-decode-fields-that-might-be-absent-in-json-290cf88d943f">Elm: Decode fields that might be absent in JSON</a> was originally published in <a href="https://medium.com/the-functional-programmer">The Functional Programmer</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Decode JSON in Elm Part 1]]></title>
            <link>https://medium.com/the-functional-programmer/elm-json-decoding-recipes-part-1-d85b6e7ed977?source=rss-268c229a0528------2</link>
            <guid isPermaLink="false">https://medium.com/p/d85b6e7ed977</guid>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[elm]]></category>
            <category><![CDATA[functional-programming]]></category>
            <category><![CDATA[json]]></category>
            <dc:creator><![CDATA[Jigar Gosar]]></dc:creator>
            <pubDate>Sun, 08 Jan 2017 08:58:49 GMT</pubDate>
            <atom:updated>2017-08-23T11:10:37.967Z</atom:updated>
            <content:encoded><![CDATA[<p>Easily decode any JSON to Elm type alias, union type, singleton type constructors. And any nested combination of these.</p><p>In Elm, JSON encoding and decoding is quite easy as opposed to what people think. The main problem is lack of good examples. I have struggled a lot, and have found answers to almost all of my conscerns. Thanks to awesome <a href="http://elm-lang.org/community"><strong>Elm Community</strong></a>.</p><h4>Following is what I intend to cover in this series</h4><ul><li>Decode JSON objects to Elm Records (current article)</li><li><a href="https://medium.com/the-functional-programmer/elm-decode-fields-that-might-be-absent-in-json-290cf88d943f">Decode fields that might be absent in JSON</a></li><li>Decode fields of type Maybe</li><li>Decode simple Union Type</li><li>Decode Single Constructor Union Type</li><li>Decode Parameterised UnionType</li><li>Decode any combination of above</li><li>Encode any combination of above</li><li>Strategies to deal with changing shape of types when our application grows</li><li>Using Versions to maintain backward compatibility</li><li>Strategies to handle decoding errors</li></ul><h3>Decoding JSON objects to Elm Records</h3><p>We can send Javascript objects directly over ports. There is no need to JSON encode them. Once received we can use Json.Decode.decodeValue</p><pre>port onSomeEvent : (D.Value -&gt; msg) -&gt; Sub msg</pre><p>Let’s define type alias for SomeEvent</p><pre><strong>type alias SomeEvent </strong>=<br>    { name : <strong>String<br>    </strong>, age : <strong>Int<br>    </strong>}</pre><p>Now let’s write a decoder for it</p><pre><strong>someEventDecoder </strong>= <br>    <strong>D</strong>.succeed <strong>SomeEvent<br>        </strong>|&gt; <strong>DP</strong>.required <strong>&quot;name&quot; D</strong>.string<br>        |&gt; <strong>DP</strong>.required <strong>&quot;age&quot; D</strong>.int</pre><p>As a convention, I rarely import any module directly. Using namespace prefix is prefered. So what is D and DP?</p><pre><strong>import </strong>Json.Encode <strong>as E</strong><br><strong>import </strong>Json.Decode <strong>as D</strong><br><strong>import </strong>Json.Decode.Pipeline <strong>as DP</strong></pre><p>Using the <a href="http://package.elm-lang.org/packages/NoRedInk/elm-decode-pipeline/latest"><strong>pipeline library</strong></a> allows to use the <strong>required</strong> function with <strong>|&gt;</strong> operator.</p><p>Now to get the result of decoding we can simply write</p><pre>decodeSomeEvent: D.Value -&gt; Result String SomeEvent<br>decodeSomeEvent encoded = someEventDecoder |&gt; D.decodeValue encoded</pre><p>And we are done, well almost. Now it is up to us how to handle the failure case.</p><p>Until next time. Enjoy Elm!</p><p>P.S. With enough support and encouragement, I would like to write a tool that will automate this process completely.</p><p>I love Elm, and would like to help anyone who is stuck because of lack of tutorials or examples. Feel free to write to me.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d85b6e7ed977" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-functional-programmer/elm-json-decoding-recipes-part-1-d85b6e7ed977">How to Decode JSON in Elm Part 1</a> was originally published in <a href="https://medium.com/the-functional-programmer">The Functional Programmer</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Programming Languages are Half-Part Religion]]></title>
            <link>https://medium.com/the-functional-programmer/programming-languages-are-half-part-religion-6db9ba3574ac?source=rss-268c229a0528------2</link>
            <guid isPermaLink="false">https://medium.com/p/6db9ba3574ac</guid>
            <category><![CDATA[life-lessons]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[functional-programming]]></category>
            <category><![CDATA[religion]]></category>
            <dc:creator><![CDATA[Jigar Gosar]]></dc:creator>
            <pubDate>Mon, 05 Dec 2016 05:50:39 GMT</pubDate>
            <atom:updated>2016-12-05T05:50:39.144Z</atom:updated>
            <content:encoded><![CDATA[<h4>A way of thinking. A way of life…</h4><ul><li>A list of Do’s and Dont’s.</li><li>With judgements on what’s <strong>Right</strong> and <strong>Wrong</strong>.</li><li>Filled with <strong>Zelots</strong> and <strong>Moderates</strong> alike.</li></ul><h3>Avoid religious debates!</h3><ul><li>Just take the <strong>#GoodStuff</strong></li><li><a href="https://www.youtube.com/watch?v=nCLn5guumOM">Just Take It And Go</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6db9ba3574ac" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-functional-programmer/programming-languages-are-half-part-religion-6db9ba3574ac">Programming Languages are Half-Part Religion</a> was originally published in <a href="https://medium.com/the-functional-programmer">The Functional Programmer</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Relationship Status Update]]></title>
            <link>https://medium.com/@jigargosar/relationship-status-update-68b34cdee488?source=rss-268c229a0528------2</link>
            <guid isPermaLink="false">https://medium.com/p/68b34cdee488</guid>
            <category><![CDATA[relationships]]></category>
            <category><![CDATA[life-lessons]]></category>
            <category><![CDATA[poetry]]></category>
            <category><![CDATA[love]]></category>
            <dc:creator><![CDATA[Jigar Gosar]]></dc:creator>
            <pubDate>Sat, 29 Oct 2016 08:01:50 GMT</pubDate>
            <atom:updated>2016-10-29T08:19:11.134Z</atom:updated>
            <content:encoded><![CDATA[<p>From “Not interested” to “Interested”</p><p><a href="https://byrslf.co/im-sorry-i-m-not-always-the-sun-86372e39833#.th5efzv7a">This beautiful poem</a> hit home, and made me realize why I am afraid of any long-term relationship.</p><h3>New Status: “Interested”</h3><p>But only with someone who shares these beautiful thoughts:</p><p>All Credits to <a href="https://medium.com/u/6bda52b972a7">Demetra Demi Gregorakis</a> and her following <a href="https://byrslf.co/im-sorry-i-m-not-always-the-sun-86372e39833#.1h54zykgy">words</a></p><p><a href="https://byrslf.co/im-sorry-i-m-not-always-the-sun-86372e39833">I’m Sorry I’m Not Always The Sun.</a></p><p>I’m sorry I’m not always the sun.</p><p>Don’t love me when I’m <em>only</em> the sun<br>love me when I <em>burn </em>you, <br>love me when my rays are <em>too much f</em>or you to see, <br>love me when I<em> can’t see </em>my <em>own</em> worth.</p><p>I need you to love me when I’m the <strong>cloud, </strong><br>when I’m the <strong>storm, </strong><br>when I’m<strong> flooding</strong> my mind with worries and doubts, <br>i need you to <em>take hold of me, </em><br>to wrap your arms<em> around me</em>, <br>to bring me back to <em>this </em>moment of<em> you and I</em>, <br>to <strong><em>calm me.</em></strong></p><p>i need you to love me more than just a <em>like </em>on a photo <br>i need you more than just a <em>‘good morning’</em> and <em>‘good night</em>’ text<br>i need to know that you are there at 3 am <br>when the world is <em>quiet</em> and my mind is <strong>awake</strong>,<br>that you take my secrets and hold them <em>locked in your soul, <br></em>I need to know <em>my</em> words are safe in <em>your </em>hands, <br>that you hold my heart as one of the seven wonders of the world, <br>the<em> finest treasure</em> to ever have been discovered.</p><p>I need to know that you aren’t <em>temporary</em>,<br>I know you <strong>can’t</strong> promise that, <br>but,<br>In this world of <em>instant gratification,</em> <br>I <em>need</em> to know you believe in <strong>working at us </strong><br>I <em>need </em>to believe that you aren’t a <em>ghost </em><br>I <em>need </em>you to be my lighthouse<br>when I’m <strong>lost at sea,</strong></p><blockquote>don’t leave me shipwrecked.</blockquote><p><em>but if you must leave, leave me wearing a life vest, leave me on shore, leave me with honesty, leave me with my </em><strong><em>sanity.</em></strong></p><blockquote>i need you to understand me, because i don’t understand me,</blockquote><blockquote>i need you to accept me.</blockquote><blockquote>i need you to love all parts of me<br>because no, I’m not always the sun, <br>and sometimes you’ll need to radiate for me,</blockquote><h3>I’m sorry I’m not always the sun,</h3><p>but I can promise when you are the cloud — I will <strong>alway</strong> shine for you.</p><blockquote><strong>I promise I’m worth the storm.</strong></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=68b34cdee488" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[#Experiment 3: Can I solve FizzBuzz using ONLY JS functions, and ABSOLUTELY nothing else]]></title>
            <link>https://medium.com/the-functional-programmer/experiment-3-can-i-solve-fizzbuzz-using-only-js-functions-and-absolutely-nothing-else-e3759389b20c?source=rss-268c229a0528------2</link>
            <guid isPermaLink="false">https://medium.com/p/e3759389b20c</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[functional-programming]]></category>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[programming]]></category>
            <dc:creator><![CDATA[Jigar Gosar]]></dc:creator>
            <pubDate>Tue, 25 Oct 2016 06:54:48 GMT</pubDate>
            <atom:updated>2016-10-25T13:26:15.421Z</atom:updated>
            <content:encoded><![CDATA[<p>Yup! you heard it right. No variables, operators, numbers, booleans, objects, control structures. Absolutely nothing but but plain old javascript functions.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hqMuugwSnAxwR36mLDH8xQ.png" /><figcaption>Using No Other Language Feature But Functions</figcaption></figure><h3>The Not So Impossible Target</h3><p>It has been proved that it can be done. Somewhere around 1940’s some guy proposed <a href="https://en.wikipedia.org/wiki/Lambda_calculus">using functions as basis for mathematics</a> and computation, and this theory also ended up being <a href="https://en.wikipedia.org/wiki/Turing_completeness">Turing Complete</a>.</p><h3>But WHY!</h3><p>I was inspired by the <a href="https://codon.com/programming-with-nothing">Ruby Version</a> of this fun little experiment by <a href="https://twitter.com/tomstuart">Tom Stuart</a>. And it seems like a fun exercise. And I have another hidden agenda :D</p><p>So, lets define todays target.</p><h3>Define</h3><ul><li>Write a traditional solution to FizzBuzz in javascript.</li><li>Write a test.</li><li>Push to GitHub</li><li>Try to make small changes such that our test doesn’t break.</li><li>Try to Remove at least 2 language features by EOD.</li><li>Blog at EOD.</li></ul><h3>Phew!</h3><p>Here we go, the entire FizzBuzz program just using functions. Also uploaded to <a href="https://github.com/jigargosar/lambda-fizz-buzz">GitHub</a>.</p><iframe src="https://cdn.embedly.com/widgets/media.html?url=https%3A%2F%2Fcodepen.io%2Fjigargosar%2Fpen%2FdpAdqz%2F&amp;src=https%3A%2F%2Fcodepen.io%2Fjigargosar%2Fembed%2Fpreview%2FdpAdqz%3Fheight%3D600%26amp%3Bslug-hash%3DdpAdqz%26amp%3Bdefault-tabs%3Djs%2Cresult%26amp%3Bhost%3Dhttp%253A%252F%252Fcodepen.io%26amp%3Bembed-version%3D2&amp;type=text%2Fhtml&amp;key=d04bfffea46d4aeda930ec88cc64b87c&amp;schema=codepen" width="800" height="600" frameborder="0" scrolling="no"><a href="https://medium.com/media/d0dd4b829d5165391461e7eb5c5c8329/href">https://medium.com/media/d0dd4b829d5165391461e7eb5c5c8329/href</a></iframe><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e3759389b20c" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-functional-programmer/experiment-3-can-i-solve-fizzbuzz-using-only-js-functions-and-absolutely-nothing-else-e3759389b20c">#Experiment 3: Can I solve FizzBuzz using ONLY JS functions, and ABSOLUTELY nothing else</a> was originally published in <a href="https://medium.com/the-functional-programmer">The Functional Programmer</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[#Experiment Day 2: Javascript To Haskell]]></title>
            <link>https://medium.com/the-functional-programmer/experiment-day-2-javascript-to-haskell-8c8c699af815?source=rss-268c229a0528------2</link>
            <guid isPermaLink="false">https://medium.com/p/8c8c699af815</guid>
            <category><![CDATA[chrome]]></category>
            <category><![CDATA[haskell]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[functional-programming]]></category>
            <dc:creator><![CDATA[Jigar Gosar]]></dc:creator>
            <pubDate>Mon, 24 Oct 2016 09:22:56 GMT</pubDate>
            <atom:updated>2016-10-25T01:02:05.634Z</atom:updated>
            <content:encoded><![CDATA[<p>Migrate yesterday&#39;s <a href="https://medium.com/the-functional-programmer/define-ship-and-blog-daily-cc5024c8c97f#.d7who9b3p">Timer Chrome Extension</a> from javascript to Haskell</p><blockquote>Scroll for “<em>EOD update”</em></blockquote><h3>But</h3><p>It is already 3pm, and I don’t want to set up myself for failure. So, let’s reduce the requirement.</p><h3>Define</h3><ul><li>Setup Haskell environment.</li><li>Setup Haskell web/javascript development environment.</li><li>Learn about Haskell html/JS libraries.</li><li>Create a static HTML page, that displays current time in HH:MM:SS format.</li><li>Export to GitHub.</li><li>Blog</li></ul><h3>Next</h3><ul><li>We shall migrate the <a href="https://medium.com/the-functional-programmer/define-ship-and-blog-daily-cc5024c8c97f#.d7who9b3p">Timer Chrome Extension</a></li><li>But that’s not our today’s target. :D</li></ul><h3>EOD Results</h3><ul><li>Installed <a href="https://www.haskell.org/platform/">Haskell Platform</a> (~300Mb)</li><li>Setup project using <a href="https://lettier.github.io/posts/2016-07-04-haskell-to-javascript.html">Haskell to JavaScript</a> as reference (GHCJS).</li><li>stack setup takes long time.</li><li>Ran into some dependency resolution errors. Unsuccessfully spent time fixing them.</li><li>So, decided to run exact copy of code from <a href="https://lettier.github.io/posts/2016-07-04-haskell-to-javascript.html">Haskell to JavaScript</a></li><li>Ended the day while stack setup was running.</li><li>No success, still getting bunch of errors :(</li><li>Pushed to GitHub <a href="https://github.com/jigargosar/haskell-timer-chrome-ext/tree/master">haskell-timer-chrome-ext</a> with the errors.</li></ul><h3>Notes</h3><ul><li>We can try compiling Haskell to JS by using <a href="http://haste-lang.org/">Haste</a> compiler instead of GHCJS.</li><li>Or use Purescript, which is very similar to haskell.</li><li>Or just stick to writing functional code in JS itself, using <a href="http://ramdajs.com/">Ramda The Ultimate</a> :D</li><li>But that will be for “<em>#Experiment Day 3 “</em></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8c8c699af815" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-functional-programmer/experiment-day-2-javascript-to-haskell-8c8c699af815">#Experiment Day 2: Javascript To Haskell</a> was originally published in <a href="https://medium.com/the-functional-programmer">The Functional Programmer</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Define, Ship and Blog Daily]]></title>
            <link>https://medium.com/the-functional-programmer/define-ship-and-blog-daily-cc5024c8c97f?source=rss-268c229a0528------2</link>
            <guid isPermaLink="false">https://medium.com/p/cc5024c8c97f</guid>
            <category><![CDATA[chrome-extension]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[life-lessons]]></category>
            <dc:creator><![CDATA[Jigar Gosar]]></dc:creator>
            <pubDate>Mon, 24 Oct 2016 08:22:12 GMT</pubDate>
            <atom:updated>2016-10-24T08:22:12.257Z</atom:updated>
            <content:encoded><![CDATA[<p>An experiment to deal with the subconscious burden of procrastinating work on procrastinating commitments across various projects.</p><h3>The Concern</h3><p>I have been working on multiple projects since last few weeks. Daily making decent progress. But recently, I feel dissatisfied by end of the day.</p><h3>The Epiphany</h3><p>Yesterday, I had an epiphany. “Can I define, code and ship, a minimal chrome extension, before end of the day? Let&#39;s see :D”</p><h3>The Definition</h3><ul><li>Recurring timer beeps every 25m.</li><li>Click to activate or press ctrl+shift+9.</li><li>Icon colour shows status.</li></ul><p>And voila! <a href="https://github.com/jigargosar/timer-chrome-ext">Here</a> is the brand new Chrome Extension uniquely named Timer. It took around 4hrs to get it done.</p><h3>The Conclusion</h3><p>There is none. But then I had another epiphany.</p><ul><li>“What if I define, ship and blog about work, on daily basis?”</li><li>“It should lead to sweet satisfaction at the end of the day”</li></ul><h3>Let the experiment begin!</h3><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cc5024c8c97f" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-functional-programmer/define-ship-and-blog-daily-cc5024c8c97f">Define, Ship and Blog Daily</a> was originally published in <a href="https://medium.com/the-functional-programmer">The Functional Programmer</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to select text on webpages like a PRO]]></title>
            <link>https://medium.com/@jigargosar/text-selection-on-web-pages-is-so-fucking-frustrating-d61e79b072a6?source=rss-268c229a0528------2</link>
            <guid isPermaLink="false">https://medium.com/p/d61e79b072a6</guid>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[website]]></category>
            <category><![CDATA[tips-and-tricks]]></category>
            <category><![CDATA[tips]]></category>
            <dc:creator><![CDATA[Jigar Gosar]]></dc:creator>
            <pubDate>Sun, 16 Oct 2016 09:11:07 GMT</pubDate>
            <atom:updated>2016-10-21T03:50:23.919Z</atom:updated>
            <content:encoded><![CDATA[<p>Because Text Selection on Web Pages is still frustrating</p><h3>How to quickly select any text</h3><ul><li>double/triple click on first/last word,</li><li><strong>don’t lift the mouse</strong></li><li>Now just drag.</li></ul><p>You no longer have to click at the precise start of the word to begin selection, <strong>Kaboom!</strong></p><blockquote>Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now,</blockquote><h3>How to select text within links. Muahahaha!</h3><ul><li>hold ctrl+alt key, while dragging with single/double/triple click.</li><li>some browsers will open tab in background, small price to pay.</li></ul><blockquote><a href="#0">Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now, Try it now,</a></blockquote><h3>How to select long text without the painfully slow “drag-scroll”</h3><ul><li>Click at the start/end of text you want to select</li><li>Then just scroll till end position is in view</li><li>Now shift click at the end.</li></ul><p>Go on! try it now on this page.</p><blockquote>Like, share, recommend. Make me happy!</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d61e79b072a6" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Tip #1 Install “Hearthstone Deck Tracker”]]></title>
            <link>https://medium.com/hearthstone-adventures/tip-1-install-hearthstone-deck-tracker-b27f69faedf?source=rss-268c229a0528------2</link>
            <guid isPermaLink="false">https://medium.com/p/b27f69faedf</guid>
            <category><![CDATA[hdt]]></category>
            <category><![CDATA[tips]]></category>
            <category><![CDATA[hearthstone]]></category>
            <category><![CDATA[hearthstone-deck-tracker]]></category>
            <dc:creator><![CDATA[Jigar Gosar]]></dc:creator>
            <pubDate>Mon, 03 Oct 2016 08:28:04 GMT</pubDate>
            <atom:updated>2016-10-03T08:32:53.996Z</atom:updated>
            <content:encoded><![CDATA[<p>It greatly simplifies importing different decks from web</p><p><a href="https://hsdecktracker.net/">Hearthstone Deck Tracker - Deck and stats tracking for Hearthstone</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b27f69faedf" width="1" height="1" alt=""><hr><p><a href="https://medium.com/hearthstone-adventures/tip-1-install-hearthstone-deck-tracker-b27f69faedf">Tip #1 Install “Hearthstone Deck Tracker”</a> was originally published in <a href="https://medium.com/hearthstone-adventures">Hearthstone Adventures</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[“Fuck You Evernote” for restricting app usage to 2 devices]]></title>
            <link>https://medium.com/@jigargosar/fuck-you-evernote-for-restricting-app-usage-to-2-devices-e7e9c1f2927b?source=rss-268c229a0528------2</link>
            <guid isPermaLink="false">https://medium.com/p/e7e9c1f2927b</guid>
            <category><![CDATA[rant]]></category>
            <category><![CDATA[evernote]]></category>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[notetaking]]></category>
            <dc:creator><![CDATA[Jigar Gosar]]></dc:creator>
            <pubDate>Wed, 03 Aug 2016 07:14:22 GMT</pubDate>
            <atom:updated>2016-08-03T07:14:22.995Z</atom:updated>
            <content:encoded><![CDATA[<p>You want to make more money. I can understand that.</p><p>But you take away that which you gave for free, <strong>Fuck You</strong> for that.</p><p>Personally, I was more than happy with an old notekeeping, windows only software called. “<a href="http://www.tranglos.com/free/keynote_main.html">Keynote</a>” (Not to be confused with Mac OSX’s presentation/slides app of the same name.)</p><p>But it was windows only, so no sync, no multi device usage. :(</p><p>I have tried google docs, google keep, simplenote, they all suck in one way or another. Evernote was horrible too, but least so compared to alternatives.</p><p>One has to use “<a href="http://www.tranglos.com/free/keynote_main.html">Keynote</a>” in order to appreciate it. And only then one can realize why all the other note taking apps suck. (Special wink to <a href="https://github.com/kalpeshptl">Kalpesh Bhai</a>)</p><p>So readers, if you have any other recommendation do let me know. Right now I am contemplating re-re-re-starting my simpleoutliner project.</p><p>And If I do, I shall list in detail what features are crucial for a personal note taking application.</p><p>Meanwhile…</p><h3>“Fuck You EverNote”</h3><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e7e9c1f2927b" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>