Your Next Backend Should Be Written In...

แชร์
ฝัง
  • เผยแพร่เมื่อ 17 พ.ค. 2024
  • Recorded live on twitch, GET IN
    Reviewed Video
    • Your backend is too co...
    By: Isaac Harris-Holt | / @isaacharrisholt
    My Stream
    / theprimeagen
    Best Way To Support Me
    Become a backend engineer. Its my favorite site
    boot.dev/?promo=PRIMEYT
    This is also the best way to support me is to support yourself becoming a better backend engineer.
    MY MAIN YT CHANNEL: Has well edited engineering videos
    / theprimeagen
    Discord
    / discord
    Have something for me to read or react to?: / theprimeagenreact
    Kinesis Advantage 360: bit.ly/Prime-Kinesis
    Hey I am sponsored by Turso, an edge database. I think they are pretty neet. Give them a try for free and if you want you can get a decent amount off (the free tier is the best (better than planetscale or any other))
    turso.tech/deeznuts
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 583

  • @rodjenihm
    @rodjenihm 27 วันที่ผ่านมา +466

    In JDSL, of course.

    • @airkami
      @airkami 27 วันที่ผ่านมา +27

      Genius detected

    • @Sw3d15h_F1s4
      @Sw3d15h_F1s4 27 วันที่ผ่านมา +24

      ask Tom, he's a genius!

    • @noahtah1511
      @noahtah1511 27 วันที่ผ่านมา +9

      Read it for the first time yesterday perfect timing

    • @vincentnthomas1
      @vincentnthomas1 27 วันที่ผ่านมา +11

      TOMS A GENIUS!!!!

    • @ethanannane8783
      @ethanannane8783 26 วันที่ผ่านมา +9

      JDSL, the only langage where comments execute. Toms a genius

  • @tuftman6092
    @tuftman6092 26 วันที่ผ่านมา +143

    I love how every video an alert goes off and you're like "my bad forgot to turn alerts off"

    • @cacophonic7
      @cacophonic7 26 วันที่ผ่านมา +2

      He is guaranteed to get those donations doing it.

    • @wooviee
      @wooviee 26 วันที่ผ่านมา

      And I'm loving every minute of it.

  • @BaptistPiano
    @BaptistPiano 27 วันที่ผ่านมา +175

    “We’re completely off the *rails*” I see what you did there

    • @KerchumA222
      @KerchumA222 26 วันที่ผ่านมา

      came here to say just this.

  • @klevidervishi148
    @klevidervishi148 27 วันที่ผ่านมา +182

    my backend is in scratch

    • @andyk2181
      @andyk2181 26 วันที่ผ่านมา +8

      meow 🐈

    • @spkim0921
      @spkim0921 26 วันที่ผ่านมา

      nice

    • @window.location
      @window.location 26 วันที่ผ่านมา +12

      What's the project name, back-scratcher?

    • @JoyousUnicorn
      @JoyousUnicorn 26 วันที่ผ่านมา +1

      goat

  • @solitaryfox69
    @solitaryfox69 27 วันที่ผ่านมา +189

    In RISC-V ASM, of course.

    • @DataToTheZero
      @DataToTheZero 26 วันที่ผ่านมา +24

      Pfft, weak. VHDL on an FPGA, hook your network transceiver straight up no driver chip. Anything less and your leaving performance on the table. Plan to go straight to custom asics as soon you hit version 1.1

    • @JohnDoe-np7do
      @JohnDoe-np7do 26 วันที่ผ่านมา

      Insanity 😂

    • @AmeOFF
      @AmeOFF 17 วันที่ผ่านมา +1

      ​@DataToTheZero Verilog then

  • @sarabwt
    @sarabwt 26 วันที่ผ่านมา +50

    One of the most impressive demos I have seen was with Erlang (beam VM). The guy introduced a while true bug, that took 100% of the CPU, however, the server still responded normally. Not only that, he then connected to the server, found out the process that was causing trouble, and killed it, making the server run normal again.

    • @ihemanrawr
      @ihemanrawr 26 วันที่ผ่านมา

      th-cam.com/video/JvBT4XBdoUE/w-d-xo.html this is that video

    • @rodjenihm
      @rodjenihm 26 วันที่ผ่านมา +16

      You can even fix the bug and hot reload it in production

    • @Deemo_codes
      @Deemo_codes 26 วันที่ผ่านมา +15

      The soul of erlang and elixir by sasa juric. Fantastic talk and a fantastic demo

    • @y00t00b3r
      @y00t00b3r 26 วันที่ผ่านมา

      @@Deemo_codes you win the internet today. reason: providing search terms which IMMEDIATELY took me to the relevant blog post / video. Everyone: LEARN FROM THIS PERSON!

    • @kawo666
      @kawo666 26 วันที่ผ่านมา +1

      And then you could build NIFs in Rust that would run computation heavy tasks within Erlang/Elixir backend if required (normally these would be coded in C, but Rust seems a safer choice)

  • @tauiin
    @tauiin 27 วันที่ผ่านมา +66

    GLEAM MENTIONED

  • @AlexanderJonesYoutube
    @AlexanderJonesYoutube 27 วันที่ผ่านมา +73

    Microservice Take:
    Write a monolith out of modules, the modules should talk between one another using a defined interface, and they shouldn't share DB tables.
    If you need to you can always spin these modules off to be microservices. However, imo, you probably won't need to.

    • @y00t00b3r
      @y00t00b3r 26 วันที่ผ่านมา +17

      wisdom. You can have microservice-able architecture without actual microservices.

    • @BrunoArrais1
      @BrunoArrais1 26 วันที่ผ่านมา

      It's called Umbrella app on Phoenix/elixir ecosystem. It's a clever idea but most devs create a spaghetti codebase out of this so it's hard to recommend

    • @real_ouss
      @real_ouss 26 วันที่ผ่านมา +8

      You should watch a talk named Networkless HTTP by Matteo Collina, I think you would like it

    • @anb1142
      @anb1142 26 วันที่ผ่านมา

      Hey Could you give me some resources to learn more about this

    • @fueledbycoffee583
      @fueledbycoffee583 26 วันที่ผ่านมา +1

      i do this buy why not share DB tables? sometimes some services need to touch the same set of data and i avoid inter service comunication

  • @bity-bite
    @bity-bite 26 วันที่ผ่านมา +33

    In C#; Why would I go into the hassle of learning a new language when I can write my next backend in C# and have it perform faster & better, hmm.

    • @donateus6743
      @donateus6743 26 วันที่ผ่านมา

      csharp runtime sucks, ton of legacy stuff, btv microsoft is looking for rust devs, to rewrite some stuff from csharp😅

    • @ltardioli
      @ltardioli 26 วันที่ผ่านมา +16

      C# is my comfort language. All the time the I'm struggling with some problem in any other language I just switch to C# and it feels like home.

    • @doriancerutti5331
      @doriancerutti5331 26 วันที่ผ่านมา

      I second this, C# makes my life so much easier. You can do anything with it and it makes my nips happy

    • @bitcrusherNOOP
      @bitcrusherNOOP 26 วันที่ผ่านมา +2

      i mean you could and still use actors with Microsoft Orleans or akka but the BEAM is goated and first class in those family of languages.

    • @md.redwanhossain6288
      @md.redwanhossain6288 25 วันที่ผ่านมา

      ​@@d_6963 which language can outperform C#? Rust, Golang have the capability. But they are not comparable with C# because they are suitable for more Lower level stuffs.

  • @blenderpanzi
    @blenderpanzi 26 วันที่ผ่านมา +14

    Sometimes when Prime talks a lot and seemingly with a lot of conviction about something I feel like what is actually happening is that he's trying to convince himself about what he is saying.

    • @haniffaris8917
      @haniffaris8917 25 วันที่ผ่านมา

      Nah, it's your insecurities poking their noses. Projecting your own uncertainties with his convictions being a sign of his lack of confidence.
      And in my humble opinion, him talking a lot might just be a sign of him being a streamer, just a thought, I'm not really sure. But boy he does sure looks like someone who would stream.

    • @TehKarmalizer
      @TehKarmalizer 24 วันที่ผ่านมา +1

      Expressing your understanding of something is an exploration of why you understand it.

    • @AloisMahdal
      @AloisMahdal 23 วันที่ผ่านมา

      He does seem to think aloud a lot (and a lot aloud)...

  • @jsonkody
    @jsonkody 26 วันที่ผ่านมา +6

    All that is true about the actor model in Gleam is also the same in Erlang and Elixir - it's just the BEAM VM.
    By the way, it is named Gleam because it rhymes with BEAM.

  • @andybank
    @andybank 26 วันที่ผ่านมา +3

    @28:01 bricks are actually layed that way and it's called a header course. It's used to tie the stretcher courses (the normal orientation bricks) together for structural rigidity

  • @edwardteller7659
    @edwardteller7659 26 วันที่ผ่านมา +5

    Clojure has beautiful values everywhere; not just errors.

  • @metropolis10
    @metropolis10 26 วันที่ผ่านมา +7

    If every year is "the year of X" then you will never get to pick the right tool for the job.

  • @opposite342
    @opposite342 26 วันที่ผ่านมา +6

    I think we tend to gravitate towards languages that tries to fix languages we've been using, while still be familiar enough with it.
    I started of coding in Python 6-7 years ago, and even though I have studied Java, C, Haskell in actual classes and even written one or two Rust and Go projects, it never felt "home". I got too accustomed to indentations and multi-paradigm concepts in Python. Recently, I started to use and like nim, and I think it's because it fixes some problems of Python while still being similar enough (at least on the surface, the language has so much more flexibility because of metaprogramming and its ease in making a c wrapper).
    Anyway that's probably why people switched to JS to TS (without actually switching much) as well... they are used to it and wanted to use something that's better.

    • @ForChiddlers
      @ForChiddlers 26 วันที่ผ่านมา +2

      Try harder with java, you'll notice. And you'll think about all the python devs, that they are the result of a failed school system

    • @opposite342
      @opposite342 26 วันที่ผ่านมา

      Here's the thing. I used to love Java. I also realized it has flaws when looking under the hood. I like OOP, but then I did remember at some point overengineering a class diagram before even doing anything...
      Kotlin is neat though, but I don't feel like I have excuses to use it as much.

    • @nicholaspreston9586
      @nicholaspreston9586 26 วันที่ผ่านมา +2

      I've stopped trying to fix languages with other languages (I've suffered enough, looking at you, React!). People are the problem, including me. We tend to create what I call "code entropy". This is why I build numerous small C# libraries that each have 1 responsibility. I can tell which packages I use more often based on the version numbers. 😊
      And the one with the highest would be my Types nuget package that has extension methods for LINQ, quick null-free string parsing methods (with optinal fallback params), and a special Dump method that prints json to console whenever I'm debugging, but also returns the object so it never breaks control flow or causes eye-bleed.
      So, basically, for me, 'fixing' my favorite language worked out great for me. I can solve complex problems really fast in LINQ, dive into directories asynchronously with a few keystrokes, debug without stopping or pausing execution, and more odds and ends I'm forgetting because I'm high on coffee ☕️ 😳

  • @abhaysingh.632
    @abhaysingh.632 27 วันที่ผ่านมา +19

    GoLang the first thing that came to mind

  • @developingWithPaul
    @developingWithPaul 27 วันที่ผ่านมา +15

    I mean I could do all of this with Java Spring Boot in like 10 lines of code... Use the Right tool for the problem but ignore Spring Boot for some reason.

    • @elimgarak3597
      @elimgarak3597 26 วันที่ผ่านมา +5

      It isn't trendy, you see

    • @davidsiewert8649
      @davidsiewert8649 26 วันที่ผ่านมา +1

      Yeah, no doubt you can do that having spend 5-10 years memorizing Spring Boot framework-specific APIs.
      I personally like/love libraries there I have IDE-Autocomplete and can write productive code after 10-30 min of reading the docs
      instead of wasting days trying to understand and wrestle with Spring Boot Idiosyncrasies.

    • @AloisMahdal
      @AloisMahdal 23 วันที่ผ่านมา

      i just googled Java Spring Boot and learned that it's a tool you can use Spring apps, and Spring apps are apps that you can just run.
      well.. ok, i guess... (not really.... shrugs...) sometimes i feel like these technologies are just trying to be obtuse...

    • @dominikvonlavante6113
      @dominikvonlavante6113 5 วันที่ผ่านมา +1

      ​@@AloisMahdalSpring is a backend framework. Period. It still needs a server to recieve and send http rewquests.
      Springboot is the Spring framework delivered in an opinionated docker aware package with integrated tomcat server and a few more bells and whistles.

  • @tempname8263
    @tempname8263 27 วันที่ผ่านมา +19

    In BeefLang, of course.

    • @johnbruhling8018
      @johnbruhling8018 26 วันที่ผ่านมา

      Everyone starts with SQT-Lite but ends up with Rock-abs

  • @sdramare864
    @sdramare864 27 วันที่ผ่านมา +40

    In C#, of course.

    • @infinite_s902
      @infinite_s902 26 วันที่ผ่านมา +6

      It’s pretty simple tbh
      Specially the minimal api

    • @thehumster7837
      @thehumster7837 26 วันที่ผ่านมา +1

      Minimal apis arent for scale. Depends on your scope. Theyre all embedded directly into Program.CS so if your program has more than a few CRUD endpoints they instantly lose relevancy. ​@infinite_s902

    • @bity-bite
      @bity-bite 26 วันที่ผ่านมา +10

      ​@thehumster7837 This reply can't be AI generated because it is full of nonsense. Minimal APIs do not have to be in a single file, they can be anywhere. There is infinite amount of resources talking about minimal APIs being just as scalable as controllers are.

    • @User_2
      @User_2 26 วันที่ผ่านมา +1

      +1, quick setup and there’s not much you cannot do without too much finagling

    • @andrewshirley9240
      @andrewshirley9240 26 วันที่ผ่านมา

      @@thehumster7837 Minimal API setup is just a Map function call from the EndpointRoutes global. There are infintite ways to structure this. You can organize your endpoint resolvers as static classes that include a "MapEndpoints" function so Program.cs just calls into each of those. And if that gets cumbersome you can separate that bit into its own class dedicated to the registration. Alternatively you could do what controllers do and use attributes + reflection to set up any endpoint routes. You could have a separate service dedicated to endpoint resolution that contains all the logic. Etc. etc. The demo examples just call it straight in Program.cs, but the heart of it all is in the IEndpointRouteBuilder.

  • @DumblyDorr
    @DumblyDorr 27 วันที่ผ่านมา +8

    Re: "Early Return" - mapping and flatMapping monads does that. If your result type is a monad, you just map or flatMap the success case. That mapping will never execute if the result isn't a success, so it's equivalent to an early return. Several functional languages have special syntax to avoid nesting for sequential flatMapping (e.g. Haskell's do-notation, Scala's for-comprehension) - gleam's "use"-expressions do a version of the same kind of thing: avoid nesting when handling result types.

    • @y00t00b3r
      @y00t00b3r 26 วันที่ผ่านมา

      where can we learn more?

    • @y00t00b3r
      @y00t00b3r 26 วันที่ผ่านมา +1

      C'MON, MAN! Don't leave me hanging!!!

    • @dylan_the_wizard
      @dylan_the_wizard 26 วันที่ผ่านมา

      This does not necessarily solve the same problem - without an early return, you basically have to keep nesting code in your if/else chain (or case, or whatever gleam uses). Early return is usually just an easy way to break out of the function early without having to keep nesting and indenting logic branches.

    • @DumblyDorr
      @DumblyDorr 26 วันที่ผ่านมา

      @@dylan_the_wizard I'm not sure I understand. An early return by definition is inside some form of conditional - you still write code after that (that's what makes it "early").
      When it comes to avoiding having to nest code to handle (computations returning) results - that's exactly what Haskell's do-notation and scala's for-comprehension do for monads.

    • @dylan_the_wizard
      @dylan_the_wizard 26 วันที่ผ่านมา

      @@DumblyDorrthis isn’t Haskell. If you don’t have early return you need to keep nesting cases. Early return lets you just add more cases underneath instead of indenting to the right.

  • @blinking_dodo
    @blinking_dodo 27 วันที่ผ่านมา +35

    Java...
    To be precise: a JAR file with the www resources and config file embedded inside.
    You'll end up with a single file that's your entire web package, and it runs on any system.

    • @thapr0digy
      @thapr0digy 27 วันที่ผ่านมา +7

      And it's garbage collected and a memory hog

    • @CaptTerrific
      @CaptTerrific 27 วันที่ผ่านมา +14

      @@thapr0digy Overstated problem. You shouldn't be throwing nearly enough errors to the point where that becomes a processing or memory bottleneck. If it is, that's a skill issue

    • @1130MarsV
      @1130MarsV 27 วันที่ผ่านมา +11

      ​@@thapr0digy enterprises have no problem with it, doubt a startup would

    • @EvileDik
      @EvileDik 26 วันที่ผ่านมา +12

      This is the way.
      Too many millennial code fashonistas who's only language goal is the latest shiny.

    • @blinking_dodo
      @blinking_dodo 26 วันที่ผ่านมา +3

      @@EvileDik I once made a HTML live chat without JavaScript. The java server would keep the Sockets open to send new messages, and browsers just happily append the latest bytes to their DOM. A side-discovery was that as long as you don't close the connection for the main page, the webdev tools would be mostly unusable.

  • @joelv4495
    @joelv4495 26 วันที่ผ่านมา +9

    Love how the author just casually glosses over the N+1 database call @17:30.

    • @BosonCollider
      @BosonCollider 26 วันที่ผ่านมา +3

      A Pokemon can only have four moves, so there are at most four queries, and they are run in parallel instead of sequentially since it spawns a task for each call and then waits on all of them with a timeout.

  • @FujiLivz
    @FujiLivz 26 วันที่ผ่านมา +2

    I'm interested in Gleam's approach. Raw syntax of Erlang itself was offputting to me, but Gleam seems to re-imagine things in a more go-like structuring, which idk, sounds fun. In particular, I'm interested in how the beam-language translates to something like a jvm, because I'm seeing I can leverage beam on microcontrollers, and if so, it could be a jvm-like solution that goes pretty deep, as in, could use it from microcontrollers, to backend, to frontend, in a self-containerized "thing". IDK if that's accurate, but it sounds appealing if so.

  • @arcuscerebellumus8797
    @arcuscerebellumus8797 27 วันที่ผ่านมา +6

    "Do things that are beautiful", but also "no one cares about your code - all that maters is the result". I can't think of a way to resolve this contradiction if you ONLY code for work... mayby "find beauty in something that you do", instead of "do what you think is beautiful"?

    • @blackjackjester
      @blackjackjester 26 วันที่ผ่านมา +1

      Yea, if I brought elixir or gleam into my next project at work I'd be crucified

    • @quelqunderandom6143
      @quelqunderandom6143 26 วันที่ผ่านมา

      you are taking this too literally, the idea is more "do a beautiful project", something that can help others, etc...

    • @vinterskugge907
      @vinterskugge907 26 วันที่ผ่านมา

      It can easily be resolved if you realize that beautiful code has much fewer bugs. And an important metric for how good 'the result' is, is the number of bugs the system has.

    • @isodoubIet
      @isodoubIet 26 วันที่ผ่านมา +1

      There is a difference between extrinsic and intrinsic motivation.
      Your extrinsic motivation is to build software your users want to use. Your intrinsic motivation should be to make it beautiful. That's the claim.

    • @arcuscerebellumus8797
      @arcuscerebellumus8797 26 วันที่ผ่านมา

      @@vinterskugge907 not in my experiance it's not. If I spend my time polishing something to maximum levels of perfection available to me at my current level of proficiency what I usually get is complaints about "what took you so long". If I just slap things together and drop off a commit that barely works - it's fine. As to the bugs - they get delt with if/when they appear and no sooner.
      As a result, making something "beautiful" is a prerogative I allow myself only when I do things for myself, which the more I work, the less I get the time and/or inclination to do.
      PS: ...not that there isn't some beauty in jank that boggles the mind as to why and how it manages to do its thing at all ^_^

  • @h4ktbtw
    @h4ktbtw 26 วันที่ผ่านมา

    Just use whatever you’re most comfortable with which also fits the requirements

  • @tech_ocean777
    @tech_ocean777 26 วันที่ผ่านมา +3

    Well said.. instead of suffering from the architecture heart attack as a start up just build the damn thing first.

  • @DarthVader11912
    @DarthVader11912 27 วันที่ผ่านมา +58

    Write your backend with the language you're most comfortable with.

    • @imaadhaq540
      @imaadhaq540 26 วันที่ผ่านมา +7

      wrong!

    • @FelipeV3444
      @FelipeV3444 26 วันที่ผ่านมา +23

      Unless it's JS

    • @FirstYokai
      @FirstYokai 26 วันที่ผ่านมา +5

      Only for hobby projects.

    • @wetfloo
      @wetfloo 26 วันที่ผ่านมา +3

      write your backend with the language that is most fun for you

    • @minorlion1327
      @minorlion1327 26 วันที่ผ่านมา +3

      There are languages that are build for work like backend. Writing in other languages is dumb

  • @c0mplexfps
    @c0mplexfps 27 วันที่ผ่านมา +5

    Good video.
    Now let's watch it.

  • @prethammuthappabs2241
    @prethammuthappabs2241 27 วันที่ผ่านมา +75

    Spring boot obviously

    • @MrZadeak
      @MrZadeak 26 วันที่ผ่านมา +7

      Agreed, but in kotlin instead of java because I'm that special:)

    • @wormisgod
      @wormisgod 26 วันที่ผ่านมา +4

      Java spring (sometimes micronaut, quarkus etc) dominates enterprise and banking

    • @DJ-XLR8
      @DJ-XLR8 26 วันที่ผ่านมา +4

      Actually yes, literally just did that and I’ve been super happy with it

    • @ForChiddlers
      @ForChiddlers 26 วันที่ผ่านมา +3

      Yeah, Spring Boot and Java. Most elegant solution. Kotlin sounds to strange to me.

    • @armsofundertow98
      @armsofundertow98 26 วันที่ผ่านมา +1

      I was thinking the entire video "You can just do all of this with modern Java and Spring"

  • @TheBadFred
    @TheBadFred 26 วันที่ผ่านมา +1

    Good old Spring, I know for ages.

  • @aniketbisht2823
    @aniketbisht2823 27 วันที่ผ่านมา +47

    In C++, of course. No, I mean seriously!.

    • @StTrina
      @StTrina 27 วันที่ผ่านมา

      Nonsense. The Whitehouse has issues a warning on c++ and they know more than we do. I mean, they put Kamala Harris on AI.

    • @Simple_OG
      @Simple_OG 27 วันที่ผ่านมา +5

      My boi

    • @abjee1602
      @abjee1602 27 วันที่ผ่านมา +6

      @@Simple_OG C please

    • @CaptTerrific
      @CaptTerrific 27 วันที่ผ่านมา

      @@abjee1602 if you treat C++ simply as "C with smart pointers," it becomes a PLEASURE to work with!

    • @bobbob1278
      @bobbob1278 26 วันที่ผ่านมา +5

      Based and red pilled

  • @klaudyw3
    @klaudyw3 26 วันที่ผ่านมา +1

    That penguin is an accurate representation of how things work in a lot of projects. Someone finishes some mismatched feature (coding style, language, dependencies, etc.) and just mashes it all together with all the other mismatched pieces of code that make up the application. 5 years later you remake the original a̶p̶p̶l̶i̶c̶a̶t̶i̶o̶n̶ bugs, but this time in another language that will totally "get rid of the legacy code issue and bring us in line with current trends".

  • @eightsprites
    @eightsprites 26 วันที่ผ่านมา +2

    Whatever language its easiest to employ people with.
    It’s different in different locations.

  • @freecivweb4160
    @freecivweb4160 26 วันที่ผ่านมา +1

    First-timers don't mind it slow in the backend if it translates to a softer smoother experience. However, those with more rodeo experience like it fast, and are willing to have it be a bit rough to get the most out of a full performance.

  • @blenderpanzi
    @blenderpanzi 26 วันที่ผ่านมา +5

    I would take a look at Elixir, if it where statically typed. At least at the level of TypeScript.

    • @nicholaspreston9586
      @nicholaspreston9586 26 วันที่ผ่านมา

      Is it typed to the level of C#? I think TS Is way overtyped (and overhyped), to the point where you're just writing more broken javascript but in a different flavor. But that's a common opinion. Coming from a C# background, I just could not get into TS because I kept falling asleep reading the docs

    • @blenderpanzi
      @blenderpanzi 26 วันที่ผ่านมา +1

      @@nicholaspreston9586 Elixir is dynamically typed, so like JavaScript without TypeScript, as far as I know. I meant TypeScript as an example for a not that great static type system glued on top of a dynamically typed language. With at least I meant that a type system like C# would be more than the one of TypeScript. :D

    • @username7763
      @username7763 26 วันที่ผ่านมา +3

      Same here. I already know Python and JavaScript. I've done a little Perl and Lisp and that's enough with the dynamic typing languages. Plus Python got type checking and JavaScript has Typescript. What's Elixir got? Fix the type system, and I'll be interested.

  • @jesse9999999
    @jesse9999999 26 วันที่ผ่านมา

    Really enjoyed your perplexed response to the non-stochastic nature of pokemon battles towards the end

  • @JoeStuffzAlt
    @JoeStuffzAlt 26 วันที่ผ่านมา +3

    Microservices? Of course! We need that Resume Driven Development. It does get you into the next job

    • @desertfish74
      @desertfish74 26 วันที่ผ่านมา

      Extreme go horse

  • @SnowTheParrot
    @SnowTheParrot 26 วันที่ผ่านมา +2

    Ofc he left alerts on 🤣

  • @Nijikokun
    @Nijikokun 26 วันที่ผ่านมา

    Partition will return a tuple of Ok results and Error results in their own respective lists. For example, [Ok(1), Error("a"), Error("b"), Ok(2)] would return #([2, 1], ["b", "a"])

  • @disguisedpigeon5465
    @disguisedpigeon5465 26 วันที่ผ่านมา +4

    Elixir is the most readable functional language there is, which isn't much to say, but hey, at least its something

  • @stabernz
    @stabernz 21 วันที่ผ่านมา +1

    "More microservices than users" 😂ok that made me laugh out loud.

  • @DjoumyDjoums
    @DjoumyDjoums 26 วันที่ผ่านมา +2

    Driven by beauty helps you write better code I agree, but it can also drive you down the rabbit hole or give you tunnel vision. You need good discipline to code this way

  • @kabukitheater9046
    @kabukitheater9046 27 วันที่ผ่านมา +17

    elixir mentioned.. let's gooo

  • @masterchief1520
    @masterchief1520 26 วันที่ผ่านมา +1

    Spring boot😢? Its so amazing it makes the backend level into a different league. Even though it and even java has so many features. You still have to do it the spring way. So everyones kinda on the same page how to design everything else.

  • @filippavlovic18
    @filippavlovic18 26 วันที่ผ่านมา +1

    2:30 "off the rails" while mentioning the #1 ruby user

  • @d0cx
    @d0cx 26 วันที่ผ่านมา +3

    Id use Spring, probably. I just like the batteries included thing.

  • @nicholaspreston9586
    @nicholaspreston9586 26 วันที่ผ่านมา +1

    I use MemoryCache in C#. Seems pretty fast. Dunno if I need Redis. Not saying I wouldn't use it tho. I like graph and what I'm hearing about Redis's versatility and speed overall. Just haven't found a use case yet in my personal projects

  • @asdfghyter
    @asdfghyter 26 วันที่ผ่านมา

    17:47 It's indeed pretty context specific, so it's not surprising. In gleam it splits a list of results into one list of successes and one list of failures.

  • @Hypawolf
    @Hypawolf 26 วันที่ผ่านมา +1

    Yes do elixir. It’s on my radar for the later part of this year

  • @SmileyJack.
    @SmileyJack. 26 วันที่ผ่านมา +2

    Esoteric language mentioned

  • @TOAOGG
    @TOAOGG 25 วันที่ผ่านมา

    I really like your microservice take!

  • @nullblade
    @nullblade 27 วันที่ผ่านมา +3

    I would write my backend in either rust, java or both

  • @camilogomez5151
    @camilogomez5151 26 วันที่ผ่านมา +3

    In Plankalkül , of course.

  • @gombike95
    @gombike95 26 วันที่ผ่านมา +1

    Check out the ROC programming language. You would love it.

  • @sarves_boreddy
    @sarves_boreddy 27 วันที่ผ่านมา +5

    Spring boot or Golang

  • @theangelofspace155
    @theangelofspace155 27 วันที่ผ่านมา

    26:00 it is, the RNG is in getting that polemon (stuff move etc). But in a program that there is just 1 version of that pokemon, it is deterministic.

  • @CallousCoder
    @CallousCoder 26 วันที่ผ่านมา +1

    Rust’s lifetime function colouring is a refactor nightmare! I too stopped using Rust when that came into the picture.

  • @sorin5884
    @sorin5884 27 วันที่ผ่านมา +2

    Magic computer guy!

  • @timgardner7286
    @timgardner7286 26 วันที่ผ่านมา

    10:55 "idiomatic way to handle early returns" is a monad

  • @jsonkody
    @jsonkody 27 วันที่ผ่านมา +1

    I wanted to learn a functional language, so I looked at Haskell and OCaml. They were very interesting, but they felt highly alien to me. However, Elixir felt different. Elixir is partially alien, but in a good way. The pervasive use of pattern matching is such a good design, in my opinion. Additionally, Elixir feels really friendly to newcomers. It's really easy to explore new concepts from the functional paradigm, unlike in Haskell where trying to understand what a monad is can be quite challenging ._.
    Also I consider Elixir being extremely usefull and practical language with some superpowers no other language has (except BEAM langs ofc - Erlang and now Gleam).

  • @didiervvs7679
    @didiervvs7679 26 วันที่ผ่านมา +1

    @ThePrimeTimeagean You can also do all of what he talks in this video in, for instance, Kotlin. You have sum types, coroutines (to do actors, and more), etc. I advise you to try this multiplatform language. I have many Rust lover friends (as am I) and all are also using Kotlin for some tasks since I made them discover this language.

  • @scottspitlerII
    @scottspitlerII 26 วันที่ผ่านมา +1

    4:06 What amazing wisdom

  • @MegaHellenkeller
    @MegaHellenkeller 26 วันที่ผ่านมา +2

    For this who didn’t watch, it’s vanilla JavaScript

  • @ymi_yugy3133
    @ymi_yugy3133 26 วันที่ผ่านมา

    to me the function coloring problem seems a lot like a tooling issue. If I have strict typing, it should be possible to automatically refactor all callers to be async and await the call.
    I think function coloring for async is actually good, particularly if your function only performs async IO sometimes. If you don't know whether a function can block for a long time, its just to easy to accidentally block the main thread of an interactive application, or block shared resources.
    Having to refactor large parts of you program just because you made a tiny change, is of course annoying, but the solution is automatic refactoring or to explicitly decolor the function (i.e. wrap it in a block_on or whatever your language calls it.)

  • @MrMeltdown
    @MrMeltdown 26 วันที่ผ่านมา

    All that dynamic field stuff just reminds me of parsing xml using sax and all the setup before hand…

  • @fushipunk
    @fushipunk 26 วันที่ผ่านมา +1

    Huge gold nugget at the end of the video!

  • @siriguillo
    @siriguillo 27 วันที่ผ่านมา +11

    Use elixir and build a distributes system, is insane
    Real-time communication low latency distributed is what elixir shines at.
    Edit: gleam is another language for the erlang VM, I think is better than elixir in many ways but is just too new still

    • @blackjackjester
      @blackjackjester 26 วันที่ผ่านมา +5

      Gleam needs more dedicated people to build the ecosystem... Or a much stronger standard library.
      I just don't want to have to write my own everything. I've got kids.

    • @balen7555
      @balen7555 26 วันที่ผ่านมา +1

      I prefer Elixir over Gleam in every way possible. And Elixir is getting an interesting type system too.

    • @Voidstroyer
      @Voidstroyer 26 วันที่ผ่านมา +2

      Can you give some examples of how you think that Gleam is better than Elixir in many ways? The only one that I can think of is that Gleam already has static typing whereas Elixir will be getting it a bit later. But it's not like Elixir doesn't have ways to handle most typing errors already (function guards, pattern matching, immutability).

    • @balen7555
      @balen7555 26 วันที่ผ่านมา +2

      @@Voidstroyer Precisely. Also, lack of metaprogramming in Gleam is a big weakness. The general trend over the past decade has to introduce stronger metaprogramming. An example is how in dire need of metaprogramming Dart is, which it is getting soon; and how their current temporary substitute (build_runner) is messy. C# introduced source-generators.
      The moment your programing is more than just simple REST APIs, metaprogramming becomes invaluable. I can't imagine something like Phoenix without macros...
      Literally all languages have adopted metaprogramming to some extent, and Elixir is better than most languages at it.
      There are so many things that Elixir does much better than Gleam (IMO).

    • @Voidstroyer
      @Voidstroyer 26 วันที่ผ่านมา

      @@balen7555 I agree, however I admit that I have personally not really looked at Gleam as much (just watched a few videos) and so it's possible that my own bias towards Elixir is causing me to not see certain things. Which is why I am curious to see what @siriguillo has to say about his comparison of the two languages. (And to be fair I am curious to see if his opinion is also based on a bias towards Gleam due to lack of knowledge of Elixir).

  • @thephoenix215-po2it
    @thephoenix215-po2it 27 วันที่ผ่านมา +11

    In Haskell of course!

  • @gritcrit4385
    @gritcrit4385 26 วันที่ผ่านมา +3

    That Phoenix Live View seems to be really awesome. No complicated front-end and its toolings, but all the benefits.

  • @Bozebo
    @Bozebo 26 วันที่ผ่านมา +4

    PHP because Laravel. Just get it done. Then when the project has legs it's easy to get more devs at every level and you can peel parts out of the monolith into secondary services if you want to move to other languages within a particular domain (not for scaling, that should already be handled if you've done it right).

    • @stefanalecu9532
      @stefanalecu9532 26 วันที่ผ่านมา +1

      Laravel is just so wonderful, once you try it you'll become a new person

    • @brunoggdev6305
      @brunoggdev6305 26 วันที่ผ่านมา

      Agreed. And honestly, even if u don't use laravel, PHP frameworks in general can do so much stuff so fast to get u up n running. Obviously tho, Laravel is the most robust approach if u need this kind of power

    • @gaetanp77
      @gaetanp77 24 วันที่ผ่านมา

      Ton build an API please try API Platform. In the next release you will be able to use it with Laravel (or in any PHP projects). They work done on this his HUGE, it's so easy : add attributes to your DTOs, write provider and processors (or not if you use Doctrine orm) and bam you have a full API with security, content negociation, caching, documentation, ...

    • @gaetanp77
      @gaetanp77 24 วันที่ผ่านมา

      ​@@brunoggdev6305I find Laravel pretty good for RAD, but Symfony much more flexible when you need it.

  • @jongxina3595
    @jongxina3595 26 วันที่ผ่านมา +2

    In Minecraft redstone, obviously

  • @SkinnyGeek_1010
    @SkinnyGeek_1010 26 วันที่ผ่านมา

    Elixir is more or less procedural with functional qualities like immutable data. Gleam is the functional language on the beam.

  • @spartan_j117
    @spartan_j117 22 วันที่ผ่านมา

    GZ with following from DHH!

  • @stefanalecu9532
    @stefanalecu9532 26 วันที่ผ่านมา +1

    Honestly, I'd use PHP first, then C# or Object Pascal (I am expecting such good responses)

  • @gjermundification
    @gjermundification 24 วันที่ผ่านมา

    0:22 Anything that transpiles into something else has to fail; elixir -> erlang, typescript->ECMAScript, coffeescript->ECMAScript, comes to mind.

  • @killingsali
    @killingsali 21 วันที่ผ่านมา +1

    Java with Spring boot is just pleasant.

  • @CouchProgrammer
    @CouchProgrammer 27 วันที่ผ่านมา +3

    Function coloring helps separate side effects. If you make a function asynchronous because of another function, it's a code smell.

    • @vinylSummer
      @vinylSummer 26 วันที่ผ่านมา

      Username checks out

  • @toddmartin7030
    @toddmartin7030 26 วันที่ผ่านมา +2

    Prime once again sleeping on COBOL.

    • @stefanalecu9532
      @stefanalecu9532 26 วันที่ผ่านมา +1

      But he won't be sleeping on the fat stacks he could make if he works on COBOL

  • @Sa1985Mr
    @Sa1985Mr 27 วันที่ผ่านมา +6

    Clojure

  • @kevinweir2499
    @kevinweir2499 วันที่ผ่านมา

    There is no one right answer but C# is a outstanding option.

  • @rafaelperdigao7127
    @rafaelperdigao7127 26 วันที่ผ่านมา

    You are of the rails, BUT RUBY DOESNT! KEWK

  • @worgenzwithm14z
    @worgenzwithm14z 26 วันที่ผ่านมา

    10:40, prime talking about his love for do-notation
    HaskLUL

  • @AndreaPassagliaAP
    @AndreaPassagliaAP 26 วันที่ผ่านมา +1

    did you just say effects don't have errors as values? that's kind of the core of it. also soon we'll have effect rotation too so you will not have to wrap everything into an effect.

  • @AnasImloul
    @AnasImloul 26 วันที่ผ่านมา +1

    Your next backend should of course be written in next duuh

    • @nicholaspreston9586
      @nicholaspreston9586 26 วันที่ผ่านมา

      Please do that for the rest of your career.

  • @TankorSmash
    @TankorSmash 26 วันที่ผ่านมา +2

    You can tell ThePrimeagen isn't as confident in his position when he gets angry that people suggest something to him. It's gotta be annoying to be pulled in all these different directions. Love the content!

  • @Naton
    @Naton 27 วันที่ผ่านมา +10

    F# is beautiful

  • @autohmae
    @autohmae 26 วันที่ผ่านมา

    2:42 pretty simple, check out Edsger Dijkstra talking about mathematical elegance.

  • @jlc397
    @jlc397 26 วันที่ผ่านมา +1

    Everyone starting with microservices before they have fully mapped the domain will spend more time on DevOps/Platform engineering tasks than they need to early on. Until there are clear bounded contexts and a compelling reason to use microservices, most early stage projects should use a monolith to start. Early resource investment should be focused on features and delivering product, not technical ideology. End users don't care. The business most likely won't care. The VC/PE money folks won't care. Is your work fit for purpose? Does it add value to the business? Can sales close deals? These are the questions you should be asking early on, not whether the architecture adheres to Reactive/Clean/Onion/DDD/etc. Prioritize tests and working software over pedantic architectural implementations.

  • @xdarrenx
    @xdarrenx 26 วันที่ผ่านมา +2

    Occam's razor, the programing community is over represented by people who are both extremely confident and anxious at the same time, this creates this entire bs. No other profession changes tooling, and it's also not needed. If u go full sober no cap, you will see there is hardly any correlation between tools used and the succes of an application. I bet most successful apps are still in wordpress, webflow, php or w/e.
    Some changes made sense because the world changed, the general introduction of things like bootstrap, vue, react etc. because we went from static text on a single device to interactive on multiple devices, but the differences between them within their tier are not that relevant.

  • @alexaustin6961
    @alexaustin6961 26 วันที่ผ่านมา +1

    This guy feels like NoBoilderplate but for Gleam

  • @demesisx
    @demesisx 27 วันที่ผ่านมา +2

    I'd choose Haskell all day every day for back end.

  • @DataPastor
    @DataPastor 24 วันที่ผ่านมา

    Python + FastAPI as default, and when I hit any performance problems, I start thinking where to fall back.

  • @EricLouisYoung
    @EricLouisYoung 22 วันที่ผ่านมา

    if you're not using elixir on the backend, you're simply falling behind. the mechanisms provided by the beam vm have no competition. the beam is truly a business logic operating system.

  • @gjermundification
    @gjermundification 24 วันที่ผ่านมา

    0:08 Swift or Rust depending on the rest of the project.

  • @RetroGenetic
    @RetroGenetic 26 วันที่ผ่านมา

    I am fairly sure we are heading to "citadel", aka majestic monoliths with "outposts" aka micro services

    • @nicholaspreston9586
      @nicholaspreston9586 26 วันที่ผ่านมา

      Lol, majestic. You should read MonkeyUser.

  • @jsonkody
    @jsonkody 26 วันที่ผ่านมา

    Oh, it's about Gleam, that's nice - I didn't know that and wrote three big comments about how awesome Elixir is. :D
    Basically, Erlang, Elixir, and now Gleam all have the same superpowers because they all run on the BEAM virtual machine. The difference lies in some syntax rules or the type system (in the case of Gleam). But they all orbit around the actor model in the BEAM VM, functional programming, etc.
    I just started learning Elixir about three months ago and expected to really like Gleam, but there are some 'buts' LUL. It does not offer some amazing features that are in Elixir - it's a tradeoff for its type system.

  • @Abhinav-qd2lz
    @Abhinav-qd2lz 26 วันที่ผ่านมา +1

    Is it a re-upload?

  • @nicholaspreston9586
    @nicholaspreston9586 26 วันที่ผ่านมา

    You can keep Zig, lol. I don't know why I'd build a web app in Zig for allocation reasons, unless it can beat c# or Go. Perhaps it has a niche I'm ignorant of? I mean, it looks cool, but it's on my list of langs to try.

  • @mrmaymanalt
    @mrmaymanalt 26 วันที่ผ่านมา

    When i read the title i thought you meant backends as in compiler backends (like LLVM). Guess I'm not into webdev lol

  • @thygrrr
    @thygrrr 6 วันที่ผ่านมา

    Drinking out of a Mason Jar like a true Quiche Eater :D