I love Obsidian. I'm writing this post in my main Obsidian vault right now, actually. You should check it out for yourself, but in brief, Obsidian is a very powerful notes management application with document linking, among a bunch of other great features.

I also love playing tabletop RPG games. My current favorite game is Quest, but I mostly play D&D 5th edition. Specifically, I mostly DM when I play, and I've constantly been searching for an actually good digital DMing setup.

It wasn't until after I had already begun building my own app specifically for DMing that I found Obsidian, which basically did everything I was planning to build. Though it does lack some of the features I wanted, but still, it was enough to make me stop what I was building and find a way to work with it. Let's run through my process and why Obsidian is so dang good for DMing.

I'll preface this by saying I mostly run custom campaigns in custom worlds, but I believe even without having a trove of your own custom written content, Obsidian proves useful.


...and why they're good for DMing

  • Document linking – Link directly from your mention of a notable NPC to their profile document
  • Window multiplexing – Have a combat tracker note, enemy profile, and item reference all up at the same time within the app
  • Backlink listing – See all the other places you've mentioned a given item, location or NPC
  • Fuzzy find – Open the document you need with two or three keystrokes to keep things moving while DMing
  • Graph view – See how everything fits together in your story


The real key to it all though is having a wealth of resources available as a baseline for building adventures and referencing during gameplay. I found a really great markdown version of the D&D's rulebooks and wrote a script to break it down into individual documents. One document per spell, class, mechanic, item, monster, etc – with a few Obsidian bonuses like backlinking to indexes for spells or monsters.

Then, I just plop all of that in a folder called reference, and make an Obsidian vault with that folder. Suddenly, I have almost all of D&D's content at my request with just a simple file search, fuzzy find, or document link. When I say there is a goblin in a scene, I can just link to the document with all the info about goblins with [[goblin]] in my Obsidian documents.

Not to mention that Obsidian lets you embed a document in another document, so you can directly embed any reference page into your writing for quick access.

You can download a copy of my Obsidian D&D 5e reference folder. I will be continuing to iterate on this and will make a for real repo in the future but for now, that's what I'm working with. (Update: there is now a github repo: twisterghost/5e-obsidian)

Additional Files

I then have a few auxiliary files on top of the campaign writing and the reference documents.

  • Turn order tracker – Just a simple doc with the player character names and any enemies in a combat. I jot down initiative and just trace through the turns. Obsidian has markdown support for tables, too, to make this a little better looking
  • Session notes – A scratch document to jot down anything that comes up, any improvised NPC names or anything you need to remember for next time. I usually swing back through this document and spruce it up a bit when writing more for the campaign, because it often just reads like nonsense after a few days.

And that's about it! Not much else to say. The ideal app, the one I wanted to build, is basically Obsidian, but also would have an automated turn tracker, dice roller, and maybe even a virtual tabletop. I know Roll20 has a lot of tools, but in my experience, it ends up being a mess to work with, especially when trying to fiddle with it all in real time while DMing. But for now, Obsidian has been the closest I've found to my ideal setup.

A few months back, I had an idea and a desire to learn a new language. I combined the two into a project called Prose, a simple command line app to organize written word intended for flexible publishing.

The basic idea of Prose is to give control and flexibility to the writing/storing/publishing process. It arose out of my hesitancy to write anything anywhere that isn't just my local machine. Websites fail, servers crash, services go away and remote databases get hacked. What if instead I just made master copies of all my writing on my own drives and in my own backups, and published those in different places?

Take it a step further. What if I could organize my writing into portable, authoritative artifacts which could then be processed by downstream apps? Enter the Prosefile, a simple structured json file which contains writing entires with metadata, which can then be formatted and passed along to other programs to parse, decorate and render.

The Prose CLI is a work in progress, but has support for adding entries from stdin or from reading in a file. My intention is to support tagging and metadata editing from the CLI. From there, the simple format allows for manipulating the data through a stream until ultimately rendering or sending the data somewhere.

Perhaps store all of your varied writing in one Prosefile, and tag the entires as blogs, snippets, and tweets, then have a program just select all the blogs and pass those along to a static site renderer. Or consider writing a bunch of entries in advance, tagging them with publish dates, and writing a small script to check the Prosefile for when to publish.

