loading...

Moving your workflow to Linux

andreanidouglas profile image Douglas R Andreani ・2 min read

Since forever, I've been a Windows user with almost zero knowledge of other Operational Systems. But I always found to develop inside Windows environments to be a little tricky since and if you are out of the Visual Studio environment things are even more complicated.

After a period considering a change to a MacOSX environment, I decided to try Linux, since it's free and work on (most) any hardware that works with Windows.

Linux TUX

HOW:

First, you will need to choose a distribution (flavor) of Linux that will suit your needs. I like to recommend Ubuntu Mate to new users for a couple of reasons:

  • It has the support and features of one of the most used distributions on the Linux world plus a great UI (Mate) that have a lot in common with other OS.

Just use Etcher to burn the image into a USB stick and plug into the PC before booting it. Your BIOS/UEFI must be set to read from the USB. Follow the instructions on the screen to install the OS (Backup any relevant data first, because this will erase your HD).

LANGUAGE SUPPORT:

Most Linux distributions have a large support for programming languages, from C to GO, you will only need to find the correct package for your distribution. To start just run the command sudo apt install build-essential to have the most common toolchain for C/C++ compiling that will help to install a lot of other development software like:

  • Python: sudo apt install python2 python3 python3-pip
  • Java: sudo apt install jdk8-openjdk
  • Javascript/Node: sudo apt install nodejs npm

PS: apt is a command line tool to help install packages into the system, like brew for MacOSX or choco for Windows, used by Debian like systems (Debian, Ubuntu, Mint). You can learn more at man apt

TEXT EDIT:

Most common text editors will work without any sweat, like Atom, Visual Studio Code, Sublime. Even some exclusive editors can make your life easier like Kate, Gedit, Geany and KDevelop.

GIVE IT A TRY:

If you are not comfortable to move an entire system to a Linux environment, you can still try it using some Virtual Machine environment, like VMWare Workstation or Oracle VirtualBox. You can see for yourself if it suits you and what you can learn from it.

CONCLUSION:

Linux systems are very powerful and fully feature to be your next development environment, just remember is not the same thing as Windows or MacOSX and you should approach it with an open mind.

And Remember Google is your friend. Do not be afraid to search for dumb things such: How to move a file from directory or How to install sublime on Linux. You are learning everything again and some easy things should not stop you.

Discussion

pic
Editor guide
Collapse
rivet92 profile image
Jaime

Finally someone that doesn´t blame Linux for not beeing a clone of Windows or tries to sell it talking about software freedom (Yes GPL is awesome, but people usually doesn't care about it). Some tips for begginers:

  • Dont be afraid of the teriminal, it aint that hard. The manpages and google are your friends.
  • If you search for something try to look first in your distro's wiki, even in other distros wiki, package names will probably change, but everything else should be almost identical.
  • Avoid pasting commands from the internet in the terminal without knowing what they do. Take a look at manpages first at least.
  • Try new software, terminal emulators, shells, text editors, IDEs, file managers, even the whole destkop enviroment can be switched, don't get stucked into the default programs of your distro. Take a look at the ubuntu software center for example, or simply search for a type of program instead of the name of one in your package manager.
  • Have fun, if you aren't confident enough to install it in your main pc, install it in a VM, or an old pc, install different distros, try things till you break something and take a look about why did it broke.
Collapse
tux0r profile image
tux0r

GPL is awesome

The restrictive GPL is one of the reasons why I don't really like Linux, actually. I want freedom.

Collapse
andreanidouglas profile image
Douglas R Andreani Author

that is my main point when I recommend Linux to someone. you should not treat it as a regular Windows or Mac environment. each one is it one beast

Collapse
bgalvao profile image
Bernardo

Well, idk why, I always get excited seeing other people trying out linux :D Coming from windows 10, it felt great to have an OS which is more supportive of installations and software for devs and without all the ad banners that W10 usually threw at me.

Another tip ;). The apt command is to install packages/software from repositories that are in your apt index, which aren't always the latest version. Or sometimes, they are not in the repos.

So, to install software outside any repo, you will usually find .deb packages (rpm if you are on a non-Debian based distro). For example, to install VS code, you download vscode.deb from their website. Then, in the terminal you run dpkg -i path/to/vscode.deb. There's lots of great stuff in Linux.

Collapse
marcelbochtler profile image
Marcel Bochtler

The problem with this approach is that you won't get any updates for the software installed this way.

The preferred way to install software should always be to use the package manager provided by the distribution (apt on Ubuntu and Debian based ones).
If the software isn't in the official repository, use a PPA (Personal Package Archive). Preferably an official one. They are kept up to date and provide updates using the package manager.

