Sunday, 25 February 2018

Musings: On Grief

Grief is unique. Not two persons experience loss in exactly the same way, even when the loss on paper looks the same. For the unaffected, grief has a sell-by date. A moment when the bereaved is expected to flip a switch and snap out of it. To get up and move on. Which is all very well; we musn't spend so much time wallowing in our sorrow that life flows past us without notice. But there's an acknowledgement that we the unaffected must make: there is no switch. You can't turn of years of habit, of care, of companionship. Years of feeling and thinking and sharing and talking. All this time spent being together and with each other can't be erased in a moment. Made to be as though they never existed. You can act to, but the memories remain in your mind, influencing you even when you think they don't. 

There'll be the zombie period. The period when life has a surreal quality to it. You're putting one foot in front of the other. One foot after another. Hour after hour. Day by day. Gradually the grief eases into a tender sadness. You don't notice until it has and you cannot tell when exactly life for you regained its colour.

In all this people. Some will give you good gifts, misguided though their intentions may be. Others will give misguided gifts though they give with a clean heart and pure mind. Some will hope to share your pain sincerely while others will do so for the possible pot of gold at the end. Some become anxious at even seeing a trace of your hurt while others will act like the whole thing never happened and your despair doesn't exist. Despite your grief, your brain has to be on hand to sort through all this. A grounding in life's reality. Ultimately you only have those who share your loss in the way that you experience it. Make the most of that. Cry as you move, but move meaningfully. Neither rushing through so that you don't feel nor taking too long so that grief ravages you beyond recognition. Live so as to make the best of loss, not because loss is good, but you have sought to find the good therein.

Saturday, 3 February 2018

To the Women Who Wish To Marry and/or Have Children: A Letter

Dear Wonderful Woman,

You are brilliant. You are valuable. You matter. The life you live matters. You have the right to make the most of the potential you have inside you. To be truly alive. To be happy. To enjoy being on this earth with all its joy and sadness. I know living in a patriarchal society means that your life hasn’t been special except to you and those that love you, of which I hope there are many. Your life has been determined by the things you have or haven’t done. The things you should or shouldn’t do. The facts that just are and you must never question. 

Did you do study well? Did you avoid boys? Have you slept with the right number of men? (Hint: not none is never a good answer, no matter how responsible you were.) Do you know that ‘No’ will sometimes mean 'convince me', no matter how many times or ways you say it? Is it always in your mind that should you ever be assaulted, you shall be scrutinized for why it happened and not your abuser? 

Do you understand that men are inherently superior to you just by existing? That should you and your partner have a child, and for whatever reason separate, your partner gets a do-over but you don’t? That you’ll be called spoiled, a failure, while all he has to do is remarry to prove that he can commit. After which society will play the game of ‘it’s not him, it’s you’. Do you have a career that looks like a career but doesn’t threaten anyone who wants to marry you? Do you know how to do all the duties of a woman: clean, cook (excellently mind you. You had better be able to handle your traditional foods without breaking a sweat), wash, iron, and arrange clothes? 

