Resource & Utility Suggestions for a New Programmer [Resolved]

Indeed, I am somewhat surprised at that.

If the same is true for GBAs then I may seek a replacement battery cover.
(Though whether or not I’ll find one in platinum remains to be seen.)

I have other thoughts on the Game Boy related commentary,
but if I start replying to that we’ll inevitably end up going off topic.
It would be better to discuss it in a PM or a new thread in the off-topic section.

That’s good. Planning ahead is an underrated skill.
(Especially planning for worst-case scenarios.)

An admirable attitude.

I take a similar stance, though from the other side of the fence.
I prefer to assume less knowledge and risk ‘insulting someone’s intelligence’ by stating the ‘obvious’ than to assume someone already knows something and run the risk of someone feeling embarrassed because they don’t know something.

There’s a set of words I never thought I’d see together.

I’d recommend starting with that one since it’s probably the easier of the two to get into a ‘completed’ state.

They don’t have to be, but it helps in some cases.
Different drawing functions handle sprites/bitmaps differently,
and some assume that the sprite’s height is a multiple of 8 because of how the data format works.

The Arduboy’s screen has quite an odd image format where each 8-bit byte represents a vertical column of 8 pixels. The full screen image is then made of 4 rows 8 rows of 128x8-bit columns.

122aae02ad9e5ec21319b177889378bb2f73c03a

Images are stored in the same format to save processing power and memory (because drawing them in the native format uses fewer CPU instructions), but some drawing functions support means of ignoring the excess pixel data, and drawing functions that support transparency make it easy to make the excess transparent.

That wouldn’t have been a catastrophe because the language rules still apply.

Not having access to the standard library is an unusual situation, but it’s perfectly possible to live without it.

Parts of it wouldn’t be useful anyway.

For example, many of the data structures rely on dynamic memory allocation, which is only practical when a decent amount of memory is available.
(I’d say you’d probably need RAM on the order of megabytes for dynamic allocation to be used in a reasonable way, though it can be used on smaller amounts if it’s used very sparingly.)

If you plan to take up desktop programming at any point then I’d suggest learning about the standard library anyway, and learning C++ through ‘normal channels’.

My stance on books is complicated.

Some people swear by them, but I haven’t read that many actual programming books. Not so much because I’ve avoided them, but because that’s just how things panned out. I’ve always been able to find enough information online that I’ve never really felt inclined to buy a book, particularly as I don’t really have anywhere to keep them and because they tend to be quite expensive.

Personally speaking I’ve read precisely one physical C++ book, which wasn’t very notable. Everything else I’ve learnt from online resources and practice, or by applying prior knowledge acquired from learning other languages.
(C++ was technically my fourth programming language.)

If you do, I’d suggest not publishing them until later in the game, and to have them proofread first.
Sometimes you may think you’ve understood something only to later realise you didn’t have the full picture, and that might be reflected in what you write in a tutorial.

That I’m not surprised about.

Writing a whole program in assembly isn’t impossible, it’s just horribly tedious and somewhat error prone.

The Game Boy’s CPU was a modifed Z80 and people had been writing Z80 code for quite a while prior to that so I expect it wasn’t hard to find people with the necessary experience.

As far as I’m aware, some Game Boy Advance games were also written in assembly (or at least partly in assembly).
(I think at least parts of Pokemon and Mother 3 were from what I know.)

To make a somewhat limited analogy:
Writing a whole program in assembly is like trying to mow the lawn with a pair of nail scissors.
Programming with C is like trying to mow the lawn with an old-fashioned non-motorised push mower that falls apart if you mishandle it.
Programming with C++ is like programming with a properly motorised mower,
but there’s several extra control panels that only power users understand and the manual is very thick.

If you need any more information about licences, feel free to ask.


By the way, you can reply to more than one message by quoting someone’s post. On desktop you can just highlight a selection of text and a ‘quote’ button should appear next to it. I’m not sure if the same applies to smartphones - I don’t actually own a smartphone.

You can also edit your existing comments to add more information.

If you haven’t read it yet, have a read of this:


Ouch.

Yes, fortunately it can.

Personally I am of the opinion that a proper keyboard is better for programming with than a touchscreen keyboard.

You can test compiled code on ProjectABE if you don’t want to be trying to upload to the Arduboy whilst on-the-go.

However, actually compiling the code is the biggest issue.
Personally I’m not aware of any way to compile Arduino code on an Android device.
(As mentioned before, I don’t actually own a smartphone.)
I expect it’s possible assuming avr-gcc has been ported to Android, but I don’t know any specifics.

Assuming a Surface 3 has an x86 CPU and runs more or less like standard Windows then that should be easier to get up and running.

I think the time constraints are going to be your biggest issue (there’s only so much you can get done in an hour), hence you’ll probably need to plan what you intend to read about and learn about beforehand. I.e. have an actual lesson plan.

Either that or try to do the majority of what you need to do on the weekends and do things like sprite editing and planning on your bus rides.


It’s possible but you have to be careful about how it’s done.

By default the game will probably be running 60 updates per second, which is faster than typical human reaction times, so you’re likely to register a single button press before the player has managed to press both buttons.

2 Likes

Minor correction: 8 rows.

But because of a lack of safety guards, it’s possible to cut off your foot if you’re not careful! :wink:

Did you not see my previous mention of ArduinoDroid and the reply? I know you usually read all new posts in a topic before replying, so your comment is a bit perplexing.

You also have to consider, due to the rapid nature and control of some games, the likelihood of pressing the two buttons simultaneously during normal play.

1 Like

Indeed, it’s 8 rows, not 4.

(There’s a very good reason for my mistake, but I won’t go into detail because it may draw attention to something I don’t wish to draw attention to at the moment. I’ll just say that in my head I was thinking 32 instead of 64.)

There are certainly more safety guards than C or assembly offer at least (e.g. no implicit conversion from void *, C++-style casts rather than C-style casts).

There’s also the tools available to build even better safety guards (e.g. enum class rather than plain enum, explicit, const-correct member functions).

Indeed I did not. It looks like I missed the last 4 posts prior to my reply.
I’m not sure whether it was a browser glitch or whether I just didn’t notice that there were more replies.

That said, I still can’t comment on whether it works or not or what it would entail, so I’d have nothing to add anyway.

Not necessarily, it depends how long the reply is likely to be, how much time I have to write a reply and what else I’m doing at the time.

Indeed, though in the case of an RPG I’d expect this is less of an issue.
That might be cognitive bias though - when I think of an RPG, especially with regard to the Game Boy, I tend to think of something like Pokemon or Mother 3.

1 Like

I don’t have enough context to understand this in its entirety. I will spare you from having to explain and remember this when I get stuck getting the results I want. Once I screwed things up, I will ask you with more specific questions. I think I get it enough to know what to do when things go wrong. We’ll see.

I think I have an on-topic off-topic thread I could start. I will also PM as well once I get through all the replies.

Not only can you get a new GBA battery cover (original, SP, and Micro), you can get a whole new shell in what ever color you like with whatever button colors you like. I would say the scene is most active on GBA. You can even make the buttons light up. That in of itself makes me wonder if I can implement mood lighting into some of the games for Arduboy.

I am aware that with all my planning, something is bound to go wrong. I just have to cross those bridges as they happen. I can’t exactly predict which parts I will get stuck on until I am stuck. I am pretty anti-social media so it has been refreshing to see how positive and realistic everyone is about information.

On the survival horror autobiographical RPG reference, here is some context: I used to work at GW Exotic Animal Memorial Park for 3-4 months. It was ran by Joe Exotic. The same Joe Exotic of Tiger King on Netflix. Life is going down a weird path as a result. I’ve long decided I was making an autobiographical RPG before this Netflix thing. Now, I am even more compelled to see it through. My life story will be episodic and be centered around a specific game play mechanic for each episode due to space constraints. It will be an exercise in show, do not tell with space limitations. I have a lot to say and I have been feeling bold about it.

What I will likely do is work on 2-3 games at once. 1) My life story RPG. 2) Yoshi’s Cookie clone. 3) Animated name tag for work.

I will likely jump around from project to project if I get stuck on one. I do the same for video games. I usually have 2-3 games I am playing. If I get pi***d off at one game, I work on a different one instead.

I have seen enough of Retro Game Mechanics Explained on YouTube to have a general idea about what is being said about the sprite data and accompanying graphic. I could certainly comprehend this better, so I may have more questions later.

