Fiction: Two Wishes

I have lived two lives.

In my first life, when I was old, I wandered through a shop of antiques looking for a lampstand. My cat had finally knocked over my wife’s light; it was a gift for her from years before, given by one of my sons, and while I couldn’t repair or replace it, its loss left an empty space in my heart.

My wife was dead.

She had passed away years before; some defect had lain in her body like a time bomb, undetected and malign. She passed away silently, and I hope comfortably and peacefully. The back-and-forth we shared wasn’t always pleasant but it was always beneficial; she was the rudder for my life. I missed her and will always love her.

The cat she’d named and that we shared had been playing – a vision of his youth, I’d guess, as he was at the same point in his life as I was. Running across a coffee table, he’d miscalculated and collided with the lamp – and down it went, into thirty pieces of porcelain.

It was just an ordinary lamp, but it was associated with my wife and therefore it held value for me, too.

Therefore, I found myself wandering, looking for something that resonated with me, that reminded me of my wife – hopefully something she would have liked. I could have bought a new lamp, but I wanted something with its own memories to imagine, something that would have interested my wife.

I found it in Britt’s Olde Shoppe of Ye Antiquities, amused by the name. It was not a large store – like many such places, I imagine, it was packed with oddities and knick-knacks, full of brass and dust. However, one desk had a vase with a light affixed to it – and that, I thought, was a worthy candidate. It was old, it was unique, it looked easy enough on the eyes, the colors matched my furniture – this was my lamp.

I took it home. It was overpriced, but I had the money for it; I was replacing memories, not just a source of light. The proprietor told me some story of the lamp, in an attempt to inflate its value; that was all right, because I would have assigned it a narrative in any event, and it was a way to pass the time.

I put it on the table and then went on about my life.

A week later, I finally had occasion to use it – I was sitting down to read, and, well, I needed light. Turning it on, nothing happened – the bulb had worked in the store, but here, nothing. I replaced the bulb with an old-style incandescent bulb, not because it had better light – it didn’t – but because I liked the feel of the older, dimmer bulbs.

The first moment after I turned the lamp on was strange – a vibration ran through the air. I heard a sound like a hundred voices in ecstasy in the distance… and then he appeared.

I could not believe it – such things don’t happen. Perhaps I was having a stroke, ready to join my wife in the World to Come.

Smiling, he said, Thou art not ready to pass away. No, O Man, thou hast instead come upon great fortune. Thou hast freed me from my long imprisonment through thy echoing of the past.

“Are you… a djinn or something?” I asked, trying to reconcile this apparition with anything I could relate to.

A djinn, he said, his eyes locked onto mine. Yes… a djinn is a worthwhile name for such as I. I am Asmedi, and as a djinn, I am prepared to grant thee three wishes, such as are within my power. Three thou may ask, no more; further, they are thy wishes, none others’, and I cannot and will not change the course of the world for such as thou art. Lastly, one day’s passing only dost thou have to make thy requests.

My heart leapt. I might be rich; I might be powerful; I might have my wife back. Would those things change the world? I didn’t know.

But first, I needed to revisit a great wrong I’d done in my youth, something that had colored everything afterward. Repairing that wound would have made the course of my life easier; it was a pain that had lingered, even as a relatively small thing compared to the course of human events.

When I was young, I didn’t know how to be myself. I had been suppressed because of personal illness as a child, disempowered as part of the process for my treatment, and as I matured and was put into new circumstances, I acted the part of someone used to personal power and charisma. I played the part of a better, more confident, stronger version of myself whenever in the presence of anyone else; I was combative, secretive, irascible. It was my way of seizing control over my own life, by owning and manipulating the relationships I formed with others.

It was not a positive aspect of my personality. It was motivated by fear, but it was the only coping mechanism I’d had.

Through it all, though, stood one woman: Anna. Somehow we attracted each other; that I was attracted to her was unsurprising, as she was beautiful and intelligent and kind, but I would never have expected her to be attracted to me.

But she was.

We only had a year together, in varying degrees. We were good friends, and gradually progressed beyond Platonic friendship while not breaking the bounds of true propriety: we were casually, gently falling in love.

And one fine summer day, I looked at who I was in my relationships, and who she was, and thought: “This is a woman with whom I could spend the rest of my life.” But I was projecting a callow image of who I was; I was not actually the same person that she thought she knew. She saw my desperation, but not my fear. She saw my love for her, but didn’t understand its true nature; she was becoming an anchor to a reality in which I did not have to wear a mask.

