Tuesday, July 19, 2011

A day babysitting

Governor B.R. Fashola declared the 11th of July as a public holiday in Lagos state to help Lagos residents recover from the flooding caused by the heavy rain on the 10th of July. I didn’t go to work that day, and neither did Leke go to crèche. Guess who ended up babysitting? Here are some memories from that day.

11072011006

PDP! In my house!

11072011007

11072011008

11072011009

11072011010

11072011011

11072011012

11072011013

Most politicians move to PDP in Nigeria. This brave young man is daring to leave PDP.

11072011014

Finally left the PDP for…abeg na! Which party uses a bucket?11072011015

Omo, this one na serious work o!

11072011016

11072011017

You just stand there dey snap photo? Will you come and help me move this bucket upstairs? Hurry before I drool all over you and slap you!

11072011018

The laziness wey hook this guy get can’t fit haff part 2. Abeg, make I tidy my own package, bo!

11072011019

“It’s not an easy road…”

11072011020

Em, you know, Jesus said, “Which of you wanting to build a tower will not first sit down and count the cost…”. Well, I am counting the cost here! Don’t rush me!

11072011021

I’m so good, I can do this with my head covered.

11072011022

11072011023

See? I told you I could do it! Yes I can!

11072011024

Help! I have been slipper (flip-flop)-napped!

11072011025

11072011026

Yup, I’m badass. Do NOT, EVER, ever, try me.

Friday, July 08, 2011

Why I’ve been a lousy Christian

It’s been too long since I last wrote. I really should have never taken a hiatus. Life, on the other hand, doesn’t always give advance notice of stuff that’s going to affect yours. Stuff’s been going on, and for that reason, my little piece of internet real estate has gone untended. That, and the fact that I threw a grand-scale pity party for myself. But as a quote I read today by Henry Van Dyke goes:

Use the talents you possess, for the woods would be very silent if no birds sang but the best.

For a little while now, I’ve been listening to Andrew Wommack and Keith Moore (I resumed listening because God used a friend to ask for Brother Keith’s messages), and their individual ministries have been a great blessing. I was talking with my girlfriend about some things they said in some of their messages a little while back, and it dawned on me that I hadn’t been that excited in a while about anything.

In particular, I was listening to Brother Andrew’s series titled Discover the Keys to Staying Full of God (free MP3 downloads here) yesterday, and he began talking about esteeming, or valuing God. I realized that despite all my posturing and talking, I didn’t really value God.

When you value a person, that person’s opinion matters. What they think, what they feel, their company and total person — all of that weighs a lot when things are thrown into a mix, for instance, when a decision has to be made. Now that I’m thinking about it, “weight” is an excellent word to describe how much value a person (or thing) has (to someone). As an example, once when my girlfriend and I had a disagreement, I really felt bad. She was ticked off at something insensitive I’d done, and it was looking to ruin my day. In other words, my girlfriend’s opinion of my actions weighed a great deal when added into the mix of the (decidedly unconscious) decision of what attitude to maintain (don’t look at me like that; it is/was a decision. You may like it or not, but that’s the way it is) on that particular day.

