4 Shell and Editors
4.1 Why the shell matters
The shell is the control surface of a digital lab. It gives you a common language for navigation, automation, file inspection, and repeatable workflows. Even if you spend much of your day in an editor or notebook, the shell remains the most portable way to reason about your environment.
Core shell competencies include:
- navigating directories quickly
- inspecting files and permissions
- searching across projects
- installing tools
- running scripts and analysis jobs
- using environment variables and configuration files
4.2 Pick one editor and learn it well
A serious editor is where project context becomes manageable. Your editor should help you:
- search across files
- run terminal commands
- edit structured text comfortably
- work with Git
- preview Markdown and notebooks
- debug scripts or notebooks when needed
Do not optimize for ideology. Optimize for depth of use. One well-understood editor is better than five shallow experiments.
4.3 Package managers are part of the lab
Package management is not a background detail. It is how tools enter your system, how updates arrive, and how conflicts emerge.
At a minimum, understand:
- the system package manager for your platform
- one language-specific package manager such as
pip,uv,renv,conda, ornpm - how project-local environments differ from machine-wide installs
4.4 Configuration belongs in versioned text
Shell profiles, editor settings, aliases, snippets, and project templates should live in plain text wherever possible. This makes them:
- inspectable
- portable
- easier to back up
- easier to share or rebuild
Dotfiles are not an advanced hobby. They are an important part of a mature lab.
4.5 A strong baseline setup
A practical starter environment usually includes:
git- a terminal you enjoy using
- a shell you will keep for years
- a capable editor
- language runtimes you actually need
- tools for search, sync, and compression
The point is not maximal setup. The point is to make ordinary work feel frictionless.