Configuring a new Macbook Pro for 2022 for game development + video editing
April 3, 2022
Tagged: Tools
The blog has been a little quiet recently, and there’s been two reasons for that, one major and one minor. The major reason is that the company I run is gearing up to release Cantata in less than two months (!) and the other is that I’ve been laptop-less for nearly ~6 months. It sounds silly but I feel I’m best able to write on a laptop. Desktops don’t cut it (feel too “serious”), and though I have an iPad, something about the form factor of a laptop just feels like perfectly matched for the “size” of what I want to usually write.
So without a laptop, my writing/blogging effectively stopped. Until now. I got a new laptop! I’ve got a backlog of stuff I want to write, but to get this train rolling again I thought I’d dedicate a post to talking about how I setup a new computer.
Some background:
I’m primarily a game developer, but also have a background in video and experimental media. Outside of games, I also write more general purpose software (and write blog posts about said software as well). So my setup leans definitely in the programmer-y/video-y/creative-y spectrum. Below is a breakdown of the programs/apps I first installed that came to mind as must-haves, and a little writing on what each app does and why. They are ordered roughly based on importance for me to have on the machine.
This a list of software that I consider must haves for development on essentially any machine I use.
iTerm2 is a terminal replacement app. This means it replaces the default macOS Terminal.app. The main benefit here is easy access to robust customization options, hotkey configurations, color themeing, and more. It’s not essentialy to operating a machine, but it definitely makes the experience much nicer. iTerm is probaly the Mac app I’ve used the longest, and don’t see that changing anytime soon.
A few releases ago, Apple decided to switch the main terminal runtime from Bash to Zsh. Zsh contains a superset of Bash’s functionality (at least I’m 99% sure of this), meaning anything you could do in Bash you could also do in Zsh. But then Zsh gives you more.
Oh My Zsh is sort of a way to manage that “more” - it provides access to a large plugin ecosystem for Zsh which most often means that you get little bits or terminal config for “free” based on the work other people did.
Here’s the Zsh plugins I use:
These all basically just provide nice aliases for common commands related to running these applications.
This basically saves a buffer of previously run commands, and if it detects you writing a similar command, will prompt you with an auto-suggested command that you can execute without needing to type the rest of it.
This one is a bit new to me (shoutout to Takuya here!) but I already really love it. Z allows you to quickly access previously accessed directories, giving you fuzzy access to a directory based on a few letters from it. So imagine I go to ~/kyle/Desktop
a lot — Z learns that and allow me to just type cd de
or cd desk
or really any portion of that path in order to go there. It’s basically a nice way to make “generative aliases” for commonly accessed folder paths in the terminal.
This is a color scheme plugin + customization config tool that makes Zsh look much cooler. I think it has other features, but I mainly use the defaults + some config guide I found on Medium.
What good what a terminal be without a way to add in functionality? Brew is a package manager for macOS that allows you to do just that. If you already know what Brew is, you already know.
For those who don’t, a package manager is a program that runs on your computer that allows you to download other software. You can sort of think of it as a giant app store you can access from the command line. Most software accessible from using Brew is available elsewhere, but Brew provides an easy way for you download that software as well as keep it updated. It’s the best. Here’s the brew packages I started with:
I’m not a crazy vim person, but I do edit stuff in terminal from time to time. Raw vim is mostly fine for how much I use vim, but Neovim pushes it a little bit above that into something that makes it generally pleasant to use. Maybe one day I’ll get really good at Vim. Maybe.
This is technically a cask
from Brew’s perspective but whatever. This is an open-source port of a long-since-deprecated Mac program called Caffeine. It’s functionality it simple — keep the screen awake. I use this thing so much I don’t even remember all the current use cases. It’s also possible macOS is smarter about this now, but I still download this out of habit.
The secret sauce of high productivity video work + experimentation. And also secretly the backbone of most all video-related software. FFMPEG is THE swiss army knife of video. Convert anything, rewrap in different formats, re-encode, trim, everything. You wouldn’t really use this as a video “editor”, but its great for batch processing videos and generally mucking about. An essential.
This is a generally nicer way to browse directories in terminal, and is mostly a drop in ls
replacement. It provides more sane defaults than ls
(like showing filesize), and some other nice things like a tree-view that lets you easily see sub directories of the current directory of whatever else.
If there was one CLI app I could get anyone to use, it would be this. It’s the definitive way to download Youtube videos from Youtube, and is incredibly simple to use youtube-dl videoURL
and it 99% of the time “just works”. Ignore every shady Youtube video download site — they are all just using this under the hood anyways and probably stealing your personal information in the meantime.
C# is the best programming language, and Dotnet is the best application framework. I try to code in C# as much as possible, so Dotnet is my go to framework. Especially with the addition of top-level programs in Dotnet 5, you can have basically single-line C# source files and execute them with args on the command line.
There’s a million reasons to love Dotnet/C# — and yes I mean that Dotnet. A lot has changed since Dotnet 5, so if you’re still thinking C# is Windows-only, Visual Studio, slow, etc., I recommend reading this post for a modern dossier.
Okay, finally out of terminal land.
When I write code, I write code in VS Code. It’s far and away the best cross-platform code editor around, and I love it so much I’ve built core pieces of Afterschool tech (Depot) on top of its APIs. I love all the keybindings, multi-cursor support, navigation tools, reference peeking, and more.
It’s the best code editor I’ve ever used and can’t honestly see myself switching for a while. I may switch to Rider or Visual Studio for future games, largely due only to their tooling, but will still and try and use Code as much as possible for any development work.
These are tools and software I use to craft the experience of using the computer.
A big change in the past ~5 years for me was to start using a password manager for basically everything. This means I am effectively unable to access anything that requires a login any more without having that password manager around (I generate passwords for everything).
1Password is the best of the bunch, and I say that having tried Dashlane before that and used LastPass at an old job. 1Password’s UX is great, no-nonsense, and with just enough features (alerts about duplicate passwords, incoprorates data from hacks to let you know if passwords should be cycled) that help you without getting in the way.
The onboarding tax of a password manager is rough, but after that it’s trivial to add new stuff and great to manage. And with addition of FaceID on phones and the new laptop that I’m currently talking about having TouchID, logging into the manager is frictionless. Highly recommended.
One of the first things I also install on a new Mac is AppCleaner, a program that mainly helps with… uninstalls. Gotta keep that drive fresh. AppCleaner knows when you’re deleting something and will also find other associated files with that application that may not be cleaned up by simply removing something from Applications. I’m surprised how often it comes in handy.
This is sort of like AppCleaner, but for cache files generated from XCode. Similarly, it wipes cache files that can easily pile up over time.
The Unarchiver is a tool that gives you more control (and more options) for unzipping files on macOS. I honestly never thought I would have needed something like this, but using it as the default file unzipper on macOS is a great experience (and it’s fast!).
I’ve not generally been someone who was really interested in the category of software I like to call “neurotic mac user apps” — software that of reeks of a pre-Cook era Apple, often solving a very specific task, but Bartender is my sole libation here. It does what it says on the tin (keeps your menu bar clean) and then some. It will contextually show you icons based on state, which is really handy to show stuff like CPU usage, disconnected wifi, etc.
Okay I lied because this one is also a bit of a neurotic mac user app. iStatMenus is the best system monitor application for macOS. If you want a serious breakdown of your computers active performance, it’s hard to do much better than this. It’s kind of like Activity Monitor on steroids, and accessible anytime in the menu bar.
These are the tools I use to actually create and get work done.
Okay now time for some actual software and not just computer use experience/dev tools. Typora right now is my markdown editor of choice, and works wonderfully with my blogging platform of choice (and what this blog runs on), Blot.
It’s the best markdown editor I’ve used to edit text meant for reading/writing, and has a lot of really useful macros built in (like copying in images as files to a local directory) that makes it a great place to bang together a blog post or other text.
Admittedly as well, I’ve also recently started dipping my toes into the waters of Obsidian (after being a Roam user in the past), so we’ll see where Typora goes in this flow. Fwiw I use the Typora Quartz theme.
This is still my file sync application of choice. Maybe out of momentum and maybe because they seem to just barely keep their head above water, but Dropbox still delivers on its core value prop wonderfully.
I download Dropbox, point Typora at my writing folder, and I’m essentially setup to start blogging again (again thanks to Blot). It’s a near friction-less flow that’s hard to beat. I’m using it for Obsidian now as well, and unsurprisingly it’s great there as well.
Speaking of versioning — I do think that most Git GUI applications do a worse job of managing Git than the command line… except GitKraken. GitKraken makes it easy to perform git changes for a repo, but also importantly act as a really great view to just see what’s going on in a repo. Especially as teams get bigger (Afterschool has three programmers now!), having a way to easily see the state and history of changes in an easy to use GUI is wonderful.
I HIGHLY recommend this for anyone who has been looking for a Git client. It’s miles ahead better than SourceTree, and many other options I’ve tried like Fork or SublimeMerge.
Raindrop is where I dump and organize links, largely for my newsletter Rendered (when it publishes - soon again I hope). It’s the best application I’ve found to collate lists of links with robust tagging support + ease of capturing new links. It still feels like it has a lot of “chrome” for what I want to use this type of tool for, and I wish there was a tool that function somewhere between Are.na and this, but for now Raindrop meets all my needs.
Ah Unity. Where would a game developer be without you? This is how I make games (for now). It’s how I prototype ideas, try out new software, etc. It’s my creative programming tool of choice.
And Resolve is my video editor of choice. Well aspirationally. I’ve cut a ton of video in Premiere Pro over the years and old habit die hard, but Resolve looks better in almost every way. I’m going to try and get good at using it, because in general I’d like to divest from Adobe.
Speaking of divesting from Adobe — Figma is now where I do 99% of most digital design work. Additionally, it’s where I gather moodboards for new projects in order to figure out themes, and then in the same tool start to bake that stuff down to other actionable pieces. The addition of FigJam also means its now a whiteboarding tool, which I’ve already gotten a ton of use out of and really love.
Figma is seriously some of the most impressive pieces of software I’ve used in a while. It totally nails its niche and then some, and I find working in it a total joy.
These are fonts that I download because I use them eveywhere!
This is my mono-spaced programming font of choice (I also use this in iTerm for the terminal prompt). If I’m writing code, it’s in Jetbrains Mono.
This is my design/type font of choice for design mocking/finals. It’s a great, super readable sans-seif font that works well at all sizes.
And that wraps it! This took way longer than expected! It’s funny, installing all of this stuff out of habit took much less time than writing it all up, but I hope someone in a similar boat as me found the above useful. I work with a lot of other software (Xcode, OBS, etc.) for a lot of other things obviously, but I feel like all of the above is basically a jumping off point to feel like the machine is starting from a position where I feel well setup in beginning to create stuff.
Thanks for reading!
Published on April 3, 2022.
Tagged: Tools