Tuesday, December 11, 2012

To all the ladies I had non-consensual sex with, I'm sorry

Two things before you throw that stone: first, you might want to back away if you're a lady. There are things I will mention you may not be comfortable reading. Second, I haven't ever raped anyone. So take a seat and allow me explain.
I was having a conversation with a friend (below) about the love of God, and how God's idea of love can be radically different than ours. And as I said that, I realized that I'd been guilty of non-consensual sex with people I've seen, at least, if what Jesus says has anything to do with reality.
I have had this conversation in my head with Jesus in a thousand and one different ways, with just as many different arguments. "But she's hot. Look at that body. You made that body. And look, I have a boner already. What am I supposed to do with it? I'm just looking, not touching. Heck, you made me. You know what turns me on, and I'm majorly turned on here. Besides, body no be firewood na."

You know what's really galling, though? No matter what I say, He still just looks at me with that "are you done hedging?" look. I have never been able to get Him to excuse the lust. Yes, that's just what it is: Lust. Degrading women to just tits, thighs, asses and a hole between their legs since whenever (that was my second choice of title for this post, by the way).

And you know what the worst part of it is? Lust cannot be satisfied. Never. It always wants more. Real women will, at some point, never be enough, no matter how many one ends up sleeping with. And every guy who indulges his mind in sexual fantasy will eventually have issues relating with real women.

Maybe Jesus did know what He was talking about after all. Wish I could write more, but my sleep-deprived brain is longing for a bed. Later.

Friday, November 23, 2012

Vacancies at the Empowerment Centre

I received an email from The Empowerment House about vacancies, and decided to share wholesale. I am not affiliated with The Empowerment House, and have never attended any of their programs. I wish any applicants the best; the application deadline expires in a week. The email content follows.

The Empowerment centre is a Christian Ministry which includes KA TV (DSTV channel 345) which aims to revitalise the Christian TV experience in Africa by showcasing wholesome inspirational, educative, informative and entertaining programmes for the whole family showing various genre of programming including Christian reality TV shows, Musical shows, Drama, Talk shows etc. It also includes Empowerment house a church ministry with a vision to empower lives and transform society in accordance with Acts 1:8 and Empowerment college, a life changing school of Leadership & Management, Ministry, Business and Marriage.


  • Chief Administrative Officer
  • Front desk Executive
  • Personal Assistant to CEO
  • Media Executive
  • Business Development Manager
  • Head of College
  • Office Assistant
  • Studio Production Executive
  • Driver
  • 3D/2D Graphics Artist (Still, Motion & Website)
  • Security Operative
  • Audio Production Executive
  • Editing Executive
  • Transmission executive

The Empowerment Centre recognises that the quality of its staff and their contributions represent its most significant asset in fulfilling its mission. We wish to attract staff who are keen to join and who, once here, will feel proud to be contributing to our success. In return, our aim is to ensure that the career and personal potential of staff is rewarded, recognised and developed in a properly resourced and supportive environment.

The Empowerment Centre considers all our staff as Christian ministers using their skills to minister in the 21st century world, only spirit-filled Christians who are ministry inclined need apply. You should also note that The Empowerment Centre is affiliated to a church ministry. Successful applicants must be comfortable with the ethos of the ministry and are required to be part of the ministry, anyone who is not able to meet this requirement for any reason need not apply for any of the positions.

Interested candidates should request for detailed job description and application procedure for the interested post from careers@empowermenthouse.com, please state interested post in email as application procedure varies for different posts.

Only Applications sent in the required format will be considered. Completed applications should reach us by 5.30pm on Friday, November 30. No telephone job enquiries please, Please note that only shortlisted candidates will be contacted. Location for all job vacancies is Lagos and Salaries are negotiable (Depending on experience).

Friday, November 09, 2012

Mommy's kiss

Two days ago, it seemed my little brother was not well. Today, he was rather cranky, and after my sister left for work this morning, I found him crying on the staircase for her and for his mother. I was already carrying his baby brother, but managed to carry him as well and get downstairs, where his mother was. Unfortunately, I misjudged our collective width and he hit his head on the door and wailed a little louder. Yet, when he saw his mother, he got quiet really quickly.

No doubt you've had such an experience growing up — maybe not with mommy, but with someone else — someone whose touch, whose voice, whose words — any, or all of these could calm your troubled heart and reduce even physical pain to bearable limits. Maybe even now, you still have such people around you, even though you're grown and have learned not to cry in the open (for the most part, anyway).

I never really realized it before now, but hurting people need more than just medicine. They need care. I was wondering what it would be like to have a major illness and have the best medical treatment delivered with surgical precision and in a cold, detached manner. I have no idea what it would be like, but I don't want to experience it.

The human spirit can endure a sick body, but who can bear a crushed spirit?
— Proverbs 18:14, New Living Translation

Keith Moore, in his message series A Fighting Spirit, talks about the importance of a fighting spirit to recovering from life-threatening illnesses. I do not seek to downplay the importance of a fighting spirit, but care can stir up or strengthen a person's fighting spirit (please see my previous post, Love's Roof, for an example). That's what happens when Mommy comes with a kiss and a Band-Aid for a scraped knee — that kiss and hug will do wonders beyond what just the Band-Aid would do.

