My tech setup

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:

On laptop, I also have:

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

Other consumer software

Mobile data

Knowledge management

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!

Settings I've changed

Be careful if you have settings sync enabled – you need to exclude r.{rterm / rpath}.{linux / windows} if you have different versions installed across your devices, as the path includes a version number.

  • 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:
  {
  "key": "ctrl+k 1",
  "command": "editor.action.insertSnippet",
  "args": {
    "name": "add_sidenote"
  }
},

where "add_sidenote" is the key for the snippet I want to insert, i.e. my snippets.code-snippets file has an entry

  "add_sidenote": {
  "scope": "markdown",
  "prefix": "sidenote",
  "body": [
    "\{\{% sidenote $1 \"$2\" %\}\} $0 \{\{% /sidenote %\}\}"
  ],
  "description": "Insert a sidenote structure"
}

Finance

Web development

Physical products

See also

and they also have many other “See also” sections