My Developer Workflow

Since everyone's having a piece of their own, let's talk about my development workflow as a front-end web developer.

Operating System

I use Arch Linux (btw) as my primary OS. Not because of the memes, but I like the thrill of customizing stuff to my liking. Plus, who doesn't love living on the edge with bleeding-edge software updates?

Arch Linux + GNOME 43
Arch Linux + GNOME 43

I love the flexibility and freedom that Linux distros provide, especially Arch Linux as I can customize a lot of aspects of how it should behave with a press of a single key. I could configure it to change my desktop layout, have a nice top bar that shows system info, or conjure up a full widget system of my own. The possibilities are endless here.

I'm currently using the latest GNOME. I used to love BSPWM for its tiling and simple window layout, but I switched to GNOME because I got too lazy to set up and sync everything properly. Also, GNOME's new rounded design and system tray are fantastic.

Now, don't get me wrong, I'm not a Linux elitist. I also use Windows as I have a dual-booted system. I think a lot of people shit on it for a lot of wrong reasons. I like that you get a nice-looking desktop right out of the box without much hassle and everything works flawlessly.

I use Windows mostly for stuff that's not available on Linux (looking at you Adobe) and for gaming obviously. However, it's not the most developer-friendly environment. But that's changing with Windows Subsystem for Linux (WSL) which I haven't had the chance to try out much yet.

Terminal & Shell

I use Wezterm as my main terminal. It is a very configurable terminal emulator which also happens to be GPU powered. It uses Lua, which is a simple and small programming language, for configuration so it's really easy to setup. It supports Nerd Fonts out of the box and has a nice glyph rendering. And if that still doesn't impress you, it also has a multiplexer built-in.

Wezterm + Starship
Wezterm + Starship

For my shell, I'm using ZSH. It gives me all the good stuff that either is not supported by bash or needs some kind of workaround to get it working. Things like syntax highlighting, auto-completion, history substring search, and Vim mode makes ZSH very satisfying to use. I was using powerlevel10k as my prompt theme, but I've recently switched to Starship, and I'm loving it.

I do a lot of bash scripting, but ZSH is my go-to because it just works better for me. I might try Fish shell sometime since I’ve heard great things about it. Who knows, maybe it'll steal my heart (and my terminal sessions).

UI Design

I use Figma as my go-to design tool as it's free (which is always a plus) and super easy to use. The only downside is that there's no native Linux app, so I have to resort to using the web version or (gasp) booting up Windows. But hey, desperate times call for desperate measures.

I use it occasionally if I have to do site designing (which I'm still trying to get good at).

Editor

Putting editor at last because it is also the most important of them all. As a web developer, I spend most of my time coding nice UIs or adding functionality to an existing codebase which happens almost entirely inside the code editor. And for that, I need a reliable and efficient code editor.

Neovim Dashboard
Neovim Dashboard

Well, I'm using Neovim as my primary code editor. Because of how extensible and configurable it is and does everything faster than your average IDE (*cough* VS Code *cough*). I'm not going to convince you why you should switch to Neovim and ditch your fancy VS Code setups (although, let's be real, you should give it a try). I'll just tell you why I prefer it over other editors.

I'm a fan of (Neo)Vim because I’m used to Vim motions and switching would be tough (not that I want to). While other IDEs offer Vim bindings, they’re usually half-baked and work differently.

Neovim Treesitter Syntax Highlighting
Neovim Treesitter Syntax Highlighting

Vim's ability to manipulate text with a few keystrokes is amazing. Neovim takes it to another level with tree-sitter, a fast language parser tool in Rust that powers its syntax highlighting. Coupling Vim motions with text manipulation based on AST tokens is mind-blowing. Doing most of your text changes without leaving your keyboard and accessing your programming language's syntax tree is a very important feature (at least for me).

Neovim Telescope Fuzzy Finder
Neovim Telescope Fuzzy Finder

Neovim also supports the Language Server Protocol (LSP) so your IDE-like features, for example, completions, hover information, go-to-definition, and code actions are also supported (though not out-of-the-box).

I'm gonna be honest here, configuring Neovim can be quite a complex process but once you get the hang of it, you'll wonder how you ever lived without it. Also, I might have to make a separate blog post about how I configured Neovim or what plugins I use to have an awesome developer experience. This post will get a lot longer if I tried to do that now.