Book review: 狼と香辛料 (Spice and Wolf)

Emboldened by the success of my first fast-paced reading challenge, I reached for my stack of unread Japanese books and picked one that I’d been thinking about for a while; Spice and Wolf, which I had randomly inherited from a friend long before my reading was remotely up to scratch.

My original plan was to read 15 pages per day (a one-page increase over my average pace from last time) and finish it in three weeks, but after the first week it was apparent that this was going to be completely unsustainable and re-targeted to a four-week pace, bringing me to an even 10 pages per day. Even this would prove to be a challenge, though I did manage to finish it one day early.

To briefly summarize the broad concept: whereas some fantasy authors set out to create a world in which to play out their unique ideas for a magic system or to explore a web of political intrigue, Isuna Hasekura has decided to spin a story all about the dirty details of being a merchant. Rather than an encroaching dragon, the driving tension comes from the possibility of taking advantage of a currency speculation scheme that turns out to have some very powerful actors working behind the scenes. I really do have to give him credit; “fantasy economics” isn’t a genre I would have ever thought of, but there’s no reason it shouldn’t work. The political tension between neighboring kingdoms, the risk of dealing with multiple merchant guilds, the potential for worldbuilding with regards to supply and demand across different regions; there’s potential here to tell an endless number of deep, interconnected stories (and considering that there are now 20 books in the novel series alone, it seems that’s exactly what he’s done).

Where it all falls apart is…I just have no interest in what is very clearly the entire point of the book.

The two main characters, Laurence (a traveling merchant) and Holo (an ancient goddess of harvest known as the Wise Wolf) are well written and have good chemistry. Holo in particular is delightful with her old-timey speech style and penchant for mischief. Their scenes together are highly enjoyable, but they’re interspersed with what I can only describe as excerpts from a fictitious textbook on medieval trade theory. It’s quite possible that I wouldn’t have been bothered by this if my Japanese reading ability was higher, but as I am right now, it just felt like a series of speedbumps that got in the way of my enjoyment of the story.

Spice and Wolf is…not a book for me. I can understand what makes it tick, and I can even appreciate what the author has managed to do, but quite frankly there were not a few moments where reading this book made me want to die. What I can say for certain is that I now understand why some of my favorite series — the ones that describe the process of cooking in great detail and go into depth about the nuances between certain ingredients — fall so flat for other people. If you’re not interested in cooking, you probably won’t enjoy a book written by someone who loves it — and I have absolutely no interest in economics.

Translation work – Persona 5 twitter comic

Earlier today I happened to see this tweet from an artist I follow:

To summarize, it’s a post looking for someone to do some (volunteer) translation for an upcoming comic. Naturally I jumped at the opportunity and sent off a message offering to help. One thing led to another (the fact that I had done a translation let’s-play of Persona 5: Scramble probably didn’t hurt), and they accepted my offer. My translation of the original Japanese text can be seen in the English version of the comic in the tweet below:

Even though it’s just four short lines, this is technically my first proper translation gig and it’s pretty exciting that I was able to be in the right place at the right time!

Iridescence Walkthrough by To Ta

I somehow missed this when it first came in, but the itch.io page for Iridescence received a comment that linked to this walkthrough video. During development, I put a lot of effort into the visual design of each component so as to not require any text on the screen, which apparently paid off seeing as the title of this and other videos on the same channel are in Japanese.

While I never expected Iridescence to be a great critical or commercial success, it’s always nice when somebody stumbles across it and seems to enjoy it.

Book review: しあわせの花 (Flower of Happiness)

My third Japanese novel this year comes to a close in much shorter order than my other two. Upon finishing Night Market, it suddenly occurred to me: “I’ve been reading each week’s quota of ten-or-so pages in one sitting — why not keep up that pace for the whole week instead of just for a single day?”

