Setting up development environments is a frequent ritual in a software engineer’s journey, a task I’ve lost count of over my career. Yet this time, I’ve documented the steps, saving future hours in configuring a new development for coding.
Basic Usage for Macbook Productivity
Customize System Preferences with following options
Trackpad
- Tap to click
- Tracking speed: Maximum as Fast
Trackpad Options
- Use trackpad for dragging
- Dragging Style -> Three finger flag
Keyboard
- Add language typing system: Simple Telex (Vietnamese)
Keyboard layouts
- Disable Correct spelling automatically
Security and Privacy
- Enabling FileVault for data encryption.
- Configuring a firewall and managing app permissions.
- Using a password manager for secure credentials.
Backup and Restoring
- Time Machine: Setup automatic backups. Good usage for external drive.
- Cloud Storage: Syncing important files and settings.
Essential Applications
Safari
- Tabs: Compact layout
- Privacy: Prevent tracking
- Advanced:
- Show full website address
- Show Develop menu in menu bar
Rectangle Import my personal setting in dotfiles
Logi Option+ Install driver for logitech devices
Many other applications can refer to Brewfile in my dotfiles repo
Essential Developer Tools
In the world of software development, there are numerous important tools that you need to install. After using these tools for several years, I always emphasize for a simpler and effective performance. That’s why I created my dotfiles to simplify it. Dotfiles allow you to install and manage all the necessary tools automatically and effortlessly, making the setup process much easier.
A typical developer environment requires the following tools:
- Xcode: Apple’s integrated development environment.
- Homebrew: A package manager for macOS. I utilize a Brewfile to automate the setup of my common packages.
- Zsh: The Z shell replaces the default Bash shell on macOS.
- Prezto: A rapid configuration framework for Zsh that I migrated to after using Oh-my-zsh for a while.
- Terminal: Personally, I opt for iTerm, though you can also use Kitty for GPU-rendered text.
For custom configurations, place them in the following files:
.zshrc
: Configuration for your shell environment..zpreztorc
: Configuration for your Zsh plugins.
Development Environment
IDE
I used to be a terminal fanatic, and having Emacs and Vim was absolutely indispensable. But as time marched on, I opted for the simplicity of VSCode – a bit like swapping out sneakers for a comfy pair of slippers.
Version Control
Using Git with Sublime Merge (GUI) and command line
Programming Language
Ruby and Golang drive my backend development, while Python fuels AI hobby projects. Therefore, smoothly managing language environments and isolated development through package manager is vital.
Package Manager
With various options for each language, I’ve streamlined my process by adopting asdf – a time-saving choice.
Virtualization
Containerized development like Docker offers isolation and quick setup. However, for enhanced speed, opt for a native setup with manual tool installation. There’s always a tradeoff, the cost determined by your decision.
Bonus Productivity Tips
Delete a word and a line in iTerm2
I exposed those config in my iTerm profile. Reference: https://icheft.com/2020/08/12/Delete-a-word-and-a-line-in-iTerm2/
Port 5000 was occupied by Control Center in the new MacOS version
If your local development server uses this port, you can regain control by disabling the AirPlay Receiver Setting.
Clone all repos of company at once
Require gh
package in your machine, or can install by brew install gh
.
Login with gh
.
gh auth login
Clone all repos that defined by --limit
option under your new folder my-org
. Replace my-org
with your organization name:
mkdir my-org && cd my-org
gh repo list my-org --limit 1000 | while read -r repo _; do
gh repo clone "$repo" "$repo"
done
Final Thoughts
Setting up software engineer development environment involves several pivotal steps – from tool selection to environment customization. Embrace the journey, iterate, and don’t hesitate to innovate with your medley of tools and configurations.
In this dynamic landscape, a well-organized, optimized development environment is the compass to navigate the ever-evolving realm of software engineering. Enhanced productivity, refined code, and creative breakthroughs await. Share your experiences, comments, and let’s collectively craft the future of seamless coding together.