> My kids are all on Linux computers

That is great to hear. My kids are both on pi 4s, but we customized the Debian distribution quite a bit to optimize its hardware acceleration capabilities and to overclock the hardware as much as possible. The pi boots from a fast nvme usb drive and i/o peripherals are connected via a fast usb hub. They are cooled by the ice tower [1]. They are both using exwm [2] and do not require a mouse. They both type on plank mechanical keyboards from olkb. All of this customization they found quite exciting. Especially being able to mess with their own keyboards.

> I'm trying to wean them off iPads and consumption devices. But it feels like addictive apps can draw them back very quickly (looking at you, YouTube).

We do not own any ipads. Only desktop computers, and I own a couple of laptops, such as the librem 14 and the mnt-reform. Youtube is a bit of a problem, I agree. They need access to it for their schooling at the moment, but the use of it does need to be limited, and the content limited as well, or they will just start watching brain numbing junk. I have decided not to block anything on our network with the goal of establishing a sense of trust, but I also don't allow them to have free rein. It is an endless exercise in finding the right balance :-). To be honest, it is much more of a problem with my son, then it is with my daughter, who spends a lot of her free time drawing and writing and isn't as entertained by youtube videos.

As for teaching them to code, I have been giving them series of exercises and challenges that build up their skill with a few goals:

1. to build their own online mud (multi user dungeon)

2. to write their own compiler

3. to write their own operating system

4. to make their own computer

5. They each have come up with their own personal projects, so I tailor exercises to help them with problems that they need to solve

For our development environment, we use emacs + eglot [3], which is not surprising since the windows manager is exwm. I make them compile and debug from the command-line, because I want them to be competent with standard command-line tools. Fancy GUI-centric IDEs are distracting because all of the options are visible to them even though they lack the skill or need for such features.

I wanted this to be a happy experience, so I have never pushed them, but always challenge them to push themselves. I spend a few hours with them every weekend, then a couple of hours with them mid week to help them with challenges. But that is not how I started. I started with 1 hour first thing every morning Monday to Friday to teach them the basics and get them inspired. If they seemed drained, or I sensed that they needed a break, I just let them have a day off.

We also play erion mud [3] and sometimes hexonyx [4] because I wanted them to understand what a mud is all about and to build up interest. I am really into text-based games, so not surprisingly we play nethack (rogue like) [5]. I am also into interactive fiction and started them off on Adventure [6]. If you are interested in interactive fiction, then you might enjoy reading "Twisty Little Passages - an approach to interactive fiction" by Nick Montfort [7].

Full disclosure, I believe that the main reason I am able to pull this all off is that my wife and I home-school our children. It is a challenge though. Very few families where we are from are similar to us in our philosophy of technology and education.

[1] https://www.amazon.com/GeeekPi-Raspberry-Cooling-Cooler-Heat...

[2] https://github.com/emacs-exwm/exwm

[3] https://github.com/joaotavora/eglot

[4] https://www.erionmud.com/

[5] https://mud.hexonyx.com/

[6] https://www.nethack.org/

[7] https://quuxplusone.github.io/Advent/play.html

[8] https://www.amazon.com/Twisty-Little-Passages-Approach-Inter...