It’s been a while since I’ve seen someone use footage from Hyper Police and DearS. The extensive use of AsoIku came as no surprise, of course.
I don’t care for the music, but… catgirls!
(via)
More than usual, I mean. I’ve been playing with the static site generator Hugo as a way to move this blog and its comments out of Movable Type.
After clearing the initial hurdle of incomplete and inconsistent Open Source documentation (pro tip: if a project starts numbering versions from 0.1 instead of 1.0, it’s safe to assume that there’s no tech writer on the team), the next step is adding a theme to render your site. There’s no default theme, and half a dozen different recommended ones of varying complexity and compatibility. Short version: I’m not sure Hugo currently has layout functionality equivalent to Movable Type 2.x from 2003, much less any of the modern tools; it might, it’s just that hard to find out.
There’s some support for basic pagination, something that’s always been missing here (and which is partially responsible for the long delay when adding comments), but the built-in paginator includes a link for every page, which is pretty painful when you have 200+ pages. If I get the time, I’ll have to dust off my Go and send them a patch to make it behave sensibly with large numbers.
Rendering all ~3,800 entries (counting quotes and sidebar microblogs) and ~3,500 comments takes about 12 seconds on my laptop, but that’s still too long for iterative testing, and the OS open-file limit makes it impossible to test with the live-rebuild feature of the built-in web server.
So I wrote a quick Bash script to retrieve N random articles from Wikipedia and format them the way Hugo expects, as Markdown with TOML metadata. Why Bash? Because the official Wikipedia API for efficiently retrieving articles and their metadata using generators and continues is either broken or incomprehensible to me, since I spent two hours at it and got a never-ending list of complete and partial articles. So I just looped over the “https://en.wikipedia.org/wiki/Special:Random” URL and piped the output through Pandoc. Rather than pulling in the real metadata, I just generate dates and categories in Bash. Now I can quickly generate a small site with multiple sections and simple categorization, and it’s trivial to add more features like series, tags, authors, etc. [in fact, I did!]
(relevant only to Hugo users after the jump…)
This search was a real trip down memory lane, and we even got a sighting of the rare double half-rims:
(via)
We were all-hands-on-deck for Y2K at WebTV, with Operations, devs, and management all waiting for a scramble signal from QA if something went wrong. Since, like most businesses, we’d fixed everything we could think of well in advance, I was hanging out in a conference room with my 4x5 view camera taking pictures of whisky bottles (and a mildly-cute girl from another group who wandered in at some point; portraits only!).
Turned out there was exactly one thing that had been missed: trying to add a credit card that didn’t start being valid until 1/1/2000. This produced a legendary flaming email from Steve Perlman, which was preserved for posterity because it was a reply-all that CC’d the Remedy ticket system.
In common use, “woke” seems to be a term like “trans” that basically means “the opposite of normal”, and has the same virtue-signaling purpose, as most recently demonstrated in this pathetic example of a Stanford application essay.
So it was amusing to see the top definition on Urban Dictionary is:
"A state of perceived intellectual superiority one gains by reading The Huffington Post."
Dear Democrats, you chose poorly.
Rina Kawaei demonstrates the kenjutsu equivalent of holding your pistol sideways:
(via)
Welcome to the first non-trivial update to this blog since 2003. Things are still in flux, but I’m officially retiring the old co-lo WebEngine server in favor of Amazon EC2. After running continuously for fourteen years, its 500MHz Pentium III (with 256MB of RAM and a giant 80GB disk!) can take a well-deserved rest.
The blog is a complete replacement as well, going from MovableType 2.64 to Hugo 0.19, with ‘responsive’ layout by Bootstrap 3.3.7. A few Perl scripts converted the export format over and cleaned it up. LetsEncrypt allowed me to move everything to SSL, which breaks a few graphics, mostly really old Youtube embeds, but cleanup can be done incrementally as I trip over them.
Comments don’t work right now, because Hugo is a static site generator. I’ve worked out how I want to do it (no, not Disqus), but it might be a week or so before it’s in place. All the old comments are linked correctly, at least.
Do I recommend Hugo? TL/DR: Not today.
Getting out of the co-lo has been on my to-do list for years, but I never got around to it, for two basic reasons:
I was hung up on the idea of upgrading to newer blogging software.
I didn’t feel like running the email server any more, and didn’t like the hosting packages that were compatible with MT and other non-PHP blogging tools.
In the end, I went with G-Suite (“Google Apps for Work”) for $5/month. Unlike the hundreds of vendor-specific email addresses I maintain at jgreely.com, I’ve only ever used one here, and all the other people who used to have accounts moved on during W’s first term.
Next up, working comments!
Actually, next turned out to be getting the top-quote to update
randomly. The old method was a cron job that used wget
to log into
the MT admin page and request an index rebuild, which, given the tiny
little CPU, had gotten rather slow over the years, so it only ran
every 15 minutes.
The site is now published by running hugo
on my laptop and rsyncing
the output, it’s not feasible or sensible to update the quotes by
rebuilding the entire site. So I wrote a tiny Perl script that regexes
the current quotes out of all the top-level pages for the site,
shuffles them, and reinserts them into those pages. It takes about
half a second.
Since there are ~350 pages, there will be decent variety even if I don’t post for a few days and regenerate the set. If I wanted to get fancy, I could parse the full quotes page and shuffle that into the indexes, guaranteeing a different quote on each page (as long as the number of quotes exceeds the number of pages, which means I can add about 800 blog entries before I need to add more quotes. :-)
(via)
(from the NSFW game HuniePop)
Shamus didn’t precisely recommend HuniePop, but he did say that the Bejeweled-ish gameplay was far superior to the original and most of its clones, and that he felt quite uncomfortable with the dating-sim elements, particularly the “overnight date” where you play a twitch version of the puzzle to “score” with the young ladies. So, to be more precise, he did recommend it, but only to pervs who like anime-style cheesecake and hilarous simulated moaning with their match-3 puzzles.
The gameplay is engaging, and it’s completely free of the fetishes it would have if it were a real Japanese dating sim. Meet girls, impress them with your Mad Match-3 Skilz, admire the naughty pictures they send you, and giggle at the noises the voice actresses make as your score goes up and down in the twitch puzzles. There is an easy-to-apply “adult” patch if you buy it on Steam (create a file with the correct name), but all it does is unlock a few pictures that are more detailed and less appealing.
The art and voice acting are mostly quite pleasant in the dating-sim component, making the girls quite appealing. The unlockable characters are pretty easy to get, and include alien bounty hunter Celeste, catgirl Momo, and love-fairy Kyu. Once you’ve collected the whole set (pokémon joke omitted…), there’s one final secret character, and then an “unlimited” mode.
There are two major drawbacks: it only saves when you leave an area
(so you can’t upgrade your stats and buy/sell things, then exit), and
the Mac version stores your save file in the cache folder, which can
get wiped if you upgrade the OS. This is apparently a common problem
with games built on the Unity engine. So, be sure to save the contents
of this directory frequently:
~/Library/Caches/unity.HuniePot.HuniePop
A long time ago, in a Usenet newsgroup far, far away, in response to a post on “Top Ten Reasons Magic is Better than Sex”, I wrote:
(I dug this out because I found the old “recently-spotted” link where someone had translated them all into Spanish. Link was still good, to my surprise.)
It felt lonely in here, so I got Isso
working for comments. Easy to nuke-and-pave if I don’t like it, at
least. The whole “Python virtualenv” experience was a real pain in the
ass, though, since pip install
repeatedly claimed to have installed
all the dependencies, while pip list
called bullshit on that.
I’ll probably have to put Monit on the server in case it crashes, but that can wait.
It’s possible to have Isso dynamically update the comment count in the article metadata block, but I just spent about an hour failing to get it to work, between Isso’s and Hugo’s overlapping limitations.
On the Isso side, you can either show the comment form or add counts to a page. They’re conflicting JavaScript includes, according to the docs. I could write my own bit of jquery to make an ajax call to retrieve the count and insert it into the page, but I thought that would be more work.
Until I ran into Hugo’s variable-scoping. When you render content in a
list context, you’re really fully rendering each page in its own
context and then including the results. So, inside a template,
variables like $.Kind
and $.URL
refer to the individual article’s
context, as if you were currently writing out that one article to
disk. And of the two completely different ways you can set variables,
one of them is strictly block-scoped, and the other is strictly
page-scoped. You can’t pass either down into a partial template.
(there’s a partial-with-arguments called a shortcode, but that’s a completely different beast, and I’m not sure it is either effective or efficient to replace all your partials with shortcodes) UPDATE: completely impossible, in fact; shortcodes don’t work in template files, and partial templates don’t work in content files. They’re completely different things with completely different behaviors. You have to construct a custom dictionary and pass it into a partial template, which is butt-ugly and error-prone.
So, yeah, no comment-count on the home page at the moment.
I wrote my own bitty Jquery function to use Isso’s API directly and insert the comment count on page-load. It would be nice if the API returned “0” instead of 404 errors when there aren’t any comments, though.
I refuse to apologize for what happened when the soundtrack from Mary Poppins was playing as I read Mauser’s comment about Lollygagging. Dedicated to Roman Polanski, of course.
“…and every pass I plan to make,
involves Delicious Cake.
A law, or three, won’t save young girls from me…“Some champagne and a quaalude made the little girl go down,
the little girl go down,
the little girl go down.
But the booze, pills, and ass-rape were all felonies, I found,
so I fled the USA.”
Not mine, sadly, but the ancient NetEngine WebEngine that was dotclue.org for so many years. I pulled it from the co-lo on my way into work this morning, and its reward for fourteen years of faithful service will be a disk scrub and an e-waste bin.
By the way, for all the sometimes-deserved criticism that OpenBSD and its wranglers get, I was still running v3.3 without anyone ever successfully breaking in. I locked it down with a very small set of services, and required non-root logins with ssh keys, and Theo’s Paranoid Army took care of the rest. I applied the various security patches that came out in 2003-2004, but that’s it.
I don’t recommend not updating your server for 14 years, but you can go a lot longer between updates if you start with something designed for security.
Amusingly, I still own the even-older server that hosted munitions.com back in the days when it was shared between folks at WebTV, but I doubt I have anything left that could mount those disks to scrub them, so they’ll just get the sledgehammer treatment, and then go into the e-waste bin.
The very, very NSFW site bakufu has a nice collection of lingerie photos collected from Amazon listings, featuring a very cute AV actress. The outfit after the jump looked particularly tasty…
After Steven Den Beste died, some of the (many!) people who were concerned about the loss of his old web sites reached out to the family to try to recover the data from his server. I was pulled in because I was physically closest when it seemed like we might need someone to go to Portland to pick up the machine.
That wasn’t necessary, but since I was the one exchanging email with his brother, I was the one who ended up with a shiny little thumb drive containing the old Chizumatic site, and between that and the Wayback Machine, managed to synthesize a complete, functional website.
I packaged it all up, sent it to my not-so-secret allies, and then… nothing. This is not a criticism or complaint; everybody’s busy, and after that one energetic weekend, I hadn’t done anything about it, either.
But now I have a brand new virtual server at Amazon, where bandwidth is silly-cheap and disk space ain’t no big deal. And I’d already figured out the Nginx config to get the old server-side includes working.
So, this may not be the official permanent home of Steven’s old web sites, but it is a home, for a welcome houseguest.
(via)
(via)
Why did you remove count-lines-region
and make the only option
count-lines-page
? How is counting Control-L-delimited “pages” useful
as a default behavior?
Worse, the only way to get line-count from a region is now
count-words-region
, but that takes extra keystrokes to avoid
invoking count-words
. (yes, I know there are keyboard shortcuts;
there are lots of keyboard shortcuts. I’ve never trusted them to be
stable)
So, more workarounds in my .emacs
file to turn Emacs back into a
text editor. 😡 💩 🔥
“…and this week Doc is playing with Julie, Gopher is playing with Vicki, and Isaac’s got a big surprise for Captain Stubing!”
(via)
A lot of the pictures that accumulate in the leftovers folder after I do a theme search on Gelbooru are rejected for facial expressions, excessively complex backgrounds, or not really being cheesecake. In general, I bias the posts toward “happy-sexy anime-style girls with simple backgrounds”, but that doesn’t mean the others aren’t any good…
Never mind the general babehood and the token mod-black-chick amazon in the background, check out the uplifting fashions our heroes and their captor are sporting. Paradise Island’s lingerie shops clearly feature Sufficiently Advanced Technology, enough so that I wonder if the Invisible Plane was just a spinoff product.
(via)
I need to order these for me and my sister, for our next trip to Japan…
(via)
That is, “when you hear these words, you know it’s safe to stop taking someone seriously”. In no particular order:
What did I leave out?
(note that it is possible to use some of these words and phrases in a way that is not meaningless blather, but that’s not the way to bet)
(linking to an article on an “SF” site that must come with a built-in fainting couch; seriously, the brief excerpt starts with this hilariously nonsensical statement: “the heterosexism goggles, which derange content via chauvinist interpretive paradigms”)
You’ve spent the past two weeks being yelled at by a user for not getting their external partner’s incoming connection to work
and you’ve had a tcpdump
running for an entire week showing that no
connection attempts have been made from the IP addresses the partner
provided
and they schedule a conference call at a time that’s convenient for the partner’s third-world contractors
and they confirm their IP addresses in the chat but the test fails again
and your tcpdump
shows them coming in from a completely different IP
address
and they start to wrap up the meeting saying they’ll contact their network team who hadn’t been invited and reschedule for the next day
and you have to yell into the microphone to tell them to try again right now since you’ve just added their real IP address to the firewall
and they confirm that it works but continue talking about who’s going to do what and how they will communicate the results and who will be responsible for the next step and oh fuck who cares you stopped listening two minutes ago
and you close the multiple tickets created by the user who doesn’t understand that CC’ing the helpdesk on every email keeps creating new tickets
and the partner emails a list of 26 possible IP addresses that does not include the two they originally claimed were the only ones they use
and then they try to schedule another meeting anyway and you reject the invite twice
and you go back to bed.
…and reach for earplugs because the neighbor puts his dog out when he goes to work and it barks and whines all day long and sounds remarkably like one of your users.
I think you’re pushing your personal kinks a little too hard.
use CGI;
“I’m sorry, Dave, I can’t do that.”
cpanm CGI
“You really shouldn’t use that any more. It’s bad for you.”
perldoc CGI
“The rationale for this decision is that CGI.pm is no longer considered good practice for developing web applications, including quick prototyping and small web scripts. There are far better, cleaner, quicker, easier, safer, more scalable, more extensible, more modern alternatives available at this point in time. These will be documented with CGI::Alternatives.”
perldoc CGI::Alternatives
No documentation found for “CGI::Alternatives”.
cpanm CGI::Alternatives
perldoc CGI::Alternatives
“Let me build this strawman that doesn’t actually make good use of
CGI.pm
to show you how you can easily switch to one of half a dozen different frameworks that let you use half a dozen different templating systems launched with half a dozen different embedded web servers, and replace your self-contained 100-line CGI script with half a dozen files located in half a dozen directories. For more fun, my sample code gets mangled if you try to view it as a manpage, so you really should download the raw file from CPAN.”
cpanm --uninstall CGI::Alternatives
cpanm Dancer2
perldoc Dancer2
cpanm --uninstall Dancer2
cpanm Mojolicious
perldoc Mojolicious
perldoc Mojolicious::Lite
use Mojolicious::Lite;
plugin CGI => [ '/' => "trivialscript.cgi" ];
app->start;
use CGI;
…
How to tell that your new random-word generator works: feed it the text of the Jargon File and get back things that you could easily come up with real jargon definitions for…
Most pictures tagged “candy” involve Halloween, Valentine’s Day, and/or simulated oral sex. This tends to reduce the number of smiles, but I did my best.
…aka Sword Oratoria, the DanMachi spinoff (streaming on Amazon Strike, the existence of which answers the musical question “how come Crunchyroll still isn’t available on the Fire TV?”).
The DanMachi light novels are sufficiently popular in Japan that they not only got manga and anime adaptations, but two spinoff novel/manga series, the first of which has its anime debut this season.
The author had a problem, though: Dream Girl Aiz Wallenstein has all the warmth and charm of a block of wood. A shapely block of wood that’s really good at killing monsters, but still, wood.
His solution was to make it an ensemble piece about her Familia, putting lots of emphasis on the genki half-naked amazons Tiona and Tione, and adding the insecure-but-eager elf-mage Lefiya, who really, really wants to be Aiz’s friend. Or “friend”; she has a rather active imagination.
The first two episodes are heavy on cheesecake, yuri, and foreshadowing that Something’s Up In The Dungeon, plus cameos by Bell and Hestia that establish where we are in the main story. And way too much Loki.
Oh, and Ayako Kawasumi has taken over the role of elf-senpai Riveria. Apparently the original voice actress is off dealing with health problems.
The BBC keeps deleting copies of this video; hopefully this one will last for a while.
The Arlo cameras I installed outside have captured plenty of neighborhood cats hanging out on my front porch, but clearly I need to put out special bait if I’m going to catch catgirls like Mizuki Hoshina…
Not a big fan of the new haircut, but that’s like complaining there’s not quite enough whipped cream on your sundae. Or on your catgirl. Or something like that.
(via)
If you’re a novelist, and I’ve never heard of you, the fastest way to get knocked off my maybe-read list is to include anything in parentheses or after a colon that even hints that this is not a standalone novel. Saga, Series, Trilogy, Book N, A something something, whatever.
A series title that’s significantly longer than the book title guarantees that free is too much to pay for your work. Also, price over $7 for an ebook; I’m willing to go over that for writers I like, up to a limit of $9.99, but that’s it, and only if that’s not higher than the paperback/hardcover price.
A colon followed by the words “A Novel” is a no-shit-sherlock way to guarantee that I’ll cross you off my list, except in the extremely rare case of the moronic publisher who puts it on recent Tim Powers novels. But you’re not Tim Powers.
I read a lot of SF and fantasy novels, but you need to remember that when you put your book up on Amazon, you’re not just competing with this week’s best-sellers. You’re up against decades of novels by Ray Bradbury, Gordon Dickson, Gene Wolfe, Patricia McKillip, Robin McKinley, Andre Norton, Clifford Simak, Poul Anderson, Tim Powers, Diane Duane, Lois McMaster Bujold, Vernor Vinge, C. J. Cherryh, George Alec Effinger, Barbara Hambly, Patricia Wrede, Larry Niven, Robert Heinlein, Robert Silverberg, John Varley, and Doris Piserchia, to give a partial list of whose books I’ve bought on Kindle over the past few years. And I’ve left out a lot of lower-tier names.
Admittedly, some of their publishers are imbeciles who think that a badly-OCRd thirty-year-old novel is worth $12.99 despite the easy availability of used paperbacks for $0.99 plus shipping, but enough of the stuff is out there for a decent price that I can afford to assume that your ambitiously-titled series is crap.
Update: Amazon has started showing a lot of recommendations that include a new warning label, the use of LitRPG in the subtitle. If your work is so weak that you need to call out its obscure genre in the listing, I want no part of it.
(via pixiv)
I needed a proper spoiler/NSFW tag for Hugo, and then of course I needed something to hide with it…
When the world was young, and this “blogging” thing was new, I
maintained my site by
hand, typing new content into index.html
as I thought of it. Then I
spent a great deal of time customizing MovableType to suit my needs,
and used it for the next 14 years.
One of the common plugins was SmartyPants, which turned scruffy old
typewriter quotes into pretty curved ones. As a long-time type nerd,
of course I had to use it. The MT implementation was pretty good, and
only rarely guessed wrong about open quotes. The one used by Hugo is,
unfortunately, always wrong in a specific case that I use quite often:
quotations that start with an ellipsis. For those, I’ve had to go
through the archives and manually insert the Unicode zero-width space
character ​
after the opening quote.
I never used MT’s web form for posting content, because, like so many other people have discovered, it’s too easy to lose an hour of work with a single mis-click or fumble-finger. Ecto was a great tool until it just stopped working one day (long after it stopped being supported), with only one quirk: at random intervals it would lose track of the UTF-8 encoding, and post garbage instead of kanji. A refresh would always fix the problem, so it was just a minor annoyance.
When it stopped working, I switched to MarsEdit, which is an excellent tool, and if I could easily connect it to Hugo, I would. As it is, I’ve gone back to running Emacs in a terminal window, with Perl/Bash scripts and Makefiles wrapped around an assortment of command-line tools.
For images, I insist on supplying proper height
and width
attributes so that the browser can layout the page properly while
waiting for the download. Hugo can automatically insert those for
pictures stored locally, but I upload them all to an S3 bucket with
s3cmd, so I run them all through
ImageMagick’s
convert
for cleanup and resizing, then
Guetzli for JPEG conversion, and
embed them with this shortcode:
{{ $link := (.Get "link" | default (.Get "href"))}}
{{ $me := . }}
<div align="center" style="padding:12pt">
{{if $link}}
<a href="{{$link}}">
{{end}}
<img
{{ range (split "src width height class title alt" " ") }}
{{ if $me.Get . }}
{{. | safeHTMLAttr}}="{{$me.Get .}}"
{{end}}
{{end}}
>
{{if $link}}
</a>
{{end}}
</div>
None of the arguments are mandatory (even src
, without which there’s
not much point), but it will add any of the listed ones if you’ve
supplied them, and allow you to add a link with either “link” or
“href”. This can be embedded in the new spoiler shortcode I wrote
yesterday (which relies on Bootstrap’s
collapse.js
):
{{ $id := substr (md5 .Inner) 0 16 }}
{{ $label := (.Get 0 | default "view/hide") }}
{{ $class := (index .Params 1 | default "") }}
<div class="collapse {{$class}}" id="collapse{{$id}}">{{ .Inner }}</div>
<p><a role="button" class="btn btn-default btn-sm"
data-toggle="collapse" href="#collapse{{$id}}"
aria-expanded="false" aria-controls="collapse">{{$label}}</a>
</p>
The results look like this, and yes, the picture behind the NSFW tag is NSFW:
{{< spoiler NSFW >}}
{{< blogpic
src="https://dotclue.s3.amazonaws.com/img/tumblr_o3wrl58ICr1rlk3g8o1_1280.jpg"
width="560" height="420"
class="img-rounded img-responsive"
>}}
{{< /spoiler >}}
It took about 30 seconds to convert my Gelbooru mass-posting script to generate shortcodes instead of HTML, so my most-recent cheesecake post was done this way. Now that I have the NSFW shortcode, I’ll likely include some racier images in the next one…
At some point I’ll pull out all my scripts and customizations into a demo blog on Github, so that I have something to point to when someone asks how to do something that is either not directly supported in Hugo (like monthly archive pages), or is just poorly documented (“damn near everything”).
Not a lot of rewatch value, but a fun Christmas special, and nice to see Nardole again.
Not a bad intro for the new companion, but the snippets-of-mystery season arc has an uncomfortable whiff of how they handled Missy in season 8, where the revelation wasn’t worth all the time spent setting it up. I spent a lot of time wondering who Bill’s step-mom was (last seen having kittens in season 3), which was distracting enough that I almost didn’t get the point behind the box of pictures.
I had to turn on closed captions to catch all of the dialogue. Also, I’d like to see the actress who played Heather in something that shows a little more emotional range. Or a little more skin. Either way, I’m good.
I can’t decide whether this should have been shorter or longer. Shorter, for the material as they used it; longer, if they’d actually put some real thought into it, and maybe given some personality to one of the walk-on parts. Not impressed.
Dear Writer, if you’re going to put Profound Words into the Doctor’s mouth, could you try to make them a bit less trite? And avoid trendy buzzwords like “privilege”? Kthxbye. As for the plot, I’d rather not.
Note: it is common in Japan to come up with a 4-mora abbreviation for just about any lengthy name, so the ridiculous mouthful Dungeon ni Deai wo Motomeru no wa Machigatte-iru darou ka quickly became DanMachi. But what do you do now that there are two spinoffs? Familia Chronicle could be trimmed to FamiCon, but that one was taken a long, long time ago, and doesn’t reference the main series. Worse, there’s just no good way to abbreviate Sword Oratoria. A bit of web-trolling suggests there’s no consensus forming, so I propose DanFami and DanSora.
As previously discussed, this DanMachi spinoff uses Dream Girl Aiz as the wooden totem pole that more interesting characters dance around. Genki DFC Amazon Tiona and Tsundere Kyonyū Amazon Tione provide most of the fan-service, while Delusional Yuri Elf-mage Lefiya is the protagonist whose inexplicable crush on Aiz drives the action. Not the action she wants, but they’ve basically decided to replay the “I want to get stronger so I can nail the cardboard princess” theme from the original series, this time with a girl.
This episode covers the Mosterphilia event, but since everyone involved is higher-level than Bell, quickly resolves the original problem to focus on a retconned fight against a much more dangerous monster, as more buildup for the new menace (no longer just Something’s Up In The Dungeon, now it’s in town!). Lefiya powers through her pain and fear with dreams of Aiz, and is rewarded with an indirect kiss (squeeee!). Loki is less annoying than in the previous two episodes, as she does more than drunkenly fondle the girls.
Streaming only on Amazon’s new “Anime Strike” channel, which is a mixed bag. Good that I can watch it on a big screen, bad that they don’t bother to tell you when new episodes will be available. You just have to guess the schedule.
Best thing going this season. Not without flaws, but while the episodes feel a little rushed, they’re still satisfying. And all the girls are interesting and appealing.
Streaming on Crunchyroll and Anime Strike.
I’ve just started on this one, and I like it quite a bit. More after I catch up.