Hi, and welcome to, my little semi-secret project for the past year that’s finally complete!

Cover screenshot

After years of relying on other people to host my website, I’m finally in a position where I can do it all on my own and run any software stack I want — and more importantly, use my own personalized domain name, a name that took no small amount of effort to decide upon but is now consistently used for my socials and GitHub.

(The exception being one service where I’m still shadowm because it’s just so, so lucky I got hold of the name before anyone else back in the day and I sort of want to keep bragging about how I got the name before anyone else there. Naturally, Iris is already taken.)

But the new website isn’t just a pretty domain name, no. Following over a year of constant pestering from Vultraz to join the cool kids and learn about —ugh— modern —ack— Web development instead of staying stuck in 2012 or so, I finally got around to learning... React. Yes. This whole thing is written in React + Gatsby, which probably makes it more of a serious project than Iris/Amethyst or Dorset ever were — by virtue of having had to write half of it by hand instead of relying on a pre-existing CMS, and hand-coding a lot of new features.

So let me give you a little run-down of what’s changed.

Continue reading “

Amethyst, and life updates

Oh hi there. Long time no see. Apparently I haven’t posted since February 2017, huh. A lot of things have happened in the meantime, it turns out. Some of those things are to blame for my general inactivity elsewhere, but when it comes to this blog I just can’t seem to come up with anything to say worthy of my trademark text walls, at least not ever since I joined Twitter several years ago— wait, wasn’t that in 2010? Time sure flies. I feel old. Okay, let’s face it, I am old.

“Iris” version 1.1.0 as of earlier today

In addition to it having been a while since my last post in here, it has also been a while since the last time I gave the website an overhaul, for what little use it sees nowadays. Because of that, plus some of my experiences designing the new website theme for The Battle for Wesnoth last year, I decided to try to modernize my own a little bit so it looks more in tune with my current practices. I also decided to spruce things up with a new colour scheme, like last time, taking things in a different direction to what I’m used to.

An attentive reader who’s been around for long enough might be able to tell that the “Iris” design last year did undergo a slight revision incorporating Font Awesome in order to make icons not look awful on high-DPI screens. This was a natural conclusion of my work designing and testing the theme on devices with higher pixel density. Plus it was precisely last year that I actually caved in and got a smartphone given to me by a relative, further highlighting all the inconveniences of designing things on/for 96 DPI these days. Other than that, though, the design remained mostly unchanged from what I made in 2014.

“Iris” version 1.2.0, aptly codenamed Amethyst for reasons that should be blatantly obvious, is mostly the same as before under the hood, but on the surface it hopefully looks shinier and more elegant and modern. Even though I am not using the site much right now like I mentioned above, I have a faint hope that the new look will motivate me to post more again.

Since there wasn’t a New Year post last year, or even the year before that, or uh... the year before that as well... actually I guess there haven’t been New Year posts in here since January 1st 2013. Oops. Anyway, I guess it’s time for a short summary of what I have been up to in recent times. Let’s see...

Continue reading “Amethyst, and life updates

shadowm moving hosts

It’s almost as if moving Web hosts in October is going to become a yearly activity, like New Year celebrations, or birthdays. has been graciously hosted by an acquaintance of mine since 2005, even after I moved on to weirder endeavors on the Internet. Originally, there wasn’t much in terms of content here, because I only used the space to host a few files from tiny projects I was involved with. However, as I took an interest in dabbling with front-facing Web technologies like HTML, CSS, and to a lesser extent, Javascript, turned into a testing ground for crazy experiments ranging from a seldom-updating blog, to a quotes database for an IRC channel. Giving the few interested visitors a general idea of who I am and what I do in my spare time was barely a goal at first. Fast-forward to Q4 2014 and just look at this mess.

But as everyone knows, nothing is eternal. Not even the sun. Okay, from a practical standpoint we can assume the sun is eternal. That’s beside the point.

The first chapter of “shadowm”— formerly known as “Shadowmaster’s Lair” — lasted much longer than it logically should have, and I thank grafix for that. Starting today, I am now hosted by AI0867, a close collaborator of mine in projects like Wesnoth-UMC-Dev, my campaign Invasion from the Unknown, and, well, Wesnoth itself. Hence the new hostname,

