Friday, November 30, 2018

November activity

This month I ended at 893.0 on the summer bike + 10.5 miles off-meter or 151.4 total miles (1880 YTD); or about one more long ride to a pub lunch than last month -- all still riding to get some place, in cooler weather. Also wetter, which means that the convenient bridleway short-cuts are starting to get muddy enough to declare them generally closed until the spring.

However, it's not been so cold that I've been able to dig the vegetable plots, and December looks to be opening with mild enough weather that the lawn-mower might see some more use yet this year.

In the gym, now, having gotten to be able to address the bar properly for squats, I've started putting weights on, slowly. The fun is in judging what is enough for a proper load-bearing whole body exercise, while still leaving me enough reserves in the same muscles I'll be using for the cycle ride home.


Tuesday, November 20, 2018

RIP rawgit

Going to put a new package on NuGet, the icon doesn't come out. So I paste the rawgit URL into the browser directly to check what's up and get a 403 that directs to https://rawgit.com/, which says the service is being sun-setted, offering the following possible alternatives.

For me, the first one "just works"™, so that's what I'm migrating to, at least for the moment.


Thursday, November 01, 2018

October activity

This month I ended at 752.1 on the summer bike or 127.1 miles (1728 YTD); all just riding to get to some place (usually the gym at the Y) rather than just to be out in the open covering miles, even though the autumn weather has been generally mild so far.

And with the season advancing, it's been time to start putting the garden away for the winter, with the last of the outdoor crops gathered by the end of the month.

Meanwhile, having resumed doing weights nine months ago as a general bit of physical maintenance, I'm pleased that I've made increases in what I've been lifting. Most significantly, in trying to do squats, the major blocker has been shoulders too tight from years of hunching over keyboard and handlebars -- and a couple of months extensive stretching has finally reached the point where if I'm warmed up and well stretched (i.e. late in a session), I can actually get into position under the bar without the sinews in my upper arms complaining. Beyond the general posture improvements that this has given me (i.e. not being like these guys), it's also meant that the amounts I'm doing on the chest press machine has suddenly leapt up in a few weeks than it had done all year.


Monday, October 08, 2018

Anime roundup '18Q3

Another thin season.

Of the new shows, the only one that seemed interesting was Planet With, but after two episodes it was plain that it was not only LOL!aliens again (including our MC and his adopters), but also yet another of these series where my ideological sympathies seem to lie with one of the antagonist groups (the apparent humans). The un-funny running gags didn't help either.

I did skip ahead to the the End of Evangelion reference in episode 7, but that episode wasn't enough to make me want to follow along again like I had done with DarliFra, because here there was nothing to make me want to care about any of the characters.

The one summer show that I did watch to completion was Encouragement of Climb S3, where it seems that the girls definitely needed some firmer encouragement because there was very little in the way of climb this season (for all that it was only September/early October in continuity), or even getting equipped to climb, just plenty of mid-season misunderstandings -- maybe a third of the episodes were outdoor activity related, and even then, it verged on being YuruCampΔ at points (not that that is in itself a bad thing).

In the carry-overs, I finished ClassicaLoid S1 which abruptly went from larks about fried mandarins or brewing the perfect cup of coffee to "Suddenly, *ahem* Instrumentality..." and "Suddenly, LOL!aliens..." in an unforeshadowed burst of uncharacteristic escalation. Being a not-too-serious sit-com, it actually took these developments in its stride, unlike certain other, more recent, series.

Also finished was Majestic Prince, a decent enough not!Gundam, and another data-point, along with Fafner to suggest that Hiraiface has now become the badge of the superior mecha series, having burned its bad karma with Seed/Seed Destiny. Alas, at the last minute it went into a "Japan doesn't into endings"; the down-to-the-wire final battle ended in the closing seconds of the last episode but one, but the final episode was just filler/side-story/omake rather than being any sort of epilogue. Otherwise, generally good, apart from a few howlers in the closing episodes : "If you get in your [Mobile Suit] and go out there, you could die!" -- well, no shit, Sherlock, it's a battlefield out there; and "[Character], withdraw now!" -- well, the guy he's going toe-to-toe with might have an opinion about the feasibility of following that order.

Bonus point, though, for the character who could blend in quite happily with the Nines (their boring hair colour and un-Nine-like battle-rage aside).

On the rewatch front, DP Flash OVA2 is much weaker than OVA1 (though I can appreciate some of the parodies more this time around), and OVA3 weaker still (and not improved by knowing more about anime tics in general since the first time I watched it).

Somewhat better was Ghost Hound. Even knowing that it all falls apart at the end, the first episodes are still so very strikingly and eerily atmospheric. It's at around the 2/3 mark that the signs emerge of it going horribly wrong, before grinding into an anti-climactic ending which hand-waves away the core conceits of the story in favour of resolving one strand that had only emerged a few episodes earlier.

Sengoku Basara S1 OTOH is just plai... PUT YER GUNS ON LET'S PARTY!

Other new-from-the-backlog series included watching a bunch more episodes of Shiki, but I put it to one side again after the rather underwhelming episode where the doctor vivisects (necrosects?) his wife; and Captain Earth, which for the first three episodes it was shaping up as a so-so mech series, with a novel way for the main mech to combine out of parts, and a sub-MajPri style of antagonist faction from outer space.

Then, episode 4.

After it having been stated that should the bad guys reach Earth, Bad Things™ would happen, in this episode, the invaders (both of them) drive a truck carrying one of their mechs off a ferry from mainland Japan and into the good guys' Secret Main Base with its sea-front location on some small island. Bad Things™, however, do not happen. This is one of the dumbest things I've seen in anime in years. I think I lost the will to continue.

Also in this state of dropped after a trial is selector Infected WIXOSS, which looked like it was shaping up to be Mari Okada's Mean Girls' Club, when from the aesthetic it could and should have been more like [C] but without the wonky economics; and Pandora in the Crimson Shell : Ghost Urn, which you could tell was minor Shirow (and not in a good way like Healthy Drive or Ghost Hound); at least it refrained from importing all his fetishes. Both dropped after two episodes.

