In the revived-tilde mailing list, we had a round of “about me” posts in which I said something about having quit coding (professionally) and starting up an Etsy shop which, I didn’t explain in detail because it woulda sounded like a commercial, but I find I want to justify it as “no, it really is nerdy.” Which it is.

My 3d printer operates on 30-40w rayon, polyester, or cotton filament. It uses proprietary(ish) files but there’s an open-source project that produces them from SVG files so I do most of my CAD work in Inkscape. I got tired of running a USB stick back and forth to it so I hooked up a Pi Zero in USB Gadget mode, though at the moment I haven’t replaced its corrupted SD card so I’m back to the USB stick.

In honor of the revivification of tilde, I ran a custom print:

Mini composition book cover

It’s a mini composition book cover; takes Dollar Tree notebooks (they come in a 3-pack) and closes with a Zebra or G2 size pen. I’ve had a lot of fun making them.

Mini composition book cover inside

That’s not actually why I bought the printer though; I got it to make dragons. I started small, and somehow these little ones have caught on and that’s most of what I sell on Etsy though not usually in holo-foil.

Tiny sea dragon plushie Tiny sea dragon plushie Tiny sea dragon plushie Tiny sea dragon plushie

My biggest challenge, as with most 3d printers, is printing stuff that’s larger than the bed, and that’s what I’ve been doing lately (with a detour to make the tiny critter above).

Large velvet dragon sculpture work in progress

Large velvet dragon sculpture work in progress

Large velvet dragon sculpture work in progress

The print bed is 5x7”, and that dragon is right around 24” long, with an eventual wingspan of a little more than that, so it’s been an interesting challenge. The previous largest print I’ve done is a leafy sea dragon (not to be confused with a leafy seadragon), around 12” tall.

Velvet dragon sculpture on the seashore

It’s a little more expensive than the usual 3d printer (though nobody pays MSRP of course), and a little harder to use, but I think they stand out from the usual ABS crowd.