How I knew I didn’t value God when I analyzed my life? Glad you asked (I know you didn’t, but work with me here, ok?):

  • I didn’t want to spend time with Him (this is a relative thing: I did my church routine, regular as clockwork, always on time and all that, but He — God, the Person — took a back seat to church — the system). Basically, I didn’t value His Person.
  • I didn’t value His words. One of the things I do deliberately is tell my girlfriend I love her at least once every single day. Sometimes, I don’t feel like it. I’m learning to (I haven’t arrived, but I’ve left, to steal Brother Andrew’s words Winking smile) go over things we’ve talked about, read her text messages over again — giving her  (and specifically, her words) “mind time” (as Brother Keith calls it). I realized I didn’t consciously give God – or His words – mind time.
    Also, I valued other people’s words over His (this, again, is a matter or relativity: When words are frapped in your mind as though in a blender – food processor for readers with a US bent – whose words tend to color and flavour the resulting mix – this is also known as your decision – the most?): Here where I live, intellectual property piracy (and flagrant disregard of copyright law) is pretty much a normal thing. Ephesians 4:28 (King James 2000 version) says: Let him that stole steal no more: but rather let him labor, working with his hands the thing which is good, that he may have to give to him that needs.
    That verse has itched in my head for a while now. I’ve suppressed it several times, talking about the relatively high cost of legal copies of intellectual property (for software, monetary cost, for other kinds like books, music, movies, that, and sometimes simply the trouble of getting it at all; if you’ve ever tried buying stuff over the internet in Nigeria, you’ll understand my point – I once got a catalog via mail from a company that claimed they didn’t ship their free ebooks to Nigeria! Why ship when you can provide a download?), talking it over with people, trying to rationalize what God was saying away. And that’s just one example.
  • I didn’t value His actions. One of the most touching things my girlfriend did before we starting our relationship as it is (sorry, but I really dislike the word ‘dating’) was call me when I was suffering from a cold. It doesn’t seem important until you realize she was a student in another country at the time. I still treasure the thought. She said it was to hear what I sounded like with a cold, but (goofy smile moment coming right up) I know better. She cared about me, and it made me feel loved and very special.
    God’s given me so much, and I’m pretty much never grateful in return, relatively speaking. I’ve complained about my job, my boss, my family, my leaders, my friends, humanity in general – it’s a wonder He still loves me.

So, what’s happened since? I’m working on it. I haven’t arrived, but I can say I’ve left. I’m deliberately giving more weight to God (meaning right now I’ve to stop blogging and get to work – see Colossians 3:22-23). What about you? What will you do with God?

Friday, May 27, 2011

Quality time with Mr. Laykey

Change, they say, is the only constant thing in life. I’ve recently found out that Mr. Baby grew on me (apparently while I wasn’t looking), so he’s now a big guy. As such, I have to “promote” him from Mr. Baby to Mr. Laykey (plus, he’s the house chairman. And he can slap me if he wants to, so I’d better behave.)

Anyhow, here are some of the highlights from this week:

23052011055

Do NOT try me. As you might have noticed, I’ve been weight training. I will kick your butt from here to the hereafter if you try me.23052011056

 

2305201105723052011059

26052011060

I’m just hanging with this dude. Like he’s my charity case for the week. Now get that camera off my face. I really don’t want to be seen in public with this dude. I mean, I’m way too cool to really be hanging with him!

26052011061

26052011062

Tuesday, May 03, 2011

Economics in simple terms

just got this on Twitter from Gaminegirlie, and it was worth a couple of laughs, so i thought to share.

Economics in simple terms

You see a girl at a party:

  1. You say, “I am very rich, marry me” — that’s direct marketing.
  2. One of your friends pointing at you says, “He is very rich, marry him” — that’s advertising.
  3. She walks up to you and says, “You are very rich, can you marry me?” — that’s brand recognition.
  4. You say, “I am very rich, marry me” and she gives you a nice hard slap — that’s customer feedback.
  5. You say to her, “Marry me” and she introduces her husband — that’s demand and supply gap.
  6. Before you say anything your wife arrives — that’s restriction on entry of new firm.

Very simple terms, no?

Monday, April 18, 2011

A not-so-quiet afternoon with Mr Baby

After going to my polling unit to vote on Saturday, I got saddled with Mr Baby, who, in typical fashion, was having trouble being convinced by his body that he was overdue for sleep. As such, we had some fun together (or so I’d like to think). Anyhow, please enjoy!

16042011009

Mr Baby (re-)discovers my mouse. I discover my afternoon has been disturbed.

16042011010

Dude, are you sure you’re interested in Java Enterprise Edition? Why don’t we do something fun, like splash water on a working voltage regulator (I kid you not)?

16042011012

Yup. Java EE. Contexts & Dependency Injection.

16042011013

Now look what you done! You done broke it! This mouse ain’t mousing!

16042011014

Now, I have to fix it! What have you to say for yourself?

16042011015

Fixing in progress. Do NOT disturb. Unless you want me to bust out my kung-fu.

16042011016

Are you sure you didn’t use the cable for something else? It still isn’t mousing.

16042011017

16042011018

When all else fails, I have to use that method. And don’t look at me like that. You broke it,  not I.

16042011019

Let’s see what this Java EE thing is all about, anyway. No, I don’t need your input. I know exactly what I’m doing.

