Various site updates

Published on , 2341 words, 9 minutes to read

An image of landscape, mountains, breath of the wild, 1girl, fox ears, dark blue hair, blue eyes, surfboard, surfing, beach, simple sketch, clean lines, rakugaki
landscape, mountains, breath of the wild, 1girl, fox ears, dark blue hair, blue eyes, surfboard, surfing, beach, simple sketch, clean lines, rakugaki - Waifu Diffusion v1.3 (float16)

Hey all, just some smaller updates on my site and the infrastructure around this blog. I'm also throwing in some of my smaller project updates that I haven't gotten to on the blog.

Sonic Frontiers stream

I'm going to be streaming the game Sonic Frontiers on Twitch on November 8th, 2022 at 10:00 EDT through at least 12:00 EDT. I may go longer depending on how the game is, but I took the day off for this so I may as well take advantage of it.

If you want to add this to your calendar, you can either import the ICS file for the event or add it to Google Calendar. This is my first time pre-announcing a stream like this and I hope that this will be worth it.

Xe :verified:
2022-10-30T21:04:49Z

Do you like "video games"? I'm going to be playing Sonic Frontiers on Twitch on its release date! Check it out at twitch.tv/princessxen on Tuesday, November 8th at 10:00 Eastern through at least 12:00 Eastern.

Link

Mastodon quoting

One of the big things I've done is add support for embedding mastodon posts in a more native way. Mastodon normally has an "embed this post" link, which makes things look like this:

However, I think I can do it better. I wrote some code to serialize the mastodon post information to JSON on the disk and then I can render out toots like this:

Xe :verified:
2022-10-27T20:48:36Z

This new watch feels great. I love how the pride edition band looks.

Link

It also works with embedded videos:

Xe :verified:
2022-10-30T17:38:23Z

Testing a video upload for writing something to do with Mastodon

Link

I think this looks much cleaner. It also puts a lot less load on the Mastodon server that I use, which will certainly make Cult Pony happier.

This works by putting the mastodon data into .json files that I ship around with both my site's git repo and the runtime closure of my website binary. When the HTML parser sees one of these tags:

<XeblogToot url="https://pony.social/@cadey/109258440953407431"></XeblogToot>

It looks up that toot's information on the disk and then renders that into memory. This allows me to ensure all this information is not fetched from the target Mastodon server on every page load, which should help with reducing load on the fediverse servers that I link to.

Ads enabled globally

Previously I only enabled ads for users visiting my blog from Hacker News and Reddit. These ads are done with Ethical Ads, which is done by the people behind the popular documentation service Read the Docs.

I want to stress the following things:

I am working on an integration with Patreon that allows patrons to bypass ads from being shown in the blog. I have also been considering having other features like commenting on posts, but for right now I am focusing on other things.

Robocadey 2: Stable Diffusion edition

Recently I created a project named robocadey. This took all of my tweets, fed them into GPT-2 and then generated new tweets. This worked for a while, but then things fell apart due to python catastrophes and I never was able to get things working again.

Don't worry, because I have created a brand new python catastrophe using Stable Diffusion. More specifically using a variant of the Stable Diffusion model named Waifu Diffusion. Waifu Diffusion is the model that you see in most of my blog's hero images. Scrying an image out of Waifu Diffusion is similar to searching danbooru (warning, NSFW images) for images.

To use Robocadey 2, all you need to do is mention @robocadey@pony.social with a set of tags. For example, this input:

Xe :verified:
2022-10-30T20:17:04Z

@robocadey 1girl, cute, solo, portrait, brown hair, brown eyes, long hair, smile, blush, laptop, coffee shop, katana

Link

Will get you this output:

Robocadey
2022-10-30T20:17:49Z

@cadey here is your image:

prompt: 1girl, cute, solo, portrait, brown hair, brown eyes, long hair, smile, blush, laptop, coffee shop, katana
seed: 1099521048
Generated with Waifu Diffusion v1.3 (float16)

Link

Please do feel free to experiment with this. Keep in mind that it can only process one image at a time (the poor 2060 in ontos only has enough vram to do one image at a time), so depending on load you may have to wait your turn.

I'm not sure if this is a bug or a feature, but if you reply to the bot, it'll also take that as input to generate new images:

Robocadey
2022-10-30T20:44:44Z

@dee @cadey here is your image:

prompt: that's really well done. Your prompt is a good 'un
seed: 2139947102
Generated with Waifu Diffusion v1.3 (float16)

Link

You can find the source code here. This is not in a state that is ready for other people to use though. I don't expect it to ever get in such a state. This is an experiment that will some day stop working and that's okay.

Be sure to save images that you really like, the bot account is configured to autodelete generated images after two weeks. This means that the images in my post are going to eventually go dead too, but that's okay.

Mastodon as my main microblogging outlet

I am really not getting good vibes with the results of Elon Musk purchasing Twitter. I'm starting to post more on Mastodon at @cadey@pony.social instead. I currently have a reposting service set up to ferry posts between Mastodon and Twitter, but there is a significant delay when things get reposted. If you want things more expediently, I suggest you follow me on Mastodon.

Cadey is coffee
<Cadey>

If you see the #noxp hashtag in either my Twitter or Mastodon posts, the reason it is there is to stop the reposting service from reposting things.

I made a LinkedIn

I have given in and created a LinkedIn account. I really don't like how LinkedIn traps a lot of information about people, and how that information is used by attackers in order to social engineer people better. But, most of the industry expects you to have one. If I have to have one, then at least I want to do it "right". I'll be reposting my blog content there.

API endpoints

I have created a few small API endpoints for the blog. They allow you to get information about the most recent post on the blog as well as more detailed information on individual posts. I am considering these endpoints stable and I am working hard to make sure that the API compatibility will not break in future releases without proper warning.

These API calls don't have rate limits currently, but please don't be the person that makes me have to add them.

/api/new_post

This returns information about the most recent post to my blog. This will return a JSON object that contains at least the following fields:

Here is an example (piped through jq):

{
  "title": "How to make NixOS compile nginx with OpenSSL 1.x",
  "summary": "3 minute read",
  "link": "https://xeiaso.net/blog/nixos-nginx-openssl-1.x"
}

/api/[blog|talks]/{slug}

This returns information on a blog post by URL slug. In the blogpost URL https://xeiaso.net/blog/nixos-nginx-openssl-1.x, the slug is the nixos-nginx-openssl-1.x part. This returns the JSON Feed Item form of the blogpost or talk summary in question.

This also includes a custom _xesite_frontmatter extension that will contain at least this information:

I reserve the right to add fields to this in the future, but when I do I will update the documentation accordingly.

XeDN video metrics plans

I'm considering adding some Xeact-powered JavaScript to allow me to track events on the video I'm hosting on my own infrastructure. My intent is to create some grafana graphs to track the following events:

I also plan to surface some of these metrics on the blog itself, namely having the video being watched to completion function as a proxy for the view count metric on YouTube.

Updates on longer projects

This is going to have some smaller updates that aren't worth their own sections.


And that's what's going on in my world! Hope this was an interesting look into all of the things that I'm tinkering with and working on for my personal projects. Hopefully things will settle down once I get someone to help me do DevRel at Tailscale. I've hit a point where I'm not able to do everything on my own anymore and if you want to help make things happen, please apply to that role.

Be well!


Facts and circumstances may have changed since publication. Please contact me before jumping to conclusions if something seems wrong or unclear.

Tags: mastodon, stream, sonicfrontiers, robocadey, noxp