Am I advocating for dumbed-down, watered-down truth? No. NEVER, EVER compromise on the truth of God's word. But where your doctrine and your preaching, your facts and figures and proofs from scripture fail, maybe a kind word or two, a hug and a listening ear will accomplish more for healing broken hearts and bodies than you could ever think possible. And the more the hurt, the greater the need for that care.

Thursday, November 08, 2012

Love's Roof

Love bears up under anything and everything that comes, is ever ready to believe the best of every person, its hopes are fadeless under all circumstances, and it endures everything [without weakening].
1 Corinthians 13:7, The Amplified Bible

I don't remember when exactly, but I was lurking around the interwebs and found Ann Voskamp's post on how to make any relationship better, and in it, she talks about the Greek word stego used in this verse. I remembered it today, because I saw a tweet by Pastor Poju Oyemade of Covenant Christian Center, and I realized just how apt the word, roof describes what love does to us. Love's a roof, a covering. Not when you love, but when you believe you are loved, or to use very bad English, you've the lovee, and not the lover.

A few weeks ago, I had a chance to talk to someone, and they were going on and on about my happiness, about how I deserved it and how it mattered, and I really wasn't in the mood to listen to them. One thing led to another, and they said that in my last relationship, I was happy. I discarded the idea (and the conversation), but I recalled that a few months into that relationship, someone else said they saw me smiling a lot more, and that they were sure that my girlfriend was good for me.

Looking back, I realize that I felt someone special loved me, and it was sufficient to change my outlook on life. My circumstances weren't that great, but they felt bearable because I believed I was loved. I definitely went overboard in making that relationship my primary source of happiness, but that was my safe zone, my hiding place.

The KJV renders this verse: Beareth all things, believeth all things, hopeth all things, endureth all things.. Looking at the language, it seems that it's implied that storms will come: if something is going to bear (up under), then definitely, something's coming up top. This points to why I caved in when that relationship ended: the roof that was taking all the hits from the storms I was weathering was removed, and I didn't have a fallback roof.

This week, I read a tweet that reminded me of God's love for me (1 John 4:16). For some reason, in a world that went crazy and refused to make sense since, that has become a bastion of hope. When I'm tempted to look back at what I've lost, and despair things will ever get better, spending some time to think about God loving me has been my new crutch, and it's served me better than pornography or masturbation ever did.

I haven't arrived, but I've left. Perhaps sometime soon, I will really laugh without reserve, not because I'm trying to distract myself, but because I'm healed, because I know that God loves me.

I'm glad I've a new roof. Beats getting exposed to the elements.

Sunday, November 04, 2012

Ignorance Required

For a couple of days now, I've been playing around with OpenLayers. Since it's been my first foray into anything related with online maps in general, I've had to pick up things at a much slower pace than I'd normally be comfortable with. One of the things I needed to do was to find out how to create a color-coded map, like this.

There was just one problem: I had no idea what that kind of map was named. And I can be really weird (just silently pass by) about being precise about things like names and spelling. So, I logged in on IRC and asked something like: hello. let's say i had a map and wanted to color regions based on some characteristic (average household income, for example). what's this called, and how may i go about doing this? in both the OpenLayers and Python channels on Freenode (#openlayers isn't very active in my opinion, but someone in #python might have done something similar).

After about 20 minutes with no answers, I realized that I was letting my desire to be on target (so know you know I can be perfectionist) manifest as a fear of looking like an ignoramus (yay! I know long words!), and for me, there are few things I'm probably scared of like being made to look like a fool, either by myself, or someone else. I decided to take the risk of looking like an idiot and google openlayers color coding. from one of the links displayed, I saw the word choropleth in the page text and so googled that. It turns out (like my machine learning lecturer is fond of saying) that was exactly what I wanted to do, and googling openlayers choropleth has, as is usual in today's world, overloaded me with information. As an added bonus, I found out about Natural Earth, which will probably be a very useful resource in future.

In the style of Box of Crayons' Great Work Provocations (a short, daily — working week only — newsletter on doing great work and which I highly recommend), how are you allowing a fear cripple your development? What can you embrace with courage today?

Have a great week ahead.

Thursday, November 01, 2012

Stand Out from the Crowd

I was lurking around as a guest on one of the forums Google leads me to, and I saw this post and decided to reproduce it wholesale here (without permission). Let's discuss this (Twitter, G+, comments) after the jump.


'Don't become so well-adjusted to your culture that you fit into it without...thinking...' Romans 12:2

A man walking into a bank held the door open for the lady behind him. Instead of thanking him, she said, 'You don't have to hold the door because I'm a woman.' Smiling, he replied, 'I'm not doing it because you're a woman, I'm doing it because I'm a gentleman.' As believers we do what we do because of who we are 'in Christ', not because of how society thinks we should act. John says, '...The Holy Spirit...lives within...so [we] don't need anyone to teach [us] what is true...' (1John 2:27 NLT). In his book 'Hope Again', Chuck Swindoll says: 'In the Marine Corps...our troopship carried us...onto Japanese soil...For many of us, it was our first visit to a foreign country. We were surging with excitement...Our company commander called us together...and...said..."Remember, for the first time in your lives, you're the foreigners. This isn't your country or your culture...you're the minority. These aren't your fellow citizens; they don't speak your language. They know nothing of your homeland except what they see in you...Act in a way that the Japanese people will gain a good impression of your country."...As Christians,...our citizenship is in heaven...We belong to the kingdom of God...We need to be on our best behaviour, otherwise people will get a distorted perception of what our homeland is like...Our earthly culture is pagan to the core...God left us here for a purpose...to demonstrate what it's like to be a member of another country, to have a citizenship in another land, that we might create a desire for others to emigrate.' Think about it!

Bob Gass

Edit: I checked out Bob Gass' site and realized it's today's devotional.

Sunday, October 28, 2012

Microsoft sends localized SMS, but in the wrong language!

I was fooling around with my Hotmail account since I saw I could try out the Outlook.com preview (I didn't notice it even though it had been there for three months), and somehow got to a point where I was prompted for a code that would be sent via SMS:

I did get the SMS — it was a bit of a pleasant surprise to get it, as I was wondering if I would get it at all. The only problem was it was in Hausa, which I'm not particularly fluent in:

Maybe Microsoft should have identified that since I use the Hotmail service in English, I'd want to read texts in English too, but I think it's an excellent idea to attempt to localize such services.

Oh, and even though I'm a Johnny-come-lately, the Outlook.com interface is really nice:

But I guess it's no surprise, since I already like the MetroTwit interface, and I'm a fan of the Metro interface.

When You're In Love

Nicole Cottrell of Modern Reject speaks, based on Francis Chan's Crazy Love on when you're in love

Extra Credit: Nicole's sorry. Are you?

Saturday, October 27, 2012

World domination temporarily suspended

In order to spend time with the boys. And watch Barney, thanks to the older one.

Stumped (temporarily)!

As part of my plan to take over the world get myself busy over the extended break, I decided to build a small web application using Flask on Google AppEngine.

In the beginning, it was all good. Since AppEngine comes with Jinja2 support (Python 2.5, Python 2.7), all I basically needed to do was unpack Flask and Werkzeug into my application folder. I created a basic app, set up my templates and static assets, and everything seemed great.

The problem began when I decided to use WTForms support via Flask-WTF. Apparently, some magic which I don't quite understand yet goes on in the loading of Flask extensions, or something, but I get errors trying to use Flask-WTF.

I'm not the only person to have this problem, but the fix suggested in this Stackoverflow thread didn't work for me so far. So I'm left with a couple of options:
  • Scrap using Flask-WTF and use plain old WTForms directly. Since I'm using the AppEngine modelform extension for WTForms right now, maybe that might not be a bad idea.
  • Stick with using the provided libraries for AppEngine, meaning I might end up using Django, or webapp2.
  • Abandon project altogether.
  • Use some other host, maybe Heroku.
  • Kamal Gill has a very nice Flask template for AppEngine over here. It's got support for Flask-WTF, Blinker, Bootstrap and Modernizr. Some of the package versions are a little old, but it's actively developed (changes are as recent as less than a month ago).

Doesn't matter. Everything seems clearer after you've eaten. Which I haven't.

Friday, October 26, 2012

Still off social media, and how Google+ messed things up

I've been off social media (Facebook, Twitter) since the second of October. It hasn't been particularly easy laying off the social media, but so far, so good. If you follow me on Twitter and you see tweets, they're because of an app that automatically posts tweets when I write blog posts. No, I can't remember which app, and I'd rather not log in to Twitter to find out.

I logged in to Blogger this morning to post something, and then wanted to follow a blog I liked, and realized that the author had linked their blog to their Google+ account, so they could share posts on G+. After some hesitation, I linked my blog to my G+ account, and that when all hell broke loose (no, not literally).

Without meaning to, I started managing contacts on G+, based on interaction and whatnot, and I was about to share a blog post I liked on it, and then I realized: G+ is social media. Due to its tight integration with other Google products, I didn't really think about it that way, but it is. For instance, it's trivial to go from managing contacts in GMail to managing your G+ circles. It's the same login, for crying out loud.

Even though I can't do anything about the integration anymore (one-way street), I'll be very careful about using G+ until I move back to active usage of social media. Or maybe just delete this blog :).

Get in a corner

Sammy Adebiyi (please follow him on Twitter: @SammyAdebiyi or on Facebook) has an interesting post about friendships and people being there for you. I'm tempted to disagree because looking over my life, I've more been there for people than I have seen people be there for me. Or maybe my idea of people being there for me is unrealistic. Still, it's a very interesting read. I suggest you read it.

I also recommend his post on being a loser. Just for context.

Thursday, October 25, 2012

Eye can haz local Google search!

No, it's not an <iframe>. I was simply testing if requests worked on AppEngine flawlessly. I'd heard it does now, but never tried it out before today.

This is the code that does the magic:

Wednesday, October 24, 2012

The best show I've watched in a long time…

… is Sword Art Online.

Now why are you still here reading this instead of getting to watch it?

Saturday, October 20, 2012

Don't stop cooking!

Today, my folks went out. Everyone. And left me home alone. Wandering into the kitchen in search of nourishment, I realized there was almost nothing to eat. So I decided to do the scary thing: attempt to go shopping, then cook.

Why was that scary? Simple. The last time I'd done anything close to the level of what I wanted to do was over two years ago during youth service (don't laugh). One of the consequences of not living on your own is you can become dependent on others without even realizing it. The last time I'd done anything like it at home was over three years ago, back when my dad and I were living the bachelor life :D

But I digress. Getting to the open market I chose, I'd forgotten so much. I kept wondering if I'd chosen an appropriate mix of tomatoes and peppers for the pureƩ. And as usual, I forgot to add onions :D good thing I remembered before the tomatoes and pepper got pureed. While I remembered the puree for the vegetables shouldn't be ground fine, I completely forgot it wasn't supposed to get lots of water.

