I’m Ayan Hedayati, a full stack developer in Birmingham. This is a place to think through what I’m building, record what I learn and share the decisions that happen behind an interface.
A finished product rarely tells the whole story. The useful lessons often live in the trade-offs: why one approach made sense, where it fell short and what changed along the way.
From interface to infrastructure
My work spans frontend development, application architecture and cloud infrastructure. It has taken me from modernising legacy systems to building web applications and helping engineering teams deliver new features.
That range shapes how I approach software. An interface needs to be understandable. The systems behind it need to be dependable. Neither works particularly well in isolation.
These are some of the tools I use across that work:
1const toolkit = { 2 interfaces: ["React", "Next.js", "TypeScript", "CSS"], 3 applications: ["Node.js", "Express"], 4 infrastructure: ["Azure", "AWS", "Docker"], 5 collaboration: ["Git", "Storybook"], 6};
The tools are a means to an end. Choosing the right one starts with understanding the problem, the people using the product and the team maintaining it.
Why keep notes?
Writing makes me slow down and test my own understanding. It turns a half-formed observation into something I can revisit, question and improve.
I’ll use this space for reflections on building software: interface decisions, architecture, delivery and the practical lessons that connect them. Some notes will be technical. Others will be about the process of making things with a team.
If something here resonates, or you see a different way to approach it, get in touch. A useful conversation is often where the next idea begins.