Top Shelf #2 Ginger Bill - Creator Of Odin

  Рет қаралды 52,018

ThePrimeTime

ThePrimeTime

Күн бұрын

Recorded live on twitch, GET IN
Guests
Ginger Bill | x.com/TheGinge... | / gingergames
TJ DeVries | x.com/teej_dv | / @teej_dv
My Stream
/ theprimeagen
Best Way To Support Me
Become a backend engineer. Its my favorite site
boot.dev/?prom...
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-K...
Get production ready SQLite with Turso: turso.tech/dee...

Пікірлер: 355
@Kane0123
@Kane0123 Ай бұрын
Teej over here looking like a sports commentator…
@jamesp1389
@jamesp1389 Ай бұрын
Swagger
@beastOfVengeance
@beastOfVengeance Ай бұрын
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 29 күн бұрын
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 23 күн бұрын
@@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.
@DarkerCry
@DarkerCry Ай бұрын
Odin definitely needs more attention, this is great. Plus Bill is a great benevolent dictator for it.
@yonas6832
@yonas6832 Ай бұрын
sometimes a project needs a dictator, yeah. see the Linux Kernel.
@DarkerCry
@DarkerCry Ай бұрын
​@@yonas6832 hey, if the dictator is good it's usually the best fit for any project. Very few can do it though.
@Muskar2
@Muskar2 28 күн бұрын
​@@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 17 күн бұрын
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 17 күн бұрын
@@Thyringer then just use something you want to use, Odin has good graphic library support and I like the syntax.
@ficolas2
@ficolas2 Ай бұрын
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 Ай бұрын
You can't generate nvim configurations.
@ficolas2
@ficolas2 Ай бұрын
@@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
@bookle5829
@bookle5829 Ай бұрын
He called it Odin so he can claim as the creator of Odin.
@plaintext7288
@plaintext7288 Ай бұрын
Pirate Software is his grandchild
@Kane0123
@Kane0123 Ай бұрын
The All-Grandfather
@iatheman
@iatheman Ай бұрын
@@plaintext7288😂
@carpal4489
@carpal4489 4 күн бұрын
nah probably because the-clone-of-jay was way too long
@Nightwulf1269
@Nightwulf1269 Ай бұрын
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 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 3 күн бұрын
@@carpal4489 It's not garbage...it's daily routine for me to clean up dependency hells
@Kingbubs353
@Kingbubs353 7 сағат бұрын
​@@carpal4489You seem like a little hater boy
@Oler-yx7xj
@Oler-yx7xj Ай бұрын
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 Ай бұрын
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
@poapoapopopoop
@poapoapopopoop Ай бұрын
they’re “hot takes” because the takes are fire
@tofaa3668
@tofaa3668 Ай бұрын
Ive been using odin for the past month for my voxel game and I've never been happier with a language
@Mojobojo
@Mojobojo Ай бұрын
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 Ай бұрын
I felt frustrated at the end of the video. Looks like twitter on KZbin just clarifying couple of personal opinions and that's it. Didn't got anything about Odin.
@d_6963
@d_6963 Ай бұрын
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 Ай бұрын
I was happy to hear sublime mentioned, thought I was the only one tbh lol
@GodOfMacro
@GodOfMacro Ай бұрын
faster than what ?
@TetraluxOnPC
@TetraluxOnPC Ай бұрын
> "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.
@МаркЧолак
@МаркЧолак 25 күн бұрын
Still, when Odin becomes mainstream, people will probably create their own package managers like they did with Go (it was a nightmare).
@hriscuvalerica4814
@hriscuvalerica4814 Ай бұрын
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 Ай бұрын
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 Ай бұрын
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 Ай бұрын
​@@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.
@HaydenGray
@HaydenGray Ай бұрын
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 Ай бұрын
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 Ай бұрын
​@@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 Ай бұрын
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.
@EndeavorDeeply
@EndeavorDeeply Ай бұрын
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 Ай бұрын
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 Ай бұрын
​​@@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 Ай бұрын
And it’s a very good thing that Odin is not a democracy
@isodoubIet
@isodoubIet Ай бұрын
If you're a C developer maybe. If you're used to C++, odin is quite simply too underpowered to be useful.
@privacyvalued4134
@privacyvalued4134 Ай бұрын
@@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.
@Exilum
@Exilum 19 күн бұрын
Teej has a great idle animation. Probably powered by Odin.
@jangra_mohit
@jangra_mohit Ай бұрын
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 Ай бұрын
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 Ай бұрын
@@aenguswright7336 yess, couldn't agree more
@ITSecNEO
@ITSecNEO Ай бұрын
​@@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 Ай бұрын
@@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 Ай бұрын
@@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.
@Jeremyak
@Jeremyak Ай бұрын
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 28 күн бұрын
As in java = coffee? That's a good one
@stercorarius
@stercorarius Ай бұрын
I appreciated the rush reference Bill
@mjolnirdev
@mjolnirdev Ай бұрын
@Fortun8Fool
@Fortun8Fool Ай бұрын
Here's the best pitch I have for Odin. I picked it up in a weekend by reading the core library.
@TankorSmash
@TankorSmash Ай бұрын
Happy to hear it's easy to learn. What are the upsides over a language I already know?
@Fortun8Fool
@Fortun8Fool Ай бұрын
@@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 Ай бұрын
@@Fortun8Fool Lets say I'm coming from Zig
@UnidimensionalPropheticCatgirl
@UnidimensionalPropheticCatgirl Ай бұрын
@@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 Ай бұрын
@@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.
@andythedishwasher1117
@andythedishwasher1117 24 күн бұрын
Lmao Bill's Rush reference went straight over Prime and TJ's heads. I see you, Bill.
@harriet-x.x
@harriet-x.x Ай бұрын
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)
@gladoseus
@gladoseus Ай бұрын
prime is questioning his life at 14:30
@cork1576
@cork1576 Ай бұрын
Mhmm
@user-pt1kj5uw3b
@user-pt1kj5uw3b 15 күн бұрын
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.
@PaulSebastianM
@PaulSebastianM Ай бұрын
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 Ай бұрын
The latter usually started out life as the former, and vice versa.
@sillysquirrel9979
@sillysquirrel9979 Ай бұрын
W take
@visaac
@visaac Ай бұрын
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
@Sleiren
@Sleiren Ай бұрын
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 Ай бұрын
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.
@arian386
@arian386 Ай бұрын
Man never knew he was a physicist!
@andythedishwasher1117
@andythedishwasher1117 24 күн бұрын
I value those pauses even when I "know what I'm doing". There's always context to examine. Especially with loops.
@Hector-bj3ls
@Hector-bj3ls Ай бұрын
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 Ай бұрын
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 Ай бұрын
@@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.
@buffer0xaa555
@buffer0xaa555 8 күн бұрын
Bill is one of the brightest people in programming space.
@Nootlink
@Nootlink Ай бұрын
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 Ай бұрын
Why is it a must for dynamic languages?
@yepisme455
@yepisme455 Ай бұрын
@@TwilightTrekker1 because he said so
@Karurosagu
@Karurosagu Ай бұрын
🤔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 21 күн бұрын
Yeah, id agree. I can seen no lsp with Rust or Odin being possible but no lsp with Typescript sounds like hell on earth
@cossak.G.nederlander
@cossak.G.nederlander Ай бұрын
Minimalist. No IDE. No Package Managers. No Methods. 40% in I’m in happy land…
@m4rt_
@m4rt_ Ай бұрын
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.
@harsha1306
@harsha1306 Ай бұрын
Damn, my man is cooking with so many spicy takes that I want to give him an honorary Indian citizenship
@m4rt_
@m4rt_ Ай бұрын
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 Ай бұрын
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
@marcsfeh
@marcsfeh Ай бұрын
thank u bill, very cool
@fabiolean
@fabiolean Ай бұрын
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 Ай бұрын
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
@JakEneAS
@JakEneAS Ай бұрын
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.
@andythedishwasher1117
@andythedishwasher1117 24 күн бұрын
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.
@hamzarashid7579
@hamzarashid7579 Ай бұрын
Great video. Now, I wanna try Odin.
@MikeShah
@MikeShah Ай бұрын
Excellent!
@thef9313
@thef9313 29 күн бұрын
As a german, I can't use this language. Glad that JBlow listen to his chat and discarded the ^ character from jai, since it absolutely sucks to use on a german keyboard.
@GingerGames
@GingerGames 27 күн бұрын
Our very early users of Odin were all Scandinavian and they had the same "problem". It turns out that in practice, using `^` is not as common as you think due to Odin's type inference. And typing that dead key is not that much of a problem in practice.
@Thyringer
@Thyringer 17 күн бұрын
I don't understand what your problem is: ^ is right above the tab key, click on it once, then space; or just twice in a row. Done!
@rosscousens6263
@rosscousens6263 Ай бұрын
Had no idea Ginger Bill hated beetroots!
@tutacat
@tutacat Ай бұрын
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 Ай бұрын
Cackling
@filipg4
@filipg4 Ай бұрын
Let the bikeshedding about LSP-s begin in the YT comments!
@Heater-v1.0.0
@Heater-v1.0.0 Ай бұрын
I'm a Brit, and not so young, and I have never heard of speech marks. Sounded very weird.
@GingerGames
@GingerGames Ай бұрын
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.
@Omnifarious0
@Omnifarious0 27 күн бұрын
12:50 - I completely agree with him about package managers. I frankly find Go and Javascript to be frightening. The way they manage dependencies is like begging for a supply chain attack. At least a deployed Go program can't be modified by having its dependencies updated. And the way Maven works actively disgusts me. "Oh, I can't be bothered to have a consistent version of this dependency over my entire project. Lets just package the specific version I need for the various pieces with those pieces and we can just let them all exist in the project simultaneously!". Blech! Who EVER thought that was a good idea in any way?! And, from what I've seen, Cargo and Rust are about the same as Go, maybe a little bit better.
@HalfMonty11
@HalfMonty11 21 күн бұрын
Cargo is a bit better. You can't delete from cargo so if you depend on a specific version, even if deprecated you can still fetch it to build. With go I had a project become unbuildable because a dependency of a dependency of a depependency I was using dissapeared when someone deleted a tag from github.
@nomadtrails
@nomadtrails Ай бұрын
TJ is an excellent interviewer
@MatthisDayer
@MatthisDayer Ай бұрын
daaamn that suit
@RomaineRC
@RomaineRC Ай бұрын
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
@slendi9623
@slendi9623 Ай бұрын
Finally I was waiting for this
@TheMotorcycleBoy-pe2eg
@TheMotorcycleBoy-pe2eg Ай бұрын
KZbin 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 KZbin like this?
@bertram-raven
@bertram-raven Ай бұрын
Faster without IDE autocomplete? My personal experience is I agree. Many autocomplete suggestions are highly inefficient.
@fennecbesixdouze1794
@fennecbesixdouze1794 25 күн бұрын
@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.
@bkr_418
@bkr_418 Ай бұрын
Can’t find episode one? You have a dedicated channel or playlist somewhere?
@ThePrimeTimeagen
@ThePrimeTimeagen Ай бұрын
I think it's called so I talked to Chris lattner. Let me rename it properly and make a playlist
@bhaumiktalwar1567
@bhaumiktalwar1567 Ай бұрын
Ginger Bill needs to promote ODIN more
@Spriters400
@Spriters400 27 күн бұрын
Can we access the second part of the discussion somewhere ?
@andythedishwasher1117
@andythedishwasher1117 24 күн бұрын
BILL IS GRUG!
@sn-xc7rv
@sn-xc7rv Ай бұрын
Electron users in shambles 😂
@aenguswright7336
@aenguswright7336 Ай бұрын
They should use Tauri instead 😉
@FlyingSherlock
@FlyingSherlock Ай бұрын
I am also using Sublime Text without autocomplete and love it
@slawtul
@slawtul Ай бұрын
I do not know why these two smart guys think Sublime Text is free :| (buying license is required)
@skaruts
@skaruts Ай бұрын
​@@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 Ай бұрын
@@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 Ай бұрын
​@@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. (KZbin keeps deleting my replies, so if you see more than one by me, that's why.)
@slawtul
@slawtul Ай бұрын
@@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.
@AndrewTSq
@AndrewTSq Ай бұрын
I like Odin, lsp a u c k a.
@domogdeilig
@domogdeilig Ай бұрын
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.
@iatheman
@iatheman Ай бұрын
"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.
@brentsaner
@brentsaner Ай бұрын
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
@germandavid2520
@germandavid2520 Ай бұрын
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.
Ай бұрын
> Swizzling: You can do .XXY or .YYZ if you like Rush. Rush mentioned, let's goo 🤘
@Lorne_at_work
@Lorne_at_work Ай бұрын
Well, Learning Odin is back on the todo list. Thanks guys. :D
@n30v4
@n30v4 Ай бұрын
Every step you don't take is a step you won't learn from.
@spartanatreyu
@spartanatreyu Ай бұрын
Counterpoint: "Yak shaving"
@NVM_SMH
@NVM_SMH Ай бұрын
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". 😂
@martinseal1987
@martinseal1987 Ай бұрын
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 Ай бұрын
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 Ай бұрын
@@GingerGames it's a mobile app so yes it has a package manager out of the box
@martinseal1987
@martinseal1987 Ай бұрын
@@GingerGames and it uses yaml 😂
@GingerGames
@GingerGames Ай бұрын
@@martinseal1987 that didn't answer my question.
@GingerGames
@GingerGames Ай бұрын
@@martinseal1987 that didn't answer my question.
@Silas2-p7c
@Silas2-p7c Ай бұрын
Great episode.
@yaksher
@yaksher Ай бұрын
@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.
@KodosUnofficial2-jq5oo
@KodosUnofficial2-jq5oo Ай бұрын
Odin is getting more popular and got more attention 😅
@ITSecNEO
@ITSecNEO Ай бұрын
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 Ай бұрын
@@ITSecNEO code readability
@ChaitanyaSoni96
@ChaitanyaSoni96 Ай бұрын
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!
@jemm8363
@jemm8363 22 күн бұрын
when to expect Andrew on talk??
@NostraDavid2
@NostraDavid2 Ай бұрын
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 Ай бұрын
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.
@joelinman6455
@joelinman6455 Ай бұрын
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 Ай бұрын
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
@hamm8934
@hamm8934 Ай бұрын
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 Ай бұрын
I call it BS and placebo, but yep, each their own I guess
@hamm8934
@hamm8934 Ай бұрын
@@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 Ай бұрын
@@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 Ай бұрын
@@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 Ай бұрын
@@hamm8934 Ahhh my fault, sorry. That makes sense, I really thought you disabled the whole LSP. Was a little bit late yesterday haha
@WizardofWestmarch
@WizardofWestmarch Ай бұрын
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.
@kibels894
@kibels894 Ай бұрын
Importing dependencies should be a little painful to make you think before doing it.
@Alex-cx7tv
@Alex-cx7tv Ай бұрын
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.
@ChrisP872
@ChrisP872 Ай бұрын
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.
@matthewstott3493
@matthewstott3493 Ай бұрын
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.
@bernardobeninifantin509
@bernardobeninifantin509 Ай бұрын
Is the interviewed son of Jimmy Akin?
@hungrymusicwolf
@hungrymusicwolf Ай бұрын
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.
@joshuaworman4022
@joshuaworman4022 Ай бұрын
Do we get to see the qa or is that paywalled?
@tutacat
@tutacat Ай бұрын
The North American accents is closer to older English.
@tutacat
@tutacat Ай бұрын
YAML is just a superset of JSON
@notoriouslycuriouswombat
@notoriouslycuriouswombat Ай бұрын
i still think i would rather a package manager, sure nothing's perfect but I think there are more pros than cons
@kabukitheater9046
@kabukitheater9046 Ай бұрын
can u use odin for webdev? like a frontend for calling wasm?
@julienlecoq3539
@julienlecoq3539 Ай бұрын
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 Ай бұрын
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 Ай бұрын
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.
@EveryOtherDayTV
@EveryOtherDayTV Ай бұрын
Can you make a Top Shelf playlist?
@andythedishwasher1117
@andythedishwasher1117 24 күн бұрын
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.
@mctainshcom
@mctainshcom Ай бұрын
❤ the gingers take on packages 👍
@SaiyanJin85
@SaiyanJin85 Ай бұрын
Didn't know Louie CK is a developer
@Kapendev
@Kapendev Ай бұрын
I don't get why he dislikes package managers. You can go crazy with everything, does not mean it's bad. Also the idea that you know better your deps if you download the library manually is not real.
@GingerGames
@GingerGames Ай бұрын
As I said: it automates dependency hell. It's not just that "you can go crazy", everyone goes crazy with it. And package managers have accelerated that craziness. And doing it manually slows down that craziness. Does it stop it entirely? No. But it does nudge people go at least consider what they are doing most of the time. And if that still doesn't help, that person cannot be helped at moment in time.
@slendi9623
@slendi9623 Ай бұрын
​@@GingerGames if you give it to people, people will use it, if you can go crazy with something, people will go crazy with it
@privacyvalued4134
@privacyvalued4134 Ай бұрын
Autocompletion is training wheels for programming. You learned to ride a bike with training wheels but the neighborhood kids mocked you if you were still using training wheels 6 months later. So then you removed them, felt a little afraid initially, and then you realized you didn't need them and they even were getting in the way of riding the bike properly. Autocompletion is the same way. You don't need it and it gets in the way.
@ITSecNEO
@ITSecNEO Ай бұрын
Maybe for YOU, but not for everyone xD
@mobugs
@mobugs Ай бұрын
CRAN did it right but no one took after it because R
Odinlang Creator Ginger Bill Talks Odin!
51:05
ThePrimeTime
Рет қаралды 82 М.
Why I Prefer Exceptions To Errors
1:05:31
ThePrimeTime
Рет қаралды 56 М.
An Unknown Ending💪
00:49
ISSEI / いっせい
Рет қаралды 51 МЛН
Как подписать? 😂 #shorts
00:10
Денис Кукояка
Рет қаралды 6 МЛН
The Rabbit Is A Scam
56:17
ThePrimeTime
Рет қаралды 243 М.
Creator of git, Linus Torvalds Presents the Fundamentals of git
1:10:15
Developers Alliance
Рет қаралды 95 М.
DHH Is Right About Everything
2:02:54
ThePrimeTime
Рет қаралды 189 М.
The Minds Behind Windows: Raymond Chen
2:05:36
Dave's Garage
Рет қаралды 76 М.
Amazon Says Return To Office Or Get Fired
59:33
ThePrimeTime
Рет қаралды 155 М.
The Weirdest Language I've Ever Seen (I kinda love it...)
58:11
Theo - t3․gg
Рет қаралды 72 М.
Wirtual Plays a RARE FullSpeed CUP OF THE DAY
54:52
Wirtual VODs
Рет қаралды 182 М.
Teaching Neovim From Scratch To A Noob
1:12:55
TheVimeagen
Рет қаралды 199 М.
Robert Greene: A Process for Finding & Achieving Your Unique Purpose
3:11:18
Andrew Huberman
Рет қаралды 12 МЛН
32 Reasons WHY TS IS BETTER Than Go
1:09:29
ThePrimeTime
Рет қаралды 247 М.