Polite

"Are You A Furry?"

by ado, February 2024

It might be time to move beyond "Are you a furry?". While furry is an identity, it is also an aesthetic and sub-culture - there's room for both.

As an example, consider heavy metal. You might ask someone, "Are you a metalhead?". Separately, sometimes you might refer to something with "That's pretty metal" while throwing up the horns 🀘🏽. It can be fun - even when ironic - or celebratory.

When someone says "That's pretty metal", it's not just a result of folks in the 80s adopting metalhead as an identity, but also a reflection of the things metalheads did, what metalheads looked like, and how their sound was presented to the world.

A torch-bearing otter! by FortunataFox

When thinking about "what is a furry?", there are answers in the form of what we call ourselves and which actions we take.

Folks can find empowerment in the words which with they are communicated and referred. Most of the time that's a title, or pronoun, or their identity. So in one simple way, a furry can simply be anyone who wishes to call themselves one. This, perhaps unsurprisingly, is also how being a metalhead works (gatekeeping not withstanding).

Furry isn't a musical genre, so it isn't easy to pin down a single sound or aesthetic that can cover the diverse gamut of presentations found. Yet there are folks who don't call themselves furry are surely enjoying furry art and media, participating in furry-oriented events, and having discussions with folks who do consider themselves to be furries.

So what do we call these emergent aesthetics, behaviors, things that make up a subculture? Especially in and beyond 2024, furry seems likely to sustain and grow.

Maybe we are missing the "That's pretty furry" and throw up the 🐾🐈.

Artists To Commission

by ado, January 2024

In 2023, I had the fortune of working with a number of skilled and talented artists. I'd love to share a handful of my favorite illustrators.

You'll find creative individuals at varying price points, varying styles, varying areas of interest.

πŸ”ž Indicates you will find NSFW content. In general, FurAffinity is a very NSFW website.

dxdwgaf

FurAffinity

FloMutt

FurAffinity πŸ”ž

Mastodon πŸ”ž

Ado and Scotch by FloMutt
Ado and Scotch, "Date Nite", by FloMutt

OnyxSerpent

Mastodon

FurAffinity

Yemmie

Twitch

Website

Mastodon πŸ”ž

FurAffinity πŸ”ž

Sesto, by Yemmie
Sesto, "Snack Time", by Yemmie

SpycyShark

Website

Mastodon

FurAffinity

Mithmeoi / Greykitty

Ko-Fi

FurAffinity

Scotch, by Mithmeoi
Scotch, "Hoodie Weather", by Mithmeoi

LumiaP2L

Mastodon

YouTube

KaputOtter

Mastodon πŸ”ž

FurAffinity πŸ”ž

BSky πŸ”ž

On Getting High the Refined Way in 2024

by ado, January 2024

Cannabis isn't too different from the likes of like wine, coffee, or tea. There are many strains, tastes, and palates to explore. To get started, a glass pipe, a lighter, and some flower are all you really need.

However, there are also many types of refined cannabis products: distillate, hash, hash rosin, live resin, edibles, vaporizers - the list is long and growing. The language and terminology is confusing and inconsistent. Hopefully by reading this you'll be clear-headed about getting heady.

A lion and mountain lion back to back in space! By dxdwgaf

Not every high is the same. Some are giggly, some are serene. Consider the difference in experiencing several glasses of wine versus a proportionally similar amount of vodka. Whether you are eating a gummy, smoking, or vaping -- terpenes, incomplete combustion, and carbonization all affect what goes into your body and produces a different high.

Terpenes are naturally occuring chemical compounds found in cannabis and elsewhere which have a dramatic impact on the type of high you'll experience. For example, linalool, found in both cannabis and lavendar, produces an anxiolytic effect, as does lemonene. Caryophyllene, on the other hand, may alleviate pain.

Distillate doesn't contain terpenes. Distillate is the vodka of cannabis. If you don't use cannabis or THC often, then distillate will produce a euphoric experience. Most distillate products intended for vaporizing have terpenes added after the fact.

What Differentiates Refined Cannabis Products

Processing Method

Unsurprisingly, the result depends on your technique. One technique is to roll plant matter in between your palms (to produce one type of hash). Another is pulverising plant matter with ice and forcing it through cheesecloth (to produce another type of hash!).