I used to be really into books, but here lately I feel like I have been able to streamline a lot of what I learn via YouTube videos. If I do get books, I try to get them on Kindle. I don’t have a Kindle itself, but I have eInk Android devices that can install Kindle including an color eInk smartphone. It’s amazing for seeing text. I used the pandemic money for equipment such as this to achieve bigger goals. I know some people wasted it, but some tried to put it to good use.

I didn’t know some GBA games were written in Assembly. If I were to try to learn Assembly, I would do so with a 32kb game, not something much larger. I am taking a guess here and assuming there is less than 32kb available for game data for built in libraries (if I am using the terminology correctly). I notice some games require a button be held when turning on (like UP). I understand the reason for this is because they replaced the default libraries with custom libraries to run the game how they want??? Good analogy on the different types of coding. I don’t have enough personal experience to confirm, but that seems to be the best way to put what I’ve heard so far.

I have been wondering how you have been quoting me. I am socially awkward with social networking. I have avoided it like the plague. I will experiment with what you mentioned on next time I reply.

I do have a Type Cover for the Surface 3, but sprawling it out on my lap on the bus just feels stupid and cramped. I also have a one handed Tap Strap 2 keyboard. It is great, I love it for typing. I don’t think it would be good for coding because of the special characters used on a regular basis. I have deposited money on my Robinhood card to get a BlackBerry Priv. I had one before. I love the capacitive scrolling keypad and physical buttons. I think it will suit the bus ride. Sadly, Robinhood deposits are slow. It will show up in my account Oct 13. I will place the order and will have to wait for shipping.

I appreciate your advice on the 60 updates per second. I will keep that in mind. I am already imagining functions that may allow that to work based on my current understanding.

I did download ArduinoDroid on my HiSense A5 Pro CC color eInk smartphone. Sadly, my device is just Android and lacks Google Play services, which caused issues downloading some libraries (but not all, oddly). I am purchasing a BlackBerry Priv on October 13. It will be my BlackBerry branded Android phone with a Windows Phone launcher and Apple Music. I already feel proud and it’s not even here. Truly, a brand agnostic product. :wink:

Due to the nature of the autobiographical RPG game I have planned, I think it will work if done right because it will be more of a mystery/puzzle box type games. There won’t be active hazards unless you are walking in the bad part of town that is occupied by vagrants who will cut you for cigarette money. This might be a problem for the Yoshi’s Cookie clone. I will just have to experiment and see.

Maybe there is a browser glitch. I often see one comment, then later see a whole bunch of comments that I should have gotten BEFORE the one I actually got.

Yeah, in my RPG - like you said - it will be a slower pace. It’s about solving pickles that I need to get out of due to external circumstances.

The Arduboy does have an LED that can be set to emit different colours of light, though I wouldn’t really say it works as ‘mood lighting’ as such.

Personally I don’t really consider forums to be ‘social media’.

By the dictionary definition they most likely are classified as social media,
but they operate very differently to the kind of websites people usually mean when they say ‘social media’.
(E.g. When was the last time a forum got mentioned on the news? When was the last time a head of state had a well-publicised forum account?)

Forums also tend to be more focused on a particular topic of interest rather than being focused on the details of individual people.

That all said, this also happens to be a particularly good forum with lots of helpful users. Some forums aren’t quite as good.

I am peripherally aware of the documentary but have not watched it.

In that case, if you’re struggling for space at any point you may be able to split it into several different ‘games’ that are part of a series.
It’s a tad impractical from a user’s point of view, but it’s been done before with reasonable success.

I would advise starting on the simpler games (animated name tag, cookie clone) and working your way up to the harder (cookie clone, RPG), simply for the sake of making it easier to develop skills and understanding. If you jump in at the deep end you’ll almost certainly run into problems that you’re not yet equipped to handle, whereas if you tackle the simpler problems first you should be better equipped to pick apart the more complex problems that arise later.

I just had a quick skim.
Depending on which videos you looked at some of it may be useful.

The most useful skills (for doing low-level programming) however are simply knowing how bits and bytes work, understanding binary and hexadecimal and in the Arduboy’s case understanding the different types of memory.

The Arduboy is quite a different device to older consoles so a lot of the glitche and gimmicks you’d expect to find in e.g. a NES or Game Boy game don’t apply to the Arduboy because (for example) there’s no PPU, there’s no scanlines to worry about, and so forth.

The actual document format is probably more important.
E.g. if it’s .epub or .pdf you’ll be able to read the book on many different systems, whereas if it’s in Amazon’s proprietary .azw format then you may have trouble using them on other devices.