More successful was GitS:Arise (watching the original OVAs plus the TV finale), which as yet another GitS continuity, works fine -- it imports some of the aesthetics of the later GitS manga, especially in the cyberspace sections, both in look-and-feel, and in that Makoto has her robot helpers along with her, so doesn't fit as a prequel to anything. That said, the c1990 vision of the world of the future (and the not-the-Iraq War) is being rapidly encroached upon by the present day (even at the time of making), and not in a good way.

Also looking promising are 2013's Gifu Dodo : Kanetsugu and Keiji and the previous year's Sengoku Collection -- though watching episodes of these in quick succession can be quite amusing, going from the Fist of the North Star look to the almost 1990's anime girls and they're meant to be the same character; and a rewatch of Rocket Girls, which even with the CGI of a decade ago, is still as delightful as I remember it.

Monday, October 01, 2018

September Cycling

This month I ended at 625 on the summer bike or 192.4 miles (1601 YTD), with just the one long bike-ride to add the arc around Biggleswade to the limits map.


The weather stayed fine and warm, almost to the end of the month, one wet and windy week aside, so I took advantage of the last warm day for the long ride, taking two other quiet crossings of the A1 to make the revisit I'd promised myself last month

The Anchor at Great Barford

with the weather still being warm enough to want to sit outside and enjoy the view

The view from my table

Having thought of the A1 as a barrier, it turned out to be remarkably porous once I planned ahead rather than doing a tour on a whim. Other busy A-roads get in the way far more.

Friday, August 31, 2018

August Cycling

So the month ended at 15778.6, 432.6 = 64.4 + 187.6 for a total of 252 miles (1409 YTD), beating May's total by 5%, and adding another arc to the limits map.


The weather had moderated by mid-month, and that meant that conditions were much more pleasant for long-distance rides. So, having got the summer bike back and done a warm-up 40-miler to the NE of Cambridge (well within the established bounds) I plotted a course that would take advantage of two quiet crossings of the A1, and a convenient Sandy-to-Bedford off-road cycle route. And though the OS map I was using was silent on the subject, I also found a good pub for lunch, the Anchor at Great Barford, which I shall have to visit again at some point, on another bounds-busting ride to the west.


Saturday, August 04, 2018

July Cycling

So the month ended at 15714.2, 245.0, battery exhaustion on the folding bike odo between using it and coming to record the mileage here = 13.3 + 147.1 + 47 estimated for a total of 207 (1157 YTD); the second best month for the year, despite excessive heat for much of the month, and a sudden failure of the back wheel of my summer bike.

A new kind of fail

Holidaying in Southport and some runs down the coast from there, in slightly cooler (and slightly wetter) weather than down south, helped pull the total up. Of course, slightly didn't prevent the countryside being tinder dry, and in places burned or even burning

Wildfire on Rimrose Park

This on a park alongside the Leeds and Liverpool canal, surrounded by built-up areas, not some remote moorland.


Friday, August 03, 2018

Today has been day 6789

Counting the days since 1-Jan-2000, as in the automatic versioning for .Net files in the "1.0.*.*" format.

Sunday, July 29, 2018

Libera me from [DLL] Hell

First, some mood music...


I think I've finally worked out one bit of .net core behaviour that has been causing me otherwise inexplicable file load exceptions for dependency assemblies of ones I've written. It happens it places where my code is loaded by some other .net core process (MSBuild, pwsh, ...), when I update some of my dependency .nuget files, even when the dependency is both in the manifest and is published alongside mine. This impacts things like MSBuild tasks linking FSharp.Core for versions > 4.3.4 on a machine with dotnet-msbuild 15.7.179.6572 (VS 15.7.5) installed; or PowerShell Core 6.0.2 loading netstandard2.0 assemblies that directly or indirectly link against one that is netcoreapp2.1 (which brings in a higher version of System.Runtime).

My working hypothesis, to explain when things fail, is that if an earlier version of the same assembly has already been loaded by the system into which yours is being integrated, any requests for a more recent dependency version will be rejected; whereas requests for older versions are ignored and the (newer) currently loaded one substituted instead. On the up-side, this would mean that .net core just assumes forward compatibility of the "older" (or at least linking-against-older) code, so your clients can happily update their systems and your code will continue to work; the corresponding down-side is that if you, as a developer, try to keep dependencies up to date, at best this means that the minimum supported version of the environment is dragged up (if you link a Task against Microsoft.Build.Utilities.Core 15.7.179, then your users will need to have VS15.7.5 or later), and in some cases that the code will outright fail, as above, and the update will need to be backed out.

Tuesday, July 17, 2018

Anime roundup '18Q2

This was a fairly thin season; of the newly airing shows, I only watched any of Last Period so as to get to the gratuitous Higurashi cross-over, Uma Musume didn't hook me with the first episode, and after two episodes the new Legend of the Galactic Heroes only had technical improvements in the spaceship animation over the OVA; very little that was on offer appealed, and of those tried, none really caught.

I did mop up some backlog, finishing Battle Girls -- Time Paradox, which was generally inferior all around to the somewhat similar Koihime Musou. I gave the 3 episode treatment to Yatterman Night, which probably would have worked a lot better if what it is affectionately subverting had been something from my childhood, and Dracula moves to Hinamizawa Shiki, which is being ever so slow and deliberate, so those ended up on hold. More successful was the resumption of ClassicaLoid and picking up Majestic Prince, both of which are ticking over in the background. MajPri is quite surprising in that it manages to mostly overcome the Hirai sameface which overwhelmed Fafner.

One series I did finish was 17Q4's Uruhara -- cute girls fighting cute alien invaders in a somewhat psychedelic version of Tokyo's Harajuku district, with a side of the usual crippling social anxiety about (not) having friends. Entirely fluff, but harmless; had it been played as serious drama without the cute, it would have been way too over-wrought, but as it is, it works quite nicely as a diversion. It's not as pretty in real life as it is in the anime, alas.

