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, I definitely prefer using the laptop as a thin client to a remote server.
I was an early adopter of Cursor and an early adopter of Claude
Code. As of June 2025, I prefer Claude Code, but I still use
Cursor as an editor and for its low-level editing features. I
write a new CLAUDE.md
/ .cursorrules
file for every serious project. Here is a template.
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 written by Devin, and as of early 2025, I slowly got 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 virtual environments, ditch any Conda-like software, and
just use uv run.
Seriously.
While we’re at basic Python tips: (0) use uv
; (1) a
simple Python tool that it is easy to forget about but is very
valuable when you need it is py-spy; (2)
spending 10 minutes learning
what asyncio actually is might be among the most valuable 10
minute intervals in your engineering career.
For navigating inside a terminal, fzf and z are great. You should set
unlimited history size. For running many experiments, I
launch a tmux session
with multiple panes from a script. 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.
Python-based global tools such as these are always better
installed with uv tool install
instead of pip or
using a virtual environment.
For automating git commit messages, opencommit is a bit verbose, but it works. Cursor generates quite decent commit messages too.
I paid for TypingMind, and there I chat to Claude and Gemini about all sorts of things. As of April 2025, it supports asking multiple models at once, which is kind of cool. I also use ChatGPT Pro (with the ergonomic Option+Space shortcut) quite often, on a bimodal distribution of queries: very quick questions where opening up a TypingMind window is overkill, and tasks where I want to use OpenAI Deep Research or a reasoning model.
My writing process combines various tools for different purposes. I often begin by using superwhisper to dictate initial drafts into TypingMind, then chat with Claude until I’m satisfied with the result. I generally spend a lot of time in Google Docs, though I write my newsletter in Obsidian to take advantage of its Smart Composer plugin. I’m considering migrating more of my daily writing (both structured and unstructured) to Obsidian eventually. For rare types of structured notes, I still rely on org-mode in Spacemacs.
I use Espanso for a bunch
of things, e.g. :daydate
-> current date in
dayofweek, Month DD, YYYY format,
:sonnet37 -> claude-3-7-sonnet-20250219
, and so
on. It works on all apps where you type text.
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.
I highly recommend setting up Google Alerts to track mentions of your name or pseudonym. Recently I’ve been using Beeminder to be more disciplined about the fraction of the time I spend on writing.
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.
Food and health
While in Switzerland, I’ve had good experiences with Saturo. In general, replacing snacks with meal replacements seems to have little downside, mostly because sweets, soft drinks, and other popular snacks have genuinely horrible nutritional profiles.
Most tasty sweets aren’t even cheap, and I’m genuinely confused why they seem so popular compared to meal replacements and protein bars.
Ready-to-drink meal replacements typically have a protein/kcal ratio of about 0.05g. If you’re trying to gain weight and are hitting your daily protein target from other sources, you can get away with consuming a large fraction of your calories from meal replacements. If you’re cutting or maintaining calories, unless you have a very low body weight, it’s not advisable to subsist only on meal replacements. The fact that liquid calories aren’t as satiating as solid ones will do you no favors either. For reference, an 80kg man trying to lose weight without losing muscle mass should aim for roughly 160g of protein and 2000kcal daily, for a 0.08g protein/kcal ratio.
Saturo has, as of June 2025, a 0.09g protein/kcal ratio, putting you north of the recommended protein intake. It is 50% fava bean and 50% soy protein (confirmed by Saturo support).
The human body requires 20 amino-acids to build proteins. 18 of the 20 are adequately supplied by the 50% fava bean / soy protein mix, if you take enough of it. The remaining two are called methionine and cysteine; these are the only two amino-acids that contain sulfur. Readers familiar with protein design might recall methionine as the amino-acid corresponding to the start codon (AUG); this means that the process of protein synthesis from RNA always starts with a methionine. Naively, it would seem it’s pretty important to get enough of it! However, restricting methionine is considered one of the most promising approaches to human longevity, with robust extensions of lifespan in mice. I’m not sure what to think here. For reference, foods high in methionine and cysteine include whey, casein, egg whites, lean meat, brazil nuts, and sesame seeds.
Consuming only meal replacements can lead to deficiencies in micronutrients not covered in the primary nutrients (protein, carbs, fat, basic vitamins and minerals) that meal replacement makers focus on. This issue isn’t exclusive to meal replacements; many people don’t eat enough diverse foods to cover their micronutrient needs. I recommend near’s supplements review5 if you want a technological solution to this problem.
You can also try to consistently eat plenty of fruits, vegetables, nuts, seeds, and other nutrient-dense foods.
My main concern with Saturo is that, as of June 2025, the ingredients kind of also try to cure for all mineral deficiencies, in addition to just providing the primary nutrients. For instance, even 1000kcal of Saturo provides 20mg of iron, which is 2.5x the recommended daily intake for an adult male. (Reproductive-age women need significantly more iron.) If you consume most of your calories from Saturo, you’re effectively getting supplementation of iron, potassium, magnesium, manganese, zinc, copper, and selenium, without much choice in the matter. For most of these minerals, being physically active helps offset this in your favor as you need more of these nutrients than if you were sedentary. It’s unclear what the long-term health effects of a diet consistently rich in iron, manganese, magnesium, and similar minerals might be; even 3000kcal of Saturo daily would still be below acute toxicity levels, but nutrition science is a mess.
Note: If you’re reading this, it’s statistically likely that you should take vitamin D. If you think this doesn’t apply to you because you do outdoor sports often, you should still apply sunscreen (if you’re male and dislike cosmetics, don’t be that guy! Skin damage from UV exposure isn’t manly, it’s just harmful), and you might also benefit from taking glucosamine sulfate.
Physical items
I wore glasses for work for a long time. My prescription is low, so I can see okayish without them, but e.g. I couldn’t read the whiteboard in class. I had a bad experience with contacts as a teenager, so I didn’t try them again until recently. It seems the contacts I used to wear were just shitty. In retrospect, of all the things you want to consider saving money on, contacts might be the worst choice. Get an optometrist to give you samples of a few different types, and get the ones that work for you, no matter if you spend $0.5 or $2 per day on them.
I’ve had mixed success with sleep masks for regular sleep (they are clearly positive on flights); will report some data once I do a proper test on whether they increase my sleep quality.
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);
- Power bank small enough to fit in a pocket. I like the Anker Nano. Its total charge capacity is awful and a new one, fully charged, will provide about 3500 mAh when accounting for thermal losses; your phone battery likely has between 4000 and 6000 mAh. (We’re assuming similar voltage in the phone battery and the power bank.) However, the greatest bottleneck for power bank utilization is actually having it with you and charged when you need to get 50% of your battery life back; the Anker Nano is (1) cheap; (2) very small; (3) you don’t need a cable to use it. I have multiple and just keep them in my pocket or backpack, and use them to charge my phone when needed.
- Universal adapter. I use the Verbatim Universal Travel Adapter. It is ridiculously versatile, can charge 5 devices at once, saves on space, and is probably cheaper than buying multiple adapters.
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.
They discontinued it. How could they? It used to come with a fantastic mouse, and worked with both MacOS and Linux out of the box. I will never get rid of mine now. (I did get rid of the numpad, though. It’s nice that it comes separate from the main keyboard so I can just throw it 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.↩︎
Here is an important quote: “When I was young I didn’t understand why ‘vegetables’ or such should be good for me: adults would tell me they had”vitamins and minerals” in them, but I could obviously both a) test myself for vitamin and mineral deficiencies and b) supplement them if I was deficient in them. It wasn’t until many, many years later that I learned how amazingly complex everything we eat is and how many biologically active ingredients are in dishes. Think of a dish with many vegetables, spices, roots, meat, etc, as basically having 20 different drugs in it, but with all of them in very small doses. Many of them are also very slightly psychoactive too! Just as you can get high on nutmeg and sweet potatoes inhibit α-glucosidase and are thus anti-diabetic like the drug acarbose and red yeast rice is literally the same as a statin medication and berberine found in plants like barberry is a mimetic of the anti-diabetic drug metformin, the foods we eat on a daily basis have an astoundingly large amount of downstream effects in the body which have nothing to do with the vitamins or minerals in them. The cases we tend to know about like marijuana or opium are not rare in that they have strong biological effects, but rather are only rare in the dose response curves that are common with consumption.”↩︎