01 — OS and Shell

The honest answer: as an Applied ML engineer at Zoho in India in 2026, you almost certainly own a MacBook (M-series) and are issued a workstation running some Linux flavor. That is fine. But you cannot become a C-in-production engineer without direct, daily Linux access, because 95% of C ships on Linux, and the interesting failure modes (io_uring, epoll, perf, bpftrace, rr) are Linux-only. This file resolves how.

The three viable configurations

Config

Cost

Pros

Cons

When to pick

macOS 15+ + OrbStack + a Linux VM

Your existing Mac + $8/mo OrbStack Pro or free

Best hardware, Apple Silicon perf, clang bundled

valgrind can’t run, some tools ARM-only quirks, syscall behavior differs

Default choice for Zoho ML engineer in India.

Ubuntu 26.04 LTS native (Framework laptop, ThinkPad, or NUC as second machine)

~$400-800 for a cheap Linux box, or $0 if you already have a spare

Full Linux native, valgrind, perf, bpftrace, io_uring; everything just works

Second machine to manage; battery life vs Mac

Once you’re in M7+ and doing kernel/io_uring work, buy the cheap Linux box.

Windows 11 + WSL2 (Ubuntu 26.04)

Your existing Windows machine

Full apt ecosystem; perf and bpftrace now work in WSL2 (kernel 5.10+)

Filesystem crossing WSL/Windows is slow — keep source inside WSL. GUI Linux apps via WSLg.

If your work-issued laptop is Windows, this. Otherwise not.

macOS honest tradeoffs (mid-2026)

What works great on Apple Silicon:

  • clang 20 (bundled with Xcode Command Line Tools)

  • Homebrew gcc 15 (installed as gcc-15, not gcc/usr/bin/gcc is a clang symlink)

  • lldb (excellent), Instruments (great sampler), Xcode.app (only install the Command Line Tools, not the full IDE, unless you need Instruments GUI)

  • ASan/UBSan/TSan all work

  • ARM NEON for SIMD work

What doesn’t work / is painful on Apple Silicon:

  • valgrind: no working port for Apple Silicon. Use -fsanitize=address instead; it’s actually faster.

  • perf: Linux-only. Use sample/Instruments on Mac, but you must run perf on a Linux VM before you claim perf competency.

  • rr (record-and-replay): Linux x86_64 only.

  • bpftrace / eBPF: Linux-only.

  • io_uring benchmarks: Linux-only.

  • Docker for Mac (the Docker Inc. product): works but heavier than OrbStack. Prefer OrbStack.

Recommendation: run OrbStack (or Colima) with a lightweight Ubuntu 26.04 VM for the Linux-only tools. orb create ubuntu:26.04 dev gives you a 2-second boot.

Ubuntu on WSL2 vs native

WSL2 in 2026 is genuinely good. Kernel version supports perf, io_uring, and eBPF. Filesystem I/O within /home/<user>/ on the WSL2 side is fast; crossing to /mnt/c/ is slow (~10x). Keep your code in the WSL2 home directory.

Native Ubuntu 26.04 LTS “Resolute Raccoon”:

  • Released April 2026. Supported to April 2031 (standard) / 2036 (ESM).

  • Wayland-only GNOME session by default (X11 GNOME session dropped in 26.04). Fine for terminal-heavy work.

  • Kernel 6.14+ series.

Do not use Ubuntu 25.10 “Questing Quokka” — it hits EOL on July 9 2026 (basically today). If you’re on 24.04 LTS, stay on 24.04 through mid-2027; upgrade to 26.04 when you’re between projects.

Shell

Just use zsh on Mac (default) and bash on Linux (default). Do not spend Day 1 on oh-my-zsh, starship, or fish. Learn to write C first; customize your prompt in month six when you have proven you’ll stick with it.

Minimum shell tools:

  • tmux (persist sessions across ssh disconnects)

  • ripgrep / rg (grep replacement, faster + smarter)

  • fd (find replacement)

  • bat (cat with syntax highlighting; useful for reading source files)

  • fzf (fuzzy finder; incredible for Ctrl-R history)

Docker on Mac — OrbStack vs Colima

OrbStack

Colima

License

Commercial ($8/mo Pro, free tier)

MIT OSS

GUI

Native macOS app

CLI only

Startup

~2 seconds

~10 seconds

File sharing

2-way, native, fast

1-way, sshfs-style

Linux VM built in

Yes; orb create ubuntu:26.04 dev

Yes; colima start --profile ubuntu

Verdict

Best daily driver. Worth the $8/mo.

Solid pure-OSS choice if you object to closed source.

What most people get wrong about OS choice

They want to run Arch/NixOS as their primary because it looks impressive. You are learning C, not systems administration. Pick the boring, stable, high-support choice (macOS or Ubuntu LTS), and put your creative energy into the code. You can go Arch in year three.

Return to README.md · Next: 02_compilers_and_toolchains.md