Beyond form fields

February 9, 2024 Length: 3 min Back to Posts

I do web development and design all day at work. I come home, eat a bit, then start dwelling on my current skills becoming irrelevant. I browse a few YouTube ’expert’ influencer types. Look through the news to see what technologies are shiny. After a short time infinite scrolling, it begins to settle that the landscape of web development is too disorganized. I take a step back, sit in silence, and hear a distant voice….

What type of project gets you excited

My gut (maybe ’the universe’) whispers these words. I frequently encounter this question as my career has progressed. With the endless selection of programming languages and projects to work on, trying to stay passionate and curious about technology can lose its luster at times.

  • Do I want to learn a new language
  • Do I need to learn a new area in technology like AI, site reliability engineer, DevOps
  • Should I spent more time working on more artistic related fields like design trends, UI, or UX
  • Maybe learn a skill not related to computers or technology like gardening, electrical work, or building physical things

My mind is racing and getting nowhere, so I decide to meditate for a little bit.

Breath in. Breath out.

A surprising amount of time, emptying my mind gives me the best ideas. An idea nugget pops into my head and gives me a surge of passion.

Creating an Emulator

One aspect of programming that has mystified me for a long time is emulator programming. Playing those retro games in the web browser. How does that even work. It is fascinating how people can get these old systems recreated somehow just with javascript. I thought to myself, there has to be some good project out there to teach the basics.

After a short amount of time, I stumbled upon a free code camp project that does just this teaching how to re-create a CHIP-8 emulator. The CHIP-8 system was before my time and computers were more primitive. This system is not going to win any awards for beauty, but it seemed like the perfect learning path. Here is the tutorial: Free code camp tutorial

It took a few days working through it to try to understand the basic concepts. I utilized GitHub Copilot quite a bit helping fill in the gaps with questions I had. Especially around some of the concepts with bitwise operations and how systems work with things like “program counters” or different purposes for buffers.

My final CHIP-8 emulator files are heavily documented. I added a few bells and whistles to it to help learn it a bit deeper. I could spend more time with it, but the allure has faded. It should be pretty easy to pull down and anyone can spin it up.

Here is a screenshot of what it looks like on my local web server using Vite.

It looks bad, but the top square is actually a plane going across the screen. as you press a keyboard button, it drops little bombs that slowly destroy the ground. Every few cycles, the plane automatically moves down a pixel. If you run into the ground it is game over. They had a lot of creativity when games first came out with just black and white pixels.

I added a few bells and whistles to the program such as showing the binary data of the ROM when it is loaded, pausing, and a game loader to swap out the ROMs. I could spend more time prettying it up, but my time has come to an end with it.

Further learning

I don’t know where my projects and passions will take me. The little projects I work on seem to be so varied that there is no rhyme or reason. That is ok. Just take a deep breath.

Hi, I'm Scott

I mostly keep this blog to help me remember things. Writing is also a great way to understand things at a deeper level. I would highly recommend it if you don't write at all.