Anyhow, after completing the shopping without making too much of a mess of things, I headed home, got stuck in traffic for a while (I need to wonder why my family has been living in places where there's heavy traffic close by on Saturdays in the last few years), then finally got home. Shortly after I got home, my folks came home and pretty much ruined the surprise of me cooking puttering around in the kitchen making noise and attempting not to burn the house down :(

I still got to putter around in the kitchen and prepare the fish vegetable stew soup (as my neighbour during service year told me, since it was prepared with palm oil), thanks to a sister who trusts I won't poison the household (my brother said the cooking passed the taste test :D)

Why have I told this long, uninteresting story? I had fun, even though I had to get out of my comfort zone. And maybe even did some good on the way. Was I challenged? Definitely. Did things turn out good? Let's wait and see. I'll let you know if we experience multiple toilet visits in the very near future.

If you take anything away from this, remember that what you don't practice, you get worse at and eventually forget. And what you practice, you instill deep into you. For good or ill. Enjoy!

Oh, and the requisite pictures:

You just need faith

The track below was preached by my friend, Pastor Tayo Samuel of Christ Coming Ministries at the October 2012 Night of Victory. I hope it blesses you. Sorry that the recording started late.

Friday, October 19, 2012


Anyone recognize this image?

And in somewhat unrelated news, some people are either very good marketers, or they're just proud ;)

Thursday, October 18, 2012

Odd behaviour with Google Chrome and Django admin

I was filling out some model data using the Django admin on Google Chrome, when I suddenly started getting 502 (Bad Gateway) errors when trying to save edits.

Oddly enough, it works in Opera or in Chrome (incognito mode). I've only a few extensions enabled:

So I'm really wondering why I'm having issues. If you figure anything out, please let me know.

Update: I restarted Chrome without extensions, and it worked for a while, then gave the same problem. I was using incognito mode, and then it gave the same issue:

So, it's back to Opera for now.

Update: it's started in Opera too.

Quick-n-dirty WIP

I'm trying to convince myself that I can still work with 3D (I am yet to be convinced of that). Anyway, this is just a quick and dirty job. As usual, models in Wings 3D, scene setup in Blender. What's unusual is that I'm rendering using Yafaray, since a new OS X build appeared on Graphicall today. That 'jewel' looks like glass. Ouch.

Wood texture from CG Textures, environment map from Aversis. Both textures are free.

Wednesday, October 17, 2012

Out of Naija!

Saw this on my way back from a friend's wedding in Ibadan over the weekend. You will need to see the higher-res version of this picture to understand why I'm putting this up here. Nuff said.

MTN Foundation Scholarship for 200 Level Students

MTN Foundation is offering a scholarship for 200 Level students in public universities, colleges of education or HND 1 students in polytechnics across Nigeria. Please visit this link for more details. Closing date for applications is Monday October 29, 2012.

Monday, October 15, 2012

Building Reportlab and Matplotlib on OS X

Reportlab 2.6 is out, and I recently upgraded. I've had a previous post on building Reportlab on OS X with Freetype support, but when I upgraded, the trick I mentioned didn't work. I'm not sure why it ever worked, but I think it did once. Or maybe that was with PIL.

I decided to look for another way to get the job done without editing setup.py, since that didn't work for Matplotlib.

If you have Homebrew installed, you can install Freetype using brew install freetype. Homebrew should warn you about the formula being keg-only and that Mac OS X already provides Freetype in versions before Mountain Lion. You will need to then execute brew link freetype. Any subsequent attempts to install Reportlab or Matplotlib will take advantage of the symlinked copy of Freetype and install properly (well, almost. I had to symlink libpng as well for Matplotlib to install into my virtualenv. Don't know if anyone else would have the same problem, but just in case).

Tuesday, October 09, 2012


Not much to say, just grateful that my sister got out of the hands of suspected abductors this morning.

Friday, October 05, 2012

Using keyboard shortcuts on Mobipocket Reader for BlackBerry

My BlackBerry Storm went swimming (in a bowl of cereal) on July 11 this year, and I didn't get it fixed until Tuesday. Since then, I've been yet to subscribe to any BlackBerry Internet Service. One of the downsides of that is that Kindle for BlackBerry, which I use for reading books on the Storm (one of the very few apps of the kind on that platform) needs to connect to the internet to work. No BIS, no internet.

So, being the partial bibliophile that I sometimes pretend to be, I needed to get an alternative, pending when I decide to subscribe again. Mobipocket for BlackBerry, which I've used before, is an excellent app. Unfortunately, since Amazon bought Mobipocket, the software/site hasn't been updated, and even the beta version of Mobipocket Reader for touchscreen BlackBerry devices is no longer available. I was able to get a version of Mobipocket Reader, but it's not for touchscreen devices.

The good news, though, is that the keyboard shortcuts for Mobipocket Reader still work with this version, even though you have to reduce your reading area by keeping the on-screen keyboard on. The most important shortcuts:

  • p or space advances a page.
  • o goes back a page.

A list of all keyboard shortcuts for Mobipocket Reader for BlackBerry can be found here.

Why I don’t need a woman

Since my breakup about two months ago, I've been told several times that I need a woman in my life, by various people — friends, relatives…an opinion I disagree with. For the following reasons:

  • I did a pretty sucky job of being a boyfriend last time out. I'm still in the process of determining what I need to adjust or change. Allow a brother some space, please?
  • it's past 3am and I'm just having "dinner". In comes woman, out goes freedom to do that. J didn't even like me eating late (which is a very good thing).
  • I can't eat a woman. It's a crime.
  • I occupy the same planet with something between 3 to 4 billion natural human females. Let's say just one billion of them are physically mature adults. "Supply" already far outstrips any possible "demand".
  • it could be argued that I'm carrying a torch for J. Torch-carrying is an ancient and noble tradition that allows one see when the lights are out, say in a cave or something. Never underestimate the importance of having light. If we could estimate the cost in stubbed toes, skinned knees and worse, we'd realize it's no laughing matter.
  • loneliness is no reason to be in a relationship. I've seen firsthand the damage loneliness can cause in a relationship. If I'm lonely, I'd best fix it while I'm single instead of making two people miserable.
  • I've three sisters, a stepmother, one colleague, and maybe a handful of people following me on Twitter, not to mention all the Facebook friends. Is that not enough?
  • being in a relationship merely gives more expression to what's buried inside you. It's not a magical cure-all for personal baggage. You're a lot more likely to simply discover your baggage in one.
  • let's say - for argument sake — that I indeed "get" a woman. They vary from tolerable to incredibly beautiful, but you can't wear them. They need food, water, clothing (won't be sharing mine in general, and I don't own any bras). They require time, attention, effort and money, among other things. As I have just discovered Bleach ended six months ago and I didn't know, I already have a backlog of things to do, never mind females.
  • I can't keep one in my room. No space, and I doubt any would like to hang like a wall fixture or something.
  • they have a tendency to take over your life (or at least want to). See above Bleach anecdote.
  • the point. I'm slowly picking up the bits of my life (hey! That LSB's mine!) in different life areas. So I get a woman in my life. As what? Friend? Have a few of those. Colleague? Also covered. Relative? Check, check, check. "girlfriend" should be a temporary status, a layover or pit stop kind of thing. It shouldn't remain for too long. I thought I wanted to get married to J, but right now, many fish to fry.
  • I'm already not getting any. And kinda got used to it. No, I'm not a casual sex kinda guy (lots of time in church seems to have done that). That stuff is destructive.
I really could add other stuff, but that's just what I thought of off the top of my head. Seriously, if you really know me, why aren't you warning women about me instead of saying I need a woman in my life?

Saturday, September 29, 2012

Unbound - WIP

Decided to resume working in 3D, so I've been working on this scene for a few days now, and am ready to release it as a work in progress (which I hope to finish). I'm using Blender 2.63 official, so anyone should be able to open the .blend. Render took about 5 mins on my box at 1000 samples.

You can get the .blend here. I should post an update to this soon.

Tuesday, September 18, 2012

The Purpose-Driven Life resumes tomorrow

Sorry about the lack of updates on this. Had some health issues, but I'll be back on the ball tomorrow.

Wednesday, September 12, 2012

The Purpose-Driven Life, Day 2

By rights, I should be asleep. Or I would like to sleep, but I woke up and realized I hadn't read my chapter from The Purpose-Driven Life. It was a bit inconvenient, but I've covered it (somewhat). Plus, I'd rather not abandon this project. On day 2 as well. I need more backbone. Faugh!

Today's chapter is You Are Not an Accident. Rick goes into a bit of detail about why every single person is a strategically planned creation, going as far as saying: there may be illegitimate parents, but there are no illegitimate children — at least from God's perspective.

Rick seems to make a point that I am inclined to disagree with, though. He seems to imply that everything that happens to you is a part of God's plan for you. I have a slightly different view: God never gets caught with His pants down, so to speak. Not everything that happens is a part of God's plan, but He can use it for His own plan. And I make this point because Rick says God is love. His very nature is love.

There are a lot of things that happen in this world that are incompatible with a view of perfect love. It makes sense to remember we live in a fallen world with a sadistic ruler, not in God's perfect plan. I don't think God would have me a slave to pornography, for instance. He could, however, use such a back story to help free other people who have the same problem. Same thing goes for character flaws. God doesn't want me selfish, but can use that to get things done.

I still struggle with God's love in a practical sense. I still think I would have liked it if my cheese wasn't moved and things hadn't changed. I still would like a drop-in replacement for my best friend (and I'd like the replacement last week!). But today, I choose to think God still hasn't been bested, that the Master Weaver can use the dull, painful, and broken threads that seem to be my life, and spin something beautiful from them.

