By Ruben Schade in s/Singapore/Sydney/.

Ansible: Unable to find in expected paths

I was copying a file on a remote server to another location, to modify with required settings. I often prefer this to using templates, so I’m always working with the latest config.

- name: Move config to expected place
  src: "[SOURCE FILE]"
    dest: "[DESTINATION FILE]"
    force: no  ## don't overwrite

But when I ran the playbook:

fatal: [IP]: FAILED! => {  
    "changed": false,  
    "failed": true,  
    "msg": "Unable to find '[SOURCE FILE]' in expected paths."  

Turns out, copy transfers from local to remote by default, so it couldn’t find it. If you include the following directive, the source is defined as remote:

remote_src: yes


Posted by Ruben Schade

Electroboom on the Right Hand Rule

ElectroBOOM is the world’s greatest YouTube Channel, right behind mine where I replaced the fan on my first generation MacBook Pro nine years ago. Don’t watch that.

Mehdi Sadaghdar is hilarious, educational, and FULL BRIDGE RECTIFIER. I’m a proud Patreon subscriber, and you should be too.

For you Friday viewing pleasure, have this earworm that’s been stuck in my head all day. Mission accomplished!

Posted by Ruben Schade

What about AIX and HP/UX?

Here’s a thought. With Solaris on the rocks, what does the future hold for AIX and HP/UX?

Solaris is on x64 and SPARC, though that division has also been gutted. AIX is on POWER, and HP/UX is on PA-RISC and x64. There’s a risk pun in there somewhere.

As with Solaris, both have a broad and entrenched deployment base. But for how long? IBM is pushing Linux on POWER, and HP is struggling in general.

It’s interesting that macOS, via Darwin and Mach, is now the most widely used UNIX alternative to Linux, albeit in a different space. For the pedants, Android is Linux, but it isn’t GNU/Linux… right?

As a pointless aside to this disjointed post, I’ve used AIX, but not HP/UX that I can recall. I’d fire it up a demo or whatever version in QEMU and trying it out, for fun.

Posted by Ruben Schade

A journal entry from 2010, and date formats

I was cleaning out my ancient Google Docs account, and found a single file which I will share with you now.

2010.11.20 Sunday

Oh, that was it. I probably should have written more. It also kills me that I wasn’t using ISO 8601 dates back then. The order is correct, but it should really have been written as 2010-11-20.

Which leads us to another series of Rubénerd Directives, this time about dates:

Clear icon from the Tango Desktop Project

  • MM/DD/YYYY makes no sequential or aesthetic sense whatsoever, and adds to confusion when globally-minded communicators read 01/01/2017.

  • DD/MM/YYYY is sorted, which is a start.

  • If you don’t use leading zeroes, you’re a monster who probably truncates years and puppies, too.

  • YYYY-MM-DD is optimal, for sorting and aesthetics. East Asian societies long figured this order out.

You’re free to disagree with any of the above points, just as I’m free to point out you’re incorrect. Thank you.

Posted by Ruben Schade

Goodbye to Solaris, probably?

Betteridge’s Law states headlines ending with a question mark can be answered with no. I hope he’s right in this case, because the situation for Solaris users and fans is looking increasingly dire.

Since Oracle bought Sun on that fateful day in 2010, we’ve witnessed dozens of products get dropped, but the idea of Solaris being among them still seemed so far off, even if the OS itself did seem to be falling out of favour.

On the advertising front, there was Oracle’s push of “software and hardware engineered to work together”. It was in all their slides and graphics and site footers; a kind of Apple pitch for the enterprise. I read that, albeit with reservations, to mean an in-house stack, from SPARC, to Solaris, to some Java middleware, to a fat Oracle DB.

Oracle was quick to close-source Solaris, but also kept up development. You can still free-beer download version 11.x, and have inline ZFS encryption and other extra niceties. I ran it as a fun experiment on one of my HP microsevers, and never got around to replacing it. Not the most glowing endorsement, but there we are!

The tenuous situation with Solaris came to the fore with the now-infamous tweet from Simon Phipps:

For those unaware, Oracle laid off ~ all Solaris tech staff yesterday in a classic silent EOL of the product.

Ouch. And in terms of Oracle’s future plans, Simon Sharwood wrote:

Oracle has committed to support Solaris until the 2030s, so users aren’t going to be orphaned. But if the company is slowing SPARC development it suggests that even the cloud may not be available as an escape route for users of the platforms Oracle acquired from Sun. Which in turn suggests that Oracle’s plan to build a SPARC-powered cloud hasn’t been well-received.

That’s a topic for future thoughts and postings, but for now it does seem to signal the death-knell. These cloud migration plans also sound worrying on the surface, though I’m willing to defer judgement till we get more details.

Solaris is huge, entrenched, and in more enterprises than many of the pundits I’ve read seem to appreciate. Hence, the long term support. But I couldn’t blame anyone in a decision-making position at a nimble enough company to be weighing up their options now. Especially since even Oracle is pushing Linux.

I originally thought my first *nix was Red Hat, but I remember now the first one I ever interfaced with was a blinking SunOS console at school. I wrote and submitted all my Java assignments at university to an old Solaris box. I’ve also been interested in its lineage and use in the context of the BSDs, given I’ve generally preferred them over Linux.

It’s sad to witness this latest news, but truth be told Solaris had started fading long before this announcement. More power to illumos and the distro maintainers with their open-source fork, I may give them a try again.

Posted by Ruben Schade

Bootstrapping Perl with Perlbrew and CPAN

@Stilgherrian reminded me that there are still Perl devs out there. It can be a lonely existence, what with all these newfangled languages that don’t act like Swiss Army Chainsaws. And Perlbrew by the illustrious gugod and friends is still the best way to get it, for three reasons:

  1. It’s Perl.

  2. You’ll likely get versions fresher than your package manager of choice.

  3. You can build environments with specific versions and packages for individual projects, where containers or gaols jails or whatever aren’t practical. Drive space is cheaper than dependency hell.

The website lists full install details, but this is a self-explanatory use case:

$ \curl -Lo
$ cat
$ sh
$ echo "source ~/perl5/perlbrew/etc/bashrc" >> ~/.bashrc
$ perlbrew install stable
$ perlbrew switch perl-5.26.0

You should always inspect install scripts you download before running them, rather than just piping to your shell. For security obviously, and others.

A Sasara anime figure from Clara on top of several Perl tomes

Now you have street cred, because you can ride camels on streets. Also, this folder exists in plain sight in your home directory. Why hide the pride like RVM?

$ ls ~
==> perl5/

After opening a new shell, you’ll want to confirm you’re running with the version of Perl you expect:

$ perl -v
==> This is perl 5, version 26, subversion 0 (v5.26.0) built for darwin-2level
==> (with 1 registered patch, see perl -V for more detail)

Then you can install your CPAN packages as per normal, such as this one by Karen Etheridge that I’d consider all but mandatory in 2017.

$ perl -MCPAN -e 'install Acme::ಠ_ಠ'

Posted by Ruben Schade

Amagi Brilliant Park #01

As a confessed Kyoto Animation fanboy who nearly died with glee when visiting their official gift shop and offices in their beautiful leafy suburb of Kyoto last month, as well as the Tamako Market-market, it pains me to admit I haven’t watched all their series. Specifically, I never watched Amagi Brilliant Park from 2014.

So like any good AC to DC converter with reverse polarity protection, I’m fully rectifying the situation. HAH! And to do it justice, I’m going to do per-episode, spoiler-laden reviews, just like the good old days.

Date me or I’ll shoot

I haven’t read the manga, so I can’t comment on whether this is how the original also started. But certainly Kyoani doesn’t pull any punches within the first scene; specifically it pulls a firearm Mami would be proud of. The ruggedly handsome Kanie isn’t aware that its non-lethal, leaving him with as many options to comply as a religious person is being told they have free will, but will go to hell if they don’t follow the doctrine!

Which Clara thought made him look cute, of course.

Point is, we learn this isn’t to initiate a date, rather to save an ailing park and its staff from oblivion. It’s this dichotomy between the expected and absurd that quickly characterises much of the series. Maybe it’ll get tiring after a few episodes, but it was quite fun to start!

Oh dear, I used term dichotomy. Next I’ll be saying the juxtaposition of paradigms results in thinkfluencing plot synergies. Or kids pointing out blue and white stripes, I don’t know.

Okay, shoot the mice

The Amagi Brilliant Park, regrettably located next to a love hotel people confuse it for owing to its misleadingly-named bus stop, is in a bad state. Where there isn’t rubbish, there are broken signs and misaligned rails that for a train fan were just brutal to watch.

Sento’s deadpan, flat introductions to each of the exciting(!) exhibits and rides reflects the true level of joy — and upkeep — one can expect from them, and admittedly were pretty funny. The roller coaster and mouse hunting fared better than others, and the fairies are your typical distilled Kyoani moé crack cocaine (also, damn it Kyoani!), but there are few paying guests.

You get the sense something is a bit different from the initial bus ride to the park, down to each exbibit, and finally with concrete explanations on the roof. These people come from another world, that the fun and energy of others sustain their existence. One could draw parallels between this and the livelihood of real people working in the entertainment industry, but maybe we’re getting ahead of ourselves.

Fanservice shots

One would be remiss not mentioning the infamous end shower scene, or the aforementioned discussion of pantsu… though none were shown. This is a classy blog, so these won’t be featured here.

But Kyoani’s art style and production values are in full show here, down to the lensflares on Sento’s intimidating firearm, to views around the park. It’s not overly detailed, but I love the aesthetic.

There are also the small things, like stereotypical Japanese vending machines and the bus maps that are thoroughly authentic, and make me wish for a certain milk coffee. Who would have thought travelling there would have unlocked all these other hidden gems I would have otherwise glanced over or ignored?

Concluding shots

There’s a hell of a premise here, that at this early stage I’m not entire sure is an elaborate ruse or the real deal.

Kyoani have dealt with supernatural elements before, namely our one true God, even going as far as to mix them in with the mundane world we inhabit. But they’d seemed to be moving away from aspects of that by 2014; Chuunibyou was about letting go or embracing the imaginary, and Free! was about very real, very hot swimming gentleman. Maybe it’s that difference that makes this series seem ever so slightly unbelievable, which may be the whole point.

Let’s see where this goes!

Posted by Ruben Schade

Rubénerd Show 369: The wurst episode

Rubénerd Show 369

Podcast: Play in new window | Download

26:16 – This may be the worst episode of the show ever recorded. Its saving graces were a few clips from the Hypothetical Institute, one of the non-Onsug shows Ruben listens to. Topics include illness, backmasking, and the only appropriate way to unsubscribe from email. Don't listen to it! Or just skip to the clips.

Recorded in Sydney, Australia. Licence for this track: Creative Commons Attribution 3.0. Attribution: Ruben Schade.

Released September 2017 on The Overnightscape Underground, an Internet talk radio channel focusing on a freeform monologue style, with diverse and fascinating hosts.

Subscribe with iTunes, Pocket Casts, Overcast or add this feed to your podcast client.

Posted by Ruben Schade

firewalld gotchas

FreeBSD with OpenBSD’s pf is preferable, but I’ve been learning firewalld on Debian. The console interface is almost as nice as ufw, provided you avoid a few common gotchas.

Gotcha one: confusing gotchas with Gatchas

Official art from the Gatchaman Crowds anime from 2013

Oh Ruben, you’ve still got it.

Gotcha two: removing services

All the intro guides I read describe how to add services to a zone, but not to delete them. If you do this:

# firewall-cmd --zone=public --delete-service=ssh
==> Error: BUILTIN_SERVICE: 'ssh' is built-in service

This attempts to delete the service definition, not the service from that zone. You want the remove command:

# firewall-cmd --zone=public --remove-service=ssh
==> success

Gotcha three: not reloading after defining services

There are two ways to define your own firewalld service: quoting a port number directly, or creating a new service definition. The latter is preferable given the evilness of magic numbers, and can be achieved by copying an existing definition and seasoning to taste.

For example, if you wanted to run ssh on a different port:

# cd /usr/lib/firewalld/services/
# cp ssh.xml ssh-rubenerd.xml
# sed -i 's/ssh/ssh-rubenerd/' ssh-rubenerd.xml
# sed -i 's/22/33333/' ssh-rubenerd.xml

And then use it:

# firewall-cmd --zone=public --add-service=ssh-rubenerd
# ==> Error: INVALID_SERVICE: ssh-rubenerd

Wait, what? But didn’t I just define it? I sure did, but I didn’t reload firewalld first:

# firewall-cmd --reload
# firewall-cmd --zone-public --add-service=ssh-rubenerd
# ==> success

Gotcha four: confusing gotcha with matcha

No image this time, I think I’ve milked this joke for all it’s worth. Which is unusual, because you wouldn’t generally put milk in matcha tea.

Gotcha five: using firewall-cmd

The firewall-cmd command is fine, but the best way to use it is to define your rules in Ansible, then load them in using the firewalld module!

- firewalld:
    zone: public
    interface: eth1
    state: enabled
    permanent: true
- firewalld:
    service: https
    permanent: true
    state: enabled
- firewalld:
    rich_rule: 'rule service name="ssh" audit limit value="10/m" accept'
    permanent: true
    state: enabled

Posted by Ruben Schade

Five hundred pages

I used to make a big deal of pointless blog milestones, so I’m rather disappointed I missed this huge one. Five hundred pages with ten per page means I’ve done five thousand posts on Rubénerd, assuming I’m able to multiply numbers properly.

Let’s double check.

perl -e 'printf(500 * 10)'
==> 5000

Boom! But let’s also confirm based on my Hugo content folder:

find -type f | wc -l
==> 5113

Wow, I must have at least a hundred drafts. One day these will be published.

As I used to say, why compromise quantity for quality when you can have both? Or in my case, just quantity, if this quality of this post is anything to go by.

But seriously though, this blog has been one of the few constants in my life since I was a teenager. Now I’m in my early thirties, starting to lose my hair, and am royally embarrassed at the way I used to write. But I wouldn’t delete or trade this collection of random observations for anything.

Posted by Ruben Schade