The Relatability of Christmas

Merry Christmas from my Robotics Lab! This is Shadow_8472 with a few thoughts on what Christmas means for me. Let’s get started!

Many a Christmas tale stars a jolly, old man who lives at the north pole making toys to hand out every year using his sleigh and team of magic reindeer, but even Santa is rarely portrayed as anything more than a steward of the holiday attributed to the birth of Jesus Christ.

How does a self-existent God relate to His created beings? How CAN He relate? The Old Testament records a long line of flawed human beings locked in a try/fail cycle when it comes to obeying God, starting with our choice to reject God by eating the forbidden fruit. For around a millennium and a half of history, God is seen in story after story, book after book at work in the background connecting with people by framing his love through contemporary imagery. He fashioned one chosen family into a powerful nation, preserved them from extinction at the hand of the undefeated Assyrians and through Babylonian exile, and ensured their reinstatement into the land He had promised to their ancestors even as a parade of foreign empires conquered their territory.

It is one of the darkest chapters in human history. Israel has been without God’s prophets for hundreds of years, and the religious leaders are corrupt and self-important teachers instructing their students in falsehoods. Furthermore, the region is clutched by the iron fist of Rome. Soldiers from the occupation force can order you to carry their packs for up to a mile, enemies of the state are publicly executed nailed to wooden crosses along the highways, which are left in place as reminders not to rebel. Meanwhile, a movement of zealots work in secret to liberate their homeland, storing up supplies for when the pharisees’ messiah would show up in the temple and permanently reestablish Israel as a sovereign kingdom. If ever there were a time it appeared God had abandoned the world, this would be one such time.

Amid this landscape, Jesus set aside whatever job perks come with being Creator God and Master of the Universe to relate to one of us AS one of us. He was born as an otherwise normal baby into poverty. In a town crammed to the walls with people, the only visitors who took note of Him were lowly shepherds who received a special invitation and some unknown number of scholars from the east who were paying attention. His earliest memories would have been from living as a refugee from a regional king who murdered His peer group looking for Him. When He moved back home, his family landed in the regional ghetto, where He grew up with the stigma of being an illegitimate child learning carpentry.

If anyone were ever entitled to everything, it would be Jesus; if anyone ever went to the most extreme lengths to be relatable to everyone who’s ever lived – again, Jesus. He went through the absolute worst humanity had to offer and didn’t back down. Many details of the analogies He used to reach people in 1st century Judea are lost on us today, but the core message shines on. And it started in a town called Bethlehem just over 2,000 years ago, where God took on human form to experience our worst and to carry our end of the contracts He made with us where we failed.

Takeaway

While the date of December 25 was originally chosen to displace one or more Pagan celebrations, today it represents a unique opportunity for Christians as it is in this season that a general audience is primed to hear about Jesus’ most relatable story. He was born.

Final Question

What does Christmas mean to you?

I look forward hearing your answers on in the comments below or on my Socials.

On the Specification of State Machines

Good Morning from my Robotics Lab! This is Shadow_8472 with a smaller project segment for the week. Let’s get started!

I’m learning Godot, a free/open source game engine. My chosen project is a Sonic fan game where Cream the Rabbit overhauls a wild chao garden overrun with pollution. Previously, I coded up a cube I could move around in 3D.

What I didn’t cover was how everything flopped when I introduced delta, a variable to adjust calculations to account for the time between frames. While I dream of posting this game as Wii homebrew (3rd party shareware), I understand that most people interested in Chao these days are on PC. Even if this were an exclusive title to a locked-down platform, lag would still need to account for framerate drops. I tried adjusting my jump related constants so many times, but since I missed a delta or two, I was never going to get it right. When I initially gave up, I directed my efforts towards designing a state machine.

It’s almost silly how many states a 3D platformer player character can be in. Walking, running, sprinting, standing still, holding an item – and that doesn’t even touch the number of jump states I can expect Cream or other characters to find themselves in. I used a massive if-else structure to decide what string to describe state. At a certain point, I studied the character movement and animations of Sonc 3 & Knuckles (Sonic Megacollection for GameCube, run on a Wii) and Sonic Adventure 2: Battle (SA2B) as inspiration. In both games, holding jump powers you upwards until you either release or reach a maximum height; it just happens so fast (unless you’re in a low gravity section) that it feels natural. I had to re-think my state machine a few times, but I settled on a 32 bit number to chop up into a mixture of 1 bit flags and other data as needed. In particular, I focused on the least significant byte (the last 8 bits).

