I'm a principal software engineer at AWS, previously at Microsoft where I worked on ASP.NET Core. I write about developer tools, software internals, and lessons learned along the way.
Recent Posts
Thoughts on leaving AWS and joining Anthropic
This month, I announced I have resigned my position as a Principal Software Engineer for Amazon Web Services (AWS) and accepted a new role as a Member of Technical Staff with Anthropic. After announcing my transition out, 34 people at AWS scheduled office hours for 1:1 interviews with me, and I got asked a lot of questions. I’m sharing some of the common questions and answers here. Whether my thoughts are actually worth sharing is a question I try not to think about too hard. (Plus, two people specifically asked if I could blog more after I leave. I’m choosing to believe they weren’t being sarcastic.)
How I use AI to code
I love to code. I code a lot. And I think I’m good at it - I started coding in 2002 and have written many, many applications in the last 20+ years. AI has been changing the way I code, and I wanted to share my learnings (so far).
Less code is often better
Early in my software engineering career, a senior engineer at Microsoft told me “the best solution is one that requires no new code.” At the time, I thought this was nonsense. Is not my role as a software engineer to write code? Why would writing less or no code be better? More code means more bug fixes, more features, more services, and more tools. So why is more not always better?
Deep-dive into .NET Core primitives, part 3: runtimeconfig.json in depth
Selecting .NET Core's runtime settings, versions, rollforward policy, and more
.NET Core applications contain a file named <something>.runtimeconfig.json. This file can be used to control
a variety of options. Most developers need not be concerned with it because the SDK
generates the file, but I think it’s worth understanding. The file can be used to control settings which are
not surfaced in Visual Studio, such as automatically running your app on higher .NET Core versions,
tuning thread pools and garbage collection, and more.