Not sure if I'm inside the tech snowglobe or just holding it and can't look away. And it's mid summer.

I've been increasingly annoyed in my day-to-day with technology over the past few months. Mostly in the context of apps and websites both on mobile and desktop.

Maybe the pandemic has made me depend on tech more for entertainment and escapism. Maybe I'm just getting old. Maybe I'm more tuned in to bad design patterns as a front-end developer. I dunno. What I do know is that I'm not the only one dealing with these problems, and it feels like these annoyances have accelerated recently. I sat down for just 10 minutes and tried to dump out everything I could think of from just the past month or so that I've realized is just obnoxious.

The sad thing is that we've gotten so used to how things are that we've just accepted it as normal. But somewhere along the way, I just hit one too many X-buttons on a popup asking for my email for a newsletter, and I got triggered real bad. So, here's my annotated list of just ten or so minutes of thinking about bad experiences we have to deal with in today's tech landscape.

Things that I'm tired of:

  • Logging into websites on mobile (and dealing with 2FA on mobile)
  • Downloading and setting up every individual municipality's parking apps for 10 minutes after I found parking because its either the only option for the parking meter, or the on-board systems for the parking meter are busted because why would they bother fixing it when they paid for the app contract
  • Opening an app only for it to load and display a banner saying I need to reload for an update
  • Email newsletter popups
  • Having to look for and uncheck mailing list opt-ins during sign up for a service, only to get spam from the company anyway
  • Unsubscribing from newsletters I didn't sign up for, and half the time it doesn't work anyway
  • Waiting any length of time for an application to load in TYOL 2021
  • Waiting for an app's loading screen to finish, only to then be presented with a loading spinner because now they have to make a request to their server, so I'm still waiting for it to load
  • Seeing a spinner forever and not knowing if the network request failed or not because half the time the app was never built to gracefully handle errors
  • Having to go out of my way to have ownership over my data in apps I use, because every service would rather keep your data in their own format on their servers behind a subscription because thats more profitable and retains users better
  • Ads. Anywhere. Ever. I have zero patience for that shit now. Adblock everything.
  • “Smart” devices being front and center, to the point that quality non-smart versions of things barely exist, but then that smart thing is just another venue for all of the same things I'm tired of (constant updates, notifications, loading screens, etc)
  • IOT devices that are appealing as convenient but then turns out mesh networking is hard so everything is routed through a central server anyway so all IOT requests take forever to go through and fail half the time anyway
  • Trying to quickly look something up on my phone's web browser only for a fullscreen popup saying that if you want to read more you need to install the app
  • Paywalls, especially on news
  • “Accept cookies” banners EVERYWHERE
  • A thousand chat applications and none of them interact with each other and increasingly SMS fallback works worse and worse
  • The fact that to avoid any of these annoyances means getting even more annoyances from subpar software with little to no support behind it and a massively increased barrier to entry for most people (think self hosted solutions, open source apps, etc)
  • The fact that we have so many subscriptions to manage that there are subscription services whose sole purpose is to help manage subscriptions
  • Dealing with audio input/output device management on a computer – or worse, trying to walk someone else through that who doesn't know what is going on when you're just trying to have a video/voice call
  • Spam phone calls, and the fact that literally anyone can just… call you? And ring your phone? And the only way to opt out is to use some kind of call blocking functionality which risks missing possibly-important calls
  • Commercial VPNs having successfully rebranded themselves as necessary for the average person after all the work we did to get https everywhere (yes VPNs can still do some other stuff but 99.5% of the time its not any more secure, just changing who is able to look at your DNS lookups and traffic volume)
  • Updating my TV's OS
  • Having to deal with literally anything involving Bluetooth, especially pairing audio devices
  • The fact that everything increasingly has a microphone in it, but voice assistants are still terrible and creepy. Doubly worse that the common response to that fact now is just acceptance of the creepiness.
  • Filling out billing information. And 50% of the time autofill fails in some way

Root Cause

As far as I can tell, the root cause is money. Virtually everything I've listed can be tracked back to companies seeking to endlessly increase their income. Most of these issues come down to one of a handful of things:

  • Consolidate data into the cloud so the company can charge you access
  • Moving app logic to servers so the company can retain control over when and how the app is used
  • Refusing to modernize monetization techniques and instead sticking with ads and tracking because its way easier to keep pretending your app is free rather than ask for payment in exchange for services rendered
  • Generally lazy craftsmanship in the development of an app because its easier to cut corners than explain to investors why your app launch was delayed
  • Just generally and honestly seeking ways to squeeze money out of apps

I don't think any of this is unreasonable given the scenario we find ourselves in. Companies first and foremost want to make money, that is how the world works. But the result is that these devices that are supposed to be tools that make our life easier instead become these obnoxious money pits.

A Plea

So please, if you are a developer, product manager or even investor: we need to make a concerted effort to actually improve quality of life, not add new venues to deliver a death by 1,000 cuts.

And if you're a user of tech (which, if you're reading this, you are): I hope you have identified a few annoyances of your own. Take a moment and report those to the app developers. Maybe even uninstall a few apps and alert the developers as to why.

Users deserve a better UX. Even in my experience with companies whose entire branding is based on UX (such as Apple), I'm hitting these obnoxious problems.

And if I have to install one more damn parking app, I'm going to lose my mind.


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.

Enter your email to subscribe to updates.