(If you want the non-1995-artifact versions of the pictures, you can poke around my sewing blog or my account or, if you don’t mind a silo, my Instagram.

In the course of playing with the skunkworks project and parsing existing webpages, I reluctantly broke down and did some more learning on RDF. And stumbled into the standards I had somehow overlooked before and OH LOOK there’s an ontology that does what I need better than (with its very Google-y assumptions that you only need one-way links because of course you’ve already spidered everything and built your searchable database). And it’s over ten years old. Some of the discussion of it has already link-rotted - the author’s blog’s most recent entry invites discussion on a Google Wave. The core of it is alive and well, though.

Jumping on the bandwagon of a standard that old seems maybe counter-intuitive, but I think of it as going back to the point where everyone excitedly said, “Yes, all piling into the Facebook silo is a wonderful idea,” and taking the other option at that fork.

Eh, it’s worth a try anyway.

Into that fun point in the project where I turn it loose on urls in the wild and see if it can process something resembling structured data out of them.

I’ve discovered a corollary to the Failed Standards: apparently some people implement stuff using a Google url that I guess used to redirect to I don’t know if the standards are really the same or if Google forked them BECAUSE THEY DON’T EXIST ANY MORE but at any rate, using the current set seems to be compatible enough for my purposes (so far, displaying rich previews for links in Twitter or Mastodon updates).

Also: I know the name refers to providing data to embed the aforementioned previews, but it amuses me terribly that oEmbed is literally a format that cannot be embedded in the page it provides data for - it’s an API to fetch the info in a separate transaction.

| I ❤️ how structured JSON relies on external definitions and everybody is like “we’ll store it at a big company like Google so it’ll never go away” and WHOOPS is completely gone but somehow everyone is still using this mystery schema.

Seriously, putting "rel": "" in your webfinger json is not doing any good when the server, including any presence on the Wayback Machine, is gone gone gone.

It’s amazing how OStatus has managed to even be implemented anywhere, what with the lack of documentation and all.

crap I’m gonna end up writing documentation here aren’t I

I’m still sticking with Mastodon, as I mentioned last spring. Twitter is down to reply-only. And I’ve deleted (mostly) my Facebook account, though I’m pretty sure FB resurrected it when someone tried to log into it.

My biggest issue with Masto, technologically, is that it’s a pretty heavyweight critter to run for a single-user instance. So I’ve been playing around with the idea of minimum-viable instance, more as a way to wrap my head around the standards it uses than as an attempt at building a usable product. (But if that happens anyway, cool.) I think the most worthwhile thing I could end up with is a coherent set of documentation for the standards, though, because for instance as far as I can tell the Salmon protocol’s specification only lives in a Wayback machine archive of a Google Code site (Salmon spec and magic-signature spec).

I mentioned OStatus/GnuSocial about a year ago, as something I was keeping an eye on. I signed up for awhile back, and gradually started using it more and more.

When I first signed up, it was mostly LGBTQ and furry. That is, people who left Twitter looking for a safe space. And then Twitter made the already infamous @reply change, and the floodgates opened. Just the flagship instance has increased its userbase by 20% in the space of 24 hours or so.

It will be interesting to see if adoption reaches critical mass. Right now all the conversation on masto is about masto, which doesn’t exactly build a community.

If you’re interested, I’m gamehawk.

Update: has a running list of instances, since the main instance is kind of swamped. In hindsight, Eugen should have made a separate homepage/site for the federation than for the flagship instance.

Let’s see if plerd eats the key block here.

Version: GnuPG v1


I’m gamehawk on keybase, though I haven’t figured out how to keep my Twitter account verified there since my account is private these days.

Locked book

Some while back, Facebook borked the Pages feed where you could read all the entries from Pages that a Page liked. I suspect this wasn’t accidental - if you wanted to read all entries from Pages you followed, you could just create your own Page, like everything you wanted to follow, and read the Pages feed. Lifehack! Otherwise you only saw a tiny percentage of any given Page’s posts.

However, I used it in that specific example to follow all the businesses and churches and organizations in the Delano neighborhood, and re-share any important news, add any events to the calendar, etc. My Page follows over 200 other Pages, and ain’t no way I’m manually checking each one. So I pulled up Facebook::Graph and later OpenGraph and scraped the JSON for each Page. Next, I parsed the current entries into a quick-and-dirty preview page. It’s not a replacement for FB proper, but it gives me enough to decide which posts to click through to.

I figured I’d do roughly the same thing here, except for Users instead of Pages. Only… if I’m reading this right, the Graph API doesn’t allow that anymore unless each individual user has allowed the application to serve their feed. Unless I’m missing something, the Graph won’t work for me.

This makes life a little more awkward, but isn’t a dealbreaker. The only reason I’ve tolerated Facebook as long as I have has been FB Purity, a browser plugin that Facebook hates so much you know it’s good. (Seriously: you can’t mention it in a post you want other people to see at all, much less link to it.) FBP doesn’t use the API, it just makes requests same as FB’s own Javascript does. And bless Steve’s good heart, his code is unobfuscated and well commented, so it practically documents how to do everything through Facebook’s ajax. Sweet!

Installing a browser extension is still a little more friction than I wanted, especially given that you can’t get FBP anywhere other than its site because Facebook has made sure it doesn’t get listed by Mozilla or anybody else. But once over that hump, it does have the potential to make all kinds of things Just Work™… invisibly.

Somehow, in the software changes here, I unlinked the older blog entries about the Facebook Killer and never got around to re-linking them. That’s okay, they were pretty rambly and this gives me an excuse to sum up what I have so far. I jokingly have code-named the project Pumpkin Spice Latte, for reasons which now escape me other than you can tell the time of year I named it. Here’s what it needs, in semi-particular order:

Ease of use

You log in, you type in a box. You click “like,” on your friends, relatives, businesses, posts, whatever. At its simplest, that’s it. Anything that replaces Facebook has to be that easy. That’s no big deal - that’s just really basic blogging software.

There’s a “there” there

Once you’ve “liked” something on FB, it (or things like it) shows up in your timeline/wall/whatever it is this week, simple as that. Posting is, for most people, secondary to reading other people’s posts. That’s a slightly bigger deal, but not much - that’s just really easy-to-use feed reading. Subscribe new users to all of their FB friends, and the critical mass is there.


Replacing one Facebook with another is no good. There will certainly have to be hosted PSL instances for ease-of-use, but you have to be able to click on a button and move all your stuff from one host to another, bam.

Unambigious identification

Facebook has a problem with spammers cloning users. I used to get regular friend requests from clones of my mother (until I, um, unfriended her for political reasons), and if you can click one button and move to a new host your friends have to be able to tell the difference between you doing that and you just being cloned. You’ll have to be able to identify yourself with a public/private key setup of some sort (but see also “ease of use”).

Social games

Come on, we’ve had BBS door games since the 80’s. We got this.

Open-sourcey stuff

There is a whole host of under-the-hood features that will be important to us nerds. I think they’re important for implementing the above, but they wouldn’t necessarily appeal to the canonical user.


“Just” feed-reading is complicated by FB eliminating its RSS feeds a long time ago, and putting TOS restrictions on its API to prevent this kind of thing. If PSL and similar things really took off, it would quickly become whac-a-mole as FB tried to block ways of offline reading.

People need some incentive to move. Luckily, Facebook provides some of that all by itself: people get annoyed that they can’t control whether they see everything family members post. People get annoyed by ads. People get annoyed by Facebook re-sorting their timeline.

Spam and phishing and bullying and everything else that comes with a social network needs a lot of careful control. On the down side, there’s no central authority to ban someone, but on the up side, you don’t need to rely on a central authority to ban someone… provided you have tools to give you enough control over your experience.