Only if these two options fail you should use the .deb, and be aware of the implications.

Collapse
cyberbobs profile image
Boris Moiseev

You're not exactly wrong, but some Debian packages (including Google Chrome and Visual Studio Code) provided by software vendors automatically add their own software repositories to system and so are automatically updated using the same package manager.

Collapse
ben profile image
Ben Halpern

Thanks for this. I've used Linux before and have been considering diving back in, at least part time. This is helpful.

Collapse
andreanidouglas profile image
Douglas R Andreani Author

feel free to contact me at @andreanidouglas if you have any questions

Collapse
piotroxp profile image
Piotr Słupski

Hey! I am really glad more people think this way.

Back in 2008 I was looking to learn coding in c++. After trying Windows and Visual Studio, moving to Linux felt like the ultimate freedom.

I dont have to click through all this and can just do gcc main.cpp? No shit! I dont need to wait five fucking minutes for the text editor to run!? What kind of magic...???

Coding on Linux is a breeze. With great tools like CMake, eclipse, emacs (fuck Vi), CLang, all the languages, all the nice tools to make stuff work is already there, just waiting.

Unless you want to play a game and waste your time spent at a computer (entertainment is overrated), then using Linux is the best thing one can do to really grasp computing.

Thanks for this piece again, I support the case. Using Windows in 2018 is a sign of technological weakness. A properly configured distro should be a status symbol.

Collapse
baukereg profile image
Bauke Regnerus

Switched from Windows to Ubuntu 1.5 years ago. Main reason were the lack of a decent build-in terminal and the horrible file system of Windows. Although some of my troubles should be fixed by now, I'm still a very happy Linux user not considering to ever go back. Feels good to be independent of Apple and MS.

I have a text file containing all terminal commands to configure my laptop and install all software necessary, so with a fresh laptop/system I can be up and running in like 15 minutes and be productive again.

The only thing missing for me is a good Photoshop alternative. I Tried GIMP and I use Pinta at the moment, but both can't match PS. Also still no Unity3D support for Linux.

Collapse
andreanidouglas profile image
Douglas R Andreani Author

Inhale the same approach to have a git repository with all my config files

github.com/andreanidouglas/dotfiles

Collapse
matt123miller profile image
Matt Miller (he/him)

I also recently started working on this for my various cross platform needs :) Next step is a big install script for mac/ubuntu and store all my VSCode extensions...

github.com/matt123miller/dotfiles

Collapse
jrock2004 profile image
John Costanzo

Bash on Windows has made working in Windows so much better. I mean if you have no computer and your build one the Linux is the way to go. There are 2 issues that keeps windows around for me.

1) Hidpi support is not there yet
2) driver firmware updates cannot be done in Linux.

Collapse
andreanidouglas profile image
Douglas R Andreani Author

The Linux Filesystem Susystem on Windows 10 is really useful :)

Collapse
jrock2004 profile image
John Costanzo

The one pain in the arse, is I run into permission issues alot. But it may be user error so oh well

Thread Thread
andreanidouglas profile image
Douglas R Andreani Author

This is something that every Linux user will need to deal, one day or another, it's the way that the kernel/OS is built upon. But remember, it's all for your own safety.

Collapse
paveltrufi profile image
Pavel Razgovorov

I am waiting Microsoft to port its Office Suite to finally delete my Windows partition.

Switching from Windows to Linux (or macOS if you prefer it) is like ~70% productivity boost :D

Collapse
_shuriken_ profile image
AlessandroPellizzari

I've used small parts of Office365 on Linux and it worked pretty well.

I know they are not 100% the same as the "offline" versions, but maybe you can give it a try.

They are not my main tool (not even second or third, TBH :D) but... YMMV.

Collapse
andreanidouglas profile image
Douglas R Andreani Author

Yes, this is the only missing piece. I can do some work on office online, but excel is a must for me.

Collapse
codemouse92 profile image
Jason C. McDonald

While proprietary, WPS Office is free on Linux and has excellent Office support, and a nearly identical interface.

Thread Thread
paveltrufi profile image
Pavel Razgovorov

I tried it before, but I still use LibreOffice for my personal documents. The main reason I need MSOffice (MSWord especially) is to open documents and assignments that my teachers publish (most of them use PDF, but some still use Word)

Thread Thread
codemouse92 profile image
Jason C. McDonald

To be honest, I use LibreOffice exclusively. The newer updates have improved support of MSOffice formats to the point that no one ever knows the difference if I use LO.

Thread Thread
cannuhlar profile image
Can Nuhlar

I wrote my thesis on LibreOffice didn't have a single problem. It's just as good as MS Office.

Collapse
arakawadotca profile image
gustavo

Yeah, I have the same problem. I do a lot of stuff in VBA, and I still haven't found another spreadsheet program with a good scripting system.

Collapse
huaba profile image
Huaba

Moved from Windows to Linux about 4 years ago. I used MacOS beside Windows for 15 years before.

It was a little bit hard at the beginning and used my Windows VM a lot. But now i'm totally happy with it and don't need any Windows VM. Never wanna go back!

Some software hints for Linux:

  • SmartGit or GitKraken - GIT Tools
  • PhpStorm - PHP IDE
  • VS Code - IDE
  • Terminator - Terminal-Software
  • Albert or Franz - like Spotlight on Mac
  • ClipIt - Clipboard-Manager
  • Inkscape - Graphik-Tool, use it for SVG
  • GoForIt - Todo-Tool
  • Enpass - Passwordmanager with Selfhosting
  • LibreOffice - alternative Office, it's ok
  • MysqlWorkbench - managing Mysql databases
  • Insync - Google Drive Synctool with multiaccount support
Collapse
phlash909 profile image
Phil Ashby

Always a fun topic, thanks Douglas :)

Choosing the path of least pain usually makes sense.. eg: if you deploy on <insert OS here>, it makes little sense developing/testing outside that OS (unless you /like/ fixing bugs in production!), however the isolation provided by virtualisation technologies or containers can allow you to stick with your favourite tooling and still get some value from your tests.

Personally I use a Linux environment given the choice, as I find it a less frustrating experience (ie: package managers that usually work, software written for love not money so not always an MVP/buggy/beta, and the maturity of this: en.wikipedia.org/wiki/Unix_philosophy), unfortunately I am stuck with Windows on my corporate machine (again):


I've spent many years being annoyed by the fact that in many corporate environments it's the usual policy to supply everyone with a standard Windows machine (with little/no permission to install anything), then ask teams to deploy most of their software to non-Windows servers - eh? Even sillier are the arguments for doing so, usually: 'security', despite placing /way/ more attention on production server (ie: non-Windows) security than desktop or laptop systems; 'central manageability', which usually translates as an ability to trash your stuff accidentally, and in many cases does not scale well. It has much the same issues as a monolith system design, too highly coupled and fragile, and similar solutions: local autonomy (BYOD?), specific services (eg: email, directory services, written policies, auditors), defined security boundaries (eg: federated domains).

Collapse
elcotu profile image
Daniel Coturel

Hi,
Good post, it is full of good advice. I've always been a Windows user, but last months I've been working with serveral Linux VPS and I like it. So maybe next year I'll try to install a development PC with Linux and this info will be very important for that purpose.
Greetings

Collapse
dwd profile image
Dave Cridland

Also Docker. Docker's native on Linux. On a Mac, for instance, it runs up a hidden VM which actually runs all the Docker containers, limiting the amount of memory and disk it can use. On Linux, it can use all the memory, and more importantly, all the disk - and all at native speed.

Collapse
eazel7 profile image
Diego

github.com/nvbn/thefuck < this tool should come by default

Collapse
tracypholmes profile image
Tracy P Holmes

Love this! I was dual-booting for a while. Now I dual-boot my laptop, and use VirtualBox for my desktop. I adore Linux. I think it's an especially friendly move for new users that are used to Windows keyboard shortcuts. You only have to make an adjustment here or there. The other reason I push Linux is because it forces you to learn as well as LEARN how to debug and learn. And that is something devs (especially newer ones) really need to learn to do. I would keep going, but great post!

Collapse
riscie profile image
riscie

Nice article.
Wanted to let your readers know that with dotnet core it‘s now also very convenient to use c# on linux. github.com/dotnet/core/blob/master...

Collapse
alexmidjich profile image
Alexander Midjich

I have for a while now thought about trying Linux but I have been a little scared about switching to something different. But this article together with all the comments have now given me a boost to try it out. Thanks for all the great information

Collapse
jppage profile image
jppage

I recently swapped my Mac Air for a good spec Dell XPS 13 running Ubuntu. It's a lovely development environment. I use Linux Mint at work but on balance prefer Ubuntu 16.04 so will be changing that soon.

Collapse
vingam profile image
Vincent

I'm really glad to know that more and more people are approaching the Linux environment, I think that it's always worth a try.

