Skip to main content

Setting up a new laptop

This is mostly a self note for the next time I'm doing a fresh install of my laptop. Which I do about once a year to catch up with the latest macOS version. I feel like a new install has better performance then an in place upgrade.

System Preferences

The first thing that I do on any laptop is to make sure tap to click is enabled 🤣

Also related to the trackpad, three finger drag is also needed...
macOS has tons of Apple icons in the default Dock. I get rid of most of them and also make it a bit smaller, align left, disable magnification / minimizing / animation.
Some what related to the animations, I often reduce motion / increase contrast these days. It feels easier on the eyes.
While I'm still in there, I also disable autocorrect and most of Spotlight indeces.


App Store

I usually pre-download the installation packages before installing to save time but there are a few apps that need to be downloaded from the store. Xcode is the most important one, and it is huge... So the download has to be started early.
I also install a few other smaller apps from the store. Amphetamine is useful if I need to keep the laptop from sleeping to run some slow script.
Keka is a little bit better than the built-in zip/unzip utilities but it's required to handle RAR files... Yes, people still send those around.
WireGuard is the modern take on VPN tunnel. I have used it on and off from the past and it has recently made the news after making it into the Linux kernel. I'm using it more and more though, especially after is blocked by the internet service providers 😓


This is my default browser, I use it for all of my personal web surfing. Mostly because it doesn't try killing the laptop as hard as the other browser. The settings has sensible default values except for the "Open safe files after downloading", I always have to turn it off.

Google Chrome

This is my work browser, mostly because it supports multiple profiles so it's easy to work for more than one company at a time 😆

Other applications

Android Studio, because it bundles the Android SDK which is required for Flutter tool chain. I don't use the IDE that often. Maybe once a month to debug some weird bug.
Docker Desktop, not much to say here.
Dropbox, my primary backup solution.
Little Snitch to catch unwanted traffic from apps. I don't usually install unfamiliar apps but who knows.
MacPass as a password manager. The master file is kept in Dropbox.
Parallels Desktop to run Windows virtual machine. Not really sure why I kept reinstalling this, I use it maybe once a year.
PhpStorm, probably the best IDE for PHP out there.
Sublime Merge, to save me from remembering git commands.
Sublime Text, text editor. I avoid installing packages to keep it fast.
TablePlus, I switched after Sequel Pro is abandoned by its author. The app is great, supports other databases (not just MySQL) and the development team is Vietnam-based.
Telegram, the only chat app on my laptop. For other networks, I install their apps on the phone.
Transmit, useful to take a quick look into the S3 bucket or help a friend by FTPing to their servers.
VSCode, my IDE of choice lately. There are so many extensions I have to disable them globally and enable one by one for each workspace.
Zoom for video conference. The web app is a bit slow I think.


After the apps are ready, I open the Terminal and start setting up:

  • Restore ssh keys
  • Install
  • Install Homebrew
  • Restore config backup from Mackup: brew install mackup && mackup restore
  • Install dev tools with brew: fvm (Flutter version manager), nvm (Node.js version manager), google-cloud-sdk
  • Install git-crypt and gnupg to manage credentials

That's it. All of these will take about a day, including the aprox. 2 hour macOS install. If the network is fast or I have nothing else to do then maybe it can be done within an afternoon.


  1. Note to future self:

    brew install --cask android-studio
    brew install --cask beeper
    brew install --cask docker
    brew install --cask goland
    brew install --cask little-snitch
    brew install --cask macpass
    brew install --cask openvpn-connect
    brew install --cask sublime-merge
    brew install --cask sublime-text
    brew install --cask tableplus
    brew install --cask teamviewer
    brew install --cask transmit
    brew install --cask visual-studio-code
    brew install awscli
    brew install cocoapods
    brew install go
    brew install kubectl
    brew install mackup
    brew install nvm
    brew tap leoafarias/fvm && brew install fvm


Post a Comment

Popular posts from this blog

Flutter: Fixing Firebase header not found with Notification Service Extension

If you follow the FCM tutorial Send an image in the notification payload and encountered this error message: 'FirebaseMessaging/FirebaseMessaging.h' file not found You are on the right place, I'm going to show you how to fix it. My app was working fine but one day it stopped compiling. Apparently Flutter 1.20 changed the way it uses CocoaPod so the service extension no longer has the proper library configured. After some tinkering, I came up with this pod config, it has to be added to ios/Podfile below the main Runner target. target 'FcmImage' do use_frameworks! use_modular_headers! require File.expand_path('../.symlinks/plugins/firebase_core/ios/firebase_sdk_version.rb', __FILE__) firebase_sdk_version = firebase_sdk_version! pod 'Firebase/Messaging', "~> #{firebase_sdk_version}" end FcmImage is my extension name, replace it with yours We can use a hardcoded version for Firebase/Messaging pod but doing so m

IMAP module for PHP in Mac OS X Mountain Lion

So here it comes again. I have recently upgraded to Mountain Lion and for whatever reason, Apple decided to nuked all my previous PHP (among other things) configurations so I have to setup IMAP in PHP again. A simple Google search may point you to this post with detailed instruction for Lion however, some steps have been changed a bit... Step 1: Install prerequisites You may choose to download Xcode ( FREE ) from the App Store then go to menu Xcode > menu item Preferences > tab Downloads, select to install Command Line Tools OR you can go to Apple Developer  to get it, you may need to login. Step 2: Compile IMAP Get the IMAP source code from University of Washington website . Please do me a favor and check that website for the latest version, it's good practice. If you that laz y , try to click the "y" to get direct link to 2007f version. Extract the package and open the Terminal to the new directory before executing these command: make osx EXTRACFLAG

OAuth with Google, Twitter and... Facebook!

This is sick! Just a few days ago, I ran into OAuth as I want to get my GMail feed based on Google Data API . I succeeded. With a little help of an OAuth open source ( here , available in several programming languages). Then I remember that I once heard that Twitter also uses OAuth as an authentication option so I turned into Twitter and had a good read. Finally, I found out that they are basically the same (hehe, it's obvious since OAuth 1.0 is a worldwide standard). I had an idea of writing a universal class which can handle both Google and Twitter OAuth functionalities. It's not too hard. I took most of the idea from the PHP example ( here , PHP only). I also made a small script which accepts URI to send and intercept response from Google & Twitter servers. At that moment, I was so excited with all the ideas but actually it has no real world benefit so I just left it there... Until today, in the F8 (says "fate") conference of Facebook, I was stunned fin