16042011020

Why don’t you clean your laptop? Now I have to spit-shine it (yes, that’s actual drool on the touchpad).

16042011021

Java EE is boring! So let’s go do something fun, like wrestle alligators.

16042011022

I bet you’re jealous that I can wash my car right in the house and you can’t (this was right after the water-splashing incident. There was a bowl full of water on that stool. Thank God for mercy).

Saturday, January 29, 2011

The Cycle of Achievement

Let’s step right in. Here’s the achiever:

29012011006

Here’s the prize (shown contextually):

29012011015

The achiever strategizes, then moves heaven and earth (or in this particular case, a rocker) to get the prize:

29012011007

29012011008

The achiever, after braving terrific odds, gets the prize:

29012011011

And enjoys the sweet, sweet taste of success (yes, success does have a metallic taste. Everybody knows that):

29012011009

29012011010

29012011014

Depending on your viewpoint, the cheese is moved, or the prize is taken from the achiever:

29012011013

And the achiever moves on to The Next Big Thing™:

29012011016

And that concludes our study of The Cycle of Achievement. Many thanks to our achiever for sparing time from his busy schedule of achieving to contribute his quota to the development of the world.

Until next time.

Tuesday, January 18, 2011

Penny wise, pound foolish (and other, possibly related, matters)

Social Innovation Camp Nigeria ended Saturday night, and with it, two days of near hell on earth. More on SICamp Nigeria later, though.

At work a little while back, we had a hiccup with our messaging server. In the attempt to resolve the issues, we uninstalled the server application and reinstalled it a couple of times (at the end of the day, the actual problem was unrelated).

This particular product comes with a web-based user portal. Uninstalling the application also wiped out the web pages. Normally, it might not have been a major issue, but the problem is that we’d made some expensive customizations to the portal (expensive because the portal runs on ASP — no, not ASP.NET, classic ASP, in VBScript, no less — and over 80 per cent of the markup of the pages is churned out using Request.Write statements. I can almost hear the screams), and in my haste to resolve the bigger problem (how to get messages moving again), I created a new problem, namely, resetting the web portal to (crappy) factory settings.

I’d tried several times to write a new web portal in .NET but always gave up before getting far (yes, story of my life). After the server application started working properly, my next task was to make the portal usable again (practically all our customers who use the web portal need at least one of our customizations, some JavaScript tweaks a colleague worked in, which got lost when the uninstall ran). Unfortunately, just when I wanted a quiet day to spend coding, we had visitors. And Mr Baby decided to be very active. So I didn’t get anything done when I had motivation, and by the time everyone left and I had no calls on my attention I was too tired to see straight.

Today, I decided (I can’t remember the exact motivation, though) to try to replace the functionality missing in the pages. Now, I haven’t done JavaScript in ages (over 4 years, I guess I really do dislike doing human interface development), so the development time was split between W3Schools, ##javascript on Freenode, Chrome’s developer tools and Eloquent JavaScript. I ran into some hiccups, but I got it done at last.

Now comes the irony

One of our clients complained that they couldn’t use the old system, so I cooked up a Python script to use the web service interface of the messaging server to send messages for them. After I completed the change, I emailed them to try the new modifications. The lady called later to complain, “it’s not responding”, and  with a plea to send the messages for her.

All that work for nothing. And then someone will ask me why I think women are unreasonable.

Friday, December 24, 2010

24-12-2010

Not much up. Recently, been trying to get back into 3D. As usual, fell into the temptation of “too much, too little”. Installed too many apps (have to get Softimage Mod Tool and Crosswalk off my box). Looked for too many tutorials, got interested in too many things (yep, struggling right now not to install LMMS), but did too little actual work.

Still it’s not like I’ve done nothing. Here’s a screenshot of the model I’m currently working on: Wings3D - fan

Here are some models awaiting texturing and rendering:Greenshot_2010-12-24_13-48-40

Greenshot_2010-12-24_13-51-26

And the last render I did (yes, I succumbed to the pressure of the season):ornaments

While authoring this post, I managed to complete and render a Rubik’s cube.rubiks-cube