Most were probably written in C or possibly C++ (though compilers weren’t as good back then), and it’s unlikely that many (if any) were written entirely in assembly, but a fair chunk probably had some specific functions written in assembly.

(There’s no need to capitalise ‘assembly’ by the way, it’s not a proper noun, it’s more of a classification of languages. Every CPU has a specific assembly language, and some even have several variants.)

Sort of.

There’s 32KB of ‘progmem’. You can think of it as ROM, although it is actually writeable, hence how you’re able to upload new games to the Arduboy.

There’s a number of reasons why it’s not practical to try to write to it from game code but I won’t bore you with the ins and outs of it unless you’re particularly interested. The important thing is that for all intents and purposes it’s read-only while the game is running.

4KB is reserved for the bootloader, which is the part that actually handles the process of overwriting the other 28KB when you upload a new game and the communication with a computer during that process.

(It also has other features available as part of the communication protocol, but those aren’t often used and require a computer program that is aware of those features and how to use them.)

That means 28KB is technically yours to use as you see fit, but naturally some of that has to be used by any libraries you use, such as the Arduboy2 library.
If you don’t actually use a function or a block of data (be it directly or indirectly) then that function or data won’t be included in the compiled output.

It’s probably possible to save space by using more bespoke code than what a library offers, but generally you’ll be hard pressed to outdo the Arduboy2 library for most things because a lot of thought and testing has gone into making sure the facilities it offers are well balanced.

I’d need more specific examples to be able to provide a more useful answer, but I expect you might be thinking of some of the cases where the USB code has been removed, which disables uploading via the normal means and requires the user to perform a particular procedure (usually holding a particular button at startup - I forget which) to be able to upload a new program.

(Generally we discourage removing the USB code unless absolutely necessary because there’s been a lot of cases where someone hasn’t read the specific instructions for whatever reason and has mistakenly thought their Arduboy isn’t working properly.)

The sudden thought that the characters we programmers use on a regular basis are considered ‘special’ to non-programmers is quite amusing.

I wouldn’t really consider a character ‘special’ unless it’s not found on a standard qwerty keyboard, or perhaps outside the Unicode basic multilingual plane (e.g. Cuneiform).

Reminds me of the Nintendo Power Glove.

If it were configurable you might be able to make it easier to gesture the necessary characters.

To be honest though I’d seriously consider giving a keyboard a go. Even if you have to keep your arms tucked in it’s still likely to be faster and easier to use than most alternatives, especially if you learn the necessary keyboard shortcuts for your text editor. Your busses are likely to be different to the ones I’m used to though, so maybe there are factors I’m unaware of.

I’m also completely biased though. Personally I’m of the opinion that traditional computers and laptops are still miles better than all the recent smartphone and tablet technology floating around, both in terms of hardware and software.

It certainly looks more usable than the Goa’uld hand device,
but I would have thought buttons that small would slow you down.

(I’m thinking a lot about speed because as you say you only have so much time to spare.)

2 Likes

If that’s a question asking how you add a quote from a previous post, as I’ve done with “I have been wondering how you have been quoting me.” above, you do it by selecting the text you want to quote (as you would to do a copy/paste). A " Quote box will appear, which you click on to start a new post with the quote or to add it to a post you’re already editing.

Apparently the shoe is on the other foot today.

(Granted my ‘highlight a selection of text’ could have been clearer I suppose.)

I admit, I thought you had mentioned about quoting but then assumed it must have been in another topic (without going back and re-reading this topic). You posted about it 2 days ago but the question was asked 15 hours ago (relative to this post), so I guess @PhoenixDowner didn’t see it.

The Arduboy does have an LED that can be set to emit different colours of light, though I wouldn’t really say it works as ‘mood lighting’ as such.

Considering the case of the Arduboy is clear, it light ups nearly the whole case. This is particularly true when the light is on consistently instead of flashing. I was noticing this while playing around with the Arduboy. It even lights up the screen a bit. I bet I could do things like flash red and blue for when a cop car passed by in a game, or have it glow consistently red when the environment is around neon lights. I don’t know. Even if it doesn’t work, I am sure I will have fun goofing around with it.

Personally I don’t really consider forums to be ‘social media’.

It’s that Internet toxicity that causes me to lump all online socialization into social media - including forums. Your points are valid. No argument. I have had surprisingly horrible experiences in Tamagotchi message boards, for example.

