AHA Moments


My work environment setup


  • Macbook Pro 13-inch 2018: Nowadays fast SSD and at least 16 gigabytes of memory is the lowest bar for a development box
  • Normal mouse and normal keyboard: I'm not even using mechanic keyboard, might due to their noises. I'm still using a ten-year old BenQ so-called X structure keyboard. Developers don't have to type a lot at all.
  • 27-inch display: nothing special
  • Laptop stand: A must-have
  • Stand desk: not yet. I might give an electronic multi-stage desk a go.


  • Operation system: As a Java developer most of the time (Clojure at last project), I don't have to bear with Windows though I heard about its improving terminal experience lately. I quite enjoy the experience under Ubuntu, especially the huge performance gain in Docker. The change of shortcuts is the top blocker to my turning away from Macbook.
  • IntelliJ Ultimate: As a previous ten-year user of Eclipse, I vouch for IntelliJ with my whole heart. Its support of refactoring and TDD is the deal breaker. My current company has paid for it but I'm also willing to take from my own pocket.
  • iTerm2: Great terminal with tabs and view split. Though on linux it's easy to find alternatives without some advanced features I don't use.
  • My homebrew list: Sorry for the transient packages

    ack		gettext		jq		nettle		perl		stoken
    adns		git		krb5		node		pinentry	tfenv
    aliyun-cli	git-delta	leiningen	npth		pkg-config	unbound
    awscli		git-lfs		oniguruma	postgresql	vim
    bdw-gc		gmp		libyaml		openconnect	protobuf	wget
    clojure		gnutls		lua		openjdk		python@3.8	xz
    curl		gradle		maven		openssl@1.1	readline	yarn
    exercism	guile		-error	mysql		p11-kit		rlwrap		z
    fzf		hub		libidn2		n		ruby		zsh
    gdbm		icu4c		ncurses		

Terminal setup

  • Zshell
  • Oh-my-zsh
  • fzf: A great improvement to command history
  • z: Excellent directory jumper
  • spaceship-prompt: Optional
  • Sdkman
  • Useful aliases apart from those coming with plugins of oh-my-zsh

    ➜ cat ~/.oh-my-zsh/custom/alias.zsh
    alias dprune='docker stop $(docker ps -a -q) || docker system prune -af || docker volume prune -f'
    alias dclean='docker rm -f $(docker container ls -aq) || docker volume prune -f'
    alias brewu="brew upgrade; brew upgrade --cask; brew cleanup;"
    alias grsb="git remote set-branches --add origin"


Get yourself familiar with common shortcuts in those applications.