And I was lying to her about who I was, without even truly realizing it.

So I did what any young fool would have done: I broke up with her. “I don’t think we need to be seeing each other…” ten simple words, and I broke the two of us apart. I shattered us, and shattered myself for years.

I had had a plan, of course. My goal was to examine myself, to peel back the layers of my own masks, to figure out who I was. I would then move heaven and earth to show her who I was, to win her heart as myself and not a projection.

I was not successful.

We lost communication after that; her father was killed in an automobile accident, and her mother was crippled; when I went to the hospital to try to offer my condolences and any support I could provide, she interacted formally, more coldly than simple grief would explain.

I do not remember my last words to her. I had not had the time to figure out who I really was, and her trust for me had been broken.

I carried around the pain of losing her, and her loss of her family, for years, even though we lived completely separate lives. I no longer knew anything of her life, and I felt that she never actually knew me at all.

It was a regret that colored everything.

And there I was, an old lamp burning and a figure telling me that I could have three wishes…

I knew what my wishes would be. One would be to have my beloved wife back. Another would be for personal comfort.

But first… I told Asmedi that I wanted to change what I had done to Anna, to go back to the week before I destroyed our relationship, knowing what I do. I wanted to relive it, and give her what I always wished I’d offered her, and avoid the pain for both of us.

Asmedi smiled, coldly, cruelly, knowingly. I understand thy wishes, O Man. Now let the first be granted… and he opened his mouth with his hands impossibly wide, and smoke and light poured out.

I blinked, and immediately sweat appeared on my forehead – the temperature had gone up by twenty degrees. I was suddenly wearing jeans and a baseball shirt – and my hair was thicker than it had been. I found myself in my father’s house as it appeared before it was consumed by fire, from decades earlier.

I was home.

I had a hard time reconciling myself with myself. My body was younger; I was easily thirty pounds lighter. I felt displaced, and as if I were two people – and in a sense, I was. I remembered my life as I’d lived it – and I remembered my life as it was when I was young. I knew phone numbers. I knew addresses. I remembered my class materials… and I remembered Anna more clearly than I had in decades.

Oh, how I remembered Anna.

Without the intervening years to provide distance, my heart ached for her. I had not remembered how passionate I was – and being young, she pervaded everything I felt.

How had I not told her this? How had I not shown her this? How could I have lived, hiding how much of a totem she was for me, how much of a lodestone she had become for me, even then?

I did not know. The part of me still stuck in my youth couldn’t comprehend the majesty of thought that the older version of myself had brought. I found myself schizophrenically asking myself, “Who is this who feels? What is this? Why is everything so different?”

My younger aspect was having trouble reconciling my mindset. Younger me had woken up with a vague sense of needing to change, to become, to be… and older me had integrated with a full sense of what the changes actually had needed to be, with more perspective on the chain of events that formed my life.

It was overwhelming, but simple: I went upstairs to find a phone, hoping my parents were out – and they were – and called long distance. It was odd having her phone number on hand; the older aspect of who I was couldn’t quite remember even the area code.

She picked up. At her greeting, I couldn’t quite answer – my emotions were too strong, my relief too great. In my older life, I’d not heard her voice for over forty years; in my younger life, it’d not even been a day.

I finally choked out that I wanted to see her, wanted to be with her, not to do anything special, but just to be with her.

It startled Anna. For one thing, we’d been hanging out the day before, and for another, something was off in my voice. I’d always been slightly nonchalant with her; when we were together, I loved the time with her but I was still essentially self-centered; I was with her because it pleased me. But as an older personality, I was more willing to serve – something in my voice communicated that I wanted to be with her for her sake and not mine, I think. To my everlasting gratitude, she accepted and said she’d be on her way.

I was young; I didn’t even have my driver’s license yet.

After that, I lived in a dream, a haze of memory and emotion. I dodged my family, for the most part (which wasn’t difficult, as we lived in the same house but had our own lives), and spent as much time as I was able trying to reconcile who I was, emotionally, intellectually, and physically… when I wasn’t thinking about Anna.

She wasn’t sure what to make of me. From her perspective, I’d gone from a faintly controlling, internally-focused young man to someone who’d discovered empathy overnight. I learned more about her than I ever had known, and I was ashamed of that: I learned that she was a somewhat-faithful Methodist, her family came from the south of Spain, that she wanted to be a scientist. She loved country music – and I learned which singers. I learned her favorite colors, her favorite sports, and that she felt pressured to be a cheerleader while not actually caring that much about it. I learned that she thrived with touch – as did I – and that she saw herself as a little bit unworthy of praise.

