I'm now convinced there should be an entire university course on how to work in an existing code base (notice I didn't use the word legacy). The end goal being to make a change to it without breaking the functionality. This would be a senior course. CS401 Software Refactoring.
.NET 8 is going to be a bombshell of a release 🔥. There are a TON of improvements but one of the things I'm most excited about is better out of the box metrics for our http and networking stack. We're also looing to ship grafana default dashboards
#dotnet
Your .net code does not need 15 projects with a class per command and query. You don’t need an interface for everything either. It’s amazing to read extremely simple samples using .net vs node vs go. It seems our ecosystem is attracted to complexity...
#dotnet
High level IC (individual contributors) should have a support group. Managing the transition from being “just another engineer” to being a “force multiplier by working through others” is tough. Talking to others that have managed that transition is calming.
Tech interviews focus so much time on writing code instead of debugging code. Debugging ability is one of the core skills I look for in more senior engineers.
.NET 8's dependency injection container will support "keyed services". A long-requested feature that has finally landed. This is useful when type alone isn't enough to determine the right implementation.
#dotnet
Updated my Todo API sample () to .NET 7 and added lots of new shiny things:
- Route grouping
- JWT auth
- Cleaner integration tests
- Open telemetry
#dotnet
#aspnetcore
12 years at Microsoft this week! It's been a wild ride. I've worked on lots of different things all in the .NET and Azure sphere, *almost* left once for the competition. I'm one of the older members on the team now! Time flies when you're having fun.
#Microsoft
I got advice from one of my mentors to block out ~8 hours per week, ~3-4 hours at a time, to do deep, focused work. It's important for high level ICs to have that time to do thinking and prototyping/coding. It was some of the best advice I've gotten recently.
When I got promoted to senior software engineer at Microsoft years ago, I remember thinking that other people were smarter than me and should have been promoted first. I thought they would be angry, but they weren’t, quite the opposite. Having good coworkers matters A LOT.
I started a discussion with the black engineers in my division about what's currently happening in America as a way to help process everything. I'm angry and sad and feel completely helpless and unproductive today
My posts about technology and .NET will be sporadic. As much as I want to tell your about the cool stuff happening, I also want you to realize that “back to normal” was never an ideal place for black people to begin with.
This is what I’ve been spending time on for the last couple of months. I’m so proud of the team for working hard on this first preview release. Still lots of work to do, but it’s pretty darn cool 😎
#dotnet
#CloudNative
Tip: Starting code reviews by looking at tests is a good way to get a sense of what the change is about (it'll reveal things often hard to spot in the change itself). If there are no tests, stop reviewing and ask for tests.
My main goal isn’t to convince everyone to use C# and .NET (even though that would be nice!), it’s to make sure they are well informed of “the happenings” of the last 10 or so years. Perception changes are a slog.
The software industry is rapidly converging on just three languages: Go, Rust, and JS.
It would be smart to learn one of those really well, and have at least a working acquaintance with the other two.
We spent the last 6 months moving Azure App Service from IIS and nginx to YARP + Kestrel to bring you gRPC and also take advantage of the massive performance improvements in .NET 6 🔥🔥🔥🔥
#dotnet
#aspnetcore
#azure
Having spent the last 1.5 weeks coding, I appreciate how important it is to block 3-4 hour blocks of time to do deep work. It's extremely hard to get back to focused work when context switching all the time.
This is reminder that .NET has been open-source for the last 7 years 🧵:
First the runtime. The JIT, type system, garbage collector, base class libraries (aka stdlib) are all here:
Ok so I spoke to
@ben_a_adams
and we’re going to make a repository for the shared knowledge we’ve gained wrt writing performant .NET code. Stay tuned...
#dotnetcore
#aspnetcore
I enjoy cleaning up messy code. It feels like the equivalent of spring cleaning for developers. Fixing names, adding structure, removing structure, deleting unnecessary code (this is the best one), and simplifying complex code.
I got to say, declaring DTOs is one of the most unenjoyable parts of server-side web programming in strongly typed languages. They are the epitome of boilerplate.
.NET has 4 built-in dictionary/map types:
- Hashtable
- Dictionary
- ConcurrentDictionary
- ImmutableDictionary
There’s no guidance on when to use what, mostly individual documentation on each implementation.
#dotnet
Fun fact: While teaching some students Kubernetes, the lack of networking knowledge hits really hard and pretty immediately. Things that I took for granted and tried to gloss over and weren’t landing initially. Networking isn’t abstracted at all in the cloud. It’s in your face ..
Docker networking is one of those wild fascinating areas that make you regret not paying attention in your networking class in college.
Actually out of all CS taken courses in college, networking is the most useful course IMO.
We’re writing a JSON stack as part of .NET Core 3.0. We’ll have a reader/writer, a JSON DOM and a full serializer. It’s the first JSON parser I’ve seen that supports async without a huge performance hit and I haven’t seen any third party json library do this.
Pro tip: if you’re going to be an asshole when filing issues on GitHub just remember that there are actual people on the other side reading these issues. These people will remember you were an asshole the next time your name shows up anywhere.
Every programmer should learn how to read a stack trace or back trace. Do not panic! There's important information in there, learn to read and understand it.
Wise words from
@shanselman
for junior devs (really devs of any level), if you want to force yourself to learn a bunch of tech all at once, go host and maintain a public website/web application. The amount of crap you will encounter is insane.
I really want to write an e-book with .NET recipes. The idea would be to show how to implement scenarios combining APIs. Those things are very hard to document. For e.g. How to do multi-tenancy with HttpClient
#dotnet
is on the path to 1 BILLION with a B downloads. The entire .NET community should buy
@JamesNK
a cake, a giant cake and whatever else he demands
#dotnet
As part of the work for .NET 8, the team has been rebuilding the popular eshop microservice sample to use all of the new .NET 8 goodies! There’s still lots of cleanup and simplification to do, but come take a look!
#dotnet
In .NET 7, we've finished the moving the thread pool to be fully managed. The timer queue and the windows IO thread pool have been moved to managed code.
#dotnet
RIP the native threadpool: