Showing posts with label pictures. Show all posts
Showing posts with label pictures. Show all posts

Monday, July 28, 2025

First Win in Hades

I feel rotten. A damn headache has been throbbing on and off over the weekend, and I feel rotten about it. Damnation!

Recently, I finished reading Ouran High School Host Club. I think that the manga is much stronger than the anime. The dynamics of Tamaki with his family (father, and grandmother) are much more complex than whatever was portrayed in the anime. I call this the ``Hellsing effect''---where the anime is called into production before the manga has its main story arcs fully resolved, leading to some make-believe storylines just so that the anime can end its run at the correct episode count. The most blatant of this is the comparison of the Hellsing anime against the newer Hellsing OVA---``Incognito'' as the big bad in the anime made no sense to the narrative build up as compared to the final near-pornographic bloodfest showdown between the Major and Sir Integra Hellsing, as their underlings thrash London to fight the war that the washed up ghoul-Nazis of the Major had planned for fifty plus years after the second world war.

``But MT, the source material is almost always richer than the adaptation.''

Yes, that's the point. Which is why we should not be in a rush to make adaptations of stories without knowing how the major arcs' trajectories are heading. I'm not saying that the adaptors are bad---I'm saying that without having the original creator's direction, there will be a jarring change in direction when the plot holes from unresolved story arcs start showing up. Sometimes, even if the original creator is involved, they may not even know where they are heading since they are ``making things up as they go along'' at times (recall that much of the serialised works are paid by some set contract period, in which case the stories need to be crafted at a consistent-enough pace, with sufficient material to ``keep on going'' for the length of the contract). But at least the original creator's general direction can be sought and the plot holes may be resolved amicably within the adaptation.

Ouran High School Host Club is definitely a romantic-comedy, kind of like Kimagure Orange Road, but unlike the latter, I could actually stomach the former without going through hiatuses from reading. I think it's because of the near-surreal comedy that comes from the over-the-top nature of the clash between the high-class society of Ouran High School and the ``commoners' common sense'' deadpan nature of Haruhi/Ranka---it definitely feels more funny than jealousy inducing, even when Hikaru/Kaoru were showing actual jealousy against Tamaki.

All in all, I like the manga. And thanks to Eirian-VI, I can now tackle the offline version of Questionable Content, all 5.6k pages of them as at the crawl. I'm saying this now because The Adventures of Dr McNinja is no longer available at its original form due to the site being attacked. I have my own offline copy (of course), but for those who want to read this masterpiece of 2010s webcomic storytelling, a kind soul has uploaded it to The Internet Archive.

In short, what I mean is this: if there's something on the 'net that you enjoy, and would like to revisit it again in the future, there is no shame to find a way to make a copy of it. Because the adage of ``what goes on the 'net stays there forever'' is patently false.

``MT, what about DRM?''

Heh. What is morally/ethically the right thing to do sometimes has no support in law---in which case the law is not just and needs to be amended. The law is a set of rules that a particular society has agreed to abide by, and if they are created by humans, they can be amended by humans. Whereas morality and ethics are based on stronger absolute values that may only be judged by God---no one save God can change them.

------

I talked about Juufuutei Raden's Guide for Pixel Museum in a post from last month, and I am proud to say that I have finally finished all the 300+ puzzles. The nonogram puzzles were fun, but I preferred those that were associated with the artifacts than the ones that were part of Raden's memories---the former had interesting patterns, while the latter, being some selected part of some pictures that depicted an event Raden was in, seemed to be simpler ones based around basic geometric patterns instead.

So effectively, the memories section felt like filler, and the game would be stronger if they were taken out. But then again, taking them out might reduce the effect of the game as a soft introduction for the casual nonogram lover to the very learned/cultured (literally, not the ironic form of ``cultured'') VTuber that is Juufuutei Raden.

Overall, still loved the game, and am glad that I finished all the puzzles.

------

Ah Hades. I last talked about it nearer the start of the month, and I'm proud to announce my first win of the game.
It took me 60 previous runs to get my first win on the 61st, and it was with a weapon that I never thought I could ever win easily with (the Bow).

I was expecting my first win to be with the Spear---ah well.

The Bow was not easy to fight with---there was long-ish charge time before the attack can be made, and the AOE was quite shit. The damage from the Bow was also bad (but not as terrible as the Rifle I mean Exagryph I mean Adamant Rail). What made this win possible was largely through the power of the RNGod.

Heartbreak Strike gave me more damage with Weak as a curse, which was cool.

Explosive Shot changed the single-shot into a small AOE, but it slowed down the charging rate. This was rectified somewhat with Swift Strike that added back 30% attack rate.

Companion Battie helped me save one Death Defiance that I was about to lose at the boss fight of Elysium (that 2.5k damage against the solo Theseus meant that I could finish him off with one more shot even as my HP was inching to 0).

I could consistently best the Furies (bosses of the first biome of Tartarus), reaching near consistency against Lernie (boss of the second biome of Asphodel), and am inconsistent with Theseus and Asterius (bosses of the third biome of Elysium). Big bossman Hades (boss of Styx) was always hard, and I was only starting to reach his second stage.

The true MVP for the win is Smoldering Air with Aphrodite's Aid. This combination allowed me to spam Aphrodite's Aid consistently about once every 5 s, and the Charm that comes from the boon effectively interrupts Hades' laser attacks. That gave me more opportunities to land hits more often, needing 3/4 less hits than without the effects of Explosive Shot, and avoid damage as I fumble my way through.

And as you can tell in the screenshot of the victory, I got through the barest of my skin right there.

Honourable mention goes to Festive Fog boosted by Scintillating Feast---it added some additional AOE, and gave enough curses with Weak to allow Privileged Status to proc, giving an additional 40% of damage.

To think that I was contemplating whether to turn on God Mode for that 20% damage reduction that would increase by 2 percentage points for each death... there's no real penalty for using God Mode, but it does store the records separately from non-God Mode. I think I'm fine without God Mode, as shown through this first win. I did a meme run with all the Pact of Punishment conditions at Max, and didn't survive for more than one chamber. Bummer. I suppose it's back to the regular mode for now.

This first win is also special because I think this is the first time I actually had a successful run of some rogue-lite in a long while. I don't usually do well in rogue-lites because they tend to get a tad twitchy, and my reflexes are no longer what they were. Meta-progression in Hades is fun compared to say Rogue Legacy because it is so much easier to control, particularly with the meta-progression currency being separate and persistent as compared to in-run currency for in-run progression items.

And now, another 9 more wins to unlock the rest of the story. 💀

------

I wrote a new short story over at my prose blog, and I think that it caught some aspects of a narrative that I was hallucinating about that day. Not sure if it truly achieved what I wanted to say, but I think it is good that I'm writing things other than work reports, slide decks, and rants out here.

I suppose that's about it for now. July is fast reaching an end, and soon, it will be August with all the craziness that the appraisal period brings.

Oh and SIN city celebrates its GOTH BIRTHDAY.

...

I mean 60TH BIRTHDAY. Who the hell capitalises the ordinal suffix letters?

Till the next update.

Tuesday, April 22, 2025

Arakawa Under the Bridge My Dress-Up Darling

surreal
Having an oddly dreamlike quality
That's what Arakawa Under the Bridge is cited as in Wikipedia, though technically it is a surreal comedy.

I marathoned the last twenty-five chapters last night, and I feel wistful. But I am ahead of myself.

