I have been working on building a MacOS desktop app from scratch using only the lowest level apis provided by the OS, and let me tell you, it is a very slow process. I query the OS for a window canvas, the display refresh rate (so I can calculate the app frame rate), create a graphics pipeline in metal so I can do the graphics rendering in the GPU, etc. I have been working on this for months and I am still in a very early stage trying to implement font rendering using .ttf font format. I expect the project to require me to work on it for maybe 3 years or so before I can have anything that remotely resembles a "todo app", but in the process I believe I am gaining very deep knowledge of how things work under the hood :)
I know it's been a while (6 months or so) but I am watching older videos on this channel and after reading this comment I wondered how you're progressing with this project? Sounds pretty cool, do you have the code in public somewhere? If not could it be something you might do? It sounds really interesting to me so I would love to see such a projects source as there isn't much out there for real bare bones macOS apps like there is bare bones Win32 Windows apps.
My first language in the 8th grade of school was OCaml, then two years later we switched to Haskell. This language learning path gave me very unique perspectives and showed some really wonderful stuff. And of course I'll never forget the feeling when you suddenly start understanding some topic six months or a year after it has been taught to you 😂😂 TJ, you are awesome, i hope you will find this message, the world needs to know about tail-recursive and mutually recursive functions!
My first language is Rust and when I write in something else I find that I mostly am forced to think less critically about the code itself, because the language will allow for whatever except good ownership principles and I gotta loosen it up, and much more time debugging mystery shit that the borrow checker would have popped first-thing.
Also started with Rust and have to say as a beginner i would much rather get detailled info on what is breaking and why than some other languages might provide. I really like Rust as a starting language giving rather deep feedback everytime i hit the enter on the cargo run and often shouting in my face for doing nooby errors. I'm now a year into a rather complex backend project and started out using rather high-levely frameworks to get the job done fast. As time went by and some knowledge accumulated, i now got my dependencies down from around 300 to less then 100, as more and more of my servers framework became code i actually wrote. So this aspect of having the high level being represented down to the "low" level (as userspace goes) in one codebase is also a great thing for gradually going deeper as you understand more.
As a self taught dev, I feel like I often lack low level knowledge and this interests me a lot. However having worked with many people that went through university, actually learned some amount of low level and theory, I can tell you that formal knowledge really doesn't change the way you dev unless you care. It's not just knowing these things, it's caring to apply them. As far as recruitment goes, when I listen to people working at fang or stuff I feel like there are two different recruitement pools. Like these people behave like the average developper is way better than the devs you meet when recruiting for small anonymous companies. I very much agree with the point on the fundamentals, I just hired two relatively senior devs for typescript, these devs were Rust and C++ devs and never actually did any typescript because for me teaching syntax to someone who understands the metal is way easier than the reverse.
I learned rust first and i gotta say once you understand the borrow checker, the language is so nice. Crates and the types feel very rewarding to use. I do feel like i am doing the programming thing backwards because rn I am trying to learn js and webdev
@@backendbanterfmTeej's response is well put. If the compiler for a purely functional language is smart enough, it will resort to "mutable" algos for memory allocation/use under the hood, even though the engineer can't use those techniques directly.
Responding to minute 47. Cloud vCPUs be they in kub pods, or VM, or other container manager, are really slow. I can't exactly explain why, between lower Ghz due to power constraints per core in the datacenter, shared CPU via hyperthreading, and hypervisor overhead . There is some expected degradation. But the actual numbers I find when I test it out are abysmally low compared to where they should be. Even for accounting for all of the above. Cloud systems are just really slow.
@@backendbanterfm Which is, very unfortunate. Vertical scaling is so much easier on system design. Horizontal scaling introduces more system complexity and constraints.
Fully agree with the value of learning memory management early. I think by learning C as my first language, I've kept those low level concepts in my head whenever I write code, and it has helped me always write better software regardless of language. Putting it in the middle of the curriculum (after python/javascript but before Go) seems perfect for the modern, self-driven developer.
my first language is JS then Python.. now I'm trying to learn Rust... I'm willing to learn C first if that helps learning Rust. I'm excited for the course
you can learn C in a single day. It’s a very compact language. The point they are making is that you don’t understand the benefits of Rust until you have called Malloc and Free
@@AJewFR0in 1 day is way too optimistic. C is actually pretty weird coming from a “it just works/get shit done” perspective. It takes time to understand pointers to pointers, but it is probably the best language for getting into low-level stuff with lots of online resources.
I'd say that functional languages care a lot about performance and efficiency where they can. Structural charing of data structures is freaking fantastic. Another surprisingly huge gain is that immutability makes equality checking really freaking cheap, because they are just identity checks.
I think for the average person any of the modern languages are good enough to get you started, but at some point everyone should learn C (the basics of it then mess around with pointers, memory management and implementing data structures at a low level). Then only you will appreciate other languages' design decisions, e.g. why Java and C# uses VMs for runtime.
You guys underestimate the value of good error messages. What rust does really well is explaining why your code is shit, rather than just segfaulting or spitting out a million lines of java tracebacks / c++ template errors.
This is probably for any language. I'd say, a variable is a name, that has a value binded to it. And to be more precise, the variable allows for changes of the binding (not the binded value). While constants don't allow for changes of the binding
ugh I really don't like what ure saying. I won't listen anymore. 50% of you seem to be pushing the discurse that engineers now a days need to know about computers (and then kind of back off and say that embebed systems jobs exist) The other 50% does the same but also seems to not know much about computer science. Even if both of you showed huge control of what ure talking about, Ive never gone "oooh, I get it I don't have enough memory in production" in real life. What stretch
59:40 shows you don't even believe it. And look I'm a real engineer, not a community college one. A European one, but yeah. You need to pass HR and then just be smart. Its not fundamentals, it's not willing to learn (you need to make up your mind), its just showing you are smart, if you are a junior.
Waiting TJs course on pragmatic functional programming with OCaml 🐫🔥
I listened all the way to the end. I love the episode so much. TJ's so handsome and I want an OCaml course.
I have been working on building a MacOS desktop app from scratch using only the lowest level apis provided by the OS, and let me tell you, it is a very slow process.
I query the OS for a window canvas, the display refresh rate (so I can calculate the app frame rate), create a graphics pipeline in metal so I can do the graphics rendering in the GPU, etc. I have been working on this for months and I am still in a very early stage trying to implement font rendering using .ttf font format.
I expect the project to require me to work on it for maybe 3 years or so before I can have anything that remotely resembles a "todo app", but in the process I believe I am gaining very deep knowledge of how things work under the hood :)
I know it's been a while (6 months or so) but I am watching older videos on this channel and after reading this comment I wondered how you're progressing with this project? Sounds pretty cool, do you have the code in public somewhere? If not could it be something you might do? It sounds really interesting to me so I would love to see such a projects source as there isn't much out there for real bare bones macOS apps like there is bare bones Win32 Windows apps.
My first language in the 8th grade of school was OCaml, then two years later we switched to Haskell. This language learning path gave me very unique perspectives and showed some really wonderful stuff. And of course I'll never forget the feeling when you suddenly start understanding some topic six months or a year after it has been taught to you 😂😂
TJ, you are awesome, i hope you will find this message, the world needs to know about tail-recursive and mutually recursive functions!
My first language is Rust and when I write in something else I find that I mostly am forced to think less critically about the code itself, because the language will allow for whatever except good ownership principles and I gotta loosen it up, and much more time debugging mystery shit that the borrow checker would have popped first-thing.
Also started with Rust and have to say as a beginner i would much rather get detailled info on what is breaking and why than some other languages might provide. I really like Rust as a starting language giving rather deep feedback everytime i hit the enter on the cargo run and often shouting in my face for doing nooby errors.
I'm now a year into a rather complex backend project and started out using rather high-levely frameworks to get the job done fast. As time went by and some knowledge accumulated, i now got my dependencies down from around 300 to less then 100, as more and more of my servers framework became code i actually wrote.
So this aspect of having the high level being represented down to the "low" level (as userspace goes) in one codebase is also a great thing for gradually going deeper as you understand more.
As a self taught dev, I feel like I often lack low level knowledge and this interests me a lot. However having worked with many people that went through university, actually learned some amount of low level and theory, I can tell you that formal knowledge really doesn't change the way you dev unless you care. It's not just knowing these things, it's caring to apply them.
As far as recruitment goes, when I listen to people working at fang or stuff I feel like there are two different recruitement pools. Like these people behave like the average developper is way better than the devs you meet when recruiting for small anonymous companies. I very much agree with the point on the fundamentals, I just hired two relatively senior devs for typescript, these devs were Rust and C++ devs and never actually did any typescript because for me teaching syntax to someone who understands the metal is way easier than the reverse.
I learned rust first and i gotta say once you understand the borrow checker, the language is so nice. Crates and the types feel very rewarding to use. I do feel like i am doing the programming thing backwards because rn I am trying to learn js and webdev
The course you are talking is exactly the sort of thing i am looking for!
Yesss
I want a Ocaml course.
I’m looking forward to this when it releases! Been loving the program so far.
23:56 hey, what the hell man? 😂
O.o
@@backendbanterfmTeej's response is well put. If the compiler for a purely functional language is smart enough, it will resort to "mutable" algos for memory allocation/use under the hood, even though the engineer can't use those techniques directly.
thanks for the great episode fellas. excited for the course
You bet!
But nvidia CEO Jensen said to not learn code.
We don't like him
I never owned nvidia products and never will. Specially now when he has some devolution syndromes advising people to stop thinking.
"This needs to be in memory maybe I dont want ot load the entire databs and do this filtering on my side" shots fired at prisma XD
HDF5 weeping
Responding to minute 47.
Cloud vCPUs be they in kub pods, or VM, or other container manager, are really slow. I can't exactly explain why, between lower Ghz due to power constraints per core in the datacenter, shared CPU via hyperthreading, and hypervisor overhead . There is some expected degradation.
But the actual numbers I find when I test it out are abysmally low compared to where they should be. Even for accounting for all of the above. Cloud systems are just really slow.
Yeah, all about that horizontal scale
@@backendbanterfm
Which is, very unfortunate. Vertical scaling is so much easier on system design. Horizontal scaling introduces more system complexity and constraints.
OCaml course when? :)
Fully agree with the value of learning memory management early. I think by learning C as my first language, I've kept those low level concepts in my head whenever I write code, and it has helped me always write better software regardless of language. Putting it in the middle of the curriculum (after python/javascript but before Go) seems perfect for the modern, self-driven developer.
I listened all the way to the end. I love the episode so much. TJ's so handsome and I want an OCaml course!
Is the course out?
Still waiting for the course
Learned Elixir first it's been interesting lol
God bless you child lol
my first language is JS then Python.. now I'm trying to learn Rust... I'm willing to learn C first if that helps learning Rust. I'm excited for the course
you can learn C in a single day. It’s a very compact language. The point they are making is that you don’t understand the benefits of Rust until you have called Malloc and Free
@@AJewFR0in 1 day is way too optimistic. C is actually pretty weird coming from a “it just works/get shit done” perspective. It takes time to understand pointers to pointers, but it is probably the best language for getting into low-level stuff with lots of online resources.
I'd say that functional languages care a lot about performance and efficiency where they can. Structural charing of data structures is freaking fantastic. Another surprisingly huge gain is that immutability makes equality checking really freaking cheap, because they are just identity checks.
Conan is the best attempt at a C packager manager so far. Though C/C++ dependency management is still very messy.
i want ocaml but i want the curl audio book more
I think for the average person any of the modern languages are good enough to get you started,
but at some point everyone should learn C (the basics of it then mess around with pointers, memory management and implementing data structures at a low level).
Then only you will appreciate other languages' design decisions, e.g. why Java and C# uses VMs for runtime.
I loved the episode so much, TJ's so handsome and I want an OCaml course who cares about memory i have 64 whole GBs i never free i just restart
Good lookin dude for sure
While this is not so much about backend the banter on this is *Chef's Kiss* Perfection
Rust and OCaml when?
wtf I'm playing dota 2 as this opening plays and I'm wondering if I hallucinated it and had to watch it back
I listened.
I listened all the way to the end and TJ's so handsome I need some of that oh camel my camel in my life.
…. 😂I want an OCaml course
rust is my 10th programming language that i wish was at least my 3rd just behind c# javascript
You guys underestimate the value of good error messages. What rust does really well is explaining why your code is shit, rather than just segfaulting or spitting out a million lines of java tracebacks / c++ template errors.
Omg I love this so much, something something, TJ is conventionally attractive and um Dota 2 Dota 2 Ocaml my caml?
Correct
Variables in Rust are called bindings.
This is probably for any language. I'd say, a variable is a name, that has a value binded to it. And to be more precise, the variable allows for changes of the binding (not the binded value). While constants don't allow for changes of the binding
Prime mentioned! You view baiters!
'PromoSM' 💖
Oh I thought you were the same person…
It shouldn't be your last language either.
ugh I really don't like what ure saying. I won't listen anymore. 50% of you seem to be pushing the discurse that engineers now a days need to know about computers (and then kind of back off and say that embebed systems jobs exist) The other 50% does the same but also seems to not know much about computer science.
Even if both of you showed huge control of what ure talking about, Ive never gone "oooh, I get it I don't have enough memory in production" in real life. What stretch
59:40 shows you don't even believe it. And look I'm a real engineer, not a community college one. A European one, but yeah. You need to pass HR and then just be smart. Its not fundamentals, it's not willing to learn (you need to make up your mind), its just showing you are smart, if you are a junior.
you're just imposing limitation to others. just learn any programming languages you want and enjoy it.
Waaa?
I listened all the way to the end. I love the episode so much. TJ's so handsome and I want an OCaml course.
I listened all the way to the end. I love the episode so much. TJ's so handsome and I want an OCaml course.