The carry-over series I did watch -- Toji no Miko -- ended with an interesting take on the idea of setting everything up for climactic final battle, then spending the last episode just talking, which turned out to be quite a satisfying way for it to resolve (plus, what I gather was a hat-tip in the direction of Kannadzuki no Miko in the final scene). Despite the loss of momentum for a few episodes after the mid-boss battle, and shift from it being just two girls on the run to a more political thing, all in all, it was a decent series for cute girls, cute aradama, and well animated sword-fighting (stills just don't do the series justice); and a surprisingly overlooked one.



The phenomenon of the quarter, though, was the spectacular train-wreck that was Darling in the FranXX, which was probably one of those series where you just had to be there at the time. The second cour opened with a flashback episode that replayed the one from Elfen Lied, only with no dismembered corpses this time, then quickly proceeded to the point where both the big planned battle and the story of Captain Save-a-ho and the Manic Dino Dream Girl seemed to be resolved in one sickening saccharine power-of-love upgrade that one-shotted the big bad with more than a third of the series to run.

So then it boarded the troller-coaster, and became "The 14 words, nihonjin edition -- the anime", turning to one of the secondary couples, including a big wedding on the 19th May (which was where I picked this back up), a back-story episode that poorly emulated the Evangelion episode "The Birth of NERV", and the revelation that the real big bad was not the dinoklaxosaurs, nor a breakaway faction thereof, nor rogue AI, but aliens (hey, with an ex-Gainax team at the helm, it having worked in Nadia, Evangelion and TTGL, why not use what you know, I guess).

At this point the series really came off the rails, with way too many ideas being crammed in, and a total lack of editing, especially continuity editing, becoming painfully obvious : even before this point, the number of character resets and repeated "separate the mains for happy reunion" cycles had been apparent, but, now, things that had been trailed as significant were just dropped without mention or completely underplayed -- we didn't even get the obvious closure where Hiro gives Zero Two the name "Honey" (as opposed to oni) at the end. Clearly this was a case of not seeing the wood for the trees, because the level of attention to minute details, from the heraldry of the various cities in the early episodes to the cameo appearance in the last episode of the cat we had seen around the pilots' lodgings at the beginning, to show that it had survived all the excitement, continued throughout. It couldn't even be a completely deliberate thing, where every bit of literary foreshadowing was thwarted "because life doesn't work like that", as on the one hand, the discovery of a book about childbirth did trigger a pregnancy sub-plot, and on the other the conveniently discovered warp-gate in the penultimate episode that we were told would allow a surprise attack on the alien menace actually emerged at a point that required a further two year cruise to the intended destination.

And then to cap it all off, suddenly the main couple didn't get the one last "power of love" boost to destroy the alien uploaders (just a sudden "power of friendship" yelling at the sky from the stay-at-home team, and a complete disregard for speed-of-light limitations), were instead taunted by the alien upload core as having but a weak connection, and concluded with an only marginally successful kamikaze attack (despite doing the GunBuster pose with their mech), while everyone back on Earth lived happily ever after and rebuilt civilisation.

Then suddenly it was souls, not uploads, and an out-of-nowhere reincarnation ending centuries later : no race-mixing half-gaijinklaxo mutts allowed in this Brave New World, thank you very much. Indeed, all in all a series that seems to try to trigger pretty much anyone with its sexual politics, from the doggy-style piloting, the celebration of female mate selection in the pregnancy sub-plot, and the placing of the gender-fluid pilot squad with their candy-coloured hair as rivals/adversaries to the main squad (and, in being wiped out, the source of most of the named-character casualties).

Sunday, July 01, 2018

June Cycling

So the month ended at 15700.9, 93.9 and 235.3 + 4 off meter = 63.6 + 97.9 + 18.3 for a total on 179.8; just beating April's monthly total despite good (even too hot) weather all month -- both months included one extended ride just shy of the 50 mile mark, but June had more trips into town to counter the lack of daily short runs -- and 950 miles for the half year.

Thursday, May 31, 2018

May Cycling

Just under 240 miles done this month (~770 YTD) -- no more precision due to odo battery exhaustion, so the summer bike will be starting from zero once again next time.


The month finally turned the corner from cool and wet with fortnightly bursts of winter, encouraging me out on a long ride to the south on the first Bank Holiday Monday, finally pushing the limits again after a couple of years. It reminded me why I don't go out in that direction much, since the journey gets forced through Saffron Walden, which is generally horrid in terms of long grinds on narrow busy roads.

The weather turning also meant that I spent much of the month catching up on the garden, rather than being out on two wheels; so only the one long ride so far this year.

Monday, May 14, 2018

`dotnet build`ing Eto.Forms projects

A couple of months back, Scott Hanselman blogged about the Eto.Forms cross-platform UI toolkit for .net. I filed that away for reference, and this weekend got around to giving it a whirl.

So I took the default new F# app and made a personalized little skeleton project (standard boiler-plate for the "About..." dialog, that sort of thing), and as part of making it re-usable as such, added a trivial FAKE build script. Eto.Forms generates new-style projects, so of course that would be using the DotNet.build and DotNet.publish tasks...

Not so fast.

Do that and it barfs with

error : MSB4801: The task factory "CodeTaskFactory" is not supported on the .NET Core version of MSBuild.
error MSB4175: The task factory "CodeTaskFactory" could not be loaded from the assembly "C:\Program Files\dotnet\sdk\2.1.200\Microsoft.Build.Tasks.Core.dll". The task factory must return a value for the "TaskType" property.

which turns out to be a known issue (or two). Rather than sit tight and wait, I did a bit of looking around. Turns out there's a similar, closed, issue against msbuild itself, to which the resolution is to use the RoslynCodeTaskFactory as a replacement.

So, after some experimentation, here's a work-around while a fix works its way through the system; it functions by overriding the _BuildAppBundle target, so can be fitted into existing build processes without hacking any of your downloaded packages.

  1. Add the RoslynCodeTaskFactory NuGet package to each affected project (probably just the .Desktop one
  2. Get the override target file MacTemplateOverride.targets from this gist
  3. Adjust the path to your eto.platform.mac64 version (assumed 2.4.1 in default location) as needed

  4. Add <Import Project="[path to]\MacTemplateOverride.targets" /> at the end of each affected project to load the file from where you've saved it in your solution

  5. dotnet build


Wednesday, May 09, 2018

Assembly versioning is hard -- internals just keep on leaking

I've hit a couple of instances of this in recent weeks.

Assembly versioning is meant to be a strong contract, that given two distinct instances with the same version, one can be used as a drop-in replacement for the other, e.g. as a a bug-fixing patch, in all circumstances. A sufficiently strong contract, indeed, that in my experience in building commercial product with .net, our process erred on the side of caution, and bumped the build number facet of the version every commit, even if all that had changed were dependencies.

However, it doesn't always work that way.

The first instance I hit was when Mono.Cecil finally hit 0.10 final after having been in beta for years. That had indeed preserved its public contract -- but somewhere between beta-7 and final, one of the internal APIs consumed by the symbol-reading helper assemblies via InternalsVisibleTo was expanded. Consequently, if a beta version was loaded (e.g. by a tool -- in particular the NUnit3 test adapter for .net core) ahead of the final, the result was a MissingMethodException when indirectly invoking that internal path. I specify .net core here, because the lack of AppDomain isolation is what puts the tool's use of beta-6 into the pot ahead of the system under test's final.

The most recent has been with Visual Studio 2017, which also bundles an update to the F# core assembly version 4.4.3.0, and the FSharpLint MSBuild task. Here, the F# compiler's choice of generating synthetic names for compiler generated classes by tagging them with @lineNumber comes into its own -- the new file version "2018.04.25.1" includes an internal synthetic type related to event handling called Microsoft.FSharp.Control.CommonExtensions+SubscribeToObservable@1693; in the earlier "2018.01.25.1" build, the corresponding type is Microsoft.FSharp.Control.CommonExtensions+SubscribeToObservable@1741 and asking for the former when the latter is the one on offer gets you a TypeLoadException. Here, it looks like AppDomain isolation is working against us in the other direction, with different and thus incompatible builds of FSharp.Code.dll being loaded in two separate AppDomains.


Monday, April 30, 2018

April Cycling

The winter bike ended the month on 15637.3 for 17.6 miles, the summer bike on 1177.3 for 178.8 miles (529.7 YTD), a total of 196.4 miles for the month, helped by a ride to St Ives for lunch and back on the 13th (with interesting detours around the flooded bits of busway path). And despite the rainy start of the month and the rather apocalyptic forecast for today, I managed the 30 day challenge -- albeit many days just doing the 2km circuit of the village -- without getting wet. Cold at times, yes, like today, but not wet. There was even the glorious week in the second half of the month where it was well into T-shirt weather temperatures.

The mostly cold and wet weather has meant that the gardening is way behind my expected schedule, though.


Sunday, April 29, 2018

Anime roundup '18Q1

The winter season provided a number of likely prospects, even if some did fall quickly by the wayside. In the past, I know I've done my share of complaining about loose adaptations of manga (e.g. Bokurano, Planetes), and given props to nigh frame for frame ones (Aria, Mushishi), but now I can say that there are faithful adaptations that fall into the camp of "I've already read some of this; you're just presenting the same material to me, but much more slowly". The Junji Ito Collection for example. And Hoshiiro Girldrop PopTeamEpic, too.

Known adaptations aside, the top two on the list were the obvious "Cute Girls Do Outdoor Activities" titles, Yuru Camp∆ and Sora yori mo Tooi Basho.

Yuru Camp∆ aka Laid-back Camp took as its outdoor activity camping in autumn/early winter, then rounded itself off nicely, fast-forwarding to spring, and cherry blossoms in the coda -- so (brief onsen scenes aside) it keeps the characters bundled up in many layers of insulation all the time, even inside their school building. Even though I'd describe this as a "comfy" series, that would describe the mood, rather than the actual activity. Rather, in that respect, it's definitely an adventure series, in the sense of adventure being someone else being uncomfortable in some far-away land -- my nose and toes have tended to feel chilled in sympathy while watching.

One for going on a Google Earth holiday along with, and not worrying too much about the times of sunrise and sunset (e.g. there was rather too much light in the sky at 05:00 on Christmas morning, 20 minutes before the start of astronomical twilight). Overall, no Yama no Susume, but it makes an adequate substitute. I wonder what will be the next outdoor activity to fill this niche.

Sora yori mo Tooi Basho aka A Place Further Than the Universe was rather different, being more a drama, with a bunch of loners and misfits getting together to journey to Antarctica -- some just to do something out of the ordinary rut of their lives, but one to visit the place where her mother was lost some years earlier. Of course, being loners and misfits, the girls were generally more abrasive and forthright than the usual nicely mannered cute girls we see so often. All in all, a well executed drama that could so easily have become mawkish and sentimental, but took a refreshingly different route instead. I agree with what seems to be the general sentiment in terms of sales and such that this was the best of the CGDCT titles of the season.

Ongoing, I'm watching Toji no Miko. The series may just be an advertising drive for a mobage, but it has competently set up its conflicts and delivers cute quasi-magical girls sword fighting every episode. I say quasi-magical, because unlike the real deal, this series has so far been free of yuri-baiting, despite a cast that has the same gender balance as YuYuYu did. As the obvious end boss turned out just to be the mid-boss, I now have no idea where this will end up going, but I expect it to continue to have sword fights most episodes.

Continued over and dropped, Mahoutsukai no Yome. After a burst of enthusiasm to cover a chunk of the backlog, I stalled on this one. I think it's a sign of impending plot and bad experiences with same in other initially episodic series, especially as I gather it outran the manga and went for an anime-original ending. It didn't really engage on an emotional level, which, given that I can get blurry eyed over pieces of equipment requesting specific upgrades, is somewhat surprising.

From the back catalog, I picked up Koihime Musou and sequels on a recommendation that went

Unpronounceable names, 99% female cast, big eyes, colourful hair, large knockers, spear-fights, lesbians, innuendo, nudity... THAT'S MORE LIKE IT. This is why I started watching Japanese cartoons.

It started just as silly fun -- swords and a little sorcery in pseudo-Ancient China with all the major heroes and warlords being girls -- in manner that made it surprising that it was only about 10 years old, as it feels like it ought be 20-ish -- say contemporaneous with series like BurnUp/Excess -- from the style. But from the start with trivial encounters, the final season, Shin Koihime Musou - Otome Tairan surprised me by developing on the previous seasons, telling a competent Water Margin-lite Chinese-style swords and sorcery story that could have been played fairly straight, with the bouncy bristols and the nudge-nudge jokes just leavening the mix.

As a true nostalgia binge, I dug out the first Dirty Pair Flash OVA, and realised that I have been spoiled by modern anime -- low budget now is likely to look like Kemono Friends, rather than this and its use of traditional anime tics, and quaint hand-drawn computer displays. It still stands up as a comedy-thriller once expectations are recalibrated, though.

I also massively increased my intake of SHAFT by watching both seasons of Natsu no Arashi, a comedy drama set around a restaurant that steadily accumulates a staff of time-travelling ghosts from the end of the Pacific War, and other odd folk beside.

It goes in for large doses of mood whiplash, from chili-powered fruit surprises to tragic love in wartime to dealing with expiry dates when time-travelling to reverse-trap body-swap gags... Occasionally it got into a bit of a rut, with a series of episodes on the template of "one of the staff has a secret, it might get revealed" with a side of "some random thing has been forgotten, oh it turns out that it happens later in my world-line because time-travel". While it is laden with artsy tricks -- odd vignetting, random bits of photograph, interspersed gags of the form "I forget the title of this thing I'm going to describe elliptically, but the punchline was..." in completely contrasting art style -- it managed to get away with only doing one of the signature (and irritating) head tilts, and used an art-style that wasn't the generally ugly one of the *gataris or Madoka.

All it all, despite a saggy middle, it wrapped up nicely, including a very self-aware punchline at the end.

Disappointment of the season was Darling in the FranXX. One of the two titles of the season much hyped in advance (the other being Kyoto Animation's Violet Evergarden), this one because, even though it was being done by A-1 Studios, most of the significant names on the creative team are ex-Gainax hands -- so there was a hope that this anime-original series might be a "let's sneak something into the timeline between Diebuster and Gurren Lagann" romp about giant dinosaurs attacking moving sci-fi cities protected by magical girl mechas, done with the same straight-faced insanity as previous series out of the same stable.

And it turned out to have a bunch of interesting wordplay-based ideas to sprinkle around its dystopian post-apocalytpic future, with the "dinosaurs" being named in Japanese in a way that is sounded as their word for dinosaur (lit "fear dragon"), but reads as "screaming dragon" instead; and the main cast, though only having official numeric designations, have been numbered so that one way or another -- Japan having multiple names for the numbers, and occasionally borrowing from English, too -- their numbers can be read as names (so 015 becomes *-ichi-go = Ichigo, for example). This does get self-aware at times, as the Shinji-like main character (while he does all the Shinji hand mannerisms, we can distinguish him from Shinji because a) he wants to get in the robot, and b) he's not very good at it) designated 016 is named Hiro; and the horned abomination with pink hair who is designated 002 gets the name o-ni in an Anglo-Japanese mix for 0-2 (oni, or "Japanese ogre") briefly considered and discarded.

Alas, the dystopian child-soldier setting is employed primarily for the purposes of putting a bunch of teens into the Big Brother House and going for the teen relationship dorama first, with a slight mecha vs kaiju flavoured coating as afterthought. The opening narration about the Chinese jian bird that must fly as a pair, the way the mecha are piloted with boy/girl stamen/pistil pairs (the girl's hood being both the dashboard for the mech and something looking akin to some traditional Japanese bridal veil), and the "he was a normal boy until a strange girl fell on him" beginning made it pretty clear where the emphasis was going to be, and that it was going to be all about the rocky road of Zero-Two/Hiro. (Yes, that blatant.)

I guess it wasn't helped by my taking a dislike to the mains, but I put it on the shelf after the first couple of episodes and have been watching the fireworks of the inevitable red/blue battle from the outside, which has proved way more entertaining. Finding out later that, as the director's "passion project", it actually played into his fantasy of being seduced by an older delinquent girl transfer student, cements my feelings, as it seems to have evolved into a blue-pilled romance fantasy of taking a carousel-riding ho ("a hundred stamen, maybe more") and turning her into, well, not quite a housewife, but at least a life-companion, with added "power of love" power-ups for their already OP mech.

So, yes, that's quite how frustrating a series that one is.

Wednesday, April 18, 2018

Fingernail moon

The clear evening sky is showing a 53 hour old crescent moon. Not a personal record, I think, but close. Venus emerged shortly after, lower in the sky, to the north.


Sunday, April 01, 2018

March Cycling

The winter bike ended the month on 15619.7, a grand total of 137.3 miles for the month (350.9 for Q1), a touch below last month, and only about half what I did last year, between fortnightly bursts of winter (start, middle and end of the month) and this year having no need to use up leave by the end of the quarter, so no cycling holiday while the weather remains dubious.


Tuesday, March 06, 2018

February cycling

The winter bike ended the month on 15482.4, a grand total of 141.7 miles for the month, twice January's figure, and almost as much as last year -- indeed, had Siberia not vomited out the "Beast from the East" at the end of the month (sub-zero days with some snow lying into the start of March), cancelling an event I would have gone to on the 28th, I would have exceeded last year's figure. While it's not yet riding for pleasure weather, the majority of the month was mild with hints of spring, and dry enough that having finally resumed my gym membership after many years' lapse, I could do my cardio/warm-up on the way there.



Thursday, February 01, 2018

F# under the covers XVI -- Constructor weirdness

Occasionally, even in F#, one needs to do OO stuff, like implementing a concrete subclass of some abstract framework type to feed into some other framework API. In my case, I recently needed to add a SerializationBinder to a BinaryFormatter to handle assembly versioning.

So of course I wrote

formatter.Binder <- { new System.Runtime.Serialization.SerializationBinder()
  with member self.BindToType (a:string, t:string) = ... }

which worked perfectly happily, but threw up a warning from Gendarme about suspicious recursion in the constructor.

So I decompiled the type to find it looked like

[Serializable]
[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
[CompilationMapping(SourceConstructFlags.Closure)]
internal sealed class ReadResults@64 : SerializationBinder
{
 public ReadResults@64()
 {
  ((SerializationBinder)this)..ctor();
 }

 public override Type BindToType(string _arg1, string _arg2)
 {
  ...
 }
}

or, as IL

.method public specialname rtspecialname 
 instance void .ctor () cil managed 
{
 // Method begins at RVA 0x3ce0
 // Code size 9 (0x9)
 .maxstack 8

 IL_0000: ldarg.0
 IL_0001: callvirt instance void [mscorlib]System.Runtime.Serialization.SerializationBinder::.ctor()
 IL_0006: ldarg.0
 IL_0007: pop
 IL_0008: ret
}

Writing the type as an explicit class, like

type UpdateBinder () =
  inherit System.Runtime.Serialization.SerializationBinder()
  override self.BindToType ...

yields exactly the same sort of IL.

Revising the class yet again as

type MonoTypeBinder (``type``:Type) =
  inherit System.Runtime.Serialization.SerializationBinder()
  override self.BindToType (_:string, _:string) =
    ``type``

because I only have one type of interest, did produce the expected decompiled constructor, looking like

public MonoTypeBinder(Type type)
  : this()
 {
  this.type = type;
 }

even though the actual IL just adds the field assignment

IL_0000: ldarg.0
 IL_0001: callvirt instance void [mscorlib]System.Runtime.Serialization.SerializationBinder::.ctor()
 IL_0006: ldarg.0
 IL_0007: pop
 IL_0008: ldarg.0
 IL_0009: ldarg.1
 IL_000a: stfld class [mscorlib]System.Type AltCover.MonoTypeBinder::'type'
 IL_000f: ret

However, now we've changed the signature, the call no longer looks like a recursion. And, for once, this is a case where the virtual call in a constructor is safe.

By contrast, a C# equivalent

class UpdateBinder : System.Runtime.Serialization.SerializationBinder
    {
        public override Type BindToType(string a, string t)
        {
            ...
        }
    }

generates a default constructor with IL that makes a non-virtual call to the base type

IL_0000: ldarg.0
  IL_0001: call instance void [mscorlib]System.Runtime.Serialization.SerializationBinder::.ctor()
  IL_0006: nop
  IL_0007: ret

and the call remains non-virtual when adding a constructor argument.

January cycling

The winter bike ended the month on 15340.7, a grand total of 71.9 miles for the year to date, or about 2/3 what I did last year. The difference is that this year I didn't feel the need to do a "get the miles in" ride on the 1st, because, apart from that, I ended up doing as many trips out to the Science Park as I had done last year. It's just that this time the rides were entirely dedicated to going out for pub lunches with former colleagues, with none of the bother of putting hours in in the office either side.



Wednesday, January 10, 2018

Anime — 2017 in review

Unfinished business from 2016 included ClassicaLoid, which vanished from the Crunchyroll roster before I got back around to it (not that they'd picked up the second season either); and the The Ancient Magus' Bride OVA, which had a poignant little digression that ultimately went nowhere, and a final few minutes of non-ending. Overall, a bit of a mess of wasted potential, as it didn't seem to know what it was actually trying to achieve.

Main course

As for things started new for the year, I did as much, if not more raiding of the archives and rewatches as I did new material.

For lack of a new JoJo, I took the opportunity to fill the Saturday Morning Cartoon slot with Mobile Fighter G Gundam, thereby making up a significant gap in my anime experience, now that I can see quite how many references to it there are in fan material.

Being in many ways Gundam in name only does help distinguish it from the other AUs -- it's not a pretty-boy series like Wing, for example; nor is the masked guy a Char (his Gundam isn't even red!). In fact my original impression was that it was more a magical girl boy series, what with the henshin scenes and all. Or, should I say, a tokusatsu/wuxia masked martial arts fighter series, what with the way that the fights were often rendered as if man-in-costume.

The story is clearly the result of some editorial interference, trying to sustain both a quest for revenge and a tournament setting which provides a lot of the gratuitous fight-of-the-week material, as well as interrupting the plot for quite a while after the midpoint.

Surprisingly, the mid-point was marked by the one fanservice episode out of nowhere, perhaps to make up a quota. Also, as a bit of a surprise, we can tell it's the future, as there are no fair-haired Scandinavians left, Allenby, with the blue hair, coming the closest out of a cast with a strange lack of anime hair colours.

For B-features, the first series I picked up was 2016's Magical Girl Raising Project, another magical girl boy series.

The series turned out to be Walmart Madoka meets Battle Royale, with the notional MC being a mostly useless limp dishrag. The fights turned out to be satisfactorily bloody, and at times quite clever, and there were enough characters that one could be happy to see take a pounding finally receiving one. Better, there was enough of a tie-it-all-up ending that it didn't feel like just a trailer for the LN series (something which I had been dreading).

Next up was Minami Kamakura Girls' Highschool Cycling Club, which was a a fairly decent "cute cycling girls doing cute cycling things" series with "School Club (survival of)" plot, rather than either pure CGDCT on the one hand, or sport on the other, and one that flew completely under the radar while it was airing. Like Yama no Susume, this was as much a PSA for cycling, with practical cycling advice (both in the story and in the post-ED live action sequences).

There was less about hill climbing technique that I would have expected, even though there was a fair amount of it involved, because Japanese terrain -- something that contrasts with Yama no Susume, as the lure of actually being on the open road with a bunch of cute Japanese girls was lower. At least with the journeys being on-road, there's a chance that some of the routes covered are actually there on Google Street-view to tour virtually, rather than it just showing the start of an mountain path.

This was also one of those series where you know you've watched too much anime because you start to recognise pieces of Japanese scenery -- major landmarks like Mt Fuji, the (Neo-)Tokyo Tower and such excluded -- from earlier titles you've seen (this one being set one town along from Tsuritama, concluding with the young ladies from the post-ED sections riding out from Kamakura to sample an Enoshima Bowl in wonderful February weather).

To the extent that there are any surprises in the series, the OP is somewhat spoilerific; OTOH, it also gives more prominence to some of the peripheral characters than they get in the show, so the level of wacky anime clichés out of the 1990s is lower than one might at first fear.

Continuing with recent series, after it had started to get some surprising buzz I went to see what the deal was with Kemono Friends

On the surface, is just cute fluff, with the usual Japanese habit of turning anything into cute girls on full display -- but it's also quite clever in its handling of Bag-chan's unusual nature, compared with the other denizens of Japari Park. And as an advertisement of Japan's various zoos, with all its cute and happy animal girls, Kemono Friends was not the sort of place that one might have thought to find a sample of the cosy catastrophe genre.

This was a series that had started as a low budget, belated rescue attempt for a failing mobage but succeeded because of sensitive direction, and I think it worked well, on account of being so essentially innocent throughout.

No account of the series can be complete, though, without mention of Grape-kun, the elderly penguin who had lost his mate, but managed to brighten his final months by courting the cut-out of penguin idol Hululu that had been placed in his enclosure as part of a cross-promotion.


And next, something completely different.

There has been a fad in recent years for the isekai ("other world") story, in which a hapless Japanese teen steps in front of a truck and wakes up in a JRPG world. Youjo Senki (lit. "(Diary of a) Young Girl's War", but officially The Saga of Tanya the Evil) is a somewhat different sort of isekai, in which a Japanese sarariman gets pushed in front of a train by the worker he's just fired, is taunted for his lack of belief by "Being X" during a moment of halted time, to wake as a baby girl in a not-quite 1920 Germany.

As a veteran corporate weasel, Tanya Degurechaff is wily enough to seek a quiet life in a country that's fighting some mix of WWI and WWII; but is too magically powerful and too well versed in appropriate strategy for this kind of war, so ends up in the heat of combat -- and being tormented by Being X at every turn.

The wartime adventures of a crazy sociopathic duck-faced little girl amongst a cast of normal looking men, in her battles both mundane and spiritual, are surprisingly darkly humorous. But, being an adaptation of the start of an on-going LN, it ends roughly after the equivalent of Dunkirk, with more to come, and an on-going mundane adversary just established (called Mary Sioux (... you what? That just has to be deliberate, doesn't it?)).

Delving back a few years, I picked up Fafner Exodus on the strength of a WEG (Watched YuYuYu, Expected Madoka, Got Fafner). This is me getting on the train after the first series, plus prequel and sequel OVA/movies, but it worked well enough, even though I'm sure I missed a lot of the callbacks -- though in practice, I think that the rampant Hirai sameface would have caused about as much "Now, which of the characters is this?" even if I had started at the beginning.

The YuYuYu comparisons were easy to make even at the beginning, starting with the base of a shielded island forming a sanctuary against alien monstrosities destroying human life beyond. And then it mounted -- by the end of the first cour, the new pilots had definitely sange'd, and by the 3/4 mark we had reached mankai matsuri and "It will get better, soon."

It's was a pleasant surprise to see that, in amongst all the UNDERSTANDING (as in any post-Gundam mech show), some of the characters were prepared, when the chips were down, to kill people, as well as the Fungroids from Outer Space. And get over it, too.

All in all, even without getting some of the clear references to earlier material, it was a decent enough magitech robot show with an ending that wasn't too badly handwaving cod-mysticism -- and left a wide opening for an S3 some day. I guess it was no accident that the uber-mech, Mark Nicht, had the same colour scheme as Evangelion Unit 01.

I also watched Appleseed XIII, a series which went completely under the radar back in '11. It was a competent Appleseed pastiche, decorated with occasional sequences that seemed familiar from the manga.

To my delight, it didn't rehash the same spider-tank story that was used for the '94 OVA and every movie since; and as such is probably the best adaptation since the original OVA, for all that it is really Appleseed:SAC 2nd Gig. The spider tanks did wobble briefly onto the stage -- as a "you remember when..." --in the last episode, which did for the most part directly take from a section of the manga -- except where it went completely bananas near the end. Surprisingly that particular episode doesn't seem to have been a DVD-release special.

The machinima style of animation, especially the hybrid of calculated shading and hatching in the textures could get a bit janky at times, but the designs were all faithful to the original, albeit sans the occasional lapses of that original into SD. Sans also the various bits of fan-service from the original.

The adaptation turned down Deunan's level of cast-iron combat bitch to a low setting (it was quite erratic in the manga), and succeeded in making her a more plausible overall female, once the early bout of anime-enhanced Daddy issues died down.

Then, to finish up the year, having taken up Amazon Prime on the 30 day free trial for my Christmas shopping, I watched YuYuYu S2.

Having read the Washio Sumi LN around the time that YuYuYu was airing, the animated version that formed the first half of the series took the rather sparse (and, in the fan translation, fairly directly rendered) prose and treated it as a rough working draft, embellishing it based on a couple of years' development of the setting.

Of course that's as much to do with the LN being very light on the descriptive text, leaving a fairly blank canvas for the anime to fill in, from the ritual defences on the Great Seto Bridge to the wounds we see the girls bear -- this is not the Year 300 Hero System with fairies to take the bullet -- as well as embellishing the weapons the girls wield, and their henshin sequences as well (this was the first time I've seen a magical girl adjust her outfit mid-henshin).

With the WaSuYu section released as three movies, there was some reshuffling with episode 3 (of 6) pulling in part of chapter 5 (of 8), as well including new material in a light-hearted mood (as one might expect from a script writer who counts Seto No Hanyome and Carnival Phantasm amongst his previous credits) to move the end of chapter 4 to also be the end of episode 4 (2nd movie). Even so, the final episodes managed to cover the remaining half of the LN with only one significant SoL scene dropped out, while also expanding the battles, with Sonoko's mankai matsuri being against a bigger threat than the LN had laid out, to take advantage of the change of medium.

There then followed a one-episode recap of season 1, for the new-comers; though with the occasionally "electronic brain pancake crystal elderly"-tier nature of the Amazon subs, I'm sure that most of what was going on would be lost if you hadn't been following the whole Yusha de Aru franchise, when things went full throttle into the six episodes of sequel -- including a "what happened behind the scenes" for the S1 ending.

It was interesting in that this section was really the first time in any of the YuYuYu part of the franchise that we'd actually been privy to any of the title character's introspection.

But then things started to come tumbling down, and generally going full End of Evangelion, including spontaneously disintegrating cultists when their ritual comes to a head. And it's really no spoiler nor surprise when, the threat revealed, Yuuna punches everything into daijoubu -- or as best can be achieved in the circumstances.

The main issue I had was that, like the first series, the ending was done in a rush -- an extra episode would have let it breathe, rather than being a psychedelic kaleidoscope and a slide-show towards the end; and then it could have been great, rather than very good. I should also have twigged that Truck-kun was a Vertex long ago.

Side dishes

No, not that sort. Titter ye not!

Having started to read the translations of Legend of the Galactic Heroes that had built up on my to-be-read stack last year, I've also begun a third pass at watching the series, after having gotten distracted in the mid-teens of episodes on previous goes.

The first volume matches the substance of the first 16 episodes, though the OVA has episodes not found in the book. Things escalated very quickly at the end of the second cour with book 2 being the end of episode 28, but then seemed to drift off into being Lex Luthor's Galactic Scheming for book 3 (up to episode 35) where I'm currently parked, with books 4 and 5 still in my in-tray.

Having quite liked the first series, I also tried Gatchaman Crowds Insight but I just didn't feel it; rather than being Hajime vs the Establishment, Hajime is just part of the Establishment now, and the new characters weren't carrying it, so I dropped it at that point. The new characters are bland, and take up too much of the time; and a serious incident of UNDERSTANDING on Rui-Rui's part didn't help either.

The main new show to catch my eye for the autumn season was TWOCAR (having picked up nothing from spring or summer). Being an unusual sport, with a bonus feature of plenty of scope for girls in leathers, it was the sort of thing that had promise -- if only it had stayed concentrated on the sport, at least as much as, say Minami Kamakura GHSCC did.

In practice, it was actually quite disappointing on a 3-episode trial and drop. Not only did it seem to have opened with the big race, with the subsequent episodes being a flashback, there's way too much dorama and not enough actual competitive riding. The main character team (as much as there is one, with each episode so far being a team back-story) also have the fairly unsavoury motivation of wanting to win the prize of an entry to the Isle of Man TT because they're both hot for teacher and he left the school to compete there already.

I've also started the TV series of The Ancient Magus' Bride, and 4 episodes in, I'm finding it is very shoujo, in both the continued use of SD and otherwise exaggerated style in the comedy moments (as in Yona of the Dawn), and also in its Fifty Shades... style of the heroine being bound into service of this mysterious master as a kind of a Beauty and the Beast thing. Still, it has been going more into the "encounters with the Good Folk" territory that the OVA teased and never quite delivered on.

Considered thus as a way-more-shoujo Natsume Yuujin-cho (itself also shoujo) or Mushi-shi, it's been adequate at this point, but it's not been drawing me in (possibly due to the unfair competition from YuYuYu). I also hear, worryingly, that it has a story developing -- too many series are perfectly fine when they start as being episodic with scene setting, and then fall flat on their faces when the LOL!plot emerges about 3/4 the way through (RD Sennou Chousashitsu and Otome Youkai Zakuro being a couple of examples of this effect).

That would be bad, because it has things the apprenticeship and managing your Sleigh Beggy which are the sort of background elements that can be spun indefinitely for flavour, and the "helping the Church" could be an on-going reason to go find the mushi/youkai of the week, also without anything more than establishing the setting.

I probably haven't watched quite enough recent titles to get all the references in Animegataris, but it may be silly enough fun to give a second chance. It will depend on the ratio of whimsical out-of-folklore elements to gratuitous onsen scenes in the the all fox-girls all the time Konohana Kitan whether that one continues -- but I've only tried an episode of either so far.

And in a blast from the past, ten years on, having another go at Lucky Star, and what I found bland and somewhat tedious (or even grating in the case of Lucky Channel) in 2007 is just being pleasant fluff. I had forgotten to quite what extent "all they do is talk about food" characterised the first episode, but after five episodes (a new high-water mark), it remains the most successful pure CGDCT series for me (usually getting to the first mid-episode commercial break is a struggle). The "I buy sausage" OP is still a musical car crash, though.

Re-heated

Apart from rewatching AKB0048 (still as fluffy and sappy as before), I also rewatched the first half of Rozen Maiden S1 (as cute as ever), and as an experiment, started on Haruhi to see how things had changed since I obviously didn't get it in 2006.

This time I could appreciate the credits for the Adventures of Asahina Mikuru, but I was surprised at my quite visceral reaction to Haruhi when she started doing her thing in the next episode. I found that I had to skip a chunk of episode 3 (had this been a 2016 series, being watched for the first time, it would have landed with an audible "splat!" when I dropped it about 1/3 the way in to that episode), and that episode 4 (The Boredom...) was pretty boring due to having already seen (a decade before) what was being alluded to in the callbacks to the as yet unseen but internally-chronologically earlier events, and the rest of it failing as comedy. Eight years being a long time on the internet, the most amusing thing by episode 6 has been the contrast between Kyon's struggle with the club web-site and the frictionless upgrades of the Brave Clab[sic]'s.

The contrast with my re-appraisal of Lucky Star could not be greater. Clearly, I still don't get it.

Monday, January 01, 2018

December Cycling

Up to 15268.8, 998.5, 217.0 = 100.9 or 2226 miles for the year; 900 miles on the winter bike, 1000 on the summer bike, 100 on the folder, and the rest on holiday bikes. A slow month, mainly because the only times I got on my bike was to go to the pub, and on the couple of nice days in the last week, I pottered in the garden instead of putting in miles. The two snowfalls (the first of which would have been a WFH snow day if I were still working), and frequently wet and windy weather for most of the month didn't help lure me out.

Let's see what 2018 brings.