Now I have to go. A troublesome person has shown up and interrupted my enjoyment of Blender 2.49 (no, I haven’t moved to 2.5 yet, but it’s on the list of things to do. I’m not going to throw out 2.49 until BMesh is completed, since the last time I tried to create a Rubik’s cube in 2.5, the render showed there were lots of faces with inward-pointing normals). Laterz

Edit

Back home now. Playing with Blender and Yafaray. Set up a scene for the Rubik’s cube with no materials in Yafaray, and this is my render:rubiks-cube

Almost 8 minutes for a 800x600 render. And I haven’t even started with LuxRender yet. The good thing is: I have a copy of SmallLuxGPU, and I’ve seen the difference in rendering power (I need a GPU farm now!) of a GPU as compared to a CPU.

Anyhow, here’s a render with materials set (Yafaray):rubiks-cube2

If you don’t look at it too hard, you might not notice the major flaws I did: noise visible in the primary shadow (eliminating that requires me to increase the number of samples, and with that the render time — sigh), and the black material just looks weird away from the top of the cube (my guess is it’s too glossy, but I’m going to leave it that way anyway Open-mouthed smile)

The Rubik’s cube .blend is here in case you want to play with it. Going to play, eat, take a shower, sleep.

Thursday, December 23, 2010

23-12-2010

Guess I’m back to dating my posts. Today’s post starts on a sad note. Yesterday I read about the passing on of Mr Sam Mbende, a former employee of Ecobank Transanational Inc, in The Punch newspaper. I met him in a meeting, and he came across a a very reasonable person. My boss has few good words for Nigerians in business as a generality; he contrasted Mr Mbende with the run-of-the-mill Nigerian in the corporate world. We still quote something he mentioned till today in the office: “the dynamics of the enterprise”.

I’m made to understand that his death might have been avoided if he got access to medical assistance on time. Which brings me to ask one question among others: with Lagos (in particular) as crowded and as traffic-jam-prone as it is, how can ambulances get to — or from — accident scenes in time to save victims? Every time I’m in major traffic, I wonder, “what if there’s an ambulance trying to save someone stuck in this?”. Unfortunately, Nigerians have largely decided to ignore sirens, mostly because of abuse by uniformed personnel (the police and military in particular), and ambulance drivers generally have no weapons to threaten anyone. Add the fact that I doubt that any emergency service has any choppers or VTOL aircraft, and you might see my point here. Maybe we should reintroduce the old law allowing only vehicles with license plates to move on the roads on particular days, but I’m sure people will find a way to circumvent that. At any rate, it’s food for thought (someone who can pass this on to the Lagos State Governor, please do. I will assume he’s a person shopping for ways to make life better for the people).

On a lighter note, here’s a conversation I had just this morning (reproduced as accurately as I can remember it):

She: Where’s my Christmas present?

Me: What Christmas present?

She: It’s Christmas. where’s my Christmas present?

Me: You should ask someone who believes in Christmas.

She: So you’re an Eckist or a Jehovah’s Witness?

Me: Any one.

She: Blood of Jesus! No wonder we never connected!

Me: At least today you’re honest.

And there you have it. She apparently forgot that I’d lent her a book by the late Kenneth E. Hagin, Exceedingly Growing Faith, which I would most likely not have done if I were in fact either an Eckist or a Jehovah’s Witness.

I’d like to ask: who passed the memo that I was to be hounded by degrees into a romantic relationship? If the comments I’m hearing these days are anything to go by, there are quite a number of people praying for me…maybe they should stop, as it doesn’t seem to have done much good. And no, trying to hook me up with women isn’t the answer, especially asking me how I like random women passing by.

Later.

Tuesday, December 14, 2010

Awesome!

Warning: this post contains technical information and is unsuitable for technologically-challenged people (the kind that can't find their bold and underline) :D

no, the title isn't referring to me. it's what happened yesterday/today. we're trying to roll out a product at the office, and it involves some cryptography using 3DES. We ran up against a problem where we had a 128-bit key, but the default cryptography provider supplied with Java would not accept 128-bit keys for 3DES operations. We ended up having to write a separate application in .NET to handle the operations, since .NET accepts such keys and does the needful, and moved on with development. Over the weekend, another company we intend to work with sent over a key — you guessed right — it was a 128-bit key. To be honest, the entire thing spoilt my entire day (for reasons I do not care at this point to divulge). I was a complete grouch by the end of the day, especially since I felt that none of the advice we were able to source could solve the problem. Outsourcing the concern to a .NET application again would work, but the cryptographic operation we needed to do was in the core of the application, not on the fringe, as the previous case. I was dead set (though I didn't tell anyone) against migrating that functionality to another program again.

