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, notgcc—/usr/bin/gccis 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=addressinstead; it’s actually faster.perf: Linux-only. Use
sample/Instrumentson Mac, but you must runperfon 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 forCtrl-Rhistory)
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; |
Yes; |
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