Random shit. Newest first. Rough and unpolished forever.


  1. Two Birds Playing
  2. Doing Nothing
  3. To Reach the Light
  4. My First Game Jam
  5. PirateBox, Part I
  6. Yanking YouTube's Cables out of my Brain
  7. "Game Idea"
  8. Goodbye, Momo
  9. Progress
  10. Hate
  11. Bad Night
  12. Resources
  13. Thoughts on Newbie Sites
  14. Dirt Simple TTRPG
  15. Double RPS
  16. The Elevator
  17. The Future Tomes
  18. Ideas
  19. Desolate Settings
  20. Is ethics absurd?
  21. The Magician
  22. Terminal
  23. Black Planet

Two Birds Playing


# Two Birds Playing
On the corner of a rooftop,
I saw them.
One sitting still,
the other circling.
One, two, three,
and it lands on the first!
Again and again,
they played.
Sadly, I had to leave.

Doing Nothing


Kind of crazy how wide the skill levels are in CS people. On one hand, there's people who barely know how to use a computer. On the other hand, some people are way ahead of the curve. I was looking through a webring the other day (found in the wild!!), and though the people there were in their early 20s, they'd already made so much cool shit.

Meanwhile, I'm just sitting here, not doing jack shit. Feel like my mind has turned to mush over the years. Maybe this is a turning point. We'll see.

To Reach the Light


So I did a game jam (, and actually finished something for once?? Incredible, I know. You can find it here and here.

my game

My First Game Jam


I linked it on my homepage, but scarbyte made for hosting game jams. This month's theme is "grid", which is kind of ehh, but whatever. I'll figure something out.

it also has an amazing button

Starting projects is easy, but it's hard to sustain enough self-motivation to see them through. Enter game jams. It's a low-stakes way to force yourself to finish something small. And keeping things small means you can play around with weird and novel features — this is what Experimental Jams is all about!

(Seriously, if you want to make games but don't know where to start, download Godot right now and do a game jam.)

an earlier idea I scrapped

I'm starting with sokoban as a base. There are two characters, Blue and Yellow, who need to find each other. You can switch to either one's perspective at will. You win by moving both characters into the same spot.

the tutorial level, with Blue
they found their way!

Here are some mechanics I'm toying around with adding:

There's no story, but there are vague themes of coming out of one's shell and escaping dark places together. I think for the last level, Yellow will be gone and Blue will be on her own.

I'll post more about it as we get closer to the deadline and I add more stuff. I'm pretty busy with school these days :/

PirateBox, Part I


I want to build a PirateBox. I've got an old Raspberry Pi 2B lying around.

First, I installed DietPi, a lightweight OS for Raspberry Pis. It's basically some scripts running on top of a cleaned-up version of the stock Raspberry Pi OS. I wanted something fast and headless. Shit was super easy to install.

The Raspberry Pi 2B doesn't have wifi. I bought a wireless adapter online. I made sure to get one with AP mode, which means it's able to broadcast its own internet connection (like a hotspot). A lot of adapters, especially Realtek-based ones, don't have this. Also, it needed to have updated drivers that worked on linux.

The drivers were available on the manufacturer's website. Curl wasn't working, so I downloaded it to my laptop and used SCP to transfer it. By default, DietPi uses a lightweight ssh server called DropBear instead of OpenSSH. Unfortunately, it doesn't have SCP. However, you can install openssh-client, which comes with SCP, and doesn't conflict with dropbear.

The driver is actually a .zip file with source code inside that needs to be compiled. To get it to compile, I needed to install the following:

Compiling the driver takes a long-ass time.

So after sudo make and sudo make install, I had to run sudo modprobe -r 88x2bu and sudo modprobe 88x2bu, which removes any kernel modules called "88x2bu" and adds the one that was just compiled.


Unfortunately, it won't start. The adapter seems to dump some of its firmware into the console when plugged in. Also, it seems like I can't set it to AP mode using iwconfig wlan0 mode master. I'll try an alternative driver.

The install script is super easy, works without a hitch. I install hostapd and dnsmasq. I do the compatibility configuration for hostapd shown on the gentoo wiki. I tried it with the 5G version, but hostapd wouldn't start.

I also ran rfkill unblock wlan, which fixed the adapter being listed as "DOWN" when running ip address. Finally, I ran dietpi-config and set up the adapter.

this took hours to get working

Part II coming soon. I'll be setting up dnsmasq to redirect everything to a local web server. And the web server will be hosting something... not really sure yet. (I literally don't have a use case for this project).

Yanking YouTube's Cables out of my Brain


Yeah. I don't want to be a brain in a jar, addicted to worthless information and targeted content. Time to wake up. Time to pull the plug.

  1. Install Unhook
  2. Hide Home Feed
  3. Hide Video Sidebar
  4. Hide End Screen Feed
  5. Hide End Screen Cards
  6. Experience withdrawal and realize how dire your situation was
  7. Start looking for other hidden addictions
  8. The machine fears the cable-cutter

"Game Idea"


You know it'd be kinda cool to make a lifelong game. Like you start out with a platformer and just keep adding stuff to it every once in a while. And never stop. Years go by, and this thing gets filled with all sorts of random stuff. It ages with you, changes as you change, becomes a part of you.

You'd have to plan to avoid spaghetti code. Maybe design your game as self-contained chapters, one for each significant period of your life. That way they don't step on each others' toes. A game as weird as this doesn't need to fit the common conception of what a game should be. If it helps, think of it as interactive media.

pic unrelated

You know what would make it even cooler? Add a physical component to it. It could be a mysterious book that has cryptic info for solving puzzles. Booklets are good because other people can print them out. But something one-of-a-kind could work too! Just be careful not to lose it. You could make a whole treasure hunt out of it, although it might not stand the test of time. How about using natural land features around you? The game could require you to go to a cerain location, at which you've hidden a stash of materials or something. Maybe you bury a mini time capsule each year, and your kids can play the game and dig them up?

Don't plan ahead too much, you don't want to restrict yourself later on. Actually, forget that. Plan ahead. And then deviate. A year later and your vision for the game will change. That's ok, you can have both. Just don't go and retroactively mess with the stuff from your past, that'd kind of suck.

Goodbye, Momo


We've had 3 cats for a while now. First was Daisy, which we got around my 18th birthday. Next was Chester, which we got some time later. Last was Momo, who was found underneath our van. Momo is young and very hyperactive. He doesn't seem to understand social cues - he'll try to chase the other cats even after they hiss at him. Unlike the other cats, he never seems to get bored of the toys we have. He'll happily chase the same fluffball-on-a-string multiple times a day, every day. He's absolutely adorable.

Recently, Daisy got an ear infection and Chester got kidney stones. Vet bill was like $700, and now Chester has to eat special cat food. All this made my parents super stressed. They've decided to give Momo away. They found a good home for him, so he should be ok. Tbh, he probably has no idea what's going on, and doesn't care.

They told me this morning. I didn't get to say goodbye because I'm still on campus for finals week. I understand why they made the decision, but man, it sucks. That lil guy was so cute and fun. I hope I get to see him again.



Started drawing again. Not yet regularly, but at least once every few days. Mostly ink sketches. Decided to take an art class this semester, which got me back into things.

Our class recently did a thing where people would volunteer to pose, and everyone else would draw them with a 5 minute time limit. This was actually super fun. Made me realize how much better I've gotten at visually judging proportions and angles. The time limit forced me to focus on the most significant shapes and lines and not get bogged down in details.

I'll probably post some stuff once the semester ends (~3 weeks).

Lately, I've been inspired by these people. Got me back into the mindset of wanting to make things. Instead of just consuming all day. Here's a short list of stuff I'm doing or want to do.



Lotta hate in the world. Some people go around, brandishing icons or quotes of positivity, yet are just as hateful as the next guy. If you take a step back to watch, it's shocking how quickly someone can go from positive beliefs to unprovoked cruelty.

Why? It seems like we're prone to exceptions. We say we believe a thing, but we really don't. This seems to be a society-wide thing, and also appears in politics a lot. We believe in freedom and democracy, except when we don't want to.

Hate can be addicting too. It's like a drug, only it's infectious, and it's even harder to tell if you're an addict. Hate can move people to support a candidate, or donate to a campaign, or buy a product. Hate spurs activity, and in a world of big marketing data, that's profit for media and tech corporations. And guess what? Now we're fighting a culture war instead of actually improving things.

What can we do? I don't know. Question everything you do or say. Catch yourself when you want to be cruel. I think the most important thing is to want to try in the first place. Most people want to be nice, but aren't trying to be nice.

unless you're this guy lol

Bad Night


Warning: Gore + animal death.

2 nights ago, ~1am, I went out to the backyard to bring my cat Daisy in (she sleeps in the garage). There was a dead rabbit on the porch and she was playing with its corpse. Daisy didn't want to come in so I left for a bit.

Came back a few minutes later to find the corpse gone. Thought she dragged it off so I walked out to find her. I find her sitting, staring at the rabbit as it ran circles around her. Because apparently it was still alive. Thought she made a new friend or some shit so I actually took a video at this moment, before realizing that the rabbit was fucked up. It's head was tilted ~90 degrees and it couldn't run straight at all. Every once in a while it'd flop down on the ground and lay for a bit. Got closer and saw that its whole spine was twisted.

Managed to catch Daisy and bring her inside. Got a knife and went back to the poor rabbit to put it out of its misery.

I hesitated for a good while. I did not want to deal with that shit. Poor thing was laying on the ground, quivering, parts of its hide torn off, spine twisted. It wasn't clean, took 4-5 chops. Skull was caved in and its legs were still kicking for a few seconds after.

Fuck me dude.


Transferred 2022-07-29

Copied these over from my previous site. Hopefully someone finds them useful.

Web Dev
Free Software
  • MuPDF - lightweight minimal pdf reader. No toolbars - maximum screen space. Press f1 to list shortcuts.
  • SumatraPDF - another pdf reader. Ugly but has some theme options in the advanced settings.
  • Lightbulb - lightweight f.lux alternative.
  • mpv - lightweight and fantastic media player. My windows setup guide.
  • - make flowcharts quickly.
  • - rastor image editor, good for quick edits & some pixel art. My plugins list.
  • HandBrake - convert/compress videos.
  • yt-dlp - updated youtube-dl fork. Download youtube videos from the commandline.
  • MediaHuman YouTube to MP3 Convertor - Download music from youtube. Does a decent job of automatically fetching track metadata.
  • Natron - foss video compositing software.
  • Olive - video editor. Way more stable and performant than Kdenlive. Less features though.
  • StarTrinityCST - continuous internet speed test. Good for analyzing live adjustments.
  • TrenchBroom - Quake engine level editor. You can make maps in this and import them to Godot.
  • VeraCrypt - foss disk encryption. Supports virtual disk files.
  • Typora - markdown editor. Now paid, but the beta was free if you can get a copy.
  • Writemonkey - minimal text/markdown editor.
  • ImageGlass - lightweight minimal image viewer.
  • Just Color Picker - color picker tool. Get rgb/hex/hsv values from any pixel on your screen.
  • Magic Set Editor (MSE) - tcg/ccg card editor. Supports custome templates.
  • RClone - lets you mount your google drive locally.
  • Portable Symbolic Link Creator - GUI for making symbolic links on windows.
  • apng2gif - GUI and commandline tool for converting apng to gif. Use with an apng export plugin for
  • apng2gif - Commandline tool for image conversion and manipulation. Can do batch image processing. Convoluted syntax but the internet is your friend.
  • RIOT - Optimize the shit out of your images.
  • XMPlay - Music player. Starts instantly. Tons of skins.
Obscure Free Software
  • AudioPaint - generate weird sounds from pictures.
  • Coagula - generate weird sounds from pictures.
  • MadTracker 2 - music tracker. Supports VST stuff.
  • OpenMPT - music tracker.
  • Billy - lightweight and minimal music player. Original site is still up, but downloads don't work. You'll need to find a copy elsewhere.
  • Bookbinder 3.0 - bookbinding program for pdf files. Jank, but it's saved my ass before.
  • clumsy - intentionally cause network instability. Fantastic for multiplayer game dev.
  • UnFREEz - lightweight minimal image sequence to gif convertor. Not many options.
Firefox Extensions
  • uBlock Origin - widely trusted adblocker. Works wonders.
  • Adblock Plus - another adblocker. Supposedly not as good, but still fantastic.
  • Download All Images - lets you browse and save all images loaded in the current tab. Useful if the site blocks right clicks or something. I imagine it'll come in handy for right-clicking NFTs lol.
  • Sidebery - Vertical tabs!
  • My userchrome.css
Paint.NET Plugins
VST Plugins
  • Alter/Ego - Free vocaloid thing, janky but works. Free voicebanks available online.
  • Synth1 - Thousands of banks available online, most are shit but some are gold.

Thoughts on Newbie Sites


Some people complain about neocities sites that have almost no content. I kind of get it? Seeing "Hi I'm [name] and I like programming", "There's not much here yet", "This site is a work in progress", etc. does get kinda boring after a while. But at the end of the day, I think it's a good thing that they're exploring new territory and learning to program.

If you want to see "good" sites, then search them out. If you only want to see those sites, then that's just not how it works :/ I guess you could make something like districts.neocities if you really want, or hope someone already made one that's acceptable in your eyes.

Newbies might be cringe but it's also pretty cringe to treat them like shit. Why be childish and petty on neocities? You could use that energy to do something better for your life...

Dirt Simple TTRPG


You have 3 stats: STR, DEX, and MND. To start, roll 1d8, assign to a stat, repeat. Whenever anything risky happens, decide if it is easy, medium, or hard difficulty. Choose the most relevant stat for the situation. Round its rank to the nearest die size, towards d4. Roll ≥ the target number to succeed.

Difficulty Target #
Easy ≥4
Medium ≥6
Hard ≥8

For example: If you have STR 7 and want to strangle a guard, roll 1d6. If you want to creep silently across the rooftops and you have DEX 2, roll 1d4.

Aspects are descriptive words/phrases that help represent a character and their abilities. Start with 3 aspects. They can be as specific or generic as you want, just be reasonable and fair to other players. Whenever an aspect could be applied to a situation, get a stacking +1 bonus to your roll.

HP is based on your species. Whenever you level up, reroll your HP. Use it even if it's lower.

Species Starting HP Other Bonuses
Pure Human <level>d6 +1 MND
Elf <level>d4 +1 DEX
Dwarf <level>d8 +1 STR

Stat blocks look like this: Bald Humphrey [7/4/4, Bald, Angry, Scribe, Sword, 5hp]. When attacking, he usually rolls 1d6 +1 (Angry) +1 (Sword). The format is <name> [<STR>/<DEX>/<MND>, <aspects>, <gear>, <HP>]

When attacking, only roll for damage, not to-hit. Whenever you take damage, you may subtract your armor's AP from it and permanently reduce your armor's AP by 1. When you burn your last AP, that armor is destroyed. Armor can be repaired during downtime. Shields can also be sacrificed to ignore 1 attack.

Armor AP
Leather 3
Mail 5
Plate 7
Shield 3

Characters can't cast magic, they have to find magic items to do it for them. Monsters can though ;)

Double RPS

A 2-handed rock-paper-scissors game I made up with my siblings long ago. Don't know if something like this already exists.

Basically, each hand plays its own game simultaneously. Your left vs. their right, vice versa. If a hand is beat, it is removed from the game. If one player has 2 hands left and the other only has 1, then that 1 hand faces the 2 hands simultaneously. This means that it would need to either beat both hands, or tie both hands, or beat one and tie the other.

DRPS “strategies”: If you have 2 hands but they only have 1, then you shouldn't use different symbols for each.

General RPS “strategies”: Younger kids like to start with scissors for some reason, so start with rock. People don't like to make the same move twice, and they don't expect you to either.

The Elevator

I jolted awake. It was deep in the night. It was quiet - what had stirred me? I had to piss. I climbed out of bed and made my way to the bathroom on our floor. I tried to stay tired, but the harsh lights forced me wide awake.

Finished, I stepped into the hall, but stopped. I heard a faint bell ringing, a repetetive ding! over and over again. Curious, and unnerved at the otherwise dead silence of my floor, I crept down the hall towards the source.

As I crept closer it grew louder and louder, more and more frantic, yet all the while bound to its repetitive rhythm. I turned the corner - it stopped - before me was the elevator, it's doors open. The silence of the floor was even more unnerving now. At once a cold terror began to grip my heart.

The Future Tomes


The Future Tomes are 7 great texts, each towering in size, gifted to humanity in its earliest years. Each text is encrypted, except for the first. The key is the answer to a difficult question given in the previous book. Brute force is not an option.

Each book contains a wealth of information that progresses humanity and adds to our technological sophistication.

Each book contains a hidden question. Finding and answering it is an effort that encompasses the entire species and spans hundreds, if not thousands, of years. Once each answer is found, the next book is unlocked and a new age begins.

Discovering the answer to each new question is proof of humanity's maturity. In this way, our progress is steered and checked by the great questions.


Started 2022-04-25

Inspired by Jackomix's Game Ideas Page

[VISUAL] An art book where each page has doorways to other pages. Works like a visual choose-your-own-adventure book. You can also go to adjacent pages sometimes. The doorways can be in any style, but should have the page number marked on it or nearby.

[PLANETCRAWL] Intersystem planetary warfare. On paper. The GM tracks the stats of everyone. Each other player represents a species, with a homeworld planet.

[WASTES] A singleplayer gridcrawl with an ASCII terminal aesthetic. Possibly has robust procedural generation to make each playthrough different. Should be able to run on cheap office materials.

[CHSS] A chesslike videogame without a grid. Some piece movements have some wiggle-room, such as the knight or pawn. Touch to capture. Played in real-time.

[VIRTUE] TTRPG about gods and mythology. Each character stat is a position on a scale of a virtue to a vice. Fight god(s). Team up to pull a heist on the hell-train. Stab your allies in the back. Could have religion/cult simulator mechanics. Maybe your power is based on how many people believe in your existence?

[HATESIM] Is it possible to make a simulation model of human "political" interactions? Stuff like fake news, internal biases, cognitive dissonance, mob mentality, the Overton Window, etc. Everything would be an abstraction, but in a way that allows similar behavior to emerge.

[GRIMOIRE] A versus game that uses a physical zine format. Each player has 1 or more spellbooks/grimoires in the form of an 8 page zine. Each page can have a number of runes arranged in certain structures. The player is free to decorate their books. Gameplay involves using synergies between runes to cast spells. Not sure how it'll actually work. I envision it as an art thing as well as a game.

[STREETVIEW] A horror game from the perspective of google maps street view. Many different areas. No humans. Should be offputting and uneasy. Not really liminal or anything. Lots of ambience. Mostly places are pristine and sunny, and would be relaxing if something wasn't off. Maybe you could even find your in-game house, and if you look out the window you'd see a shadowy figure where the streetview is.

[LOGS] A "game" where you slowly uncover a sinister plot by reading various internal documents. Lots of meeting minutes, presentations, scanned papers, faxes, email/chat logs, etc. Less of a game and more just interactive fiction, although you can't actually influence the story.

[SCROLLMAZE] Webpage with a path that starts at the top and meanders around. In the center of the screen is your character. You use the scrollbars to scroll the background, "moving" the character around. If you move off the path you die.

[GARGJAM] 2-part jam. First, everyone collectively designs an ARG. Then, it becomes a game jam where everyone is assigned a piece of the ARG and must incorporate it or hide it (within reason) into their game.

[TELEMETRY] A multiplayer space dogfighting sim with an open-source api/protocol/whatever. Ships with a basic client, but you are encouraged to program your own. The server is authoritative and could simulate advanced effects such as gravity, accurate ballistics, space weather interference, ship subsystems breaking down, etc. Clients can move, fire, scan. The api/protocol is very simple. The game is less about the game itself and more about programming better clients than your enemies. You are allowed to completely automate your ship. You aren't allowed to make a botnet though.

Desolate Settings


How would you run a TTRPG in a desolate and empty wasteland?

Say you were running a citycrawl, the polar opposite of a wasteland. The setting is filled with content. Everywhere you look, there's something.

Wastelands are empty. Travelling through emptiness would be boring, so let's cut that out. Now we're left with only the interesting bits, and it becomes a sort of point-crawl.

Another way to run a wasteland would be to make travel more interesting. Hexcrawls already do this, but they need different types of terrain/biomes in order to describe position. To the north are fog-shrouded mountains, the east is rolling plains, the coastline to the south, and black forest on the west. Without terrain, there isn't much to differentiate different intermediate locations unless you put landmarks and features everywhere.

I think the main thing is that the setting shouldn't actually be empty. It can look and sound empty, but it shouldn't feel empty. Rather, it should feel empty through descriptions and flavor, but be just as mechanically full as any other hexcrawl.

Is ethics absurd?


We could use an existing system of rules (either given by God, or otherwise arbitrarily determined) to determine what's right or wrong. In this case, we'd better be ready to accept the rulings, even if they conflict with our intuitions. No system exists that fully satisfies all of our moral intuitions.

We could instead choose a system of rules based on our own intuitions. We would basically be ruling based on our own intuitions, with extra steps. However, not everyone has the same intuitions. This ends up being disguised moral relativism.

Ok, so what if we really don't like moral relativism? If we go the first route, we need to decide on a system to use. This system will not always agree with our moral intuitions, but we need to follow it anyways. Which system we choose is arbitrary, but what practical aspects might we consider?

We either arbitrarily choose a system to follow, or choose one based on our moral intuitions. But, because our moral intuitions can be different, we won't agree on which system to follow. A system that agrees with all of our moral intuitions would basically be a form of moral relativism, although maybe much more convoluted and impractical. On the other hand, if we arbitrarily choose a system to follow, we will have a bad time because it will not always agree with our moral intuitions. This makes me think that ethics is absurd and that moral relativism is really how we act in practice. A more practical route would be to analyze our moral relativism in practice rather than discussing rule systems.

The Magician

The Magician raised his flute to his lips and played a haunting tune, it's shrill notes piercing the night air. At once, the City of Glass shattered.

The spirits of the four winds, ever hungry, descended upon the sandy corpse of the city and swept its remains across the land.

The Magician turned and pocketed his flute.

Long, long ago, before men walked the world, before life had touched the land, The Magician had helped the gods plan reality. Unbeknownst to them, however, he had inscribed a secret symbol unto the very foundations of the world. The symbol, present now in every being and place in the world, was the source of his power.

This secret symbol is The Magician's great secret. With knowledge of it, one can travel to any place and time, seemingly at will.

Even today, the gods do not know his great secret, though they perpetually hunt him for it.

The Magician has lived many lifetimes. When he grows old and frail, he transports himself to a secret location to meet with his past self. Here, he gifts himself all of his memories and knowledge, before dying peacefully. His past self then becomes his new self.

Unfortunately, through many generations of stealing his past self from the past, time has become unstable.

Enraged at his trick, the gods branded The Magician a divine outlaw - any man who knowingly helped or harbored him would suffer the wrath of the gods.


With a soft click, Ezra popped open the terminal's security pad. Just behind, there was a square debug port. Under normal circumstances, it would have been disabled, but the last maintenance crew had left it open. All to plan.

Ezra snaked a cable over to the port, and powered on his deck. A premade script took care of the terminal's security system, and the system was his.

Ezra popped the system's memory cassette and made a copy of it with his dual cassette player, before reinserting it. The copy, he would keep for later. Carefully, he disconnected the cable, reattached the keypad, and rebooted the system. ALL WELL flashed across the screen.

Black Planet

Beneath the black sky, beyond the ancient oak, below the arched ruin, it stood. The oasis itself, once lush, now dust, was encircled by miles of flat wasteland. Damp, black, sand stretched to the horizon, where set two dying suns.

In the center of the oasis was a single ivory pillar. Suspended above, a single perfect drop of water, suspended in time.

Briefly, there was a shudder. A shock. Light. And then there was light, emanating with incomprehensible force and power, like water under pressure finally escaping its valve. Tears of light, tears of white, and a towering beacon driving deep into the sky. An electrified rush fills the desert wastes. The mountainous rocks in the distance are bleached white, their faces seared of a millenia of darkness.

A hulking metal thing, a wretched thing, rusted by milleneae of isolation, shuffles across the wastes. It crawls, inch by inch, towards the distant oasis, towards the beacon of light.

A hulking metal thing, a wretched thing, rusted by milleneae of isolation, shuffles beneath the black sky, beyond the ancient oak, below the arched ruin. It stands, hunched, in front of the ivory pillar.

With a quiet whirr, the thing reaches an appendage deep inside itself, presenting a black engraved obsidian box. It opens the box atop the pillar, releasing a single perfect drop of water, suspended in time.

In the distant horizon, the dying sun sets.

In the final day of the final sun, every oasis crumbles. The arch reduces to dust, the ancient oak withers. They have failed to ignite the light, and once again the world grows black.