cat favicon waeaves circuit music

Hi! I'm Emma Weaver. I make stuff! I talk about stuff I have made here :) Welcome!

links Me friends Friends jam Jams pages Site Index

projects Projects posts Blog game Games cooking Cooking

- 1 2 3 4

calendar 2026/03/05

cooking Lassi

I struggle a lot with yogurt’s texture. But, blended with salt and water, it is suddenly very easy to eat lots of.

pdf Download /assets/recipes/lassi.pdf

calendar 2026/03/02

projects Fishcam

I recently set up a livestream of my girlfriend’s fish tank on a little rpi 2W with a cheap usb webcam! I kept it super simple.

fishcam stream shrimp corydora crossing

First, set up a rpi headless like usual. Then, install motion via sudo apt-get install motion. I like to add the option --no-install-recommends too, just to keep the clutter to a minimum. Next you’ll want to update the motion service’s configuration that got generated at /etc/motion/motion.conf to match your use case. I changed the following variables:

variable value purpose/reason
framerate 60 so that the stream shows motion fluidly
text_left ’’ to remove the text at the bottom
text_right ’’ ””
movie_output off to prevent motion from saving recorded video files
webcontrol_port ??? I recommend setting a random port for this, mostly out of superstition
stream_port ??? same here, although this one will be public anyway*
webcontrol_localhost on hide admin panel
stream_localhost off allow remote access to the stream! which is the whole point of all of this
stream_maxrate 100 allow the full-fps video to be streamed. this one is not included in the default config file! But without it you’ll be stuck with a ~1fps stream.

Once the config is set up, you then want to enable the service using sudo systemctl enable motion and start it using sudo systemctl start motion. Once you’ve done this, the service should be running. Congrats! (maybe)

You can verify that it’s working by running curl localhost:<stream port> on the rpi, which should output html if everything’s working. You can also use a device on the same network to access http://<the rpi's local IP>:<stream port>, which will display the stream. Note that this may not work on a wifi network that restricts communication between connected devices.

From there, it’s just a matter of dealing with the networking side of things to expose the stream to the larger internet. But that’s outside of the scope of this post!

calendar 2026/02/27

games Dogy!!!!!!!

Doggy! Go play with her at Friends!! (javascript required)

Doggy!!!!!

calendar 2026/02/22

projects Jellyfin Part 2

← Part 1

I made a TON of progress since writing Jellyfin Part 1. For one, I went ahead and paid for the static IP. With it, I’m able to define port forwarding rules using my router! And it just works, no funny business.

Next, I set up my server. I chose to go with Debian, and for this system I tried to keep the system as simple as possible. I didn’t install anything more than the bare operating system, and even disabled recommended installs in apt to keep it minimal. I learned a lot getting the system working under these constraints!

Docker compose up, docker compose down

For this system, I decided to run everything using Docker Compose. That way I can conveniently document and encapsulate my services, check their configuration into git, and spin things up and down easily without polluting the larger system. Networking is also extra convenient with them!

I ended up setting up Jellyfin, of course, but also a Wireguard server so I can VPN back into my local network to reconfigure my router remotely. I also used Caddy to reverse proxy all the services to the domain that all of this is exposed on, which took some experimentation for the different methods of defining base paths in each of the different services… But it wasn’t bad at all.

Finally, I set up Deluge, connected to a VPN via Gluetun for torrenting. Set up that way, the Deluge container is only ever able to access the internet through Gluetun, so kill-switch behavior is built in. If gluetun or the VPN ever stop working, Deluge will simply not have a way to access the internet. It works well, although I might switch to a different torrent client eventually (just because deluge has been a little buggy for me, although it might be operator error haha).

Before this, I had never torrented before!! I had internalized myths about how dangerous and scary it is, but especially when you’re only dealing in media, it’s really pretty safe. and also easy! I totally could have been doing it the whole time, without this whole project… But I’m glad I learned this way. I’m very anxious of a person so it feels really good to have it all set up in such a safe way. Torrenting is a wonderful, beautiful thing! Peer-to-peer filesharing is so cool!!

calendar 2026/02/11

projects Jellyfin Part 1

I was recently made aware of this cool thing called Jellyfin! The idea is, it’s a streaming platform designed around each user/family/etc hosting their own media server, which is super awesome!

My shows! My movies!

It’s even available to be installed on linux machines directly from the package manager. Great!

Networking though?

I wanted to expose my instance to the larger internet, so I could let friends use it too!

It started out well and I was able to set up Dynamic DNS on one of my domains easily (because no static IPs for me). This made it possible to ping the machine using its public domain!

But… no other services I tried to talk to would reach the machine. I dug around a while trying to figure out what was happening, slowly exhausting the possible causes:

But I finally found my answer while searching online. Apparently my ISP uses CGNAT, and offers no way to set port forwarding rules at that level. So what I was trying to do was impossible, at least “the simple way”.

Part 2 →

calendar 2026/02/02

projects What Pokemon Are You

What Pokemon Are You?

WPAU input form WPAU result reveal

Website that tells you What Pokemon You Are based on your height and weight! I actually made this a long time ago, but only published it now.

calendar 2026/01/24

cooking Steamed White Rice

For Nanner 🌻

pdf Download /assets/recipes/white-rice.pdf

calendar 2026/01/17

games Cookie Fragile

itch Play on itch.io!

Oblique view Top view

Based on Vlambeer’s Super Crate Box, but with more emphasis on the various ways you might hurt yourself with all the bombs and fire going on 😅

calendar 2026/01/07

cooking Cajun Red Beans

Roux are a magical way to achieve really savory, hearty results ^_^

pdf Download /assets/recipes/red-beans.pdf

calendar 2025/12/01

games Deux and Nada

Deux and Nada Cutscene Deux and Nada Gameplay

itch Play on itch.io!

Assymetric 2p blockpusher with a story! It was fun to mess with including some cutscenes and writing.

- 1 2 3 4

rss RSS feed

Powered by jekyll Jekyll