I Learned Machine Learning by Building an F1 Predictor in C#
I explore how I learned machine learning by building an F1 race prediction model in C# using ML.NET, OpenF1 data, and familiar software engineering principles.
Ideas, lessons, and engineering perspectives from building real-world software.
I explore how I learned machine learning by building an F1 race prediction model in C# using ML.NET, OpenF1 data, and familiar software engineering principles.
A breakdown of how I built a full windowed desktop experience into my Next.js portfolio — draggable windows, a taskbar, keyboard shortcuts, and a mobile fallback — without touching the SEO of the rest of the site
Stop guessing which C# keywords to use. Master the CIDIS model to choose between class, record, interface, internal, and sealed with confidence. Learn how focusing on these C# fundamentals reduces bugs, improves code quality, and helps your team release faster.
I explore how I learned machine learning by building an F1 race prediction model in C# using ML.NET, OpenF1 data, and familiar software engineering principles.
I clarify the key differences between REST, SOAP, GraphQL, gRPC, and Webhooks—not as competing "API types," but in the context of their roles as an architectural style, a protocol, a query language, a framework, and an event mechanism, respectively. This analysis was prompted by a challenging moment during a technical interview, and it aims to untangle the terminology, helping you choose the right tool for your needs rather than getting caught up in debates like "REST vs SOAP."
This is my perspective on testing and its impact on becoming a better developer versus merely writing more code about one's code.
Stop guessing which C# keywords to use. Master the CIDIS model to choose between class, record, interface, internal, and sealed with confidence. Learn how focusing on these C# fundamentals reduces bugs, improves code quality, and helps your team release faster.
A comprehensive comparison of JWT and cookie-based authentication, exploring how each works, their security implications, and when to use each approach in modern web applications.
How a simple user ID generation problem led me to understand race conditions, delivery semantics, and the Outbox/Inbox patterns that power modern distributed systems.