Jason Sultana

Follow this space for writings (and ramblings) about interesting things related to software development.

Using linux as a WFH box

15 Nov 2020 » bash, career, others

G’day guys!

Today I wanted to talk a little bit about my experience using Linux on my laptop, which I then use to RDP into my Windows office PC while Working From Home (WFH). Understandably connecting to your remote machine at the office is going to take a couple of steps, likely involving at least a VPN and RDP client. You may be doubtful as to whether native binaries for these even exist on Linux. Well, that may have been true perhaps a decade ago, but I was actually surprised to find just how much support there actually is for Linux these days.

Why would you want to run Linux anyway?

A good question, so I thought it would be best to start here. For my exact circumstances, the main motivating factor was actually a faulty trackpad on my HP laptop. For what I can only put down as a hardware fault, one day the cursor just started moving about on its own free will, making it almost impossible to work productively. Unfortunately Windows 10 Home Edition doesn’t allow you to disable the trackpad, and uninstalling the trackpad driver would be quickly undone by Windows after a restart, where it would helpfully pick up the missing driver and re-install it for me. Before you put it down to a firmware or driver issue, the same problem still happens when I boot into Linux. The main advantage Linux offerred me is the ability to turn off the trackpad without purchasing a Win10 pro licence, and just use a USB mouse.

Now, you may not be having trackpad issues like I was, but there are still a couple more resons why you may want to consider moving to Linux, or at least dual booting (which is actually what I did).

  1. It’s noticably faster. I don’t have any hard numbers for you, but the difference in boot time is the difference between seconds and minutes, in favor of Ubuntu Linux over Windows 10 Home.

  2. It’s *nixy. This is one cool advantage over Windows. If you’ve been developing for a while, and haven’t been locked into Microsoft’s ecosystem, you’ve likely become pretty familiar with bash. Or maybe not - I am just speaking for myself after all. But having bash available all the time, out of the box is a huge plus. But it’s not just bash - even other almost essential components like ssh support is readily available in Linux, whereas in Windows, it needs to be patched in via PuTTY or something similar.

Which distro should I use?

Answering this with an absolute is likely to generate a fair amount of hate no matter how I put it - but then again, I’ve probably already done that by recommending Linux over Windows anyway, so here it goes. Personally I recommend Ubuntu for a WFH box, simply because it’s stable, has quite good support due to its popularity and it’s easy to get it up and running.

Okay, what do I need to get up and running?

Well, let’s think about what your current setup might look like, and try to replicate it on Ubuntu. For me, it looks something like this.

Outlook

I couldn’t find any native binaries for MS Outlook on Ububtu. Before you say “duh!”, MS did release a native MS Teams package for Linux, so we may be surprised and get Outlook someday too. Until then though, I find that Outlook online does a good enough job. Sure, you could link your Office Exchange account to Thunderbird or another native mail client, but the outlook webapp is actually so good that I really don’t think you need to.

Slack

If you’re using MS Teams over Slack at your organisation, then you can probably just follow the link to Teams I provided earlier and you’re good to go. If your team tends to use Slack though, then you have a couple of options. Slack does in fact have a native binary for Ubuntu, available as either a .deb package or via the Ubuntu Software Center. Having said that, I’ve found that the native binary has one annoyance which makes me prefer the webapp. Clicking links in the Slack app opens them within the context of the app itself, so it doesn’t share saved logins, cookies, etc with my actual browser. But just like Outlook, the webapp is actually good enough to just use directly, without the need for a native app. And in the case of Slack, if I’m not mistaken, it’s just a webapp nativised via Electron anyway, so you’re not losing any features by not using the Desktop version. To access to webapp, just go to https://my-workspace-id.slack.com/, replacing my-workspace-id with that of your actual company’s workspace.

MS Office (Word, Excel, Powerpoint)

Actually, a default install of Ubuntu already comes with LibreOffice, so these are all already taken care of. If you absolutely must have the MS Office versions, there is Office Online, or presumably you have MS Office installed on your remote office PC that you could use after RDPing. Next!

VPN

This will of course vary significantly depending on your VPN of choice - not all of them will have Linux binaries available. In my case though, the VPN provder offers a .deb package, and a .dmg for Mac OSX users as well. You may want to check this point first before committing to installing Linux.

RDP

There are a few RDP options available on Ubuntu, but the one that works the best in my experience is xfreerdp. To RDP into your remote machine, just open a terminal and run:

xfreerdp /v:$host /u:$username /workarea

You may want to alias this for convenience. One thing that’s worth noting is that to properly full-screen the RDP window, just hit Ctrl+Alt+Enter.

Web Browser

Your options are almost limitless here, but I personally just use FireFox which comes pre-installed on Ubuntu with a default install, and it’s been working well so far.

And that’s about it for me, really. I tend to do most of my actual programming via RDP, so that there is a clearer Separation of Concerns between what’s on my work PC and what’s on my private PC. I do still use my native home PC for Jira, submitting and reviewing PRs and reading and responding to mail - which can all be done in FireFox or whatever web browser you’re using.

What do you guys think? Have you tried using Ubuntu (or another Linux distro) for work? How did it go? Let me know in the comments! Catch ya!