there are three kinds of programming tutorials:

  • “look man we both know you don’t wanna learn this shit so just install 30 GB of random frameworks and here’s the code to copy-paste if you wanna make a basic game and feel like you accomplished something. I’m not gonna explain how any of this works because nobody cares as long as your little guy jumps when you press spacebar”
  • “an endofunctor is a type of monoid which is a subcategory of monad that is variadic over the set of all impure lambdas - therefore all possible expressions in this language can be modeled after- wait where are you going?”
  • “this is called a variable! a variable is a little friend that can hold onto something called a value! variables love grabbing values and they can even carry them into functions! say hi, variable!”
@kasdeya honestly, i kind of like that third kind of tutorial, but they never seem to go on long enough to cover more advanced concepts in that same voice
@smolcasm I actually really do too lol. the cutesy comparisons hold my interest and help me understand things much better. I once found a FORTH tutorial that anthropomorphized all of the different FORTH keywords as different characters and machines and it was super cute

@kasdeya @smolcasm
I learned to program in BASIC from a book that depicted the 8-bit computer as a cartoon character
https://archive.org/details/getting-started-with-color-basic-1984-edition

This inspired Taylor and Amy to create a physical mascot
https://youtu.be/lsOtBIVRnyE

Getting Started With Color Basic ( 1984 Edition) : Radio Shack : Free Download, Borrow, and Streaming : Internet Archive

1984 2nd Edition of the manual describing (Non-Extended) Color Basic for the Tandy Color Computer 2. Includes additional chapters on hi-resolution graphics and...

Internet Archive
@smolcasm @kasdeya "say hi monad! can you show us how you do the bind operation?"
Learn You a Haskell for Great Good!

It's all in the name: Learn You a Haskell for Great Good! is a hilarious, illustrated guide to this complex functional language. Expand your programming horizons, tackle old problems in a new way, and laugh till it hurts as you learn about monads, monoids, modules, and more!

@shtrom @kasdeya @smolcasm i read some of it when i started!
@smolcasm @kasdeya why the lucky stiff’s Poignant Guide to Ruby came close IMO.
@mdreid @smolcasm @kasdeya we need weird as well as cute. he was the picasso of programming tutorials. we were so, well, lucky.

@kasdeya we have seen tutorials that clearly lay out "this will teach X, but not Y, and you are expected to already know Z. If you don't know Z, here are some resources to go start with. If you're finished learning X and need Y, here's where I'd go next"

. . . unfortunately we've seen all of like 2 that considered this, there really need to be more

@tempest I would love to see this more often tbh. I think it’s really important to consider what kind of audience you’re writing a tutorial for, and explain that at the start. it helps the reader a lot, but I think it probably also helps the writer too - so they explicitly know what audience they’re writing for
@kasdeya
Mainly this + dating and version mapping, boldly right at the top!
@tempest

@kasdeya Brodie, "Starting FORTH", 1st ed, 1981 is a tour de force of the third category.

There's now a PDF:

https://www.forth.com/wp-content/uploads/2018/01/Starting-FORTH.pdf

