Portfolio

I build software, data platforms, and engineering practices that connect technology with the organizations that need to use it.

My work sits at the intersection of software engineering, architecture, data, AI, and organizational design. I enjoy going from an ambiguous business problem to a workable solution: understanding the context, making architectural decisions, building the foundations, and helping teams turn those decisions into maintainable software.

I also build things simply because I enjoy the craft. Some of the projects below are commercial products, others are open-source tools, frameworks, or experiments that capture ideas I use in my professional work.

Talks & knowledge sharing

I regularly share what I learn through technical talks and writing. My talks focus on practical software engineering, architecture, Python, and the principles behind building systems that remain understandable and maintainable.

View all talks →


Company

Data Edge

Data & AI products, platforms, and engineering

Data Edge is my vehicle for turning ideas around data, AI, privacy, and software engineering into working products.

I design and build complete solutions, from architecture and backend services to infrastructure, security, user interfaces, and operational tooling. The focus is on practical technology that can be adopted by real organizations rather than technology for its own sake.

Explore the Data Edge portfolio


Open-source Python

I maintain a collection of Python packages that solve problems I've encountered while building software. They range from small utilities to infrastructure and dependency-injection tooling.

cachr

A Python caching library focused on keeping caching simple and composable.

buffr

A small Python library for working with buffered data and processing patterns.

bloomlib

A Python implementation of probabilistic data structures and algorithms.

cythonbuilder

Tooling for building and packaging Python projects that use Cython.

fastinject

Dependency injection for Python applications, designed to keep application code loosely coupled and straightforward to test.

These projects reflect how I approach software engineering: small, composable building blocks, explicit boundaries, strong abstractions, and code that remains understandable as a system grows.


AI-assisted engineering

mikehulsskills

A collection of skills for Claude Code that bring structure and engineering discipline to AI-assisted software development.

The project includes practices for preparing projects before implementation and for applying layered architecture while working with AI coding agents.

The underlying idea is simple: AI makes implementation cheaper, so understanding the problem and making the right decisions becomes even more important.

I am particularly interested in the emerging relationship between human engineers and AI agents. Good engineering context, architecture, requirements, governance, and decision-making allow both to work more effectively.


Project management & engineering frameworks

The Project Preparation Framework

A practical framework for bringing clarity to software projects before significant implementation begins.

It connects:

Business → IT → Functional → Technical → Governance → Planning

The framework produces lightweight decision artifacts that establish shared understanding between business stakeholders, product owners, architects, developers, and AI coding agents.

It is deliberately not a waterfall methodology. The goal is to make important assumptions and decisions explicit while they are still cheap to change.


Platforms & products

I also design and build larger platforms where architecture, product design, infrastructure, security, and organizational adoption all have to work together.

See the Data Edge portfolio for an overview of these products and platforms.

These projects typically involve several layers of engineering:

  • Product & business: understanding the problem, users, value, constraints, and adoption
  • Architecture: defining boundaries, integrations, data flows, and technology choices
  • Software engineering: building maintainable backend and frontend systems
  • Data & AI: designing data models, pipelines, retrieval, semantic systems, and AI capabilities
  • Infrastructure: deployment, observability, security, automation, and operations
  • Teams & processes: establishing ownership, ways of working, governance, and engineering practices

I enjoy working across those boundaries. A technically elegant system is only successful when it fits the people, processes, capabilities, and goals of the organization around it.


Engineering philosophy

I don't see engineering as an isolated technical discipline but can only My goal is to enable change by keeping change cheap; both technically and organizationally. This way organizations can react to the ever-changing environment they are part of and prevent stalling and falling behind.

  • Good architecture creates boundaries that allow people and systems to change independently.
  • Good solutions remain understandable when the original author is no longer in the room and is maintainable in the sense that it's able to change cheaply 2 years down the line
  • Good technology decisions consider the organization that has to operate and evolve the resulting system.
  • Good engineering means designing systems and ways of working in which humans and AI agents can collaborate effectively.