Why LSPs AND Package Managers Are Bad

แชร์
ฝัง
  • เผยแพร่เมื่อ 18 พ.ย. 2024

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

  • @Kane0123
    @Kane0123 3 หลายเดือนก่อน +142

    Teej over here looking like a sports commentator…

    • @jamesp1389
      @jamesp1389 3 หลายเดือนก่อน

      Swagger

  • @beastOfVengeance
    @beastOfVengeance 3 หลายเดือนก่อน +69

    I remember it was a primetime video in which you asked the chat something along the lines of "how many of you could code if you turn off LSP?" I took the challenge, put my neovim on hold and created a simple .vimrc file with a single plugin(vim-surround) and started using vim as my primary editor for rust. At the time I was reading the book "Learning Rust With Entirely Too Many Linked Lists", I decided to follow the book in my new vim setup. Based on the experience, I would like to add a few points to your LSP discussion:
    1) I see an improvement in my ability to track how types change. LIke when I chain some functional programming constructs over some collection, I can feel what will be the type of the thing inside the closure. Also relying on mentally tracking types forces you to make some sane decisions which makes remembering the types easier. I will know that which variable is a reference an which is owned based on how I am going to use it.
    2) It forces me to use the std library docs too often.Coz I use duckduckgo, it has a shortcut where I can search the rust std library docs directly thorugh my url bar, this feature is called 'bangs', It has made me much comfortable with reading the docs. Now I am not afraid of going down that rabbit hole.
    3) Because there are no type hints and warnings when I do mistakes, I have to always run `cargo check` and see the compiler error messages. I am now a lot more comfortable when reading compiler error messages.
    4) It might be helping me to plan better. So this ones a little tricky. Earlier if I had a variable then I would press tab on it in insert mode to see what methods I have on it and if any of them could be used to achieve something that might bring me closer to achieve the thing that I originally want. Now I have to think and plan about this before I start typing.
    5) I like the minimalism of it. When I installed neovim on my arch linux, my adhd kicked in and I spent days configuring it down to the last detail. Now I am rocking a 20 line .vimrc file with a single plugin to write rust, C and python. Disclaimer: I am not working on projects the size of linux kernel with my current setup. My workflow is limited to advent of code problems, college homeworks, ctf's etc. Not very big projects involving a complex directory structure with hundreds of files.
    Although I have not done it long enough, but I hope that if I kept doing it then eventually, for my own sanity, I may start writing better code. If my editer is not reading code for me then I must read it and write it so that it is readable. Atleast this is the end goal.

    • @freeo6242
      @freeo6242 2 หลายเดือนก่อน

      Don't code just to code. Solve real problems.
      People waste too much time on toy code. Work on real projects which you get paid for. Grow with real project requirements. Code is better, which is written for other people to consume, not for yourself. You can't learn that writing toy code. Your code quality will be measured by the "WTF's per minute" when others read your code, or you read your own 6+ month old code. Organizing/designing code, that you still understand months later is the challenge. If it passes that, then other people will say it's good code.
      At this point I'd never start any "Advent of Code" or code problems ever again. But I'm in my prime working age, so that needs to be accounted for.

    • @beastOfVengeance
      @beastOfVengeance 2 หลายเดือนก่อน

      @@freeo6242 You do make a fair point. I started coding about 2 years ago, and still sometimes my methods of judging progress are a little bit weird. In the early days I thought that writing my own vim config is a statisfying amount of progress. For some time, I was also stuck in the turorial hell. Only recently I got enough confidence to try my own non trivial projects. The confidence to do this slowly build over time when I realized that I am now comfortable with things like reading the docs, using the terminal, getting intimate with a build tool, following a long thread to understand my problem and its solution,...and that I can code without an LSP. These things worked for me like a morale booster, convinced me that I got that dawg in me...that I should work on something more real.
      But it is a long way before I reach my prime.

    • @lambmaster
      @lambmaster หลายเดือนก่อน

      ​@@freeo6242 prime would disagree

    • @Zeedox
      @Zeedox หลายเดือนก่อน +1

      You could also try going even further old school and use paper documentation… even keep it in a separate room!
      There is certainly a peculiar benefit in coding slow and needing to take your time - your memory will adapt and you’ll *have* to learn. Same with writing your design before starting coding, and not relying on fast compilation feedback to catch your errors.
      I’ve tried this, and it’s an interesting exercise to do every now and then. But I personally have much more *fun* being able to get into a flow and code freely, throwing junk at the screen and using every tool available to catch errors and help me.

  • @DarkerCry
    @DarkerCry 3 หลายเดือนก่อน +153

    Odin definitely needs more attention, this is great. Plus Bill is a great benevolent dictator for it.

    • @yonas6832
      @yonas6832 3 หลายเดือนก่อน +16

      sometimes a project needs a dictator, yeah. see the Linux Kernel.

    • @DarkerCry
      @DarkerCry 3 หลายเดือนก่อน +13

      ​@@yonas6832 hey, if the dictator is good it's usually the best fit for any project. Very few can do it though.

    • @Muskar2
      @Muskar2 2 หลายเดือนก่อน

      ​@@DarkerCry I wish the idea of a benevolent dictator wasn't so commonly romanticized. Great power doesn't just come with great responsibility, it also comes with dependency hell that becomes the dictator's primary job, no matter your ideals - and if the dictator down-prioritizes the vital dependencies, they're replaced by someone who prioritizes them more... Sorry for that rant, I also think Odin needs more attention.

    • @Thyringer
      @Thyringer 2 หลายเดือนก่อน

      Well, I don't want to be mean, but I don't see any reason that gives this language real added value:
      no module/package system with package manager
      just another imperative language (there aren't even closures and the argument against them makes no sense if Rust has them)
      there are no algebraic data types or sensible infrastructure for overloading like type classes/interfaces/traits
      no really well-founded concepts for being memory-safe.
      the syntax is also a bit weird in some places.

    • @DarkerCry
      @DarkerCry 2 หลายเดือนก่อน +2

      @@Thyringer then just use something you want to use, Odin has good graphic library support and I like the syntax.

  • @ficolas2
    @ficolas2 3 หลายเดือนก่อน +39

    TJ: "I read the entire nvim documentation"
    Vs
    Tsoding: "I wanna learn LLVM IR, so I'm gonna use clang to compile C to LLVM IR and just figure it out from there”

    • @miguelborges7913
      @miguelborges7913 2 หลายเดือนก่อน +2

      You can't generate nvim configurations.

    • @ficolas2
      @ficolas2 2 หลายเดือนก่อน

      @@miguelborges7913 you can definitely mess with it without reading the entire docs tho hahaha
      Just meant it as, it's the two extremes of messing around/learning ahead

  • @tofaa3668
    @tofaa3668 3 หลายเดือนก่อน +18

    Ive been using odin for the past month for my voxel game and I've never been happier with a language

  • @bookle5829
    @bookle5829 3 หลายเดือนก่อน +122

    He called it Odin so he can claim as the creator of Odin.

    • @plaintext7288
      @plaintext7288 3 หลายเดือนก่อน +13

      Pirate Software is his grandchild

    • @Kane0123
      @Kane0123 3 หลายเดือนก่อน +7

      The All-Grandfather

    • @iatheman
      @iatheman 3 หลายเดือนก่อน

      @@plaintext7288😂

    • @carpal4489
      @carpal4489 2 หลายเดือนก่อน +1

      nah probably because the-clone-of-jay was way too long

    • @SaHaRaSquad
      @SaHaRaSquad 14 วันที่ผ่านมา

      @@carpal4489 Odin started as a Pascal clone. Also who cares.

  • @fabiolean
    @fabiolean 3 หลายเดือนก่อน +10

    LSPs are a huuuuge help for me. I don't know if I'm a dummy or if it's the adhd but I just can't keep that much data in my head all at once. Having an external reference to the structure of the code is invaluable. Before LSPs really caught on, I would just keep a sketch by hand nearby, but integrating it into the IDE has been magical for me.

    • @ITSecNEO
      @ITSecNEO 3 หลายเดือนก่อน +9

      Those are tech influencers, they always need to say something meaningful to get clicks or likes. Even if it's BS like that take for the LSPs

    • @dpgwalter
      @dpgwalter 29 วันที่ผ่านมา +2

      @@ITSecNEODifferent people can have different opinions. I agree with the LSP take, I think (other than situations like the comment above) it’s usually to a detriment of productivity, and I’ve been very successful without it for a long time now.

    • @MephistoDerPudel
      @MephistoDerPudel 23 วันที่ผ่านมา +1

      My brain is really fuzzy and I'm struggling a lot to remember exact wordings. So just typing in a few characters saves me a ton of time. However, it also could be, that my brain works that way, because I can get away with that thanks to stuff like LSPs ...

    • @codyhartman3358
      @codyhartman3358 16 วันที่ผ่านมา

      @@dpgwalter I don't usually use a LSP. I noticed my engineers usually get stuck on a problem when they use the LSP as a crutch instead of reading documentation.

    • @JohnSmith-he5xg
      @JohnSmith-he5xg 2 วันที่ผ่านมา

      His argument was basically "If you just hold the whole code base in your head, that's better". Yes. No argument. But good luck doing it across multiple projects. It was a dumb point.

  • @Oler-yx7xj
    @Oler-yx7xj 3 หลายเดือนก่อน +31

    It's funny how pip is both the unanimous worst package manager, but also the one that comes to mind as the first example of a useful package manager

    • @ITSecNEO
      @ITSecNEO 3 หลายเดือนก่อน +7

      If you just do small scripts or tasks in python, everything is fine with pip. But yes, as soon as we enter some bigger projects we soon arrive in the dependency hell

    • @electric26
      @electric26 หลายเดือนก่อน +5

      ​@@ITSecNEOpip's dependency hell is the worst I have ever experienced, both in severity and it consistently happening.

    • @renzo3939
      @renzo3939 23 วันที่ผ่านมา +2

      @@ITSecNEO which I guess fits the language

    • @sk-sm9sh
      @sk-sm9sh 15 วันที่ผ่านมา

      @@electric26 dependency hell is not really pip's inherent fault but fault of package & project maintainers. It's always a hell unless you take a very very strict and thoughtful approach in managing your dependencies as well having very good idea around semantic versioning and what it means to everybody when they release package updates. But majority packages nowdays are are written with the go to mantra of "just pip install whatev". Then to make matters even worse often packages are not written well enough to hide their internal implementation details and they often endup bleeding out their dependencies in their exposed interfaces. Naturally all this creates unsolvable problems in situations where a project needs a lot of dependencies as some dependencies will have conflicts between them.

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

      Pip inherits its simultaneously the best and the worst trait straight from Python.

  • @EndeavorDeeply
    @EndeavorDeeply 3 หลายเดือนก่อน +36

    If you’re a C/C++ developer Odin will feel like a more ergonomic version of what you’re used to. The language is still early days but it really is a joy to use. The vendor/batteries included approach is actually nice but where it lacks is the vastness of ecosystem right now. That’s largely just because C/C++ have an enormous head start. But once Odin hits 1.0 and has a much larger base, I wouldn’t at all be surprised if this problem goes away too. As well, Odin’s FFI is good so it’s not like you can’t just take your favorite C/C++ library and use it. It speaks the C ABI so it can talk nicely with anything also speaking the C ABI. It’s not a perfect language. There are bugs in the compiler. Those do get fixed pretty quickly if you file a bug report though. The community is pretty helpful. Be aware that gingerBill himself is definitely a benevolent dictator type. This language is definitely not a democracy. If you don’t like that, and you don’t like the taste choices, you may have a harder time. Odin has a long way to go, but it’s very usable and would make for a great option for basically anyone’s next hobby project at the very least.

    • @SaHaRaSquad
      @SaHaRaSquad 3 หลายเดือนก่อน +10

      I'd rather have a BDFL in an open source project than design by committee where nothing gets done and yet everything gets added.

    • @CasimiroBukayo
      @CasimiroBukayo 3 หลายเดือนก่อน +8

      ​​@@SaHaRaSquadReminds me of that interview with Bjarne Stroustrup on a CPP podcast more than a year ago.
      Apparently, the C++ Standards Committee wasn't his choice. It was forced upon him by the companies who've been using C++ for quite some time and decided to gang up on him. It was chaotic from then on 😅

    • @captainfordo1
      @captainfordo1 3 หลายเดือนก่อน +5

      And it’s a very good thing that Odin is not a democracy

    • @isodoubIet
      @isodoubIet 3 หลายเดือนก่อน +2

      If you're a C developer maybe. If you're used to C++, odin is quite simply too underpowered to be useful.

    • @privacyvalued4134
      @privacyvalued4134 3 หลายเดือนก่อน +2

      @@isodoubIet Exactly. It's also burdened with symbol soup that's clearly borrowed heavily from Go. Odin is very heavily geared toward graphics, video, and game development. Not that those fields don't benefit from having a focused language, but as a general purpose language, it falls quite flat. I'll take C-style soupless C++ (i.e. no STL, no Boost, occasional template use) over Odin's symbol soup any day. His head's generally in the right place, but the language needs a lot less symbol soup to appeal to me.

  • @d_6963
    @d_6963 3 หลายเดือนก่อน +11

    10:52 Sublime Text mentioned 😊. My first real job was using SAS for data analysis. Also, no LSP, but I knew all the procedures (functions) and parameters types. Then I wrote a small LSP as a Sublime plugin. Used that for a while thinking it would be faster... It wasn't. And going back then I struggled without. I do understand the appeal to not use an LSP.
    In my current environment I jump between languages and entire services every few days. I just don't see that happening for me. But now it was brought up here and I think back, I really do miss working without one.

    • @DarkerCry
      @DarkerCry 3 หลายเดือนก่อน +1

      I was happy to hear sublime mentioned, thought I was the only one tbh lol

    • @GodOfMacro
      @GodOfMacro 3 หลายเดือนก่อน

      faster than what ?

  • @Mojobojo
    @Mojobojo 3 หลายเดือนก่อน +16

    Years and years ago I remember Ginger Bill live streaming some early development of odinlang. Was a joy chatting in his stream then and hearing him talk about what hes doing. Its so crazy seeing how far its gotten.

  • @matthieuducorps8729
    @matthieuducorps8729 3 หลายเดือนก่อน +25

    I felt frustrated at the end of the video. Looks like twitter on TH-cam just clarifying couple of personal opinions and that's it.
    Didn't got anything about Odin.

  • @Fortun8Fool
    @Fortun8Fool 3 หลายเดือนก่อน +41

    Here's the best pitch I have for Odin. I picked it up in a weekend by reading the core library.

    • @TankorSmash
      @TankorSmash 3 หลายเดือนก่อน +2

      Happy to hear it's easy to learn. What are the upsides over a language I already know?

    • @Fortun8Fool
      @Fortun8Fool 3 หลายเดือนก่อน +5

      @@TankorSmash depends what that language is. If it's a high level language, it offers you performance. If you use a low level language, it offers sanity.

    • @TankorSmash
      @TankorSmash 3 หลายเดือนก่อน

      @@Fortun8Fool Lets say I'm coming from Zig

    • @UnidimensionalPropheticCatgirl
      @UnidimensionalPropheticCatgirl 3 หลายเดือนก่อน +8

      @@TankorSmash They have different design philosophies, I would describe it as: zig makes doing the correct thing hard, but it makes doing the incorrect thing harder. odin makes doing the incorrect thing easy, but it makes doing the correct easier. Zig maximizes explicitness, odin minimizes implicitness. Zig prefers flexibility in places where odin prefers simplicity and intuitiveness (build system, meta programming etc.). zig is more C like in places where odin takes more influence from pascal.

    • @Fortun8Fool
      @Fortun8Fool 3 หลายเดือนก่อน

      @@TankorSmash I looked at zig before odin, but leaned into odin because, in my opinion, it was easier to read. Also, it felt much more intuitive (coming from C).. so, easier to reason about.
      That's all personal preference though. Much of what you can do in odin has a 1:1 translation to zig. For example, I know zig has a SoA container much like Odin's #soa directive.
      They both have the same mentality of: another take on low level design with the advantage of 40+ years of hindsight.

  • @jangra_mohit
    @jangra_mohit 3 หลายเดือนก่อน +8

    I really like that Odin gives one good reliable way to do a thing in the standard lib rather then 10 packages giving me 10 different ways to do that same thing for a lot of things...and you can always do it differently on your own

    • @aenguswright7336
      @aenguswright7336 3 หลายเดือนก่อน +4

      Yeah, that’s my only real gripe about Rust TBH. I hate the fact that I start every new project by typing in cargo add serde, cargo add serde_json, cargo add reqwest, cargo add chrono. It just feels like these should be std libraries. Even Tokio, although I mind that less, I don’t see why rust std can’t ship with a basic async runtime for when I just want to make a couple of http calls.

    • @jangra_mohit
      @jangra_mohit 3 หลายเดือนก่อน

      @@aenguswright7336 yess, couldn't agree more

    • @ITSecNEO
      @ITSecNEO 3 หลายเดือนก่อน +1

      ​@@aenguswright7336??? There is literally no difference in importing from the stdlib or importing online crates. Also, what is your point here? Stdlib shouldn't contain everything by default, that would blow up the binary sizes. Not everyone needs json, or Async runtimes etc. for their project, why should it be included in the stdlib then? Makes no sense to me. Another pro is, that the language devs have less Code to maintain.

    • @UnidimensionalPropheticCatgirl
      @UnidimensionalPropheticCatgirl 3 หลายเดือนก่อน +5

      @@ITSecNEO There is huge difference, there are industries where every dependency you take on has to be audited, so it’s massive inconvenience to have more than just the std to audit, beyond that it makes the entire ecosystem extremely vulnerable to supply chain attacks. Also it doesn’t inherently bloat your binary sizes, in C 9/10 times std gets dynamically linked so it literally doesn’t affect anything and rust doesn’t have a stable abi, so there isn’t even the concept of linking an object inside of save rust, so everything is subject to dead code elimination.

    • @ITSecNEO
      @ITSecNEO 3 หลายเดือนก่อน

      @@UnidimensionalPropheticCatgirl No, there are a lot of crates which can be seen as standards for the language. Therefore you only have to audit those ones and not every one. The dependencies are often the same, like serde f.ex. All of those crates are maintained by highly talented people, so there is basically no need for huge auditing. Also, what do you want to audit? If the crates don't use much unsafe blocks or a lot of RCs or ARCs, there is no huge effort needed for auditing. That's the point of Rust, being memory safe by default. I don't get all the artificial Rust hate, it doesn't makes any sense.

  • @andythedishwasher1117
    @andythedishwasher1117 2 หลายเดือนก่อน +4

    Lmao Bill's Rush reference went straight over Prime and TJ's heads. I see you, Bill.

  • @Jeremyak
    @Jeremyak 3 หลายเดือนก่อน +12

    I think a lot of people that missed their true calling as baristas went into tech instead, and now we all get to suffer poorly made coffee.

    • @theodorealenas3171
      @theodorealenas3171 2 หลายเดือนก่อน +2

      As in java = coffee? That's a good one

    • @etodemerzel2627
      @etodemerzel2627 21 วันที่ผ่านมา

      Bill brews his own beer.

  • @Laurent_GameDev
    @Laurent_GameDev หลายเดือนก่อน

    Very interesting share ! Thanks
    I'm currently learning Odin, and it seems like every time I delve into a topic, I'm always amazed at how cleverly things are done in Odin.
    The more I use Odin, the more I agree with his maxim "Odin is the alternative to C for the joy of programming".
    I invit any coder to test it for a few weeks. It's an amazing language for coding.

  • @hriscuvalerica4814
    @hriscuvalerica4814 3 หลายเดือนก่อน +10

    I agree that including any dependency should be a big thing that requires work and an informed opinion . Great interview ! Can't wait to play a bit with Odin.

    • @yaksher
      @yaksher 3 หลายเดือนก่อน +4

      I'm curious what you think about stuff like the DashMap crate for Rust. It is completely unrealistic for people to implement DashMap themselves because it is a concurrency nightmare and most of the time people will implement it wrong and even if it's right, it'll be slow. But using a RwLock will be substantially slower than a DashMap in most cases.
      Do you think the Rust standard library is failing for not having its own implementation of DashMap? Do you think people should just accept the price of RwLock except in the rare cases where performance really matters and then people should go and manually install DashMap?
      Maybe DashMap specifically _should_ be standard library, but there's a lot of borderline stuff where doing it yourself is just finicky and annoying and will result in much slower code that's likely less correct.
      Like, yes, there are downsides to pulling in dependencies, but there are also a lot of upsides to having good implementations of things available on hand.

    • @ITSecNEO
      @ITSecNEO 3 หลายเดือนก่อน +1

      There is literally no Problem with the dependencies in Rust. Rust is memory safe by design and the crates are maintained by highly talented peoples. Rusts situation is entirely different from C++ or C. They both are memory unsafe, so it's easy to pull in dependencies which are problematic. But in Rust we get away with most of the memory issues by default, the risk for bad dependencies is highly smaller. It's just wrong to generalize in case of dependencies

    • @ITSecNEO
      @ITSecNEO 3 หลายเดือนก่อน +1

      ​@@yaksherAbsolutely right. "Dependencies are bad" is such a L take. Why should we invent the wheel over and over again when we can have one crate for the problem instead, which is maintained by experts for this exact problem. The crate is likely to be a magnitude more safe and efficient than any custom and new implementation by ourselfes. I'm also happy that not everything is in the stdlib, this comes with two pros: the community can contribute to the language and the language devs can focus on the language instead of stdlib features.

    • @atiedebee1020
      @atiedebee1020 14 ชั่วโมงที่ผ่านมา

      ​@@ITSecNEObecause dependencies are generally very generic. Importing a generic linked list library (for example) will not give you the same control over memory layout as writing your own.

  • @harriet-x.x
    @harriet-x.x 3 หลายเดือนก่อน +9

    Fun fact: Odin(3) is a tool developed by samsung to flash firmware and custom roms etc to your samsung galaxy device using download mode (was called something else before but i forgotttt) Usually can be acessed by holding down both volume buttons and power at the same time (has to be plugged into a pc from 2018 onwards (i think)

    • @elijah_9392
      @elijah_9392 23 วันที่ผ่านมา +2

      I believe it was a leaked internal tool. I may be mistaken.

  • @poapoapopopoop
    @poapoapopopoop 3 หลายเดือนก่อน +27

    they’re “hot takes” because the takes are fire

  • @user-pt1kj5uw3b
    @user-pt1kj5uw3b 2 หลายเดือนก่อน +1

    Love what he said about package managers. When I was learning it felt very strange to just download a fuck ton of code that I know nothing about.

  • @Nightwulf1269
    @Nightwulf1269 3 หลายเดือนก่อน +9

    While I'm more in the Zig camp, because it fits my needs simply better, that guy has really stable opinions. Especially his thoughts about dependencies are absolutely correct and important! Thank you for that ihteresting interview!

    • @carpal4489
      @carpal4489 2 หลายเดือนก่อน +4

      no the take on the dependencies is garbage, the fact that you don't have a package manager doesn't mean you won't put extern source which in turn is using other external source, so you still "don't know what you are downloading at this point".

    • @Nightwulf1269
      @Nightwulf1269 2 หลายเดือนก่อน

      @@carpal4489 It's not garbage...it's daily routine for me to clean up dependency hells

    • @Kingbubs353
      @Kingbubs353 หลายเดือนก่อน +2

      ​@@carpal4489You seem like a little hater boy

    • @carpal4489
      @carpal4489 หลายเดือนก่อน

      @@Kingbubs353 i just have an opinion, at this point you sound like a communist censor

    • @davidcauchi
      @davidcauchi หลายเดือนก่อน

      @@carpal4489so you don’t have the self control to limit doing dumb things, copy that.
      At least I have the choice of what is pulled into my project. Most packages are so badly made they have 400 deps you probably have no choice but to allow.

  • @mjolnirdev
    @mjolnirdev 2 หลายเดือนก่อน +4

  • @gladoseus
    @gladoseus 3 หลายเดือนก่อน +11

    prime is questioning his life at 14:30

    • @cork1576
      @cork1576 3 หลายเดือนก่อน +1

      Mhmm

  • @Sleiren
    @Sleiren 3 หลายเดือนก่อน +12

    Am I the only one confused by this podcasts format? The intro presents it like this is the episode, only to find out at the end the rest is on discord (presumably paywalled?). It just feels like a bait and switch.

    • @UnidimensionalPropheticCatgirl
      @UnidimensionalPropheticCatgirl 3 หลายเดือนก่อน +12

      The discord part is them doing Q&A, where people can call in and ask their questions, it’s not open to public since if you let random chatters ask questions their quality is just gonna be low which is annoying for everyone involved, so there is some vetting. but I don’t know why don’t they record it.

  • @Nootlink
    @Nootlink 3 หลายเดือนก่อน +15

    Imo the usefulness of LSP depends with what language you are writing.
    So if you are writing in a typed language, LSP is just a sugarcoat, but if you are writing in a dynamic language, LSP is a must.

    • @TwilightTrekker1
      @TwilightTrekker1 3 หลายเดือนก่อน +5

      Why is it a must for dynamic languages?

    • @yepisme455
      @yepisme455 3 หลายเดือนก่อน +8

      @@TwilightTrekker1 because he said so

    • @Karurosagu
      @Karurosagu 3 หลายเดือนก่อน

      🤔dynamic languages don't need an LSP, you might need it if your project is big/complex enough
      statically typed languages should use LSPs

    • @HalfMonty11
      @HalfMonty11 2 หลายเดือนก่อน

      Yeah, id agree. I can seen no lsp with Rust or Odin being possible but no lsp with Typescript sounds like hell on earth

    • @dpgwalter
      @dpgwalter 29 วันที่ผ่านมา

      @@HalfMonty11TypeScript itself is pretty much just a linter and an LSP on top of JS. I’d argue _having to have_ an LSP to understand the language is a sign that it’s full of overt complexity that could have been avoided.

  • @m4rt_
    @m4rt_ 3 หลายเดือนก่อน +2

    In Jai you have a combination of the several module things.
    You have #load which acts the same as #include (though you can scope some things so they are only accessible to that file or module using #scope_file, #scope_module, and #scope_export.) Then you have #import which lets you import a module which can either be a single file, or a directory with a module.jai file that loads the other module related files into it.
    And with #include it will look in the standard library (which is just a directory named "modules" bundled with the compiler that just has the source files), in the "modules" directory at the root of your project if it exists, and any other directories you may have told the compiler about. Then in if you for example tried to import the module "Foo", then it will look in those directories for a file "Foo.jai" or a directory "Foo" with a module.jai source file in it.
    In addition to this there is #import,file and #import,dir which lets you specify a path to a module file or directory.

  • @germandavid2520
    @germandavid2520 3 หลายเดือนก่อน +3

    I would still use LSP without autocompletion, LSP has other features that automate things that are not worth wasting time on, for example renaming a symbol that is used in different parts of the code, what do I gain by doing this manually? nothing. Other features like find references and go to the definition are very useful, I don't want to waste time searching through a filetree for that.

  • @stercorarius
    @stercorarius 3 หลายเดือนก่อน +9

    I appreciated the rush reference Bill

  • @HaydenGray
    @HaydenGray 3 หลายเดือนก่อน +8

    honestly having used odin for the past few months, it has been an extremely refreshing language to write. i started with the 1 billion row challenge and found that the standard library and core language had everything i needed and it was simple enough to get up and running in a weekend. even though bill doesn't like lsps, the unofficial one (ols) has been very good (not as good as rust analyzer but more than good enough given how much simpler the language itself is). additionally, the core library has got to be one of the easiest to read i've seen in a while, it was really nice being able to goto definition and actually read the code and understand it (unlike the C++ STL). to me this feels like a logical progression on the "simpler" languages that adds quality of life without the complexity that C++, Rust, and Zig add

    • @privacyvalued4134
      @privacyvalued4134 3 หลายเดือนก่อน

      C++ went off the rails with the adoption of STL. I stopped at C++ 11 and don't touch any of the newer stuff. I avoid STL and Boost like the plagues that they are. Templates are useful but they shouldn't be used for everything because they turn the language into incomprehensible symbol soup.

    • @ITSecNEO
      @ITSecNEO 3 หลายเดือนก่อน

      ​@@privacyvalued4134If C++ 11 would have been the last version, I would absolutely love that language. But the current state is a mess, still fun to write, but once you need to read others code the hell begins. That's the reason I ditched C++ in flavour of Rust. But Rust can also get to a messy state in the future with all that new added stuff... Last hope is on Carbon, but they seem to be pretty slow in development

    • @bpo217
      @bpo217 2 หลายเดือนก่อน

      I am surprised Zig was in your complexity list! I think Zig is a surprisingly simple language with well defined solutions over the years to common problems in C (null and pointers for example). Where is the complexity in Zig for you? Another point is the overview page for Odin mentioned in the video is roughly the same length as Zig. Also it seems pretty unfair to place it with C++ I suppose? I am just furthering where my thoughts come from but I am genuinely curious what it is for you.

  • @brentsaner
    @brentsaner 3 หลายเดือนก่อน +2

    Golang fixes a lot of the package management issues he expresses. It supports both vendoring and remote packages, the latter of which are/can be an explicit locked version/commit

  • @TetraluxOnPC
    @TetraluxOnPC 3 หลายเดือนก่อน +21

    > "Oh God, that sounds hard!" (RE manually downloading packages)
    You also are going to be less likely to take on complex, weird, or otherwise shitty dependencies.
    Which makes it better for everyone.

    • @МаркЧолак
      @МаркЧолак 2 หลายเดือนก่อน

      Still, when Odin becomes mainstream, people will probably create their own package managers like they did with Go (it was a nightmare).

  • @PaulSebastianM
    @PaulSebastianM 3 หลายเดือนก่อน +5

    There are two types of developers: those that look at other developers they consider good, to become like them, and those that don't need others to become good so they develop differently with different standard ways of working. None of them are bad developers.

    • @GingerGames
      @GingerGames 3 หลายเดือนก่อน +4

      The latter usually started out life as the former, and vice versa.

    • @sillysquirrel9979
      @sillysquirrel9979 3 หลายเดือนก่อน

      W take

    • @chadjaax
      @chadjaax หลายเดือนก่อน

      I don't think anyone that becomes good just does that by themself without taking examples or inspiration, it's pretty much impossible, it is like training an AI on no-data.
      instead I think the W developer is the one that learn the best from everything they learn and try to come the most optimize solution, that's why I think developers that sets on their safe zones because they think it is comfortable enough are ass developers and will never reach the level of one that always seek to be better.

  • @visaac
    @visaac 3 หลายเดือนก่อน +2

    Man
    I just started hearing understandable to me things and they were "Let's hop on discord"
    Eh, regardless was very insightful and ive found something new for myself
    A lot of thanks

  • @Hector-bj3ls
    @Hector-bj3ls 3 หลายเดือนก่อน +2

    Odin is my current language of choice. It's not perfect, but it fits my style better than any other language I've tried.
    I like the module level visibility controls. I do think Odin has the wrong default though. Everything is public by default.

    • @GingerGames
      @GingerGames 3 หลายเดือนก่อน +5

      Public by default is on purpose because of the amount of times I've had so many issues with things being private all the time and I've not been able to access things without modifying the source code directly. I understand why people "think" private-by-default is a good idea but it really isn't for the actual users of the code. The library writer doesn't really know what I need and is usually wrong too.

    • @Hector-bj3ls
      @Hector-bj3ls 2 หลายเดือนก่อน +1

      @@GingerGames I can see that point. I guess I'm of the mindset that an implementation detail shouldn't be exposed. Since someone will depend on it for something. And I guess that'd just because I've never really questioned semantic versioning. If a library just has a single version number it doesn't matter if new versions have breaking changes.

  • @JakEneAS
    @JakEneAS 3 หลายเดือนก่อน +3

    After watching this, I think I'll be trying out Odinlang. As someone that really likes to know what I'm putting into my projects, pkgs being necessary in some languages for basic functionality drives me nuts. One little package will suddenly add 40 packages.

  • @arian386
    @arian386 3 หลายเดือนก่อน +7

    Man never knew he was a physicist!

  • @lucianobarreira5012
    @lucianobarreira5012 หลายเดือนก่อน

    I'm glad Ginger Bill was born in the right timeline, otherwise would 100% get burned by being this ginger bearded craftsman of the magic we call compilers

  • @harsha1306
    @harsha1306 3 หลายเดือนก่อน +5

    Damn, my man is cooking with so many spicy takes that I want to give him an honorary Indian citizenship

    • @warrenarnoldmusic
      @warrenarnoldmusic 20 วันที่ผ่านมา

      Except he really doesn't like dookie on his food😅😅pun intended

  • @m4rt_
    @m4rt_ 3 หลายเดือนก่อน +3

    I have access to Jai, and I use it frequently. When I began using it I used the "using" statement a lot, but after using it for a while, I calmed down the ways I was using it. It can get a little confusing, it but can be very nice to use from time to time. So now I either use it for structs, or small functions where it is clear what it means, for example:
    Entity :: struct {
    position: Vector2; // Sometimes I will make the x and y coordinates here visible in the Entity scope, by using the "using" keyword, but that is not useful in this example.
    velocity: Vector2;
    speed: float;
    }
    FRICTION :: 40.0;
    move_on_input :: (using entity: *Entity, delta: float) {
    Vector2 direction = normalize( get_input_direction() );
    if length(direction) > 0 {
    velocity += direction * speed * delta;
    } else {
    velocity *= FRICTION * delta;
    if length(velocity) < 0.1 then velocity = make_vector2(0, 0);
    }
    position += velocity;
    }
    You could also have "using" as a separate statement, so you can do a block an in that block you can access the stuff inside. for example:
    foo :: (a: Vector2) {
    // ...
    {
    using a;
    // do stuff with x and y.
    }
    // ...
    }

    • @ITSecNEO
      @ITSecNEO 3 หลายเดือนก่อน +3

      Why would anyone use a language which is not even open sourced? I read Jai everywhere, but the f ing language isn't even available for everyone and therefore only used by a really small group of people only

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

      Because it's a good language. And if you doing mostly solo projects being "closed" is not a big issue.

  • @Heater-v1.0.0
    @Heater-v1.0.0 3 หลายเดือนก่อน +3

    I'm a Brit, and not so young, and I have never heard of speech marks. Sounded very weird.

    • @GingerGames
      @GingerGames 3 หลายเดือนก่อน +1

      I'm probably younger than you, and I was taught that term, even if I know the other ones. BBC Bitesize (kids learning website) uses the term speech marks.

  • @tutacat
    @tutacat 3 หลายเดือนก่อน +2

    Turning off LSP makes you self sufficient.
    It would appear that doing the grunt work, and things like using the spacebar to tab out lines manually, makes you more consistent.

    • @bpo217
      @bpo217 2 หลายเดือนก่อน +1

      Cackling

  • @Exilum
    @Exilum 2 หลายเดือนก่อน +1

    Teej has a great idle animation. Probably powered by Odin.

  • @amicusaxiom
    @amicusaxiom 3 หลายเดือนก่อน +6

    Minimalist. No IDE. No Package Managers. No Methods. 40% in I’m in happy land…

  • @joelinman6455
    @joelinman6455 3 หลายเดือนก่อน +2

    I removed copilot about a year ago when I noticed that I was no longer thinking about problems anymore and kind of waited 2-3 secs to see what it generates.
    Realistically I stopped problem solving the problems and found I ended up spending more time trying to debug and fix copilot snippets

    • @joelinman6455
      @joelinman6455 3 หลายเดือนก่อน

      Using copilot just felt backwards, we should be writing a solution to a problem and then maybe using AI to rubber duck it after your happy with your tests

  • @Parker8752
    @Parker8752 หลายเดือนก่อน

    Much as I like Rust as a language, I definitely agree with Bill's take on package managers. A sufficiently complex project will likely have multiple versions of the Rand crate, for example, because any crate that supports cryptography will depend on the Rand crate.

  • @WizardofWestmarch
    @WizardofWestmarch 3 หลายเดือนก่อน +2

    Still early in watching, his take on package managers is fascinating, because it says a lot about the development community and not about package managers themselves.
    Because packages are easy to make, anyone can make them. Because anyone can make them, bad ones get in, but if they happen to be useful despite being poorly optimized, maybe having a bad API, etc, we end up with a worse environment because they become deeply embedded in the ecosystem and make it all worse.
    Huh.
    Edit: I should have gone a little farther. I actually disagree with his prototype take. A lot of developers I know understand the difference, but the business forces them to ship without going back and doing a "real" implementation. At best they get to go do a bit of hardening around the first version.

  • @iatheman
    @iatheman 3 หลายเดือนก่อน +1

    "A little copying is better than a little dependency."
    And downloading dependencies statically is great for the team's collective sanity.
    Had to upgrade a server and the Python dependencies last week. What a hassle... Things were broken 3 levels deep in code the application didn't even interact with directly.
    Semver really is an idealistic contract that gets broken often. Especially if you have a lot of dependencies.

  • @hamzarashid7579
    @hamzarashid7579 3 หลายเดือนก่อน +2

    Great video. Now, I wanna try Odin.

  • @filipg4
    @filipg4 3 หลายเดือนก่อน +3

    Let the bikeshedding about LSP-s begin in the YT comments!

  • @andythedishwasher1117
    @andythedishwasher1117 2 หลายเดือนก่อน +1

    I've noticed that I can embed struct A in struct B, create an instance of struct B, and pass it to a function expecting a struct A parameter, and it appears to work fine. This would appear to give the ability to do something like class extensions in languages like Java or Dart. Not sure yet if this is an antipattern. Would love to hear thoughts of other Odin developers.

    • @yjlom
      @yjlom 28 วันที่ผ่านมา

      the difference is there's no virtual calls (unless you implement them yourself)
      so that's like Java, but without overiding (and with decent performance)

  • @martinseal1987
    @martinseal1987 3 หลายเดือนก่อน +4

    I agree with the package manager take, but im still going to use one, im making an app for some people to interact with a database not the mars rover

    • @GingerGames
      @GingerGames 3 หลายเดือนก่อน

      And you needed a package manager to download something to interface with a database? And I don't ship things on Mars either.

    • @martinseal1987
      @martinseal1987 3 หลายเดือนก่อน +2

      @@GingerGames it's a mobile app so yes it has a package manager out of the box

    • @martinseal1987
      @martinseal1987 3 หลายเดือนก่อน

      @@GingerGames and it uses yaml 😂

    • @GingerGames
      @GingerGames 3 หลายเดือนก่อน

      @@martinseal1987 that didn't answer my question.

    • @GingerGames
      @GingerGames 3 หลายเดือนก่อน

      @@martinseal1987 that didn't answer my question.

  • @fennecbesixdouze1794
    @fennecbesixdouze1794 2 หลายเดือนก่อน +1

    @2:20 This is not an uncommon opinion at all, boggles my mind that Prime has never heard it before. Rob Pike (and other people on the Go team) say they're more productive not having syntax highlighting/coloring. Again, the same idea: by not leaning on the syntax colors, they find they think about the actual code more.

  • @RomaineRC
    @RomaineRC 3 หลายเดือนก่อน

    I'm not saying this about any particular thing point that was made but Prime looked like he entered The Deepest state of Lifechanging thought. 14:35 onwards

  • @yaksher
    @yaksher 3 หลายเดือนก่อน

    @3:00 I have slightly mixed feelings about copilot, but what I'm a bigger fan of is inline chat. Like, I've been using Cursor and for some rote stuff, it's really nice to be able to just tell it to write some code here or modify the code in some specific way. It's much less intrusive than copilot but it gives you have most of the benefits.
    Like, lately I've been working on a project which is a bot which forwards messages back and forth between two messengers and it's a lot of annoying work with meshing their APIs and most of the code exists in two directions which are conceptually basically the same but can't really be abstracted over due to the details and so it's nice to be able to just paste the code and tell it "rewrite this to be in the other direction" and then it's slightly wrong and I fix it and it's much faster than doing it by hand.
    I sorta see the vision against autocomplete, but I have two cases I'd make for it
    - first, if you're doing relatively small projects with a new library where the library does a lot of heavy lifting (i.e., "small thing to talk to an API" type programs, like the bot described above), if the library is sensibly made, you can often find what you need without needing to trawl through documentation just by guessing the approximate name of the method or function. This works especially well in languages like Rust, where knowing the type signature of a function tells you pretty well what you need to give it.
    - second, good autocomplete encourages me to use longer variable and function names which would otherwise be really annoying to type. I feel like without autocomplete, there's definitely a pressure to pull Linux-style `fcntl` and `prctl` crap (where they couldn't even be bothered to standardize an abbreviation of "control") instead of using descriptive names like `file_control` and `process_control` which can then be typed with fcntl-TAB.
    An interesting thing I've realized with myself is that I talk to people a lot about code in chat platforms like Discord, where they have nice code blocks but they don't have any autocomplete or whatever at all, for example, which I think ends up being nice because despite using copilot and LSPs and stuff, I still regularly exercise (at least in small amounts) my ability to just... write some code.
    @19:40 An HTTP server is simple. An HTTPS server is not. And nobody needs an HTTP server these days, they need an HTTPS server, and nobody should be implementing TLS themselves because it will be done wrong. In general like, I see the point with package managers... but also, like... a lot of stuff, it would be really nice to have done right, once, correctly and not reimplemented from scratch.
    Some of it belongs in the standard library but the standard library can only support so much. The standard library probably shouldn't build sqlx into it though, and I really have no interest in writing a parser for Discord's particular brand of markdown myself. Yes, in a world where people have an infinite amount of capacity to write code, they can implement everything themselves from scratch and for most things this would technically be an improvement. But while for foundational things, it probably makes sense to minimize dependencies, even for things which aren't prototypes, it's not feasible to implement everything yourself.
    I think it does pretty heavily depend on languages too though. Average JavaScript dependency is probably a lot buggier than average Rust dependency.

  • @demolazer
    @demolazer หลายเดือนก่อน

    This is funny to me. I'm fairly new to the industry so I love all my autocomplete and feel like it saves me time. My dad has been a software dev/architect for 35 years and the other day he's showing me some code (C++ of all things) that he was editing in Notepad++ with no syntax highlighting except bold keywords and in white mode. I have managed to convince him Neovim may be a good idea after he scoffed at having to 'learn IDEs'. What is there to learn?! Older heads built different

  • @MatthisDayer
    @MatthisDayer 3 หลายเดือนก่อน +2

    daaamn that suit

  • @rosscousens6263
    @rosscousens6263 3 หลายเดือนก่อน +1

    Had no idea Ginger Bill hated beetroots!

  • @bertram-raven
    @bertram-raven 3 หลายเดือนก่อน +1

    Faster without IDE autocomplete? My personal experience is I agree. Many autocomplete suggestions are highly inefficient.

  • @domogdeilig
    @domogdeilig 3 หลายเดือนก่อน

    22:40 This has fucked me so hard. Didnt know this spent hours figuring out why something didnt build when I made an ETL to get electricity prices for Norway.

  • @alst4817
    @alst4817 9 วันที่ผ่านมา

    I really like the idea of Odin, it sounds great for my use case of computational modelling. Like C but without the footguns, not as complex as Rust or as barmy as C++ and more mature than Zig. But it still needs a lot of work on the compiler; crossing my fingers that they can sort this.

  • @bkrxiii
    @bkrxiii 3 หลายเดือนก่อน +2

    Can’t find episode one? You have a dedicated channel or playlist somewhere?

    • @ThePrimeTimeagen
      @ThePrimeTimeagen  3 หลายเดือนก่อน +6

      I think it's called so I talked to Chris lattner. Let me rename it properly and make a playlist

  • @TheMotorcycleBoy-pe2eg
    @TheMotorcycleBoy-pe2eg 3 หลายเดือนก่อน +1

    TH-cam keeps defaulting me to Primeagen's videos whenever any other video ends. He is becoming ubiquitous. I go to sleep listening to Under Milk Wood and wake up to hear Primagen excoriating some hapless dev somewhere, or lampooning some 1980's geek satire. I now have keywords emblazoned in my mind. My subconscious has been invaded. This week it was "Quiche-Eaters". I listened for half an hour, semi comatose, to Primagen on Quiche eaters. I have decided that all this is a sign. I am now subscribed to Primagen. But I am curious, has anybody else been MKUltra'd by TH-cam like this?

  •  3 หลายเดือนก่อน +2

    > Swizzling: You can do .XXY or .YYZ if you like Rush.
    Rush mentioned, let's goo 🤘

  • @Qrzychu92
    @Qrzychu92 หลายเดือนก่อน +1

    I higly disagree about the LSP part (and package managers also :D) I recently had to change an old app written in JS using jQuery DataTables. I wanted to enable column sorting - quick google, you add "ordering": true,done. But I wanted to disable it for two columns with just buttons, so I pasted the same there. It didn't work. Quick google, yes, for columns it's called orderable.
    If I had a good LSP, I would just "discover" those in my IDE in 10s and be done. But no, I need to fire up google to fine the two different spelling. Oh how much fun that is. Also, knowing that seems like a waste of brain power.

  • @sn-xc7rv
    @sn-xc7rv 3 หลายเดือนก่อน +3

    Electron users in shambles 😂

    • @aenguswright7336
      @aenguswright7336 3 หลายเดือนก่อน +1

      They should use Tauri instead 😉

  • @nomadtrails
    @nomadtrails 3 หลายเดือนก่อน

    TJ is an excellent interviewer

  • @andythedishwasher1117
    @andythedishwasher1117 2 หลายเดือนก่อน +1

    I value those pauses even when I "know what I'm doing". There's always context to examine. Especially with loops.

  • @nicktsaizer6258
    @nicktsaizer6258 5 วันที่ผ่านมา

    idk, it's important for me to enshure my code is correct before even compilation started. It's fine to "know the language", but i don't want to remember all fields of a struct names.
    Also go-to-defenition is super handy for me. Just easy way to get answer on "oh, what is it?" question.
    I agree on packages topic. Downloading 350+ packages to be able to know is number even or not (for example) is crazy

  • @FlyingSherlock
    @FlyingSherlock 3 หลายเดือนก่อน +2

    I am also using Sublime Text without autocomplete and love it

    • @slawtul
      @slawtul 3 หลายเดือนก่อน +2

      I do not know why these two smart guys think Sublime Text is free :| (buying license is required)

    • @skaruts
      @skaruts 3 หลายเดือนก่อน

      ​@@slawtul no it's not. You can use it indefinitely for free. It nags you to buy it, but that's it. I've been using it for free for almost a decade now.

    • @GodOfMacro
      @GodOfMacro 3 หลายเดือนก่อน

      @@slawtul I'm fine paying tools I use if that means they are actually good, also easy to ignore the popup and use for free, sometimes I spent months before I setup my liscense on new builds...

    • @skaruts
      @skaruts 3 หลายเดือนก่อน +2

      ​@@slawtul that's not true. Buying a license is not required. I've been using Sublime for a decade now, and I've never bought it yet.
      (TH-cam keeps deleting my replies, so if you see more than one by me, that's why.)

    • @slawtul
      @slawtul 2 หลายเดือนก่อน

      @@skaruts Yes, it's required. From a page: "Sublime Text may be downloaded and evaluated for free, however a license must be purchased for continued use." You have been using it for so long without paying cause Sublime has not got a frustrating mechanism asking you to buy a license, like a '30 minutes shutdown mechanism'. That's all.

  • @MikeShah
    @MikeShah 2 หลายเดือนก่อน

    Excellent!

  • @bhaumiktalwar1567
    @bhaumiktalwar1567 3 หลายเดือนก่อน +5

    Ginger Bill needs to promote ODIN more

  • @jjpp1993
    @jjpp1993 15 วันที่ผ่านมา

    this is a guy that knows his sacrifices and keeps on with his life

  • @Lorne_at_work
    @Lorne_at_work 3 หลายเดือนก่อน

    Well, Learning Odin is back on the todo list. Thanks guys. :D

  • @NVM_SMH
    @NVM_SMH 3 หลายเดือนก่อน

    We English sound better because we actually pronounce our "t"s. Then proceeds to put a "k" on the end of words ending in "ing". 😂

  • @matthewstott3493
    @matthewstott3493 3 หลายเดือนก่อน

    Sigh... I guess I am just old... I remember sitting on the floor with no less than 3 heavy programming books and a language reference guide. A paper notebook and graph paper, had to have graph paper. This is was pre-RAD IDE. There was no drag and drop GUI design, you spec'd out the x, y pixel positions for just about everything in code which means you had to calculate it on graph paper for every button, label, etc. Intelligent autocomplete helps a lot as well as the online documentation for newbie. But I can see how autocomplete may become annoying to someone intimately familiar with a language.

  • @KodosUnofficial2-jq5oo
    @KodosUnofficial2-jq5oo 3 หลายเดือนก่อน +2

    Odin is getting more popular and got more attention 😅

    • @ITSecNEO
      @ITSecNEO 3 หลายเดือนก่อน +1

      I don't think Odin will ever be mainstream, as Zig is simply a better C successor. I also don't see the point in using it over C++ for Game Dev, also considering that rust makes huge steps forward in that area too. So where is the point of Odin?

    • @KodosUnofficial2-jq5oo
      @KodosUnofficial2-jq5oo 3 หลายเดือนก่อน

      @@ITSecNEO code readability

  • @slendi9623
    @slendi9623 3 หลายเดือนก่อน +1

    Finally I was waiting for this

  • @ChaitanyaSoni96
    @ChaitanyaSoni96 3 หลายเดือนก่อน

    not having xcode autocomplete circa 2019 when i had to use a 4gb macbook air (employer's) to develop in objective c made me a better programmer. not just in terms of learning all syntax, but also gives you continuity in your thought process since you dont have to pause for the autocomplete to write the code youre trying to. autocomplete has been off for me since then!

  • @hamm8934
    @hamm8934 3 หลายเดือนก่อน +4

    Ive added a toggle for my LSP autocompletion, with autocompletion off by default.
    I find forcing myself to actively recall variables and methods 10x speeds up my learning of a library or codebase.
    If I’m really stuck, ill toggle it on for a sec, but then right off. I basically use autocompletion like flashcards and im never going back.
    But to each their own :)

    • @ITSecNEO
      @ITSecNEO 3 หลายเดือนก่อน

      I call it BS and placebo, but yep, each their own I guess

    • @hamm8934
      @hamm8934 3 หลายเดือนก่อน

      @@ITSecNEO lol calm down. No one is forcing you to turn off your auto completion.
      I just found that by the time I’m able to get up to speed with a library or codebase, the auto completion is almost redundant. I already know what I need to type. Outside of spelling or similar named methods, auto completion is probably the least valuable part of an lsp.

    • @ITSecNEO
      @ITSecNEO 3 หลายเดือนก่อน

      @@hamm8934 So what is the point to disable the LSP then? Auto completion is a nice to have but not important. My point is about Auto Suggestions, as we can see all the available functions for variables without the need to open the docs. Hovering the functions shows the doc definition anyways, so also no need to refer to external docs. Why should we throw all of this benefits away and step back into stone age, if we can be way more productive with a LSP? If your argument would be about Copilot f.ex, I would totally agree, but the LSP is a really important component of a language in my opinion.

    • @hamm8934
      @hamm8934 3 หลายเดือนก่อน

      @@ITSecNEO you misread my comment. Im not disabling the lsp, just autocompletion while i type. I still have my error checking, go to definition, auto imports, etc.. I just toggled off the autosuggestion while I type. By disabling this, it forces me to actively recall names. I started doing this after my first few white board interviews back in the day where suddenly i was second guessing myself about the names and syntax of basic functions.
      When youre learning a new codebase, I found auto completion just delays how long it takes to really memorize different functions and methods. And once you know them, youre often not even using autocompletion anymore because you can just type them.
      If i really need completion, i just hit my completion keybind and it shows the options.

    • @ITSecNEO
      @ITSecNEO 3 หลายเดือนก่อน

      @@hamm8934 Ahhh my fault, sorry. That makes sense, I really thought you disabled the whole LSP. Was a little bit late yesterday haha

  • @Alex-cx7tv
    @Alex-cx7tv 3 หลายเดือนก่อน +1

    Compiled languages can probably avoid the usage of an LSP, but man would I be dogwater at Python without the help of autocomplete I would be DOA. Damn language has too much freedom to create too many dev-traps.

  • @Silas2-p7c
    @Silas2-p7c 3 หลายเดือนก่อน

    Great episode.

  • @TankorSmash
    @TankorSmash 3 หลายเดือนก่อน +1

    It's so interesting to hear someone not wanting to use an intellisense/autocomplete. It makes sense to prefer reading through the docs manually, but it is so much slower.
    It's hard to appreciate the upsides of not having instant access to the docs right where your eyes are already looking
    Likewise with the dependencies thing, it's absolutely true you open yourself up to being licensed out accidentally, and file size growing but it also gives you universally understood versioning is going to be done manually when you vendor the files into your repo any way. So just look through the source of the library you want and you have none of the downsides mentioned and tons of upsides

    • @GingerGames
      @GingerGames 3 หลายเดือนก่อน +4

      It's slower in the short term, but you actually start learning and retaining the code base in your memory. So it is a lot quicker in the long run.

    • @GingerGames
      @GingerGames 3 หลายเดือนก่อน +4

      As for the dependencies thing: people never read through it if they automatically download it. They just don't. That's human nature. So the downside is that it doesn't happen.

    • @TankorSmash
      @TankorSmash 3 หลายเดือนก่อน

      @@GingerGames We've had very different experiences, I respect that!

  • @notoriouslycuriouswombat
    @notoriouslycuriouswombat 3 หลายเดือนก่อน +2

    i still think i would rather a package manager, sure nothing's perfect but I think there are more pros than cons

  • @ChrisP872
    @ChrisP872 3 หลายเดือนก่อน +6

    LSP according to copilot: The Language Server Protocol (LSP) is a standardized protocol used to communicate between a code editor or integrated development environment (IDE) and a language server. This protocol enables the editor to provide advanced language features such as auto-completion, go-to-definition, and error checking.

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

    About LSPs - I would love to know how Bill measured that productivity increase.
    Why i agree with copilot easily - i took me more time fixing what it was trying to help me with than what i got from not having to type that. But for me LSPs were always "i don't have to type whole thing" help and "i know there was something like that" without remembering (and "recently" using) that function.
    What i hear is - Bill was using LSP as a way to not have to properly learn framework/whatever he was working with. I agree that its wrong usage of LSP. But from my experience and how my brain is working, its way quicker for me to work with LSP especially when i know the lib/stuff i'm working with it.
    Package managers.... well, he is plainly wrong. I agree with him on what is wrong with current software quality. I disagree with him completely on why its wrong. Its not consequences of package manager - its consequences of bad software management and technical leadership.

  • @Spriters400
    @Spriters400 2 หลายเดือนก่อน

    Can we access the second part of the discussion somewhere ?

  • @JonathanFraser-i7h
    @JonathanFraser-i7h 20 วันที่ผ่านมา

    As someone who used to have to manually download all dependencies to build a piece of software.... he's categorically wrong about package managers. The industry moved on from that wrong headed thinking because it didn't work.

  • @hungrymusicwolf
    @hungrymusicwolf 3 หลายเดือนก่อน

    45:51 we're still the generation creating the ideas based on the previous generations bad decisions. We will be the ones to prove our ideas to be wise or stupid.

  • @NostraDavid2
    @NostraDavid2 3 หลายเดือนก่อน

    Yes, but does Odin have Monads? (I've not written a single line of Odin, yet, and have no idea how Odin does error handling. Not via exceptions, I hope!?)

    • @UnidimensionalPropheticCatgirl
      @UnidimensionalPropheticCatgirl 3 หลายเดือนก่อน

      odin doesn’t have “monad” construct, it handles error handling by multi returns usually, there is also compiler directive that forces you to not discard the error, but nothing is stopping someone from implementing option type.

  • @AndrewTSq
    @AndrewTSq 3 หลายเดือนก่อน +2

    I like Odin, lsp a u c k a.

  • @andythedishwasher1117
    @andythedishwasher1117 2 หลายเดือนก่อน +1

    I don't think there's any shame in asking LLMs specific questions about the features of the language you're using. If you target the language rather than specific implementations of it, they're far more helpful because most language documentation is highly available in their context. If you need to figure out how to do something general, it will tell you how and why it's done that way in the context of the language, sometimes revealing facts under the hood that you would have had to dig through a lot of docs to learn otherwise. I don't think auto-complete is the way, but LLMs are fantastic at playing rubber ducky and grabbing highly available facts quickly.

  • @jacobdavis7182
    @jacobdavis7182 หลายเดือนก่อน

    I really wanna use Odin. The thing that stops me is the lack of high level websocket client.

    • @Laurent_GameDev
      @Laurent_GameDev หลายเดือนก่อน

      You can try to find a C API that suits you, then create a binding in Odin. It's rather easy. Have a look in the vendor folder of the Odin source repo to have some great examples

  • @HuntingKingYT
    @HuntingKingYT 25 วันที่ผ่านมา +1

    I just cant really not use al lsp mebacues i make so many tyopes

  • @tutacat
    @tutacat 3 หลายเดือนก่อน

    The North American accents is closer to older English.

  • @Fecal_Eruptions
    @Fecal_Eruptions 20 วันที่ผ่านมา

    Does this mean as a new programmer I should follow this approach or just keep following cs50p

  • @SamualN
    @SamualN หลายเดือนก่อน +1

    a package is a collection modules

  • @tutacat
    @tutacat 3 หลายเดือนก่อน

    YAML is just a superset of JSON

  • @kabukitheater9046
    @kabukitheater9046 3 หลายเดือนก่อน +1

    can u use odin for webdev? like a frontend for calling wasm?

    • @julienlecoq3539
      @julienlecoq3539 3 หลายเดือนก่อน

      I don’t think so, but if you find something to do that, let me know. I would like to use this too 😊

    • @UnidimensionalPropheticCatgirl
      @UnidimensionalPropheticCatgirl 3 หลายเดือนก่อน +1

      they allow you to compile into wasm, and their vendor library includes wasm package for making calling js and wgl in wasm easier.

    • @spartanatreyu
      @spartanatreyu 3 หลายเดือนก่อน

      Unless you're making something like figma/photoshop/google-earth in the browser, you're better off using js than a different language compiled to wasm.
      Wasm needs to load the entire binary then set it up before it can be executed, but js can be executed and finished WHILE the page is still downloading.

  • @PIX_BMS
    @PIX_BMS หลายเดือนก่อน

    I still don't get why we can't infer the package name from the directory name??