An update from Stack Exchange on licencing

Internet

Last September a lot of us were concerned with the decision by Stack Exchange to unilaterially change the licences on previously-submitted user content, which is against Creative Commons’ guidelines and the terms of the licences themselves.

Tim Post has finally responded:

We are still investigating the question of substantial edits to content licensed under CC BY-SA 3.0 now that we’ve switched to version 4.0. For the time being, pending final clarification on this, content will be listed with a license based on its creation date. This would mean if a question or answer was created under CC BY-SA 3.0, revisions to it made today would also be released under CC BY-SA 3.0, not 4.0.

And that:

Your feedback made it clear that your concerns were mostly about the way the change was handled, and not so much about any specific version of the CC BY-SA license.

This seems like the most pragmatic way to go, though I wonder why it took six months of silence before we got a formal response.

I don’t submit to those sites anymore; I advocate people posting on platforms they control. But SE is a huge resource, and the clarification is welcome.


Anime Festival Sydney 2020

Anime

I haven’t been to an anime convention for at least a couple of years, so it was a ton of fun to head over with Clara to Anime Festival Sydney 2020, still probably better known as Madfest. I wondered if people’s fears over COVID-19 or the increasingly-overcast sky would put a dampener on things, but the venue was still packed; albeit without some of the voice actors from Japan.

Clara cosplayed as Ereshkigal from the Fate/Grand Order mobile game we’re both unreasonably obsessed with. I came in my Tamako Market shirt that I bought from the market that inspired the series back in Kyoto, as a kind of tribute to Kyoani after their misfortune last year.

Naturally we went to the Fate/Grand Order stall first, where Clara was gracious enough to take a photo of her awkward boyfriend and his favourite servant. Was that a phone in my pocket, or was I just…

Photo of me with Mashu from Fate/Grand order, being awkward as usual!

After lunch everyone dressed in Fate costumes were invited by the organisers to the roof for some photos. This shot of the staff member dressed as Emiya/Archer instructing everyone’s positions with Sydney in the background was my favourite candid shot!

Photo outside on the International Convention Centre roof, with a crowd of Fate/Grand Order cosplayers and a staff member dressed as Emiya giving orders! Sydney is in the background

Perhaps as a testament to how massively popular this enduring franchise is again, it was difficult to get any closer shots before being photobombed by another fan with a smartphone or obsessive camera gear. Here’s the crowd from the side with photographers on either side cropped out. Clara’s the cute character in the red and black dress in the lower right. ♡

A closer view of some of the cosplayers above. Clara is the cute character in the lower right.

The other highlight of the day was finally seeing my colleague’s Somnus Quintet perform a selection of anime and video game music including Studio Ghibli and Final Fantasy. They were shockingly good; they respected the emotion, nostalgia, and setting of each piece, while imbuing them with their own flourishes and personality. During some of the more heartfelt pieces I caught glimpses of more than a few people in the audience—young and old—tearing up a little. They were a tremendous act, and you should most definitely hire them.

The Somnus Quintet performing a tune from Final Fantasy

It was such a fun day. I used to go to conventions like this all the time, and it was the anime club at my university where I met Clara more than seven years ago now. I’ve felt a little disconnected from the community of late; any time there’s been an event or gathering I’ve had work or family responsibilities, or a touch of illness. I’m glad I was able to make the time again today.


Rubenerd Show 406: The chipped hero episode

Show

Rubenerd Show 406

Podcast: Play in new window | Download

31:52 – Wait, didn’t we only just get Rubenerd Show 405?! Discussing the production of chip-based comestibles, submerged data centres, etymology behind radio buttons, being tired of Boomer and Millennial labels, and when meeting your hero perhaps wasn’t such a good idea.

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

Released March 2020 on The Overnightscape Underground, an Internet talk radio channel focusing on a freeform monologue style, with diverse and fascinating hosts; this one notwithstanding.

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


LibreOffice 6.4.2.1 fixes macOS text regression

Software

LibreOffice Calc icon

Last month I sung the praises of LibreOffice but lamented the sorry state of their Mac port. Fonts have never been rendered properly on Retina/HiDPI Macs with it, but the 6.4 branch has such blurry text it was practically unusable.