And so, I cracked open Flower of Happiness, which is a light-novel spinoff of the manga series 鬼滅の刃 (aka Demon Slayer: Kimetsu no Yaiba). My original goal was to read 8 pages per day and finish it by the end of the month, but I ended up getting swept along and ended up reading about 14 pages per day, which allowed me to finish it in just two weeks. This is obviously the fastest I’ve read a Japanese novel and I’m excited by the prospect of keeping on this track.

To be honest, I didn’t know anything about this book at all when I bought it — I essentially bought it on a whim after I caught up to the KNY manga and was itching for more content in the same universe (though it would be some time until I actually got around to it). As it turns out, it’s not one full story at all, but rather five short vignettes depicting various characters from the main series.

The first chapter, which shares its name with the book, is set during the time that Tanjiro, Inosuke, and Zenitsu are recovering from their battle in the tsuzumi manor. Upon being invited to attend a wedding in the local town, Tanjiro finds himself wondering whether Nezuko will ever be able to become a bride herself — just in time to hear two girls talking about a rare flower that is said to bring happiness to any woman who carries it…

The second chapter, For Whom, follows Zenitsu on one of his ill-fated attempts to escape from his slayer training. Unfortunately, on his way down the mountain he runs into his greatest weakness — a lady in distress; promised to a demon in order to save her cowardly stepfather’s skin. Zenitsu can be pretty insufferable when it comes to women (and this is definitely the case later in the book), but this story shows him at his best. He seems genuinely concerned about this girl, and considering how terrified he is of demons (not to mention how eager he is to continue with his escape), you can tell it takes a lot of courage for him to help her out.

Next up, The Trouble with Fortunetelling was definitely the most entertaining story of them all, but unfortunately also the most annoying. Set after the events of the Infinity Train arc, Zenitsu is accosted by a fortune teller at a crossroads and told “stay away from women for the rest of the day, if you value your life”. He then spends the rest of the chapter in hysterics, which is somewhat disappointing considering how well he had been written immediately prior. There are some great moments here though — Inosuke picking up a menu at a cafe and immediately exclaiming “I can’t read!” (followed by Tanjiro’s futile attempts at teaching him some letters) had me laughing out loud.

Aoi and Kanao is a great little expansion on the two titular characters, and it’s too bad that more people won’t read it. While Kanao sees significant character growth throughout the manga due to Tanjiro’s positive influence, Aoi feels somewhat neglected despite being set up as an interesting character at the end of the rehabilitation arc. This story gives her a little extra time in the spotlight and serves to flesh her out between manga chapters.

Finally, Kimetsu Academy Stories is a goofy re-imagining of the setting as a typical middle/high school. If you’ve seen the anime, you may recognize this concept from the shorts at the end of some episodes. As might be expected, nothing of importance happens here at all, it’s just a chance to have some fun with the characters. It got a few laughs (my favorite bit was Yujiro pretending to be sick every day so he could see Nurse Tamayo), but this was definitely the weakest one for me.

Overall, despite the fact that it doesn’t add a lot to the story of KNY at large, I liked this book quite a bit. The writer’s style is enjoyable and she did a great job of capturing the characters. I rarely read afterwords but I decided to read this one and it seems like she really likes KNY and was super excited to write a novelization, which was cute and heartwarming. I already have one of the other books (片羽の蝶, One Winged Butterfly) and I’ll be looking forward to reading that as well.

Now that my blog supports Japanese characters I can finally start posting the reading reports I’ve been accumulating. Over the next few days, a large number of posts will be back-dated across the last year and a half.

These reports were originally intended for 日本語と英語, a Discord community for people learning Japanese or English.

The long drought

It’s been about four years since I’ve posted regularly on this blog, and the reason is as simple as it is uninteresting: I really didn’t have that much to say. My former job, which dealt with anti-money-laundering and financial compliance, had me under heavy NDA to the point where I couldn’t discuss any details about the technology we were working with, let alone the day-to-day. We were in a continual state of slipping behind; always pushing back against management in an attempt to stop incurring technical debt, and always being rebuffed. It was a vicious cycle that I fed into by being willing to work extreme hours at the cost of my own mental and physical health — which only served to embolden upper management as they saw that we were capable of “working miracles”.

