Computer

Equipment, configuration, and everything related to my computer

This is where I jot down notes about my computer. How it’s configured, what applications I use, and how I use them. It contains a little guide for bootstrapping new computers but mostly this is for documenting how I use my computer; documenting things helps me think.

Gitpod

I do 99% of my development using Gitpod. I use the Dotfiles feeature to load my Gitpod specific dotfiles from mads-hartmann/gitpod-dotfiles.

Arc

I’m using Arc as my default browser

CleanShot X

I use CleanShot X as a replacement for the macOS native Screenshot application. The annotation features and flows of CleanShot X are just superb ✨

Karabiner Elements

With my Keychron Q10 I needed a way to have arrow keys in the home-row

Sleeve

I have a soft spot for single purpose macOS applications. Sleeve is a perfect example of this.

VSCode

Extensions

This list is not comprehensive at the moment. The extensions are alphabetically sorted.

Keybindings

This is the list of keyboard shortcuts I generally use. It’s a bit of a weird mixture of trying to use the VSCode defaults while also accepting that I have a lot of Emacs muscle memory that I might as well put to good use.

KeysCommand TitleDefault - Reason
Coding
^<space>Trigger Suggestyes
⌘⇧<space>Trigger Parameter Hintsyes
^.Quick Fix…no - the default is ⌘. but I used that for Raycast
^-Go Backyes
F2Rename Symbolyes
F12Go to Definitionyes
⌥⌘KBookmarks: Toggleyes
⌥⌘LBookmarks: Jump to Nextyes
⌥⌘JBookmarks: Jump to Previousyes
⌘K ⌘IShow or Focus Hoveryes
Terminal
⌘NTerminal: Create New Terminalno - matches the macOS default better
⌘WTerminal: Kill the Active Terminal Instanceno - matches the macOS default better
^X 2Terminal: Split Terminalno - matches Emacs’ defaults
^X 3Terminal: Split Terminalno - matches Emacs’ defaults
Window Management
⌘0Focus Sidebaryes
⌘1Open Editor at Index 1 - 9no - matches the macOS default better
⌘⌥TView: Close Other Editors n Groupyes
^⇥View: Open Next Editor in Groupno - matches the macOS default better
^⇧⇥View: Move Editor into Previous Groupno - matches the macOS default better
^X BView: Quick Open Previous Recently Used Editorno - matches Emacs’ defaults
^X OView: Focus Next Editor Groupno - matches Emacs’ defaults
^X ↑View: Focus Editor Group Aboveno - a mixture of the VSCode and Emacs.
^X →View: Focus Editor Group Rightno - a mixture of the VSCode and Emacs.
^X ↓View: Focus Editor Group Downno - a mixture of the VSCode and Emacs.
^X ←View: Focus Editor Group Leftno - a mixture of the VSCode and Emacs.
^X 0View: Close All Editors in Groupno - matches Emacs’ defaults
^X 1View: Close Editors in Other Groupsno - matches Emacs’ defaults
^X 2View: Split Editor Downno - matches Emacs’ defaults
^X 3View: Split Editor Rightno - matches Emacs’ defaults
^X KView: Close Editorno - matches Emacs’ defaults
⌘<Terminal: Focus Terminalno - makes it easy to jump to the terminal
⌘<View: Focus Active Editor Groupno - makes it easy to jump back to the editors from the terminal

Raycast

I adore Raycast. I pay for the Pro plan which, amongst other things, gives me access to ChatGPT through Raycast. I use the AI Chat as my primary interface to ChatGPT.

Built-in Extensions

I use the following built-in extensions

Raycast Store Extensions

I use the following extensions from the Raycast Store:

1Password

I use 1Password for all my personal passwords, credit cards, credentials, and so on. I Install it using the App Store.

Notion

I use Notion for quite a few different things. This site is generated from a Notion document. I use it as a simple database system for books, articles, records, how-to’s, projects, and so on. I use it as an easy way to write interconnected notes when learning new topics.

I use the Notion Desktop App as I find it marginally quicker than opening a tab in Safari.

Setting Up a New Mac

This was from the last time I configured a Mac from scratch. If I were to do it today I don’t think I’d use Nix as the “global” package manager but just rely on Homebrew instead; I haven’t really seen any benefit from using Nix for system-wide packages.

Setting up Nix

To install Nix I do need some basic development tools installed like gitcurl and so on:

xcode-select --install

I install Nix using The Determinate Nix Installer

curl --proto '=https' --tlsv1.2 -sSf -L \ https://install.determinate.systems/nix \ | sh -s -- install

Shell

Don’t show the Last login message for every new terminal session:

touch ~/.hushlogin

Install Starship

nix profile install nixpkgs#starship

Create a basic profile for ZSH (touch ~/.zshrc) and add the following

alias tailscale="/Applications/Tailscale.app/Contents/MacOS/Tailscale" source <(/Users/mads/.nix-profile/bin/starship init zsh --print-full-init) autoload -Uz compinit && compinit

SSH

I use 1Password to manage my SSH keys (docs) and rely on their SSH agent (docs). For the agent to work the following is placed in ~/.ssh/config:

Host * IdentityAgent "~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"

To verify it works run the following

export SSH_AUTH_SOCK=~/Library/Group\ Containers/2BUA8C4S2C.com.1password/t/agent.sock ssh-add -l

Changelog

The current version is v3

Logbook

Week 8, 2024

I’m giving Dash a try to see if having the official docs available for the tools I use means I’ll reach for them more often rather than just run ChatGPT or Google every time I need to look something up. I picked Dash because there’s a Raycast Extension for it.