I'm grateful, not for the pain or loneliness, but that God isn't stumped. He isn't looking at my life and wondering what to do. God isn't calling 911 over my situation right now. I'd like the pain to go and everything to be changed. I don't understand it all, but ever so slowly, I'm learning to trust His hand, not to remove the pain, but to be there despite it. And to bring complete healing.

Monday, September 10, 2012

The Purpose-Driven Life, Day 1

Almost a year ago, my brother got me a copy of The Purpose-Driven Life, by Rick Warren — whether for my birthday or for christmas, I cannot recall now. I initially started reading it, but like a lot of things, I lost interest and moved on to more "interesting" things.

In the last month, I've found myself asking some major questions, then suppressing the questions to keep the familiar. My life seemed not to make any sense any longer, some issues facing my family, and finally, my best friend and I broke up. Perhaps someone saw a tweet about casual sex and alcohol. I'd been running on empty for a long time, and that last last blow hit me square. I still haven't recovered, even though I've learned to put on a brave face.

Today, I picked up my copy of The Purpose-Driven Life and began to read. Really (attempt to) read, and not do the high-speed skimming I've become so used to. From today, over the next couple of days, I will be chronicling my experience reading that book — not necessarily for anyone's sake except mine, but maybe someone might be blessed by my climbing out of what is for me, a very dark hole.

