What I use
Hardware
My main workstation is a 2021 Macbook Pro with the M1 Pro chip. The hardware is fantastic in almost every way, but the software is a bit of a downgrade 1 from a solid Linux setup.
When working from my desk, I use a Microsoft Sculpt Ergonomic keyboard2, and a big additional monitor. Using a laptop stand to lift the laptop to eye level is a must.
Software
In my Mac setup, I heavily utilize yabai, skhd and karabiner-elements. With enough tinkering, it is possible to recreate most of the i3 tiling manager experience. 3 My setup is based on these dotfiles.
For Linux desktops, I use Arch Linux (btw) with i3. 4
While I often work on a local machine, part of my coding happens using the laptop as a thin client to a remote server. Visual Studio Code and its forks are very good for this, especially for remote development over SSH. I currently prefer Cursor in spite of its incomplete VS Code feature set, because its AI features are (as of Jan 2025) better than anything you can get in VS Code.
The tier list of Cursor features is: Cmd+I (Composer)
>> Cursor Copilot ~ Cmd+K in terminal > Cmd+L >
Cmd+K in code. (Seriously, Composer is so good once you learn
how to use it.) I write a new .cursorrules
file
every time a project grows beyond 10 files or so.
Some indispensable VS Code / Cursor extensions are JSON Lines Viewer, LaTeX Workshop. I like ruff as a pre-commit hook, and if you use that, use the Ruff extension too.
Some features in my codebases are being written by Devin, and as of Jan 2025, I am slowly getting it to be useful. Key tricks I’ve learned: sample a prompt multiple times right away instead of repeating after it fails; read the plans it delivers (because this is the point that makes or breaks the run most often); and keep the sessions short.
For navigating inside a terminal, fzf and z are great. You should set unlimited history size. When I am not inside the Cursor terminal (where Cmd+K is good), I also like Simon Willison’s suite of tools: llm, llm-cmd and files-to-prompt.
You should always install Python-based global tools with pipx instead of pip or something in a virtual environment. For virtual environments, ditch any Conda-like software, and just use uv run. Seriously.
For automating git commit messages, opencommit is a bit vebose, but it works. Looking for a better solution.
I paid for TypingMind, and there I chat to Claude about all sorts of things, with an occasional Gemini query for longer or cheaper queries. I also use ChatGPT Pro occassionally, for algorithmic code and intellectually demanding tasks.
Certain types of notes are better taken in org-mode in Spacemacs. It is simple, local-first, has Vim keybindings, and can render inline LaTeX fine. However, I prefer Google Docs for anything collaborative, as well for my weekly planning.
For keeping work todos, I use Asana. Recently I’ve subscribed to Setapp, mostly for Timing and Cleanshot X. I do not recommend Bartender anymore as of Oct 2024, and recommend paying $5 for Ice instead.
I endorse Anki, especially the mobile version.
Web
I use Firefox with the following life-saving extensions: vimium, OneTab, uBlock Origin, Enhancer for Youtube, and Tab Notes. I am consistently impressed by how much value Tab Notes brings me in particular.
In Firefox (and perhaps other browsers), you can add bookmarks to LLMs and search engines like this:
- Name: ChatGPT
- URL: https://chatgpt.com/?q=%s
- Keyword: c
- Name: Claude AI
- URL: https://claude.ai/new?q=%s
- Keyword: cl
Some online tools I like: repo2txt, AoE clock. See also Simon Willison’s list.
Travel accessories
The following travel accessories bring quite a lot of value:
- packing cubes (Go Travel is fine, one if backpack, two if suitcase);
- comfortable noise-cancelling headphones (Sony WH-1000XM4);
- a power bank small enough to fit in a pocket.
See also Vitalik’s backpack travel guide.
Pen and paper
I like the Pilot G2-07, black ink. Dots ~ plain > checkered > lined.
The slow burn of improvement
I have, from time to time, been hit with a sudden realization that there exist people that make me feel like I am walking while they are running. Sometimes I observe an insanely productive feedback loops, or someone delivering a huge amount of work in a matter of weeks. At that point, everything that I’ve accomplished recently, even if it was a lot, starts mattering less.
My natural response is to feel the sudden urge to overhaul my setup, and start working in a completely different way. I have tried adopting strict rules for work, suddenly forcing myself to do a lot of Anki in my spare time, plaster the office walls with printed out docs with best practices for research, etc. The thing is, this is completely ineffective.
What does work for me is frustratingly simple: change at least one thing every single week. In high dimensional spaces, local minima are rare. This is especially true given the rising tide of AI progress enabling improvements where there were none last time you tried.
These changes can look tiny. From my personal experience, at
the risk of this sounding outdated in a few years: It could be a
different way of using Cursor; a reshaped
llm_utils.py
file; commiting to take notes whenever
you read a paper; deciding to clean up and publish those notes;
it could be taking notes after every single research meeting so
the conversation doesn’t just go in one ear and out the other;
or it could be deciding to finish an actual commit with a
feature every single day. It could be keeping the top priority
for a project always at the top of the project doc; or it could
even be something like buying a standing desk.
The highest leverage improvements are about habits, not tools. But habits are hard. You can’t just decide to be a different person overnight. But you can decide to be a slightly different person this week.
Moving to a new city, or changing jobs, seems to enable making many improvements at once. This is related to personality basins.
Sometimes you slip up. You’ll abandon tools. You’ll break streaks. That is fine. What matters is to keep moving and try to get back on track on parts of what you are doing that are genuinely important.
One of the best sources of improvement is the people around you. When you see a coworker doing something smart, steal it. It’s much easier to adopt a habit when you can see it in action every day.
And one final thing: the meta-habit of continuous improvements itself is something that one can get used to.
It comes with a decent mouse, and works with both MacOS and Linux out of the box. It is just a great value for money. Throw the numpad away.↩︎
I didn’t succeed completely – for example, with multiple displays, it doesn’t seem possible to label workspaces non-consecutively. If you have any ideas on how to do this, please let me know!↩︎
Since dropping Windows a long time ago, I used Ubuntu, then Arch, then Manjaro for a long time, then switched back to Arch on a new laptop. Manjaro and Arch are very similar and somewhat better than the others. There is no bloat at all if you go with i3.↩︎