I went through several iterations over a couple of days, but the two rightmost bits were consistently used to denote a character’s vertical (Y) and horizontal (XZ) movements as I figured they would be most useful for telling other aspects about a state. Moving left, the next four bits are for progressively more detailed information about what a character is doing “environment” – you can be walking.on_ground.skidding, swimming_underwater.bottom_walking.normally, or using a character’s special move assigned to a reserved set of states.

A good chunk of thought went into representing all these states in a visually digestible format. It wasn’t until I began thinking of the XYZ motion flags as dependent on my environment states that I reduced them to four columns in a chart of sixteen rows that I was readily able to count my vacant states. As of writing, my environment variable uses two bits for “rough” and one each for “fine” and “special.”

The 128’s and 64’s bits are penciled in as a counter for idle animations or how many double jumps a flying character has remaining. Beyond that, I have 24 bits remaining as the game grows. For example: eight bits affords up to 255 unique held items plus a reserved id for when a character holds nothing.

Takeaway

I did not write a single line of code while working on the main event today despite it being a programming project. I did start on the next part where I began implementing this standard, but that felt like I was starting a whole new section, so I’m saving it for later.

Programming programs and composing literature (in the broadest sense) are more similar than people realize. What happened here today is analogous to a novelist making an outline ahead of a first draft. An important puzzle was solved and in important internal standard established.

Final Question

How many basic states are there for an average character in your favorite game?

GPG is Still Beyond Me

Good Morning from my Robotics Lab! This is Shdadow_8472, with a side project. Let’s get started!

While downloading a new-to-me distro this week, I again was wall-of-text’ed to a halt by GPG. GNU Privacy Gurad is a technology no new and serious Linux enthusiast user can go six months without slamming into. The specifics of how it works are in about every tutorial that shows you the basics – which invariably never includes an instruction set I can understand regarding file verification, and I make it a point to attempt concepts I find difficult, but important whenever they come up.

I’m still not yet successful, but here is what I’ve learned: web of trust. I trust Dan. Dan trusts Stella. Stella trusts George. I don’t know George, but he has a file I want to ensure is authentic after downloading. Through the chain of trust I’ve established, I can trust George’s cryptographic signature based of his private key, and the file I’ve downloaded from him when I use George’s matching public key to verify it.

My understanding of GPG this week has gone from “clear as swamp water” to “clear as stained glass.”

Final Question

On a previous GPG attempt, I learned about centralized key servers, but I’m still clueless about their practical use. How in the world does one enter one of these “webs of trust?”

A Bit About Wii Firmware

Good Morning from my Robotics Lab! This is Shadow_8472 with a smaller thought for the week. Let’s get started!

I mentioned last week how my family picked up a replacement Wii for Thanksgiving this year. Most everything appeared to be working at first, but when my sister, Taz (Tzarina8472), found Animal Crossing: City Folk needed a firmware update to play. I’m planning to hack this Wii at some point to get on its large homebrew scene, but firmware updates can patch out needed vulnerabilities.

My early research hinted that any version would work, but I later confirmed this on WiiBrew.org [1], whose FAQ’s opening introduces itself as an authoritative reference. All firmware versions have exploits, but updating to or past version 4.2 risks a system brick, and the WiiBrew FAQ does not recommended it for any Wii.

If there exists some website that lists what Wii games need what firmware, I couldn’t find it. Turns out games that may need a firmware update come bundled with the version they need. Luckily, the problematic 4.2 firmware was released the year after this of Animal Crossing. The system went from firmware version 3.2 to 3.3 (best guess from memory).

Final Question

What would you do with a freshly hacked Wii?

I look forward hearing your answers on in the comments below or on my Socials.

Work Cited

[1] “Wii Brew,” WiiBrew.org, Nov. 18, 2021. [Online]. available: www.wiibrew.org/wiki/Main_Page [Accessed Dec. 5, 2022].