I tried the 6.4.2.1 pre-release and we have pixellated but clear text again.

According to this bug report, the issue was resolved by building with Xcode 11 on macOS Mojave. Thanks Christian Lohmaier!


Rubenerd Show 405: The Walkenbach Envelope episode

Show

Rubenerd Show 405

Podcast: Play in new window | Download

34:32 – Making a caffeinated beverage LIVE on the show like I used to, remembering Murni’s Warung in Ubud, the joys of envelope budgeting, John Walkenbach from Whole Wheat Radio helping me through his Excel books all these years later, and why it’s still so difficult for people without IT backgrounds to export data from shut down sites.

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

Released March 2020 on The Overnightscape Underground, an Internet talk radio channel focusing on a freeform monologue style, with diverse and fascinating hosts; this one notwithstanding.

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


New neighbours

Thoughts

I’m blanking on whether I talked about this on my blog or podcast recently; apologies if I repeat myself here.

Duck!

Our previous neighbours on this floor were, as politely as I can say, problematic. They had vicious, loud arguments long into the night that at one point resulted in a thud hitting our common wall. They chain-smoked on a non-smoking floor to such an extent that it’d seep under their door, through the hallways, and into our apartment. They constantly hurled abuse and profanities at their children. And, in a famous episode I discussed on Twitter at the time, the husband called me a poofter upon meeting me the first time. I took it as a compliment, though I don’t think that was the intended effect.

They were evicted recently, much to our collective delight on this floor. Strata informed us, in as much as they could say, that they’d received sufficient complaints to warrant their swift removal. Clara and I didn’t care about the reasons or circumstances, we were just happy to see the tail end of their moving boxes, vanishing into the sunset in a cloud of smoke and anger.

I mention this because I just met our new neighbours who moved in and… they’re lovely! I gave them a guest network for Wi-Fi while they get their own Internet connection sorted out, and filled them in on how to get deliveries and use the intercom system. At the end the gentleman fistbumped me—it’s what we’re doing in a Corona world—and we went our separate ways.

You instinctively know there are great people in the world, but sometimes it’s nice to be reminded.


Removing characters with tr

Software

In our continuing series of things you already know unless you don’t, today we’re looking at removing characters with the tr command.

tr is used to translate, or subtitute characters in a string. In its simpliest invocation:

$ printf "%s\n" "hXllo" | tr 'X' 'e'
==> hello

But what if you want to just remove X? The temptation is to supply an empty second argument:

$ printf "%s\n" "hXello" | tr 'X' ''
==> tr: empty string2

So admittedly I’d been using sed for that. This will match on every occurance of a string and replace it, which can also be a single character:

$ sed 's/X//g'

But I’ve since learned there’s a -d option:

$ tr -d 'X'

From the FreeBSD manpage(1):

-d Delete characters in string1 from the input.

Done!


Clearing up FreeBSD GCC news

Software

There’s a lot of misinformation and hand-wringing about FreeBSD 13 officially removing the GNU Compiler Collection from the base system. Some of this has come down to poorly-worded article headlines, others are born of longstanding philosophical license differences.

The two key points you need to know:

  • GCC in FreeBSD base was more than a decade old. It was the last version before the switch to the GPLv3, which the BSD projects consider problematic and incompatible.

  • GCC will remain in the ports system. Developers who need GCC had already switched to this for years.

I know the Internet loves a good flare-up, but much like this blog, there isn’t anything new or remarkable about it. Wait, ouch.


CSS didn’t decouple content from presentation

Internet

If you’re in your late twenties or early thirties, you probably also grew up during the deprecation and removal of table-based layouts on websites. It was good these were discouraged; it was a clever hack at the time to create layouts, but it broke the original semantic meaning of the HTML table element, like trying to tap dance on one while others are trying to eat.

It also made accessibility way more complicated. One of the most eye opening experiences of my career was having Dave listen to my podcast at the time. He was legally blind, and reading my site through the same software he used let me appreciate how tedious and confusing most of the web was for him to use. I like to think I keep my HTML and web designs simple because I prefer it visually, but it’s also because its the only ethical and responsible position to take. But I digress.

