Two minor remarks regarding the size:
* printf() only works that well in the example due to SDCC being able to optimize it based on the argument being a simple string (no conversion specifiers) terminated by '\n'. More complex printf use will eat much more memory.
* At 34:45 Dave says "like half the memory" after writing a 904-Byte .ihx into a device with 2KW code memory, apparently equating .ihx file size in bytes with programmemory size in words. However, .ihx is not a very compact format (after all it is readable text), so that 904B .ihx will have much fewer bytes of actual data in it. And each word in the memory is 13 bits, substantially more than the 8 bits in a "standard" byte.