Gui Ferreira
Gui Ferreira
  • 137
  • 593 180
10 Surprising Lessons Software Developers Can Learn From 'Factfulness’
Here are 10 lessons from the book "Factfulness" that made me a better developer.
📙 Factfulness: www.amazon.es/dp/147363749X?ref_=as_li_ss_tl&language=en_US&linkCode=gg2&linkId=89e43c4da086b74ba218d0df26a59e71&tag=guiferreira07-20
⏲️ CHAPTERS
00:00 Intro
02:17 Lesson 1
03:56 Lesson 2
05:55 Lesson 3
07:53 Lesson 4
09:33 Lesson 5
11:46 Lesson 6
14:10 Lesson 7
15:51 Lesson 8
17:33 Lesson 9
19:12 Lesson 10
Переглядів: 1 055

Відео

5 Apps for 2025 that I’ve Been Using Lately
Переглядів 2,3 тис.День тому
Let me share with you 5 applications I've been using as a Developer, and I will definitely keep using them in 2025. ⏲️ CHAPTERS 00:00 Intro 00:13 Bananotate 03:42 Grammarly Pro 06:38 ProtonVPN 09:34 Rectangle App 11:20 Cursor AI
I Tested a Redirect API & Here's What I Learned
Переглядів 99414 днів тому
⭐️ Learn how to build a complete Cloud Application: dometrain.com/course/lets-build-it-url-shortener-in-dotnet/?ref=gui-ferreira
Simple Tips to Effectively Apply Feature Folders
Переглядів 2,7 тис.21 день тому
⭐️ Learn what it takes to build a complete Cloud application with 40% discount: dometrain.com/course/lets-build-it-url-shortener-in-dotnet/?coupon_code=BLACKFRIDAY24&ref=gui-ferreira
I Tried TUnit for the First Time, Here's What Happened
Переглядів 2,5 тис.Місяць тому
I decided to try TUnit, a Testing Framework for dotnet, for the first time, and I decided to record it. 💎 Be a Patreon to get the source code: patreon.com/gsferreira ⏲️ CHAPTERS 00:00 Intro 12:12 Diagnosing Issue 16:32 Issue Diagnosed
How to Trigger an Azure Function from Cosmos DB
Переглядів 438Місяць тому
In this video, let's see how to trigger an Azure Function when Cosmos DB data changes.💎 Be a Patreon to get the source code: patreon.com/gsferreira #dotnet #azure
9 JetBrains Rider Secrets You Should Know - Plus a Special Giveaway!
Переглядів 5 тис.Місяць тому
🎁 Win a 1-year JetBrains dotUltimate license for FREE: guiferreira.kit.com/6dc25d19ef ⏲️ CHAPTERS 00:00 Intro 00:25 Feature 1 03:42 Feature 2 06:05 Feature 3 09:08 Feature 4 10:24 Feature 5 12:24 Feature 6 14:14 Feature 7 18:26 Feature 8 20:10 Feature 9 #dotnet #jetbrains
You Should Know This Before Using Page Numbers on Your API
Переглядів 2,9 тис.2 місяці тому
💎 Be a Patreon to get the source code: patreon.com/gsferreira What can go wrong with using page numbers in your API. 💌 Free Developer Insights: guiferreira.me/newsletter #softwaredevelopment #softwarearchitecture #restapi
8 Tips to Crack the Interview as Software Developer
Переглядів 8092 місяці тому
Ace your software developer job interview with these 8 behavioural tips! 💌 Get Free developer insights like this in your mailbox: guiferreira.me/newsletter ⏲️ CHAPTERS 00:00 Intro 01:18 Tip 1 01:57 Tip 2 02:28 Tip 3 04:38 Tip 4 06:25 Tip 5 07:54 Tip 6 10:39 Tip 7 11:52 Tip 8 14:15 Bonus Tip #softwareengineer #programming
How to Debug .NET in Cursor AI (and How TDD Ruined my latest Review)
Переглядів 3,2 тис.2 місяці тому
💌 Get Free developer insights like this in your mailbox: guiferreira.me/newsletter In this video, let's see how to debug .net code using Cursor AI. 🔗 Issue .NET Debugger: github.com/dotnet/core/issues/505 🔗 NetCoreDbg: github.com/Samsung/netcoredbg 🔗 Extension: open-vsx.org/extension/muhammad-sammy/csharp 🔗 For macOS: github.com/dgokcin/dotnet-cursor-debugging-with-breakpoints?tab=readme-ov-fil...
Every .NET Developer Needs to Try This (Cursor Review)
Переглядів 12 тис.2 місяці тому
💌 Get Free developer insights like this in your mailbox: guiferreira.me/newsletter 💎 Be a Patreon to get the source code: patreon.com/gsferreira #dotnet
How to Organize Your ASP.NET Program.cs File
Переглядів 6 тис.2 місяці тому
Join me as I show you how I organise my Program.cs in large ASP.NET Applications 💎 Be a Patreon to get the source code: patreon.com/gsferreira 🚨 KEY LINKS 🤝 Support me on Patreon (and get access to source code) here: patreon.com/gsferreira 💌 Free Developer Insights: guiferreira.me/newsletter 📘 Courses: guiferreira.me/courses/ 👨‍🏫 Workshops: guiferreira.me/workshops/ 🔗 GET IN TOUCH LinkedIn: www...
How to Set Up a GitHub Repo for an Amazing Developer Experience
Переглядів 2 тис.3 місяці тому
Here are 10 actionable tips to improve the developer experience on any GitHub repository. 💎 Be a Patreon to get the templates: patreon.com/gsferreira 🚨 KEY LINKS 🤝 Support me on Patreon (and get access to source code) here: patreon.com/gsferreira 💌 Free Developer Insights: guiferreira.me/newsletter 📘 Courses: guiferreira.me/courses/ 👨‍🏫 Workshops: guiferreira.me/workshops/ 🔗 GET IN TOUCH Linked...
Building better DTOs in C#
Переглядів 7 тис.3 місяці тому
How to build better DTOS in C# dotnet 💎 Be a Patreon to get the source code: patreon.com/gsferreira 🚨 KEY LINKS 🤝 Support me on Patreon (and get access to source code) here: patreon.com/gsferreira 💌 Free Developer Insights: guiferreira.me/newsletter 📘 Courses: guiferreira.me/courses/ 👨‍🏫 Workshops: guiferreira.me/workshops/ 🔗 GET IN TOUCH LinkedIn: www.linkedin.com/in/gferreira Twitter: twitter...
Clean Architecture vs Hexagonal Architecture: Which One Should You Choose for Microservices?
Переглядів 2,6 тис.3 місяці тому
Is it better to use Hexagonal Architecture or Clean Architecture for microservice applications? 💎 Be a Patreon to get the source code: patreon.com/gsferreira 🔗 Reddit: www.reddit.com/r/softwarearchitecture/comments/1esjc0z/clean_architecture_vs_hexagonal_architecture_for/ 🚨 KEY LINKS 🤝 Support me on Patreon (and get access to source code) here: patreon.com/gsferreira 💌 Free Developer Insights: ...
I added Azure Active Directory B2C to ASP.NET Core
Переглядів 2,9 тис.3 місяці тому
I added Azure Active Directory B2C to ASP.NET Core
Developers need a Code of Conduct?
Переглядів 6634 місяці тому
Developers need a Code of Conduct?
REST, gRPC, or GraphQL: Which Should You Use?
Переглядів 4,3 тис.4 місяці тому
REST, gRPC, or GraphQL: Which Should You Use?
"Should I write Unit Test for a Repository class?"
Переглядів 2,7 тис.4 місяці тому
"Should I write Unit Test for a Repository class?"
Goodbye Exceptions! Hello Result Pattern!
Переглядів 12 тис.4 місяці тому
Goodbye Exceptions! Hello Result Pattern!
5 Tips for Maintainable OpenTelemetry in .NET
Переглядів 1,7 тис.5 місяців тому
5 Tips for Maintainable OpenTelemetry in .NET
When do I throw an Exception or Return an Error
Переглядів 4,4 тис.5 місяців тому
When do I throw an Exception or Return an Error
How to Test RabbitMQ with Testcontainers in .NET
Переглядів 1,6 тис.5 місяців тому
How to Test RabbitMQ with Testcontainers in .NET
How do I Stay Organized as a Developer
Переглядів 2,6 тис.5 місяців тому
How do I Stay Organized as a Developer
Building Complex Objects in a Simple Way with C#
Переглядів 9 тис.5 місяців тому
Building Complex Objects in a Simple Way with C#
The Testing Feature YOU DIDN'T KNOW YOU NEEDED
Переглядів 3,4 тис.6 місяців тому
The Testing Feature YOU DIDN'T KNOW YOU NEEDED
18 VS Code Tips to Code FASTER
Переглядів 2,5 тис.6 місяців тому
18 VS Code Tips to Code FASTER
How to Write Readable Tests (7 SIMPLE TIPS!)
Переглядів 1,6 тис.6 місяців тому
How to Write Readable Tests (7 SIMPLE TIPS!)
Let's stop calling them 3 Pillars of Observability
Переглядів 1,1 тис.6 місяців тому
Let's stop calling them 3 Pillars of Observability
Getting Started with Test-Driven Development
Переглядів 3,2 тис.7 місяців тому
Getting Started with Test-Driven Development