None of the options are trivial, mind you. They all take more work than just writing a blog post somewhere and hitting “save” or simply jotting down a tweet. But the trade-off, besides having some fun, is total control over your written word no matter what may happen to where it was published. The source of truth of your written work is in your Prosefile.

Recently setting up a gemini capsule (which has a variation of this post) has me wanting to finish out this CLI to a 1.0.0 state and then write myself a little static blog generator, including an atom feed artifact. Maybe this weekend...

Black Lives Matter

A few nights ago, my wife asked me: “What would you say are my values?” It's part of a self improvement program she joined last year. This is the final month, and she is tasked with considering her life and what makes her happy as if she were celebrating her 80th birthday.

I spent a long time thinking about this. Long enough that she began to retract her question. I can think of who she is, what she does, and what qualities she has. But turning her values from abstract concepts into words was incredibly difficult. Even harder was avoiding just listing off traits instead of actual values.

A few minutes later and I had managed to get a few values out there. She seemed happy with the assessment, but when I asked her to do the same for me, I saw her go through the exact same problem of trying to think about me in words instead of as an abstract concept – then avoid listing traits instead of values. It's an incredibly complex question, and at the end of the day, I think it's one that you really do need to answer for yourself by considering what you would look back on in your old age and feel proud of.

For me, I landed on: comfort for myself with a place I can call my own, giving to my community in a way that truly empowers those around me, stewardship of nature, and creating something that will live beyond myself.

I have my doubts that these will be the same forever, but if I could look back on my life and check off those boxes, I'd be pretty dang proud.

Whatever language you're writing software in is probably fine. Whatever framework you're using to build your application is probably fine, too – or if you're home rolling everything, that's great. Learn something from it.

You're going to see a lot of stuff around the internet – especially in some of the fringes – about how you shouldn't be using language XYZ or that software is only good if you do it such and such a way. Turns out, you can do software however you like. My opinions, their opinions and everyone's opinions are just that – opinions. And I've heard a lot of opinions. One thing that has remained true throughout all those opinions hammering away: none of them were right. Okay, some of them were right about some things, and some were very wrong about some things... and some were extraordinarily short sighted, but none were a silver bullet.

So sure, if you see a hot take about how Rust is amazing and is the savior language, maybe try Rust and see. Next week you're going to see a post about how Rust is ruining everything, and everyone should be exclusively writing in C on a specific linux distro because reasons.

Oh and someone, of course, is going to make a bad faith or uninformed argument about why JavaScript is the harbinger of death.

It's going to be fine. Build your application in whatever language, framework and system you want. Whatever works for you. Just don't write it in an interpreted language. Or a compiled one. Or a C-like. Or a functional language. Or an object oriented language. Or on a computer – because that's considered harmful.

Last night, my partner and I were at a climbing gym. We're still beginners, but we've been going for a few months. A couple near the area we were bouldering in were conversing loudly, enough that I'm sure they intended for others to hear, about how “too many people saw Free Solo” and people need to “go latch on to some other hobby” and about how using the gym is going to be awful come the new year (presumably, resolutions).

Earlier the same day, I met with a new coworker. During our conversation, they brought up that they heard I enjoy woodworking, which is true. I enjoy it, and it's a hobby of mine. I don't consider myself particularly good at it, but I'd still say I'm a hobbyist woodworker or do woodworking now and then. My coworker said to me that they are “not really a woodworker” as they had “only” built a CABIN on their own. That's super dope and you should be proud!

To paraphrase a prominent celebrity woodworker, “if you take two pieces of wood and fasten them together into one thing, congratulations, you're a woodworker.”

My point is don't gatekeep others, and don't gatekeep yourself. Imposter syndrome is a very real, very spooky thing and people like the couple in the gym perpetuate this weird sense that you don't deserve the title or you don't deserve to be a part of that group. Fuck that, do what you enjoy and don't dampen your own talents by qualifying how you describe your hobbies.

Signed, Michael Rock climber, woodworker, dog-petter

CW: Unites States-centric politics & sexual assault topics | Views are my own and do not represent my employer, as with all posts.

With lawmakers in Georgia and Alabama on a roll recently, getting legislation passed with extreme hatred towards women's ability to have any sense of control over themselves, it's easy to feel powerless to help, especially under this current unrepresentative control of the federal government.

One thing to remember is that money talks. If you are able to do so – and please, only if you are comfortably able to – take care of yourself first in this “booming economy” – donate.

This morning I donated to Planned Parenthood in response to the absurd, backwards-thinking legislation passing in Alabama and Georgia which will punish those found guilty of false rape accusations with more time in jail on average than those found guilty of rape. 10 years for false allegations which happen so rarely [0] when the average rapist is sentenced to 9.8 years and gets out in 5.4 [1]. Given that we can't trust the justice system to handle police murders of unarmed civilians, and that rape/sexual assault is already so under-reported [2], it stands to reason that this legislation will do nothing but empower rapists.

Just to really drive home the point of hating the idea of women having any sense of agency, conservative lawmakers are also pushing for strict abortion laws, so when you do get raped, you gotta have that baby.

Donating to groups that can help alleviate this backwards situation is valuable. Donating to political campaigns at all levels of government that run on defending the rights of people in this country is valuable. In an age where we have climate change deniers, regressive bible thumpers and serial con-artists at the wheel, showing solidarity with the organizations they so quickly try to scare people away from is something anyone can do to defy this systemic injustice.

Planned Parenthood is one option. Find your local environmental societies and volunteer with them. Help get more women in office by donating to She Should Run. Find out who is running for local elections, or who is running for congress in your district, or districts that may impact you. I donated to the wonderful Mckayla Wilkes who, while not running in my district, is running for the district across the street from me. On that topic, maybe also donate to a group that fights gerrymandering.

Tags: #politics

Privileged Rant Warning

It just happened as I went to type this – my finger brushed against my new work laptop's touchbar, which triggered the URL bar on my browser to focus, which messed up my typing.

How did it get this bad? There's so many inconveniences we just deal with now, and there's not much of a way out. “High end” devices like iPhones or Pixel phones have stripped away stuff like headphone jacks, and now we're supposed to rely on wireless headphones for everything. Great, how can I plug my phone into speakers? Oh, I can't? I need wifi/bluetooth enabled speakers? Great, let me just throw my house out. I don't want to buy your dongles. I shouldn't have to if I paid you $1,000 for this media device.

Everything is in the cloud now and we can control it all from our phones! Amazing! Yet, when I do pretty much anything on my phone, in 2019, when we've had years to optimize all of this, I find myself waiting for things to load or ping servers or hear back from said servers or cache or stream or fetch. Nothing is fast anymore. We've upgraded our processors to incredible speeds, slapped massive solid state storage devices in our mobile supercomputers, but I don't have a cell signal so I guess I'm not listening to my music or watching my movies.

My media which I don't even own, by the way. I thought I did. I used Google Play Music, which I was able to upload my music to in addition to using their library. When they announced they'd be deprecating it and rolling users over into YouTube Music, I wanted to get out. When I went to get my music out, I quickly found that they've all but let the music download app atrophy, so I had to navigate most of it by blindly tabbing through buttons until I got the option to download everything. Then, I couldn't see my download progress. I hope it worked, but I can't be certain. Also, just no notion of downloading movies or TV shows I've bought. Purchased, paid for, but it's only really to stream through their servers. I know that's what I signed up for, but it still hurts to think that I paid for things I can't ever actually “have.” As far as I can tell, there's no reasonable way to go about purchasing and downloading movies or TV shows at all anymore, aside from buying the physical media and ripping it, which is even still legally iffy.

My desktop apps are now all Electron apps, so I'm running a sandboxed Chrome instance per app. I love it when my idling computer decides to blare its fans because Slack is running. Oh, some service I use now has a desktop app! Oh, it's just their website wrapped in Electron. No thank you. If I'm running the same webapp, but on my desktop wrapped in Electron, I have no control around blocking the 14 different tracking and analytics scripts you have running that track my every move, which one could say would create data used to improve the user experience but uh, what if instead, you reduced the overhead, network traffic and memory usage and made the application run well?

