or, the “it’s parentheses all the way down” part.
remember this guide is opinionated, right? ok so: Mac. look, you’re gonna need a Linux-like environment. MS-DOS ain’t gonna cut it. in theory, if you buy into Apple’s kool-aid, the thoughtful design of a Mac might even make you a better product developer, at least by osmosis. i don’t know about all that, but it is indeed a slick machine. the clincher for me is that you can use BootCamp to install Windows if you really need it (to test Microsoft Edge and such) and it’s difficult to install Mac on non-Mac hardware if you need to test Safari, which a bunch of users do indeed use in the wild.
all that being said, not everyone is privileged to shell out that kind of moola, so a Linux laptop is an absolutely fine choice as well!
internalize this now: every engineer is a security engineer. you need to know security just as much as security “specialist” does. you must adapt the mindset of the paranoid because the Internet is not a nice place and is constantly trying to kill you.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# install zshbrew install zsh zsh-completions# install oh-my-zsh which adds zsh nicities. (cheatsheet of shortcuts found here)sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"# you can set a custom theme for your terminal or try out the random ones to get ideasvim ~/.oh-my-zsh/themes/mycustomtheme.zsh-theme# try out Powerline9k:git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k# edit your ~/.zshrc filevim ~/.zshrc# a great theme to start with is Powerline9k:ZSH_THEME="powerlevel9k/powerlevel9k"# install necessary fonts for the theme:brew tap caskroom/fontsbrew cask install font-hack-nerd-font# you'll then need to set in iTerm2, Preferences->Profile->Text->Non-ASCII Font to Hack Nerd Font.# further great config options for Powerlevel9k found in this gist. (requires some finessing)POWERLEVEL9K_MODE='nerdfont-complete'POWERLEVEL9K_PROMPT_ON_NEWLINE=truePOWERLEVEL9K_PROMPT_ADD_NEWLINE=truePOWERLEVEL9K_RPROMPT_ON_NEWLINE=truePOWERLEVEL9K_SHORTEN_DIR_LENGTH=2POWERLEVEL9K_SHORTEN_STRATEGY="truncate_beginning"POWERLEVEL9K_VCS_CLEAN_FOREGROUND='black'POWERLEVEL9K_VCS_CLEAN_BACKGROUND='green'POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND='black'POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND='yellow'POWERLEVEL9K_VCS_MODIFIED_FOREGROUND='white'POWERLEVEL9K_VCS_MODIFIED_BACKGROUND='black'POWERLEVEL9K_VCS_UNTRACKED_ICON='\u25CF'POWERLEVEL9K_VCS_UNSTAGED_ICON='\u00b1'POWERLEVEL9K_VCS_INCOMING_CHANGES_ICON='\u2193'POWERLEVEL9K_VCS_OUTGOING_CHANGES_ICON='\u2191'POWERLEVEL9K_VCS_COMMIT_ICON="\uf417"POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="%F{blue}\u256D\u2500%F{white}"POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="%F{blue}\u2570\uf460%F{white} "POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os_icon ssh root_indicator dir vcs)POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(command_execution_time status time)POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=1HIST_STAMPS="mm/dd/yyyy"# some other ideas for powerlevel9k configs are found here.# some extra plugins for oh-my-zsh to add to the `plugins` property:plugins=(compleat dircycle dirhistory git git-extras git-flow history history-substring-search last-working-dir sudo wd)# - compleat: adds completion for commands. read more here.# - dircycle: adds Ctrl+Shift+Left/Right to cycle through directory history.# - dirhistory: adds Alt+Up/Down and Alt+Left/Right for going through directories.# - git-extras: see list here.# - git-flow: adds completion for `git flow`.# - history: adds `h` for `history`; also adds `hsi [searchterm]` to search.# - history-substring-search: fancier autocomplete when hitting up/down on command completion.# - last-working-dir: saves last working directory for your shell.# - sudo: hit Escape twice to add `sudo` to command.# - wd: "warp directory" - creates common directory jump points.# colorls is great. get that too. make sure ruby is installed first.gem install colorlssource $(dirname $(gem which colorls))/tab_complete.sh# add to your .zshrc file:alias lc='colorls -lA --sd --gs'alias lct='colorls --tree -A --sd --gs'
a.k.a. The Holiest of Wars
whereas the above choices might have some contention, i’m sure the Internet will have a conniption with anything i choose below. so…i won’t choose anything in particular 🙂
Options
vscode-pets
extension. 😸