My Developer Workflow
A behind-the-scenes look at the tools, systems, and engineering environment behind the work.
Setup Overview
The hardware and software that powers the daily engineering workflow.

Macbook M1
Apple M1 chip with 16GB RAM running macOS. Primary machine for daily development, handling everything from code to containers.

Ubuntu Environment
Linux environment for server-side development. Docker containers, SSH sessions, and backend services run seamlessly.

LazyVim
Neovim configured with LazyVim starter template. Full LSP support, Treesitter, Telescope, and a plugin ecosystem tailored for backend engineering.

Terminal Workflow
Kitty terminal with ZSH, Starship prompt, tmux for multiplexing. Everything happens in the terminal—Git, Docker, SSH, scripting.

CLI Tooling
Core CLI tools: Git, Docker, kubectl, jq, ripgrep, fd, lazygit, bat. A curated set that eliminates context switching.

Development Environment
Consistent dev environments with Docker Compose, makefiles, and reproducible builds. Minimal setup friction across projects.

Productivity Tools
Arc browser, Obsidian for notes, Linear for issue tracking, Warp for AI-enhanced terminal sessions.
Editor
LazyVim — Keyboard-Driven Engineering
The editor is where the craft happens. LazyVim transforms Neovim into an IDE with the speed of Vim and the intelligence of modern LSP.

LSP active — gopls, tsserver
Treesitter — go, ts, python
Telescope — find files, grep
Lazygit — staging, blame, log
Which-key — leader mappings
Language Server Protocol (LSP)
Real-time diagnostics, auto-completions, go-to-definition, hover information, and code actions for Go, TypeScript, Python, and more. The editor understands your code at the AST level.
Treesitter Syntax
Incremental parsing powered by Treesitter gives accurate, fast syntax highlighting and text object selection based on the syntax tree—not regex patterns.
Telescope Fuzzy Finder
Blazing-fast fuzzy search for files, buffers, git commits, help tags, and live grep across the entire project. The primary navigation interface.
Git Integration
Lazygit integration alongside Neovim's native git tools. Blame, diff, staging, and history inspection without leaving the editor.
Terminal Multiplexing
tmux integration with seamless pane navigation. Running tests, builds, and servers in split panes while editing in another.
Plugin Ecosystem
Curated plugin set via Lazy.nvim: which-key, noice, flash, mini.pairs, oil.nvim, among others. Each selected for deliberate purpose.
Terminal & CLI
Terminal & CLI Workflow
The terminal is the command center. Every engineering task flows through it—from Git operations to container management to server administration.
Visual commit history
Spin up development services
Server access with key-based auth
Fast recursive search with ripgrep
Terminal UI for Git operations
Monitor Kubernetes pods

ZSH
Shell with completions, syntax highlighting, and history substring search.
Starship Prompt
Minimal, fast prompt with contextual Git, Docker, and language info.
tmux
Terminal multiplexer for session persistence and split-pane workflows.
Kitty
GPU-accelerated terminal emulator with excellent font rendering.
Environment
Operating Systems
A dual-environment setup that leverages the strengths of each OS for development and infrastructure work.

Macbook M1
Primary Development Machine
Daily driver for coding, containers, design, and communication. macOS provides a polished UNIX environment with native Docker support and a vast ecosystem of developer tools.

Ubuntu
Server & Infrastructure Environment
Ubuntu powers the server-side workflow. SSH sessions to cloud instances, container orchestration, and infrastructure management all happen in a terminal-first Linux environment.
Note: The combination provides the best of both worlds: macOS for a polished daily driver with native UNIX tooling, and Ubuntu for server-native development. Tooling is kept consistent across both environments via dotfiles and Docker.
Intelligence
AI-Assisted Development
Practical AI integration into daily engineering work—not for writing code wholesale, but for accelerating the thoughtful parts of development.
Debugging
AI helps narrow down root causes faster by analyzing error patterns, suggesting potential fixes, and pointing to relevant documentation.
Architecture Exploration
Rapidly exploring architectural options, trade-offs, and design patterns before committing to an implementation.
Documentation
Generating docstrings, API documentation, and inline comments from code structure—reducing the friction of documenting as you go.
Refactoring
Identifying refactoring opportunities, suggesting safer type signatures, and generating migration patterns for larger code changes.
Boilerplate Reduction
Automating repetitive code patterns: CRUD endpoints, database schemas, test stubs, and configuration files.
Learning
Exploring unfamiliar codebases, understanding library patterns, and getting contextual explanations without context-switching to browser tabs.
“AI is a thinking amplifier, not a replacement for engineering judgment. Every suggestion is reviewed, understood, and adapted before it reaches production.”
Philosophy
Workflow Principles
A set of engineering principles that guide tooling choices, workflow design, and daily development habits.
Keyboard-First
Minimize mouse dependency. Vim motions, tmux keybindings, and CLI tools keep hands on the keyboard and flow uninterrupted.
Reproducibility
Docker Compose, dotfiles, and makefiles ensure any environment can be recreated in minutes. No manual setup steps.
Automation Over Repetition
If a task is done more than twice, script it. CI/CD, git hooks, aliases, and custom scripts eliminate repetitive manual work.
Minimal Context Switching
The terminal and editor handle Git, Docker, file management, and code. Fewer tools means fewer mental context switches.
Clean Developer UX
Fast feedback loops, readable output, consistent tooling across projects. Developer experience is treated as a first-class concern.
Simplicity
Choose the right tool for the job. Avoid over-engineering workflows. A simple, well-understood toolset beats a complex one every time.