I got a USB-C docking station, or wait – no – it's a Thunderbolt 3 docking station. It works great on my new work laptop, and my personal gaming laptop has a Thunderbolt branded port, so I'll plug that in and – oh, it mostly works? Kinda? I guess I'll email their support —– okay they got back to me, and apparently the issue is my computer's manufacturer's Thunderbolt port isn't to spec. So we have this amazing universal new standard, USB-C, but it's also thunderbolt, and also the dock says to specifically use the cable it comes with because not all cables are created equal.

Look, this is all an incredibly first world problem. But in an age where we've got these incredible advances in hardware and technology, we've left consumers with a fractured, sometimes user-hostile experience just because we can get away with it. Most of the examples listed here are micro-annoyances, but if you think about where we could be in terms of connecting people and furthering our technology if we followed a human-first model of designing and building technology rather than a financial-first, or analytics-first model, it gets a little upsetting.

For further takes, give this a read: “Users want control” is a shoulder shrug. It takes this concept from a bit of a different direction.

It snowed a lot yesterday. Maybe 6 or 8 inches of accumulation over the course of just a few hours. Then it was sleeting. Then it rained. This weekend we will see temperatures in the 60's (fahrenheit, luckily, we're not going to die).

Over the past year, my life has changed tremendously. My partner and I got married and moved into a house (in reverse order). My dream of having my own wood shop came true from the house purchase. I made huge decisions about the direction of my biggest game project ever, basically jettisoning the years of planned plot and world building in favor of something simpler and more focused. I've come to learn a lot about myself, my interests and what I really care about.

The snow is melting more quickly than I've ever seen. I can see the ground beneath the snow, not even 12 hours after the snow stopped accumulating. A backyard basement window well flooded with melted snow water.

I became an uncle this morning. My only brother and my sister-in-law had a son. I'm so incredibly happy for them, and I'm trying to navigate the idea of how I will be a part of this kid's life.

We're expecting a lot of rain this weekend. I'll have to keep an eye on that window well.

As I mentioned in a recent post about taking back what's mine, I have continued to disconnect myself from massive services, and lean less on possibly ephemeral product offerings. It has made me think far more critically about the services I use. For all I know,, the platform I'm writing on now, will not exist in a couple of years. I certainly hope not. It's a nice service.

It's going to be windy overnight on Sunday into Monday. I'll have to clear out fallen branches.

I think I'm a happier person now. Although I can find it difficult to maintain interest in some hobbies, I've found that feeling to be driven by a strange sense of commitment. My game project, for example. I had made a huge commitment in my head. Something I could never complete. It became daunting. I made what seemed like a hard choice: rethinking the concept. In reality, I am the only one holding myself to any requirements. The mental block was entirely my own, and my own to break. As always, giving myself a break feels tremendous.

Spring time is on it's way, and I can't wait to have my windows open, and let a fresh breeze roll in.

Over the past couple of years, I've been focusing on getting myself decentralized on the internet. I've largely pulled out of any one ecosystem, and I've moved towards more privacy-respecting services like ProtonMail and

As a part of this movement, I'm also trying to go back to being responsible for my own data. The “”““cloud”“”” has become ubiquitous and I'm pretty over it. I appreciate the convenience for sure, but I don't appreciate when services I depend on are sunset or unavailable, which even in 2019 is still a problem.

I used to not understand people who still want 256 gigs of internal storage on their phones. Now, I get it.

I'm currently trying to reclaim my music library. It is a difficult task. Beyond retrieving the files from Google Music, I now need to seek out all the albums and tracks that I “added to my library” rather than uploaded or purchased. Google said they'd be transferring their music service over to YouTube Music, which is not something I want to use, nor does it seem like it will support the same features I care about in Google Music.

Beyond music, I've dropped my dependency on Google Drive significantly, opting for an independent, encrypted solution. The biggest holdouts I have are calendaring, because the only real options I can find seem to be Google, Microsoft or Apple-based, and photo management, because Google Photos is really good. Though, I'd like to find something I can move to that has similar functionality without doing the creepy facial scans.

All in all, I just want to feel like I actually own my data again. I don't want to be subjected to the will of the service provider. I'm hoping as we move on with a new era of people living in the digital age, we see more people seeking this kind of ownership again, leading to a federated / individual focused renaissance.

Enter your email to subscribe to updates.