Hey. To be clear, I said 'relative' newbie, not 'complete'! XD
lol
On a more serious note it is always a guess how far along someone actually is being a newbie as it tends to vary a lot. That and the type of coder you actually are.
Oof. That's going to take a few reads before I can wrap my head around it. There's a lot of stuff in there I'm not familiar with.
I understand. It is a lot to take in in case not being familiar with it. Don't worry about it too much.
Just for reference:
Advanced records aka Extended records and
record operatorsIn case you are familiar with OOP (old style objects, modern objects/classes) then things are a lot easier to grasp as some of the features you are able to find back in advanced records.
I am at least pretending to maintain good coding practices. 
Indeed. Very good of you to do so. It is how I myself approach things as well. At least it prevents my (working) code from turning into a (not working and/or garbled) mess.
From that I also know that taking smaller steps is sometimes requires to wrap your head around some concepts. You would have to figure out for yourself in what time-frame/pace you would like to advance. Too quick will often lead to pitfalls simply because of lacking experience/knowledge and too slow will eventually be able to put you to sleep (which also and often is prone to errors).
In case of questions just ask (as you did).
EDIT: What's the difference between a 'packed' array and a regular one? And why must Width*Height be less than 128?
Regarding the former:
It is (bad ?) habit of mine. For the theory behind it see
arrays for the definition and for how packed actually works see
Structured types.
In short it tries to make sure that the data in memory is aligned without any gaps.
Regarding the latter:
The data stored at the location(s) with those dimensions is a character. The stored character starts at space and is increased for each iteration.
Because it is an ASCII character, as soon as the character is increased over 128 times it will not be a valid ASCII character anymore and will eventually output garbage on the terminal.
It is a (deliberate programmed/flawed) limitation of the example.
One of the reasons to do so is that I wanted to proof that once the data is stored inside a single array that the data stored in memory is a continuous stream of data. That way it is for example possible to write out a single line of text in one go, instead of outputting that text one character at a time.
Hopefully that is able to clear up a few things, if not then just let know.