Arakawa Under the Bridge brings back memories of a bygone past. The first time I heard of this was near the end of my PhD-turned-Masters programme out in UIUC. I was hanging out with Alisa and loliponi, and she invited me to watch this anime with them. I liked the premise---it had that kind of whimsical quality that I enjoyed. We didn't manage to finish the season (or did we?), but I knew that whatever it was, it was not the end of the story, and I just had to know how it turned out, what with all the world-building.

Fast forward about a decade and change later, and here I am, finally reading the manga that inspired it all.

I like Arakawa Under the Bridge. It has that balance between slice-of-life (love it!), surrealism (confused but normalised in my head), with eventual resolutions that make one question whether the surrealism was only because I had chosen to view the manga for the most part from the lens of a normal person. The resolution of all the major events and plot points was satisfactory given the ludicrity of the initial premise, and it does serve as a warm and fuzzy ending that made me yearn for someone like a Nino in my life, as opposed to the flawed real people where one can never tell when they will take the love and trust you eventually feel comfortable enough to yield and throw it back in your face like some cosmic joke, making you question whether you can trust anyone that deeply ever again.

Totally not projecting. Absolutely not. No way. Nuh-uh.

Arakawa Under the Bridge---it's been out long enough. Here's the loveliest coloured 2-page spread that I absolutely love:
If you have no idea who everyone is, don't fret: go read it here.

------

Another manga series that I had finished reading recently (for a very loose definition of ``recently'') is My Dress-Up Darling. I love love love Marin Kitagawa's smile---just look at the cover in the manga's Wikipedia page. And just in case you think this is only possible for a drawn character, think again:

That's the singer of the anime theme cosplaying as Marin. And she has the same damn smile too!

And no, I didn't follow the anime, nor do I have any intention to. These days, I find that the manga of an anime series tends to be a much better read/expenditure of my time.

I bring up My Dress-Up Darling here because of its apparently abrupt conclusion, where there seem to be new story arcs that are being set up that can easily bring on more adventures for Marin and Wakana. Real world issues on the mangaka's health/schedule aside, I think that for slice-of-life type stories, there's hardly ever a good place to stop, for the simple reason that life simply doesn't just stop there once an arc is over. It just keeps on going, with new arcs slipstreaming in even as other story arcs are resolved.

At some point, the creator of the slice-of-life needs to decide when they are done with the stories they want to tell. And in this case, moving on from the confession in the penultimate chapter into a time-skip where Marin and Wakana are married, with a hint of how their lives are successful and still wonderful together feels like the right kind of end for a slice-of-life.

Yes, there are new big story arcs that never got ``resolved'' (did they ever find out that it was Marin who was Haniel?), side characters whose stories seemed to have gone nowhere (but they are side characters?), and it did feel rushed. But I think it is important to trust in the creative process---not everything must follow a standardised template. The templates are just guides---once one has mastered the lessons on what the guides are trying to teach, it is time to ditch them and find one's own creative voice.

I know I hardly ever talk about manga and what-not, or even review books that I read in general, but I suppose some of these things have created enough of a disturbance/resonance that I feel like saying something about it.

Till the next update then.

Friday, February 14, 2025

Ally

Looking at the world over the past few days, it made me wonder: what counts as an ally?

Traditionally, there are two main ways for establishing an alliance:
  1. Shared interests;
  2. Shared ethno-cultural history.
As far as I can tell, for the most part of history, that of shared interests was the dominant factor towards how two or more entities declare themselves as allies. It is only after a certain semblence of peace has settled in that the idea of a shared ethno-cultural history become a viable means of establishing an alliance.

The reason why I am bringing this up because we are fast approaching a turning point in modern world history where peace may be more fleeting than anyone is willing to admit. The key reason I think that is leading us down this path is a confluence of two occurrences: that of the rise of ``leaders'' who think that they can exploit the complacence and lethargy derived from seeing nearly fifty plus years of peace to amass ever-greater amounts of [political] power, and the general malaise that comes from a population where the majority's biggest concerns aren't necessarily about bread-and-butter issues, but on when they can get their next luxury kick fix.

That of exploitative ``leaders'' amassing power to exact their own will to their own benefit is something that is likely to be talked to death by this point. But the malaise of people---that is something that is unironically new. The echo chambers that made some groups of people think that the highly vocal minority are the majority are the same ones that make the people believe that ``someone'' is out there who are going to ``do the right thing to save them''. Ironically, in the old days where communication channels were less ubiquitous, the grassroots movement was likely to be much stronger, as seen by the sheer mass of the organised movements to protest (both peacefully and violently) against the injustices of the day.

Sure, we still have organised movement now, but the scale and the ferocity aren't as they were before. Perhaps the affluence of the middle class has made that level of society feel like that they have much more to lose should they choose to go against the authoritative figures who are dealing out the injustice; this is more so the case when taking into consideration the near elimination of pseudonymity through nearly twenty years of ``social media''.

Or maybe things haven't gotten to the point where the mob finally acknowledges that they truly have nothing else to lose, and therefore they might as well give 'em hell before their lives are absolutely wrecked.

And perhaps a miracle might happen then.

But what do I know, being the armchair ``analyst'' I am?

------

Today's a break day for me. 2025--02 doesn't have any public holidays, and so I just picked some middle-of-the-month Friday to enact my own kind of break day.

I got back into Minecraft, having updated my long-running single player world to 1.21.4, which has a lot of new things for a ``minor version'' update from the 1.20 series.

To be fair, 1.21.4 had been out for quite a while, and it was only in the recent week that I updated to that version. The main reason is that comment I just made: for a ``minor version'' update, there was just too many new things going on under the hood, to the point that some of my favourite Minecraft mods like Fabulously Optimise, Nautilus3D, and even minihud/malilib are barely keeping up.

It reminds me too much of how the Java version worked out. At some point, the major version was so stagnated while the minor version number was racing on to the point that they just dropped the major version number and rebranded the entire thing by the minor version number, which led to nonsense like J2SE 1.4 that is then followed by J2SE 5.

Minecraft version updates aside, I continued with the reworking of my Nether Hub. The rework involved expanding the size of the Nether Hub to fit all the rail-lines on a single expanded floor, and to re-arrange the rail-lines such that they are pointing closer to the actual direction of the destination as opposed to whatever spaghetti nonsense that I had with the two-storey organically mushed together set up.

One of the things that I was wrestling with was the viability to build ``diagonal rails''. Part of the reason why the current Nether Hub rail system is such a mess is because I didn't have a good way of building ``diagonal rails''.

Well, I finally figured it out.

So, the basic diagonal looks like this:
The blocks are staggered out in a regular 45° angle, and the regular rails will automatically align themselves. My nether rails are lined with glass blocks on the side to prevent getting smacked by ghasts due to line of sight, but I cannot do that in this diagonal set up---the corner will literally clip into the minecart as it is going through and end up losing all speed. Glass panes work well, but they didn't connect ``diagonally'' with the blocks making the floor, so I extended out the floor with iron bars, and then have the glass panes sit on them.

That first diagonal was unpowered---momentum and the powered rail before and after the diagonal was enough to keep the minecart moving. I can't just add powered rails to the diagonal due to one particular quirk of Minecraft rails---the powered ones cannot ``bend'' left or right 90° the way the regular rails do.

