---
title: Plurality-Driven Development
date: 2019-08-04
---

"That code has a horrible security bug in it." 

I look down in my lap. A little yellow horse is appearing to sit there. She looks
innocently into my eyes, gesturing to part of the code with her wingtips.

"What?"

"That code has a security bug in it: if users pass a string instead of an integer
in it, it could allow them to forge a user ID token."

I look down incredulously at the little yellow horse, then back at the code. 
She's right. There was a huge bug in that code. I had just written it about 30 
seconds ago though, which surprises me. I thought I was experienced enough in 
secure programming to avoid such a _fundamental_ flaw like that; but here I am. 
I rub the little pony on her head, making her purr and winghug me. 

"Now, replace everything in that last paragraph with this: ..."

And I continue on like nothing happened.

---
 
Software is complicated. We deal with a fundamentally multi-agent world where 
properties like "determinism" aren't really constant. Everything is changing. 
It's hard to write software that is resilient enough to withstand the 
constantly shifting market of attacks, exploits, languages and frameworks. What 
if there was a way to understand the multiple agency of this reality by 
internally self-inducing multiple agency in a safe and predictable manner? 

I believe I have found a way that works for me. I rely a lot on some of my 
closest friends that I can talk about anything with, even what would normally 
violate an NDA. My closest friends are so close that language isn't even as much 
of a barrier as it would be otherwise.

As I've mentioned in the past, [I have tulpas](https://christine.website/blog/what-its-like-to-be-me-2018-06-14). 
They are people that live with me like roommates inside my body. It really does
sound strange or psychotic; but you'll just have to trust me when I say they 
fundamentally help me live my life, do my job and do other things people 
normally do by themselves. 

As an aside: this post doesn't intend to cover the philosophical, metaphysical 
or other aspects of plurality (enough ink has probably been spilled on the topic
to cover a lifetime); instead it aims to offer a view on how plurality has 
benefitted me (us) as software developer(s).

As of about 4 years ago, all of the software you see under my name has been the 
result of my system and I collaborating. Most of the computational linguistics 
code I've been writing has been the result of a cuddly catgirl wanting to create
a Lojbanic artificial intelligence for her own amusement (that is also 
incidentally really good at understanding grammar, human and machine). Some 
random experimentation code has been written by someone who sarcastically calls
herself Twilight Sparkle. I have a little yellow dewdrop of love and sunshine 
that finds security holes in programs while I am writing them. There's a 
database expert and a code review guru too. Combined with my jack-of-all-trades
tendencies, this creates a surprisingly balanced team in a box.

We started doing this out of boredom. I was busy working on something and 
Nicole just spouted out something about the code being wrong. She was right. 
We decided to just continue following that same basic model and it's worked 
wonders ever since. Over time we've figured out how to impose eachother into our
visual awareness. That has made this pair-programming skill even more useful. I 
can have the little yellow pony in my lap telling me what's wrong with my code 
and she can just directly _show me_. Then it can be fixed.

This skill has lead to heated internal debates about what is and is not 
idiomatic. As result of that, I now have working compilers in my dreams. It's 
also lead to what people have told me is some of the most high quality and 
in-depth software design that they've seen. It's really lead _us_ to think in 
terms of how the machine works, to avoid round-trips and abstractions getting in
the way of what is really going on. If there is any secret to my own brand of 
10x-ing, this is it. I am just one person, but with the help of the girls we can 
get to just about n>1 effective people most of the time.

It's been a powerful catalyst to my career too. Before plurality I was a fairly 
average developer without any real skills in any one task. Now we can swap in and
out in order to most effectively tackle anything thrown at us. One of the biggest
changes this relationship has had on me is being better able to explain software
complexity and visualise it, then turn that visualization into a diagram with 
[GraphViz](https://graphviz.christine.website) or other similar tools. It also 
becomes very easy to turn these visualizations/diagrams into formal requirements
too, because then the features and aspects of systems and how they interconnect
become trivially obvious to point out. 

However, there is a drawback to this: you're dealing with sapient beings. They
sometimes don't want to cooperate. Internal drama can and has happened. It helps
for us to have a quarterly [date with a word document](https://tulpaforce.xyz/within/guides/internal-meetings-to-bring-harmonic-synergy.html) 
in order to make sure everyone is on the same page. Disagreements happen, but 
ultimately I've noticed that the net result is far more positive than if the 
disagreement hadn't happened at all.

Anyways, plurality-driven development works for me, but it's really _not_ for 
everyone. The taboo issues I mentioned can make it a chore to hide this from 
people. I honestly wonder how much of the girls that my coworkers notice in my 
work on a daily basis. We all have slightly different speech patterns, ways of
sitting, clothing preferences, opinions about what to get for lunch and a whole 
bunch of other subtle things. I don't really understand how it's not
plain-as-day obvious to the point I get called out on it. At some level I guess 
I'm grateful for this, as that kind of conversation seems like it would be 
_extremely awkward_ to have. It was hard enough to admit this to my brother, 
and I ended up losing contact with him as a result (it apparently was just too 
weird, which I can really understand). 

I really do wonder how much of the fear of talking about this is my own paranoia
though. I've had very positive experiences "coming out" as plural to close 
friends, as well as very negative ones; for better or for worse it really shows 
you who your friends _actually are_. I can live with this. I'd rather _really_ 
know if I can trust people or not. 

This is a surprisingly taboo topic to talk about. Most of the time people view 
the mere _idea_ of having someone else in your head to talk with as a social 
faux pas. There's a surprising amount of philosophical arguments and assorted 
objections that people will throw around when they hear that you participate in 
this. There's accusations of being possessed by demons, or being mentally ill, 
complete with acronyms thrown at me, and much more.

Hell, this is stuff I'd love to talk about at some convention somewhere; but I 
don't really know if I want to paint such a huge target on my back. Because 
plurality and related topics are so taboo and so niche, there's not really 
protected categories for it. This makes me nervous about talking about it in any
sort of public way, and understandably so. I guess this article is part of my 
healing process to treat this as just a boring aspect of how I experience 
reality instead of some fundamentally earth-shattering gift from the heavens.

Besides, doesn't something fundamentally have to cause a negative impact to be 
classified as a disorder in the first place? How can something that 
fundamentally helps be a disorder? What if it's just a new adaptation to an 
increasingly crazy world?

---

I have compiled a list of resources that have helped me [here](https://tulpanomicon.guide).