Boost 1.77 is working well with it, and I’ve fully migrated to boost::json, which is working out great. The straw that broke the camel’s back was map.contains(), lolz. I was ready! I feel like I’ve had a hot bath. Nice.

TL;DR add this config to dnsmasq.conf to expand your LAN single-label hosts into FQDNs that systemd won’t hate:

domain=mydomain.lan
local=/mydomain.lan/
expand-hosts

For decades, DNS resolution was fine, and then systemd arrived and it was not. For the past couple years, for me and many others, systemd-resolved has been quite a headache, failing basic DNS resolution on any fresh Ubuntu (and other) installs. A real joy when you just want to get things going ASAP. After years of getting around it with shitty hacks, I finally nailed down what was going on.

Poettering and his crew decided that “single-label” host names on your LAN should never be allowed to resolve, even though it always used to in what he calls “classic DNS”. The systemd-resolved DNS handler in a vanilla install of Ubuntu 20.04 will drop your name resolution requests simply because the name does not have a dot in it. End of story. How nice. This awful default behavior follows some 2013 guidelines that were never previously enforced, at least not on me.

I use the simplest possible solutions that work, and for me that is dnsmasq. You can use one config file to configure static IPs for the MACs of all your LAN boxes. I just needed to reconfigure it to expand single-label names into longer “fake” FQDNs, with some dnsmasq hackery, and DNS on new boxes now works out of the gate. See the top of post (or this SO answer) for the configuration details.

There are supposed to be other solutions, like flipping on the LLMNR flag of systemd-resolved. That didn’t work for me, and I don’t want to have to futz with every single new LAN box and VM anyway. Hopefully this nightmare is behind me now. I hope for you, as well.

Bash is the worst pile of anti-patterns and hacked up bullshit, but what would you expect from something that’s been our emergency-room band-aid for as long as we’ve been alive? This is just a reminder, for your career’s sake, to NOT make it one of your “specialty languages”. Learn what you have to. And double down on a modern, sane scripting language. I’ve tooled up node to do all things command-line, I recommend you do the same – but even writing little Java or C++ command-line apps is better than letting bash poison your brain! Just say no. And some day, our great-great-grandchildren will have a replacement. No, not another sh variant. A true sane modern programming language. okbyeeee!

Hate of the day: I love how [rm -f ] “fails” (non-zero error code) but [mkdir -p …] “succeeds”, and there is no [mv -f …]. The Unix philosophy: do one thing, and do it well, but always slightly differently than anyone else would have done it. Sure it’s bizarre bazaar chaos, but it’s “beautiful”. Ummmm…. no, fuck you, I don’t want to memorize your chaos.

UPDATE: Dude. In my defense I was in pain and jacked on meds when I wrote this, haha. Step away from the oxy, take less Adderall… calm ye self down. “Whatever Works”.

UPDATE 2: Yeah, the horror is real. Yet another damning example of why, for your career’s sake, you should focus on a real scripting language and not (ba)sh’s arbitrary stupidity.

From zero to new-domain-with-gmail-backed-email:

  • Register your brilliant name (like mine, shitcutter.com) at domains.google.com (ok i lied, that sets you back $12/yr). Hey look, diarrhea.gripe is available!
  • Create a new google account for it, something like myshitcutter@gmail.com
  • Domains > Email > Email forwarding > add email alias:
    bossman -> myshitcutter@gmail.com
  • Google account avatar > manage your account > security > Signing into google:
    Turn on 2fa if it is not already on (they will keep shoving this on us, capitulate.)
    App Passwords > app: Mail, device: Custom, name: shitcutter.com
    (NOTE I had to futz with form to get name field to show up.)
    Copy the 16-digit code that you get.
  • Gmail settings > accounts > Send mail as: > Add
    The second page of the forms will ask for SMTP server, use stmp.google.com, default port, username myshitcutter, paste key from prev step.
  • Validate email as requested.
  • From gmail, you can now send and receive using <bossman@shitcutter.com>. You can keep going if desired if you want to add one or a bazillion other users at that domain.

Congratulations! Now you’ve guaranteed that the biggest big brother the human race will ever know, outside of the US government, can read your every thought, in realtime. And don’t worry, they’ll pass it all on, proactively, to the government, for free.