the day finally came to an end and I moved on to a program at church. We've been having a 21-day fasting-and-prayer program, and I'd felt much like a spectator most of all the other days. Last night though, Pastor Nuel announced God wanted to solve problems, real issues. I decided my problem was real enough, and just followed the instructions he gave, including giving sacrificially in the offering, which was taken for the poor. I didn't have much on me, and I decided to give everything I had on me into that offering. I chose to believe that God would take my problem as his own, and I'd not have to bother about it. I ended up walking home from church last night (sorry, Mr A., Mr B.!), and this morning, to the bus stop where I'd catch the bus to the island.

I posted the problem on StackOverflow this morning, but nothing that really helped worked. All the information I'd obtained was useless. I decided I wasn't doing to despair like yesterday, even though the temptation was really, really strong. I've no idea when exactly, but I just decided to use the Bouncy Castle JCE provider instead of the default Sun provider, and it worked! I'm really, really, happy I decided to believe what Pastor Nuel said yesterday!

And now, back to work!

Monday, November 22, 2010

Is JobMark Nigeria a well-planned scam?

Early this morning, I got an unsolicited text message from JOBMARKNG telling me the sender knew I was fresh out of the National Youth Service Corps scheme, and that they had a job waiting for me. I didn’t really pay much attention to it at the time — I merely made a mental note to check it out since it might prove to be useful to someone else who's looking for employment.

Later this morning, I got another text message from someone who claimed we’d served together in Borno state in northern Nigeria, that he couldn’t call for some reason, and asking me to call his in-law for a job. Unfortunately, while I did server in northern Nigeria, it was not in Borno state. I regret deleting the text message as quickly as I did now. At any rate, it made me take a better look at JobMark Nigeria’s site as advertised in the spam text message I got.

The organization’s site is at http://www.jobmarkng.com. Personally, I don’t really like the design, but that’s minor. What caught my attention in the (decidedly long-winded) text of the home page was this: “10% of your salary must come back to us”. Job Mark - Opera_2010-11-22_11-36-45That left me thinking it was not such an up-front site after all. Running down the page gave me another gem:Job Mark - Opera_2010-11-22_11-39-56

I also found it interesting that the site mentions the Nigerian Bureau of Labour Statistics. Searching Google turns up only the National Bureau of Statistics (in Nigeria), with a division in Employment and Labour. Methinks the NBLS does not exist. Let’s peg this to a typo, shall we?Job Mark - Opera_2010-11-22_11-49-13

Unfortunately, on visiting the National Bureau of Statistics website, I found it impossible to get any of the (admittedly very few) reports on employment and labour beyond the end of 2009. Where does JobMark Nigeria get its figures (September 2010) from then? Insider information?

Moving on, here’s something else I noticed: Job Mark - Opera_2010-11-22_12-00-08

None of the advertised job openings link to anything. You can look at the site yourself and come to your conclusion yourself. Then maybe you can tell me if it’s a scam, especially as I think people who ask you to develop communication skills should be able to properly capitalize nouns:Job Mark - Opera_2010-11-22_12-05-12

Laters.

Edit

A friend who commented on this post on Facebook (and served in the same local government as I did) said he got the same text about the same time I got mine. I can only conclude someone related to NYSC (not necessarily staff, it might be a former Corps member) in some way is giving out (ex-)Corps members contact information. That gives me the heebie-jeebies — when registering, we gave numbers, contact information and whatnot — what if that information was leaked to less-than-savoury characters? I like my privacy, thank you veddy much.

Update: The same friend also sent me a message about this. The relevant parts I’ll take the liberty to reproduce below:

Just be careful. 2wks ago, i got a message from someone who claims to be <removed> from Zamfara (our batch). He told me he was stranded and i should send credit to him cos the bus he boarded had a fault in the bush coming from ZM. i think i know where that idiot got my details from.our year album/book.its only u guys from ZM that call me <removed>.

Virtually everyone is in need of employment. Jobmark is simply nothing but a scam. You do not get jobs that way. Their aim is to make job seekers lazy individuals. They promise to re-edit your CV and other stuffs that do not make any sense to me.
I just discovered something. i.e not giving my actual details in any publication such as year book etc. (emphasis mine, at least not just in any old way). Although that doesn't give an assurance not receiving such messages/mails.

I can’t fit shout. Maybe I’m paranoid, but here’s a friend who isn’t a geek realizing what many people don’t realize: There’s such a thing as too much information being given out that could put you at risk (yes, I’m looking at you heavy Facebook users. For crying out loud, robbers have actually found out when to rob houses simply by checking people’s profiles and status messages on Facebook — any search engine will give you more links).

Tuesday, November 16, 2010

A funk

Hello again. Haven’t updated this rag of mine in a while. I suppose I got too lazy to update it. I’ve been forgetting to do some important things, so if I was supposed to call or something, don’t get mad, ok? I’ve major things on my mind, & the decided lack of rest isn’t getting me anywhere, especially since I’ve amped up on sleep.

I was going to rant about just how much my life sucks, but then I realized it might be worse (remembering that my neighbours had a fire — the fact that 60000 young people in Lagos alone sat for an employment test when an anonymous source says the agency holding the test will only hire 2000 persons in each state — a claim that my boss says is improbable since the agency only has about 5000 staff nationwide now — according to him, anyway — also helped). Unfortunately, it doesn’t remove the feeling. I went out today with Mr Baby this evening, saw something, and the old feelings rushed to the surface. The feeling of not being where I think I should be was really strong. Pushed it down like I do all other such feelings, though, and went on into the store I was visiting.

For crying out loud, I can’t even write a blog post properly. Geh. Whatever. at least Mr Baby’s getting big.

In other news that probably doesn’t really concern or affect anyone, I like Zoundry Raven’s interface, but after trying it out for real, I’m sticking with Windows Live Writer.

On to different things. I’ve been playing around with ISO8583 and jPOS for some stuff at work, and a problem that has raised its head consistently is how to communicate with a HSM. So far, lacking a true-blue HSM to work with, I’ve been trying to get my code working with this simulator with not a lot of success. Even after wandering the web and the jPOS mailing list (as well as Andy Orrock’s blog), it seemed I was doomed to fail. Yesterday, I decided to stop looking for ready-made answers and devote time to the problem. After looking at the jPOS API documentation on FSDMsg, I was able to come up with some code that — while it doesn't exactly mirror Andy Orrock's code — works. Without further ado, it's reproduced for your viewing pleasure below (syntax highlighting via Highlight, as I've not yet got around to finding a code display widget that works on Blogger).

Test.java:

package testbed;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.jdom.JDOMException;
import org.jpos.iso.channel.FSDChannel;
import org.jpos.iso.packager.DummyPackager;
import org.jpos.iso.FSDISOMsg;
import org.jpos.iso.ISOException;
import org.jpos.util.FSDMsg;
import org.jpos.util.Logger;
import org.jpos.util.SimpleLogListener;

public class TestBed {
  

  public static void main(String[] args) throws FileNotFoundException, IOException{
    FSDChannel channel = new FSDChannel();
    channel.setHost("127.0.0.1");
    channel.setPort(9998);
    channel.setPackager(new DummyPackager());

    Logger logger = new Logger();
    logger.addListener(new SimpleLogListener(System.out));

    channel.setLogger(logger, "regular");

    FSDMsg message = new FSDMsg("file:hsm-");
    message.set("command", "NC");

    FSDISOMsg wrapper = new FSDISOMsg(message);
    wrapper.setHeader(new byte[] {0, 0, 0, 0});

    try {
        channel.connect();
        channel.send(wrapper);
        byte [] buffer = new byte[1024];
        channel.getBytes(buffer);

        FSDMsg response = new FSDMsg("file:hsm-resp-", "ND");

        response.unpack(buffer);

        System.out.println("Firmware number is: " + response.get("firmware-number"));
    }
    catch (ISOException ex) {
        ex.printStackTrace();
        //return;
    }
    catch (IOException ex) {
        ex.printStackTrace();
        //return;
    }
    catch (JDOMException ex) {
        ex.printStackTrace();
    }
  }
}

