AI Skill for building a new Mac

I’ve been working on a reusable AI skill called mac-setup-bundle-builder.

The idea is simple: point an AI coding agent at your current Mac and ask it to create a rebuild bundle for a future machine. Instead of assuming everyone uses the same tools, the skill is discovery-led. It looks for what is actually installed and configured: apps, package managers, shells, dotfiles, language runtimes, version managers, editor extensions, containers, VMs, local services, AI tools, repos, app settings, and system settings.

The generated bundle is designed to be copied to a new Mac and used by an AI setup agent there. It can include:

  • a setup prompt
  • a structured manifest
  • setup order instructions
  • package and app inventories
  • dotfiles and editor extension lists
  • restore/setup scripts
  • live progress logging
  • verification checks
  • a final HTML report

The skill is careful about private data. It should not commit secrets, tokens, browser sessions, SSH keys, app databases, or account caches. Those are documented as manual or private-transfer items instead.

You can find it here:

github.com/jakowicz/skills

Install with:

npx skills add jakowicz/skills

The first skill in the repo is:

mac-setup-bundle-builder

I built it after creating my own Mac setup bundle, then generalised the workflow so it can adapt to other people’s machines rather than just mine. It is still early, but the goal is to make rebuilding a development machine less of a manual checklist and more of a reproducible and inspectable process.

SOLID Principles – Revisited

I recently rewrote an article on APIE, an article I originally wrote over 2 years ago. Now I am going to rewrite another article I wrote 2 years ago on the SOLID principles.

My views on the SOLID principles, have stayed largely the same, however my knowledge of these principles has matured. This hopefully means, I’ll be able to explain each principle in greater detail and be a lot more concise on each subject. I also like to think my writing style has matured and so I’m able to express myself better with less waffling, which is always a plus.

Continue reading

What is APIE – Revisited

You’ve probably heard of APIE. If you haven’t, the most basic explanation is, “APIE is an acronym for the 4 paramount concepts within OOP, namely abstraction, polymorphism, inheritance and encapsulation.”

Each of these concepts is a huge discussion point in its own right, then there’s how they all fit together to form OOP. Many people have written multi-hundred page documents and book explaining these principles in depth and how to make use of them within different programming languages. Needless to say, I’m not going into that detail and I’m solely going to be discussing the language agnostics. By the end of this article, I hope to have explained each of the four concepts, covering a mix of what they are; how you should make use of them and how they all work together to keep you your code clean and human friendly.

Continue reading

MongoDB – Part 10 – Internals and Final Thoughts

It’s taken me a year to write this MongoDB series, admittedly I have had a lot of down time, but this is the finale. One thing I’ve not given much explanation too, is the internals of MongoDB and how it works under, that what we’ll be covering here.

The main internals I want to cover are, how Mongo actually manages it write concerns using locks and how journaling works. After that, I’ll probably ramble on for a bit and have a big emotional climax.

Continue reading