This page covers everything except for LLMs – for those, see my post on useful tools.
Browser
On my laptop/desktop I use Edge. Previously was on Firefox but it was extremely slow at loading PDFs and didn’t play nice with Microsoft SSO which is why I gave up. On mobile, I use Firefox because you can’t add extensions to Edge for Android. It’s annoying in terms of syncing tabs and history between devices, but having the extensions is worth it (and I have Firefox installed on my laptop anyway, so it’s just one extra step to sync tabs). Xi recommends Arc but I haven’t tried it.
Extensions I use on both laptop and mobile are:
- Bitwarden (password manager, also for passkeys)
- I use Microsoft Authenticator for 2FA, not because I like the design (you just have to scroll through all the sites to find the one you want, I’m sure they could have a better UI) but it’s required for my university SSO and I might as well have everything in the same place.
- Clear URLs (stops tracking of affiliate links etc)
- Update as of 2025-10-01 – I have had to stop using this because it interferes with Google Sheets in a way it shouldn’t, which also makes me slightly suspicious in general
- uBlock Origin (the best ad blocker I’ve come across, plus you can configure it to also block things like cookie popups by going into “Filter list” settings and switching on “AdGuard annoyances” filtering. Sometimes this messes up a website but less than once a week for me, and you can just toggle it off, decline cookies, and then continue)
- Will not be compatible with Google’s Manifest v3, so I might need to switch to AdBlock
- Dark Reader to switch websites into dark mode according to my system settings, if they don’t have native support. Again, occasionally messes up websites but usually changing the filtering mode sorts it out.
On laptop, I also have:
- Save to Notion linked to a database of articles / blogs / tweets I’ve read; also Curius which is similar but more like a social network (I haven’t started using it though)
- React Developer Tools which has thus far not been very helpful when doing React development, but maybe will come in handy
I used to not save browsing history, but that ended up being annoying and also kind of pointless. However, I still do block all third-party cookies and tracking content (you can achieve this in Edge with “Strict” mode)
On my mobile, I have DuckDuckGo installed to use its “App Tracking Protection” and also email address masking. (Firefox has its own email relay service but there’s no way to just generate a new email in two taps, as far as I can see.)
Laptop customisation
- On Lenovo, it is surprisingly hard to disable the on-screen “Caps Lock” indicator. At first the option to do so didn’t show
up in “Lenovo Vantage”, so I used the Lenovo Hotkeys app instead. Then all of a sudden the option did appear in Vantage.
- I still haven’t managed to disable the backlight and Fn Lock indicators
- This solution is the only one that actually works for remapping the Copilot key to a
Ctrl (right)
Other consumer software
- Auto Dark Mode to switch the system theme on my Windows laptop, since for some reason that’s not an automatic option
- Calendar scheduling links make arranging calls easy!
- Task management systems – I use Todoist because Asana was way too complicated for part-time small projects
Mobile data
- Lebara has a very reasonable £5/month SIM-only plan which gets you 5GB data plus free roaming in the EU and 100 minutes to international numbers
- I normally use under 1/3 of the data and hardly any of the 1000 minutes/texts but it’s the cheapest tariff I’ve found anywhere
- Also have a pay-as-you-go Tesco SIM card in my phone just for the convenience of an additional phone number to receive SMS on (you don’t need to put any money on it to activate the number; presumably at some point I’ll need to top up to avoid getting deactivated but it’s effectively free)
- e.g. so that I can have WhatsApp Business as well as a personal account
- For going to the US, have discovered that Three gives you free roaming on their PAYG plans,
with the £10 one getting you a month with
10GB(edit 2025-01-27: the amount of roaming you get is now capped at 6GB, but the overall data allowance is still 10GB [or sometimes 20GB]). See the fine print here.- Note that according to the “acceptable use” requirements last time I checked, they might suspend your account if you’re exclusively using the SIM card for roaming for two whole months in a year, so this isn’t suitable for semi-permanently moving abroad.
- Getting the Three SIM is at least one order of magnitude cheaper than paying roaming fees /MB or /day, less expensive than any other UK options I found, and about 1/4 the price of getting a US SIM card (why are they so pricey?)
- eSIMs do look like the best option if your phone supports them
Search
- DuckDuckGo by default. It has “bangs” which are super handy, e.g. I can just type in
!w
to search Wikipedia, etc. You can configure this at a brower level too but it’s much nicer having it all set up already - Gavin writes about how to find information
Knowledge management
-
I have a lot of notes in Notion, it’s my main place to store ideas.
- Not academic ones though, because I handwrite those and it’s quite bad at dealing with PDFs. In particular I like how with OneNote on mobile you can scan in a multi-page document and use filters so that the quality is better (though annoyingly for some weird reason you can’t apply to all pages at once when using OneNote even though in the Office app, which looks like it has exactly the same scanning backend, you can). The disadvantage is that OneNote isn’t super portable, but you can use ConvertOneNote2MarkDown to help
- As mentioned above, I use their template “reading list” database to store all the articles etc I read which seem interesting, plus a short snippet of text to help me with searching back for them. It’s super frustrating when I vaguely remember something but can’t find where I read it originally, and this has helped reduce that a lot (I’ve tried using various LLMs to search but they almost never find it. And sending a message on a discord server asking if anyone else knows isn’t practical every single time this happens).
-
Coda is a slightly more feature-rich version of Airtable that might be worth trying if you want the Notion-like ability to have cells turn into pages, but also fully structured databases
- I’m using it to set up a CRM at the moment
-
Also use Obsidian along with Obsidian-Git (I don’t want to pay for their own syncing service) for two specific databases where Graph View is helpful:
- Keeping track of the people I’ve met + basic facts about them that I otherwise wouldn’t remember (e.g. which university & course, some interests, etc), and then an outline of what we talked about. Don’t do this all the time or with everyone, but it’s nice being able to look back and find where I first met somebody I half-recognise. Using tags also makes it easy to search for e.g. “who do I know who’s at MIT?”, etc. I know Arjun Panickssery used to do something like this in more detail, but think he’s stopped and unsure if he ever wrote about it.
- Writing notes on academic papers etc, also because Obsidian is much faster and smoother than Notion, and when I’m only writing up text or inserting an occasional screenshot, there’s really no need to use Notion.
-
Anki for flashcards and spaced repetition
Programming
I use Windows with a Linux subsystem – have found that it leads to fewer installation errors etc, and also tutorials / LLMs are often better giving bash instructions than Powershell ones
VS Code is great!
- some good extensions I’ve got installed:
- Copilot and Copilot Chat extensions (if you’re a student you get it for free)
- I disabled it for markdown because when I’m writing posts, although I ignored its suggestions, just seeing them was distracting and I suspect subconsciously influenced what I was saying. Also disabled for plaintext, .env and yamls, because I don’t really want those being sent across to their servers (though possibly they still are…?)
- LTeX for spellchecking in markdown posts
- change language to British English
- Ruff for Python formatting, it uses Black style but is faster
- Toggle Light/Dark Theme, though don’t use it that much now that VSC respects system settings
- Jupyter Cell Tags so that you can just type
# %%
to break up your code into chunks that can be run interactively - gitignore to help automatically generate
.gitignore
files
- Copilot and Copilot Chat extensions (if you’re a student you get it for free)
- settings I’ve changed:
- files.autoSave = afterDelay, same behaviour as I’m used to in Office etc and means no need to worry about ctrl + s
- set editor.tabSize = 2, I think it looks better for JS/HTML and avoids weirdness happening with md files. Have overriden it to be 4 for Python though (since that’s what Black specifies)
- set editor.wordWrap = bounded, don’t understand why you’d ever want lines running off the screen, and I limit it at 150 chars using editor.wordWrapColumn = 150 for when I’m on an external monitor
- workbench.colourTheme = lightModern, using dark mode in the day has always confused me
- window.zoomLevel = -1, on my laptop otherwise I can’t fit enough in and I can see it fine
- explorer.confirmDelete and explorer.confirmDragAndDrop = false, just slows you down and there’s always ctrl + z
- remote.autoForwardPorts and remote.forwardOnOpen = false because it leads to annoying popups in the side and I don’t think I need any ports being forwarded
- workbench.editor.tabSizing = fixed to mimic the behaviour in browsers where all tabs have the same size and shrink when you start to run out of space. makes closing multiple tabs with the cursor a lot easier (and it’s satisfying so I refuse to just use ctrl + w)
- strict type checking in Python, useful when doing Pytorch stuff
- interactiveWindow.executeWithShiftEnter = true
- typescript.updateImportsOnFileMove.enabled and javascript.updateImportsOnFileMove.enabled = always, speeds things up to not be prompted and I can’t think of a time I wouldn’t want to update the imports
- r.plot.useHttpgd, it’s a much better R viewer
- git.autofetch = true
- added a snippet to do the boilerplate for a sidenote when writing my blog. Gave it a keybinding too, which took a lot of searching, but adding the following to my
keybindings.json
was what worked:
where{ "key": "ctrl+k 1", "command": "editor.action.insertSnippet", "args": { "name": "add_sidenote" } },
"add_sidenote"
is the key for the snippet I want to insert, i.e. mysnippets.code-snippets
file has an entry"add_sidenote": { "scope": "markdown", "prefix": "sidenote", "body": [ "\{\{% sidenote $1 \"$2\" %\}\} $0 \{\{% /sidenote %\}\}" ], "description": "Insert a sidenote structure" }
- gotchas to be careful of
- if using settings sync and you have multiple devices, careful that you exclude r.{rterm / rpath}.{linux / windows} if you have different versions installed across your devices, as the path includes a version number
Finance
- Monzo is great, significantly prefer it to Starling Bank (which I ditched about a year ago so maybe they’ve improved) – interface is clean, you can split bills really easily & the monzo.me links are helpful, doesn’t charge a markup for foreign transactions
- Wise for making/receiving large international payments -
- When receiving my EV grant, I saved several hundred pounds by using them instead of Santander
- Most sneakily, Santander doesn’t publish their (dreadful) retail exchange rates anywhere online, so I had to ring up to ask. Then, the first person I talked to was quite sure that the bank didn’t know what the exchange rate I’d receive would be. So I had to spend about 5 minutes convincing him that he would definitely be able to find it somewhere, and that yes I understood it would only be an indication of the actual rate I’d receive, and no I’m not trying to use a debit card abroad. (Patrick McKenzie’s “Seeing Like a Bank” gives a convincing explanation of why this happened.) Anyway, eventually I got what I was after
- Lots of bank accounts offer switching incentives which pay very well on a per-hour basis. One friend didn’t believe me on this, was eventually persuaded, and I think got about £800 (it’s not really a thing you can cash out on repeatedly as they’re only for new customers, but probably worth doing sooner rather than later as I expect the rewards won’t rise in line with e.g. a tracker fund)
- If you’re starting university, there are a load of banks which offer incentives to create a student account too. Some are cash, others do railcards or other perks. Whilst obviously one should never be dishonest on an application for a financial product, you might reasonably hypothesise that (apart from when they have different trading names but are really the same, e.g. Lloyds/Halifax/Bank of Scotland) banks can’t talk to each other and work out whether you’ve set up a student account elsewhere, so you could in theory open accounts with all of them.
- Note that applying for loads of accounts will be bad for your credit score in the short term because each does a hard search, so if you want to get a credit card maybe do that first. And there’s no effect after two years (some other sources say six months, who knows)
Web development
- Porkbun is by a very long way the best domain registrar I’ve come across. No stupid pricing structures, clean & unbloated website, good customer support. Their email offering is cheap too ($24/yr).
- I use Hostinger for web hosting when I’m doing a Wordpress site, they do use irritating sales tactics but the product seems reasonably-priced and works well. Plus their AI customer service chatbot is the best I’ve encountered, generally extremely helpful even on technical issues
- Google Cloud is great for projects where you need a server, they’ve got a very
generous always-free tier plus you get initial credits.
- One thing I only recently realised is that you can set it so that you always have an instance running, because previously the website would have to do a cold start every time someone opened it for the first time in a while. Claude misinformed me that the relevant thing in app.yaml was
automatic_scaling/min_idle_instances
; in fact it isautomatic_scaling/min_instances
, which I’ve set to 1. The docs say that you also need to set up warmup requests for it to work, but for my app I just return a 200 status straightaway beacuse there isn’t really anything to do besides connect to the database, which it does on app initialisation anyway.
- One thing I only recently realised is that you can set it so that you always have an instance running, because previously the website would have to do a cold start every time someone opened it for the first time in a while. Claude misinformed me that the relevant thing in app.yaml was
- Streamlit for quickly making slick UIs for web apps in Python
- Interacting with startups, you get to see a lot of tools (the below are not endorsements):
See also
- https://s8mb.medium.com/things-i-recommend-you-buy-and-use-second-edition-457a8e7163f6
- https://www.gleech.org/browser
- https://www.gleech.org/stuff
- https://arjunpanickssery.substack.com/p/stuff-i-recommend-you-use and they also have many other “See also” sections