I discovered that my younger self was a bit of a jerk for not having known all this before.

Thank God for Asmedi.

Our lives progressed; our relationship was still somewhat Platonic (she wanted to wait until marriage before going “all the way,” and I was fine with that). She was accepted at the local university, about which I was inordinately proud for her. I was watching her blossom into a lovely woman, and I was thankful that I was with her.

Thank God for Asmedi.

I still remembered my old existence: my wife, my sons, my life. I wasn’t sure how to resolve my old and new existences; I figured that my time with Anna would find a peaceful resolution, one without the recurrent pain I remembered, and both of us would find a new equilibrium.

But at the time, I was ferociously happy. No more was I as selfish as I was; my grades had improved, my commitments had improved, and I still had Anna.

Thank God for Asmedi.

One day, I was riding with her father to buy her a Christmas present. I was pensive; I was thinking of my new life and how permanent it seemed. I felt like it was time for he and I to talk as men.

I mentioned to him that I truly loved and respected his daughter – and I did.

I said that I knew it might be a little much, but that I was considering spending the rest of my life with Anna.

I remember his next words distinctly.

He said: “You’re still a little young for th-”

That’s when the truck hit us.

They said that the driver simply ran a stop sign. The impact indicated that he’d been going anywhere from forty to fifty miles per hour. I don’t know. All I know is that I woke up while being pulled from the car, unharmed… while Anna’s father was dead, killed in the initial impact.

Anna’s relationship with me changed after that. I did not attend her father’s funeral, at her request.

Shortly after New Year’s, she stopped answering the phone for me, stopped returning my calls. I was grieving, and trying to respect her grief, and I was unable to cross the bridge of loss. She associated me with the death of her father, and I could not blame her.

We lost touch, just as we had decades before in my real life. But without my own agonizing realization of who and what I was and what I should become, I wasn’t in the right place to meet the woman who became my wife. She’d been a very casual acquaintance for me before we truly met each other – my grandparents knew her family – and when I casually inquired about her, I was informed that she’d married a high school sweetheart.

I was alone.

I called for Asmedi. I called upon God. I called upon a cold universe. There was no answer.

Anna moved on. She met someone while she was at the university. They got married, had kids, and were happy as far as I could see from afar.

I never found anyone to replace either one of them: neither Anna nor my wife. I was able to form casual acquaintances, but no relationships were able to form such that I was truly able to attach myself to anyone else.

I had friends, certainly; I even had the occasional date. But of them, nothing really grew. Nothing could. Even my cats were gone. My heart became a stone, and I waited and watched for Britt’s Olde Shoppe of Ye Antiquities, painfully contorting my life to recreate the circumstances under which I’d found the lamp.

And one day, long after the point in my old life where I’d found the lamp, I came across a man dressed in shadow, who looked like Asmedi had. He greeted me, and said, laughing: Has your first wish met your expectations, O Man? But now, thou hast not rescued me; thou hast no wishes. And it is time for me to go…

Five Laws of Open Source

In order to work effectively, open source as a paradigm has a set of rules. There are a few examples of rules out there, but I think I can help, because I’ve got no problem flouting the rules when I feel like it. (Guess which ones I’m flouting!)

  1. Be thou not a jerk.
  2. Conserve not thy knowledge, for knowledge, unlike material goods, loses value in scarcity and gains value in propagation.
  3. Respect thine ego as it deserves, which is to say: not at all, for upon the shoulders of humble giants dost thou stand, and if afraid to look stupid had they been, their shoulders available for thy standing would not have been.
  4. Don’t talk like Yoda. It violates the first law, geez.
  5. Expect participation to be its own reward.

Be Thou Not A Jerk

This should be fairly obvious. While open source definitely has its share of prima donnas, try hard not to join their ranks; most of the prima donnas out there really don’t have the social capital to justify their behavior.

You really shouldn’t attack anyone. Avoid all ad hominem attacks; if an idea isn’t as strong as it should be, well, say so – and say why – but even a bad idea doesn’t mean that the idea’s author is stupid.

Maybe the idea is perfect for what the author is trying to do, after all, and they’re speaking from their perspective; even if the idea is a terrible one, it’s worth using gentleness.