Today's chapter is It All Starts With God. Rick talks about the fact that we're created by God, created for Him, and expected to live His purpose. The first words Rick writes in chapter 1 are: It's not about you. I got thinking about this, especially in the context of everything that had been happening, and I asked, "What about me? Who's going to take care of me? If everything is about God, then do I get anything out of this gig?". I realize this will probably rub someone the wrong way, but fact is, I'm still hurting. I don't care that I had a revelation or an inkling that I was going to lose my best friend, it still hurts.

I'm sorry. Or at least that's what old, suppressed me would say. But I'm not. I don't think God's sorry for ending what was a major bright spot in my mostly dark (at least in my, arguably extremely negative, opinion) life, and I'm not going to pretend that I don't have trouble believing some things I've heard and seemed to have received since.

Rick says we don't get to choose our purpose. God has His own plan, and didn't hold a meeting to get our input, feedback or consensus before making it. We can either speculate about our purpose, or get a revelation of it (did I mention already that I'm having trouble making sense of my life as a whole?). And I got thinking about it, and asking, "what about me? Does God realize I'm hurting here? And if, like I believe, He took away something precious, and it's His plan, do I get any benefits?" And I was made to recall this: For we are God’s [own] handiwork (His workmanship), recreated in Christ Jesus, [born anew] that we may do those good works which God predestined (planned beforehand) for us [taking paths which He prepared ahead of time], that we should walk in them [living the good life which He prearranged and made ready for us to live] (Ephesians 2:10, The Amplified Bible).

For some reason, I remembered a song that was popular sometime during my school days: The Potter's Hand by Darlene Zschech and Hillsongs, and began singing it. My troubles haven't ceased. I still miss my best friend and I know I hope we get back together again, even if I say I've moved on. But I'm going to choose to believe God, that He took because He had better to give, to both of us. God help me, because like Rick quotes:

Self-help is no help at all. Self-sacrifice is the way, my way, to finding yourself, your true self.
– Matthew 16:25, The Message

Thursday, August 30, 2012

Dear God, it hurts!

You know what. You know how. You know when. I feel like You put me in a bulls-eye and have used me for target practice. And praising You right now is the hardest thing I've done. I still want to break down and cry. Like last night. And right now. And I've tried to suppress the pain. But it hurts. Dad says I should "be strong". I said I'm okay. But I still weep inside.

I'd like You to take the pain away. To turn back the hands of time. But right now, this moment is all I have. All I have is broken praise. Would You please accept it? It's somewhat difficult remembering You love me right now. And that You said You'd never leave or forsake me. You said to rejoice, but it feels like I can hardly lift my hands, let alone dance. You asked that I give thanks, but even talking is work.

Here goes. Thank You for life. The real kind and the ordinary kind. Thank You for the sacrifice that made the first possible. Thank You for the chance to experience the good that causes the pain to seem more painful. It's painful because there was a beauty and a goodness to be contrasted with. Thank You for the boys. Thank You for the job. Thank You for family. Thank You for true friends, though few and far between they may seem. Thank You for yesterday. Somehow, I made it through yesterday, and didn't have to lean on a crutch (It was really close, though, but thank You).

Thank You for meals. Thank You for health. Some people don't even have that. Thank You that the office airconditioner has reverted to usual — I don't have to keep shivering and it's not a distraction (well, until it gets fixed, but I'm glad I don't have to put up with it for now). Thank You for hearing of great things You're doing: it means You're around, and though it feels like it's taking forever for You to get to me, You will get to me. Thank You for the two who got positions. Thank You for things working out even though I was away for a while.

Thank You for today. Based on my past experiences, I'm wary of trusting and expecting for good to happen, but I'll do it anyway. It's just today. And if all I do is get through today, thank You in advance. That alone is a seed of hope for tomorrow.

Wednesday, July 11, 2012

Seems the FBI is after me

Hello. When you read this, I will be on the run. At least, you didn't find out where my stash is. You can't be charged with aiding and abetting. And my folks are also clueless. I hate to leave like this, but it's better I run off than stay and allow you face the shame of my being arrested by the FBI…

This morning, I was expecting a friend's email and as usual, looked into my spam folder, where I had six emails. Nothing surprising about that. I looked to see what was in it — Google's spam-detection algorithms are excellent but not perfect — and lo and behold, the FBI was out to get me:

Oh my! Was it the time I thought Michelle Obama was hot (I have also thought a younger Halle Berry was. Incredibly. Hot.)? Or the times I said one thing or the other against the Nigerian government or any of its leaders? Or was it one of my exes that was getting revenge for something I said (or did/didn't did, more likely)? Or was it my Twitter account? Was it from church for being waaay to explicit on Twitter? Or the people in the office building for flirting with the ladies? Or, or, or…

Anyway, I needed to know what I was charged with. So I took a look see, so I'd know just how to book that ticket to Brazil…

Would you look at that! I've got the FBI so broke, they can't afford to pay their ISP fees and send emails from their domain anymore. Let's look at the attachment:

Anti-Terrorist and Monetary Crimes Division 
Fbi Headquarters In Washington, D.C. 
Federal Bureau Of Investigation 
J. Edgar Hoover Building 
935 Pennsylvania Avenue, NW Washington, D.C. 20535-0001 Website: www.fbi.gov 

Attention, this is the final warning you are going to receive from me do you get me? 
I hope youre understand how many times this message has been sent to you?. 
We have warned you so many times and you have decided to ignore our e-mails or because you believe we have not been instructed to get you arrested, and today if you 
fail to respond back to us with the payment then, we would first send a letter to the mayor of the city where you reside and direct them to close your bank account 
until you have been jailed and all your properties will be confiscated by the fbi. We would also send a letter to the company/agency that you are working for so that 
they could get you fired until we are through with our investigations because a suspect is not suppose to be working for the government or any private organization.
Your id which we have in our database been sent to all the crimes agencies in America for them to inset you in their website as an internet fraudsters and to warn 
people from having any deals with you. This would have been solved all this while if you had gotten the certificate signed, endorsed and stamped as you where 
instructed in the e-mail below.this is the federal bureau of investigation (fbi) am writing in response to the e-mail you sent to us and am using this medium to 
inform you that there is no more time left to waste because you have been given from the 3rd of January. As stated earlier to have the document endorsed, signed and 

stamped without failure and you must adhere to this directives to avoid you blaming yourself at last when we must have arrested and jailed you for life and all your 
properties confiscated.
You failed to comply with our directives and that was the reason why we didn't hear from you on the 3rd as our director has already been notified about you get the 
process completed yesterday and right now the warrant of arrest has been signed against you and it will be carried out in the next 48hours as strictly signed by the 
fbi director. We have investigated and found out that you didn't have any idea when the fraudulent deal was committed with your information's/identity and right now if 

you id is placed on our website as a wanted person, i believe you know that it will be a shame to you and your entire family because after then it will be announce in 
all the local channels that you are wanted by the fbi. As a good Christian and a honest man, I decided to see how i could be of help to you because i would not be 

happy to see you end up in jail and all your properties confiscated all because your information's was used to carry out a fraudulent transactions, i called the efcc 

and they directed me to a private attorney who could help you get the process done and he stated that he will endorse, sign and stamp the document at the sum of $98.00 

usd only and i believe this process is cheaper for you. 

You need to do everything possible within today and tomorrow to get this process done because our director has called to inform me that the warrant of arrest has been 
signed against you and once it has been approved, then the arrest will be carried out, and from our investigations we learnt that you were the person that forwarded 
your identity to one impostor/fraudsters in Nigeria when he had a deal with you about the transfer of some illegal funds into your bank account which is valued at the 
sum of $10.500,000.00 usd.
I pleaded on your behalf so that this agency could give you till 7/10/2012 so that you could get this process done because i learnt that you were sent several e-mail 
without getting a response from you, please bear it in mind that this is the only way that i can be able to help you at this moment or you would have to face the law 
and its consequences once it has befall on you. You would make the payment through western union money transfer with the below details.
Senders name====== 
Send the payment details to me which are senders name and address, mtcn number, text question and answer used and the amount sent. Make sure that you didn't hesitate 
making the payment down to the agency by today so that they could have the certificate endorsed, signed and stamped immediately without any further delay. After all 
this process has been carried out, then we would have to proceed to the bank for the transfer of your compensation funds which is valued at the sum of $10.500,000.00 
usd which was suppose to have been transferred to you all this while.
Note/ all the crimes agencies have been contacted on this regards and we shall trace and arrest you if you disregard this instructions. You are given a grace today to 
make the payment for the document after which your failure to do that will attract a maximum arrest and finally you will be appearing in court for act of terrorism, 
money laundering and drug trafficking charges, so be warned not to try any thing funny because you are been watched. 




Anti-Terrorist and Monetary Crimes Division 
Fbi Headquarters In Washington, D.C. 
Federal Bureau Of Investigation 
J. Edgar Hoover Building 
935 Pennsylvania Avenue, NW Washington, D.C. 20535-0001 Website: www.fbi.gov

I'm off to Brazil…not!

Tuesday, July 10, 2012

Getting monotonic time on OS X since clock_gettime isn't available

tl;dr version:
  1. #include <mach/mach_time.h> into your source file.
  2. replace any calls to clock_gettime(CLOCK_MONOTONIC, &timespec_t) with calls to mach_absolute_time().
One of the great things about OS X is that so many things 'just work', especially as regards open-source software. That's because a lot of open source developers put in the time needed to make their software work on as many platforms as possible. Once in a while, though, you encounter some software written for Linux that doesn't work on OS X. I needed the ability to capture and verify fingerprints, and I had a couple of avenues open to me. Nyimbi Odero (who headed the team that developed the biometric capture software for Nigeria's 2011 elections) recommended the use of libfprint for capturing the fingerprint data. So I went off and grabbed libfprint, unpacked and did the ./configure dance. It complained about not having a dependency, I would look up the dependency in HomeBrew and install it. After about 4 or 5 direct dependencies were installed using HomeBrew, configure completed without errors. make was throwing up errors involving CLOCK_MONOTONIC. Initially, I took one glance and began looking that up (I need to really slow down a lot more and look at things properly). I didn't find anything useful and put the issue aside for a bit. I later ran make distclean, re-ran configure, and then make. Looking at the error closer this time, I saw that clock_gettime() was 'implicitly declared'. So I googled again and found the information at the top. I would normally have directly linked, but I couldn't view the actual page (referenced several times since 2009 when it was actually posted), since there was a database error on the site.

Disclaimer: I still have no idea what monotonic time is.

Saturday, June 16, 2012

Scam aimed at GTBank customers

Earlier on today, I got an email that appeared at first blush to be from the Guaranty Electronic Notification System (GENS). It had a HTML attachment, and immediately seemed suspect to my mind. Instead of opening the attachment, I decided to download it and take a look at the internals.

First off, let's have a look-see at the email itself:

Now, this is what it looks like in my browser:

But look at what it reveals under the hood:

After filling it out, it goes to a remarkable likeness of the GTBank site:

Here's a screenshot of the real GTBank site

There are various differences between the clone and the original. Some differences exist, however. For one, the "Internet Banking" section is on the left on the clone, but on the right on the original. Furthermore, it's hard to ignore the gigantic ad on the right of the clone, and though it doesn't show in the screenshot, the clone has the address "www.formbuddy.com" in the address/omnibar.

Caveat recipient. Don't fill out anything you get in your email. Always confirm first from a bank branch at the very least before blindly submitting information on the internet.

Wednesday, June 06, 2012

Deep diving

Seems the last few weeks have had me push things. I recently got a MacBook Pro, which, for me being a longtime PC user (almost exclusively Windows, and on my crazy days, Linux) prior to getting it, was a major adjustment. There are little annoyances (in Chrome for OS X, like Chrome for Windows and Linux, Control-Enter (Return for purists) completes text in the address bar/omnibox with 'www.' and '.com'; for Firefox on OS X, it's Command-Return instead) and somewhat larger annoyances (I keep looking for Home and End keys). In both my personal (a loved one lost a friend on Sunday) and professional life (after doing Python web dev in Django, I'm trying to tackle a personal project in Flask/CherryPy/Tornado — please excuse the analysis paralysis — with SQLAlchemy; and the learning curve seems steep compared with Django).

But it's a good, even great, thing. Because it means I've a chance to cut the cruft. To grow. Not to get stuck. To make a difference. And I'm grateful for it.

Sunday, June 03, 2012

Building ReportLab on OS X with Homebrew and Freetype support

Long time, too lazy to blog. Don't ask. Moving on, I've been trying to set up my MacBook Pro as a development box for a while. Since the house I'm in is largely using Python, I've set up both virtualenv and virtualenvwrapper with the latest 2.7 Python (Lion comes with 2.7.1, latest as at the time of writing is 2.7.3), pip, distribute and whatnot.
One of the packages I wanted to install is ReportLab. Unfortunately, it kept building without Freetype support, so TrueType support was unavailable. This wasn't acceptable, so I started looking for ways to build it with FreeType support in.
According to this, I would have to download and build FreeType separately. That would not do (because I was being lazy, plus, I already had FreeType installed by Apple — I'd already tried to run brew install freetype, and Homebrew warned me that FreeType already comes with Lion in /usr/X11/include and /usr/X11/lib.
Initially, I tried adding the respective include and library paths in setup.cfg. Didn't work. Eventually, after trying seriously to grok the evil that is distutils code, I found that there is a class called inc_lib_dirs, and in its implementation of __call__(), it checks the platform, and makes a lot of calls to aDir(), setting either an include path (first argument uppercase 'I', no quotes) or a library path (first argument uppercase 'L'; again, without the quotes). I simply added new lines for the appropriate include/library, saved and ran python setup.py build. This worked, so I ran python setup.py install. Too tired to test with code. Hope it works for you.

Update: This post talks about building PIL on Snow Leopard with FreeType2 support, but the instructions also work for ReportLab. The tl;dr version is:
  1. download PIL (or ReportLab) source package
  2. unpack it
  3. change directory into the package folder
  4. create a new file called setup_site.py with the contents: FREETYPE_ROOT = "<freetype library path>", "<freetype header path>"
  5. run python setup.py build (or install)
Following these instructions, I was able to get PIL and ReportLab installed into my virtualenv.

Saturday, May 12, 2012

Look where you're going!

He looked really angry. I've no idea what whoever it was did to him. All I know is that it didn't warrant his walking into the road without looking. And I was on a motorbike heading his way. "Look where you're going!", I said. And that should have been that. A warning issued, potential disaster averted. But for some reason, the incident struck me as being immensely profound.

Before you dismiss me as being a couple of Fruit Loops shy of a full bowl, allow me a moment to ask: what does the statement, "look where you're going" mean? A cautionary admonition to pay attention to what one is doing, perhaps? Maybe. Someone once quoted me (whether correctly or not, I can't tell — in all honesty) as saying that men have eyes in front of their heads because they are meant to be looking and facing forward. Yet everyday we run into people who annoy us because they are distracted and they aren't looking where they're going.

But on an even deeper level, what are you looking at? Is it going to help you on the way to your desired destination? On what are your thoughts fixed? What are your consistent behaviour patterns? What are you full of? What (uncensored) words consistently pour out of your mouth?

I had to ask myself some of these questions, and it wasn't pretty. I'm working on changing myself from the inside out. What about you?