I took a break with NaNoWriMon in 2019, since NaNo revealed their updated website (and lack of wordcount API) late enough in the game that it would have been pretty tight for me to update my code in time for the November challenge. I'd also hoped (but didn't feel super optimistic that) they would reinstate the API in time for the 2020 event, so there'd be some documentation available for it and some kind of official blessing indicating it was okay to build on. No such luck! Some kind soul did write a small library for connecting to the API, and one of the NaNo tech staff (I think?) did give a person their blessing to build an application that would use it, but it's still very much on the down-low. And I'm keeping the NaNoWriMon on the down-low as well, not doing much promotion of them; hoping that keeping it to dozens of them this year, rather than the usual hundreds, might make anybody watching the API traffic a little less grumpy and inclined to cut me off. There are well over 11,000 NaNoWriMon that have been created to date, which is completely wild!

In addition to rewriting the code to use the new API, I also needed to add Gen VIII pokémon and the ability to gigantamax. I've always pictured the NaNoWriMon code as a mess primarily held together by Scotch tape and prayer, and digging back into it to make large changes... definitely confirmed that! Updates took much longer than expected, and largely due to problems that already existed in the code that I kept accidentally running into rather than problems added as a result of the new content.

A small sampling of the kinds of issues I encountered:

- For some reason the apostrophe in farfetch'd and sirfecth'd was a smart single quote instead of an apostrophe in the data dump I was using for Gen VIII. I can only hope that this is how it's actually represented in the game's text (but why tho?). No one was trying to open/edit this big JSON file in MS Word, right? Right??
- At one point I decided that pokémon with multi-word names (e.g. Tapu Bulu, Mr. Mime) would use hyphens instead of spaces, e.g. tapu-bulu, mr-mime for their internal identifiers. Then, later, I decided to simply delete the space in the name (e.g. tapubulu, mrmime) without realizing I'd already settled on a different way of handling this. The hyphenated solution worked with the new Gen VIII pokémon sprites I was using, while deleting the space did not. I changed everything to hyphens, in the processes breaking all of the pokémon that had previously had the smushnames.
- I apparently just never bothered adding the various Arceus and silvally forms, oops.
- Meowth couldn't evolve into Alolan persian (regular persian was fine). Instead, tentacool evolved into Alolan persian.
- Pichu had been entered as part of an evolutionary family that didn't even exist (pikachu and raichu were fine), which meant that it could never evolve. And this was a preexisting issue? How long had people just not been able to evolve pichu and nobody ever said anything??

All in all, the codebase really needs a thorough rewrite. I already did one, a few years ago, but GameFreak keeps introducing more fancy stuff that violates the assumptions baked into the current version (like mega evolution even existing, lol, or only final-stage pokémon being able to "battle evolve"). It's really a mess in there, in part due to a lot of bandaid fixes made under time constraints, in part due to weird constraints due to originally being implemented in a shared hosting environment. This is why the images are actually served through the application rather than being links to the underlying PNG's, for example--I didn't have any ability to change the caching on the server, so I had to route images through a view that could add the necessary headers instead of serving them directly. And then there are the fixes that are just dumb and bad, like the code that was having issues with database locks that was changed to... try to write, and if the database was locked, wait a bit and then try writing again in hopes that it might have opened up.

Of course, there are many parts of the site that desperately need a full rewrite or are already in the process of one, including, notably, the metronome generator, which is why it's still not updated for Gen VIII. When exactly am I going to find the time to get all my coding work done? The eternal question. I was actually doing a pretty good job making progress on web stuff back in August 2018 only to abruptly stop once I got a job offer, oops.

At least I did have to 100% rewrite the code for interacting with the API, and it's much nicer now!

Anyhow, after all that nonsense, here's my guy for 2020:



I realized how annoying it was that I couldn't readily tell what year my various old NaNoWriMon are from. Which was the year when I had Gina the charizard, for example? So I figured I'd try including the year in the NaNoWriMon's nickname.

Saturday was a very busy day even outside of last-minute scrambling to get all this accomplished. I've since spent most of my time on actual writing, and I really need to get back into reviewing as well. My reviews especially took a backseat to coding toward the end of October, and I've been itching to get back into things. There are still a couple known bugs in the NaNoWriMon code, though, one of which is pretty severe, so no big break for me--I'll have to get back to work sometime this week. (Plus Crown Tundra stuff needs to get in there as well; looks like there are finally data rips out in non-horrible formats for me to use!)

Profile

negrek: Illustration of charmander holding a leaf umbrella (Default)
Negrek

November 2022

S M T W T F S
  1 2345
6789101112
13141516171819
20212223242526
27282930   

Syndicate

RSS Atom

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 8th, 2025 07:03 pm
Powered by Dreamwidth Studios