Introducing Grimoire

TL;DR: I’m building Deckbox but for Pokémon cards. Headless WordPress app with a Next.js/React frontend. You can browse the catalog now; you can also request a beta invite if you want to try it out. Want to learn more? Read on!

My first job out of college was for Blackbaud working on their next-generation platform. It was a software-as-a-service built with an API-first design: every action taken by a user, even through the official app, went through the API. During my time there, the primary app went from a Windows application to a Javascript application (something that made my Mac-loving heart happy), and this was possible because the user interface was decoupled from the application logic.

I think this architecture has stuck with me more than I realized. As headless WordPress took off, I had the chance to learn how to properly build a API-based application. Now all I needed was a problem to solve…

A problem like the massive amount of Pokémon cards in my collection. I’ve started selling some of them on TCGplayer, and while they have a decent app, it didn’t quite fit my needs. I needed an application I could store my catalog in and quickly check it for cards that have increased in value. It also needed to be able to tag different versions of the same card for when it came time to build a deck.

I’d worked on something for this before, even wrote a blog post about it, but now it’s time to finish the job. To that end, let me introduce Grimoire.

Yeah, it doesn’t look like much. In the interest of finishing, this is a minimally viable product. In this case, lots of Bootstrap. But let me show you what there is!


The Optimist Still Laments

In September of 2020, I published a song called “The Optimist’s Lament” that was one-half a listing of everything going wrong with the world and one-half a desperate prayer to God to help. Today, I lament more.

Today, right-wing insurrectionists stormed the capitol of my country in an attempt to stop the certification of an election. This is horrible. Yet what hurts me the most here is seeing the multiple instances of Christian imagery in the attack.

Check the “Proud American Christian” in this flag:

via Anthony B. Bradley / @drantbradley on Twitter

Or the more classic Christian Flag in the background of this one:

Image may contain: one or more people, beard, hat, closeup and outdoor
via J. M. Giordano photo / @jmgpix on Twitter

And I’m not surprised. Honestly, I’m not even angry anymore. Just sad. I’m sad that my faith—the part of me that I can hold on to when literally nothing else makes sense—is used in this way.

I was angry about this once. But this already happened in 2020:

After having police and National Guard units disperse protestors with flash-bang and tear gas munitions, President Trump posed for media with a bible in front of St. John’s Church.
via Doug Mills / The New York Times

Not to mention 2016:

via Christianity Today

But this is just politics. It goes all the way back to the late 70’s where many prominent Christian leaders were galvanized into politics by the Supreme Court verdict in Roe v. Wade the loss of tax exemptions by Bob Jones University based on their segregationist policies:

Although a few evangelical voices, including Christianity Today magazine, mildly criticized the [Roe v. Wade] ruling, the overwhelming response was silence, even approval. Baptists, in particular, applauded the decision as an appropriate articulation of the division between church and state, between personal morality and state regulation of individual behavior. “Religious liberty, human equality and justice are advanced by the Supreme Court abortion decision,” wrote W. Barry Garrett of Baptist Press.


The IRS was not placated. On January 19, 1976, after years of warnings—integrate or pay taxes—the agency rescinded the school’s tax exemption.

For many evangelical leaders, who had been following the issue since  Green v. Connally, Bob Jones University was the final straw. As Elmer L. Rumminger, longtime administrator at Bob Jones University, told me in an interview, […] “That was really the major issue that got us all involved.”

Randall Balmer, “The Real Origins of the Religious Right,” Politico

But I don’t have the energy to be angry about that. Because while some have been using the name of Jesus to justify abhorrent political views like locking undocumented immigrants in literal cages or promoting the rich at the expense of the poor, others have just been using symbols of Christianity to justify… stuff.

Picture of the founder of My Pillow with his cross necklace enlarged
via MyPillow
via DaySpring

So yeah. I don’t have the energy to get angry about images of Christ’s sacrifice—the time that the crowd chose to execute an innocent man instead of the violent insurrectionist—being used to sell a fascist coup.

I don’t even have the energy to get angry about images of Christ’s sacrifice—the entire means by which I can gain some hope in this bleak life—being used to sell questionable political beliefs.

Because I spent too much energy fighting off images of Christ’s sacrifice—an event so traumatic Jesus literally sweat blood in anticipation of it—being used to sell sub-par, half-quality merchandise that I’m “supposed” to buy instead because it’s “Christian.”