(Edit. The first edition describes an early version of FORTH. But later editions which include the language's development do a worse job of exposition.)

@kasdeya ouch. no, yeah, that checks out. ouch.
@kasdeya oh wow, this just clarified a bunch of the "I use AI for programming" mentality for me.
@danlyke @kasdeya
People new to programming treat any confusing computer science jargon (WTF is a monad?) in the tutorial like a dangerous rabbit hole or distracting side quest that risks derailing them from what they wanted to accomplish—"I just wanna make a cool 3D interactive animation for my twitch stream/social media" so turn to AI then hit the discord for help when their slop doesn't run. The discord regulars don't take kindly to this, refuse to help, and so get accused of "gatekeeping"
@kasdeya Thanks, I hate all of them. 😂

@kasdeya

#3 is the entire "head first" series, and my #ADHD brain is totally here for that.

SQUIRREL!!!

@kasdeya
Hi variable! ❤️
@kasdeya 3 makes me feel like this is why people don't get pointers…

t. reads manuals instead of tutorials
@lanodan @kasdeya i start with the cute tutorial, and then at some point i have the manual open too and read them both at the same time…
@fishidwardrobe @lanodan @kasdeya ideally the tutorial will provide relevant references to the manual
@6d03 @lanodan @kasdeya i love it when they do that. i end up with two dozen tabs open
@kasdeya I wonder where the NeHe tutorials fall in, as in here's a complete program in snippets and I'll explain each snippet, better pay attention..

@kasdeya

I was learning JavaScript and reference was made to an iterator, without any explanation as to what that meant. So I looked it up. The definitions I found were all some variety of "an iterator is something you iterate over." OK thanks. So much clearer now.

I'll take a more adult version of option three.

@kasdeya Which is why most people are afraid of programming and/or see programmers as condescending assholes.
@kasdeya Especially learning a functional language exposes you to the second one. "I want to learn Haskell!" "OK, start with understanding this academic PhD paper…"
@kasdeya Isn't there a fourth one where the person is figuring things out and building the thing as they go? It can be very good or bad depending, amongst other things, on how honest they are about it. It also often abruptly ends after a few chapters/episodes without any explanation.
@ciourte @kasdeya Oh dear, now I feel seen...
@kasdeya if you want me to actually try learning a programming language imma need a tutorial that frames it in terms of casting magic spells cause as far as I'm concerned these are magic incantations
@elexia there’s a Minecraft mod called Trickster that is literally “what if casting magic spells was a type of programming?” and it honestly fits so well lol
@kasdeya @elexia oh hey, i remember playing with this during (if i remember correctly) the blanketcon 2025 mod fest! was a cool mod :3
@kasdeya in these days there’s also a fourth one:
„Use ClaudeOG, Opus and SonettGPT agents to vibecode the first 10 million LoC, the resulting abomination will then refactor and maintain itself, reaching generic singularity within the next three weeks“

@kasdeya There are exceptions, of course. The #Rust book and tutorials are fabulous.

Ultimately though tutorials are intentionally stupid; if you can't read the manual, the best we can do for you is patronize you into thinking you can be a programmer, without reading the manual.

@khleedril @kasdeya
And it is at that point they go ask ChatGPT to generate the code. Who has time to consult a manual or be patronised by a tutorial when they've got a social media channel demanding regular content uploads?

@kasdeya

Say hello my little variable!!!

@raymierussell @kasdeya
That brings back memories.

I feel like I'm 9 years old again reading this

@kasdeya i've been a professional programmer for forty years and i'll take door three, please. hello, little variable! nice to meet you!
@kasdeya recently found https://learnxinyminutes.com/lua/ which doesn't fit really, and is pretty neat :-)
Learn Lua in Y Minutes

@kasdeya Every time I've tried to learn, it's ended up being type 2. My brain does not enjoy type 2.

@kasdeya You nailed it.

There is one more though: "In this series of tutorials I will teach you everything you need to know to make a metroidvania." -- Part 3 of 20, on hiatus for 5 years.

@kasdeya
I suspect good tutorials
a. Pitch to the intended audience at an appropriate level
b. Pick ONE intended audience
c. Pick ONE concept/goal to use the tutorial to explain
d. Have a reference to the appropriate docs at the top
e. Put installing the product details in a separate tutorial and make it a link in the start of the main tutorial (eg make installing Nginx a separate tutorial from how to setup Nginx as a reverse proxy)
f. Make it obvious what version this applies to + a date
g. If there are different alternatives for parts of the process, then acknowledge that and perhaps describe how and why to choose and even have sub tutorials for not just your favourite. Eg there are many Web servers you could install.

Could go on, no doubt...

@kasdeya I learned the basics from this:
@kasdeya the third category reminds me of why's poignant guide to ruby which is one of the few books on a programming language that I read entirely
@kasdeya 4th: https://sourceforge.net/projects/graphics-programming-bb.mirror/
Or old-school 6502 assembly books. Toss you in the deep end, you learn what you need or drown.
#gamedev
Graphics Programming Black Book

Download Graphics Programming Black Book for free. Markdown source for Michael Abrash's Graphics Programming Black Book. This is the source for an ebook version of Michael Abrash's Black Book of Graphics Programming (Special Edition), originally published in 1997 and released online for free in 2001. Reproduced with blessing of Michael Abrash, converted and maintained by James Gregory.

SourceForge
@kasdeya
You forgot the very common hybrid of the last two...
@[email protected] i love when im trying to go for the second one but i end up with the third for 30 minutes as they explain how to setup the environment. meanwhile the one thing i wanted to learn from the tutorial is at like 33 minutes 42 seconds in

@kasdeya Which makes you realize the gold you've struck when you find a tutorial that takes the best of all 3 and dumps the worst parts of them.

Such a small fraction it would be dishonest to not call them outliers.

@kasdeya I usually run across a fourth kind: "Get started by installing this package and running this command..." which turns out to be six weeks out of date, NOBODY uses that package any more, if you try running those commands you'll just get an obscure error. The forums are full of people reporting that error. One in ten posts get a reply saying "that doesn't work any more". One in fifty has a reply of "Use this other thing instead", without explaining how.
@kasdeya Hi Variable!! 👋
@kasdeya and they all drive me insane!! Sometimes i know the basics i just dont feel like spending another 5 hours in the documentation
@kasdeya I'm gonna have to go with Door #3, Monty.
@kasdeya I have seen others, but neither many nor were they all so much better than your archetypes. But yours are much funnier.