Think. Design. Build.
Sustainable Systems
Manifesto
- Thinking as the Key: Whether the idea is already fleshed out or just a spark, I believe the idea and vision are the main variables for a great product.
- Design with Identity: Software needs to be clear, intuitive, and a feature needs to have a great user flow. I ensure the design accurately represents the brand's identity and values with solid engineering to create meaningful experiences.
- Built with purpose: My focus is on building long-lasting solutions that serve a clear, defined use and provide genuine utility to people.
About
I create accessible, user-friendly, and mostly web-based solutions for individuals and companies.
My focus is on long-term value and digital sustainability, whether building a small website, a mobile app, or a complex application with various integrations. I am here to help you with technical advice, optimize or create digital workflows, UI/UX design, and full-stack development that brings value to your ideas.
Currently I am building orbit, a centralized hub for managing your digital life, data, and privacy.
Proficiency
- UI/UX Design
- Green UX
- Full-Stack Engineering
- Web Development
- Accessibility
- Mentoring
- Data Sovereignty
- Digital Sustainability
Journal
How to Listen on Custom Ports in ASP.NET Core
When you host an ASP.NET Core application with IIS, you're not replacing Kestrel. Instead, you're putting IIS in front of it in a setup called a reverse proxy. This means that you can't listen on custom ports like you can with Kestrel. This post shows you how to listen on custom ports in ASP.NET Core.
How To Keep Track Of Responses In NestJS
In backend development, effective logging is essential for maintaining a healthy and efficient system. It provides insights into the behavior of your application, aiding in debugging, troubleshooting, and performance optimization. NestJS offers a way to implement custom middleware, including logging mechanisms.
Simplifying Async Error Handling in TypeScript
If you've worked with asynchronous code in TypeScript for any length of time, you'll know that error handling can get messy fast. Between nested try-catch blocks and repetitive error-handling logic, it doesn't take long before your codebase starts feeling cluttered. That's why I've found myself leaning toward a more elegant solution — the `tryCatch` helper function. This little utility is inspired by Go's error-handling approach and wraps your async functions in a way that simplifies error management, making your code more readable and maintainable.