hrbrmstr's Daily Drop

Share this post

2022-09-21.01

dailyfinds.hrbrmstr.dev

2022-09-21.01

libredirect; sd; Text Rendering Hates You

boB Rudis
Sep 21, 2022
1
Share this post

2022-09-21.01

dailyfinds.hrbrmstr.dev

libredirect

Photo by Jason Dent on Unsplash

If you don't run with a super hardened browser privacy setup (like me), you may not have noticed that it's gotten much harder this past year to not be tracked as you move about the interwebs. Blocking vs tracking is an escalation game that we end users are always going to lose for a period of time. While any site you use a login to access is going to track you at least on that site in some way, especially if the session timeouts are on the long side, any use of centralized third party resources — i.e. images, fonts, javascript components, … — means the surveillance capitalism overlords are going to as well.

If you'd like to retain more privacy when tapping random, drive-by links as you browse your day away, you might be interested in libredirect [GH], a browser extension that automagically subs-out links to common services with ones that are functionally equivalent (i.e. they hit the same content source), but help reduce privacy loss in the process.

Aside: I may seem to drop way too many browser extension links for a dude who regularly cautions against using browser extensions, but you install this one manually, so you can always look for malfeasance before using it.

The project updates a master redirect list in the extension every few days, and has switcheroo support for:

  • Youtube → Invidious, Piped, Piped-Material, CloudTube, FreeTube, Yattee

  • Youtube Music → Beatbump, Hyperpipe

  • Twitter → Nitter

  • Instagram → Bibliogram

  • TikTok → ProxiTok

  • Reddit → Libreddit, Teddit

  • Imgur → Rimgo

  • Wikipedia → Wikiless

  • Medium → Scribe

  • Quora → Quetre

  • IMDb → Libremdb

  • PeerTube → SimpleerTube

  • LBRY/Odysee → Librarian, LBRY Desktop

  • Search → SearXNG, SearX, Whoogle, LibreX

  • Translate → SimplyTranslate, LingvaTranslate

  • Maps → OpenStreetMap, FacilMap

  • Send Files → Send

The less-privacy killing destinations are running instances of each service in the above list, which means you can stand up your own ones and use them if you are super concerned about privacy.

While you're not going to log in to any of these alternative destinations, your resource consumption will not be passed on to the core site. So, you can, say, keep up with what one of your favorite reporters is posting on Twitter, but you aren't going to have a customized timeline (at least not yet). Many of those alternative sites have other functionality as well. For instance, I can get an RSS feed of Ben's tweets, a feature Twitter-proper killed off ages ago, via Nitter instances.

You also have the option to use alternatives that are hosted over Tor, I2P (Invisible Internet Project), and Loki (we'll cover I2P and Loki in future editions).

This extension is certainly not for everyone, but if you would like to claw back a bit of your privacy, I highly suggest giving it a go.

sd

black and white UNKs UNK restaurant signage
Photo by Aubrey Odom-Mabey on Unsplash

In this modern age of flaunting our riches of massive RAM, CPU, and SSD equipped systems by using giant Docker containers as command line executables, it may seem adorable to rely on plain, ol' shell scripts to get things done (though, I guess you can wrap a command to fire up a dockerized tool in a script, too), but many of us still turn to these trusty text-based resources to get stuff done.

I've never liked putting them in a bin directory, and never really thought about a better way to or actually organize them until I met sd [GH], which describes itself as a "cozy nest for your scripts."

The concept is brilliantly simple. You create a top-level script directory (say, ~/sd) and the directories in the tree below it become a series of command groups, with the final executables becoming subcommands. This is the example tree from the post:

$ tree ~/sd
/Users/ian/sd
├── blog
│   ├── edit
│   ├── preview
│   └── publish
├── book
│   ├── open
│   ├── words
│   └── typeset
├── nix
│   ├── diff
│   ├── info
│   ├── install
│   ├── shell
│   └── sync
└── video
    └── fix

To, say, publish a blog post, you could do:

$ sd blog publish --deploy

If you forget how to build things with nix (I really need to cover nix in one of these drops), sd's structure will help you with autocompletion (provided you've added such a line in your scripts):

$ sd nix <TAB>
diff     -- prints what will happen if you run sync
info     -- <package> prints package description
install  -- <package> use --latest to install from nixpkgs-unstable
shell    -- add gcroots for shell.nix
sync     -- make user environment match ~/dotfiles/user.nix

You can also easily turn handy one-liners into scripts vs aliases.

The blog post goes into more detail on how sd came to be. If you're as tired of wearing out your ctrl and r keys as I am, sd might be worth taking a look at.

Share

Text Rendering Hates You

Photo by Brett Jordan on Unsplash

We take so much for granted when we use technology. I come from the days of 300 baud modems, tape drives for storage, and incredibly limited RAM systems, so marvel at this thing called an iPhone almost every time that I use it.

It isn't just hardware that we take for granted. When you fire up your browser to visit your favorite site (this one, ofc!), you just start reading and likely have no idea, or ever pause to reflect on, just what it takes to turn stored Unicode bytes in a database or file into the pixels that are rendered into text of any given/chosen font.

That is, you had no idea until today, provided you take some time to read Aria Beingessner's Text Rendering Hates You. I'm fairly well-versed in modern, digital typography and what it takes to render text, but I learned even more through Aria's post.

In case you need a bit more convincing to tap the above link, here's what Aria covers:

  • Terminology

  • Style, Layout, and Shape All Depend On Each Other?

  • Text Isn’t Individual Characters

    • Text Overlaps

    • Style Can Change Mid-Ligature

  • Emoji Broke Color and Style

  • Anti-Aliasing Is Hell

    • Subpixel Offsets Break Glyph Caches

    • Subpixel-AA Isn’t Composable

  • Esoterica

    • Fonts Can Contain SVG

    • Characters Can Be Too Damn Big

    • Selection Isn’t A Box, And Text Goes In All The Directions

    • How Do You Write That You Can’t Write?

    • Style Is Part of The Font (Except When It’s Not)

    • There Is No Ideal Text Rendering

  • Additional Links

The post is frightfully well-written and is an absolute must-read for anyone even remotely considering getting into the text-rendering game. After reading it, you'll (hopefully) appreciate the humans behind the device and app you're using right now.

Aria is also a mad cool Rust developer, and regularly blogs about all things Rust as well.

Leave a comment

FIN

In the 🇺🇸, yesterday was National Voter Registration Day. If you are eligible to vote but aren't registered, GO THERE NOW, then vote in November (and all future elections). If you have friends or family who fit that same description, please encourage them to do so as well. ☮

Share this post

2022-09-21.01

dailyfinds.hrbrmstr.dev
Previous
Next
Comments
TopNewCommunity

No posts

Ready for more?

© 2023 boB Rudis
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing