What a wonderful day!

Today is a particularly important one for me. When I look in the mirror, I didn’t hate what I saw. I didn’t think that there was a gross abomination staring back at me. I saw a beautiful young woman staring back at me with her sparkly blue eyes. I saw frizzy, curly hair framing a smiling face, and I didn’t think it ugly. I didn’t see any of the features as detracting or awful; I saw me.

To a lot of people this is probably silly, but to myself and others who have body image issues, this is the most wonderful thing to have happened to me in a very long time.

Network Shuffling

Due to some wonky things going on, I needed to delete my GitHub account, as well as a few other networks. I have recreated them, some with different names (as mandated by that network).

I am re-publishing all of my code that was on GitHub as new repositories, which means that my commit histories are gone1)this is intentional. I’m also taking this time to do major refactors on my projects like harbinger and my Linux customizations Being that this is a new account, there is no list of existing issues.

   [ + ]

1. this is intentional

First Record of Amelia Packett

Going through some of my old notes, I found the first mention of one of my favorite original characters: Amelia Packett. She is an AI enthusiast that worked various jobs, and runs Packett Logistics, a company set up as a gray-market mover and front for her less-than-legal pursuits. In my more current notes, I noticed that Packett has a Pocket Companion that she calls “Aida,” and I didn’t remember exactly where this came from. She is very fond of Aida, often seen talking to it as a mother would a child, or a lover to their partner.

During one of her learning excursions abroad, she worked as an unlicensed AI architect for Senπ Corporation, a premier AI boutique in Neo Kanto (関東地方). The birthplace of Amelia Packett was in a PR summary for the Senπ Corporation. (English translation below.)

私 たちの会社は2944年に設立されました。また、メンテナンス条件を改善するために人工知能やロボット工学の使用に関する論文を発表した。それは、 AIDAという名前です。名前は「Artificial Intelligence Diagnostics Assistant」を意味する。


Senπ Corporation
Our company was founded in 2944. In addition, it was published a paper on the use of artificial intelligence and robotics in order to improve the maintenance conditions. It is named AIDA, which means “Artificial Intelligence Diagnostics Assistant.”

It is sometimes called “Super-cute Artificial Girl AIDA” by otaku pilots. People believe Ms. Packett started this trend.

Creating a Minecraft Server

Sammal and I have decided to create a Minecraft server, since the ones we played on became less-than-awesome. After talking a bit, he came up with the name of Mashekraft and it stuck.

Mashekraft is a survival server with a lot of customization going into it. We’re using spigot for the server, so that we can use a bunch of cool plugins (like MythicDrops, MythicMobs, and Slimefun) to expand our playing.

I am in the process of building a website for it now, since the base server is online and working perfectly. We have it set to whitelist-only, so for now it is only friends and family who are able to play.

CCARPS 1.0.0-rc2 & rc3 Changelog

Combining these since there wasn’t enough to justify creating two separate posts.

  • More formatting, grammar, and spelling corrections
  • Clarified Unskilled Action Rules
  • Updated Basic Skills list
  • Added generic Oddities and categorized skills
  • Updated Combat sequence to reduce number of steps per action

EsciaMUD & Grab-Song

The past ten months have been super amazing, even with the terrible things that have happened to me. But what I am the most excited about are the projects that I have been working on. I mean, beside the fact that it has been over ten months (already?!) since I started actually feeling like a person. Life is wonderful!


Over the last several months I have been organizing all of the notes and literature I have about Escia, my gaslamp fantasy world. Last month, I came across Evennia again. As stated on their site:

Evennia is an open-source library and toolkit for building multi-player online text games (MUD, MUX, MUSH, MUCK and other MU*). You easily design your entire game using normal Python modules. Apart from supporting traditional clients, Evennia comes with both a game web-client and a web-server out of the box.

This is right up my alley! I have always wanted to build a MUD, and what better so I just dove right in. The tools I had been making to test my Python implementation of CCARPS were starting to resemble a simple text-based fighting game, so I took them and started plotting out how I wanted to start building a MUD.

Being the excitable girl I am, I couldn’t stop gushing about how nice Evennia was, and within a few days, a small group assembled around our passion for text-based games. My ~~arch villain~~ boyfriend Massenstein has been bursting at the seams with ideas, most of which jive with what I have been plotting and scheming. He is far more experienced in the art of playing MUDs and I have been super much enjoying his perspective and ideas.

My super good friend SustainableStu, who is one of the helping architects of Escia (and part of the first two campaigns), is also helping out! He is a magnificent artist and has been the main person who has drawn and painted Escia-related things. He is also a veteran text-based gamer, as well as progenitor of his own game worlds and campaings.

The biggest thing I have been doing with EsciaMUD (as of this writing) is integrating and modifying the Cool Battles system from World of Cool Battles. Much of what Tim Jenkins has done with the battle system is very much in line with what we wanted to have in EsciaMUD. When we tested it, Massenstein couldn’t stop smiling; it’s a joy to play with! And given that CCARPS is character-driven and combat is lethal in the tabletop version, an interactive and customizable turn-based combat system will help players have more meaningful battles. 1)We are not having any autobattling. To follow the CCARPS values, every combat sequence should be meaningful and not a grindfest. In addition to customizing Cool Battles for EsciaMUD, I am helping clean up and organize the base code.


During a random search online for a Linux client for Discord, I came across Gaming On Linux and joined their Discord chat. It is in there that I found a link floating around for the in-development Linux application. Not long at all after I joined, did someone ask for people to test a little tool that they are making. This little tool is called grab-song, and is a shell script that parses song information from an audio stream 2)VLC, Clementine, Audacious, Spotify, etc. of your choice. The primary goal is to make it easy for (game/programming) streamers to show what music is playing as an overlay in OBS or other streaming tool.

While testing it, I saw some things that could be fixed and thought of things to add, so I slapped some code in and presented it to the original author. I am now one of the developers for this nifty little tool. I have plans for using it in non-streaming ways, but the result is the same: showcase what’s currently being listened to!

Speaking of listening, if you haven’t, you should totally listen to the soundtrack to Cosmonautica! It is my current go-to soundtrack for coding late at night. The game is pretty fantastic too, if you are a fan of trading games, space, and crew management simulators.

   [ + ]

1. We are not having any autobattling.
2. VLC, Clementine, Audacious, Spotify, etc.

My Minecraft 1.8 Shader & Resource Setup

Recently, I have gotten back into playing Minecraft. Given my lust love for tinkering, I couldn’t help find out how to make the default game look “better.” This is what I did to achieve satisfaction:

Note: Change %appdata% to ~/ for Linux.

  1. Download Minecraft Forge version 1487
  2. Download Optifine 1.8.0 HD U D5
  3. Download Karyonix’ Shaders Mod (their direct adfly link)
  4. Download SEUS v10.1 Ultra shaderpack
  5. Install Minecraft Forge – default location should work.
  6. Open File Explorer and type %appdata%/.minecraft into the address bar.
  7. Copy Optifine_1.8.0_HD_U_D5.jar into mods/1.8 (create directory 1.8 if it isn’t there already)
  8. Start Minecraft and press edit profile on the forge profile
  9. Make sure release 1.8-Forge11.43.3.1487 is selected under use version
  10. Open Minecraft and turn off AA, AF, Fast Render, Natural Texture.
  11. Close Minecraft
  12. Copy ShadersMod-v2.4.12mc1.8.jar into mods/1.8
  13. Copy SEUS-v10.1.zip to %appdata/.minecraft/shaderpacks
  14. Open Minecraft and go into Options. You should see Shaders...
  15. Select SEUS-v10.1.zip

I use Realistico for my resource pack. It is a high resolution version of the default textures, plus a bumpmap for taking advantage of shaders.

Download Realistico:

  1. Texture (Mediafire link)
  2. Bumpmap (Mediafire link)
  3. Place them in %appdata%/.minecraft/resourcepacks
  4. Enable both for the best effect!

2015-10-12_00011 2015-10-12_00012

Timeline of Scribbington

Over the many years Scribbington has been alive, I have been asked many times, “how did Scribbington start?” With the latest move to better code and a clearer path ahead, I started tracking down the earliest conversations and code commits to draw a path. This is what I have uncovered.

Supybot (2006-2008)
The first version of Scribbington was essentially a mostly-vanilla Supybot that was primarily used for IRC convenience commands. One day, someone said, “I wish Scribbington would talk.”

pyBorg (2008-2012)
I found pyBorg and really enjoyed what it did, at first. One of the first things I did was gut out tools that we didn’t need and wrote some cleanup functions, so that the brain would compact and automatically trim itself. There was a fork of pyBorg that some code was taken from to help with this, but eventually I started doing some things with the brain that made it no longer compatible with other pyBorgs. During this time one or two other people tinkered with Scribbington, as I had used it as an Ubuntu Beginners Team project.

Scrib (2012-2015)
Originally scrib was a fork of pyBorg, but after doing more experimentation and running into more walls of frustration, I decided that there needed to be a rewrite. This was a hot mess. Four people contributed to this project, mostly with ideas and feedback. One contributed a lot of time and code, and shared in the frustrations with me. The hot mess only got worse, and by the time it hit version 1.1.0 we were maintaining bots at version 0.8.3, 1.0.0, and 1.1.0.

We flopped the brain around to pickle, json, Redis-based, among other abominations. It was becoming too awful to maintain and the git commit history was horrendous. There were many problems with the transition from Python 2.x to Python 3, as well, since the brain data contained mixed types of strings (binary, unicode, and ascii). A great deal of time was put into building a converter-cleaner, and though one finally did export the data into a usable format, I made an executive decision to drop this path entirely.

Harbinger (2015)
After much waffling and hand-wringing, I decided to fork scrib and slim it down to its bare essentials. Thus harbinger came to be. Harbinger, by design, only ferries data between users and its plugins. By itself, it will only sit and accept input.

In an attempt to reconstruct the old brain in the new system, I realized it would be easier and less awful to just make the working version of Scribbington into a plugin, so that the brain data could be transferred to a better system through the plugin system. This brings us to LegacyBrain.

The LegacyBrain plugin for harbinger is a stripped down (but not efficient) version of scrib 0.8.1 and supports the brain version 0.1.3. The main purpose is to allow full functionality of the original Scribbington while we build other brain alternatives.

Relocating Steam Screenshots

It is a pain to find Steam screenshots in Windows (and to a lesser extent, Linux and OS X). For example, the default location is C:\Program Files (x86)\Steam\userdata\[id]\760\remote, where [id] is your SteamID number. Windows versions since Vista will allow you to create symlinks, which lets you move data without having to change the program’s output location.

You will need to rename or move remote before mklink will work!


You will need Administrator privileges to do this and will need to use cmd. Pressing Win+ x will open a menu where you can select “Command Prompt (admin).” When open, you can type something like: mklink /D "[Steampath]\userdata\[id]\760\remote" "C:\new\path\to\Screenshots\"

For my purpose, I cut and pasted remote to D:\Pictures\ and renamed it to Steam, then did:
mklink /D "C:\Program Files (x86)\Steam\userdata\[id]\760\remote" "D:\Pictures\Steam"


The remote folder in the Steam directory will now have the shortcut arrow to indicate that it’s really in another location. If you are a screenshot junkie like I am, this makes it much easier to curate screenshot galleries outside of the Steam platform.

In Linux and OS X, use ln -s instead of mklink /D.

Location in Linux: ~/.local/share/Steam
Location in OS X: ~/Library/Application Support/Steam
Example: ln -s ~/.local/share/Steam/userdata/[id]/760/remote ~/Pictures/Steam

If this isn’t working for you, send me a tweet or email me!

Milepost 2: Is That a Snake or..?

It has been a very long time since I wrote a more personal entry online. After rediscovering a post of mine on Medium, I felt like I should write some another life update milepost for my future self. Since writing In Pursuit of Happiness, I have hit some really low points. I have not been all sunshine, rainbows, and worked-on-the-first-try code. I sincerely felt that I no longer belonged, that there was no place for me anywhere. I’m on my sixth week of walking uphill back into the land of Happiness, for which I am definitely grateful. This battle is ever-changing and always finding new ways to challenge me.

I have gone through fits and spurts of confusion and chaos, trying to find out what I really like and who I really am. To this end, I tend to go on mass-deletion sprees of online content I have curated, because I feel that it no longer shows who I am. The only place I haven’t deleted in years is Twitter (the last time I deleted that was in 2013), but it is far more accurate a picture of the evolution of Sina. One of the more telling places in the past has been Tumblr, but I have deleted it twice since my last “happiness update.” (I do have one again, which I started today — it is what led me to start this rambling stream-of-conscious writing. It can be found at: sillysina.tumblr.com).

It is strange to feel at peace without having the little voice in the back of my mind nagging at me, saying, “when is the bad stuff gonna happen?” It is also not as uncomfortable to rebuild, as I had been imagining it would be. The whole “coming out” and the shenanigans that ensued has caused me to lose a lot of amazing people that I connected with. I have lost friends and family, but more importantly, I have found my family of people that accept me as I am. I thought I would have stronger feelings of regret, but after putting many hours and days of thought into it, I realize that I am far happier despite the shuffling of the who and what in my life.

Time allowing, I will rebuild connections with some people of my past. I am, however, focusing on forging new relationships and keeping existing ones in good health. It sounds easy, after reading these words, but shedding negative people and habits from my life has been terribly painful at points, but has opened some very important and personal questions in my mind.

Over the course of starting hormones, I have realized that my tolerance for awful people has plummeted. Rather, I have started to feel less dissonance between myself and my physical vessel, which has brought me back to a level of self-assuredness that helps do away with some of my more overly-anxious tendencies. I have recovered some of my previous ways of (positive) thinking and my life feels like it is coming together again. The kitten I am now is a strange conglomeration of what I liked in the past and how I intend on being in the future.

The biggest thing I have done this year is let go of the past, learn from mistakes, and move forward as best I can. Being on hormones has done wonders for the inconsistency of my emotions and of my acceptance of myself. One of the many large roadblocks in my life feels not so monumentally awful.

Some of the changes I have made this year include:

  • stripping and reorganizing The League of Magnificent Scoundrels to no longer be the main focal point of my life and livelihood,
  • getting back into the groove of programming, writing, and gaming, which leads to
  • formalizing WizardSpire Games and sharing with the world the creations we make,
  • making do with what I have and working toward a bigger goal,
  • speaking my piece when I feel it necessary,
  • finally starting hormone replacement therapy,
  • giving no fucks what people think of me,
  • listening to myself,
  • and letting go of things I thought I needed.

Look at all the bothers I give.

Reading some of my old writing, I reconnected with a fragment of my hidden core, and realized that I had lost my path to ataraxia (freedom from stress and worry). I had spent the last few years lamenting that I am a dusty ball of yarn that had been bleached by prolonged exposure to the sun. The more I let myself acknowledge me, the more I hid from the world, out of fear of what others thought, of how I would be perceived. The last few years have been rather uncharacteristic of me, because I dislike hiding.

I have increasingly been more vocal on matters important to me, and it has been positively scary. I feel alive and happy again, and am unafraid to speak my mind, even when I full well know the shit storms it may kick up. Sometimes those storms need to be kicked up, though. Constructive conflict is a good and healthy thing.

Speaking of storms, why did I ever stop writing? I have used a large array of excuses to justify this, even though not writing makes me profoundly unhappy. The consistency of my time programming has also been impacted negatively over the course of the past few years, which also bugs me. I have let negativity block the progress on one of my most favorite projects (Scribbington) and willfully atrophied my creative muscles.

Since taking up the habit of diary writing, I have felt less constipated in the land of figuring out how to put words onto paper (and into documents), as this post might reflect.

The last six weeks feel like they have been some of the consistently happiest weeks in my adult life. I have started to feel like myself, which has positively reflected in how others perceive this silly catgirl-loving Sina. It seems my reflection is working again.

This post is a hot mess but I knew that if I edited, it would never see the light of day.

Thank you for reading my words. ♥

Oh dear, it appears I'm fresh out of fucks.