Around May this year, I went to great lengths with the Iris site redesign to ensure everything would work on any host provided the software dependencies are satisfied, and removed and/or optimized a load of cruft left from earlier iterations. In theory, things should perform more or less fine on the new host, although it is hard for me to gauge this as a user — for you see, I am stranded in high-latency mobile broadband land, making pretty much every website out there equally slow from my point of view. In any case, if there are any glaring inefficiencies, I’ll do my best to correct them over the course of the next few days.

To sum it up, most people (i.e. the handful of followers I have) should not notice a difference besides the new hostname in URLs. Old links will continue to work for approximately a year through the magic of HTTP redirection, though you should probably update them now just in case.

Anyway, that’s all I wanted to say. Now back to our regularly scheduled programming.


Those who have followed me these last five years or so are probably aware that I designed and coded this site’s layout on my own in an effort to learn the basics of Web design. Thus, has been redesigned no less than eight times since its inception.

Continue reading “Iris

Blog database upgrade

After some recent changes in Debian testing’s PHP 5 packages triggered an alarm—namely, breaking my laptop’s own Serendipity installation used for testing—I did some research, and found out that due to my severe laziness, when I originally configured the respective s9y installations I chose to use the SQLite 2 backend using some deprecated (now gone), built-in PHP functionality, instead of using the newer and better SQLite 3. Of course, given the situation when I did the configuration for it’s also possible I didn’t have a choice.

For this reason, I just finished casting some magic enchantments on this site to convert the blog database to SQLite 3. Evidence indicates that a mere dump suffices for this end, and the schema matches a fresh installation with SQLite 3 save for a few inconsequential bits.

None of this means there was an immediate problem, but I opted for not fixing tomorrow… later today, what I could fix this early morning.

Everything seems to be working fine, although I grabbed a backup of the previous configuration just in case. I’ve heard that SQLite 3 is faster and more space-efficient. The latter does seem to be the case, but since I’m limited to a crappy, high-latency mobile broadband connection to browse the web, I am unable to verify the former for the foreseeable future.

Should any problems arise for you (few) readers, you know what to do.

2011 Wrap-up

At long last, 2011 is coming to an end. In a few hours, we’ll have to dump our old calendars to replace them with new ones bearing the number 2012 in a big font size. Then the people who believe 2012 will be the end of life on Earth will begin to panic as we approach December again. Those nutcases.

This was a relatively calm and monotone year in what pertains to my personal life, so I’m not going to delve into details in this opportunity. However, I made some resolutions last New Year and it might be worth it to review them and check why I didn’t accomplish all of my goals.

  • Learning Japanese: I got severely sidetracked after a while. I may still try again in the future, just because.
  • Losing weight: I may have gained some a lot of weight during the course of the year. Oops. I did, however, stop drinking coffee, because my stomach started to reject (read: try to vomit) it after a while for some reason.
  • Wesnoth RCX: Still halted. Frankly, there doesn’t seem to be enough interest amongst the Wesnoth community nowadays for this kind of tool, and for my own purposes Wesnoth-TC serves well as it is.
  • Relearning C♯: Also sidetracked. It doesn’t seem worth it, in hindsight.
  • Learning Lua: Accomplished according to certain definitions. I haven’t really learned more about the language than necessary, but I have indeed committed some Lua code to mainline Wesnoth, and several tasks of varying difficulty are accomplished with custom Lua-backed WML tags in After the Storm and Invasion from the Unknown as of this writing.
  • Rei 2 IRC Bot: Stalled, due to lack of interest. There are also seem to be a few Irssi-specific problems with Perl 5.14, which is in the operating system I’m using at the moment, Debian wheezy.
  • Website: Accomplished. In fact, in a few hours I’ll deploy a few minor changes to the code to optimize the blog template processing a bit.

One particular resolution deserves separate analysis, though:

Then there’s Wesnoth. I intend to finish the Second Act™ of After the Storm Episode I as soon as I may, even through the means of placeholders — I’m willing to do anything to rescue AtS out of Development Hell before the end of 2011.

I didn’t resort to unlawful methods to accomplish this goal as I originally feared, but it still happened! Granted, rather late.

