Hubert Mijalski
Hubert Mijalski
  • Видео 15
  • Просмотров 31 023
Why Microsoft Naming Sucks
In this video I explore the weird names that Microsoft assigns to their products and how it affects .NET and C# ecosystem. I believe this issue is hindering the .NET popularity which has come very far and is providing one of the best Developer experiences out there, but is not reaching the praise it deserves. Shout out to anyone working on .NET though, you guys are rockstars!
I really do hope you appreciate the video, I'm trying to get back into video making :)
00:00 Intro
00:16 Windows naming
01:01 Xbox naming
01:37 Visual Studio naming
02:31 .NET naming
04:51 Blazor naming
Просмотров: 4 083

Видео

How To Write .NET Core Middleware with Minimal APIs?
Просмотров 1,2 тыс.Год назад
In this video let's explain how middleware works in .NET Core and how to write one. We'll build the simplest middleware and also explore more advanced scenarios, with Attribute filtering (adjusted for Minimal API approach). We'll also talk about some of the important rules for writing middleware. Chapters: 00:00 What is middleware in .NET and how it works? 02:27 Writing basic middleware 06:04 A...
C# Structs demystified - guidelines on when to use
Просмотров 555Год назад
In this video we explore the use cases for structs and their advantages and disadvantages. We also focus on their quirks, and any issues arising from their incorrect usage. We also explore a code demo with the showcase of how they work internally. Chapters: 00:00 Intro 01:05 When to consider struct usage 04:20 Struct constraints 04:44 Characteristics of struct 05:32 Code sample 05:50 Don't rely...
Dependency Injection advanced topics: forwarding, scanning, named services
Просмотров 528Год назад
In this video let's explore some more advanced Dependency Injection concepts in .NET. Let's push the built-in DI container to the limit and also let's see how we can expand it with additional features without loosing previous container setup. Chapters: 00:00 Intro 01:02 Fowarding in .NET built-in container 04:27 Named services in .NET built-in container 08:40 Scanning for services with Scrutor
Basics of Dependency Injection
Просмотров 318Год назад
In this video let's talk about Dependency Injection in .NET and in general. Why is Dependency Inversion Principle important? Why do we use Dependency Injection? What exactly is dependency? Basics of Dependency Injection in .NET. Chapters: 00:00 Intro 00:24 What is Dependency Inversion Principle 01:15 Solving DIP 01:45 Dependency Injection Containers 02:45 Injection types 03:53 Dependency lifecy...
C# Heap vs Stack explained
Просмотров 3 тыс.Год назад
Explaining Heap and Stack differences in C#. Reference Types vs Value Types - where variable lives affect how code behaves. Exploring real-life examples of variable type differences. Explaining ref and out keywords. Chapters: 00:00 Intro 00:33 How does C# manage memory 02:02 Value Type vs Reference Type 02:24 Code Demo I 04:13 Passing different variables to methods 05:00 Code Demo II 06:06 Ref ...
Overloading Operators in C# - How & when?
Просмотров 431Год назад
In this video I wanted to show you which operators you can overload & how to do so. I also explore how overloading operators can help you avoid primitive obsession. Want to know the difference between is and or Type x = y; vs var x = (Type)y; Twitter: kyrcooler Chapters: 00:00 Intro 00:20 Operators we can overload 01:00 Assignment operator differences (Explicit vs Implicit) 01:40 Ex...
Intro to PowerShell Core - params, switches, pipelines, select, where
Просмотров 232Год назад
In this video, I want to showcase what PowerShell Core is. Why it's good and the way for your scripting needs? I showcase how to use pwsh command line tool (how history & tooltips work) After that, I explore a demo code where we see how parameters, and switches work. At the end I showcase pipe | operator that uses allow to manipulate collections in a neat way. Powershell Core download link: git...
How to prevent your code from becoming legacy?
Просмотров 469Год назад
This video aims to explain what is Cyclomatic Complexity and how it helps prevent your code from becoming legacy code. Measuring this metric can help you easily detect logic complexity that so often leads to legacy code. It also shows a demo of refactorings done to C# code based on complexity measurement. It also adds some tips for applying them in practice in much more advanced scenarios, but ...
How does EF Core keeps track of changes?
Просмотров 4,9 тыс.Год назад
In this video I showcase how Entity Framework Core knows what to save to database on SaveChanges. I want to explain how Entity States works and what exactly is ChangeTracker. After that I showcase common tips regarding Change Tracker - optimizations & common issues. Let's debunk the magic behind EF Core! Twitter: kyrcooler Repo: github.com/Mijalski/MinimalApiTutorial/tree/feature/bo...
How to use .NET Channels in practice?
Просмотров 2,1 тыс.Год назад
What are Channels in .NET, what problem do they solve? How do they work and how to use them? Showcase of ChannelReader in Background Services thus offloading your API endpoints that are replaced with ChannelWriters. With a demo of practical guide on optimizing your endpoints using Channels. Good to see before: What are background services: ruclips.net/video/eXoEF59NDqk/видео.html Minimal API: r...
How to Work with Background Services in .NET
Просмотров 1,6 тыс.Год назад
Have you wanted to implement background service in .NET? Do you need to perform some logic when your application starts and want to do it in a non-blocking way? Are you trying to remove Hangfire dependency from your project? In this video, I aim to show you what is a BackgroundService and IHostedService in .NET and how to work with them. Twitter: kyrcooler Chapters: 00:00 What are b...
Async optimization in C# (ValueTask, Async Eliding, Task.CompletedTask)
Просмотров 1,4 тыс.Год назад
How to optimize async code? Are ValueTasks always better than Tasks? What is async eliding and what are the benefits and drawbacks? In this video I wanted to answer all the questions listed above. Sources: devblogs.microsoft.com/dotnet/understanding-the-whys-whats-and-whens-of-valuetask/ blog.stephencleary.com/2016/12/eliding-async-await.html Twitter: kyrcooler 00:00 ValueTask vs Ta...
How Async and Await work under the hood in C#
Просмотров 9 тыс.Год назад
You use async/await keywords everyday when working with C#, but do you know how they work under the hood? Do you know what exactly is Task and how it should be used? Twitter: kyrcooler 00:00 Intro 00:11 What is a Task 02:14 What async and await keywords mean 03:45 How async improves synchronous code 05:59 DOs and DONTs of async
How to design & create .NET API in 2022
Просмотров 1,1 тыс.2 года назад
Exploring the Vertical Slice architecture in practice by taking advantage of .NET Minimal APIs. Organizing your code into modules that are fully self-contained can be extremely beneficial and allow you to deliver product quickly, without closing the door to microservices later down the road. Repo link: github.com/Mijalski/MinimalApiTutorial Inspired by: timdeschryver.dev/blog/maybe-its-time-to-...