КОМЕНТАРІ

  • @ygx8305
    @ygx8305 19 годин тому

    XUnit documentation is trash, it's the worst I've ever seen.

  • @adedoyin-emmanuel-adeniyi
    @adedoyin-emmanuel-adeniyi День тому

    Great video. I was confused on where to put infrastructure codes.

    • @gui.ferreira
      @gui.ferreira 18 годин тому

      Can I help with any questions? If you share a practical example that comes to mind, I can help.

  • @dotnetMasterCSharp
    @dotnetMasterCSharp 2 дні тому

    Thanks your insights of this book!

  • @MarceloSA
    @MarceloSA 3 дні тому

    There are economic reasons. Excitement and challenges keep devs moving forward, helping us land better-paying jobs when a raise doesn’t come through.

  • @TheSyky27
    @TheSyky27 4 дні тому

    All beautiful until jsou need to nest 3 methods returning result...

  • @joselucas1506
    @joselucas1506 4 дні тому

    9:34 I've using Windows for a long time so that's so weird when I see the Macs needs an app to position the windows on screen xd

    • @gui.ferreira
      @gui.ferreira 3 дні тому

      Yap.... It's hard to believe 😅

  • @xaberue
    @xaberue 5 днів тому

    That's a great one about some tips when using Rider 👌 I've started using after they license model change, and I really like it, the debugging experience is really cool as well as the amount of refactors suggested. The IDE in general is fantastic. Nonetheless, I think that VS has close the gap a lot in terms of usability and performance, so both are two amazing options!

    • @gui.ferreira
      @gui.ferreira 3 дні тому

      Thanks for sharing! Are you on Windows?

    • @xaberue
      @xaberue 3 дні тому

      @gui.ferreira yes I am, and honestly, I've selected the VS keymap to keep my productivity as high as possible since the beginning

  • @maxbeber
    @maxbeber 6 днів тому

    Thanks for sharing these insights. 🙏.

  • @ksdvishnukumar
    @ksdvishnukumar 6 днів тому

    Nice one.. Is there a way to create a dynamkc consumer using Kafka flow? Say i have a multi tenant app where each tenant kafka broker details i will get at run time. And also each tenant will have there its consumer setting like batch count, timeout and other setting. Could you pour some inpiut on this?

    • @gui.ferreira
      @gui.ferreira 6 днів тому

      I don't think KafkaFlow has something out of the box for that. However, you can always register several consumers. So, if you have the tenant info on startup, I guess you can do it.

  • @codeDotnet
    @codeDotnet 6 днів тому

    keep going thanks so much

  • @JasonBock
    @JasonBock 7 днів тому

    The title of this video is "Why We ALL". But in the video, you say, "most of us". Please don't do titles like that. Also, as of today, xUnit has 564,204,215 downloads on NuGet. NUnit has 412,892,074. That doesn't seem like that big of a difference. FWIW, my choice is always NUnit.

    • @JasonBock
      @JasonBock 7 днів тому

      Also, you don't have to use [Setup] methods in NUnit. I never do.

  • @pradeep8040
    @pradeep8040 10 днів тому

    This is really nice explanation especially adding the notes at 5:12 which helped me giving a background why we need limit and offset.

  • @amantinband
    @amantinband 10 днів тому

    Thanks for the bananotate love ❤️❤️

  • @codeDotnet
    @codeDotnet 10 днів тому

    in windows Banana 🥲🥲

    • @gui.ferreira
      @gui.ferreira 10 днів тому

      Bananas are only compatible with Apples 🍎 😅

    • @codeDotnet
      @codeDotnet 10 днів тому

      "We want an Event Storming course, and I wish it could be available on Dometrain, along with a practical implementation session."

  • @antonmartyniuk
    @antonmartyniuk 11 днів тому

    Added Grammarly to my list

  • @SergioGoiaba
    @SergioGoiaba 11 днів тому

    Você conseguiu resolver no Cursor para fazer o debug de .Net? Em outro vídeo seu, disponibilizou um link em que era muito trabalhoso adequar a ferramenta. Conseguiu uma maneira mais fácil?

    • @gui.ferreira
      @gui.ferreira 10 днів тому

      Infelizmente não. No entanto, tenho usado o Cursor especialmente para tudo o que não é .NET.

  • @heronguerrieri
    @heronguerrieri 11 днів тому

    Só BR fazendo conteúdo brabo demais kkk

  • @mattymattffs
    @mattymattffs 13 днів тому

    There's no app that could mac os not suck absolute ass. Worst OS hands down.

  • @wobblejuice
    @wobblejuice 13 днів тому

    App 1 = Bananotate App 2 = Grammarly Pro App 3 = ProtonVPN App 4 = Rectangle App App 5 = Cursor AI

  • @Grassyfieldsflowers
    @Grassyfieldsflowers 13 днів тому

    The key point of using test doubles and fakes in particular is the maintainability. They prevent your test cases from being coupled to the interfaces of the system. This is imho the biggest issue with using mocking libraries. You’ll realise this once you break 50 cases by modifying an interface and you know none of the intended behaviour actually broke and you realise you need to modify all those mock setups. You’ll wonder what did I do wrong, why is unit testing and TDD so highly praised, there’s so much maintenance, It’s the quickest way to put people off of unit testing and TDD.

  • @marcotroster8247
    @marcotroster8247 14 днів тому

    Well, I guess the hard part about legacy code is figuring out the test cases when there's no one who could tell you. Unfortunately Verify and code coverage tools can't fix the fallacy of a hire and fire policy.

    • @gui.ferreira
      @gui.ferreira 13 днів тому

      That's true. But, with something like Approval Testing, you don't need to "predict" the examples. That simplifies the process.

    • @marcotroster8247
      @marcotroster8247 13 днів тому

      @gui.ferreira In my experience, actual legacy code won't produce deterministic results. That's usually the reason why it's hard to work with and therefore needs refactoring. Sure, with approval testing you don't need to figure out the assertions, but the tests will still be flaky at best. Just think of some annoying timestamp which you can't control because the time source can't be injected. Well, you'll have to make the time source injectable upfront without test coverage before you can start testing. It is what it is...

  • @eulier1
    @eulier1 14 днів тому

    Do you provide or point to a place to put this architecture at practice for example in React/Next.js apps?.

    • @gui.ferreira
      @gui.ferreira 13 днів тому

      I've seen these two. They are not perfect, in my opinion, but they will give you an idea of what it should look like. github.com/Maua-Dev/hexagonal_arch_react_template github.com/juanm4/hexagonal-architecture-frontend

  • @stefanlnt
    @stefanlnt 15 днів тому

    My last comment

  • @antonmartyniuk
    @antonmartyniuk 15 днів тому

    Interesting use, great video!

  • @ЕвгенийБогданович-ж7э

    Hi, thanks for the video) and what is your terminal theme/customization?

    • @gui.ferreira
      @gui.ferreira 14 днів тому

      I'm using ohmyposh and the theme is Dracula

  • @svorskemattias
    @svorskemattias 16 днів тому

    The lib hasnt been updated in a year... do you think it is still alive really?

    • @gui.ferreira
      @gui.ferreira 13 днів тому

      In fact, it's not a good sign 😔 And unfortunately, its still not supported by Testcontainers yet. github.com/testcontainers/testcontainers-dotnet/issues/122

  • @TheWhineyCodebear
    @TheWhineyCodebear 17 днів тому

    And I would like very much a video on integration testing with TUnit

  • @TheWhineyCodebear
    @TheWhineyCodebear 17 днів тому

    I'm on Linux and use Rider, so the command line is absolutely fine for now :) The expectation that a new framework - for anything - gives the same experience than established solutions is a problem for all new things. The problem is on our part, we have to let go of comfort. But if the core idea has merit, and for TUnit it looks like it definitely does, that means when we get behind it, the discomfort is only tempory. And I would like to see TUnit next to my go-to xUnit and the others in Rider.

  • @sebastienvandepoel1377
    @sebastienvandepoel1377 17 днів тому

    I have still some questions about this? How would you test that your ef mapping to your domain classes? And also How would you tests your db migration script? I think both of them would be more an intégration test.

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

    I'm trying Before and After attribute, can't get it to work. I have to inherit it in my test class. As well as use the attribute. Mine is TestCommon : BeforeAndAfterTest. In my test class I inherit : TestCommon as well as use the {TestCommon] decorator / attribute for the test I want to apply it to. I'm setting up an Edge Browser in the Test Common file. It's null as soon as I leave the Before method. So the life cycle doesn't seem to be happening here. The TestCommon class, with Before method and After method in it, evidently is destroyed when I leave the Before method. When I get to the test, the instance of the browser is null. I am populating a public property of type EdgeBrowser in Test Common class. I'm seeing it in the Test. I traced this through during debug. As soon as the closing curly brace is hit, I have no more browser. So when the code in the test is hit next, the browser instance is NULL. Please show the entire file set up for the test using the [BeforeAndAfter] attribute. It would be useful to see how you're doing this. The video shows just the [BeforeAndAfter] decorator being applied. It makes one assume this is all that is needed but this can't be right. Thanks!

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

    From the intro he looks like he just started studying programming, and he has no idea what he's talking about

  • @PaulOlson-t4t
    @PaulOlson-t4t 20 днів тому

    Very deep rabbit hole and frustrating. Thank you for confirming us devs aren't the crazy ones. The only thing documented worse than security is .NET Maui.

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

    keep it up Sir!

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

    Keep going, I do love your content.

  • @Ivan-wm6gm
    @Ivan-wm6gm 24 дні тому

    how would you handle when one feature talks to another do you call them directly or duplicate the code?

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

      Abstract it into a common service

    • @gui.ferreira
      @gui.ferreira 17 днів тому

      There are many ways to model that relation. One possibility is by modelling domain events or treating the other feature as if it is an external API (by using an abstraction)

    • @iliyan-kulishev
      @iliyan-kulishev 16 днів тому

      @@gui.ferreira I have a question for the case of treating it as an external API. I see people use CQRS in the feature module/package, but make "fat" external API service. Why don't let the client of the module just use the handlers directly?

    • @gui.ferreira
      @gui.ferreira 13 днів тому

      @@iliyan-kulishev why you say CQRS, you mean something like the mediator pattern?

    • @iliyan-kulishev
      @iliyan-kulishev 13 днів тому

      @@gui.ferreira Yes. Or even without a Mediator. Why not just inject handlers from other feature, or use the Mediator directly ?

  • @haraheiquedossantos4283
    @haraheiquedossantos4283 26 днів тому

    Is this infrastructure folder contains the implementation of external services communication? Like repositories, Http API integrations, Blob storage and so on? is it shared and global to all features? It seems pretty similar to Infra layer of the layered approach, right?

    • @gui.ferreira
      @gui.ferreira 16 днів тому

      Not properly. You don't want to bring things like shared repos or API Clients on Vertical Slice Architecture. However, for some small things like creating a DB connection, you need to keep them apart. As an example, if we think about a conventional CRUD repository, each method will likely be in a different slice, while the connection code might be reused.

    • @haraheiquedossantos4283
      @haraheiquedossantos4283 16 днів тому

      ​​@@gui.ferreiraI think I get. The infra folder contains only configuration for infrastructure services and global reusable code. And the slices (features) contains the implementation details and functionalities itself. Right?

    • @gui.ferreira
      @gui.ferreira 13 днів тому

      @@haraheiquedossantos4283 I think you got it 😉

  • @NiekHoeijmakers
    @NiekHoeijmakers 26 днів тому

    In my personal experience I rarely see any developer use xUnit. I see a wider adoption for MSTest and NUnit. Recently I have been researching what are the pro's and con's of using each framework. I must say that NUnit, xUnit and MSTest can practically do the same things. For some features you need to rely on additional libraries with all tests. However relying on additional libraries isn't necessarily a good thing. Still if I must make a choice of which one is better, my choice would be NUnit, because it has the most expansive and up-to-date documentation. MSTest and xUnit's documentation is actually hot garbage. One needs to rely on blogs and youtube video's of others, that try to make sense of those frameworks, and hope they are still relevant.

    • @gui.ferreira
      @gui.ferreira 13 днів тому

      Oddly enough, I have a different experience than you. However, I strongly agree with you on the topic of documentation.

  • @Ahmed-zq7ps
    @Ahmed-zq7ps 26 днів тому

    Can i become a professional .net programmer with mac m1 ? Thanks in advance ❤

    • @gui.ferreira
      @gui.ferreira 17 днів тому

      Sure. Early this year I was using a macbook m1 on my full time job

  • @JohnMarsing
    @JohnMarsing 26 днів тому

    6:42 I DO like the idea of not duplicating based on context because then I don't have to have unnecessarily long names. The fact that you have many names that are the same (like Request) in different folders makes it easy to know what it's doing and it's easier to implement a naming convention. A big selling point of vertical slice architecture is that you're mostly only working on one feature at a time so smaller class names is easief to understand. Having said that it would be better if the IDE could be set up for someone who wants to do VSA. Thanks for the video

    • @gui.ferreira
      @gui.ferreira 12 днів тому

      Great point. My problem with it is quick navigation. I can see myself getting confused.

  • @Tamer_Ali
    @Tamer_Ali 27 днів тому

    Thanks a lot Gui, awesome as usual 👍 I have a question about Clean architecture and file upload, Is it ok if used IFormFile in Application project as a parameter in the IRequest class/record public record CreateArticleRequest(string Title, string Content, IFormFile ThumbnailImage) : IRequest<Result<CreateArticleResponse>>; or create a custom class and map IFormFile to it in the controller public record CreateArticleRequest(string Title, string Content, FileUploader ThumbnailImage) : IRequest<Result<CreateArticleResponse>>; public async Task<IActionResult> CreateArticle([FromForm]CreateArticleRequest command,[FromForm] IFormFile formFile) { command.FileUpoader = formFile.MapToFileUploader(); //... } or you have a better approach ?

    • @gui.ferreira
      @gui.ferreira 12 днів тому

      The way that I approach architecture is that I prefer to keep "transport stuff" outside of my Core Application code. I would go with the second approach. But, be careful with memory. I suffered with that in the past, because I was basically copying the stream 😉

  • @botyironcastle
    @botyironcastle 27 днів тому

    video start at 3:00

  • @ivandrofly
    @ivandrofly 29 днів тому

    Smart steps into can also be accessed by clicking the 3 dots during debug on the left bottom.

  • @lemonade2345-j4e
    @lemonade2345-j4e Місяць тому

    What is the font used for IDE? Project Explorer etc? I use default on the latest Rider version, and yours seems more appealing... Thanks for letting me know.

    • @gui.ferreira
      @gui.ferreira 17 днів тому

      Hey! Check here: ua-cam.com/video/wQG_LntcAQQ/v-deo.htmlsi=rmElMjqm7wYaAyqp

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

    The visitor pattern works great for serializing / deserializing syntax trees. That's the typical case I know.

    • @gui.ferreira
      @gui.ferreira 13 днів тому

      True! In some languages, it is the most efficient way to do it.

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

    I really enjoyed seeing your learning and experiment journey learning this. It was very helpful to see that.