hsm-base.xml:


<?xml version="1.0" encoding="UTF-8"?>
 <schema> 
 <field id="command" type="A" length="2" key="true" /> 
</schema>

hsm-NC.xml:


<?xml version="1.0" encoding="UTF-8"?> 
<schema id='NC'> 
</schema>

hsm-resp-ND.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<schema id='ND'> 
   <field id="lmk-check-value" type="A" length="16" /> 
   <field id="firmware-number" type="A" length="9" /> 
</schema>

Laters.

Update:

The code above seems to work fine…till you really look at what it does. For some reason, jPOS isn’t picking up hsm-resp-base.xml at all. Here's an updated hsm-resp-ND.xml

<?xml version="1.0" encoding="UTF-8"?>
<schema id='ND'>
    <!--this is the 2-byte message length header-->
    <field id="messagelength" type="A" length="2" />
    <!--this is the 4-byte header you need to prepend the actual data with,
            byte[] header = new byte [] { 0, 0, 0, 0 }; // or whatever header you decide, useful for tagging requests
            //...
            wrapper.setHeader(header);
    -->
    <field id="header" type="A" length="4" />
    <!--this is the response id. in this case, it'll always be ND-->
    <field id="command" type="A" length="2" />
    <!--this is the response code-->
    <field id="response" type="N" length="2" />
    <!--this is the LMK check value-->
    <field id="lmk-check-value" type="A" length="16" />
    <!--this is the firmware number-->
    <field id="firmware-number" type="A" length="9" />
</schema>

Thursday, October 14, 2010

Tired…

I feel drained. I’m trying to work, but it’s really difficult to concentrate. I’d probably fall asleep if I were to stay too long in one place.

I wish I could sleep. Sleep, and talk to someone — preferably after I woke up. How did I get here anyway?

Took a cursory but somewhat-below-the-surface view of my life, and I have to conclude that I’m not satisfied with it. And I feel powerless to change it. I just feel like giving up and lying down, telling myself I tried my best and it’s okay to give in.

Saturday, July 24, 2010

Done in by the current working directory

I know I've said it before, but I hate computers. No, really. I wonder why I didn't get interested in a safe, risk-free profession like alligator wrestling.

Today's rant began with a threat, in a manner of speaking. My employer has a client, and they got served a notice of unsatisfactory service by their client. They came to the office, and since my boss wasn't around, they spoke to me. An application was required, they didn't have the manpower to build it. I decided to build the application as requested by them since continued business for them implies continued business for my employer.

The problem

Yesterday, we went to deploy the application. Then all hell broke loose. I ran the application, entered the settings, no problem. We loaded a list of numbers, clicked 'Send'. Nothing happened. I then tried to reload the settings and see if we had an issue, then...boom! Exception! I don't need to tell you we returned to my office, tails between legs. I later pinned down the problem to a single scenario: As long as you didn't try to load a list file, you could view the settings dialog. Once you did, however, you would get an exception which basically said the application couldn't find the settings table.

I couldn't make heads or tails of the situation, especially since my settings database file (I used a SQLite database file to store the application settings. When, later, in Freenode's C# channel, someone asked why, I didn't really have an answer — actually, I did: an application can't write to its own configuration file, and I hate parsing XML, and I haven't learned LINQ yet. This last experience is enough to migrate me to .NET 3.0 at least). Then I noticed, by chance — as it were — that I was seeing my database file on the desktop of my test system. File size? 0 bytes. Then, it hit me: I was loading my list from the desktop. That meant that Castle ActiveRecord, which was my data access layer (overkill. Yes, I know it all too well), somehow terminated the database connection, tried reconnecting it after the list was loaded, and (obviously) failed to.

This was the connection string: Data Source=app.bin;Version=3;New=True. Readers used to ADO.NET and SQLite will know this means the database file, app.bin, can be recreated if it doesn't exist. Also, it's supposed to be in the same directory as the running executable (the current working directory). On startup, my application checked if the settings file existed or had a size of zero bytes. If so, the application would automatically create the tables needed and populate them with defaults.

The problem, understood

Sadly, sometime during the application, the connection was closed. When the list file got selected, the current working directory was changed. On trying to load the settings dialog after the list file was selected, the connection was reopened (with the new working directory) and the database file was created. However, the schema would not be recreated, so the settings table would not exist, giving rise to the exception. My mistake was assuming the ActiveRecord would keep the connection open throughout the application's run. It didn't

Attempted solutions

  • In my ActiveRecord classes, I tried setting the current working directory just before any class method was used. Looking back, it wouldn't have worked, since ActiveRecord would already have a working connection to the database before trying to access the table. So it would still be trying to access the wrong file
  • I tried setting the current working directory somewhere before trying to access my ActiveRecord classes/instances. Probably due to the fact that I was hungry and indebted to sleep, I put it in a wrong place, and it didn't work (then again, it might not have worked).
  • Moving the ActiveRecord configuration from the application configuration file to code (using InPlaceConfigurationSource), and using the absolute path to the database file in the connection string, instead of a relative path. This 'solution' was the worst. The application didn't even run after this (again, not on my development machine — not once did I have problems running from my development machine, whether debugging with Visual Studio or running standalone), it just gave that Error Reporting dialog thingie.

Something I did NOT try was setting the working directory immediately after loading the list file. It might have worked. After everything, I scrapped the application and am rewriting it currently. I'm using XML serialization for the settings storage.

I'd like to appreciate the SlimTune developers — SlimTune helped out a great deal. When CLR Profiler failed me, I was able to use SlimTune to find out where my application was eating up some processor time on startup.

Tuesday, July 13, 2010

Water under the bridge

quite a bit has happened in my life since i last updated this rag. no time to talk about the whole of it, though. i simply want to resume blogging. even if i blog nonsense.

talking about nonsense, isn't GMail the coolest? though i'm concerned that it's reading my email...

God is watching...

The children were lined up in the cafeteria of a Catholic elementary school for lunch. At the head of the table was a large pile of apples.

The nun made a note and posted on the apple tray: "Take only ONE. God is watching."

Moving further along the lunch line, at the other end of the table was a large pile of chocolate chip cookies.

A child had written a note, "Take all you want. God is watching the apples."

Staff or slave?

And a little gem i picked up wandering about and not minding my business in the office:

Dear Employer.
I work in your organization and you dictate:

  • The time I get out of bed
  • The time I get to work
  • The kind of clothes I put on
  • The environment in which I work
  • The time I should go for lunch
  • My spending power vis-à-vis my lifestyle
  • When I should go on vacation
  • The number of hours I spend with my family
  • The days I can visits my parents
  • The time I can spend with my friends
  • The kind of haircut and beards I must put on
  • The kind of seminars and trainings I am allowed to partake in
  • The kind of people I spend the greater part of my life with (you cage me with some strangers and call them my colleagues)
  • When I am entitled to "improve my lifestyle" by increasing my income
  • When I should think and what my dominant thoughts should be
  • My geographical location and where I should reside
  • The time I ought to be reasonable enough to jump in bed to sleep
  • And gosh! When I should even sleep with my girlfriend!

Anyway, I thank you for:

  • A guaranteed monthly pay check to fend for my children, parents and siblings
  • Guaranteed medicals for my family
  • Opportunity to visit places I never thought I could visit on my own
  • Putting me off the street and not being labeled as unemployed
  • The prestige I have earned in my neighborhood
  • The opportunity to meet people (colleague and superior) I ordinarily might not have met so easily on my own (my contacts)
  • The insight to learn how a big organization like yours is being run
  • The opportunity to build a capital base to start my own business
  • The opportunity to study human behavior to enable me manage my future employees
  • curbing my excesses especially my “boozing habit” but for the long hours I spent at work, I would have become an alcoholic
  • The knowledge imparted in me when you send me on trainings
  • The freebies that could have eroded my income; phone calls, internet access e.t.c
  • The beautiful lady that sits close to me that I look forward to seeing everyday at work and who might eventually become my wife

At this point, I am confused; should I THANK YOU or CURSE YOU?

Food for thought. Anyway, to ba ka e l'ara to, wa'a wa nkan she si. Laters