< danieliu.xyz

I want to learn...


list of resources for a variety of topics - collected from my experiences

Programming Languages

C

Jacob Sorber's Youtube Channel - entire youtube channel dedicated to a variety of c concepts

C++

Cherno's cpp series - youtube playlist covering a bunch of cpp concepts, use this as more of a reference than a guide

cplusplus.com - my favourite site for cpp documentation

x86 assembly

Davy Wybiral - brief youtube playlist with some assembly programming basics, should get you started

Haskell

Learn YOu a Haskell for Great Good! - very detailed and well explained book on haskell

Haskell for Imperative Programmers series - youtube series on various haskell topics. goes very in-depth. might be better to use this one as a reference instead of watching every single video

Rust

rust has a bit of a learning curve, especially if you are not familiar with cpp.

Let's Get Rusty series - youtube playlist on a whole bunch of haskell concepts

r4cppp: rust for C++ programmers - exactly what it sounds like. if you are familiar with cpp, this will be a very great help

Rendering Libraries

OpenGL

Learn about OpenGL rendering concepts like primitives (VBs, IBs, VAOs), shaders (lighting, textures, maps), and some linear algebra concepts. Most resources use cpp.

learnopengl.com - solid website that walks you through OpenGL basics. you can easily get by by only following this

Cherno OpenGL series - youtube playlist tutorial about various OpenGL concepts. also focuses on optimizations and does some things in more efficient ways than learnopengl.com

docs.gl - OpenGL documentation (use as a reference)

Ncurses

Primarily focus on c.

NCURSES HOWTO - basic website based guide to walk through Ncurses basics. also covers a couple of ncurses libraries like the panel, menu and form libraries. also includes a couple of example projects

Casual Coder Ncurses series - youtube playlist that covers some ncurses fundamentals. this is good if you like video tutorials over text. also explains a couple of important concepts in good depth.

ncurses 3x - documentation for ncurses library (use as reference, and also in depth reading)

Xlib (rust)

Learn xlib programming with rust (the language i chose). Good luck with this one - xlib is huge and documentation is sparse. I had to scour the source code as documentation. To get started, you need rust bindings for xlib, i ended up using x11rb. My best advice for this is to read the source code for other projects that use x11rb to figure out what the heck is going on. It may perhaps be better to learn xlib first using c as there seems to be more resources.

x11rb tutorial - decent walkthrough of x11 basics. nothing much on extensions like render or xkb though

XFT but for XCB - font rendering concepts

Projects

Window Manager

Create a window manager using rust and the x11rb crate.

xplain - series of in depth articles on how the X11 protocol works

How X Window Managers Work, And How To Write One - specifics on how a window manager works, and some cpp code to along with it. note that this tutorial uses Xlib whereas x11rb is based on xcb

x11rb simple window manager - an example project provided by x11rb