Age of Plant Matter Relative to Harvest

Each processing method can be applied to plant matter that is fresh, frozen, or dry aged. Live Hash Rosin is plant matter that is freshly harvested. Hash Rosin may be frozen. Cured Resin is made from aged plant matter.

Ado, by DWC Marshal Arts

Major Techniques for Refining Cannabis

Distillation

A solvent (such as ethanol or butane) along with friction is applied to plant matter. The solvent is generally applied in a pressure controlled environment, known as a "closed loop" environment. This allows a vacuum to be created to remove the solvent. This generally produces a THC/CBD only product, without terpenes.

CO2 Extraction

Supercritical extraction, where Carbon Dioxide is the solvent. Also often applied in closed loop environments. CO2 extraction can produce a "full spectrum" extraction, which means it includes all cannabinoids (THC/CBD) and terpenes.

Solventless

Sifting, friction, pressure, ice, or heat are applied in various ways. Solventless extraction produces a full spectrum extraction and does not require the removal of a solvent afterwards. Solventless extraction is also used in making Temple Balls - hand rolled hash that cures over time (kinda like a hard cheese).

So What Should You Go Get?

Well, please don't get a disposable vape pen. There are no recycling programs and you are just throwing a battery into the trash.

Live Resin Vape Pens or, if you can find it, Live Hash Rosin Vape Pens sure are nice. They have a wide extraction, often giving you a hint of terpy flower.

Getting good at cleaning your dab rig, a well rounded habit that prevents buildup, is the best thing you can do to explore concentrates.

Edibles are super easy, and if you have low tolerance they'll surely get you stoned. You can even find hash rosin edibles these days!

That Seems Complicated

Grab a glass bowl and some papers. Get a grinder and a lighter. Get some flower and burn one! Please be responsible. Cannabis is a great way to make friends. Some of us just like talking about the manufacturing process :).

A Tiny Static Site Generator

Sesame, by 0horned_artist0

by ado, November 2023

Let's make a static website generator with three pieces: a generator, a template, and our input. View / clone the repository here.

An overview of the project structure and each of the three pieces:

Generator - ~/generator.py - the Python code that uses our template and input to produce output.

Template - ~/my-site/template.html, ~/my-site/index.css - the HTML and CSS leveraged by our input/articles. There are two tokens in template.html, one where we'll inject our articles and another where we'll inject a sidebar of links to the articles.

Input - ~/my-site/input/an-article.html, ~/my-site/input/another-article.html, ~/my-site/input/third-article.html - articles written in HTML. Each article requires a root <article> element which itself must have an <h2> element with an id attribute.

A closer look at generator.py:

from dataclasses import dataclass
from pathlib import Path
import re


@dataclass
class Article:
    path: str

    def read_contents(self) -> str:
        return Path(self.path).read_text()

So far, we can represent an article and retrieve it as a string.

articles = [
    Article(
        "./my-site/input/an-article.html",
    ),
    Article(
      "./my-site/input/another-article.html",
    ),
    Article(
      "./my-site/input/third-article.html",
    ),
]

Great, now we have a representation of our content. We'll need to update this when we write new articles.

# generate slugs and read articles
slugs = []
article_contents = []
for article in articles:
    contents = article.read_contents()
    id_match = re.search(r'<h2 id="(.*?)"', contents)
    title_match = re.search(r'<h2 id=".*?>(.*?)</h2>', contents)
    if id_match is None:
        print("couldn't match id")
    elif title_match is None:
        print("Couldn't match title")
    else:
        id = id_match.group(1)
        title = title_match.group(1)
        article_contents.append(contents)
        slug = f"""<p><a href="#{id}">{title}</a></p>"""
        slugs.append(slug)

Here, our goal is transform our input into two types of data: the article HTML as well as link/navigation HTML ("slugs").

Pay super close attention to id_match and title_match. We are imposing requirements on our input! Namely, that the input must have an article and an h2, like so:

<article>
  <h2 id="tech-002">A Tiny Static Site Generator</h2>
</article>

Jumping back to generator.py, recall that we need the article HTML and slug HTML:

# plug into template, write to index.html
template = Path("~/input/template.html").read_text()
template = template.replace(
    "<div><!--- Articles ---></div>", "\n".join(article_contents)
)
template = template.replace("<div><!--- Slugs ---></div>", "\n".join(slugs))
with open("./my-site/index.html", "w", encoding="utf-8") as index_html:
    index_html.write(template)
  

Here we are retrieving our template, which contains tokens that our generator has replaced before writing our output.

template.html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>my title :)</title>
    <link rel="stylesheet" href="index.css" />
  </head>

  <body>
    <header>my header :)</header>
    <div class="container">
      <div class="column">
        <div><!--- Articles ---></div>
      </div>
      <div class="column">
        <div><!--- Slugs ---></div>
      </div>
    </div>
  </body>
</html>
    

Awesome! With all of these pieces, you can run python generate.py to produce your static website. Questions? Reach out on Mastodon

Scotch: Forget-Me-Not

by ado, November 2023

A mountain lion tending to his Forget-Me-Nots, by dxdwgaf

Scotch, as illustrated by dxdwgaf

How I Have Recently Commissioned (Furry) Art

A lion/housecat hybrid! by 0horned_artist0

by ado, September 2023

Finding Artists

There are plenty of artists on FurAffinity, Mastodon, X/Twitter, DeviantArt, ArtStation. Here are some terms and techniques to get you started:

  • Search #commissionsopen on Mastodon or X.
  • Similarly, #ych ("Your Character Here")
  • On FurAffinity, search "open" and use date in ascending order with a tight time bound, like 3 or 7 days
  • Narrow your search to artist that match your sona's species

It's worth watching, subscribing, or whatever to artists you like. It seems some artists like to open commissions early in the month, so be on the lookout at those times.

Talking To Artists

Read their TOS and Payment Terms before talking to them.

Usually you'll start a conversation with a hello -- like most conversations. Explain that you are reaching out to ask / inquire about a commission. Include a pose, expression, references for your character and references for things that you feel strongly about.

Developing Art

Collaborating with an artist is a creative endeavour in itself and can be incredibly rewarding. Communication is key.

The sketch is the most important and challenging step. Don't look at the sketch on just your phone. Examine it a few times, across the span of hours or a couple days. Ask yourself, is the morphology correct?

Be clear with yourself first, what you really want. If you don't know, then understand that the artist is going to take action to fill in gaps. Edits are part of the process, but understand that not every edit is free.

I've had great luck sending rough paint sketches (stick figures and such) to describe scenes. Brushing up on model poses can help communicate your idea as well.

Lastly, be polite -- all the time. Even when not talking to artists.

How To Enjoy Mastodon in 3 Steps

by ado, September 2023

Step 1: Browse Servers

Your home server matters a lot in the beginning -- an empty server will mean an empty feed -- but if you are willing to browse around the Fedi more intrepidly on your own, then it matters less. For the lazy, go with a large (10k+) instance.

You can browse servers on:

Step 2: Get An App

Unlike Facebook or Instagram, with Mastodon you have choices of apps. To make it easy, I'll just suggest my favorites:

If you're on iOS, get Ivory. If you are on Android, consider Tusky or Moshidon.

Step 3: Be Your Own Algorithm

Mastodon, ActivityPub, the Fedi, whatever you want to call it, is pretty different from Reddit/Meta/X for a few reasons, one of the largest being how content makes its way towards you. Hashtags trend, but a lot of your feed will come from following hashtags and other folks.

You are encouraged to use hashtags, browse servers, and connect with individuals as opposed to drinking from the firehose.

Pulling a fast one, the last step has all sorts of steps ;). There are many ways to interact with others in a fun manner on ActivityPub! Start with:

  • Fill Out Your Bio
  • Search for Hashtags
  • Participate in Hashtag Games
  • Browse Server Directories
  • Follow People
  • Post, Post, Post!

Block and Mute

Social media can be a reactive place. If something gets under your skin -- don't hesitate to block folks.

In general, communicating online is difficult. It's easy to misinterpret and be misinterpreted. There's so much content out there that you will surely come across something you dislike. Leveraging content and user blocking instead of defaulting to conflict will help keep the Fedi a positive experience for all.

the polite cafe is a blog by ado, a software lion on the internet