The possibility to have all you need in seconds, check what you're actually installing on your machine (thanks to the open source code for so many programs), choose among dozens of different programs, try them and decide which fit your necessities, and so on, is a very big deal, that will not make you regret the time spent to install, configure and set up all the system, you know, "the scary passage from a system to another completely different".

Good job, and have fun!

Collapse
jvarness profile image
Jake Varness

Linux Mint and Xubuntu are two of my favorite distros

Collapse
jasongabler profile image
Jason Gabler

Having UNIX-like experience is great for any resume, and just a good, all around benefit to your work.

I started my secondary education and my career on BSD UNIX. The first time I touched a DOS/Windows computer I was amazed by the waste of a CPU being used by one process, one person :) I was ecstatic the first time I was able to get BSD on my desktop, followed by Linux on a laptop. That joy continued for about 20 years, with Ubuntu as the last version I used. All through that, at least once or twice a year (much more so in earlier years) I had to spend some hours tweaking because of some updated driver or change in X Windows or OS software. I got tired of it. I just don't have the time anymore. I switched to a Macbook and felt, and still feel that, though I've lost a bit of the flexibility, shit just works. That's time and money back in my pocket. And really, I spend most of my time developing within a local Vagrant CentOS VM or doing devops stuff while ssh'd into remote RedHat systems. And I get fancy mail and calendar software that just works. Like everything, there was a bit of a learning curve, but it was pretty easy.

Collapse
nelruk profile image
Nelson

You said: Google is your friend. And it is. For a very long time, I was afraid to waste my time doing it that then I realized how much time was saving doing the searching. Your post is very helpful.

Question: Why Ubuntu Mate and not Ubuntu?

Collapse
andreanidouglas profile image
Douglas R Andreani Author

I prefer the Mate desktop environment than Unity or Gnome, for newbies, since it's more straightforward in its approach. But the beautiful about Linux is that you are free to choose wherever fits your workflow, so feel free to try everything around you

Collapse
bgadrian profile image
Adrian B.G.

Yes, every dev should at least try Linux, you can learn how things works by opening the hood of your car.

  • You can play with it using a Live USB stick, it doesn't affect your current computer OS
  • you can install Linux after Windows and you can have dual boot, in case of emergency you have a fallback

At work I use MacOS and I'm very happy with it, but at home I try every couple of years to make a full dev env in Windows, this year it failed the test again. I kept getting errors, find edge cases and issues, after 4 days of google/fix & repeat I quit, I made a VM and installed Ubuntu + all the goodies inside it, it worked from the first run.

Collapse
psnebc profile image
Patrick Schanen

My installation on Linux Mint ( .deb ) and now Fedora 27 (.rpm )

My Software installed on Linux Mint before switching to Fedora.
Now I use almost the same sofware on Fedora 27 Workstation.

Collapse
siko279 profile image
Sijmen Koffeman

What I like about (modern) Windows is options and choice.
Want Linux? Enable WSL and install a distro.
The desktop experience in Windows is far more evolved and productive. I dont want to miss that, neither do I want to be locked in...

Collapse
siko279 profile image
Collapse
tux0r profile image
tux0r

since it's free and work on (most) any hardware that works with Windows.

So is BSD, except that BSD is reliable and free from 12-year-old kids whose first word was "Windoze".

Collapse
codemouse92 profile image
Jason C. McDonald

I'll add that C and C++ support are superb in Linux. However, I recommend using the LLVM Clang toolchain, which isn't terribly hard to install and use.

Collapse
michaelhonan profile image
Michael

Wish I could move to Linux at work. We have to use bloody Delphi and moving the project to Lazarus is not an option.

Collapse
vkamayiannis profile image
Valantis Kamayiannis

I tried so hard to remember when I wrote this comment and then I realized that I never did. Same problem here - working with Delphi and wished I could move to Linux.

Collapse
oyelowotobiloba profile image
Oluwatobiloba

No going back, linux to me is a revelation. People out there should just give linux a try

Collapse
alecaddd profile image
Alex🔥

Not sure if this is considered SPAM, and if it is I apologize immensely, but I did a mini-series on YouTube on how to set up Pop!_OS, an Ubuntu-based distribution, to fully deal with my full-stack needs.
Hopefully, someone will find this useful: youtube.com/playlist?list=PLriKzYy...

Collapse
sm0ke profile image
Sm0ke

Yep, all good to work on Linux, I'm using Ubuntu.

Can you recommend a visual @github client?

Using the console works, but it's much easier to have something like Github Desktop.

Collapse
andreanidouglas profile image
Douglas R Andreani Author

GitKraken, but i don't use any to be honest

Collapse
psnebc profile image