@@tom-delalande you can see how he works live on twitch. He streams from time to time ( his channel name is "ornicar2"). He does indeed use NixOs, I have asked him in one of his streams.
I have been working in a Scala codebase now for 6 months. I can see where Kotlin gets many of its traits from. This codebase was written by inexperienced devs, the code is a nightmare to work with. Projects with good languages can be brought to its knees by junior devs.
Currently working in a large Python codebase and never before have I considered quiting programming as many times as I have now. I think it was mainly juniors and overengineering "seniors" that made it terrible (plus Python's horrendous type system). Makes me miss Scala 😢
@@DisFunctor , lol, we are actually migrating this code base to Python. I worked over the weekend just to get the initial architecture down to ensure that we don't follow the same path.
As someone who's just learning how to program can you masters tell me what it means to have a bad codebase or what does bad programming look like? What are things that I should learn to not end up being hated by one of you experienced programmers. Please take the time and reply as I really would like to know the foundations.
@@NightXof Unfortunately, that's not something you can learn from a youtube comment :) Just you writing code unsupervised as a junior developer will lead to bad code. You just need to write a lot of code and get it reviewed by competent people. Learn about patterns, best practices and structure before you stop writing shit code. Just keep doing it, and don't worry about it for now, it's literally unexplainable to you at the moment because you don't have the experience and you don't know what it looks like.
I'm the same. It seems that my coworkers don't like it lol... But I enjoy what I do too much I'll make my own company once some of my side projects are completed.
@@Entropy67 I’m working solo on my projects, and I prefer it that way. I don’t want to panic over finding a co-founder-I just want to focus on building and executing my idea
PostgreSQL can be used as a document-store with its excellent json/bson storage an query capabilities and it features a rich and extensible type system which helps modeling the problem domain and keep it consistent. You can also use languages like js, Python etc. Inside the db (but I find this not so useful) and it's pub/sub capabilities can enable realtime apps without need for constant polling. With Patroni replication and HA is easy. So postgres would be a very good choice in the long term.
Better watch out for the creeping Eveything table with a UUID PK "id" and a single jsonb column "value". I've seen a lot of javascript-oriented json data get dumped into Postgres this way. It's not a good time, especially when collections contain arrays of random elements that must be searched (of course this inevitably happens on the frontend, and becomes a gigantic source of tech debt). It's better to store data in a way that lends itself to *almost* server side rendering, making the frontend's job as simple as possible. Displaying data with a good UX is hard enough as is.
@@yurisich This is a datastore agnostic problem and will be the same with every other datastore. A single Mongodb collection, one big jsonl file. Or unnormalized data inside an relational db... Often a combination of approaches and careful data modeling is key to long term success. I used it for web-scraping and data extraction where I can dump results from the scrappers as json into specific tables and then query the data from sql and build materialized views from this data for easy and performant queries. Also I found it quite pleasant to use as an event store for event-sourcing.
Scala is not the most important factor here. He could have same results in any modern typed language. It's much more about what was said at the end. Don't accumulate technical depth, remove instead of add, chose a right tech and change it when something else does the job better. In terms of languages. He could have similar productivity in go, dart, c#, rust and bunch more. Scala is only one option.
Haskell being a whitepaper language is true (it was 100% just for research when it was created), but it's also gotten more and more practical with useful extensions to the language and better developer tools over the years.
A super interesting, in-depth discussion of this open source project, the most inspiring programming related video I have seen recently! I am not a chess player, so I was not too aware of lichess, but now I am very impressed. It is always nice to see what a focus on simplicity and quality and the absence of managers and investors can bring about. Lichess is a project that really deserves financial support.
Very interesting video. I like the dev's posts and ideology, especially about lines of code as a weight added to a plane. This video is a good source of advices for developing projects in a very small team (if not by yourself). The only thing, I watched the video on 2x cuz it was kind of slow. But in general, great video, thanks for making it!
Great video as always! When I was in university, we had a class called Comparative Languages and we studied Scala as a way to learn functional programming.
Excellent video. If I was a programming teacher in school, one lesson i would have dedicated to the themes of this video, because it's not only helps you as a programmer, but also as a person. My faith for humanity is restored. Thank you
love this video, shows large scale real-world application architecture done by one person at scale is not only possible but enjoyable, a man after my own heart
Been working as a developer for around 8 years but got so tired of the toxic environment it had become so swapped to something else entirely... Seeing someone this down to earth really puts a smile on my face. I wish this was the norm...
beautiful video man , you should keep doing this longform thing , this goes on to show that how simple software engineering still is , and we ourselves make it complicated by using every other fad in existence
Thanks. Never knew lichess was open source too being managed by one person. This is a focused and passionate achievement we all should be acknowledging
Why didn't he talk about kotlin, well he can't regret not having used it because it wasn't even a thing when he first started, but I think migrating from scala to kotlin is worth a considering
While Java is commonly considered a strongly typed language, it's type system is (and even more so used to be) not really that strong. It still doesn't even have null safety and it's generics are quite poor. At least they finally added an equivalent to sum types in the latest version. But it's still a far cry from what you can do in Scala.
It has nothing in common with js. It's a functional-focused (but. OO-compatible) language with strong typing that runs on the JVM, the java virtual machine.
FYI Java *does* have what you probably meant with enum types: have a look at sealed classes, which now also support exhaustive pattern matching; i think it was introduced in Java 17 or 21 It still doesn't have Scala's higher order types, but i'm not convinced yet that they are actually useful in a changing product
Interesting, thank you for the note. I do use sealed classes in Kotlin, although I had no idea they existed in Java. They always feel noisier than a simple union type. Good to know I still have that option
@@tom-delalande they are absolutely a ton more boilerplate laden than they are in Scala, Rust, or OCAML. It's not pleasant to use, and Java's implementation is certainly even more annoying than Kotlin's (one class per file etc). But at least you do have the option when the situation calls for it and they're absolutely the go to choice for state machines even if a bit wordy
Java definitely is finally starting to improve its type system a fair bit but that has only really happened in the past few years. And it still doesn't have null safety. It also has quite weak generics. It's still nowhere near something like Scala or Haskell.
Scala being good on large codebases. My god, i think you never worked with a team that used scala. The reason that it works for him is that only he writes the code and only he approves what code goes in. Also, the project's scala LOC is < 200k, this is what you call big? This is the size of a project that got out of the MVP phase. I am not saying that the developer is stupid, bad or anything else. But the way you framed the video is like he used a godly stack that uses so few deps and it's so simple and bla bla bla, but if you start looking at the codebase you realise, nothing in programming is simple, and that not all that is simple is also simple to understand.
No meetings, no jira tickets no PO, PM & SM breathing down your neck. Sounds like a very productive environment to me 😅.
No daily standup that turns into a one hour meeting.
Yeah, imagine not having 4 managers to manage you, how productive you can be.
Saw he uses NixOS in his streams. Knew he was absolutely cracked immediately.
I didn't know he uses NixOS, I love that. I couldn't find any VODs but I'd love to see how he works
@@tom-delalande You can follow him on twitch ornicar2, you can really see what peak productivity looks like, its humbling
Nix mentioned. Lets fucking goooooo
@@tom-delalande you can see how he works live on twitch. He streams from time to time ( his channel name is "ornicar2"). He does indeed use NixOs, I have asked him in one of his streams.
Nix has a lot of politics going on internally. They recently forced out the founders. Expect it to become terrible in short order.
I have been working in a Scala codebase now for 6 months. I can see where Kotlin gets many of its traits from. This codebase was written by inexperienced devs, the code is a nightmare to work with. Projects with good languages can be brought to its knees by junior devs.
Currently working in a large Python codebase and never before have I considered quiting programming as many times as I have now. I think it was mainly juniors and overengineering "seniors" that made it terrible (plus Python's horrendous type system). Makes me miss Scala 😢
@@DisFunctor , lol, we are actually migrating this code base to Python. I worked over the weekend just to get the initial architecture down to ensure that we don't follow the same path.
As someone who's just learning how to program can you masters tell me what it means to have a bad codebase or what does bad programming look like? What are things that I should learn to not end up being hated by one of you experienced programmers. Please take the time and reply as I really would like to know the foundations.
@@NightXofsame here, would be interested to hear
@@NightXof Unfortunately, that's not something you can learn from a youtube comment :)
Just you writing code unsupervised as a junior developer will lead to bad code. You just need to write a lot of code and get it reviewed by competent people. Learn about patterns, best practices and structure before you stop writing shit code.
Just keep doing it, and don't worry about it for now, it's literally unexplainable to you at the moment because you don't have the experience and you don't know what it looks like.
A programmer who actually gives a sh*t is an order of magnitude more productive than one who doesn't.
I'm the same. It seems that my coworkers don't like it lol... But I enjoy what I do too much
I'll make my own company once some of my side projects are completed.
money is a powerful motivator
@@Entropy67
I’m working solo on my projects, and I prefer it that way. I don’t want to panic over finding a co-founder-I just want to focus on building and executing my idea
Or not… it depends on the developer and the project right?
I just realized how much more youtube algo understands me than myself 😮
It's scary that it's also true for me
@@shateqyea i was stressing th other say why till now java doesn't have unions and mixins/traits
PostgreSQL can be used as a document-store with its excellent json/bson storage an query capabilities and it features a rich and extensible type system which helps modeling the problem domain and keep it consistent. You can also use languages like js, Python etc. Inside the db (but I find this not so useful) and it's pub/sub capabilities can enable realtime apps without need for constant polling. With Patroni replication and HA is easy. So postgres would be a very good choice in the long term.
Better watch out for the creeping Eveything table with a UUID PK "id" and a single jsonb column "value". I've seen a lot of javascript-oriented json data get dumped into Postgres this way. It's not a good time, especially when collections contain arrays of random elements that must be searched (of course this inevitably happens on the frontend, and becomes a gigantic source of tech debt). It's better to store data in a way that lends itself to *almost* server side rendering, making the frontend's job as simple as possible. Displaying data with a good UX is hard enough as is.
@@yurisich This is a datastore agnostic problem and will be the same with every other datastore. A single Mongodb collection, one big jsonl file. Or unnormalized data inside an relational db... Often a combination of approaches and careful data modeling is key to long term success. I used it for web-scraping and data extraction where I can dump results from the scrappers as json into specific tables and then query the data from sql and build materialized views from this data for easy and performant queries. Also I found it quite pleasant to use as an event store for event-sourcing.
Scala is not the most important factor here. He could have same results in any modern typed language. It's much more about what was said at the end. Don't accumulate technical depth, remove instead of add, chose a right tech and change it when something else does the job better.
In terms of languages. He could have similar productivity in go, dart, c#, rust and bunch more. Scala is only one option.
Thank you for this video, it is great to see the mindset of such a high level programmer like Thibaut !
If he had chosen haskell for lichess, the primeagen could not longer claim that haskell is just a white paper language :D Missed opportunities...
If he had chosen Haskell, we would probably never see Lichess.
Pandoc is written in Haskell.
postgrest is written in haskell too. tsoding has stream tools written in haskell
Also ShellCheck and Github's "semantic" tool.
Haskell being a whitepaper language is true (it was 100% just for research when it was created), but it's also gotten more and more practical with useful extensions to the language and better developer tools over the years.
A super interesting, in-depth discussion of this open source project, the most inspiring programming related video I have seen recently! I am not a chess player, so I was not too aware of lichess, but now I am very impressed. It is always nice to see what a focus on simplicity and quality and the absence of managers and investors can bring about. Lichess is a project that really deserves financial support.
Totally agree, it's such an inspiring project.
Thanks so much for these videos. They are a joy to watch :)
This is an impressive case study, super insightful!
Very interesting video. I like the dev's posts and ideology, especially about lines of code as a weight added to a plane. This video is a good source of advices for developing projects in a very small team (if not by yourself). The only thing, I watched the video on 2x cuz it was kind of slow. But in general, great video, thanks for making it!
Thanks for a great showcase of lichess. Thibault's software approach resonates with me and is a breath of fresh air.
I couldn't agree more. Guy is a humble genius, I can only wish to be more like him
A good developer writes code. A great developer removes code.
Great video as always! When I was in university, we had a class called Comparative Languages and we studied Scala as a way to learn functional programming.
That's fantastic. My university was essentially OOP from front to back. I wish I'd discovered Scala earlier
Excellent video. If I was a programming teacher in school, one lesson i would have dedicated to the themes of this video, because it's not only helps you as a programmer, but also as a person. My faith for humanity is restored. Thank you
love this video, shows large scale real-world application architecture done by one person at scale is not only possible but enjoyable, a man after my own heart
1 intelligent person vs. 138 educated people
ayo you can't just put a hot chess position on the video and cut in the middle.HOWEVER great video as always 🌹
So much value, thank you.
a very elegant architecture scala + Rust so gooooodd.....
That was an awesome mind expanding video. Thank you so much
So the 100x programmer is not a myth after all, eh? 🙂
16:30 one of the most wise sentences I have heard about coding lines.
His mindset has to be embraced by all engineers. This is awesome
this was a great video! i’d love to see more case studies like this
Good organized vid. Liked and subscribed 🎉
Amazing video!
Excellent analysis. Thank you
Amazing video. Thanks for sharing
Do more videos like this one. It's so interesting, inspiring, and useful to hear such stories
This was super interesting for me too. There's so many talented people and projects out there, I'd love to dig deep into more of them
the stack is marginal...
Been working as a developer for around 8 years but got so tired of the toxic environment it had become so swapped to something else entirely...
Seeing someone this down to earth really puts a smile on my face.
I wish this was the norm...
beautiful video man , you should keep doing this longform thing , this goes on to show that how simple software engineering still is , and we ourselves make it complicated by using every other fad in existence
4:14 come on, everyone that's not a web developer knows a bit of Java, what changed in the last 4 years of this profession, I'm flabbergasted
Temple OS Mentioned
0:10 A single-core developer ? aren't all developers single core ? I mean, they only have 1 core or head. I'm kidding.
Id love there to be a series on this. Finding projects that outpace competition bc of tech stack & caring devs vs bloated companies & tech stacks.
Nobody knows why you would need so many developers for such a site. There is much more complex software created by vastly smaller teams
As a flutter developer and a chess player, I feel ashamed that I haven't contributed to this amazing project yet!
Thanks. Never knew lichess was open source too being managed by one person. This is a focused and passionate achievement we all should be acknowledging
Amazing video, great job!
Thank you!
Why didn't he talk about kotlin, well he can't regret not having used it because it wasn't even a thing when he first started, but I think migrating from scala to kotlin is worth a considering
Rust mentioned !!
3:22 see the problem ? only 2 people, you don't need ANY managers
❤
Pastafamism is definitely the religion of the intellectually enlightened.
Very nice Video! Going to give scala a chance!
How java is not strongly typed?
Probably meant that scala has more type features
lacks algebraic data types, for example
While Java is commonly considered a strongly typed language, it's type system is (and even more so used to be) not really that strong. It still doesn't even have null safety and it's generics are quite poor. At least they finally added an equivalent to sum types in the latest version. But it's still a far cry from what you can do in Scala.
primagen will react to this soon
We know scala. But funnier is idk how many people will catch the Temple OS logo here 1:53 😂
1:50 it was not off by 30 sec as i watched
I can’t stop hearing it as leeches
amazing video
Cheers! Appreciate the comment
So scala is like a typed javascript and easier to read java smushed together into something that can run in place of javascript and in native code?
It has nothing in common with js. It's a functional-focused (but. OO-compatible) language with strong typing that runs on the JVM, the java virtual machine.
This is a great video!
Scala is the future
Such a great outtake
Nigel Shoals
Brutal mogging
FYI Java *does* have what you probably meant with enum types: have a look at sealed classes, which now also support exhaustive pattern matching; i think it was introduced in Java 17 or 21
It still doesn't have Scala's higher order types, but i'm not convinced yet that they are actually useful in a changing product
Interesting, thank you for the note. I do use sealed classes in Kotlin, although I had no idea they existed in Java. They always feel noisier than a simple union type. Good to know I still have that option
@@tom-delalande they are absolutely a ton more boilerplate laden than they are in Scala, Rust, or OCAML. It's not pleasant to use, and Java's implementation is certainly even more annoying than Kotlin's (one class per file etc).
But at least you do have the option when the situation calls for it and they're absolutely the go to choice for state machines even if a bit wordy
Higher order types are incredibly useful. I mainly use Rust these days, and really miss them.
Java definitely is finally starting to improve its type system a fair bit but that has only really happened in the past few years. And it still doesn't have null safety. It also has quite weak generics. It's still nowhere near something like Scala or Haskell.
Scala being good on large codebases. My god, i think you never worked with a team that used scala. The reason that it works for him is that only he writes the code and only he approves what code goes in. Also, the project's scala LOC is < 200k, this is what you call big? This is the size of a project that got out of the MVP phase.
I am not saying that the developer is stupid, bad or anything else. But the way you framed the video is like he used a godly stack that uses so few deps and it's so simple and bla bla bla, but if you start looking at the codebase you realise, nothing in programming is simple, and that not all that is simple is also simple to understand.
Great video.
Thank you!
How does he do iOS and Android
Flutter compiles down to both
8:20 wait what? How can postgresql do everything that MongoDB can do?
Postgresql has jsonb datatype and supports indexes for json data types.
Ok but it can perform all the type of aggregations that Mongo can?
Tims answer and Extensions, very little pg can't do