dotnetsheff
dotnetsheff
  • 131
  • 150 001
Fluent Method Chaining in C#
What if there was a way to declaratively describe a chain or flow of async methods, which could be used when handling API requests or messages from a service bus queue or actually anywhere? Recently, while refactoring a growing piece of business logic, we found a way to achieve this. The logical conclusion is that related flows can be described in one place, in a single piece of orchestration, which is very easy to understand, navigate and debug. The flows are self documenting and with some thought, even readable by product owners and business analysts etc.
-About the Speaker
Andrew Poole
Andrew Poole has been writing code for a living for 15+ years, most recently as an L5 Senior Software Engineer at ClearBank since 2020. He loves solving problems, design and architecture, communicating ideas and the incredible creativity of software engineering. He’s interested in event sourcing, immutable architecture and distributed systems. He also enjoy mentoring others and building great team culture. He has previously been a successful team lead, but what really drives him is striving to write elegant, intentional code which is easy to understand and maintain. He absolutely loves C# and only really dabbles in other languages in order to write better C#. Outside of work Andrew is a husband and father of 2 who enjoys playing bass guitar and making things in his shed.
forkinthecode.net/
x.com/AndrewP74683044
www.linkedin.com/in/andrew-poole-2782494a/
-
Links
dotnetsheff.co.uk
www.meetup.com/dotnetsheff/events/301222295/
x.com/dotnetsheff
-
The Video
Recorded by Adam Bright (x.com/adam_lx)
Mixed by Kevin Smith (x.com/kev_bite)
-
dotnetsheff
dotnetsheff is a monthly user group focused on software development, particularly in the .NET ecosystem. We welcome people with interests in software development of all ages and levels of experience
Переглядів: 984

Відео

Build Advanced AI Solutions with Semantic Kernel
Переглядів 2762 місяці тому
Large language models have been a game changer, but they have their limitations. They only know what was generally available up to the point they were trained. They don't have access to recent events, or your own private data. What's worse, if you ask them about something they don't know about, they start making stuff up! That's why we need to build more sophisticated solutions that combine dif...
Memory First: An Introduction to Redis
Переглядів 933 місяці тому
Odds are, you’ve heard of Redis. Maybe you’re a total noob and want to learn all about it. Maybe you’ve used it to cache an API call or some JSON strings and want to know what else it can do. Maybe you *haven’t* heard of Redis and are curious what all the fuss is about. Wanna find out? Join me as I explain what Redis is-a wicked-fast, memory-first database-and why you should care. I’ll share wi...
From IL Weaving to Source Generators
Переглядів 845 місяців тому
From IL Weaving to Source Generators Intermediate Language (IL) Weaving is a powerful technique that allows to greatly simplify the experience of developers using the .NET Realm SDK by hiding a fair amount of complexity from end-users. Working with a weaver, though, is tedious, error prone and the resulting code is a black box. These are some of the reasons that convinced us to migrate to Sourc...
.NET Patching with GitHub Actions with Martin Costello
Переглядів 485 місяців тому
Automating Monthly .NET Patching with GitHub Actions and dotnet-outdated With the productivity and performance benefits developers gain from using modern .NET over .NET Framework, also comes the less-exciting flip-side - patching the version of .NET in production environments every month to keep your applications secure. Keeping up-to-date with security and reliability fixes is an important ong...
.NET gRPC - deep dive
Переглядів 1827 місяців тому
.NET gRPC - Deep Dive With an increasing need for scalability and performance dictated by the modern web, it becomes harder and harder to choose an API paradigm that is suitable for service-to-service communication. While the classical models still work and have their own merits, some of them rely heavily on documentation, extensive coordination between teams or code-sharing. We use shared libr...
Advent of Code
Переглядів 62510 місяців тому
Advent of Code Feel like you have far too much free time in December? Don't code enough during your day job? …then Advent of Code will be right up your street. 25 days of coding puzzles ranging from easy to mind-boggling. Using C#, we'll go through some practical solving of a day-one puzzle and a more challenging mid-month puzzle. A taster session ready to join ¼ million other developers on Dec...
How to Move from Development into Leadership
Переглядів 13810 місяців тому
Do Repeat Yourself: How to move from Development into Leadership As a developer moving into a leadership role for the first time it can be can be tough, confusing, and at times overwhelming. This was certainly the case for me. I discovered that the principles I had once followed when building software were no longer effective as a leader. However, after a few years I can confidently say that be...
CI, CD, Databases and Zombies
Переглядів 7611 місяців тому
Broadly speaking, most people are aware of the concept of CI/CD these days, and the methods and techniques associated with deploying software. However, what is usually less well managed is the database that the software in question depends upon. What methods and techniques can you employ in deploying changes to your data and schema? What happens when your code is dependent on that schema? What ...
Event Driven Architecture
Переглядів 17711 місяців тому
My beautifully architected system used to end up like a distributed monolith. A complete ball of mud, coupling everywhere and adding new features took way too long and I always had the idea that if I could just get the time to rewrite it, it would be so much better. But even if I got the chance, a year later I was in the same position. Until I started embracing event driven architecture. Come j...
App Insights Lightning Talk
Переглядів 28Рік тому
App Insights Lightning Talk -About the Speaker Paul Michaels paul_michaels - Links dotnetsheff.co.uk www.meetup.com/dotnetsheff/events/294349589/ dotnetsheff - The Video Recorded by Adam Bright ( adam_lx) Mixed by Kevin Smith ( kev_bite) - dotnetsheff dotnetsheff is a monthly user group focused on software development, particularly in the .NET ecosy...
Why Being Right Is Slow
Переглядів 333Рік тому
Why Being Right Is Slow -About the Speaker Sebastian Glentworth - Links dotnetsheff.co.uk www.meetup.com/dotnetsheff/events/294349589/ dotnetsheff - The Video Recorded by Adam Bright ( adam_lx) Mixed by Kevin Smith ( kev_bite) - dotnetsheff dotnetsheff is a monthly user group focused on software development, particularly in the .NET ecosystem. We welcome people...
I Hate Code Coverage Lightning Talk
Переглядів 32Рік тому
I Hate Code Coverage Lightning Talk -About the Speaker Lucy Mair - Links dotnetsheff.co.uk www.meetup.com/dotnetsheff/events/294349589/ dotnetsheff - The Video Recorded by Adam Bright ( adam_lx) Mixed by Kevin Smith ( kev_bite) - dotnetsheff dotnetsheff is a monthly user group focused on software development, particularly in the .NET ecosystem. We welcome peopl...
MongoDB Change Streams Lightning Talk
Переглядів 845Рік тому
MongoDB Change Streams Lightning Talk -About the Speaker Kevin Smith kev_bite - Links dotnetsheff.co.uk www.meetup.com/dotnetsheff/events/294349589/ dotnetsheff - The Video Recorded by Adam Bright ( adam_lx) Mixed by Kevin Smith ( kev_bite) - dotnetsheff dotnetsheff is a monthly user group focused on software development, particularly in the .NET ec...
Turning software into computer chips with Hastlayer
Переглядів 152Рік тому
Software is flexible, specialized hardware is extremely fast. So why not write software, then turn it into a computer chip? This is what the open-source Hastlayer (github.com/Lombiq/Hastlayer-SDK) does by transforming .NET software into electronic circuits. The result is faster and uses less power while you simply keep on writing software. You may not be able to tell just by looking at it but b...
.NET, IoT and Hedgehogs!
Переглядів 71Рік тому
.NET, IoT and Hedgehogs!
So - you want to develop a Visual Studio add-in?
Переглядів 45Рік тому
So - you want to develop a Visual Studio add-in?
.NET 5, 6, and 7 for Busy Developers
Переглядів 283Рік тому
.NET 5, 6, and 7 for Busy Developers
Getting Started with Technical Blogging
Переглядів 65Рік тому
Getting Started with Technical Blogging
Debugging Difficult Conversations
Переглядів 51Рік тому
Debugging Difficult Conversations
AWS Step Functions
Переглядів 36Рік тому
AWS Step Functions
Software design and intentionality
Переглядів 284Рік тому
Software design and intentionality
UTC is Not a Silver Bullet
Переглядів 249Рік тому
UTC is Not a Silver Bullet
Property-Based Testing
Переглядів 364Рік тому
Property-Based Testing
Minimal API Designs
Переглядів 396Рік тому
Minimal API Designs
Domain Modelling & The Power of F#
Переглядів 1,6 тис.Рік тому
Domain Modelling & The Power of F#
Green Software Engineering
Переглядів 1 тис.Рік тому
Green Software Engineering
Exploring .NET Minimal APIs
Переглядів 370Рік тому
Exploring .NET Minimal APIs
Blazor Server Side
Переглядів 391Рік тому
Blazor Server Side
Modern XAML
Переглядів 102Рік тому
Modern XAML

КОМЕНТАРІ

  • @enmingwang6332
    @enmingwang6332 18 днів тому

    Fantastic lecture! Cheers 👍👍

  • @hellowill
    @hellowill 20 днів тому

    I thought C# users hate Java for exactly this reason?

  • @matthewhxq
    @matthewhxq 23 дні тому

    It looks really clean & nice but I wouldn't say it's simpler and easier to digest for the next new dev that will work on that code base.

  • @avwie132
    @avwie132 Місяць тому

    Is it 2006? I know this was the hype back then

    • @cinosz6780
      @cinosz6780 23 дні тому

      He uses minimal API, so it's not 2006

  • @jankool01
    @jankool01 2 місяці тому

    Very informative. I could not find the repositories mentioned in SPDoctor on GitHub - are they public?

  • @MoniHazarika-oc7xs
    @MoniHazarika-oc7xs 2 місяці тому

    can we get the demo code fore reference Kevin? I am doing a POC with change streams

  • @ashishkalra9438
    @ashishkalra9438 3 місяці тому

    Amazing..i enjoyed and learned alot.

  • @KevinGleason-d5q
    @KevinGleason-d5q 5 місяців тому

    🤘 'Promo SM'

  • @TormodSteinsholt
    @TormodSteinsholt 6 місяців тому

    Is his document in notebook available from anywhere?

  • @privebia371
    @privebia371 6 місяців тому

    Azure DevOps Markdown should inherently provide support for PlantUML, Mermaid, and GraphViz, or at the very least, offer these capabilities as extensions available in the Marketplace.

  • @_miranHorvat
    @_miranHorvat 6 місяців тому

    Yeah, funky and faster. That's it. How many developers do realy need this performance gain? Don't get me wrong, it's great. I don't need it. But what I do need is the Decimal type! Back in the days I just added asmx files with methods to my monolith and it was done. Wsdl was autogenerated. Consuming a wsdl is a gem - basicaly a single click and you have your strongly typed proxy classes. Then came wcf along. What did I gain with wcf? Nothing. More work for the same result was the result. And then, I still don't understand the hype, came rest. That was realy stupid. OK, bear in mind, I'm a MS-VS-.NET guy. And now, Ladies and Gentleman, gRPC. The asmx aproach was almost a perfect solution.

    • @dotnetsheff
      @dotnetsheff 5 місяців тому

      For us Rest is more about consuming from the outside, it gives the ability to reason about what the API is doing without having to work within that company/domain. You treat everything as a resource. As for gPRC it's literally what we had with binary serialization back in the day, the gain of speed etc... but it's easy interop between languages and other systems too.

  • @amjadc
    @amjadc 8 місяців тому

    Excellent presentation kevin!

    • @kevbite
      @kevbite 5 місяців тому

      Thanks!

  • @legion_prex3650
    @legion_prex3650 9 місяців тому

    Fido2 is two factor authentication. Something you have (the Authenticator) and something you are (eg. the biometric fingerprint). I don't know why all "experts" claim that Fido2 is one factor authentication only...

  • @marmorego
    @marmorego 9 місяців тому

    thanks, this is useful

  • @bubbagumpshrimps
    @bubbagumpshrimps 11 місяців тому

    @dotnetsheff At 30:00 you explain the example of the private key being encrypted and send to RP and later back to be unwrapped by the burnt-in key of the authenticator. This for the purpose of second factor authentication. Why not let the authenticator generate a random string/nonce/challenge and wrap that up? And later on decrypt it with the burnt-in key of the authenticator? This is a simple thought that probably overlooks something. But enlighten me please. Thanks for the excellent explanation by the way. By far the most and complete video out there about passwordless and the concept and details behind.

  • @user-yr1uq1qe6y
    @user-yr1uq1qe6y 11 місяців тому

    Not only was it a good intro to some python features for us C# devs, it also finally answered the question "what is a notebook and why do I need it"?

  • @johnstaveley
    @johnstaveley Рік тому

    Great talk. It would be nice if the questions had been repeated for the video :)

  • @Krazy0
    @Krazy0 Рік тому

    The only confusion is 6:14

  • @MrColmryan
    @MrColmryan Рік тому

    Great explanation Ian. Hadn't ever really looked at this before but you explained it beautifully and the demo application was a great real world example

  • @spoodermen2530
    @spoodermen2530 Рік тому

    he starts off by insulting the audience? lol such a tool

  • @vandeljasonstrypper6734
    @vandeljasonstrypper6734 Рік тому

    Can I grab these code to maui and uno ?

  • @lawrencevelez3014
    @lawrencevelez3014 Рік тому

    😠 'Promosm'

  • @Mars-hp7rn
    @Mars-hp7rn Рік тому

    Do you have a tutorial for AR Hair colouring?

  • @nuwanthuduwage6869
    @nuwanthuduwage6869 Рік тому

    Awesome!!, thank you for sharing this. I have a question for you. How we can maintain an application-level state machine, rather than using scattered component-level state machines. Can we use React Context or any other state mgt approach (Redux..etc)? I saw you referred to React Context in this video. Can you please provide more information? Thank you.

  • @MartinHAndersen
    @MartinHAndersen Рік тому

    The nino validation returns true or false. How could it return and explanation on why it failed?

  • @MikeHunt-rw4gf
    @MikeHunt-rw4gf Рік тому

    Algorithm.

  • @MarkusBurrer
    @MarkusBurrer Рік тому

    F# has cyclical references with the "and" keyword.

  • @MarkusBurrer
    @MarkusBurrer Рік тому

    The most important statement in this talk: "F# is not hard, it is different". The same thing I always say about Rust

  • @williamliu8985
    @williamliu8985 Рік тому

    Really awesome content about minimal API, very useful! Thanks very much!

  • @swiszcz
    @swiszcz Рік тому

    Hi Matt! Great talk! Where we can get this tool for generating types from xaml from? It'd be very useful!

  • @todorelax1793
    @todorelax1793 Рік тому

    C# is toooo verbose

  • @chrisbaker5284
    @chrisbaker5284 Рік тому

    I would have watched more of this but many of the slides are cut off at the bottom, which is very annoying. The first 10 minutes talk about how wonderful functional programming is, the implication it is better then OO, which is not true. Both paradigms have their advantages and disadvantages. I'm a programmer of more than 20 years and I am always happy to learn and try new things, but forcing an OO language to use functional paradigms is a bit like using a spanish guitar to play heavy metal - it's just plain wrong. If you want to do functionla programming use a functional programming language! Functional programming does not hold state and is stateless? And becasue of that it is great at data processing. But as it is stateless what data does it process? Immutablity is where you get better thread safety and while that concept may have originated from the mathematical functional world it's not a functional programming feature, you can create immutable classes in c# (and I have been for years), that doesn't make it functional.

  • @roodborstkalf9664
    @roodborstkalf9664 2 роки тому

    Excellent

  • @jorgehenao3900
    @jorgehenao3900 2 роки тому

    it is a genuine work of art made FIDO2 cybersecurity THANKS for the explanation 🤓

  • @TheNorthRemember
    @TheNorthRemember 2 роки тому

    injecting middleware to other apps without touching them !! wow, this is great

  • @stewiegriffin6503
    @stewiegriffin6503 2 роки тому

    buuuh

  • @steamedtiger5223
    @steamedtiger5223 2 роки тому

    This is very usefull but why you dont use mic.. your voice not enough clear even use headphone

  • @sanford8424
    @sanford8424 2 роки тому

    p̳r̳o̳m̳o̳s̳m̳

  • @0XAN
    @0XAN 2 роки тому

    hey there! nice tutorial, it seems che candlestick chart control is missing: any plans to integrate it in the near future?

  • @langatkikwei789
    @langatkikwei789 2 роки тому

    This is a great talk! Good insights

  • @jasonzhang4632
    @jasonzhang4632 2 роки тому

    IRepository is waste of time🤣

    • @kevbite
      @kevbite 2 роки тому

      Like most things, it depends! I've been lots of Repository<T> with a million methods.

  • @StephBsimon
    @StephBsimon 2 роки тому

    just when u're thinking "new app" "multiplaform"... maui vs UNO... you think to yourself, Maui is such at an early stage and no wasm support... on the other hand UNO's been there for a long time + wasm support... ok let's go all in for UNO. Then you get the templates extensions and none of them run, not in vs2019 nor in vs2022... right...multiplaform. vs22 workloads Fed-up, not sure what's the deal with vs19 but sure will not run. Wouldn't it be great if u had at least templates that didn't throw VS into a shock on first run?

  • @emilorefors6277
    @emilorefors6277 2 роки тому

    As far as i know there's no difference between linq select and map

    • @simonpainter2242
      @simonpainter2242 2 роки тому

      There is. Select operates exclusively on Enumerables (and derivatives) an element at a time, so 'x' for a Select statement is an individual item in an array of some kind. Map operates on _any_ object and on the whole object, so you could call Map on a string, or an integer. If you called Map on an Enumerable, then 'x' would be the entire enumerable, not just a single element of it.

    • @emilorefors6277
      @emilorefors6277 2 роки тому

      @@simonpainter2242 but what would be the practical difference when running it on a collection?

    • @simonpainter2242
      @simonpainter2242 Рік тому

      @@emilorefors6277 if you passes an arrow function with a parameter 'x' to a Select statement on at Enumerable<T>, then the type of x is T. If you called Map on that same Enumerable, then x would have the type Enumerable<T>. I.e. map operates on the whole original object, not just individual elements within it

    • @emilorefors6277
      @emilorefors6277 Рік тому

      @Simon Painter im pretty sure this is not how it works. For example, map in javascript and also in f#, will both have x being the type of T

    • @simonpainter2242
      @simonpainter2242 Рік тому

      @@emilorefors6277 you're right, but we have Select in C# that performs the same role as Map in JS. I _could_ have called it Bind too, but I thought that Map was a friendlier name

  • @garyestes7587
    @garyestes7587 2 роки тому

    🙈 p̴r̴o̴m̴o̴s̴m̴

  • @Calphool222
    @Calphool222 2 роки тому

    This is great and all, but what security wonks don't seem to grok is that when I'm building a business solution (web site, mobile app, etc.) what I want is _HOW_DO_I_IMPLEMENT_THIS_? I don't care that much about the underlying tech. I trust that people who love crypto and security stuff will have poured over it, and it works as it should. My focus is on USING IT. Don't bury the lead -- show me a "hello world" version of it being used, and THEN tell me all this detail (if I care about it). There's a reason "hello world" is a standard programming pattern -- it breadcrumbs you in to using something.

  • @ramibecharalebfr
    @ramibecharalebfr 2 роки тому

    Thank you very much sir

  • @ghostg6107
    @ghostg6107 2 роки тому

    Great talk!

  • @kiranshetty8342
    @kiranshetty8342 2 роки тому

    Great video n easy to follow . Thanks for that 🙏 I have an question on same . Where exactly in memory does nullable type stored ?? Say for example : int? I=null; How it works behind hood . Could you pls help me on this . Thanks in advance .

  • @mentalstatement
    @mentalstatement 2 роки тому

    Can you make a simpler video?? Dont get this..

  • @michaelsd28
    @michaelsd28 2 роки тому

    Great video I learned a lot from this one