I could go on, but you get the picture. The hypocrisy of it all. Try not to buy into it, all these things that you should (or shouldn't) do, be or have. Or think. You won’t be blameless of course. You make mistakes same as the guys. The only thing is that you get punished twice: once because it is wrong, second because you are a woman. Try not to get confused playing the sympathy or victim card simply because you look forward to that profit. Don’t be that lady who sits with a guy in a posh place and we can see that you have no chemistry; you just want a blank cheque and the easiest way to get it is to give this guy your company. 

Try to be self-sufficient before you think about getting married. Minimizes the chance that you marry someone for what they have rather than who they are. It’s okay to say walk away if you don’t think that the relationship is a good one. At any time. Biological clock notwithstanding. If you plan to have children, let them be born in a home with a partner you are sure you love. 

I don’t know if the right one will be special. If you’ll actually want to have children. It is okay if you don’t want to. You’re not an endangered species. You don’t have to compulsively breed. We have a population under 20 here in Uganda that will only increase. You would be better served helping those around you take care of their own children. They could probably use the help 😉. And you are valuable still, with or without them. The children and toxic people going on about what you're not doing right. Anyone who disagrees can always find someone else and neither of you should take it personally. 

From a purely biological perspective, there is really no need to worry. If he is that good, plenty of women will notice, marry him and bear his children. And since you as an individual are already not particularly interested, I’m sure that would come as a relief. Sometimes we pretend, we lie to ourselves and to someone else. If for example, you began to seriously consider the option of tying up your tubes (or him having a vasectomy) as a means to end the possibility, I suspect you and your partner would discover that one (or both) of you care(s) more for having little ones of their own. 

In the unlikely event that there are those who would try to convince you regarding the attractions of child rearing, suggest the following to them: creation of a trust fund for the children they are asking you to have. This fund will cater for the child’s needs from 0 to say their mid-twenties, give or take the child’s economic prospects. Certainly it should leave you with enough money left over to pick the child up should they fail to take off as self-sufficient adults. Having seen how beautiful a mother (or father) looks and is when they are genuinely interested in raising children of their own, it seems better when a person undertakes it because they are genuinely interested, rather than through societal/spousal influence. 

Should you feel and think that you are the one to do it, well I guess that means no one should ever worry that you think anything less than very highly of yourself 😄. It is also true that the issue of children is complicated; I once told a friend that the ultimate breakup question is “Do you want to have children?”. If you and your partner are on opposing sides of the divide, it tends to force contemplation of where the relationship is going far earlier than it would, if say, we assume we are on the same page on the matter like we are on everything else. 

I’m sorry if I come across all wrong, as one song lyric goes, but I think you’re beautiful. That it is such a waste of your life to do things because people say you should do them or because you feel it is your duty to do so. Not knowing anything better is fine; we aren’t born with knowledge. We acquire it, over time and through means that vary in their comfort. Do not become attached to a mistake simply because you spent so long making it. Do not settle when in your heart, you feel a longing that just existing can’t meet. Follow your heart and use your brain. Die with regrets you can live with.

A Friend.

Thursday, 7 December 2017

A Musical Musing

So this is a blog post about some songs that have been stuck in my head lately, that are on my playlist, and that I found myself thinking about why I enjoy them.
Without further adieu, here they are.

1. Both Sides Now - Joni Mitchell

A beautiful musing on love. The experience and wisdom the years implied in the song's lyrics come through in Joni's voice and in the accompanying instrumentation of the song. Lovely for when you just want to reflect.

2. LoveStoned/I Think She Knows - Justin Timberlake

When I was younger, I was all about how much noise a song had. The upbeat tempo that kept you dancing. So the 'I Think She Knows' interlude didn't interest me; it pretty much went over my head. Listening to the song now, I agree with John Mayer; the 45 seconds or so of 'I Think She Knows' really are sonic bliss. At least to me. Your mileage may vary 😎.

3. She Has No Time - Keane

A lovely song for when you wonder so much about what could have been that your heart aches and you almost want to curse the day you met that someone special. 

"You think your days are uneventful / And no one ever thinks about you ", "You think your days are ordinary / And no one ever thinks about you / But we're all the same" 

We all feel this way at some point. We think we must be boring, unexciting, uninteresting, somehow inherently below par. Not good enough. The closing line reminds us that before we throw that pity party, it's not just us who feel strangely uninspiring; we all do from time to time. It isn't the reason why someone would leave. 

"Think about the lonely people / Then think about the day she found you / Or lie to yourself / And see it all dissolve around you" 

Remember that there was a 'before', a moment when you'd give anything to feel what you felt, to have that experience of cherishing someone however brief. They also tell you that you have a choice: you can choose to be grateful, to keep the memory of that moment as something wonderful that happened and you are happy that it happened, or you can ruin it with sour grapes, and say to yourself: "It didn't matter much" 

What you had was beautiful, accept it and move on. 

4. Happen - Emeli Sande

I remember when I first listened to the song, Emeli's soaring vocals caught me offguard and made me realize that I had missed half the song already. I think of this song as poetry made music, if that makes sense 😉. 

There are a million more dreams being dreamt tonight / But somehow this one feels like it just might / Happen / Happen to me

I won't try to explain. Just listen to the song.  

5. Same Ol' Mistakes (cover, orig. by Tame Impala) - Rihanna

I typically try to listen to the original of a song, if I like the cover. I make an exception for Rihanna because she does a good job with this song. Honestly I could unpack this song for days. So below are my favourite (lyrical) bits.

I know you don't think it's right / I know that you think it's fake / Maybe fake's what I like / The point is I have the right

Very true. 'Nuff said :D

Man I know that it's hard to digest / But maybe your story / Ain't so different from the rest / And I know it seems wrong to accept / But you've got your demons / And she's got her regrets
Man I know that it's hard to digest / A realization is as good as a guess / And I know it seems wrong to accept / But you've got your demons / And she's got her regrets..

It is hard to take when you're made to consider that maybe, just maybe, you're not alone in what you feel. That it has been done to death by other people. And the only reason why you think it is special, is because it's your first time or you have too much hope or whatever. Sooner or later, baggage comes into the picture. What you were running from catches up with you. The circle of life, or karma, if you will.

Thursday, 13 July 2017

oVirt Documentation: Starting from Square One

Two days ago, I had to start from scratch. Not because my machine crashed or some libraries simply refused cooperate, giving each other that special form of evil eyes that means everything changed but it just has to remain the same. I started from scratch because I discovered that my initial budget of 30GB worth of space was just not going to cut it for what I wanted to do. I had stumbled upon two facts regarding Docker containers: one, disk space should not be a problem for you, and two, bandwidth should not be a problem for you. The second I was prepared for, the first I had not anticipated. 

You see, one of the first Docker images I had pulled was PostgreSQL. Hardly large, less than 300MB. So that had more or less set the tone for what I thought I was to expect from Docker images. Alas, that has not proved to be the case. As part of my work, I was to get images for Ceph (ceph/daemon), Gluster (gluster/glusterfs), FreeIPA (freeipa-server/freeipa-container), and ManageIQ (manageiq/manageiq). 

Why were the images much larger? Well the idea is that a Docker container be self-sufficient. So in your Dockerfile (the file that specifies what your image and thus what your container will have) you need to specify everything that the container will need to run the application as comfortably as possible, without anyone, anywhere worrying about things going wrong. Of course the images from which we derive the containers do not have graphical environments; what makes them large is how much software is required. And if you need libraries upon libraries of stuff, then... You get the idea. 

It wasn't such a bad thing to start afresh though; I got to install the correct version of Docker for CentOS. One of the challenges of using Linux distributions that are made for use on servers (Debian, Ubuntu, CentOS and the rest of the Enterprise Linux family) is that frequently when you just type in `apt install <package>` or `yum install <package>`, you end up with a legacy package rather than the new version. So on CentOS, the package `docker` refers to Docker from back in the day. Its re-branded self is now split up into two versions: Docker CE `docker-ce` (community edition) and Docker EE `docker-ee` (enterprise editon). Something I figured out in a rather roundabout way the first time around. 

So far, I've pulled all my images and updated all my stuff. What comes next? Fitting it all together. My plan is to start with PostgreSQL. As I go along, I hope to explain how each of the containers I'll be running fits with oVirt. 

Cheers and thanks for stopping by!

Saturday, 1 July 2017

Working with Open Source Projects: oVirt Documentation

So from now until the end of August I'll be working on documentation for oVirt. In particular I'll be documenting how to use containers with oVirt. Here we go...

What are containers?
Indeed, what are containers? One analogy I could use is food and how we carry it. When eating food, we use utensils to eat, namely forks, knives, and plates. When we're at home, we have access to these very easily. It is when we decide to pack food for a journey that we have to decide what to carry on the basis of ease and comfort. So we get a bag that will carry the disk containing the food as well as the tools we will use to eat (forks, knives, and/or spoons). A container in tech terms, is a lot like the bag; it carries the application (food) and the environment it needs (the forks, knives and/or spoons). 
Containers are used most commonly with Docker and that's what I'll be using as I work on the documentation. Docker is available for Linux, MacOS and Windows. Depending on your version of MacOS or Windows, you may use boot2docker or you shall be able to run Docker natively, without any intermediaries. As far as I know, Docker from its initial stages has always been run natively on Linux, so your installation should relatively painless on this platform. A note regarding running Docker (and by extension containers) on Linux: you need elevated privileges. So either you run Docker using sudo or you add your normal user to the docker group. Docker containers are setup by running docker pull <image-name> and docker run <container-name>.

What is Docker?

I’ve mentioned images in the last paragraph without saying how it all fits together. The idea about containers is that they are self-sufficient, like our food container with utensils in my-not-so-very-good example above. Containers in Docker are formed by utilizing a Docker image, which in turn uses a Dockerfile (yes, apparently convention dictates that I spell that as one word. Not my fault :D).

A Dockerfile is saved as `Dockerfile` and basically contains instructions on how to build a Docker image. A Docker image contains whatever the Dockerfile specifies it should have. Usually this includes an operating system, some software libraries necessary for the application inside the image to run and the application itself. The container I was talking about earlier is an instance of the image. Now I didn’t have to actually make a Docker image myself because my use case is covered by the images at Docker Hub (link here). A Google search for ‘<application-name> + container’ should point you in the direction of where you can find Dockerfiles and images to build a container of your choosing. Docker has some excellent documentation on how to build your own Docker image using a Dockerfile and they have an example using PostgreSQL that is well worth looking at. 

What is oVirt?

oVirt is an open source project started by Red Hat. Red Hat is well known as being behind Red Hat Enterprise Linux, a distribution of Linux that is used in organizations that want to use Linux and have professional support doing it. It also supports Fedora, which is another Linux distribution on which Red Hat Enterprise Linux (RHEL for short) is based. Fedora is more bleeding-edge; RHEL is stable and has well tested features. 

What will I be doing exactly?

PostgreSQL, Gluster, Ceph, OpenStack, Glance/Cinder/Neutron, ManageIQ, and FreeIPA. These are all software that can used alongside oVirt or are actually dependencies of oVirt (PostgreSQL and Gluster fall into this category). The challenge here is that when developers create applications, these applications have conflicts that aren’t easily resolved. Deploying them on separate machines and then linking them is one option, but we would want a solution where they can all be deployed on one machine. Which is where containers come in. A container frees us from dependency hell (a situation where different software applications require libraries that are incompatible with each other and thus cannot co-exist on the same operating system) since containers are isolated from one another as separate processes and are only linked to access a service provided by that container e.g. PostgreSQL’s database.

My job will be to document how this can be done without too much head scratching and hair pulling.

My next post shall be about getting the PostgreSQL container to work with oVirt.


Sunday, 28 May 2017

My Open Source Journey: Working With Open Source Projects

Hello people. Long time, no see. For those of you kind enough to wonder what I’ve been up to, here we are. I’ve been contributing to open source software or at least trying to, with varying levels of success. Now if you’re asking what open source software is, please read here for the thorough definition that I, in the interest of remaining on topic, cannot give you. For the purpose of this post, I’m assuming that you’ve read this and will keep it in mind as we go along.

So, to return to what I was saying earlier. I’ve been trying to contribute to open source software. I had wanted to for the longest time. Anyone who’s known me long enough, knows that I’m a huge Linux fan. Using Linux isn’t necessary to contribute to open source software especially if your skills are non technical. You can organize events, share the software that you love with friends and family, and even donate to the cause. So I must arrest you with a disclaimer: this particular open source contributor is of a technical bent. Thus this post will be biased towards contributing as a technical person. However if you’re non technical and you’re interested, I think this guide will help. 

Technical and still following along? Thank you for sticking with me. 😎 Now as I was saying using Linux isn’t necessary but it helps. Primarily because if you use Linux long enough, you begin to get into the techie bits. You find yourself asking questions like ‘Why isn’t X working?’, ‘I got this error message, what does it mean?’ You spend time trawling through forums, asking questions on IRC and mailing lists, looking for solutions.

Through this you (hopefully) build up good habits when interacting with other open source software users and developers (the people making and maintaining the software). You learn empathy, respect, how to ask the right questions (a good and humourous guide is here), how to keep track of and find error messages, and in time, what these error messages mean and what they could possibly point to as being the problem. You also learn how to read documentation (RTFM is commonly expanded as Read The Fine Manual, and if you’re being told this, don’t feel too down; it usually means that your problem is fairly simple or the people you're interacting with aren't very pleasant. It does happen, though rarely. The other form of this is ‘Google it’. If you insist, you’ll get a LMGTFY link (LMGTFY = Let Me Google That For You). 

These skills can be learned via using a programming language or through using a particular piece of software, open source or otherwise. Cue personal biases here; I learned this through open source software and mostly through using Linux. Your mileage may very well vary 😉. If pushed to recommend anything, curiosity and a hunger to learn go a very long way. I have had many headaches, and many frustrations in my journey using Linux e.g. at some point I had to simply get used to my computer crashing every now and again. Lesson? Make sure I have a very, very recent backup of my data.

Reasons why I contribute
I love the idea of open source software and I want to help. It’s a mutually beneficial transaction: you develop your coding and/or documentation skills, and the project gets one more contributor. Also, I must confess I’m not very good with doing personal projects. I don’t have very fond memories of having to do them while in uni. 

I think projects are a good idea, since you have something to show on your portfolio, but for me the challenge was that there was a huge disconnect between what I wanted to do, the skills I had and the time available. It wasn’t pleasant for me both psychologically and emotionally. So open source software works for me. It has an existing codebase so I don’t have to think about what to create (I do hope not to remain this way forever obviously, but for now it will do 😉), and it builds on the skills I acquired through using Linux (let’s just say I found sorting out my computer problems very...absorbing 😉)

People have varying and diverse reasons for contributing, from wanting to see a particular feature implemented (yes there are such gutsy people out there and we can be them! 😀) or having a particular bug fixed (ditto). Or they like the software but aren’t too impressed by the state of the documentation and so they set out to right that.

Whatever your reason, I encourage you to do your best, ask for help and/or clarification, and always remember that the people you’re interacting with are humans too. It’s very easy sometimes to become entitled regarding open source software and I would encourage you not to be that person who from the first sentence shows that they are looking for a babysitter and has no plans of doing any real work. Try as hard as you can not to be them. I have asked questions about the obvious, said something that in hindsight was really silly to say, and complained about a problem when the fault lay on my end and not that of the software, so I know you can’t be perfect. Just do your best. 

How do you choose your project

Just to be clear, it isn’t weird if you don’t immediately find a project that works for you. You may have been searching a long time. Have faith, you’ll find one 😊. Just keep your eyes open. If the above story inspires you or makes it look a little less daunting than it did before, here are some tips on picking a project:

1. Choose a project you like.  
Honestly, don’t get into a project because it is cool to do so or whatever. 
Because when you’re in the thick of things, what will sustain you is your liking (eventually and/or hopefully, love) for the project, not the project that is ‘cool’. (though that sometimes helps 😉). 

2. Choose a project that looks interesting to you 
By interesting, I meant that you've used it before and found yourself curious about its inner workings or you like the idea behind the project and want to learn more. Sometimes you like a project but its not for you at that particular moment in time. You may be learning Python and the project you’re curious about uses Ruby. 
If you’re interested in learning Ruby too, it’s great for the future but not right now. If you can, find other ways to contribute to it or keep an eye on it for when you’re ready.

Combining both of these is great because it means that you’ll become a long-term contributor to the project and you’ll be able to really benefit both the project and yourself. Having at least one of these is good because one tends to follow the other i.e. if you’re interested, there’s a chance you’ll end up liking the project and if you like the project, you stand a good chance of staying interested. Make sense? No? Well, you get what I mean. 😀 Seriously, if it keeps you up at night thinking (positively, of course), makes you excited to get up in the morning (or at least very willing 😉) or stays in your head throughout the day, chances are it’s the project for you.

How do you find your project? If you're not already using open source software, try searching GitLab and GitHub for interesting projects. GitHub can sort projects by language and if you wish to see the license, there's a file in the project's repository (where the project stores their source code) or looking at the README file will also work. 
Starting your own project is also another option 😉 

Preparing to Contribute 

Now that I’ve left you feeling inspired and excited to go work on your very own open source project (you can start your own by the way), let me hold you for a moment and talk about laying the foundation. This is as follows: 

  1. Know the project’s Code of Conduct.
  2. Know the project’s aims and goals.
  3. Know how to prepare your computer to contribute.
  4. Know how and where to get help with any issues to do with the project. 
Does that look daunting? No worries. The above basically boil down to first reading the project's documentation before interacting with it. 

Knowing the project’s Code of Conduct 

This essentially means treating others the way you would want to be treated, remembering that the people you’re interacting with are human beings just like you, and never saying something online that you’d never even dream of saying in person.

It means being respectful at all times, when you agree with the person, and when you disagree with someone. It means aiming to be your best self: honest and sincere about both your flaws and shortcomings as well as your talents and gifts, being responsible with them and apologizing for when either of these get in the way of your work or the work of others on the project. It means trying very hard to be objective, even when you’d much rather be biased. A project’s code of conduct also provides ways for you to seek help in the event that you are harmed by a fellow contributor’s behaviour, regardless of who they are in the project.

Knowing the project’s aims and goals 

This is important especially when there are different ways to do the same thing. Sometimes a project elects not to go down a very obvious path and instead chooses a different route e.g. opts not to implement a certain feature. If you’re not very well versed regarding the project’s aims and goals, and you like the feature, it can be very frustrating to see something that you think is good not implemented, even when it seems there are willing contributors who can make it happen. Keeping the project’s aims and goals in mind helps you keep things in perspective and helps you remain on the same page as the developers and the leaders in the community who do the hard work of managing the sometimes not-so-fun activities that affect how a project is run.  

Knowing how to prepare your computer to contribute

This is very necessary to do. If you're planning to work on documentation and/or development of the project, you’ll need to do this. This usually involves making sure you have the right system (development can be resource intensive and/or platform specific, depending on the project), the right configuration and/or tools for what you’re planning to contribute to and how you’ll be using them, knowing where to download the project’s source code, how to compile it, and what to expect while doing this. The more time you invest in doing this, the more difficulties you spare yourself later on when you begin work.


Knowing how and where to get help

If you still remember me randomly throwing the words ‘mailing lists’ ‘forums’ and ‘IRC’ and could not for the life of you figure out what I meant, here’s where I explain.

IRC stands for Internet Relay Chat. You’ve used WhatsApp, right? Or Facebook Messenger? Or Google Hangouts? Well IRC operates on a similar principle but is far, far more basic. The idea is that you connect to a server via an IRC client that is on a particular network. Most open source projects can be found on the Freenode network ( or OFTC ( Other projects may have their own server altogether (like Mozilla which is at or that of GNOME which is at Some networks like OFTC and Freenode have web interfaces (e.g. for Freenode and for OFTC
) that you can log into using just a browser. Here’s a good guide on how to get started with IRC. Good IRC clients to begin with are Pidgin and HexChat, which work on Windows, Linux and OS X. 

After connecting, you join a channel that deals with the project you're interested in e.g. on Freenode, you could join #kde and #kde-devel. Remember to register the name (known as a 'nickname' in IRC terms) as there are quite a few channels that won't allow you to participate if your nickname (nick for short) isn't registered. Like I said, you need not use your real name; any name you feel comfortable using will do.  
Forums are simple. You register with your name, e-mail address and password, confirm your registration (steps are usually sent via e-mail) and then proceed to  login to the forums using the details you provided during registration. Look for the areas in the forum relevant to you and what contributions you want to make to the project.
Now on to mailing lists. Ever seen a site asking you to give them your e-mail address so that you receive updates or a newsletter? Mailing lists are like that. Each project that uses a mailing list has a link directing you to where you can subscribe to them. You choose which mailing lists you wish to receive updates from. If you're planning to contribute, you would subscribe to the users' mailing list, then depending on what area you'll be working with, you'll subscribe to other mailing lists about your area of interest e.g. development, documentation, design and so on.

You can choose between a weekly digest, where you receive all the e-mails of the week or have the latest e-mails of the day sent to you daily. This is where commitment to the project comes in: if you're receiving emails that you're beginning to find a nuisance, there's a good chance that the project is not for you or e-mail is not your thing. Good explanations of mailing lists are here and here.
Whatever the means of interaction, introduce yourself and state what you’d like to do. Endeavour to show that you’ve read the documentation and ask for any other helpful information the community can provide. By the way, this is a good time to mention that you do not have to use your real name except in cases where it is required e.g. becoming a Debian Developer. If you’re a community contributor, then your real name is usually not necessary. So pick a name you like and register with it. But pick a good one, one that you wouldn’t be ashamed of should we somehow get to know your real identity 😉. 



I could go on for pages and pages about this, but there are great resources out there, and I'll try to help you out if you ask nicely in the comments 😊. My next post will be about the projects I'm working on at the moment. Cheers!

Saturday, 1 April 2017

Thinking Out Loud: On Children

No matter how we try to make sense of it, having children is irrational. It defies what we conceive as logic. Something that we won't ever admit to ourselves. Especially since we almost always view childbearing and raising through such terribly rose-tinted glasses. To have someone totally dependent on you, both emotionally and physically, for their every need. For whom you shall be by turns criminal and detective, defender and prosecutor, judge, jury and accountability committee. Despite the fulfillment we find in seeing a child at peace, loved, well fed, and clothed, knowing it is our hard work that has made this possible, it is not enough to look at this (as a by-stander) and say, "Yes, I would love to have children, if only to have this feeling". The demands and the joys do not balance out as often as you thought they would and it is a while before you break-even.

If you stopped and looked at it all: the sleep deprivation, worry, anxiety, and tears; the joys, hopes, longings, and desires that you pin on your child. The pride, contentment and satisfaction. The potent emotional cocktail that you take every day you're with them. The changes that happen to you and continue to happen, and you don't know whether to resist or be swallowed whole. The struggle as you grapple with growth that leaves you outwardly unchanged but separates you from the years of your youth. Life's questions now demand certain answers. No longer can you leave contradicting facts to remain easy bedfellows; every moment, without knowing, you are choosing. Choosing the story you will tell. The narrative you will shape them with. We want to give them certainty. Security. We want them to learn the lessons without paying the price. Somehow. Or if they must suffer, let it be when our eyes are closed and our hearts are numb, and it is beyond us to feel anything.

A better way is acknowledge the having of children as a biological drive. Trying to come up with reasons for it is futile. We want to have children because the genetic material that we carry wants to live. To survive. To make as many copies as it can of itself. In a sense, it longs for immortality. And the entire procedure we have come up with for having children: find a suitable mate, make a home in which your children can be raised, and then have said children, simply enables our DNA to have a higher chance of surviving (your children growing to adulthood) and making more copies of itself. Do not attempt to rationalize, come up with reasons. To sugercoat. Acknowledge the madness of it all. The awkward balance you're trying to keep. Take it one day at a time and do your best. Mourn who you used to be and accept what you are becoming. The two go together. They both live inside you.

I will end this with a quote from Khalil Gibran's wonderful book, The Prophet:

"Your children are not your children. They are the sons and daughters of Life's longing for itself. They come through you but not from you, And though they are with you yet they belong not to you.

You may give them your love but not your thoughts, For they have their own thoughts. You may house their bodies but not their souls, For their souls dwell in the house of tomorrow, which you cannot visit, not even in your dreams. You may strive to be like them, but seek not to make them like you. For life goes not backward nor tarries with yesterday..."