Lenovo ThinkPad T450
Running the KDE flavour of Ubuntu, Kubuntu
.
Visual Studio Code
Free, open-source (kind of
), cross-platform and has support for every language I’ve come across.
WebStorm
My preference when working on JavaScript/TypeScript projects. Though because JetBrains has dedicated IDEs for each language I fallback to Visual Studio Code when working outside the JavaScript ecosystem.
Vim
Has had a positive effect on my productivity ever since I decided to go all in and use Vim as my default text editor as well as installing Vim mode in every IDE.
tmux
Often I find that I need more than one terminal open at once. tmux is great in that it allows me to have multiple terminals neatly arranged on a single screen. One essential plugin is tmux resurrect
which enables you to save and restore your tmux sessions.
Zsh
& Oh My Zsh
The unix shell Zsh along with the Zsh config manager and plugin bundle, Oh My Zsh, provide the terminal with numerous quality of life improvements. Such improvements include; tab completion for commands, smarter command history navigation (start typing a command and press up) and display of the branch name next to the shell prompt when inside a Git directory.
Yakuake
A KDE Quake style dropdown terminal, provides quick non-disruptive access to a terminal at the touch of a key.
Firefox
Open-source, fast, secure and wonderful to use. By far my favorite browser. Two useful Firefox addons are uBlock Origin
for ad-blocking and Wappalyzer
for checking out the tech stack of each site you visit.
To help me setup my environment I have an ever evolving Ansible playbook . Ansible is a tool that automates deployment and configuration of software. It often consists of a YAML file - called a playbook - that is composed of multiple tasks with each task representing a step such as cloning from a GitHub repository. Similar tasks can be grouped together to form a role. Roles are independent and reusable, they can be combined with other roles inside a playbook.
I have split the tasks that setup my environment into 3 roles; non gui based software, gui based software and programming languages. Each role is associated with a tag. Each tag can be singled out. For example if I were working on a machine without a desktop environment I could run my playbook with the tag “non-gui” and only those programs without a GUI would be installed.