For the short distance earlier, it was not a problem. But to have an extended diagonal rail without powered rails is just not a good idea. And there's the whole lighting problem---the regular orthogonal rails just had torches on the walls (appearing left when heading towards the Nether Hub, and appearing on the right otherwise). Glass panes solved the diagonal connection problem, but they cannot accept torches.

But I came up with an idea, and this is how it looked like:
I used a redstone block (I'm lazy) every 8-ish blocks along the orthogonal axis and a powered rail to give that kick. It breaks the 45° to something that is more akin to 44-ish°, but it does allow for a very extended run at a speed higher than the orthogonal (~11 blocks/s vs ~8 blocks/s). In a similar vein, every 8-ish blocks along the orthogonal axis have a lighting block (Jack-o-lanterns in my case), and these are interleaved.

Even when the diagonal rails were running through self-dug tunnels like in the picture, it was still necessary to put up the glass panes to take away potential spawn spots---otherwise the zombie pigmenpiglins will start to spawn, and then walk around, blocking the minecart's movement.

And that's about it. The next part requires a diagonal rail, but there's also a height-level difference---I'm wondering if I can find a way to mix these three-axes changes at once.

Till the next update.

Saturday, February 01, 2025

Eirian-VI is Here!

Eirian-VI has arrived.

After about two weeks, my Kindle Colorsoft has finally made its way to SIN city, as have all the other things that I had purchased on either amazon.com or amazon.sg.

And lemme tell you, Eirian-VI is gorgeous.
So, using SCP Series 4 volume 1 as a sample, you can tell that the colours are there, and are fairly soft/subtle. While most people complain (and also have pictures!) about how the Colorsoft was ``blue-er'' than previous black and white Kindles, you can tell that it isn't so in this case---that's because I can tune the ``warmth'' slider to make it as red as I want to. To be fair, this is at warmth level 3 on colour level standard (as opposed to vivid), compared against to zero warmth change in Eirian-V.

Do I have complaints? Just one---colour is only available on ``native'' Kindle file types, which in this case is Mobi. I only realised it when I tried loading up a PDF that is scanned (and with colours), and it showed only the regular monochrome set up.

Is that a deal breaker? Not really... I am completely fine with reading most of my material in black and white anyway, and thanks to Calibre, conversion of the PDF to Mobi is but a click or two away.

Not ideal, but a perfectly serviceable solution.

That yellow line thing that many are complaining about? I do not see it, so it's fine.

And that's a wrap for now. Till the next update.

Monday, September 02, 2024

Part Two of Pain: Done

Ah... Monday. And tomorrow I have to be on course for two days to officially learn the ropes of proper goal setting and appraisal for my people (it's basically SMART).

But for today, or whatever is left of today, I get to chill due to being on leave.

Yesterday saw the successful staging of the concert with King's Flute Choir at Esplanade Recital Studio. That is actually the first time that I was playing at the Esplanade complex, and while I have explored much of the publicly accessible areas on my various ``annual pilgrimages'' to the place, I was simply not prepared for the warren of mazes that comprise the back stage.

Entry is naturally controlled---a performer's pass needed to be obtained from the security office (main from the B1 parking area, or the satellite one opposite from Marina Square). Once inside, it was just corridors upon corridors of rooms, equipment, and signage pointing to places. The first floor was largely towards the main concert hall, and since I entered through the main back stage door, I had to filter my way back towards Lift CH 3, where the Recital Studio can be reached on the second floor.

It was a real doozy in the beginning, but I soon got the hang of it.

The performers' rooms were spartan and utilitarian---dressing tables with mirrors that had strong lights that could be used to assist in make up, attached combination toilet/shower room, and even self-serviced combination lock lockers for any other things that one might want locked away. I spent much of the time outside of sound check and the actual performance in one of the rooms, just chilling, or working on some of the more difficult parts on Davie, sharing the room with fellow contrabass flautist, the double bassist, the harpist, and a few other low flute folks.

That is, until we started getting exiles from the other performers' room, mostly to escape the piccolos that were doing much of the same last-minute practices that I was doing. It's understandable, and in between their own practices and my general pre-performance ``any more work I am going to put in is going to do fuck-all'' attitude, I shot the breeze with some of my fellow performers.

The concert went through as well as it could, despite my own bumbling here and there (I'd like to think I cover it well enough that I was tolerated due to being one of only a few low flute players). GY and a few folks from TGCO were there to watch, and they all had a good time, with GY particularly impressed at the quality of the musicians (as it should be---the core players are actual professionals). I caught up with the TGCO folks after the concert for drinks at Harry's, while GY had to run off, while suggesting that we catch up again some time later.

Davie did well---I think that I definitely need to level up more as the player. I've had low flutes on hand for 8 years, ever since I first got hold of Mio, but I don't think that I had really put in a serious effort to develop my low flute techniques more strongly, mostly because I never had the need to play it ``big'' (like in a flute choir) before. Much of the time, it was mostly playing melody lines an octave lower, or that one time I was covering for the cello, which explains my rudimentary control over Davie and Mio.

But the key thing to note is that for bass (and later on, contrabass) flutes in the flute choir setting, that pesky low-C is used way more often than might be expected. And this is something that I haven't really been working on, which prompted my earlier comment of needing to put in serious effort to develop my low flute techniques more strongly. The use of the low-C was so often that I had to abandon the use of the Oval-8 splints on my right pinky, just to avoid the problem of numbness that I got the first time I was drilling through Ruslan and Ludmilla and William Tell. The Oval-8 splint did its job of holding back the hyperextension of the proximal interphalangeal joint of my right pinky, but due to the sheer amount of force I was pushing through holding the low-C due to poor technique (and a bit of imperfect maintenance of Davie due to no COA done since purchase), the splint was crushing my nerve in my finger, causing the finger tip to be tingly for days after.

So, no Oval-8 splints. But the irony of course is that with more strength in the pinky (through drilling on the difficult parts in the pieces), the less the hyperextension becomes a problem because of the increased tension forces of the muscle that pulls the finger closed.

I'll probably send Davie in for COA at Windworks when they have an open slot.

------

So that was yesterday. What about today?

Well, I paid good money for 120 min of getting beaten up in a controlled manner to remove the pain that has been plaguing me for the whole month (I went for a 2-hour massage).

My left shoulder was shot (my posterior deltoid was messed up), and my lumbar triangle was giving me random-ass pains (probable erector spinae strain, with possible strain in one of the deeper gluteus muscles). The masseuse beat the shit knots out of my muscles, with greater focus on the shoulders, but with good enough focus on the back muscles and lumbar triangle that after the session, I only had the ``good'' sore with no remnants of the original pain.

And anyone who claims that they can go through a massage sleeping... is probably lying or have told the masseuse to go easy on them.

For me, massages have always been an uncompromising assault on the knots in my muscles through skilled application of force and pressure. That kind of force application does not cause damage to me in any way, but it does trigger a sensory overload that is either ``sour'' or ``pain'', where the ``pain'' here isn't the kind you get from banging a body part on a hard object, but the kind of resistant pain a bundle of highly tensioned relaxed muscles pushes against the force that is meant to forcefully relax them. I am actively awake and completely aware of what is going on, controlling my breathing to go with whatever the masseuse is currently working on, to ensure that the misfiring sensation of ``sour'' and ``pain'' from my nerves do not weaken my resolve in allowing the tensed relaxed muscles to be treated.

And then I had a nap or two in between, with some diet-defying choice of food to reward myself for no good reason.

In the meanwhile though, I am totally not addicted to shapez 2. Definitely not. Here's a screenshot of the ``Operator Level'', a sort of long-term measurement of the staged cumulative production of various milestone shapes.
See? Totally not addicted. I absolutely did not set up my factories, and then kept the game running in the background to amass the numbers needed. I also did not rework some of the larger space-platform machines I designed to improve the production efficiency to ensure that I could fully stack up the space belts to deliver the full 180×12/min rate of shapes.

------

With all that, part two of pain is also done.

Part three is coming up soon, and hopefully I also have good news for that when the time comes.

Meanwhile, that's all I have for now. Till the next update.

Wednesday, August 16, 2023

Counter Tweaking 5×10 and Font Releases

I think by now, a theme be emerging, especially those who have been reading my blog entries.

I mentioned before on how I didn't manage to do the counter tweaking I did for my 7×13 font for my 5×10 font, and how I have no plans for it?

Well, I've gone done it.
I was not wrong before---tweaking the counter the same way that I did for my 7×13 font did look like crap because of the much smaller horizontal extent. The trick then was to be more careful in choice, and tweak no more than one of the junctions. As for b and d, I didn't even bother to do anything with them, which gives enough variation to make things look interesting and sufficiently different.

And speaking of tweaking, I finally decided to just release my pixel fonts for download at my personal domain. I've re-organised that ``computer stuff'' page a little, creating a new section for these pixel fonts, and putting my old console slim font in it as well.

Naturally, both the featured fonts have their associated glyph sheets, while I didn't bother for the console slim font because the code page that it supports (code page 858) isn't really well supported in not the [Linux] console. I did try to set it up as a Windows font the way I did for 5×10 and 7×13, but it was poor, so I've put it aside for now.

I think that's all I care to write about for now. I'm tired, even after having just taken a mid-lengthed break of nearly a week.

Till the next update then.

Thursday, August 10, 2023

Counter Tweaking

Ah Thursday, the day after National Day, and when I'm [still] on leave.

What a day.

First off, after ranting past stupid o'clock and crashing out shortly after, I found myself awake at 1000hrs later in the morning. Some time was spent catching up on the ESA Summer 2023 VODs, before I worked a little bit more on my 7×13 bitmap font.

``MT, didn't you say last time you were basically done?''

So I did, sort of. There was one last tweak that I was considering, and it involved how the counters were presented in characters like abdgpq. If you looked closely at the [corrected] character map from the previous post, you'll find that the counters of such characters can be roughly described as having parallel lines connected up with the vertical spans where they exist, as opposed to a more rounded feel the way one might normally print it out.

It's a minor shift of literally two pixels, but I think it was important, partly because of how Atkinson Hyperlegible shows how such rounded off counters do present a clearer profile that can be more strongly differentiated from the capital equivalents. I did the change, tested it out, and liked what I saw:
It's subtle, but it does look much nicer and less synthetic. I am thinking about doing something similar for the 5×10 font, but smaller horizontal extent used to define the counter made the application of the same pixel trick did not work as well, if at all. So no plans for that for now.

Apart from tweaking my 7×13 font yet again, I also got more runs in for Halls of Torment, unlocking even more characters, and having enough progression in the meta that my toons do not generally die easily any more.

I also made some progression in Shadow of the Tomb Raider, with the in-game progression estimate hitting 90%.

Hmm... I think that's about it for now. I'll probably go do one more run of Halls of Torment, then turn in for the night---I've got places I need to be tomorrow, and I really don't want to run around half-cocked/asleep.

Till the next update then.

Wednesday, July 26, 2023

Tweaks and Adjustments to 5×10 and 7×13 Bitmap Fonts

Oof, that took me a while, but I think that I'm much more satisfied with what I have now than before.

Continuing what I began back in the day for the 5×10 bitmap font, with a more recent set up with the 7×13 bitmap font, comes a new iteration of both bitmapped fonts.

The gist for this iterative update is about following fixing the fonts to fit some of the readability requirements that Atkinson Hyperlegible and Intel One Mono Typeface have stipulated.

``But MT, you're trying to do readability adjustments, on fonts that are so small that everyone (who isn't you) who sees it complains about it?''

Yeah... shut up. (=

Without ado, I'll just unceremoniously put in the 5×10 font here:
And here is the 7×13 one:
And of course, after doing this for a while, it is only now that I realise that the mapping of the grid to the glyphs displayed [under CP-1252] is wrong---all the ``funny'' whitespace/undefined glyphs remain undisplayed.

🤦

I'm keeping the original versions as uploaded above just so that it is easier to visually/automatically do a comparison between the new and old forms.

So anyway, here's the corrected versions for 5×10:
And here's the corrected version for 7×13:
The main changes on the ASCII portion of the fonts is is about fixing how the 8 looks to make it more distinct from B, and adjusting how { and } looks so that they are super distinct from the other three types of enclosing parentheses/brackets/``angle'' brackets. There were also some alignment problems earlier that I corrected in this round. I also did a sweep on the upper-ASCII portions, just to make sure that they are sort-of consistent and less broken (see character 0xf7 for the 5×10 font, and characters 0xa9, 0xae for the 7×13 font).

Overall, I'm quite pleased with the result. The next step is figuring out how to generate the associated fonts so that they are usable in Xfce.

Till the next update.

Wednesday, July 19, 2023

7×13 Font?

This entry is an extension to a theme that I started from some time ago about bitmap fonts.

So, if you recall, I recently got ahold of Eileen-III. With her 2560×1600 resolution on a 16″ screen, using the 5×10 fonts is a great way to migraine central.

I had been using Unifont adjusted to be monospace-friendly set to scale down from the default 8×16 to 7×13 just so that I can have at least 81×2=162 horizontal characters under a half-screen set up (the math works out to be 1280/162∼7.9=7 pels per character width).

It worked fine, but man it looked ugly. This is generally true for regular vector fonts when we scale it down to the point the mechnical scaling/anti-aliasing starts to destroy the font due to how there is no good way for the text renderers to correctly position pixel-equivalents at pixel scale without losing contrast. When the width of a stroke is down to the width of a single pixel, contrast starts taking on a much outsized role, and that's why some of the best small/tiny fonts are hand-crafted instead of relying on auto-scaling via math.

And in this case, the Unifont version is just ugly.
Just look at it: broken 0 and }, X and Y are suddenly spouting umlauts, and all the glyphs that are supposed to be round at the x-height have a sharp corner or two.

Since I was sick of it, I started to look at the small stash of hand-crafted bitmap fonts that I had lying around. The 6×11 font looked pretty good for the display set up that Eileen-III had, but there was just not enough spacing in it. On a lower resolution (but with comparable physical dimensions) display, a single pixel space was adequate, but for the particular display that Eileen-III had, it was just too small.

So, starting with the 6×11, I expanded it to 7×13 by adding one more column of blank pixels on the left, thus centering all the glyphs (the original 6 pel width used only the first 5 pixel columns for the glyph art work), and added two more rows of blank pixels on the top. I then tweaked some of the oddities that I missed from the 6×11 font, including adjusting how my 6 and 9 look, as well as adjusting the positions of the different types of brackets/pseudo brackets to better fit the larger cell. I also adjusted the overall shape of the glyphs to better match my 5×10 font, in the sense that they looked much closer to how I would envision a good high-resolution super-scaling of my 5×10 font to 7×13 would look like. And here it is:
There are still some things that I could tweak more still, but I think it is excellent for now.

There was one negative side effect of using this 7×13 bitmap font instead of the weirdly scaled down Unifont---CJK characters under this font look much worse than that of Unifont. Unifont will scale its 16×16 CJK fonts to fit into 13×13, which looks remarkably good considering that its complexity meant that any form of approximation looked better than the approximation one saw with the simpler Latin-1 glyphs.

With this font, the CJK characters made the text renderer pull up some other fallback vector font, which again had weird (in this case, worse) scaling and contrast issues that made them illegible.

Is this a problem? Yes. Is this a big problem? Eh... not really. I don't usually need to operate on stuff with CJK when I'm using my ``optimised'' text mode---at that point I will literally pull out my full-scale Unifont set up instead (i.e. 8×16 for single characters, and 16×16 for CJK characters).

And that's it for this post. Till the next one then.

Sunday, May 07, 2023

NieR: Automata and ESV-KJV-CUV

And here we go, Sunday once more. The week flitted on by, hardly registering more than a blip in my psyche.

Why so? Who knows...

Anyway, I finally finished NieR: Automata. It was a nice romp, a little less punishing than the likes of the Devil May Cry series, but it does leave behind that strange aftertaste of existential dread. I'll be honest, this is not the first time that I had seen the gameplay of NieR: Automata---it shows up on and off for GDQ and ESA events. Even Ina played this ``live'' without speedrunning it.

So I'm no stranger to the main storyline. But that doesn't mean that there is no effect on me.

The existence of the androids... was predicated upon a lie. They were supposed to be there to help win the planet back for the humans in exile from the rampaging machines, but the truth is, gur uhznaf unir orra rkgvapg sbe n srj gubhfnaq lrnef, naq gur gehr ernfba sbe gur naqebvqf' rkvfgrapr vf gb tngure rabhtu qngn gb perngr na ribyirq irefvba bs gurzfryirf va n gjvfgrq sbez bs frys-crecrghngvba. Vg vf abg vebal gung bar bs punenpgref vf anzrq Cnfpny, nsgre gur jntre gung ur znqr nobhg orggvat ba Tbq'f rkvfgrapr.

All I know is that there are things that I don't know, and if I were to strictly go with a Bayesian interpretation, then it would make more sense to bet with the majority, even for things that we do not necessarily have proof for/against, especially for outcomes that we have no way of knowing beforehand.

That's what one would normally call ``faith''.

But back to NieR: Automata. It's a fun game, though the colour scheme is kinda drab and clinical. The only places where there was more colour was in the amusement park, and even then it was still dreary. Combat was heavier on the button-mashing, and that includes dodging. I didn't like the hacking parts, since it involved playing some neutered version of a bullet-hell, but it was still alright.

And that's one more game completed. I wonder what I would like to work through next. Maybe Fallout: New Vegas before I completely lose the plot? Or perhaps something more narrative-heavy, like Disco Elysium or Grim Fandango?

Who knows?

------

In other news, I created a new monster. I took the book-summaries from NKJV, the text, footnotes, and section annotations from ESV, and combined them with the text of KJV and CUV to create a three-column ESV-KJV-CUV parallel text Bible with NKJV summaries per book.

``MT, why do you need to do this?!''

So, here's the thing. I prefer NKJV's presentation of the usual two-column with centre reference set-up. But PPCC has switched over to ESV as being the primary preaching Bible version from KJV (note that it's not the new version). ESV is fine, but the version I have is not in a nice 2-column format---I rectified this previously, and created a 2-column ESV with NKJV summaries. For some verses though, KJV presents a more poetic form, and the KJV I had was... well just see for yourself. I didn't want to cross-reference between these two documents through swapping to and fro the PDF readers, and thus decided to combine them into one, which I did through extending on my previous work.

Then of course, CUV had to come into the picture. It is the official Chinese version that PPCC uses for the Chinese congregation, and frankly, I've always felt that there were many times when the Chinese translation of something ended up being more elucidative than expected.

But doing Chinese (or CJK in general, really) in LaTeX was a pain. It involved the following:
  • Using the CJK LaTeX package;
  • Preparing the magic environment of \begin{CJK}{UTF8}{gkai}{...}\end{CJK};
  • Realising that creating too many of those CJK environments consumes all available memory in LaTeX, causing a crash;
  • Wrestling with the multicol package to create 3 parallel columns, but not letting any longer column to overflow into the next and screw everything up (I just used set up of \begin{multicols}{3}[some_title][1.5in] ... to give enough end space to avoid this altogether).
But it was all done. Here's how the three columns look like, citing from John 3:16--21:
And that's about it I suppose. I now know how to incorporate large amounts of Chinese writing into LaTeX.

And with that, I conclude this entry. Till the next update.

Monday, April 03, 2023

Stella [Nagahara]

It has been a while since the last entry. Things are progressing well enough in life, and I thank the Lord for that. That said though, with this month (and thus the second quarter) finally starting, the road ahead is likely to see even more things that are happening that will strain and stress every fabric of my being.

But first, for something happy. After thinking and saving for nearly eight years, I finally got ahold of a Nagahara MINI in African blackwood, with the basic M1 headjoint.
I call her ``Stella [Nagahara]'', named after Stella Chang, better known as 张清芳, a Taiwanese songstress active in the 1980s/1990s who is well-known for her clear vocals and ability to hit the high notes. She is contemporaneous with Teresa Teng, but I decided to name my new MINI after her instead of Teresa because I find that Stella uses high notes more frequently than Teresa does, and that they always sound so clear.

That's what my MINI's timbre is like.

I will just copy wholesale what I had written in my email correspondence with Nagahara Flutes:
In terms of first impressions for the sound, it sits between the conical bore set up of a regular piccolo, and the cylindrical bore set up of the all-metal ``marching'' piccolo. For the repertoire I play (more relating to the Chinese orchestra than regular piccolo/flute music), it is of the right timbre. The added range on the low side definitely helps, though I definitely need to get used to the different resistance needed for the high notes -- almost all my flutes (used generally here to include the piccolo and dizi) vent out much earlier than the extended tube. General responsiveness across the three main registers are quite high, and the mechanisms were nimble enough to make me forget that I was playing a keyed flute as opposed to the simple one often found in the dizi (my primary instrument).
After taking Stella into rehearsal on Saturday, I have a bit more to add: she can really go high without sounding shrill, hitting concert C8 and C♯8 quite nicely, and not displaying any of the usual problems of intonation for piccolo with respect to the concert B7 note.

I would say that Master Kanichi Nagahara has achieved his exact aim of making a miniature flute with the MINI, as opposed to ``just'' a piccolo with extensions for concert C♯5, C5, and B4. The resistance (used here as a catch-all for amount of effort required to change the embouchure + air stream to sound a note at mf) is very consistent, similar to that of my S.O.S., which shares a similar geometry as it is an Armstrong 204 that has a cylindrical body bore. It is actually easier to play on Stella than the equivalent G 梆笛 for the same set of high notes, but this is hardly new since almost all piccolos play easier for the high notes once one goes beyond concert C6.

``But MT, why did you suddenly decide to pull the trigger and buy now? I thought you were `scouting around to learn more on getting a better piccolo'. What changed?''

It's hard to really say what was the big trigger. Part of it was definitely about the recollection of a statement that Sean made some time back about how Kanichi isn't exactly getting any younger, and my realisation that throughout these eight years, there was still only Nagahara Flutes that made an instrument just like the MINI. My shopping list did posit the option of either the MINI or the Braun ``small flute''. I had tried the Braun small flute and liked it, but it went down to concert C4 only. It's subtle, but if I really wanted a viable option to cover the 梆笛 range comfortably, it had to go do the concert B4 (this is the lowest note of the lowest dizi that ``counts'' as a 梆笛---the E 梆笛).

And thank the Lord for that quick thought of just pulling the trigger---I initiated the email conversation near the end of February 2023, and managed to commit to an order before the most recent price revision that saw an increase in prices across the board.

That said, I should really remove all the other piccolo options now that I have my End Piccolo, but I'll just leave them there for now as a record of high-end piccolo makers/marks.

------

With the something happy said, we'll progress to something a bit more serious. After two plus years of following Christ, and a year and change after baptism, it's finally time to actually serve instead of just being served. I don't have the kind of easy-friendliness that many long-time Christians have (I wonder if I still have trauma that I haven't sorted out, or if I'm just not good enough yet), and therefore can serve only in capacities that deal with people but in an abstract way. I have indicated interest in serving the music ministry at church, and will be going for a simple audition and a chat with the deacon in charge soon. I did send the music ministry folks my battered-ass performance resume---I'm no professional by any measure, and much of my experience comes from the Chinese orchestra tradition at an amateur level.

If God is willing, I will pass the audition and serve as a musician in the music ministry. That's the least that I can do to contribute back to the church community, seeing that I'm not good/willing to work with children, not friendly enough to be part of the greeters' ministry, and not street-wise/savvy enough to support any of the many professional skills-related ministries (why would the church want a computer scientist who has machine learning background serve using the aforementioned ``professional skill''?).

I could write more, but I suppose some 900+ words are sufficient for now. Till the next update then.

Saturday, October 22, 2022

lang-aware Domain

Yeah yeah, I know. No word from me for a while, and then suddenly two posts in quick order.

🤷‍♂️

I finished reading The Sandman series once again. The last time I read it was back nearly 10 years ago, from way back when. To say that The Sandman was influential to me is an understatement---I have previously written about how Death of the Endless is my handphone wallpaper, as evidenced from 2015, and once again in 2013. That was roughly when I started to fear less about Death and think of Death not necessarily as a cute goth chick, but as an inevitable old friend who will come visit in time to come.

Dream though, he's too bloody moody in his Morpheus aspect. Reading the CBRs in the full glory of my vertical monitor is a much different feel from reading it off the puny tablets and even punier phone.

But I didn't come here to write about reading The Sandman, and catching up on Komi Can't Communicate (till Chapter 376) and One-Punch Man (till Chapter 172), though they are tangentially related.

I recently updated the Unifont version from 13.0.04 to the more recent 15.0.01. While doing that, I observed that I was having a Variant Chinese character problem (this is where the tangential relatedness occurs).

First, have a look at this simulated screenshot (font used is Unifont):
Look carefully at the third CJK character after the punctuation parentheses in the second line for each (underlined in red).

Do you see a difference?

You should. The first one is the 素 glyph, rendered in in Chinese, and then later on, rendered in in Japanese. They are of the same Unicode codepoint---32032---but have different forms as determined solely by the context of the language that is used.

If you do not or cannot see a difference in what I wrote in this entry (as opposed to the screenshot), it is likely that you are viewing this on a set up that do not have the correct fallback fonts installed, leading to some strange glyph being rendered instead.

In any case, the screenshot shows the outcome of the quality of life improvement I did. In updating my hosted copy of Unifont, I also uploaded another version of Unifont that is tuned for Japanese text. I also replaced the TrueType format with the OpenType format where applicable, solely to transfer less bytes overall when these fallback versions of the fonts are used to handle combining character algorithms (about 4.8 MiB compared to around 15 MiB).

Now that the outcome is demonstrated, let me talk about what exactly I did.

I went through my entire website and added lang attributes to all text fragments that deviate from standard English. For each of the lang attributes used, I defined a list of fonts (most likely to appear on the Big 3 operating systems) and styles to best represent it. These included:
  • ``fonipa'' for International Phonetic Alphabet;
  • ``zh-Latn'' for the romanised pinyin (think dizi and the like);
  • ``zh'' for regular Chinese; and
  • ``ja'' for Japanese.
These language tags also allow anyone else who have different settings for rendering different languages (see this old rant about CJK font sizes).

I know that it is a short blurb of what I did, but it involved quite a bit of digging and updating through all the files. But all of these are worth it as it helps improve the readability of my personal domain.

And that's about all I want to talk about for this for now, I suppose.

Till the next update.

Friday, September 23, 2022

Prototype 5×10 Font Arrives!

Ooo... buckle up. This is a sequel to Stupid O'Clock is the Font of Stupidity.

Our sequel begins where the math was grokked. To wit:
For those, I can bring the terminal screen to use the full extent of the 1920 horizontal pixels. Easy. And without going that far, Vim has no text decoration that eats up cells, which gives us the full 80 characters (I refuse to use line numbers on the side of the simple reason that the ruler in my status already shows the line number of the cursor). Zipf's Law suggests that very long lines are rare, and thus as long as I can find a font for my terminal emulator to handle about 161 characters for half the screen (math says that each character needs to have about 1920/2/161=5.962 pixels), I'm gold.
That 6×11 font that I put together is displayed here:
In comparison, this is the 6×10 font of Opti Small:
Thus, the last time we ended that post, it was decided that I would stick with Opti Small because I figured that interpreting the width of 5.962 pixels as 6 pixels was good enough to support the vertical split screen with the 80-character line length limit.

Well, after nearly a week of using that set up, the answer was a resounding no.

Even a simple vertical split would leave one screen be good at showing only 79 characters for some reason, and with the word-delimiter soft-wrapping option that I use in Vim, it made everything very misleading.

Thus I had to choose the next best width, that of 5 pixels. There were, unfortunately, some problems. I mentioned in my previous post that CG Mono had some problems. Specifically, this was what I said:
It was fine, but still looked a bit off because the `>' glyph was bogus---it lacked the crispness that came from bitmap fonts, and looked like some other font was chosen to render it instead.
More specifically, this is how CG Mono looks like when it is at 7pt (or 6×10):
Notice that weirdness in the `>' glyph---I didn't do anything. All the screenshots are directly taken from whatever was rendered in mintty.

The only font that I had lying around that had 5 pixels of width was CG Mono at 6pt (or 5×9):
See, the problem with this font is that the parts where it is used most often (i.e. the characters between 0x20 to 0x7f) have instances where they are smushed into each other in the bid to preserve some of the fine detail (like the tines in `M', `w', and the like). Compare this against the sample of Opti Small above---Opti Small is so much more readable with the enforced vertical pixel of spacing.

The only problem was that Opti Small was not 5 pixels wide---it was 6.

And so, I decided to take Opti Small as the starting point, and make my own 5×10 font.

Why 5×10 and not 5×9 like the one in CG Mono? It's about the verticality (108 lines versus 120 lines) with the overall need for spacing, and the reduction of the number of dimensions of downsampling I needed to worry about (I only needed to eliminate one column of pixels as opposed to one column and one row of pixels).

The general observation here is that while the Opti Small font has each character sitting in a 6×10 cell, the actual character is designed to keep within a 5×7 grid, not counting descenders and ascenders. This means that Opti Small actually has a rough 3-pixel of whitespace that separates each line. Comparatively, CG Mono at 6pt (or 5×9) had only a 2-pixel of whitespace that separates each line. It doesn't sound like much, but at these scales, that's a huge difference between quickly deciphering what the character is from developing a headache.

Thus my real task is to approximate a 4×7 character out of the 5×7 that Opti Small uses. It was mostly quite straightforward---I followed these rules of thumb that I came up with:
  • Eliminate the third column of pixels if possible;
  • If a key feature of the glyph requires pixels in the centre, offset it such that we eliminate pixels to the left of it;
  • When in doubt, eyeball and trust what the eyeball says.
That led to this current version of my cobbled-together 5×10 font:
The eagle-eyed might ask: how did I manage to do this so fast considering that I had mentioned that I was test running the set up for the week before deciding to change things up more?

More pertinently, how did I begin with a bitmap of Opti Small that was accurate and without excessive amounts of labour?

The answer lies in FontForge, and the use of the BitmapFont section of the SFD file format. I loaded the .FON file of Opti Small into FontForge, and exported an SFD file. Then I extracted out the BitmapFont section, and wrote a simple parser in Python3 that looked out for each BDFChar command before using base64.a85decode() to decode the bitmap string and write it out in a file format that was compatible with Simon Tatham's font tools.

From that generated file, it was just a straightforward exercise in adjusting it so that it becomes a 5×10 font that I built into a .FON file, giving the result as shown above.

There are some things I'm still unhappy with this new 5×10 font, but it is mostly to do with the characters of the range 0x80 to 0xff, ranges that I rarely use. I suppose I could iteratively refine them over time.

One other thing that I forgot to mention is that in the bid to keep the vertical columns of whitespace to make individual character recognition easier, I had to decide how I was to deal with the ``high contrast'' tines that appear in glyphs like `M', `W', and the like. Using my experience of working in the text editor of the Pico-8 Fantasy Console, I've learnt of/and gotten used to the rather tiny and stylised font of the Pico-8---the idea of using thicker lines to represent implicit high-contrast vertical lines was no longer abhorrent.

And now, with a font that is 5 pixels wide, my half-screen set up permits 1920/2/5=192 characters across. It's wonderful. The ample amount of unused pixels in both the horizontal and vertical directions made reading with such a font surprisingly comfortable and no less different from reading something in Opti Small.

Will I be releasing this 5×10 font? I'm not sure. Like I said, there are still things that I need to tweak and fix. In addition, the original author of Opti Small, Nicolas Botti, left behind a little confusing bit of copyright:
Copyright: Nicolas Botti 2004. Use it, distribute it, change it.
I'm no lawyer, so I don't know how best to interpret this. I suppose it is fairly safe to release the 5×10 font, but it'll be ``when it's done'', perhaps even when I figured out how to generate a version of the font that can be directly used in the Linux terminal emulator in the desktop GUI.

Anyway, that's all I have for today. Till the next update then.

Friday, September 16, 2022

Stupid O'Clock is the Font of Stupidity. Who'd Thunk?

Man, I slept at 0230hrs this morning and woke up at 0825hrs.

The reason is quite banal---I was creating my own 6×11 bitmap font for use in my terminal emulator when I realised that the one I was using had a bad render of the `>' glyph. What ate much of the time was trying to figure out why the blazes my terminal emulator (mintty for the curious---it's from Cygwin) was still rendering that font as 6×13 instead.

Spoiler alert: semi-hidden option of AutoLeading was screwing up the vertical pixel count. 🤦‍♂️ But more on that later.

I need to begin the story where it will make more sense. I had thought long and hard, and have decided to move away from my default maximum character width of 76 characters for source files to that of 80 characters instead, especially for Python.

The reasons were as follows:
  1. That missing 4 characters was enough to cause an unnecessary break for a line that would fit exactly within 80 characters;
  2. By Zipf's Law, most of the code lines aren't ever going to be that long anyway, which means that it was usually safe to keep it at 80 characters as opposed to 76;
  3. My old comment on needing the extra columns to allow the additional decoration for TUI editors hasn't been applicable for more than two decades now.
By ``additional decoration'', I mean the following (text editor is Multi-Edit Lite running in DOSBox-X, originally shareware from Multi-Edit Software, but the company seems dead as at time of writing):
Notice how line-drawing characters are used to define the borders of the text window, together with the old school representation of scroll bars and the like? Those take up character cells, and with a starting point of 80, the left and right window edges immediately take it down to 78 characters being the maximum amount of visible text without scrolling. The 76 was derived from the observation that if one reaches the end of the line through any regular cursor movement, it will often end up one character beyond the last character, which can trigger a horizontal scroll.

In short, it is annoying to use the full complement of 80 characters, and it was better to use something like 76.

But I'm using Vim now---I've been using Vim for a long time now. That shouldn't matter any more.

The only thing that can matter is the idea of vertical split screens, either from looking at differences between two files, or three in the event of a three-way merge.

For those, I can bring the terminal screen to use the full extent of the 1920 horizontal pixels. Easy. And without going that far, Vim has no text decoration that eats up cells, which gives us the full 80 characters (I refuse to use line numbers on the side of the simple reason that the ruler in my status already shows the line number of the cursor). Zipf's Law suggests that very long lines are rare, and thus as long as I can find a font for my terminal emulator to handle about 161 characters for half the screen (math says that each character needs to have about 1920/2/161=5.962 pixels), I'm gold.

Vaguely, this means a font that has about 6 pixels of width. My go-to of Proggyfonts (or more specifically, Opti Small is already 6 pixels wide, but thanks to some fuckery from mintty, it looked off to me. That, and I wanted something that yielded more than 161 characters at the half-screen mark to have more room for other niceties.

I then started looking into using CG Mono instead. It was fine, but still looked a bit off because the `>' glyph was bogus---it lacked the crispness that came from bitmap fonts, and looked like some other font was chosen to render it instead.

Why? I don't know. Looking at it through FontForge showed nothing out of the ordinary. The time was about 2300hrs or so. And that's when I went to Simon Tatham's Fonts Page to grab his scripts and samples to build my own 6×11 font to fix this issue.

I completed the font, but when I tested it, it was... very off. The vertical extent as compared through the gridded version of MSPaint showed that it was consistently 2 pixels larger than what was stated. I read through Simon's code to see if he was doing anything strange, and found nothing.

It was then that I decided to go read the fine manual of mintty, to see if there was something I was missing.

Oh yeah, I was missing something all right---the completely inaccessible via configuration screen option of AutoLeading. It defaulted to 2 for some damn reason, and there was no way to change it in the pop-up configuration menu. Mangling the associated .minttyrc file allowed me to set it to 0, and everything worked well once more.

At that point, I switched away from CG Mono and back to my usual font, and it looks peachy.

🤦‍♂️

So what's the moral of the story then?

Don't do weird shit at stupid o'clock---one really ends up doing stupid things at stupid o'clock. I mean, redesigning an entire bitmap font when all that was needed was a tiny configuration change in some semi-obscure file? What an ``excellent'' use of 3 hours.

Till the next update.

Thursday, May 19, 2022

Nicer Separators for Read List

I'm satisfied with a little change that I managed to enact.

In my read list, I had evolved it over time to have little separators in between the list items to mark out the different years. As at today, I have finally evolved it to exactly how I'd want it:
Here's a list of the evolutions over time that I had done:
  1. The first incarnation of the separator came about as a border at the top of the last entry of the year.
  2. One minor adjustment I did after that was to have the right side show a border as well to make the demarcation a little more obvious. I wasn't happy that the horizontal separator did not extend into the space where the numbers were though.
  3. I added more space to the separator to make it more obvious, and was starting to get annoyed at the right border being uneven---it was heavily reliant on the vertical space taken up by the list item. I also didn't like that it was impossible to know what year the separator encompassed.
  4. On a whim, I switched up the list element that I was using for the separator, and the [re-]discovery of the ::after CSS3 pseudo-element allowed me to add the year through some attribute grabbing.
  5. I also remembered about the whole negative margins trick and used it to set up the separator into the form that you see in the screenshot above.
There is only one draw back from this set up---if the element anchor is used, the mini-animation from accessing it highlights the entire block which includes the separator. In theory, I could cheat with using a single span element to simulate that, but it feels a bit dirty considering that span elements shouldn't really appear as children for the ol element.

Apart from fixing the separators from my read list, I also did a little house-keeping in collapsing the style-related issues of nested cite, em, and i elements through using the :is() CSS3 pseudo-class to generate the relevant Cartesian products. So now, any nested combinations of these three primarily italicised contents are consistent: un-nested, they get italicised; the next nesting adds underline effects; the next, bold; and the final converts the text to small-caps. Superb!

Anyway, that's all I want to write for now. I'm just happy that I have put to bed one of the more annoying styling issues for a while.

Till the next update... some other time.

Tuesday, May 03, 2022

朝顔の伝説

Okay, it's stupid o'clock, but lemme tell you a story.

A story of how I got hold of my bottle of asa-gao iroshizuku ink.

For a long time, I was using the Pelikan 4001 Blue-Black (packed in 62.5 mℓ bottles). This was a relative cheap and wonderful work horse ink that I used for my Pelikan Souverän M400. As seen in the sample scribbles from nearly 13 years ago, the colour is lovely.

But the recent years of using the same make of ink saw a general degradation. Gone was the blue---what was left behind was some ugly fading gray mess that I found to be utterly disgusting and unreflective of what it used to be. It might have been due to an exceptionally old batch of ink (the bottle was white capped instead of black), or it could be due to my changing taste, I just didn't like what I saw.

It also didn't help that the new Pelikan inks were more complicated. While Pelikan 4001 inks are available now (albeit in smaller than 62.5 mℓ bottles after their rebranding), they were much harder to find in SIN city. Much of the Pelikan ink series revolved around their ``Edelstein'' series, which all had wonderfully misleading colour names, super high price point (we're talking SGD30 vs SGD4 here), and in smaller quantities (50 mℓ vs 62.5 mℓ, resulting in a comparisong of 0.60 SGD/mℓ compared to 0.064 SGD/mℓ) during a time where I was more price conscious.

Which brings me to today (or thereabouts). I was running very low on my blue-black ink, and decided to finally look for a replacement. I didn't bother with trying to hunt down the Pelikan stuff, but instead turned to the iroshizuku series of inks from Pilot. The price point was similar to that of the Pelikan Edelstein series, and had similar wacky abstract names. But there was one big difference that swayed me towards going for the iroshizuku inks.

I knew I could find them easily.

I saw them in Tokyu Hands before, and I was pretty sure that I had seen them in Books Kinokuniya as well; a prior search online also revealed CityLuxe as another potential source with physical presence (I've not physically checked them out). As a brand presence, Japan's Pilot was definitely more visible compared to Germany's Pelikan in SIN city.

And so I found myself en route via bus to Jewel Changi, where a larger Tokyu Hands branch was at. The trip was not worthy of mention, other than the observation that there were still people in this time and age who would watch videos at full volume in a public but enclosed area with no headphones. I zoomed in to the store, and went to where I remembered they stored the inks (second store floor), and checked out the asa-gao labelled drawer.

Wait a minute---that's no asa-gao! It was a yama-guri for some reason. That made no sense... and so I looked about. There were 15 mℓ bottles of asa-gao next to the transparent drawers for the 50 mℓ bottles, but those were sold more dear with stranger requirements (need to purchase 3 at once for a grand total of about SGD33, which works out to 0.73 SGD/mℓ, compared to the 0.44 SGD/mℓ for the 50 mℓ bottle at about SGD22), and there was no way to tell if one could buy three of the same colour in the first place. I looked about as much as I could, and was going to settle for a tsuki-yo (sort of a more blue type of blue-black) instead. As I walked about, I made a side discovery of the black 4.0--8.5mm uniPAINT marker PX-30 was from Tokyu Hands instead of Popular, and picked two up.

Then I went over to the fountain pens corner and just browsed the display drawers. And there, tucked in a little unnoticed corner, was a 50 mℓ bottle of asa-gao just sitting there, without its gray string necktie.

I was... shocked, to put it mildly. It fuelled my hopes, and so I boldly asked the staff member who was operating the automated engraving machine if there were any more asa-gao stocks left as I could not find any among the drawers. He acknowledged my question and told me to wait a little as he was servicing the other customer's engraving requests. I nodded in assent, and watched him multitask on the controlling computer to pull up their internal stock take. After settling the other customer's needs, he turned to me and informed me that the system said that they still had stock, and that he would head out to the stacks to find it for me.

I waited eagerly.

He came back after a while with an ashen look on his face, apologetically telling me that he could not locate the stock.

This was when I pointed out that bottle in the corner of the display drawer, and asked him if that counted as being part of the stock as well. There was a chance that it was part of the display and not for sale---it was a display drawer for fountain pens after all, possibly with the ink wells surrounding them as a kind of decoration.

He was a bit stunned, did a double-take, and realised that the bottle was indeed of asa-gao after removing it from the drawer to examine it. And he said that yes it was that stock that the system said they had---he hadn't realised that they would put a bottle so far away from the rest of the bottles.

I thanked him profusely, and headed off to the cashier's on the first store floor and paid for my purchase.

To say I was delighted is probably a severe understatement. I could only thank God quietly for having such good fortune. I ended my time in Jewel Changi by heading off to NY Verdan Bar and Grill, where I enjoyed a lovely steak, tater tots, apple cider, and a tiramisu.

The bus trip home was also not very noteworthy, other than the further observation of people still watching videos on their phones at full volume in public, coupled with singing(?!) in the bus.

🤦‍♂️

I changed the ink on my Pelikan Souverän M400, and wrote a new dead-tree journal entry. The colour difference was literal night and day (asa-gao literally means ``Morning Glory''). Since it is my dead-tree journal, I can't really post any samples here. Take my word that it is a much brighter blue than the blue-black from the scribble samples from before.

This entry is starting to run a little too long, so I'll just add one last point before posting it: I could have gone through this entire purchasing process online, but I don't see a need to do so when I live in a place as accessible as SIN city. Besides, it's yet another 4-day weekend---I do need to get out of the apartment to do something just to ensure I don't get a fat ass.

Anyway, it's getting real late. It's still a public holiday... today (Tue), and I would like to do some stuff later on too. And thus, sleep is still needed, remembering that I generally do not sleep past sun-up.

Till the next update then.

Edit: Here's a small scan of the sample after I have had some sleep:
Lovely colour, ain't it?