<?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"><channel><title><![CDATA[Stack Frames - Rajorshi's Blog]]></title><description><![CDATA[Open-Source, Cloud, Linux enthusiast. Indie Hacker. Engineering & Infra Lead.]]></description><link>https://rajorshi.net</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Apr 2026 05:16:21 GMT</lastBuildDate><atom:link href="https://rajorshi.net/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Pros and Cons of Amazon Workspaces]]></title><description><![CDATA[Welcome to my blog again, and this article will focus on the pros and cons of Amazon's  DAAS  platform: Amazon (AWS) Workspaces. I've used Workspaces as my primary desktop at work for over 1.5 years and you can consider this post as a long-term revie...]]></description><link>https://rajorshi.net/amazon-aws-workspaces-pros-cons</link><guid isPermaLink="true">https://rajorshi.net/amazon-aws-workspaces-pros-cons</guid><category><![CDATA[AWS]]></category><category><![CDATA[Startups]]></category><category><![CDATA[Cloud]]></category><category><![CDATA[Linux]]></category><dc:creator><![CDATA[Rajorshi Biswas]]></dc:creator><pubDate>Tue, 16 Nov 2021 15:19:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1631507284140/RUiYQE-gj.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to my blog again, and this article will focus on the pros and cons of Amazon's  <a target="_blank" href="https://www.vmware.com/topics/glossary/content/desktop-as-a-service">DAAS</a>  platform: Amazon (AWS) Workspaces. I've used Workspaces as my primary desktop at work for over 1.5 years and you can consider this post as a long-term review / list of pros-cons. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637074094657/kQVmYMPXL.png" alt="image.png" /></p>
<h2 id="overview">Overview</h2>
<p>Workspaces is the Amazon / AWS answer to Citrix, VMWare and other VDI solutions. Launched in 2014, this service was useful to us as we were looking for a replacement to traditional desktops as we were bootstrapping ourselves in the midst of the pandemic (early/mid 2020). With all of us working from home, it made sense to try out Workspaces, as we were an AWS shop otherwise as well. Remote work is touted as one of the main benefits on the  <a target="_blank" href="https://aws.amazon.com/workspaces/">homepage</a> , and I would agree.</p>
<p>Amazon offers both Linux and Windows workspaces. Our primary use case was with Linux, though we've tried Windows based workspaces as well for certain use cases. </p>
<h1 id="pros">Pros</h1>
<p>I've included a section on how to get started with a free workspace for experiments towards the end of this article, but let's jump straight to the pros of Workspaces.</p>
<h3 id="easy-setup">Easy Setup</h3>
<p>The point-and-click (or API / CLI driven) interface to create a new workspace for users is dead simple. All you need is an email address of the end user. Although there is a user directory underneath (via  <a target="_blank" href="https://aws.amazon.com/directoryservice/">AWS Directory Service</a> ), the quick setup offered sets up this directory automatically. Especially for the Windows world, although you have BYOL options, I'm sure you'd appreciate not having to worry about Windows licensing. </p>
<h3 id="integration-with-amazon-vpc">Integration with Amazon VPC</h3>
<p>This is IMO <em>the</em> killer feature especially if you're already on AWS for the most part. When you set up your workspaces infrastructure, you can host workspaces exactly as you would with EC2 instances. That is, workspaces can live within your private VPC, and be exposed to the internet via usual NAT gateways. Not just that, you can choose to have workspaces in the same VPC that hosts your dev infrastructure - meaning workspaces can access other EC2 instances, your DNS,  <a target="_blank" href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html">private Route53 hosted zones</a>  and all other infrastructure conveniently. 
You can also add extra security groups to your Workspaces. For example, I've added an extra group that allows developers to access webapps of each other on certain HTTP ports.</p>
<h3 id="decent-performance">Decent Performance</h3>
<p>For both Linux and Windows workspaces, I've found the performance to be good enough (not talking about network latency etc. here) and representative of the class of machines you select while setting up your workspace (Standard / Power / Performance etc.). </p>
<h3 id="easy-root-access">Easy <code>root</code> access</h3>
<p>With a configuration switch, it is possible to enable root access for Workspaces users. While it is possible to do a lot these days without it, true-blue Linux developers always appreciate having the ability to run services as root - and this has helped folks learn more about Linux, <code>systemd</code>, docker etc. Because, like EC2 instances, your Workspaces are still isolated units, you can be reasonably confident that developers won't / cannot mess with other shared resources.</p>
<h3 id="custom-images">Custom Images</h3>
<p>As with other VDI solutions, you can create your own images (AMI equivalents) including your favorite development tools etc. However, do note that the base image is Amazon Linux 2 (which I find to be quite stable) and some users may prefer Ubuntu flavors. If your poison of choice is Windows, AWS also includes the Workspaces Application Manager ( <a target="_blank" href="https://aws.amazon.com/workspaces/applicationmanager/">WAM</a> ) that enables you to push Windows applications to Workspaces.</p>
<h3 id="self-service-options">Self Service Options</h3>
<p>Workspaces allow a decent set of self-service options. Depending on how much freedom is warranted, you may even give permissions to change the type (performance) of the instance. I'd recommend to at least allow the ability to restart / rebuild the Workspace for attempting self-repairs.</p>
<h1 id="cons">Cons</h1>
<p>Workspaces land has some cons that you should be aware of before going all in. </p>
<h3 id="latency-sensitive">Latency Sensitive</h3>
<p>By far the biggest complaint with Workspaces will evidently be one not in your control - latency issues and lag. On most occasions, the round-trip-time (RTT) from the user desktop to his/her workspace is what matters the most. Amazon offers  <a target="_blank" href="https://clients.amazonworkspaces.com/Health.html">this</a>  helpful page to check the best performing regions - but of course you already may have a region selected.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637067681531/Mu80So2Zs.png" alt="image.png" /></p>
<p>As shown above, I'd always recommend regions with latency &lt; 100ms. Do note that even if you're thinking of multiple workspaces regions for your users, there may be extra complexities with respect to user directories. </p>
<h3 id="limited-sso-options">Limited SSO Options</h3>
<p>AWS provides the extremely useful  <a target="_blank" href="https://aws.amazon.com/single-sign-on/">AWS SSO</a>  service that many firms use to single-sign-on employees / developers. However, unfortunately, you cannot use this to sign in to Workspaces. Instead you need to set up a directory (either Simple AD - free but present in a few regions, or AWS managed Microsoft AD - the behemoth) and authenticate with that. 
If you use Azure AD, you  <a target="_blank" href="https://aws.amazon.com/blogs/desktop-and-application-streaming/add-your-workspaces-to-azure-ad-using-azure-active-directory-domain-services/">can connect</a>  to it, but the setup isn't simple and requires VPN connectivity between AWS and Azure.
Similarly MFA is possible, but the setup isn't simple. </p>
<h3 id="linux-needs">Linux needs ❤️</h3>
<p>Unlike the MacOS and Windows clients, the Linux client is sub-par. Notably, copy-pasting to-from the workspace does not work. In addition, Amazon has implemented a new protocol known as  <a target="_blank" href="https://aws.amazon.com/workspaces/wsp/">WSP</a> (instead of the older Teradici  <a target="_blank" href="https://www.teradici.com/what-is-pcoip">PCOIP</a> protocol) - which unfortunately is supported only in Windows workspaces.</p>
<h3 id="somewhat-pricey">Somewhat pricey</h3>
<p>Workspaces can be used in two modes:</p>
<ul>
<li><strong>AutoStop </strong>- you're billed per hour, with an upfront monthly payment</li>
<li><strong>AlwaysOn </strong>- you're billed for the entire month</li>
</ul>
<p>The AutoStop workspaces may be shut down after some inactivity, and requires a couple of minutes to boot up. In contrast, the AlwaysOn workspaces are immediately available. 
No matter which one you choose, Amazon Workspaces do tend to be slightly expensive if you compare with outright purchase of a laptop over a long duration. Unfortunately compute savings plans or other volume discounts don't apply.</p>
<p>However, do keep in mind the indirect costs of maintaining your own laptop policies, server infra, the ease of OS updates in your calculation. It may or may not make sense for you given the size and geographical distribution for your users.</p>
<h3 id="limited-backup-options">Limited backup options</h3>
<p>In certain cases, I was not too satisfied with the restore capabilities of Workspaces. You cannot restore to a somewhat older state (say, a week/month back) - but only to a "last known good config" sort-of state. One common problem that occurs is users filling up their home partitions, and the only way is to revert to older versions.</p>
<h3 id="aws-ssm-could-be-easier">AWS SSM could be easier</h3>
<p>Slight nitpicking here 😀. By far one of my favorite lesser-known hodge-podge of services is AWS  <a target="_blank" href="https://aws.amazon.com/systems-manager/">Systems Manager</a> or SSM. One cool feature in SSM is the ability to trigger commands across a fleet of instances. These commands could be one-off shell scripts or full blown Ansible playbooks. 
Unfortunately, while SSM works well with EC2 instances, setting them up with Workspaces is a bit of a  <a target="_blank" href="https://aws.amazon.com/blogs/mt/software-deployment-to-amazon-workspaces-using-aws-systems-manager/">pain</a>. I expect this to be a single feature toggle.</p>
<h1 id="trying-out-workspaces">Trying out Workspaces</h1>
<p>Anyway, don't take my word for it. You can try Workspaces for free - some instance types are part of the <code>Free Tier</code>. Create an AWS account, login and simply create a new Workspace in your preferred region - the wizard is trivial to follow.
Use the "Quick Setup" button:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637069294432/kOLInzR-0.png" alt="image.png" /></p>
<p>Then simply select a bundle that says "Free Tier", enter your user details and hit the blue button!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637069580228/3V1MvE1M4.png" alt="image.png" /></p>
<p>It usually takes about 20 minutes for AWS to provision the workspace. Once this is done, you'll get an email with instructions to authenticate and login.</p>
<p>One nicety that was present in the past is Amazon's  <a target="_blank" href="https://aws.amazon.com/blogs/desktop-and-application-streaming/amazon-workspaces-free-tier-extension-2021/">Work From Home offer</a>  that allowed up to 50 workspaces for free for a limited time. Unfortunately this seems to have expired (I think). </p>
<h1 id="conclusion">Conclusion</h1>
<p>Overall, I'd definitely recommend individuals or small startups to try Workspaces for a month and see if it works for you. It is a solid offering and we've rarely faced any major issues.  However, ensure that your users are close to the region where you're setting up Workspaces and have a decent internet connection. </p>
]]></content:encoded></item><item><title><![CDATA[Cascadia Code on Linux (Amazon Workspaces)]]></title><description><![CDATA[Introduction
Well, this admittedly is a bit odd for the first post ever on this blog (hey Hashnode - initial impressions are very slick - great job!) - but I wanted to jot down some quick instructions in case someone is looking to use Microsoft's fan...]]></description><link>https://rajorshi.net/cascadia-code-on-linux-amazon-workspaces</link><guid isPermaLink="true">https://rajorshi.net/cascadia-code-on-linux-amazon-workspaces</guid><category><![CDATA[fonts]]></category><category><![CDATA[Linux]]></category><category><![CDATA[Visual Studio Code]]></category><category><![CDATA[AWS]]></category><dc:creator><![CDATA[Rajorshi Biswas]]></dc:creator><pubDate>Thu, 19 Aug 2021 07:38:41 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1629355418503/5c1dLSBFM.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="introduction">Introduction</h1>
<p>Well, this admittedly is a bit odd for the first post ever on this blog (hey <a class="user-mention" href="https://hashnode.com/@hashnode">Hashnode</a> - initial impressions are very slick - great job!) - but I wanted to jot down some quick instructions in case someone is looking to use Microsoft's fantastic  <a target="_blank" href="https://github.com/microsoft/cascadia-code">Cascadia Code</a>  font on Linux. </p>
<p>Specifically, my target is an  <a target="_blank" href="https://aws.amazon.com/workspaces">Amazon Workspace</a>  Linux desktop, though these would work for RHEL / Fedora flavors as well. </p>
<p>For the impatient, head over to Step 1.</p>
<h1 id="wait-but-why">Wait, but why?</h1>
<p>Aren't there good enough fonts out there for Linux? Well, as much as I love Linux, when you are using Linux as a primary desktop (which I use for work), I find the font options decent, but usually not able to compete with MacOS or Windows in terms of the sheer quality / variety of fonts as well as the rendering itself. There are legitimate reasons for this - but let's not dig down that rabbit hole. </p>
<p>Secondly, I'm a huge font-nerd. I've wasted countless hours of my professional life trying out multiple monospaced fonts on Windows, Mac and Linux. So far, my absolute favorite and gold-standard has been Microsoft's <strong>Consolas </strong> when on Windows - until Cascadia Code came along (and now I keep switching between the two 😁).</p>
<p>With Cascadia Code, I have the same slick experience on my Linux work desktop that I have on Windows Terminal and WSL2 (the current Windows 10 developer experience is awesome - food for another blog post though). </p>
<p>For example, here is a screenshot showing a terminal and VS Code with this font using differing weights and backgrounds:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1629353598410/eJj2eGgIK.png" alt="image.png" /></p>
<h1 id="step-1-get-the-fonts">Step 1: Get the fonts</h1>
<ul>
<li>First, head off to the GitHub  <a target="_blank" href="https://github.com/microsoft/cascadia-code/releases">release page</a> for this font. </li>
<li>Copy the URL to the zip-file containing the latest release (<a target="_blank" href="https://github.com/microsoft/cascadia-code/releases/download/v2106.17/CascadiaCode-2106.17.zip">this</a> one as of this blog post). </li>
<li>Download using your favorite browser, or <code>curl</code> or <code>wget</code> and save it to your filesystem.</li>
<li>Extract the archive. On the terminal, the following works:</li>
</ul>
<pre><code class="lang-shell">unzip ~/Downloads/CascadiaCode-2106.17.zip
</code></pre>
<h1 id="step-2-install-the-fonts">Step 2: Install the fonts</h1>
<h2 id="the-command-line-way">The Command Line Way</h2>
<ul>
<li>Copy the fonts to your user font-cache directory, and refresh the font cache:</li>
</ul>
<pre><code class="lang-shell">$&gt; mkdir -p ~/.local/share/fonts/
$&gt; cp ~/Downloads/ttf/Cascadia*.ttf ~/.local/share/fonts/
$&gt; fc-cache -v

.... lots of output
/usr/bin/fc-cache-64: succeeded
</code></pre>
<h2 id="the-ui-way">The UI Way</h2>
<ul>
<li>Open the folder containing the <code>.ttf</code> fonts using your preferred file manager</li>
<li>Double-click the fonts you want to install - this should bring up a font viewer app, where you can hit the <code>Install</code> button.</li>
</ul>
<h1 id="step-3-use-the-fonts">Step 3: Use the fonts</h1>
<p>This step largely depends on the application where you wish to see Cascadia Code in all its glory. For example, for VS Code, you need to use the following in <code>File</code> &gt; <code>Preferences</code> &gt; <code>Settings</code>:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1629354643385/3PAZyo7Jk.png" alt="image.png" /></p>
<p>Similar methods exist for the terminal (<code>Edit</code> &gt; <code>Profile Preferences</code>) or Intellij IDEA (<code>File</code> &gt; <code>Settings</code> &gt; <code>Editor</code> &gt; <code>Font</code>).</p>
<h4 id="tip">💡 Tip</h4>
<p>The default Cascadia Code may be too bold for many folks - in that case try out Cascadia Code <strong>SemiLight</strong>.</p>
<h1 id="conclusion">Conclusion</h1>
<p>Hopefully you like Cascadia Code. If not, don't forget to try out other monospaced fonts on Linux. Several of your favorite Windows / MacOS fonts may actually be usable on Linux - give it a try!</p>
<h4 id="credits">Credits</h4>
<p>Cover Photo by <a href="https://unsplash.com/@mbaumi?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Mika Baumeister</a> on <a href="https://unsplash.com/s/photos/typography?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p>
]]></content:encoded></item></channel></rss>