If forceful behavior is justified (i.e., someone has a terrible idea, it’s been rejected through reasonable explanation, and the author gets abusive or insistent beyond reason), then… honestly? Excommunication in context is the best approach in most cases. Just mute the poor fellow in the context of the project; document the idea and why it isn’t a good approach for the project at large (see the next rule!), and move on.

Abuse is dangerous; it poisons the community, and makes you look bad, even if it’s justified in your mind.

Obviously, trolling is a terrible idea for everyone. I’d say the same for sarcasm, but I’m pretty sarcastic myself and my ego wouldn’t survive that kind of self-examination.

Conserve Not Thy Knowledge

In the Real World, scarcity drives up value. If you’re the only person in the world with a particularly nice guitar, well, that guitar is going to (potentially) be worth a lot, because of scarcity; if anyone else wants it, well, they’ll have to compete for that unique object.

Likewise, if a resource is limited – like, say, oil – people with need of that oil are subject to market scarcity; the less oil that is made available to the consumer, the higher the price that the consumer must be willing to pay.

Knowledge is not like that. If you’re the only person who knows something, that knowledge isn’t worth much. But if you tell everyone, all of a sudden that knowledge is incredibly valuable.

There are obvious retorts to this; if you’re good at something, and people need someone who’s good at whatever it is, they’ll (hopefully) be willing to pay more to acquire the services of skilled personnel. (Look at basketball teams: everyone knows how to shoot a basketball, but the people who are actually really good at it get paid bazillions.)

But I’d say that in open source, that doesn’t work; there are exceptions, of course, but the general situation is such that knowledge is worth more when it’s shared.

If you figure something out, say what it is, from beginning to end. Describe what it is that you’ve figured out, and describe how it works, why it works, where you’d use it. Go overboard. Drown people in your knowledge. Make it so that if you were to be hit by a bus tomorrow (God forbid! … or The Cold Unfeeling Universe forbid! … or whatever) that what you’ve learned could be replicated 100% by someone who could read the documented knowledge you’ve left behind.

It doesn’t matter, really, even where you left it – as long as it’s publicly available. If Google can find it, it’s good. I’d suggest avoiding social networks, though, because social networks artificially inflate the propagation to a specific subset of people (the social network itself), and the idea is to be egalitarian.

Respect Thine Ego As It Deserves

Having an ego is healthy. However, remember that your ego – your pride in self – is best served in open source by remembering that you stand on the shoulders of those who came before you.

You may have reached a pinnacle of knowledge, but in open source, that usually means that you, yourself, took that last step to reach the top of the mountain – while everyone else carried you to the previous position. Everyone else built the ladder that you have climbed.

That’s not to devalue that last step – someone has to do it! But bragging about being the one who made the leap is in very poor taste.

In open source, we all build together.

Someone else (probably) built the operating system you use. Someone else (probably) designed the language you used to you write your project. Someone else (probably) developed methodologies for development that you used. Someone else (probably) defined the environment in which your project will operate.

Very few of us are capable of actually working alone in all of this; we all leverage the information that others have made available.

So.. yeah, be proud of who you are and what you’ve contributed, but remember that it’s another diamond in an wasteland full of such jewels.

Humility is your friend… and it saves you a lot of embarrassment in the rare event that you’ve screwed up. Let pride drive you to do things well, but don’t let pride dictate how you interact with others. Let others sing your praises; about yourself, be silent. (Enough moralizing from the moron at the keyboard.)

Don’t Talk Like Yoda

Look, I get it; Star Wars is fantastic in a lot of ways that matter. (Great special effects, especially for the time; a grand storyline; great ideas.)

However, it’s awful in a lot of other ways: the dialogue, especially when George Lucas wrote it, was terrible, and a lot of the problems had really simple solutions (often as simple as “eliminate the so-called ‘good guys’ and the ‘bad guys’ wouldn’t be all that bad. They’re mostly evil because the filmmakers wanted to have good villains. Except Jar-Jar. He’s raw malice wrapped in a can.”)

And then there’s Yoda.

I won’t bore you with criticism of Yoda beyond his speech patterns, which are… unique, and surprisingly hard to replicate well.

The simplest way to imitate Yoda, though, is to invert the structure of a sentence. Speak with passive voice, you should do! Learn this way of speaking, you should not!

