Chronicling the Singularity

It’s been almost 2 years since I last posted to this blog. Since then, related to the world of software development, two things have changed:

  1. I’ve been working at a large game company as a Senior Software Engineer on one of the technology teams; it’s nothing short of a total blast working with the people on my team.
  2. The dawn of agentic coding has arrived on the software scene, and knowledge work in general.

It’s terrifying and exciting times to be a software developer. I hope to document each step along the way.

(Skip to the bottom if you just want the ‘fun stuff’ 😀)

I started using coding assistants only recently. In November 2025, a coworker demonstrated GitHub Copilot in Visual Studio Code to team members. He was amazed at how quickly he could get working prototypes up and running. At first, I found it interesting, but as his demonstration continued, I too was amazed.

Over November and December, the team independently started experimenting with coding assistants to see what they could do, what mistakes they would make, and what best practices we could devise for using them in production code.

In December, we shipped our first AI-assisted project, weeks ahead of schedule and with better documentation than in many prior projects.

By January and February 2026, we were routinely using AI to explore and document older codebases, as well as to assist with maintenance and modernization efforts. We even began investigating ways to use AI for reducing accumulated technical debt…ironically, since one common complaint about AI agents is that they add to a codebase’s technical debt.

As of March 1, 2026, all team members use coding AI as an efficiency tool at work on a daily basis. All of us are also pursuing side projects after hours, experimenting with AI coding agents to push their limits, identify where they fail, and determine where they add value. Several of us have created functional web apps that solve problems we had long intended to address through traditional development but never found the time for. And all of us are working on passion projects—mostly game-related—that would traditionally require several programmers and artists weeks to prototype, but which can now be prototyped in several nights by one software engineer.

In the coming weeks, I will present some of these passion projects. I will also provide posts on the best ways to fully and deeply understand—or “grok”—Large Language Models and agentic AI, so that you do not have to treat them as black boxes and can more fully grasp their problems and usefulness in software development.

Additionally, I will blog about the societal implications of the rapid rise of AI in general, with thoughts on how to not only survive but thrive, and what to teach your children to do the same.

For now, I will present a one-off project that I created on a whim last night. A coworker was investigating realistic gem rendering on screen. He considered existing game engines, including Godot and Unity, to give him a head start. He used AI to assist, but he was not getting the results he wanted in Godot, so he switched to Unity. He reported decent results—this was Friday, two days ago—but I suggested he look into web-based technologies, as they would provide cross-platform availability out of the box.

That night, I wondered how easy it would be to create a web-based gem renderer. While half-watching TV with my wife and daughter, I decided to have Claude Opus and Claude Sonnet help me develop one. I wrote a detailed software specification, omitting the rendering technologies so that the AI could recommend them. I then had Claude Opus create the plan and Claude Sonnet execute it.

The result is a web app, using three.js, that renders gemstones in real time:

Example (screenshot from live gem animation)

The live website has the gem autorotating in real time, and you can use the mouse and mouse button to see different orientations of the gem. You can also switch gems (Diamond, Sapphire, Emerald, Citrine) and change some of the render parameters using on screen sliders.

It’s important to note; without human intervention, the concept of “aesthetics” often eludes the current LLMs, especially in a coding context. They are getting better at it, but often developers will have to coach the LLM, “move it more to the left so that it is inline with the text above”, or “the spaceship looks like a rectangle, it was supposed to be a chevron”, or even “that gem looks like *ss, lets brainstorm ways to fix it.”

This is where I believe that humans will always be needed. We may get to a point where AI can render a movie for a consumer ‘on the fly’, but will it be good? Coherent? Watchable for more than 5 minutes?

This came into focus when I tried to work with an LLM to convert the web based gem renderer to Vulkan, to run natively on MacOS and Windows. The first attempt looked like *ss. And, after several hours of re-prompting and coaching, it still looked like *ss. However, I have a plan on how to get the LLM agent to convert the renderer to Vulkan in a way that exactly replicates the WebGL renderer. Stay tuned.

If you are interested in trying out and seeing the web version of the gem renderer, try out the live website here : https://rgmarquez.github.io/gem-render/

The GitHub repo is here : https://github.com/rgmarquez/gem-render

Speaking of Priorities

I love doing fun things. Don’t we all?

And, all else being equal, I like doing the “more funner” things more than the “just plain fun” things.

However, sometimes priorities dictate doing the “just plain fun” things first. This is one of those times.

For the next few days I’ll be putting my React learning on hold, and dig up my Java programming knowledge from back in my Amazon Prime days. You see, I have an interview coming up with a Java-based shop, and I’ve been told that their coding challenges and questions are strictly Java based.