During September and October I had a rather unexpected creativity and productivity spurt which culminated with the release of AtS version 0.5.0 with Episode I: Fear complete with 13 scenarios. More recently in December, we reached version 0.6.1 with 7 complete scenarios for Episode II: Fate. As of this writing, E2S8 and E2S9 are also complete in SVN trunk in Wesnoth-UMC-Dev, although it’s been suggested that the latter could use some spicing up. E2S10 is a work in progress since yesterday, and part of E2S12 was written already back in October, just not committed.

Thus, it could be said that after many difficulties, After the Storm broke out of Development Hell. Whether I’ll consider Episode III: Final (expected to be shorter, around 6 scenarios) part of the required line-up for version 1.0.0 is a matter I haven’t settled yet.

Once After the Storm is finished, I plan to take a rather long break from campaign development. That isn’t to say I’m out of ideas, since there is one character I want to explore in further detail in her own campaign. However, I may have my Wesnoth time taken up by mainline work after 1.10 is released depending on the situation then, since there’s a rather large technology gap in Wesnoth that needs to be solved.

Other than that, I haven’t really decided on any resolutions for 2012, so I’ll leave you with the one resolution of the moment:

screen #0:
dimensions: 1280x800 pixels (338x211 millimeters)
resolution: 96x96 dots per inch

(This information is utterly wrong. xdpyinfo reported the same screen dimensions on bluecore last year in spite of its screen being glaringly larger than reicore’s by a few milimeters.)


I have been thinking about some stuff to do during this year for a while, actually. It’s really hard to decide because I’m a person who runs into all sort of trouble while trying to get projects accomplished (including procrastination).

One thing I’m already doing is learning some Japanese, for no particular reason at all — although you’ve got to admit that having multiple languages in your curriculum is worth a bunch of coolness points. 😛 Espreon is helping me along the way with his own recently gained knowledge. It seems quite fun to learn a language in a non-Latin alphabet, if not a tad overwhelming at times, especially with kanji.

It’d be a good idea to lose some weight this year, too. My addiction to sugary stuff isn’t quite compatible with my heart condition! (Nor is coffee, but… meh.)

Screenshot of AtS

Then there’s Wesnoth. I intend to finish the Second Act™ of After the Storm Episode I as soon as I may, even through the means of placeholders — I’m willing to do anything to rescue AtS out of Development Hell before the end of 2011.

Wesnoth RCX’s development is halted right now due to lack of interest on my part to invest energy on writing the rest of the new functionality (i.e. definition of custom ranges and palettes), but I know that once I touch Qt Creator’s awesome interface I can’t stop working for a while — so I may eventually get some inspiration to redesign the main window, which should inevitably lead me to tinker around with the rest of the code.

C# was the first “major” programming language I learned, not counting Visual Basic. I have some fond memories of my first experiments with C#, but after I embarked upon learning and using C++ I kind of forgot about it. I have been considering the possibility of writing an IRC client of sorts using C# just for kicks, and to not forget this language in case I ever need it again. Why IRC? Because clients for this protocol are simple and challenging to implement, both at the same time!

I’ve already started to learn a bit of Lua for my work on the aforementioned Wesnoth campaign — in fact, there’s already some released code within it written in this language, particularly in scenario 5! I have plans to rewrite parts of Invasion from the Unknown in Lua to clean it up a little, thus paving the road for future maintenance work by me or other people (don’t forget that IftU is still abandoned!).

Another software project I intend to tackle in the short term is Rei 2. Sure, she’s doing well and her main command handlers are many and useful enough for channels such as ##shadowm and #wesnoth-umc-dev, but her dependence on Irssi’s core might well be a curse for one of our use cases: Shikadibot (the Second), which runs on a resource-limited VPS where every drop of RAM has got gold value. I’m already brainstorming a possible abstraction layer (codenamed “API 3”) which could allow the Irssi core to be swappable with a custom, native IRC client core (codenamed “Anya”). There’s really not much in the current Irssi-based implementation of the internal interfaces (“API 2”) that make a dependency switch unfeasible.

Finally, I’m not going to stop producing useless updates for my website! Dorset5 0001 is already a reality, although there’s still much I want to do before replacing the current layout. This time I have placed an emphasis on readability and elegance that I don’t think the previous revisions have lived up to so far.

• • •

All in all, I always have so many ideas floating in my mind that I rarely carry to realization, so this can’t be considered a definitive list. There are other possibilities I’m contemplating for the long term regarding my personal life, but that’s a much more volatile subject to discuss so I’m avoiding it for now.