… okay, this rule was me picking on myself, for writing the first three rules in Yoda-speak. Don’t follow my example; don’t use Yoda-speak. Really. (Or: “Speak like Yoda you should not, ha ha ha! Why you are making faces like that, I do not know.”)

Expect participation to be its own reward

This is the hardest one, I think (unless it’s “Don’t talk like Yoda”.)

But this is the one that makes it all work.

When you participate in open source – when you ask a question, when you tell a newbie how to do something simple, even when the docs show it somewhere… you contribute value. You build. You make the world a better place.

If you want more than that… well, you might get it, but you probably won’t. The truth is, that knowledge that you’ve helped improve the world around you is the most likely reward you will see.

Being honest, if you participate a lot, you will probably gain a sort of social capital; people respect that participation, and the value you contribute eventually will come back to you.

I’m proof of that, I think; when someone asks a question, I’ll often try to answer and guide. Sometimes I’m flat-out wrong, and that’s fine; someone more knowledgeable will correct me (sometimes even gently) and then everyone learns… but the key is that I can usually ask my own questions and people will try hard to answer me, because they know that I will share that knowledge to others, and because they (for better or for worse) respect my intentions to participate.

That’s social capital. I wouldn’t know (or want to know) how much social capital I have, nor would I know how to quantify it, but what social capital I do have, I think I can directly attribute to my expectations of reward.

If someone asks a question that I can answer, I don’t expect anything from them apart from their growing knowledge. And I shouldn’t.

Again, sometimes it works differently; sometimes you help someone and they return the favor to everyone’s benefit. Sometimes they pay it back; often they pay it forward (a more desirable result).

But if you act in open source in such a way that you want what you offer paid back… that’s a violation of open source principles.

Don’t do it. Pay everything forward, and expect that from others. Everyone wins that way.

Your Infrastructure Uses Programming Principles Too

It’s important to remember that your development and deployment infrastructure uses programs, written by programmers. Because of that, sometimes things will break, and while that’s not fun, it’s still just programming – report bugs, try to figure out fixes and workarounds, discuss, and contribute, just like you would with any other programming situation.

Of course, if you encounter bugs and refuse to report them or try to fix them or even document them, I’d say you’re working against your own best interests. You’re far better off participating, even if it’s as shallow a participation as “Hey, I found a bug when I …” because that at least helps track the number of people affected by a problem.

And in the end, it’s a programming problem – it’s likely to get fixed, because we, as programmers, like things to work. It’s pointless to just throw shade at systems, regardless of what they are or even if they deserve it.

Problems are just problems. There are solutions.

In May of 2016, a programmer removed left-pad from the the Javascript ecosystem. In the process, he broke thousands of dependent projects that used left-pad.

This was a big problem. (Thank you, Captain Obvious!)

But why is it such a problem, in the grand sense of things? I’d say it was a serious failure, to be sure. But triaging the issue realistically, there were workarounds in very little time (namely, replacements for left-pad) – and it also highlighted the importance of redundancy and licensing in the Javascript ecosystem. Two problems, one fairly limited (the dependency on left-pad) and one broader in scope but normally something people were able to ignore (the availability).

Both ended up being addressed, one way or the other. People learned. People moved on. Sure, there was a lot of griping about a brittle ecosystem, and maybe it was deserved to some degree, but … truthfully, the only comments that would have been worth paying attention to were the ones that tried to fix the problem, or at least acknowledged that it was only a problem.

More closely to home, some of my infrastructure tooling at work failed thanks to a Docker upgrade; Docker itself didn’t fail, but a tool that used the Docker daemon to build images started failing.

One of the comments from a fellow coder: “This is why I don’t like the JVM.”

My response – kept to myself, I hope – was not entirely positive, let’s say. That’s a dumb response. That’s a knee-jerk response; it doesn’t acknowledge that infrastructure tools are programmed, too, and things happen.

Docker changed; the tooling is changing, too; it just takes time. The timing’s inconvenient, sure (I changed the build process to avoid that mechanism), but it’s just a problem. It will be fixed. The bug was reported. Information is being exchanged. The tooling will be fixed, because there’s no way I’m the only person who’s encountering this bug (and I’m not; others have reported it as well.)

But the proper reaction is definitely not to decide that the entire ecosystem associated with what you’re working with is broken; after all, other ecosystems are going to have their own bugs, too.

The solution is to communicate and participate; use a workaround (like I did) if you have to, and sometimes you do, but don’t abandon the process. Report. Heck, patch if you can.