I’m currently reviewing some of my old Java code (an example of which can be found here : https://github.com/rgmarquez/redis2-codechallenge) to revive the Java side of my brain. I need to be reminded of the the syntax, coding conventions, and concurrency best practices that I used to have in the forefront of my mind, before C#, C, and JavaScript pushed it all to the back.

My next post will most likely be my thoughts on going back to Java after the joys (non-sarcastically) of C# and JavaScript async/await programming. I do remember that with Java SOA, we tended to use dependency injection a lot more than I’ve see in C# or JavaScript. I also remember that DI was particularly useful for decoupling dependencies, and for test mocking with little to no change to the target system.

Hmmm, maybe I should do a future blog post describing Dependency Injection, to what extent each developer community (Java, C#, JavaScript) seems to use the DI paradigm, and why.

But for now, on to refreshing my knowledge of Java syntax, memory model, concurrency, automated tests, and best practices…

The pragmatics of priorities

In looking at my list of projects, it occurs to me that in order to make a dent in most of them, I really should step up to the plate and learn the front-end Javascript framework “React”. I’m choosing to learn React over something newer (like Svelte) as a great deal of companies use React, and I’m trying to make myself more marketable as well as learning front end coding for my projects. A two birds with one stone kind of thing.

I actually know a bit of front-end coding with both straight HTML/CSS/JavaScript and with Angular.js, but again, I believe that React knowledge will get me farther with prospective employers, while allowing me to create professional quality front-ends for my projects.

I’ll be using Mosh Hamedani’s “Code with Mosh” videos to learn React. In theory, his videos will be building my knowledge up to coding a “production grade app for discovering video games”, and I like the idea of learning enough about React to be able to code such an app:

If you are interested in Mosh’s coding courses, they can be found here: https://codewithmosh.com

Which one, which one…

There are so many development topics I want to cover, it’s hard to know where to start. I want to talk about projects I’ve worked on in the past (there have been a LOT of them), but I also want to talk about new projects that I am curently starting.

I’m currently unemployed right now (and looking for work!), but in my now expanded spare time, I’m trying to learn some new technologies, while bolstering my knowledge of some things I’ve done in the past.

So perhaps I’ll start off with my list of current projects that I’m starting, in no particular order:

All of these projects will be hosted on GitHub (actually, some already are), and as I work through development, I’ll be making sure to update the source code and supporting files there.

Here : https://github.com/rgmarquez?tab=repositories

Incidentally, I do tend to keep a lot of notes and lists, from lists of projects I’m working on, to lists of features (specs?), to lists of bugs that I’d like to fix, to cool features that I’d like to add. When I’m working professionally, Iuse Atlasian’s Jira (https://www.atlassian.com/software/jira) to keep track of projects, features, and bugs. However, for my simple experimental projects, I tend to use simpler tools like Apple’s “Notes” app when I’m working strictly on my Mac Laptop, or Evernote when I will be switching between my Mac laptop and my Windows laptop.

For example, the “spec” for my gift/wishlist app looks like this:

It should be noted that I like to develop my own apps in stages, starting with a “minimal viable product”, or even a “prototype”; I don’t want to start with every feature that can be imagined, I want to start with something that will be useful, while uncovering issues that I may not have thought about when starting a project (the “unknown unknowns”). Additionally, I like to start small to make sure that the product is something useful, to make sure that I am “building the right product” as well as “building the product right”.

For now, one of the main goals for these projects is learning new things, and reinforcing old skills, so for many of them, “usefulness” (other than as an example for others) may not be a major concern. 😉

Embark on a Coding Journey: From Embedded Systems to Blockchain and Beyond

Greetings to anyone reading this! This blog was a long time coming; I had originally created this blog back in May of 2015, with the intent of creating an interactive discussion, spanning the wide range of software development projects I have been involved with in my many years design and programming.

My career so far has been nothing short of crazy; I’ve written applications ranging from one of the original “map/tile editors” used in games for the original Sega Genesis and SNES, to mobile (iOS and Android) applications that wirelessly communicated with fitness equipment to optimize your work-out, to tools, game engines and games for MANY platforms (MS-DOS, Windows 95, Amiga, Playstation, 3DO), to back-end services and game systems for Amazon Prime and Scopely, to front-end applications for configuring Live-Ops game events, to embedded system programming in assembly language (Sega Genesis) and C (Intellivision Amico Controller), to blockchain/smart contract code for in-game items, to data analytics pipelines/ETLs for graphing game events.

Most of my career has been involved with games or computer entertainment in some capacity, with the exceptions of periods with the Amazon Prime team and San Luis Aviation.

The point being is this: I am a generalist. I have experience with a whole lot of practices, methodologies, and bad habits from multiple software disciplines, which hopefully means I can bring some cross-domain insight into software development based on my experience.

It also means that I can do a little bit of everything, including creating crazy cross domain projects; imagine a project integrating games, AI, blockchain, analytics, and front-end tools all in one, hopefully simple to understand project. There is a lot to be learned from cross-domain projects, and I hope to make this blog a chronicle of my ongoing learning.

So if you are game for this journey, welcome aboard; and if you have any expertise in any of the things I will be chronicling, definitely feel free to speak up and set me straight. It is hard to bruise my ego, and I’d rather learn together than pretend I am always right.

Welcome!