<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sriram Velamur</title>
    <description>The latest articles on DEV Community by Sriram Velamur (@techiev2).</description>
    <link>https://dev.to/techiev2</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1849%2Fc9403253-5e0b-4a9d-a570-19cbfc2d89ed.jpeg</url>
      <title>DEV Community: Sriram Velamur</title>
      <link>https://dev.to/techiev2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/techiev2"/>
    <language>en</language>
    <item>
      <title>crisp; from the embers</title>
      <dc:creator>Sriram Velamur</dc:creator>
      <pubDate>Thu, 03 Oct 2024 09:40:36 +0000</pubDate>
      <link>https://dev.to/techiev2/crisp-from-the-embers-387e</link>
      <guid>https://dev.to/techiev2/crisp-from-the-embers-387e</guid>
      <description>&lt;p&gt;I spent some time in the recent past weeks pulling &lt;a href="https://getcrisp.in" rel="noopener noreferrer"&gt;crisp&lt;/a&gt; back up and incrementally adding more from its older avatar. Check out my brain dump of everything encountered during this phase - &lt;a href="https://status.techiev2.in/posts/phoenix/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  progress #reflection #indiehacker
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Introducing nodevirtualenv - a pure bash n+virtualenv clone</title>
      <dc:creator>Sriram Velamur</dc:creator>
      <pubDate>Sun, 20 Oct 2019 11:53:13 +0000</pubDate>
      <link>https://dev.to/techiev2/introducing-nodevirtualenv-a-pure-bash-n-virtualenv-clone-2edb</link>
      <guid>https://dev.to/techiev2/introducing-nodevirtualenv-a-pure-bash-n-virtualenv-clone-2edb</guid>
      <description>&lt;h1&gt;
  
  
  nodevirtualenv
&lt;/h1&gt;

&lt;p&gt;A virtualenv clone for NodeJS. Provides a flow that borrows from the convenience of both &lt;a href="https://github.com/tj/n"&gt;n&lt;/a&gt; and &lt;a href="https://github.com/pypa/virtualenv"&gt;virtualenv&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Rationale
&lt;/h4&gt;

&lt;p&gt;At &lt;a href="https://getcrisp.news"&gt;crisp&lt;/a&gt;, NodeJS powers our article content extraction services. A cause of concern during development/ deployment has been version maintenance. With containers, smaller team bandwidths meant high maintenance costs.&lt;/p&gt;

&lt;p&gt;Currently, &lt;a href="https://github.com/tj/n"&gt;n&lt;/a&gt; powers most of our NodeJS versioning requirements. It has been convenient for the most part since it installs a non-intrusive binary at /usr/local. The missing part with n was with a single version's use between two packages with different needs.&lt;/p&gt;

&lt;p&gt;A virtualenv kind of solution would be an ideal solution for these cases. While &lt;a href="https://github.com/ekalinin/nodeenv"&gt;nodeenv&lt;/a&gt; exists, the activate flow, pip install (as the primary mode) added load to picking it up.&lt;/p&gt;

&lt;p&gt;Ergo, &lt;a href="https://github.com/techiev2/node-virtualenv"&gt;nodevirtualenv&lt;/a&gt; comes in as an alternative.&lt;/p&gt;

&lt;h4&gt;
  
  
  Usage
&lt;/h4&gt;

&lt;p&gt;In its current state, nodevirtualenv allows installation of specific NodeJS versions inside $HOME/.node-envs/&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    nodevirtualenv -v &amp;lt;version&amp;gt; -p &amp;lt;envPath&amp;gt;

      -v        NodeJS version to install/use to run.
      -p        NodeJS installation path to use.
      -c        Script path to run with the requested version.

      --bin     Get the path for the NodeJS binary for the version specified.
      --list    List all locally installed NodeJS versions.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Caveat emptor
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;As such, the script works only on 64-bit GNU/Linux systems and uses the corresponding binary paths from NodeJS distribution channels. Support for Windows/non-GNU/Linux systems are forthcoming.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>node</category>
    </item>
    <item>
      <title>A Brave* adventure and a bird that sounds out of context.</title>
      <dc:creator>Sriram Velamur</dc:creator>
      <pubDate>Wed, 20 Feb 2019 05:15:45 +0000</pubDate>
      <link>https://dev.to/techiev2/a-brave-adventure-and-a-bird-that-sounds-out-of-context-33n4</link>
      <guid>https://dev.to/techiev2/a-brave-adventure-and-a-bird-that-sounds-out-of-context-33n4</guid>
      <description>&lt;p&gt;Why would a bank say they can't handle wads of cash, because they couldn't identify you? Confusing, right? Hey! Twitter, do listen.&lt;/p&gt;

&lt;p&gt;Earlier today, had an interesting situation while uploading a screenshot to Twitter mobile. A repetitive concern this, has opened up a channel to read up on fingerprinting and security. Read on, for what went wrong where is a funny lapse.&lt;/p&gt;

&lt;p&gt;The last few times I had tried uploading on Twitter mobile, things failed with a large image size message. And, some actually were large indeed at 12MB odd a piece, for the profile images. For some context, each of them were using the Brave web browser which has become my default these days. Speaking of default, you should migrate too; impeccable choice.&lt;/p&gt;

&lt;p&gt;Cutting to the chase, I didn't do what any researcher of situations would do; try another browser or image. Downloading a browser for this test and signing in were pains in increasing order, I'll be honest. So what should have ended up with clarity long back, took until a while back, when a 50kb odd screenshot would fail.&lt;/p&gt;

&lt;p&gt;Now that raises a brow or two even for the lazy bone like me, does it not? How could an image of about 50kb be large for resizing? To quote Twitter, "One or more images exceed the size limit and cannot be resized". Rather odd a message for Twitter to respond with there.&lt;/p&gt;

&lt;p&gt;This time around, tried something else without another browser to test things. Turned off all the safety toggles in Brave and voila! the upload went through fine. Next, turned on everything except the fingerprinting protection and things worked fine too. Once that gets turned on, things fail again.&lt;/p&gt;

&lt;p&gt;It is beyond me why Twitter would say the image is the concern when the underlying issue is elsewhere. Possible that this is an extreme of extreme situations when it comes to handling errors on a service. But, that doesn't quite warrant showing an unrelated error message to confuse the user.&lt;/p&gt;

&lt;p&gt;On that note, digging into Brave's source to see what exactly happens under the hood. And things are interesting to say the least. If you'd like to read up a bit more on what fingerprinting protection is, &lt;a href="https://github.com/brave/browser-laptop/wiki/Fingerprinting-Protection-Mode"&gt;this one&lt;/a&gt; from Brave browser is a good place.&lt;/p&gt;

</description>
      <category>twitter</category>
      <category>brave</category>
    </item>
  </channel>
</rss>