But more than just letting tables be tables again, CSS was billed as decoupling content from presentation. That phrase was repeated everywhere, from how-to guides to presentations.

The first problem was, styled div elements were not a replacement for tables. We now have table-esque attributes and the overengineered flex model, because turns out that while layouts weren’t using tables as originally intended, they conveniently map to the visual model of columns and rows for layout. The 2000s were full of articles explaining how to hack—being the operative word—divs into doing what you wanted.

CSS was hamstrung by the available HTML elements at the time, and inconsistent browser support. But the fact it didn’t ship with convenient and logical ways to declare table-like layouts from the start says all you need to know about the language’s design.

I know, hindsight has 20-20 vision! But even at the time I thought this made no sense.

CSS and JavaScript are also as tightly coupled to their HTML pages as plain HTML was to its inline styling before, albeit now in a separate file. Don’t believe me? Check out the HTML source for a page, and tell me what the semantic meaning and requirement is for hundreds of nested divs with attributes like shadow and h3-hack, if it’s just content. There isn’t any, it all comes down to supporting ever-increasing visual bloat.

CSS saved us from a ton of legacy problems, but let’s not pretend it achieved something it didn’t. This is still very much an unsolved problem.


FreeBSD 12.1 Nvidia desktop

Software

Last weekend I finally got around to dual-booting FreeBSD 12.1 on my home tower. It’d been on the 11.x branch for a long time, and I used the opportunity to start fresh. It was originally built as a budget game machine for world-building, so it has a Skylake i5 and a Nvidia GTX 970.

It was quicker to get a FreeBSD Nvidia desktop going than I expected, but there were still a couple of gotchas.

Optional preparation

The first thing I always do is create a zfs dataset for the ports system, so I can use snapshots to try new software, or troubleshoot updates. You’ll probably also want the latest packages over quarterly for desktop use.

# zfs create zroot/usr/local
# mkdir -p /usr/local/var/db/pkg
# ln -s /var/db/pkg /usr/local/var/db/pkg
# mkdir -p /usr/local/etc/pkg/repos
# cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.conf
# sed -i '' 's/quarterly/latest/g' /usr/local/etc/pkg/repos/FreeBSD.conf
# pkg bootstrap -y
# pkg update

Desktop essentials

These are the drivers and basics for a desktop you need:

# pkg install nvidia-drivers nvidia-settings dbus xorg
# sysrc dbus_enable=YES
# sysrc kld_list="nvidia-modeset linux"

Next, create /usr/local/etc/X11/xorg.conf.d/nvidia-driver.conf to tell Xorg to use the nvidia driver rather than a fallback:

Section "Device"
    Identifier "NVIDIA Card"
    VendorName "NVIDIA Corporation"
    Driver "nvidia"
EndSection

Then reboot to make sure everything comes up cleanly.

Aside: Not using kld_load?

Note that I used kld_list in my /etc/rc.conf above. Most guides suggest you do this instead:

# sysrc kld_load="nvidia-modeset"
# echo 'linux_enable="YES"' >> /boot/loader.conf

This no longer automatically loaded it for me in FreeBSD 12.1, as keleathi has also noticed on the FreeBSD forums. If someone knows why that might be the case, please feel free to tweet me. With both of those in place I still needed to manually load nvidia-modeset after each boot:

# kldload nvidia-modeset
==> nvidia0: <Unknown> on vgapci0
==> vgapci0: child nvidia0 requested pci_enable_io
==> vgapci0: child nvidia0 requested pci_enable_io

Install your desktop

I’m using Lumina on my laptop with Allan Jude’s recommendation—post coming!—but I’ve been a fan of Xfce since almost the beginning of my *nix experience, so it gets pride of place on my desktops:

# pkg install xfce xfce4-goodies xfce4-places-plugin
$ echo ". /usr/local/etc/xdg/xfce4/xinitrc" > ~/.xinitrc
$ ln -s ~/.xinitrc ~/.xsession
$ startx