Character Sheet
I gamify everything, so naturally this exists
My brain runs on XP bars and completion percentages, so at some point building an actual RPG stat sheet for myself was inevitable. This is that. Extremely detailed, mostly accurate, not remotely serious. The numbers are made up. The self-assessment behind them isn't, and that's possibly the most revealing thing on this whole site. Nearly every line below points at something real elsewhere here: a project, a server, a page I wrote. The framing is a bit; the facts underneath it aren't. Is a stat block a strange way to introduce yourself? Probably. It's still the most accurate one I've got. Roll for initiative.
🎲 Ability scores
STR
8
Can carry two Monster cases up three flights, then needs a lie-down
DEX
14
Reflexes forged by 1,418 hours of TF2 and 324 of Counter-Strike
CON
10
Runs on caffeine, spite, and forgetting to eat until 4pm
INT
18
Self-taught dev and homelab architect. Reads Jung for fun, on purpose
WIS
12
Knows the right call, makes it eventually, does usually get there
CHA
16
Queer Ambassador. Professional talker-to-strangers-about-feelings
⚔️ Resistances & vulnerabilities
The part of a character sheet that's usually the most honest, so I kept it that way.
💔
Vulnerable to
Unnecessary conflict
Bad UX design
Sudden schedule changes
Generic solutions to specific problems
Decaf served without warning
🛡️
Resistant to
Bad takes
Bullshit
Awkward silences
Motivational clichés
Premium tiers sold to a fifteen-person server
Awkward silences get filled whether you wanted that or not.
✨
Immune to
Shame about any of the above
None of it. Not even a little.
☁️
Weak to (mechanically)
A cloud service sunsetting something I depend on
Most of why so much of the stack runs on hardware I can physically go and unplug.
🌀 Common status effects
🎯
Hyperfocused
Advantage on the task.
Disadvantage on food, water, and replying to anyone.
🔊
Overstimulated
Social battery drains at triple rate. Cured only by leaving.
💧
Under-Watered
The single most frequent condition on this sheet, and the specific reason two separate apps now nag me about it.
❤️ Vital meters
MP (Monster & Coffee Reserves)88 / 100
Focus / Hyperfocus Charge100 / 100 (until a shinier hobby appears)
Social Battery20 / 100 (critical, deploy dog immediately)
Sleep Debt (the one meter you want low)78 / 100
Off-Site Backup Coverage0 / 100 (yes, really, and I wrote that down myself)
That last one isn't a joke stat. Backups here are local-only, on a 2TB drive that lives in the same house as everything it's backing up, and I'd rather say so on the Infrastructure page than quietly leave it out.
📊 Skills
Levels capped at 99, RuneScape rules. A couple are maxed. A couple are, let's say, actively being worked on. A couple I have simply never trained and I'm not going to pretend otherwise. (Receipts: Hytale, Cannabis, Hazel Care, Infrastructure, Music, the Lab.)
Combat skills (things I actually build with)
Self-Hosting / Server Admin92
Caddy & Reverse Proxying84
Cloudflare Tunnel Sorcery79
FastAPI Backend Plumbing76
Hand-Written HTML & CSS (no framework, no build step)83
Local LLM Wrangling (Ollama)74
Persona & Prompt Writing80
Known LanguagesHTML, CSS, Python, Sarcasm (fluent)
Off-Site Backups0 (untrained, and I know)
Gathering skills (things I hoard, catalog and research)
Harm-Reduction Research85
Music Library Archaeology (5,262 songs deep)91
RPG Loot Goblin Instincts94
Reading Jung At An Unreasonable Hour68
Support skills (people, words, and one dog)
Dog Parenting (Harley)100 (MAXED, Prestige)
Community Moderation (party size: very small)87
Technical Writing / Documenting Myself82
Answering Awkward Questions Without Lecturing88
Touching Grass (Harley-assisted)74
Untrained skills (posted honestly, in public)
Energy Drink Tolerance99 (MAXED)
Hyperfocus99 (MAXED, unfortunately)
Picking Up Random Hobbies at 1am88
Naming Two Separate Projects "Hazel"100 (cursed mastery)
Social Battery Management22
Task Initiation15 (actively grinding)
Estimating How Long Anything Will Take12
Sleep Schedule Maintenance11
Saying No To A Shiny New Project Idea9
Steam Backlog Management4
🎒 Inventory
Sorted by rarity, as is proper. The hardware entries are the real specs off the Infrastructure page, because inventing gear for a character sheet about my own gear felt like cheating.
Legendary · UntradeableBlåhajBind on pickup. Can't be unequipped, morally or otherwise.
Legendary · CompanionHarleyNot technically inventory, but she'd be extremely offended to be left off this list. Doubles as the only reliable trigger for the Touch Grass daily.
Legendary · CuratedThe Library: 5,262 Songs1,119 artists, deduplicated by a script I wrote, every number counted and none of them guessed. Metalcore next to drum & bass next to pop, with no unifying theory beyond whether a track holds my attention.
Epic · Main HandThe Main RigRyzen 7 5700X3D, RX 9070 XT, 64GB RAM. Does triple duty: gaming, streaming, and hosting whatever local model I'm running that week.
Epic · Always-OnThe Home ServerCore i7, 32GB RAM, 500GB NVMe. The quiet workhorse that runs Hazel and the always-on VMs so I can reboot my gaming PC without taking the community down with it.
Epic · RentedThe VPSA deliberately smaller Debian 13 box for the public half of what I actually use: this site, its APIs, Caddy, and the far end of Hilray's reverse tunnel. Paying for idle headroom was not a personality trait I needed to keep.
Epic · CraftedHazel Command CentreA desktop launcher whose entire palette is hardcoded from this site's own CSS tokens, so it re-tints itself whenever the site does. One source of truth for color, front-end or desktop.
Epic · Scrolldeploy.ps1Refuses to publish if it finds a dead link, a leftover to-do marker, an unfilled placeholder or a single stray line of filler text. Backs up the live site first, uploads, then checks the site still responds before calling it done.
EpicMechanical Keyboard of HyperfocusGrants advantage on 3am coding sessions. Disadvantage on sleep schedule.
Rare · CosmeticGovee Light StripsThe origin of the purple. The room looked like this first and the CSS followed. That's the honest and slightly embarrassing answer to where this site's color scheme came from.
Rare · PortableSteam DeckSteamOS, and the third piece of "my own gear" alongside the PC and the home server. Mostly used for the games I swore I'd get to.
RareHoodie of Comfort +3Resistance to bad days. Stacks with Blåhaj.
Rare · ConsumableBottomless Monster StashUltra White, then Monster Gold, then OG Sugar Free, strictly in that order of preference. Refills mysteriously. Never questioned.
Rare · NetworkingEero Mesh & A Gig Both WaysWhole-home mesh with no dead zones and a symmetric gigabit line behind it, so nothing between my gear and the outside world is the bottleneck. When something's slow, it's my code.
RareRing of Chaotic Good IntentionsWill break a dumb rule if the rule is hurting someone. No hesitation.
Rare · Cursed2TB Backup DriveHolds the local backups that matter, alongside the new VPS restore archive. Cursed because it lives in the same house as everything it's protecting, and there is still no real off-site copy.
Common · Oddly SpecificHandheld Digital MicroscopeBought to look at trichomes up close. Kept because looking at things very close up turns out to be its own reward. The photos are on the Drugs page with no notes attached.
Common · EquippedMan and His SymbolsJung, alongside Modern Man in Search of a Soul. Read for fun, on purpose, and currently overlapping uncomfortably well with how I think about my own head.
CommonNine Half-Finished Side ProjectsSold separately. Never actually sold. Never finished either.
CommonOne (1) Actually-Finished WebsiteThis one. Allegedly. Still adding pages to it as we speak.
Common · Quest ItemTwo SSH Keys With Enforced JobsOne deploys the website and administers the VPS. Hilray's key is forced into its tunnel-only job and gets denied if it asks for a shell. Identical-looking little files, genuinely different powers.
✨ Traits & feats
- Hyperfocus (Passive): When engaged with a special interest, gain advantage on all related checks. Disadvantage on remembering to eat, drink water, or respond to texts.
- Systems Thinker: Automatically identifies inefficiencies in literally everything, whether asked to or not. Can't be turned off.
- Trust Fortress: Hard to earn, nearly impossible to lose once earned. Betrayal deals massive, permanent damage. Rare, but catastrophic when it happens.
- Overthinker (Always Active): Reruns every social interaction at 3am on a loop. No saving throw.
- Main Character Energy (Unlocked): Came out, stayed out, stopped apologizing for it.
- Modular by Instinct: Every feature goes in its own cog, always. A broken experiment takes down one command instead of the whole bot. That's the only reason a project this size has survived being maintained by exactly one person doing it for fun.
- One Source of Truth (Compulsion): Physically can't maintain two versions of the same fact. Hazel's deployment button runs the same checked release path as the manual shortcut; the desktop launcher pulls its colors from this site's CSS. If a number is wrong it's wrong everywhere at once, which sounds worse and is enormously better.
- Predictable Ritual (Autism): Once 8:30 is bedtime, I want the same message, in the same tone, at the same time, every single night. A human who reworded it each evening would be worse for me than a dumber bot that never varies. The sameness is the whole feature.
- Self-Taught (Origin Feat): The school system didn't have an answer for an undersupported autistic kid, so I went and got the answers myself. Useful instinct and exhausting instinct, in roughly equal measure. It's behind every project on this site.
- Honest Gap Disclosure: Will publicly document the weakest point in her own setup instead of quietly leaving it out. See: the cloud-dependent cameras, the missing off-site backup, the music timeline chart that got cut because the data couldn't support it.
- No Deadline, No Shortcuts: None of this is anybody's job, and that's exactly why it gets built properly, broken at 2am, and fixed again without having to justify the detour to anyone.
- Automation Spiral (Passive): Will spend an entire weekend deleting a thirty-second manual task from her life, then feel better about it for months. This isn't a joke about the weekend; it's a real return on investment, just an unusual one.
📜 Quest log
Main storyline, side quests, and a few dailies I fail regularly. The completed ones are real; so, unfortunately, are the ones still sitting open.
ActiveFinish Hazel v2. Main storyline quest. Keeps spawning side quests. No end in sight, which is somehow fine.
ActiveKeep Hazel's deployment path boring. One button, one dedicated key, the normal checks, a backup before upload, and no little ritual I have to remember differently next month.
ActiveGet Hazel Care onto my phone properly. The desktop app is done and the alerts already reach my phone through ntfy, but a notification isn't the app. An Android port is the honest next step, and it's the difference between a tool that catches me at my desk and one that catches me anywhere.
ActiveGet an off-site backup. Any off-site backup. Currently at zero. Known, written down, publicly admitted, and still zero. If the house burned down the backups would burn with it, and I'd rather log that here than pretend it's handled.
ActiveReplace the cloud cameras with something local. The one honest exception on a page otherwise dedicated to self-hosting everything. Flagged on the Infrastructure page instead of quietly omitted.
ActiveFinish the piece about being the only one. The only mod, the only dev, and the only person people DM at 2am, for a community I built myself. Drafted, not published, which tells you something.
ActiveMake Hilray boring enough to forget. Jellyfin at home, HTTPS outside, one outbound tunnel in between. The quest is complete when restarting it feels less dramatic than choosing what to watch.
OngoingTouch grass, with Harley. Daily repeatable. Rewards: fresh air, a tired dog, temporary peace.
OngoingKeep the Now page current. Weekly repeatable, frequently failed. It's the one page on the site I actually try to keep honest, which is why it's the one that stings when it goes stale.
OngoingAnswer drug questions honestly, without lecturing. A blank space where information should be is what got me hurt. So the Drugs page exists, sourced from DanceSafe and TripSit and not from vibes, and the inbox stays open.
OngoingKeep the community small on purpose. Not a growth target. A small, quiet, private server where nobody has to perform, and where the guidelines read like how to treat your friends instead of a legal document.
CompletedBuild an entire website from scratch. Static HTML, CSS and JS, no framework and no build step, served straight through Caddy. Achievement unlocked: Overkill. Kept going anyway.
CompletedCome out and stay out. Achievement unlocked: Main Character Energy. See above.
CompletedShip a bot to a real community and keep it running. Hazel has been live since late 2024 and grew from a single reminder command into moderation, routines, community management and live game-server status. Maintained by one person, for fun, without a single outage anyone else had to fix.
CompletedMake the whitelist run itself. Players validate their own UUID and get on the Hytale server without waiting for me to wake up. The write endpoint is token-authenticated server-side and the public page can only ever read.
CompletedOne source of truth, two front doors. The website and Discord read the same live status API, and every launcher button runs the identical code path as the matching Discord command. Two interfaces, one implementation, no drift.
CompletedMake the public box boring to attack. Key-only SSH, no root login, a default-deny host firewall, current Debian security updates, a tunnel-only Hilray key, read-only web containers, and no Docker control socket hiding under the site API.
CompletedRebuild the reminder scheduler as a reconciler. Nothing is pre-scheduled any more. One job runs every minute and works out what's due from the database, so reminders survive sleep, restarts, clock jumps and me editing things mid-day. Wake the PC at 3pm and the 9am dose alerts immediately, because the row still says it hasn't been dealt with.
CompletedCount the entire music library honestly. 5,262 unique songs across 1,119 artists, exported, deduplicated and broken down with no invented statistics anywhere. The discovery timeline got cut instead of faked, because the export has no date field and a chart that might be fiction is worse than no chart.
CompletedBecome a Queer Ambassador. Far less dramatic than people expect. Mostly it's helping folks get the small everyday things right, like using someone's name without making a production out of it.
🏆 Achievements
Ten earned the boring way and a handful more hidden around the site. The hidden ones are real: they unlock from things you actually do here, and they appear in this case as you find them.
🗡️
The Long Haul
1,911 hours in The Elder Scrolls Online. No further questions.
🐍
Speedrunner (reverse category)
Built a working Discord bot before finishing a basic Python course.
🤖
Certified Menace
Successfully automated something literally nobody asked her to automate.
⚡
Maximum Vibes
Sustained entirely on Monster, coffee, and spite for an undisclosed number of consecutive days.
📊
Completionist
5,262 songs cataloged, 1,119 artists ranked, zero numbers invented to fill a gap.
🌌
Star Cartographer
Mapped 150 artists onto a star chart where every link between them is a documented, on-file connection. Nothing on that map is placed by feel.
🚫
Refused The Timeline
Had a great idea for a chart, found the data couldn't support it, and shipped the explanation instead. Nobody would have checked. That was the point.
🎲
Dungeon Master
Runs a game server with no ranks for sale, no cosmetic paywall, and no donor queue that quietly becomes mandatory.
👯
Two Hazels, One Name
Shipped two entirely separate codebases under the same name and has declined to rename either. Regrets nothing, explains it constantly.
🕰️
Veteran Status
Thirty years on Windows, eighteen on Android, five each on Linux and macOS. Not a flex, just an uncomfortably long time.
A few more are hidden on the site itself instead of written out here. Find them and they'll fill the empty slots above on their own.