Good videos, with context.
How I program C

How I program C

Eskil Steenberg
8 HN recommenders · discussed 2017–2025
Open YouTube ↗

About this video

Eskil Steenberg's two-hour talk on his personal approach to writing C, covering code style, structure, naming, pointers and large-project organization. He warns it contains a fair bit of programming religion.

Why it appears in the archive

HN recommends it as the one long programming video worth watching, a provocative and influential take on C.

AI-generated summary and labels from the source dataset; verify important details against the video. Source & credits.

From the Hacker News discussion

yesenadam · 2021-02 · strong rec

Hi Eskil from Australia :-) I remember you posted that on the page from 40 days ago also hehe. I have too many ideas myself already, so that one wasn't so useful to me, but was interesting. However, I really liked Drama in games [0] and I seriously loved How I Program C [1]. It's been a big influence. Thank you! [0] [LINK] [1] [VIDEO]

Read original comment ↗
suprjami · 2022-12 · strong rec

[LINK] If you have lots of time: [LINK] If you can't be bothered reading a whole book: [LINK] Exercises: [LINK] and [LINK] Once you have syntax and basic algorithms down well, watch this, the only 2 hour YouTube video I'll ever recommend: [VIDEO] Both r/cprogramming and r/C_programming are active, also full of lazy students trying to get people to do their homework. If you come by, describe your problem well with code. Say you're learning for yourself, not for school. Together C & C++ is a good Discord if you prefer live chat: [LINK]

Read original comment ↗
MonkeyClub · 2022-12 · strong rec

> Once you have syntax and basic algorithms down well, watch this, the only 2 hour YouTube video I'll ever recommend: > [VIDEO] Hard +1 on this! I think Eskil Steenberg work in C is really top notch - the video is heavily recommended, as is an overview of his work in general, he does some awesome stuff with C.

Read original comment ↗
signa11 · 2017-03 · rec

this video: [VIDEO] , from a talk by eskil-steenberg titled 'how i program in c' is, imho, pretty good as well.

Read original comment ↗
quelsolaar · 2020-07 · rec

All code written in C89 Written from scratch, without any dependencies. All operating system interaction is warped and ported. FreeBSD License. -Forge: stdlib with math, text, A*, geometry math, memory debugger and much more. -Imagine: Threads, timing, setting, lib loading. -Betray: Platform layer, with plugin support, VR, Multi-touch, controllers and more. Win32 , Linux and limited MacOS support. -Relinquish: Rendering library, wrapping OpenGL supports and hides a wide range of extensions. -Seduce: 3D UI toolkit, text rendering and editing, fonts, 3D manipulators, cameras. Mouse / multi-touch / multi-user / controller support. -Testify: Networking and serialization. TCP, UDP, Files, NAT Holepunching, local/global service discovery. -Hxa: asset file format, FBX and PNG implementation. Graphics processing. -Json parser. These libraries have been used extensively in software production for all my applications including LOVE, Exo, Stellar, MoF, and Loq Airou (source included). You can find out more about these at: [LINK] . For more on my programing style, and philosophy watch this: [VIDEO]

Read original comment ↗
quelsolaar · 2021-03 · rec

As a C programmer i have two ways I go about selecting names. For anything uniqe, I use long post fix names. I think of them as a directory path to the functionality. So instead of: create_object(); delete_object(); I do: project_module_object_create(); project_module_object_delete(); I then do the same with files, so the above would probably reside in a file called: project_module_object.c This makes everything easy to find, you know where things belong and you can search for partial names to find instances of interfaces. For local variables, I have a small set of variable names that all have specific meninges like i, j, k, f, sum, found, best, length, count, that I always use in the same way. They therefore become very easy to read since I know their use. If something doesn't fit the limited set of common variables, I revert to long post fix names. A much longer explanation of how is use C that goes in to more depth about naming can be found here: [VIDEO]

Read original comment ↗
quelsolaar · 2021-04 · rec

Try watching this: [VIDEO] Its long and is filled with other stuff about C programming but it goes in to dept about how to think about pointers. Good Luck!

Read original comment ↗
59nadir · 2023-06 · rec

For what it's worth I think this is an excellent choice. Back in 2019 I was deciding whether I wanted to pursue Zig full-time and one of the upsides that I determined was that once you reach critical mass writing all of your code for tools and things in Zig you end up with things that are really exactly what you need and with a very high baseline for speed, flexibility, and so on. Right now I'm considering the same thing but with Odin and for many of the same reasons that I had for Zig; it's an excellent language to write foundational code in and once you do, you end up being able to build significantly more understandable, reliable, stable and consistent things. This, but on a company level, is a real multiplier. Once you adopt a couple of Python scripts and that's OK, you give up the possibility of wielding this sharp spear. Edit: I think "How I program C" by Eskil Steenberg is an interesting window into what you can get if you laser focus on a language and environment and allow yourself to build up a mountain of code that you dogfood: [VIDEO] At some point I will likely soft-retire and at that point it's exceedingly unlikely that I'll bother with using other people's libraries except a few key ones that I think are decent, and at that point there really is no reason I'd sit down and write these fundamentals in anything but a lower-level language. Odin, Zig or something like it would pretty much be the only thing on the table.

Read original comment ↗