← Back to work

Case Study

Dotfiles as a personal operating system.

A portable macOS development environment built around zsh, Git, Homebrew, Starship, and a small set of carefully chosen terminal tools.

macOSzshGitHomebrewStarshipDeltafzfzoxideezabatripgrepfd
A terminal showing Michael’s configured zsh environment, Starship prompt, and dotfiles workflow.
The everyday view: a quiet prompt, useful Git context, and commands that keep navigation and maintenance close to hand.

Try the workflow

A small simulated terminal preview of the commands and workflows this setup is built around. It does not run anything; it just shows the shape of the environment.

interactive preview

╭─ ~/.dotfiles on  main

╰─ ❯ type “help” or click a command above

❯

Role

Personal tooling, workflow design, shell configuration, and automation.

Focus

Making a new Mac feel familiar quickly, without hiding how the system works.

Status

Active, evolving, and intentionally small enough to understand at a glance.

Why it exists

My dotfiles are less about collecting clever aliases and more about creating a calm, repeatable development environment.

The goal is not to make the machine look complicated.

The dotfiles repository structure showing folders for shell scripts, Git configuration, zsh configuration, and supporting files.
The repository is organised around the tools it configures, keeping the system easy to scan and maintain.

What it manages

A zshrc excerpt showing shell aliases, helper functions, and optional terminal tool integrations.
The shell configuration favours small helpers, readable defaults, and optional enhancements rather than a fragile all-or-nothing setup.

Design decisions

A macOS development workspace showing the dotfiles workflow in context.
The goal is not to make the machine look complicated. It is to make the environment feel calm, familiar, and ready to work in.

Search site

HomeReturn to homepageWorkProjects, research and digital archaeologyPhotographyUrban exploration and photographyToolsUseful browser-based utilitiesAboutAbout me, current interests and my setupContactGet in touchNowAbout · Current projects and interestsUsesAbout · Hardware, software and workflowPortalAccount, applications and connected services (opens in a new tab)Report a bugReport and follow issues in apps and websites (opens in a new tab)Request a featureSuggest and follow ideas for apps and websites (opens in a new tab)Breadcrumb Path BuilderWeb tool · Generate clean breadcrumb navigation with Markdown, HTML, and JSON-LD structured data output.Case ConverterText tool · Convert text between lowercase, uppercase, title case, sentence case, kebab-case, snake_case, camelCase, PascalCase, and CONSTANT_CASE.Colour ConverterDesign tool · Convert colours between HEX, RGB, HSL, and OKLCH with live previews and copy buttons.Duplicate Line RemoverText tool · Remove repeated lines from copied text, exports, usernames, logs, tags, and messy lists.HTML Entity Encoder / DecoderWeb tool · Encode and decode HTML entities locally in your browser.JSON FormatterDeveloper tool · Format, validate, minify, and sort JSON with a clean local-only editor.List AlphabetiserText tool · Sort lists alphabetically, reverse them, remove duplicates, trim whitespace, and clean up empty lines.Markdown PreviewerDocumentation tool · Write Markdown and preview the rendered output locally in your browser.Secret GeneratorSecurity tool · Generate passphrases, passwords, PINs, recovery codes, and other local-only secrets in your browser.Slug GeneratorText tool · Turn titles and phrases into clean URL-friendly slugs for pages, posts, and filenames.Text Diff CheckerText tool · Compare two pieces of text and highlight added, removed, and unchanged lines.Timestamp FormatterDate & Time tool · Convert Unix timestamps, ISO dates, local times, UTC times, and Discord timestamp formats.Tree GeneratorDocumentation tool · Turn indented notes into clean directory trees for documentation, READMEs, and project pages.URL Encoder / DecoderWeb tool · Encode and decode URLs, query strings, and text locally in your browser.Word CounterText tool · Count words, characters, sentences, paragraphs, and estimated reading time from plain text.ABP BathgatePhotography albumAirth CastlePhotography albumBalrossie OrphanagePhotography albumBangour Village HospitalPhotography albumBirkhill Fireclay MinePhotography albumCalachem GrangemouthPhotography albumCallendar SquarePhotography albumCastlebridge CollieryPhotography albumCummins Diesel Engine FactoryPhotography albumDTM AutosPhotography albumDunfermline CottagePhotography albumDunmore PineapplePhotography albumEDS Print FacilityPhotography albumForth Valley CollegePhotography albumGlendevon DungeonsPhotography albumGray Dunn AND CO Biscuit FactoryPhotography albumHartwood HospitalPhotography albumHeathhall CAR FactoryPhotography albumKilbagie Paper MillPhotography albumLathallan HousePhotography albumLongannet Generating StationPhotography albumNorth Queensferry GUN BatteryPhotography albumPennine TowerPhotography albumPirniehall Residential SchoolPhotography albumPort EdgarPhotography albumPrudential CraigforthPhotography albumST Peters SeminaryPhotography albumStirling Royal InfirmaryPhotography albumStobhill HospitalPhotography albumStrathmartine HospitalPhotography albumTHE Leisure BowlPhotography albumViewforth High SchoolPhotography albumRaiderGames and exploration (opens in a new tab)LumenAn independent desktop OS (opens in a new tab)Lighthouse RadioApps for Apple and AndroidBlogFirst posts coming soon (opens in a new tab)GitLabView source repositories (opens in a new tab)BlueskySocial profile (opens in a new tab)

Use the arrow keys to browse, Enter to open, or Escape to close.