I am peripherally aware of the documentary but have not watched it.

Honestly, I haven’t watched it myself because it’s a bit of a trigger for me. I will need to force myself to watch it at some point.

I would advise starting on the simpler games (animated name tag, cookie clone) and working your way up to the harder (cookie clone, RPG), simply for the sake of making it easier to develop skills and understanding.

Without a doubt. With that said, I may even get frustrated with the Cookie clone and need something else to work on. Nothing set in stone. I just decided in advanced to be fluid based on my mood so I don’t frustrate myself while learning something I want to do.

The Arduboy is quite a different device to older consoles so a lot of the glitche and gimmicks you’d expect to find in e.g. a NES or Game Boy game don’t apply to the Arduboy because (for example) there’s no PPU, there’s no scanlines to worry about, and so forth.

This is absolutely true. I can certainly see that already without jumping in. With that said, Retro Game Mechanics Explained gave me a starting point to jump off from so I am not starting completely from scratch. I get the most basic fundamentals, but I know I will have to learn more.

Generally we discourage removing the USB code unless absolutely necessary because there’s been a lot of cases where someone hasn’t read the specific instructions for whatever reason and has mistakenly thought their Arduboy isn’t working properly.

I plan on adhering to this very religiously. Considering my end goal RPG will likely be episodic, I want to be certain that casual users won’t think their little game system is broken. I will actually be launching a free ad campaign for Arduboy at an event center I work at to be sure people have the system in their hands before I release my game.

The sudden thought that the characters we programmers use on a regular basis are considered ‘special’ to non-programmers is quite amusing.

My typing background is largely in transcribing. Any character that isn’t alpha-numeric is considered a special character.

If it were configurable you might be able to make it easier to gesture the necessary characters.

It is configurable. I totally forgot about that. I don’t know how and never bothered with that. Still, it totally does do special configurations. The Tap Strap 2 keyboard has been great while working during a lunch break. I can eat with one hand and type with another.

certainly looks more usable than the Goa’uld hand device,
but I would have thought buttons that small would slow you down.

I type 65 WPM on just about any BlackBerry and 110 WPM on a quality keyboard (like mechanical, optical, or buckling switch). If I gave you a BlackBerry now to replace your virtual keyboard phone, you’d have a hard time. In a week or two, I bet you’d be aces at typing on it. When it comes to so much time to spare, that includes getting out the tablet. You are generally right, but I can drop a BlackBerry Priv in my pocket when the bus come, pay the fare, get on, sit down, pop back out for programming. Because of the size, I feel like I am juggling larger devices on the bus - especially when there is standing room only on the bus. My breaks at work at about the same. The minutes go by quick. I currently have a BlackBerry Passport right now, but I need Google Play Services for the Arduino Droid app to work right. The Priv should fix this. If I had more money I would probably do the KeyOne or Key2. I am aware the Priv is slow as far as RAM and processing, but it should be good enough for what I am doing now. Maybe I can upgrade when the 2021 line of BlackBerry’s come out.

P.S. I got the Game Boy thread started.

I admit, I thought you had mentioned about quoting but then assumed it must have been in another topic (without going back and re-reading this topic). You posted about it 2 days ago but the question was asked 15 hours ago (relative to this post), so I guess @PhoenixDowner didn’t see it.

I missed a lot of messages at first, especially on the days I didn’t have time to pop in here. I did notice a few days where I would only see the most recent message, and then a few days later I would see messages that appeared before the most recent one. I don’t know if it’s me being a noob or a glitch. You may have noticed me apologizing for not seeing some of the messages.

1 Like

This is making a lot more sense today. I must have gotten enough sleep. Haha.

2 Likes

I have seen this diagram many, many times before… it is really clear and a great visual diagram.

2 Likes

I get the binary plain as day. I’ve goofed enough with binary for no apparent reason over the years that I get that completely. I only sort of get the hexadecimal. I suppose that will give me a good indication of what I will be having troubles with. In the meantime, I am not even sure what questions to ask. It looks like the binary reads left right, top down. The hex seems to read like Japanese or something. Top down, then left to right.

No, the binary numbers read top / down for one byte (8 Bits) then left / right.

I’m reasonably convinced the internet was packed full of that even before social networks were invented.

