Tomorrow is International Women’s Day, a celebration spinning out of the global labor movement, designed to bring attention to issues that women face in society that—let’s be clear—are directly responsible for most of the issues that men face in society.
If you’re here to demand that someone tell you why there’s no International Men’s Day…it’s in November. And unlike International Women’s Day, it was just created to celebrate the accomplishments of men…as if history has been covering up all the powerful men. I hope that everybody can see the difference. Likewise—and this should probably become a full post, some day—if you’re worried about men having a much higher on-the-job risk of dying, the solution is to fight for women to be taken seriously in dangerous jobs, not to talk about how strong men are.
However, being a man, I suppose that men’s accomplishments are also the best opportunity for a segue that I’m going to get to what I did, this week…
While this isn’t a major change to anything, Iungimoji’s repository now ignores the generated
Also, if you’re a regular reader of the blog, then you probably already know that I officially launched my Daily Iungimoji puzzle, in yesterday’s post, which also explains more about what’s happening in that repository.
The short version, though, is that it generates implementations of a card-matching game, using emoji for the card contents. As usual, the defense against cheating is minimal, because I wrote this primarily for myself, meaning that the biggest concern is that I accidentally cheat, such as accidentally double-clicking and either selecting the emoji underneath without flipping the card or causing the card to match itself.
Similar to Iungimoji, this is hardly the end of the world, but the repository now ignores the generated
morning.html file. It’s hardly a crisis, but I keep noticing the “alien” file in my list when it’s time to commit changes, which is a bit of a waste.
I could write the output file to the system’s temporary folder, but that would require embedding the CSS, and I’d rather not do that when I go in to tweak the styles.
Honestly, it surprises me that I didn’t do this from the start, since I literally generate the file every morning…
G.L.O.B.E.—or Geo-Locate Objects Before Enemies—is a third puzzle game that I’ll (soon) publish daily, alongside the Daily Iungimoji and Daily Nonogram. Unlike the others, you need to find the country displayed at the top of the page, based on both the outline and the directions given on wrong guesses.
As I mention in the repository, the version of the game in my head is that you’re racing against a hypothetical opponent—the “Enemies” in the title—moving at a fixed speed per mile, meaning that you have a maximum travel distance between the first and final guess to find the MacGuffin. The actual game doesn’t do this, but it feels like a reasonable pretense.
It also “narratively” massages a problem that most people, including myself, are going to have playing: The idea of a “country” is shockingly fuzzy, with places like the Faroe Islands or British Indian Ocean Territory sitting on the list, waiting to be selected randomly. Since most of us probably wouldn’t consider either of them “countries” in any reasonable sense, the idea of a budget for distance allows the player to wander around the vicinity of an obscure country (or non-country) before finally pulling up a map of the area.
One interesting aspect—to me, at least; many readers probably already know about it—is that modern HTML has a convenient way to create a text input with suggestions, what we used to call a combo box, before platforms weirdly stopped providing them.
<input id="user-guess" type="text" list="suggest"></input> <datalist id="suggest"></datalist>
<datalist> container takes a series of
<option> objects, which are easy for the user to select, which fills in the
<input> that references it with its
Anyway, you can preview the Daily G.L.O.B.E., until I announce it.
The minor tweaks that I have made over the last couple of weeks—including a library update earlier this week—have run into build problems on Heroku. I have ignored this, because the app (unfortunately) has definitely not been my top priority.
However, I finally took a look at the logs, and it appeared that the problem was a Webpack component failing to build. So, I manually updated that version.
That did it, so I can go back to ignoring those warning e-mails from a couple of weeks ago…
As it turns out, writing the previous section on Fýlakas Onomáton wasted hours of my week. Jekyll’s build process kept crashing, insisting that I had mismatched some obsolete ASCII code page—which it couldn’t be bothered to identify for me beyond 8-bit ASCII—and Unicode. For some reason, Jekyll also can’t be bothered to identify what specific text string causes the error, instead just providing a stack dump telling me that something went wrong in rendering a post. That all seems like a huge oversight, given that Jekyll’s entire world is processing text, but sure.
So, I spent a while applying an informal binary search to the post, deleting ever-smaller fractions of the file, until I had all the file except for whatever caused the problem. The problem, though, was…the GitHub preview tag.
The next step, then, was to perform the same search inside the preview tag that I created a few weeks ago. There, the culprit was more painful—because I didn’t structure my text-handling code—but more straightforward to see, once I had reorganized the string to make it easier to delete parts: The
og:image:alt metadata is somehow recognized as 8-bit ASCII text, despite—based on inspecting the binary data—being UTF-8 Unicode as expected.
The solution is to tell the Ruby interpreter that it’s wrong.
image_alt = repo['image_alt'].force_encoding('UTF-8')
.force_encoding() method changes nothing about the string, itself, but rather forces the interpreter to accept the string of bytes as coming from the specified encoding. Obviously, you don’t want to do that in the general case, but I have a sneaking suspicion that GitHub isn’t likely to start serving its metadata using 1990s Windows code pages anytime soon.
As I mention in the G.L.O.B.E. repository, I may take some time, this week, adding a “travel budget” to the game and adding localization settings. Maybe. And as I keep saying, the library updates have been backing up.
Also, expect the formal announcement of the Daily G.L.O.B.E. puzzle on Sunday, after I’ve had more time to make sure that it doesn’t easily break.
Credits: The header image is extracted from Frauentag 1914 Heraus mit dem Frauenwahlrecht by Karl Maria Stadler, in the public domain since 2014.
Tags: programming project devjournal