Tom DelalandeThis is a case study on the Lichess product. A free and open source chess platform with over 4 million monthly active users and 1 core developer. The stack he uses is Scala, MongoDB and Snabbdom hosted on bare metal. This is an incredibly interesting project that I enjoyed studying to understand productivity.
This is a new format so I'm interest to hear your feedback. I had a lot of fun studying this project.
How 1 Software Engineer Outperforms 138 - Lichess Case StudyTom Delalande2024-09-29 | This is a case study on the Lichess product. A free and open source chess platform with over 4 million monthly active users and 1 core developer. The stack he uses is Scala, MongoDB and Snabbdom hosted on bare metal. This is an incredibly interesting project that I enjoyed studying to understand productivity.
This is a new format so I'm interest to hear your feedback. I had a lot of fun studying this project.
Timestamps 0:00 - Intro 0:29 - Story to kill retention 2:06 - Lichess vs Chess.com 3:51 - Scala 6:20 - Play Framework 7:00 - MongoDB 9:16 - Snabbdom 11:17 - Architecture 15:47 - Flutter 16:01 - Developer Mindset 18:21 - Openness 18:45 - Key Takeaways 21:51 - Lichess PatreonThe Best Terminal Shell Ever CreatedTom Delalande2024-08-31 | shell shells shell shells by the shell shoreHow Garbage Collection WorksTom Delalande2024-08-25 | This is a video about garbage collection, some information may be wrong or oversimplified. Leave your opinions and corrections below so that I can ignore them since reading comments stresses me out.
Please subscribe, as a human I have been conditioned to care about base 10 numbers and my brain will release happy chemicals when I reach the next one.
This video is for entertainment purposes only, you probably shouldn't do as I say or as I do.
I wanted to do something a little more significant than a 'Hello world' in Assembly so I decided to tackle the game of life. I took the opportunity to try and recreate some of my favourite programs in low level languages. Including a Vi clone in C and a file manager in C++.AI is more than just ChatGPTTom Delalande2024-06-02 | In my mental model of AI there are 5 levels:
Level 1: Decision tree Level 2: State machine Level 3: Mathematical algorithms Level 4: Neural networks Level 5: General Neural networks
I think we tend to focus too much on ChatGPT instead of implementing useful AI systems. AI can be refreshingly simple and to prove that I implemented a short demo for each of the mentioned levels using pure HTML, CSS and Java-script (with no dependencies).
Large Language Models (LLM) are amazing, but there is no universal solution in tech.Why YouTube has blank boxes when loadingTom Delalande2024-05-23 | I wanted to dig into why YouTube has these blank boxes when loading. It's a simple answer, but optimization is a very interesting topic. Developers use techniques like minifying, compression and caching to make the websites you use every day load faster. They also try to improve cumulative layout shift so that the experience is more pleasant.
This is a more beginner friendly video than usual, let me know what you think!Landing pages in 2024 are too animated #coding #programmingTom Delalande2024-05-23 | Landing pages these days have some crazy animations and pop in. Have as much fun as you want just please let me read the content in peaceJWTs are insecure session tokensTom Delalande2024-05-11 | I've often seen hate for JWTs online, but never really understood why they we're seen as badly designed and insecure. So I did some digging and came to my conclusion. Which is that JWTs are a good method of authentication, but bad session tokens.
Basic opaque session tokens are usually the way to go. Using stateless tokens has many added costs, while not providing that many benefits in practice.Authentication is a developer nightmareTom Delalande2024-05-04 | authn.tinyclub.io
Let's talk about authentication. I would like to show how easy it is to implement authentication with 3 different methods. Password, Oauth2 (or social login) and passkeys. They all have their benefits and drawbacks but hopefully this video is a fun way to understand how the systems powering authentication actually work.
I've also made a demo little website to help show how registration and sign in works. It's just a toy project so hopefully it doesn't break under the pressure.
Full disclosure: the demo website is hosted on the cloud. My little MacBook didn't too well with the traffic from the last video so I'm committing this cardinal sin until I upgrade my home server.The cloud is over-engineered and overpriced (no music)Tom Delalande2024-04-25 | I tried the music and the feedback is clear enough that I think it's worth uploading a version of this with no music. I'm still learning!
I'm sorry :( I really liked the riff I wrote for the intro since it has a time signature of 7/4 but I got carried away a bit...
Let's spin up a server a simpler way.I'm experimenting with some background music, let me know what you think.In this video I will be showing how to use fundamentals to spin up a server, replacing cloud providers like AWS, Google Cloud Provider and Microsoft Azure with Linux, Docker and Git. For many applications, the tools we use are grossly over-engineered. I'm trying to force myself to rethink my approach and use simpler tools. Hosting this server is part of that.The cloud is over-engineered and overpricedTom Delalande2024-04-25 | Let's spin up a server a simpler way.
I'm experimenting with some background music, let me know what you think.
In this video I will be showing how to use fundamentals to spin up a server, replacing cloud providers like AWS, Google Cloud Provider and Microsoft Azure with Linux, Docker and Git. For many applications, the tools we use are grossly over-engineered. I'm trying to force myself to rethink my approach and use simpler tools. Hosting this server is part of that.My latest weekend project. Mixing the scalability of SQL and with the easy of use of spreadsheetsTom Delalande2024-04-13 | I've been processing a lot of local CSVs lately. Often feeling like the tools I'm using don't behave quite how I would like them to.
I built a prototype of an application remedy these frustrations. And also explore some existing solutions to fix similar problem using tools like Postgres, SQLite, HTTPie, Bash and JQ.Comparing 10 programming languages. I built the same app in all of them.Tom Delalande2024-04-04 | Many modern programming languages have some great features like null safety, exhaustive switch statements, error handling, strong type systems, immutability, great tooling and good readability and write-ability.
I couldn't decide which language I preferred so I made a TCP server that does some basic file processing in all of them. Using no dependencies where applicable.
I did this using Rust, Go (or Golang), Crystal, Kotlin, Julia, Zig, Nim, Gleam, Swift and Dart.
Just for fun, I gave each language a 1 to 5 score in the categories of tooling, safety, readability and ergonomics.
Just btw this is an incredibly biased video so please don't take anything personally.How leveraging events can simplify your appTom Delalande2024-03-08 | Event sourcing is no silver bullet. But it is a match made in heaven for some domains. I also don't see much mainstream coverage of event sourcing, CQRS and domain driven design.
Thank you so much for taking the time to watch.
Timestamps
0:00 Problem space 0:40 CRUD implementation 1:12 Issues 1:48 Event sourcing 3:02 CQRS 3:34 Aggregate 4:05 Advantages 4:40 Disadvantages 5:08 ExitThe better alternative to MarkdownTom Delalande2024-03-01 | AsciiDoc (or Adoc) is a tool used to write technical documents. It is far better than the industry standard of Markdown but it is very underrated.
Timestamps: 0:00 - What is Markdown? 0:11 - The problem with Markdown 0:42 - What is AsciiDoc? 1:00 - Embedded source code 1:30 - Exporting 1:47 - Better tables 1:57 - Diagram plugins 2:17 - More featuresKotlin for Typescript developersTom Delalande2024-02-26 | Subscribe youtube.com/channel/UCYuQjtwffrSIzfswH3V24mQ?sub_confirmation=1
This video is meant for Typescript developer interested in Kotlin. I cover the syntax, tooling and create a general project. If you're on the fence about trying Kotlin, I hope that this can be helpful.
On the next step in my ever-going quest to avoid Javascript no matter the cost. I show you how easy it is to compile Kotlin code to Javascript.
0:00 Intro 0:36 Why I needed to compile Kotlin to JS 1:46 Compiling Kotlin to JS 3:52 Example of when I chose NOT to use this 4:19 HTML to Kotlin Converter Example 4:46 Final thoughtsUse this instead of HTMXTom Delalande2024-02-20 | Subscribe: youtube.com/channel/UCYuQjtwffrSIzfswH3V24mQ?sub_confirmation=1
The Kotlin server side rendering adventures continues in this latest installment. HTMX can be replaced by 1 line of Javascript, the author calls it HTMZ. This is very cool.
0:00 intro 0:18 state of web development 0:56 too BIG 1:06 htmz 1:54 converting from htmx to htmz 3:20 explanation 3:54 final thoughtsMy opinion on Pkl (Apples new configuration format)Tom Delalande2024-02-14 | Apple recently released a new configuration format called Pkl (Pickle). I migrated some configuration over from TOML and so far I really enjoy it. It works really well with Kotlin and seems like a great replacement for Json and YAML.
0:00 - What is Pkl 0:24 - Why I'm interested 1:10 - Use case 1:38 - Template example 2:21 - Configuration example 2:45 - What I preferred about TOML 3:13 - Website example 3:28 - Parsing in Kotlin 3:47 - What I don't like (additional complexity) 4:16 - Final thoughtsyou should test in productionTom Delalande2024-02-08 | A controversial developer opinion (rare I know). But I honestly believe testing in production can be a good thing.
Obviously you should always test changes locally before checking them in, and this won't work for many cases. Like any changes to builds, infra or database migration. But feature toggles are an amazing, simple and underutilized tool in software engineering.Making Poker with HTMX: Real time multiplayer using SSR with Kotlin, HTMX and TailwindTom Delalande2024-01-30 | I am continuing to explore HTMX with the Kotlin DSL for HTML. I really think this might be the only way I build websites going forward.
I'm pushing it in a weird direction today by building a server side rendered multiplayer game. I'm very happy with the result.
I enjoyed the user experience of using HTMX websocket and HTMX polling. This is a very nice developer experience that lets me build good looking websites quickly. I built this before I started using Tailwind UI but that may be something I look more into in the future.
Software engineering is completely changing and I look forward to a future where I don't have to write JavaScript. Which may be sooner than I expect -- I still need to look into KotlinJS to see what it can actually do.
0:00 - Poker demo 0:53 - Queue demo 1:07 - Explanation 3:03 - Main menu UI 3:37 - Main menu server 4:13 - Queue UI 4:29 - Queue endpoint 4:43 - Game UI 6:48 - Game model 8:00 - Game web-socket 8:44 - Actions menu 9:36 - Final thoughtsImplementing Passkeys with no dependenciesTom Delalande2024-01-27 | Passkeys (or WebAuthn) are an amazing new technology that can be used to secure for login and registration without a password. I was very interested to understand them better so I created a demo project that logs in a user using passkeys, from scratch.
I'm using Ktor HTML to render server side HTML. I create a custom HTMX style syntax to add Passkey attributes.
0:00 - Passkeys explanation 0:40 - Demo 0:51 - Authentication explanation 4:40 - Documentation 5:25 - Server side code 8:07 - Client side code 10:19 - FinWhy I enjoy writing KotlinTom Delalande2024-01-24 | I got some feedback on my video about Kotlin and HTMX from @ThePrimeTimeagen and his chat. There are many subjects I want to dig deeper into. But to start I thought it was best to go over some of Kotlin's features.Why Kotlin is the best language to use with HTMXTom Delalande2024-01-21 | I think that Kotlin is great way to build server side rendered websites with Tailwind and HTMX. This is because of it's convenient features like string template-ing, extension functions and trailing lambda functions.
I think Kotlin is a better alternative to Go Lang for building service side rendered websites because Ktor let's you create HTML without writing XML.