During this time of working long hours and fighting to keep RSI at bay, my motivation to work on personal projects was at an all-time low. I released the odd update for Glide but besides that, I did very little coding at home. Not only was I unable to write about my professional work, but my passion projects were so neglected that there was nothing to write about in the first place.

Something had to fill the gap left by my hobby programming, and by happy coincidence I had begun studying Japanese around the same time that I started my job. I made lots of missteps the first two years (more on that in a later post), but at around the two-year mark I had a breakthrough and started reading extensively, which turned out to be incredibly effective. I’ve been part of a reading club for over a year now (and have submitted a reading report every single week), but when I tried to crosspost my reports here, I found that my ancient WordPress install was still using a latin database charset and everything I typed would show up as ????????. Unwilling to risk losing my existing posts, I left it alone.

Last night I bit the bullet, nuked my entire website and reinstalled WordPress fresh. Fortunately my posts imported without issue (though some media references are still broken).

Since leaving my job I’ve had a lot of free time to work on personal projects; watch this space more details on that front. And with a shiny new database that supports non-latin characters, I should have a lot more freedom to write about what’s been going on with my life lately.

これからも、よろしくお願いします

Glide update: Tween overwriting

I’ve just added support for property overwriting to Glide, my Tweening engine for C#. This functionality exists in Actuate (a great Haxe library from which I’ve taken a lot of inspiration) and I’ve wanted it in Glide for a while now because it’s just so darn handy.

Imagine you start a tween off on its way:

// move image to (100, 200) over five seconds
Tweener.Tween(image, new { X = 100, Y = 200 }, 5);

…but then something changes, and now you want your image to travel instead to (X = 500) instead, and it should only take two seconds:

Tweener.Tween(image, new {X = 500}, 2);

At first this will work fine, but when the second tween finishes, suddenly the first one takes precedence again and your image will keep moving towards (X = 100). You could cancel the first tween, but that would also cancel the movement towards (Y = 200).

Now, creating a new Tween on an object that’s already being tweened will cancel the movement of any properties that are currently being tracked. In the example above, the new X tween would overwrite the old one, the original Y tween would keep on working, and there’s no need to manually cancel anything.

The old behavior is still available; just pass false to the overwrite parameter. I’m pretty sure that won’t be necessary in the majority of cases, but it does exist if you want it.

Stop looking to form gamedev teams

I frequent the Reddit /r/gamedev board, and it seems like every hour there’s a new post by someone looking to start a team to make some awesome game. The poster goes into great detail about the type of gameplay the game will have, lists games that inspired its design, and explains that he only needs a few people to help him out in order to get started.

He then goes on to list the roles that need to be filled; artist, programmer, audio design…finally wrapping up by describing himself as the “idea guy”.

I hate to sound cruel, but at this point I can state with absolute certainty that the project he wants to lead will never get off the ground.

One such topic was posted recently by a guy who wanted to make a game like Telltale’s The Walking Dead, which has been praised for its emphasis on branching storylines and player choice. I wrote a longish reply to help set him on the right track. Unfortunately, he deleted the post before I finished and I was unable to reply, so I’m copying it here.

My recommendation: stop looking to start a team so early on. It sounds like you have little to no experience with making games, and you’re going to need it. Teams that are founded by people with no experience end up falling apart and going nowhere.

If you want to get your feet wet, try out this tutorial for Twine. It’ll help you realize your goal and get a prototype together that is functionally the same as The Walking Dead in regards to choices and interactive storytelling.

Maybe partway through you’ll realize you aren’t actually interested in finishing it. That’s fine; it’s always better to ditch a prototype than a project you’ve invested tons of work into.

Or, maybe you’ll come up with something awesome and other people will look to team up with you and take it to the next level. That’s great! At that point you’ll be more than just the ideas guy; you’ll have demonstrated you have the talent and perseverance to stick through and see a project to the end.

Either way, it can only help you to start off by yourself. The type of people who would offer to join up with you based on your post are not the kind of people who have any serious experience.