So yeah, I’m sad. Sad that the symbols of my faith, rather than being a sign that I am welcome and safe, are now warnings for me to stay away.


Looping Background Music With Intro in Godot Engine

Title is a mouthful, right? But this is something I’ve been trying and failing to find a clear answer to for months. Now that I’ve found the answer, time to take Sal‘s advice and write a blog post.

The Basic Idea

You’re making a video game. You’re using Godot because you like open source and free stuff. You’ve got some kick-awesome background music because, well, reasons. And while you can get a good loop out of the music, you’d still like to have an introduction to the music.

Background music with an intro is pretty standard in most video game music. Take a listen to “Green Hill Zone” from… well, every Sonic game ever. But particularly Sonic Mania.

Notice how when the music loops at 0:53, it doesn’t go all the way back to the beginning but instead loops from partway into the music? This helps set the stage for the level’s atmosphere and provide a more natural feel to the music.

It’s also a feature we’ve come to expect as players, so if you can do it in your game it’s a good idea. So how do we get it in Godot?


Given the current consternation around social media, it has become more important to get the Smolblog project off the ground in a significant way. So here goes…

Follow along on GitHub


Retroactively Sign Git Commits

It’s a classic situation. You’re contributing to a project, filed your pull request, and gotten it approved by your peers. You’re all ready to merge your code and add your humble contribution to the project when, out of nowhere, GitHub gives you this:

GitHub error: Merging is blocked: The base branch requires all commits to be signed.

How do you go about doing this, especially when you’ve already committed your work and pushed it to the server? How do you retroactively sign your Git commits? We’ll do this in six steps:

  1. Gather Information
  2. Install GPG
  3. Create or use a key
  4. Set up Git to sign commits using GPG
  5. Rebase your commits
  6. Overwrite your branch with your newly signed commits

There’s a lot to unpack, so we’re going to need six steps. Also, these instructions are for macOS; Windows and Linux users may have different commands.

Read more on »


Fixing oEmbed With a Custom Provider

The story of my blogging career over the past few years could be summed up as, “How I Learned to Stop Worrying and Love the Reblog.” There’s something that’s so much fun about finding something cool and sharing it on my blog without worrying about saying something poignant or ultimately meaningless in an effort to “add to the conversation.” Sometimes it’s enough just to amplify the conversation, or share that video.

This is why I’m so excited about oEmbed. It’s a standard API that takes a given link and turns it into an embeddable… thing. It’s most commonly known as “that thing that turns a YouTube link into a video,” but the underlying technology can be used for any web page. This includes sites like Reddit, Twitter, and Imgur, as well as blogging sites like Tumblr and, yes, WordPress.

Read the rest on WebDevStudios »


Hashing a Custom Taxonomy

I have a confession. I like Pokémon.

It’d really be more accurate to say I never stopped liking it. Sure, there was that point when it wasn’t “cool” anymore and I was too busy trying to be “cool,” but this is the kind of thing that just sticks with me. So, naturally, I’ve built up a collection of Pokémon cards. And what does someone like me do when they have a collection of something?

Build a WordPress-based database site for cataloging it, of course! This is where hashing a custom taxonomy comes into the picture.

Read more on »

Best Of Introspection

Introducing Smolblog

Around the end of last year, I wrote an essay about what made Tumblr unique in the blogging world, followed by another essay about different technologies that can be used by a blog platform. And then I did nothing.

Well, not nothing. I went and got a new job. I also started sketching out some more concrete ideas. And while I want to be farther along in the actual development of things, I also want to start getting feedback on the ideas themselves.

Full disclosure: I’m great at talking about ideas, but I’m still learning to actually execute on them. Which is kinda disappointing, since the execution is where so many ideas go from "good" to "awesome." So, bear in mind, this is an idea. It may not get very far, it may not get very good, it may crash and burn spectacularly. But these are problems I have wanted to solve for myself, and if I can help solve them for others, then I feel that I must try. So with that, let me announce…


Technology Cannot Make a Platform, But It Does Help

The web literally exists to share content. The first web browser was also a web editor. And ever since then, programmers have been working on ways to make publishing easier and better. As such, there’s no shortage of existing technologies that a new platform can build off of.

Analysis Best Of

What Makes A Platform, or How Do We Recreate Old Blue

It’s not enough to just make something. It’s got to be worthwhile. So if we’re going to do this, we’re going to do this right. Let’s start with the past.