Комментарии

  • @unknownvisitor2190
    @unknownvisitor2190 4 дня назад

    thank you for video, clear explaination.

  • @Novacification
    @Novacification Месяц назад

    This is exactly what I was looking for. It's surprisingly hard to find good information on structs because people always just say not to use them and start talking about premature optimization. However, sometimes performance is important and if you understand why and when to use them there's nothing premature about it; it's simply optimization.

  • @activex7327
    @activex7327 Месяц назад

    The advise on using Task ctor is flawed. There are many scenarios to create not started tasks.... If you don't have any specific requirements to create a task, you don't need to use factory, just use the Task ctor.

  • @agentotten
    @agentotten Месяц назад

    vscode and vs2022 and vs2019 it is really not that hard.

  • @MattDog_222
    @MattDog_222 Месяц назад

    Its because 7 eight 9

  • @FriedMonkey362
    @FriedMonkey362 Месяц назад

    I really dislike the visual studio and vistual studio code naming, it makes it really annoying to search

  • @martinnovak679
    @martinnovak679 Месяц назад

    C# is just 1 languege in .NET ecosystem with other 20 langueges sharing same features and libraries. all those langueges are compiled to MSIL (bytecode) which can be launched as JIT ("just in time" like Java) or AOT ("ahead of time" like C++) you can have 1 program with parts writen in different langueges .NET framework is old framework with lot of bloat from old versions (backward compatible) and work only on windows .NET Core is crossplatform written from cratch

  • @kvelez
    @kvelez Месяц назад

    Cool

  • @AustrianLinuxMemer
    @AustrianLinuxMemer Месяц назад

    C# is not .NET, it's a part of .NET like Java the language is part of the JVM ecosystem

    • @hubertmijalski
      @hubertmijalski Месяц назад

      exactly, but Java never brands itself as JVM, but C# often times uses .NET keyword to describe itself (wrongly) in job postings, tutorials etc.

    • @martinnovak679
      @martinnovak679 Месяц назад

      @@hubertmijalski because C# share libraries with other .NET languages

  • @nasz_komputer
    @nasz_komputer Месяц назад

    0:47 its because of it that before windows 10 would be the last windows operating system, so they used 10 cuz its round and complete when 9 it suggesting that will be another windows os.

  • @markusTegelane
    @markusTegelane Месяц назад

    On Visual Studio note, there's a third one. It's called Blend for Visual Studio.

  • @DoctorKrolic
    @DoctorKrolic Месяц назад

    They unified blazor server and wasm with .NET 8, so this is a single product now

  • @samjiman
    @samjiman Месяц назад

    They likely skipped 9 because a lot of existing code looked for 9 to detetmine if os was 9x (i.e. 95, or 98).

  • @jimmlmao
    @jimmlmao Месяц назад

    java > c#

    • @hubertmijalski
      @hubertmijalski Месяц назад

      nope 😅

    • @jimmlmao
      @jimmlmao Месяц назад

      @@hubertmijalski it’s better

    • @hubertmijalski
      @hubertmijalski Месяц назад

      @@jimmlmao i'm sorry, but you're just wrong. Java is just a worse version of C# atm - it's slower, has less features, is more verbose and is falling off steadily for some time now :)

    • @AnnasVirtual
      @AnnasVirtual Месяц назад

      it took them so long to add string interpolation what a fucking joke ugh

    • @jimmlmao
      @jimmlmao Месяц назад

      Also C# naming conventions with interfaces is bad all interfaces start with I for some reason

  • @Bleeeeeeeeeeeeeaaaah
    @Bleeeeeeeeeeeeeaaaah Месяц назад

    Microsoft is not the only one guilty of that, Google and Apple also come to mind, out of all tech companies, probably, only Sony is consistent in their naming practices. With them you know that the bigger the number, the newer the model. Even Sony Ericsson followed that practice. They fumbled it a little with their headphones though, like what in the world is WH-CH720N

  • @Ubeogesh
    @Ubeogesh Месяц назад

    Good examples of MS namings: Microsoft Message Queue (compare to Kafka). Notepad (compare to gazzilions of nonsense). Internet Information Service (compare to Apache httpd). Internet Explorer is the perfect nane (RIP)

  • @mctechcraft7
    @mctechcraft7 Месяц назад

    “Visual Studio, the blue one” and “Visual Studio, the purple one” is how I explain it to people 😂

  • @guxtavo14
    @guxtavo14 Месяц назад

    Because Microsoft sucks

  • @Brahvim
    @Brahvim Месяц назад

    ...And here I was annoyed about the _all Pascal-case_ naming. LOL.

  • @leonardovillalobos5277
    @leonardovillalobos5277 Месяц назад

    Another thing is the C# convention of prefixing interface names with “I”. I feel like it’s very redundant and unnecessary. In my opinion, Go is a perfect example of interfaces done right. They typically contain a single function and the interface names end in -“er” (e.g. Logger, Reader, Writer, etc).

    • @davr1
      @davr1 Месяц назад

      The prefix makes it easier to tell apart classes and interfaces at a glance, even without knowing the entire codebase

    • @Z3rgatul
      @Z3rgatul Месяц назад

      You are just more used to go The last thing I can complain about .net is interfaces prefix

    • @martinnovak679
      @martinnovak679 Месяц назад

      I prefix for interface is concider as best practice for most languages with interface and most interfaces have more than just 1 method😀how would you even call class implementing logger without -er?

    • @jimmlmao
      @jimmlmao Месяц назад

      @@davr1 you shouldn’t be able to tell the difference between the two, interfaces are an abstraction and c# is treating them more like a template

  • @prispalos
    @prispalos Месяц назад

    So... is .NET just C#? Or is it a superset of C#? Or is it a framework on top of C#? Is C# automatically .NET? I'm confused

    • @fdb-js5uh
      @fdb-js5uh Месяц назад

      .NET is a platform. You can write in multiple languages on .NET (i.e. C#, F#, VBS).

  • @thacium
    @thacium Месяц назад

    Ngl I never had problem googling VS and VScode because most of the time, seemingly no one has the same problem and the search result is completely irrelevant.

  • @nekoni4414
    @nekoni4414 Месяц назад

    microsoft be microsofting

  • @jasontaverner4767
    @jasontaverner4767 Месяц назад

    they skipped 9 to avoid confusion, a lot of old programs refer to win 95 & 98 as windows 9.

    • @MortCodesWeb
      @MortCodesWeb Месяц назад

      Im a win32 app developer and i can confirm. Nope!

  • @unicodefox
    @unicodefox Месяц назад

    the best example i've seen is the .NET bindings to the macOS libraries. (formerly called Xamarin.Mac) The framework version is net8.0-macos, the library you reference is Microsoft.MacOS, the docs call it ".NET for macOS" (or if you're unlucky, just .NET) The GitHub repo is still called xamarin/xamarin-macios even though Xamarin is dead. Good luck googling for any of that and getting relevant results

  • @E6hosting
    @E6hosting Месяц назад

    I didn't even know. .net is the new name for..net core. That's going to get people who are just starting out in a bit of hot water when they follow an old.net solution.

  • @jlebrech
    @jlebrech Месяц назад

    stealing terms for their own use, windows, dos, C, net, surface, the number one.

  • @honguyenminh
    @honguyenminh Месяц назад

    C# and dotnet is different though??? It's like comparing java with jvm. Kotlin exists. So do f# and vb

  • @RokeJulianLockhart.s13ouq
    @RokeJulianLockhart.s13ouq Месяц назад

    "DotNet" and "CSharp" work in Google.

  • @DasCapschen
    @DasCapschen Месяц назад

    Let's not forget that Razor Component files are named .cshtml and Blazor component files are named .razor /)_-

    • @RokeJulianLockhart.s13ouq
      @RokeJulianLockhart.s13ouq Месяц назад

      That's beautiful.

    • @deathstroyer666
      @deathstroyer666 Месяц назад

      Thats incorrect, cshtml files are called "razor pages". While .razor files are called "razor components", which people of course call "blazor components" as that would have made way more sense as name and extension.

  • @BaDitO2
    @BaDitO2 Месяц назад

    >using dotnot found the core issue

  • @oliwia6110
    @oliwia6110 Месяц назад

    Wow! Great comments feel the same can be said about car models 😂

  • @haventyetbegun
    @haventyetbegun Месяц назад

    Not to mention that Windows Powershell is different from Powershell.

    • @RokeJulianLockhart.s13ouq
      @RokeJulianLockhart.s13ouq Месяц назад

      "PowerShell" is PowerShell Core, right?

    • @Joshua_Uwadiae
      @Joshua_Uwadiae Месяц назад

      Wait what

    • @igorthelight
      @igorthelight Месяц назад

      There is an old Powershell (Powershell 5 that is using .NET Framework) and new Powershell (Powershell 7 that is using .NET 8) "Blue" is old while "black" is new.

  • @asy3495
    @asy3495 Месяц назад

    i love this video

  • @avarise5607
    @avarise5607 Месяц назад

    Windows 9 was skipped to avoid bugs with versioning in spme older tools, which effectively only look for first character in version string.

    • @jasedxyz
      @jasedxyz Месяц назад

      it was actually skipped because 7 ate 9

    • @KYRCooler
      @KYRCooler Месяц назад

      Do you have any source on that? Tbh I'm not sure how it would work? Are the programs written for95 that run on 10?

    • @julesoscar8921
      @julesoscar8921 Месяц назад

      Nop, it's just that 9 feels like a non finish products. Customer will wait the version 10 and skip the 9 one

    • @haventyetbegun
      @haventyetbegun Месяц назад

      @@avarise5607 yeah... Not so sure about this one. Windows 8 for instance is technically speaking Windows v6 or something. Besides, even if they some code relied on the marketing name, Microsoft people going out of their way for such a specific and theoretical case hardly seems believable...

  • @Jojor11
    @Jojor11 Месяц назад

    Adding to the blazer part: and it is done in .razor files, which doesn’t have basically anything to do with the thing called razor xd

  • @Sw3d15h_F1s4
    @Sw3d15h_F1s4 Месяц назад

    jeez, how on earth could Windows Forms, Windows Presentation Foundation, Universal Windows Platform, WinUI 2, WinUI 3, MAUI, Windows App SDK, or any of the other UI framework names ever confuse anyone??? /s

    • @freedomgoddess
      @freedomgoddess Месяц назад

      thank you for the tone indicator, twitter man.

    • @RokeJulianLockhart.s13ouq
      @RokeJulianLockhart.s13ouq Месяц назад

      That's a good example. It's hard.

    • @unicodefox
      @unicodefox Месяц назад

      @@freedomgoddess /s has nothing to do with twitter my guy

    • @Sw3d15h_F1s4
      @Sw3d15h_F1s4 Месяц назад

      @freedomgoddess tbh never used twitter

    • @thezipcreator
      @thezipcreator Месяц назад

      @@freedomgoddess what's wrong with tone indicators?

  • @chinpokomon_
    @chinpokomon_ Месяц назад

    most naming shenanigans happen for historic reasons, everybody thinks the previous guy got it wrong, and a couple decades later it's a mess

  • @chinpokomon_
    @chinpokomon_ Месяц назад

    .net is not just c#, there are also f#, powershell, visual basic and some third party ones

    • @Win_7
      @Win_7 Месяц назад

      batch

    • @grekzorna8750
      @grekzorna8750 Месяц назад

      ​@@Win_7❌

    • @thezipcreator
      @thezipcreator Месяц назад

      @@Win_7 batch is not a .NET language afaik

    • @Win_7
      @Win_7 Месяц назад

      @@thezipcreator is powershell then?

    • @thezipcreator
      @thezipcreator Месяц назад

      @@Win_7 yes; you can use .NET classes in powershell

  • @pinkorcyanbutlong5651
    @pinkorcyanbutlong5651 2 месяца назад

    microsoft people coming up with codenames: cools stuff like chicago, longhorn, scarlet microsoft people coming up with actual names:

    • @pinkorcyanbutlong5651
      @pinkorcyanbutlong5651 2 месяца назад

      also shout out that the remote desktop app for mac is now called 'windows app'

    • @blancfilms
      @blancfilms Месяц назад

      @@pinkorcyanbutlong5651 I saw that too and I'm refusing to update. wtf

  • @BobChess
    @BobChess 2 месяца назад

    Microsoft doesn't know how to name variable 😭🙏

  • @stefan-d.grigorescu
    @stefan-d.grigorescu 2 месяца назад

    Very good video, it is the in depth explanation I was looking for, thanks!

  • @AliciaBrinlee
    @AliciaBrinlee 3 месяца назад

    in the Eliding examples you show the eliding method in the first example only executes at the await which is where you would need to put the try catch. Then in the next example the eliding method executes and throws the exception before it ever hits await. So what is the difference between the two. I wish you would have left the GetSomethingInternalAsync methods the same so we would be comparing apples to apples but as it is, it is confusing. Is Task.FromResult making the difference? Because in the second example all you say when discussing that line is "it will perform anything after the the first await here as well" which makes no sense because no await has been called yet unless you are talking about the await from the previous GetSomethingAsync method called earlier.

  • @andersjuul8310
    @andersjuul8310 6 месяцев назад

    Good introduction. I also liked the use of IServiceScopeFactory<T>. Slightly more slick than my usual approach. 💪

  • @basimal-jawahery5688
    @basimal-jawahery5688 6 месяцев назад

    Regarding Asyn suffix. Its advisable to add this suffix 1) when you have synchorios version of the same method in the same class 2) if this method is async void then IDE might not help 3) just to increase readability.

  • @basimal-jawahery5688
    @basimal-jawahery5688 6 месяцев назад

    Thank you for the great explanations.

  • @LordErnie
    @LordErnie 6 месяцев назад

    Fine case yet so far. But about that DI container. We can actually register an interface multiple times without overwriting. Just give it an alias and bam you're done.

    • @unknownvisitor2190
      @unknownvisitor2190 4 дня назад

      can you explain please what do you mean about "register an interface multiple times without overwriting"?

  • @ubongsky1
    @ubongsky1 9 месяцев назад

    Thanks so much for this clarification

  • @donovandemuynck5842
    @donovandemuynck5842 10 месяцев назад

    Excellent explanation, thank you so much

  • @AllAboutDataTechnology
    @AllAboutDataTechnology 11 месяцев назад

    Great video on a difficult topic. Thanks!