Getting used to the new environment took time. I could bring some applications from my old laptop, like Keepass or Postman. However, using package managers beyond NPM or Yarn was alien to me.
Today, I feel comfortable with both systems. Windows' OS still does well for everyday work and file organization, while Linux shines for development. Primarily due to the incredible amount of specialized software.
This article presents all the tools I've picked up over the last few years. You'll make good use of them.
I will also see to update it whenever I find a tool that might be worth your while.
I'm using a LENOVO IdeaPad 5 with 16GB Ram and 512GB SSD. It seemed to be (still is) a good compromise between price and power. It is available on Amazon.
All tools I am about to present are running on Ubuntu v20.04.4 LTS. By the time you read this, most of them will probably work on newer versions, too.
If you need a hint to install Ubuntu, read on here.
Categories of tools
If you already have a machine setup with Ubuntu & Node, feel free to skip this part.
In all the latest distributions, Snap is already shipped with Ubuntu. It is a dedicated app store that offers a GUI and a CLI.
@ 27. March 2022: Snaps run in a sand-boxed environment. I noticed that when installing the KeePassXC - extension for Brave. It could not sync with the main application. See https://ubuntu.com/core/docs/security-and-sandboxing.
In case you're missing it, you can install it like this:
sudo apt update sudo apt install snapd # install the snap cli sudo apt install snap-store # install the snap gui
🧶Nodejs, NPM, and Yarn
sudo apt install nodejs sudo apt install npm # in many cases, npm is shipped with node sudo npm install --global yarn # optional
🧑💻 VSCode text editor / IDE
It probably comes as no surprise. If you're a developer, you've probably come across Visual Studio Code already. You can get it from the Snap Store or via. CLI:
sudo snap install --classic code
🦁 Brave / Chrome Browser
Google Chrome ships with a versatile toolkit. I've seen it often quoted as the de-facto standard for web development. If you value your privacy, you might as well give Brave Browser a shot. Both seem to deliver equally well in terms of performance and tooling.
You can install Brave Browser from the Snap Store or via. CLI:
sudo snap install --classic brave
A well-managed codebase is a solid one. Git is a battle-proof SCM tool to achieve just that. For collaboration, as well as for your private projects.
Run the following to install Git:
sudo apt install git
🦑 Git Kraken
Git Kraken provides you with a GUI to handle your Git repositories. In its free version, it can be used on all local repositories and public remotes.
You can get in in the Snap Store or via CLI:
snap install --classic git-kraken
Deploying containers is a popular way to ship software. Likewise, Docker is a popular tool to do so.
Before running the following script, I would recommend you to take a look at the official installation docs - this one might not be up to date
You can install Docker like this:
# Get rid of older docker versions Sudo apt-get remove docker docker-engine docker.io containerd runc # Add libs and the docker repos sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release # Add the official docker keyring curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # Add the repository (stable built) for your architecture echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Install the docker runtime sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io # Verify docker is running sudo docker run hello-world
α Albert launcher
If you have worked with MacOS before, you are probably familiar with Spotlight or Alfred. Albert a launcher software to minimize the count of keystrokes required to do stuff.
Installing it requires intel of your OS. You can find the installation steps for Ubuntu v20.04. I recommend you take a look at the official installation docs though.
curl https://build.opensuse.org/projects/home:manuelschneid3r/public_key | sudo apt-key add - echo 'deb http://download.opensuse.org/repositories/home:/manuelschneid3r/xUbuntu_20.04/ /' | sudo tee /etc/apt/sources.list.d/home:manuelschneid3r.list sudo wget -nv https://download.opensuse.org/repositories/home:manuelschneid3r/xUbuntu_20.04/Release.key -O "/etc/apt/trusted.gpg.d/home:manuelschneid3r.asc" sudo apt update sudo apt install albert
CTRL+V are probably among your most-used keyboard shortcuts. With CopyQ, you can now keep a history of all the content you've copied to your clipboard. You'll never have to worry about overwriting it again. It offers the possibility to organize copied content and comes with a baked-in public scripting API.
If you fancied Albert loader: There's a CopyQ Python plugin for it.
You can get CopyQ it by running the following commands:
sudo add-apt-repository ppa:hluk/copyq sudo apt update sudo apt install copyq
📔 TL: DR pages
Every software package comes with a manual ( = man-page). While being indispensable, man-pages usually do not give you practical examples. TL: DR pages is a community project that aims to fill that gap.
npm install -g tldr
If you're now looking to understand how the
🔱 Z shell
Zsh is another shell software for Ubuntu & MacOS. Functionally, it can do pretty much what the basic bash does. But it brings some tweaks to the show to reduce your keystroke count even further.
You can install your new favorite shell like this:
# Install Zsh sudo apt update && sudo apt upgrade sudo apt install zsh # Set the default shell to Zsh chsh -s /bin/zsh <your-user-name> # Exit sudo, then try: echo $SHELL # if everyting worked, output is /usr/bin/zsh # You can customize Zsh once it's installed nano ~/.zshrc
🙀Oh My Zsh
There is an official installation script available on Github.
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
If you configure a theme and notice it looks awkward in VSCode's terminal, take a look at this post on dev.to. If the fonts won't do it, try these ones from powerlevel10k.
Oh my ZSH Plugins
An unordered list of all plugins for the already powerful framework
Use with caution - every plugin increases the startup time of the terminal
Animista helps you to create CSS animations. It delivers you the whole code and supports auto prefixing.
When designing websites, you usually don't start off coding. You'll want to have an idea of what you're building. With Figma, you can create user interfaces without writing a single line of code and streamline your creativity.
📇 Fontjoy and Fontsource
With Fontjoy, you can easily generate matching font-family groups. Most (if not all) of these are available from Google fonts. If you are to comply with GDPR, you can use Fontsource to easily host these fonts yourself.
If you cannot or don't want to use Fontsource, you should read this article on how to self-host Google fonts.
Loading.io delivers some open-source loading animations. They can be dropped into your project and don't leave a huge footprint. Loading.io also offers a gallery of spinners. A lot of them are free to use and can be customized to your needs.
There are plenty of reasons why to use Notion. These are my top three:
- You can use official or battle-proven community templates for notes, knowledge curation, and project planning. https://www.notiontemplates.tech/
- You can store information in Databases and link them to each other with powerful macros. https://radreads.co/notion-databases/
- It has a REST API that opens its ecosystem up to your own app. https://developers.notion.com/docs/getting-started
I'm using Notion mainly for its Wiki- and Database capabilities.
If you do not want to risk a vendor lock into Notion or other cloud providers, you could simply host your own. Nextcloud is a self-hosted productivity platform and data storage. Comparable with services such as Dropbox and Onedrive. But supercharged with its own marketplace of plugins and apps.
You can integrate Nextcloud to a lot of popular clients. Like syncing files over WebDAV with your Neptune file explorer. Or link your Nextcloud Calender to Mozilla Thunderbird.
A self-hosted Nextcloud instance is free to use for individuals. Mine runs on a 5$ Digital Ocean Droplet.
NOTE: Self-hosting means that you are also responsible to make regular backups of your content
🚄 Page speed insights
Once you've deployed your MVP, it's time for optimization. 'PageSpeed Insights' uses Google's Lighthouse scoring to benchmark your website's performance. It also gives you a detailed insight into what can be improved.
Lighthouse is also available as an npm module.
- Markdown and rich-text formatting
- Three different writing modes and six different themes
- Inline math & diagram support, e.g. for Mermaid.js
You can run it simply by downloading the app image. To register it as a desktop app, you can follow the steps in my other article on .AppImage files.
Over the last years, Gimp grew to be a true competitor to Adobe's Photoshop. It's a great desktop application for image manipulation.
You can get it from the Snap Store or via CLI:
snap install --classic gimp
If pictures say more than a thousand words, moving pictures can tell whole stories. So instead of writing, say a colleague, how to do something, you could also send a
.gif file. Peek helps you to capture parts of your screen and generates one.
I can even create a gif of me writing this article.
You can grab a version of Peek from its official repos: https://github.com/phw/peek
In this section, I would like to share a few tweaks that make my life easier when working or fiddling around.
I highly encourage you to try and come up with your own configuration. Anyway, if you would like to share your configuration proposals, I'll be more than happy to add them to this list.
🧰 VSCode plugins
Plugins give your text editor superpowers. I won't list all I fancy, but a selection you will want to give a chance.
- Auto Rename Tag
- Bracket Pair Colorizer*
- Prettier Code Formatter
- Visual Studio Intellicode
- Quokka.js Code Scratchpad
*Bracket Pair colorizer is baked into the newer versions of VSCode. You can activate it by adding
"editor.bracketPairColorization.enabled": true to your
⚙️ VSCode settings.json
These are a few tweaks I made to my