# Christoph Andreas Thonhauser > Senior Software Engineer & Consultant at SQUER, Vienna, Austria. Most compromises in software come from nobody knowing what's actually needed. I find out, make the code say it, and cut the rest. Short form: CAT. ## Profile - [Profile](https://thonhauser.dev/index.md): who he is, selected work, experience, contact - [CV](https://thonhauser.dev/cv.md): full CV - [JSON](https://thonhauser.dev/api/me.json): the same profile, structured ## Writing - [Your Ports Are Lying About Your Business](https://www.squer.io/blog/your-ports-are-lying-about-your-business): Hexagonal ports named after HTTP operations defeat their purpose. Name them after business intent, and tests, codebases, and AI agents all get better. - [A portfolio for someone who has never opened a terminal](https://thonhauser.dev/work/artist-portfolio-template): Designing a site template that is structurally unable to incur a charge: one account, zero secrets, and AVIF that is never re-encoded. - [From Monolith to Microservices: A Migration Case Study Using NestJS](https://pub.hcw.ac.at/obvfcwhs/content/titleinfo/12219878): Migrating a NestJS monolith to microservices in an Nx monorepo, with RabbitMQ and a backend-for-frontend. Under 400 concurrent users the monolith failed 18.56% of requests, the microservices 2.90%. ([source code](https://github.com/chranditho/bachelorThesisTwo)) ## Projects - [mdrn](https://github.com/chranditho/mdrn): Spring Modulith showcase: hexagonal modules with enforced boundaries that talk to each other through domain events.