(Drawing a distinction between the early communication methods like forums, IRC and usenet groups and the later sites that came to be called ‘social networks’ - you know the ones, the ones owned by the big tech giants that it’s impossible to escape from.)

As ridiculous as it sounds I can believe it.

Though sometimes it’s hard to tell how serious people are being.
Some places just have a weird culture where people are expected to insult each other on a regular basis and brush it off.

You probably will get frustrated at some point. Possibly multiple times. That’s normal

There’s a good quote about this on one of the pages linked to in my resource collection:

Programming is also one of the most frustrating things you will ever do. The normal experience of programming is to try to solve something, get frustrated, try harder, step back, have an epiphany and eventually get your program to work. Feeling frustrated is completely normal, and will never completely go away. (As you get better, you’ll just attack harder problems and have the same problem). The sense of frustration will make solving the problem much more satisfying. You need to get comfortable working through that frustrating feeling.

@bateske might be interested to hear about that.

I hope that doesn’t mean no punctuation. :P

That would be a good trick considering my phone doesn’t have a virtual keyboard. :P
(Or at least not the one you’re thinking of.)

True.

That doesn’t happen very often where I live, hence what I am imagining is probably quite different to what it would actually be like.

Probably because I keep posting it. :P It was made by @emutyworks.

If you understand binary but not hexadecimal then I think you’ve not quite understood the concept of ‘bases’/‘radices’.

It boils down to this:

  • In base 2 (binary) you only have 2 symbols (0 and 1) with which to represent numbers
  • In base 10 (decimal) you have 10 symbols (0 to 9) with which to represent numbers
  • In base 16 (hexadecimal) you have 16 symbols (0 to 9, plus A to F) with which to represent numbers

(Fun fact: the Babylonians used base 60 and the Mayans used base 20. Think yourself lucky that all modern cultures use base 10 - remembering 60 symbols is not fun. :P)

Regardless of base, when counting up you go through the symbols you have available one by one until you exhaust them, at which point you must introduce a new digit.

For binary you can reach 1 (decimal 1) before you have to start using more digits.
For decimal you can reach 9 before you have to start using more digits.
For hexadecimal you can reach F (decimal 15) before you have to start using more digits.

The reason hexadecimal (or ‘hex’ as many people refer to it informally) is used in programming is because a single hexadecimal digit can represent all the values representable by 4 binary digits (or 4 bits), and thus you only need 2 hexadecimal digits to represent a byte, which is very convinient.

All you really need to memorise is this:

Binary Hex Decimal
0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
1000 8 8
1001 9 9
1010 A 10
1011 B 11
1100 C 12
1101 D 13
1110 E 14
1111 F 15

And as long as you understand the rules about adding more digits you should be able to get on with it alright.

And even if you don’t understand that rule, you should still be able to convert between hex and binary just fine.

Oddly enough the person who made the image is/was Japanese. :P

(I also happen to be able to read and understand a degree of Japanese, though I get on better with a dictionary to hand.)

The least significant bit (the one furthest to the right - the digit representing the smallest value) of each byte corresponds to the uppermost pixel of the corresponding column.

Ultimately unless you’re planning to do some manual drawing rather than using library functions you don’t really need to understand it.

The point was to illustrate that the height of the actual image data will always technically be a multiple of 8 regardless of what the intended dimensions of the image are simply because of how the image format works - with each byte of the image corresponding to a vertical column of 8 pixels.

At the risk of straying off topic:
I often wonder what would have happened if we had 8 digits on each hand, or something else in a quantity of 16 that was convienent to count with, thus making hexadecimal end up the standard base. Computer math would be far more natural to everyone.

The same for octal (and memorising your “times” tables would be easier :smile:).

The fact the Babylonians and Mayans used different systems implies that having 8 fingers and 2 thumbs doesn’t necessarily imply developing a base-10 system.
It’s probably as much an accident of history as anything else.
Had Arabian numerals not become popular we might still be using Roman numerals.

Also it’s worth pointing out that you can count in binary with your fingers by using a raised finger to signify a 1 and a lowered finger to signify 0.
Which in a way raises the question of why we aren’t using 10-bit bytes.
Being able to address 1KB with 1 byte, 1MB with 2 bytes, 1GB with 3 bytes and 1TB with 4 bytes would probably have been useful.

Likely because 8, 16, 32 are powers of 2. The General Instrument CP1600 processor in my Intellivision has a 10 bit wide instruction set.