Monday, December 29, 2008

ends and rants

been meaning to mention it for a while now: Hellsing is over. bit of a letdown, that ending. ah well. guess one can't have everything. no, i'm not telling you! go read it yourself. also, watched the last episode of Ga-Rei Zero last night. awesome ending. hope we get to see an anime series released soon. yes, i know i wondered what trashy anime was released when i watched the first two episodes. if it wasn't for someone else, i'd not have bothered watching anymore. boy, am i glad i did complete it.

on a not-so-light note, Chromium lacks print preview - and i'm not the only one missing it. what are the developers thinking? what good is a browser with no print preview (quite a bit, but i'm trying to stress a point here)?

i was thinking recently of the fact that Opera 10 alpha passes the Acid 3 test. great news for web developers and designers, but does that mean Opera will get a larger market share? and how does that translate into cash for Opera? passing the Acid 3 test does not mean that more users — a demographic much larger than the demographic of web designers or developers — will use Opera 10. yet, the fact that Opera 10 passes a test that the more popular browsers fail is a good thing - if you ask me

Saturday, December 27, 2008


Thanks, Dayo for sending this to me

A mom was concerned about her kindergarten son walking to school. He didn't want his mother to walk with him. She wanted to give him the feeling that he had some independence but yet know that he was safe. So she had an idea of how to handle it. She asked a neighbor if she would please follow him to school in the mornings, staying at a distance, so he probably wouldn't notice her.

She said that since she was up early with her toddler anyway, it would be a good way for them to get some exercise as well, so she agreed. The next school day, the neighbor and her little girl set out following behind Timmy as he walked to school with another neighbor girl he knew. She did this for the whole week. As the two walked and chatted, kicking stones and twigs, Timmy's little friend noticed the same lady was following them as she seemed to do every day all week. Finally she said to Timmy, 'Have you noticed that lady following us to school all week? Do you know her?'

Timmy nonchalantly replied, 'Yeah, I know who she is.' The little girl said, 'Well, who is she?' 'That's just Shirley Goodnest,' Timmy replied, 'and her daughter Marcy.' 'Shirley Goodnest? Who the heck is she and why is she following us?' 'Well,' Timmy explained, 'every night my Mom makes me say the 23rd Psalm with my prayers, 'cuz she worries about me so much. And in the Psalm, it says, 'Shirley Goodnest and Marcy shall follow me all the days of my life', so I guess I'll just have to get used to it!'

The Lord bless you and keep you; the Lord make His face to shine upon you, and be gracious unto you; the Lord lift His countenance upon you, and give you peace.

May Shirley Goodnest and Marcy be with you today and always. I'm sure you smiled! I sure did.

You know your internet sucks…

…when it isn't worth it logging in to Megaupload to download a file for free to cut the waiting time from 45 to 25 seconds. condiments of the seasoning to all.

Thursday, December 11, 2008

Updates, updates...

i'm supposed to have moved my focus from the SMS part of my employer's business to IVR. i've had to deal with a flowchart-based development environment i find very annoying. plus, since i had no prior experience with telephony systems, quite a bit is lost on me. i've mostly been fumbling around in the dark.

this morning, my boss called me and asked me if i could develop a voice broadcast application using that environment. since i'd been having problems with it, i said i'd try. since then, i have failed in trying to get the application to make outbound calls. the alternative was to call in a consultant who's very good with Asterisk. i called him, but not after i discovered Asterisk.NET. before long, i had learned a little about the Asterisk Manager Interface and AGI, both of which i never knew existed before today, even though i've played around with Asterisk as part of my job. i also found the Sipek VoIP projects site. hopefully, i'll be able to build the application needed either by using Asterisk.NET or the Sipek SDK. either way, things should work out now.

Python 3.0 is out (i'm a couple days late on this one), and it isn't backward compatible with the 2.X series. looks like they really gave some thought as to where Python should go. i guess that means development of the 2.X series will basically be mostly bugfixes from now on. still, there seems to be a lot to like about the new Python, even though it's slower than 2.6 on the pystone benchmark (i cannot believe they actually took a line from Basic and added the <> operator in Python. thank goodness it's been removed in 3.0!). let's see how things go, especially with open-source projects that use Python. i'm personally wondering where IronPython goes (yes, they did it - got me sold on .NET. doesn't mean i now despise C++ though. i still plan on using it from time to time).

and thanks to Segun who gave me a ride yesterday when i forgot my wallet at home. you're the best, bro!

Wednesday, December 03, 2008

Looking for a .NET SMPP implementation - Part 2

seems my previous post was somewhat more popular than usual, judging from the two comments i got on it. so, i'm writing this more or less in response to those comments.

my answer is: it depends on a number of factors. what do you want to do? create a client or server? is working with unmanaged code a requirement? what kind of timeline do you have? is reading through code and class diagrams your way of learning, or is it one step above swallowing broken glass? must you absolutely have commercial support? what about licensing? when you look at all these, your mileage will definitely vary. at any rate, below i give some of the things i've picked up about these components. hope it helps!


  • You have to pay for it beyond the trial period.
  • You get commercial support.
  • Since it's a sold product in it's 8th major version, it should have been well-tested in production environments and suited for handling large volumes of SMPP traffic (note the emphasis. it may not have).
  • You get other components (well, check out the website yourself).
  • You probably don't get licensing issues (note the emphasis again).
  • There's an SSL version if you need it.
  • They have more than .NET if you need it (but those - except for Java - seem to have stopped in version 6).
  • i haven't used it, so i can't tell that you can use the component to develop a server.
  • website


  • it's licensed under the GNU Library General Public License. as far as i know, that allows you use it in commercial, closed-source applications, but i may be wrong. also, you may not want to use LGPL components. then again, using opensource software may make you feel warm and fuzzy inside.
  • the developer says he's stopped development. any bug fixes may have to come from you.
  • documentation is in the source code. literally. there's no other source of documentation short of looking up the binary in a tool such as Red Gate .NET Reflector.
  • it's free.
  • having access to the source may just be the thing for you to tweak it.
  • SourceForge project page


  • it's free.
  • it comes with example code. in VB.NET, no less :(
  • one of the sample projects seems to be an SMPP server.
  • the site was supposed to come up two months ago (in other words, unless someone mirrors the component, you're out of luck! as it stands, i've uploaded a copy here. someone please tell me if it's illegal with proof, and i'll remove the files).
  • since the site is down, i cannot state the license (it's not in the downloaded file). you may have licensing issues here too.
  • the assembly is not obfuscated in any way, so you can look it up in Reflector and figure out how it was built.
  • website (under construction)


  • it's free. you can purchase the source code, and get commercial support, free updates, and whatnot.
  • quite a bit of the assembly is obfuscated (i guess they should really add something in it like, "buy the source, you cheapskate!"). good luck poking around with Reflector.
  • there's a forum, so you and everyone else who uses it can decide to discuss it. don't compare that to paid support, though.
  • no visible license. that may be a problem.
  • website


  • written in unmanaged code. has a COM library too, so it can easily be used from .NET.
  • another item with no explicit license. sigh.
  • it's written in C++ and is MFC dependent.
  • you only get the source.
  • frozen since 2003.
  • website


  • no explict license.
  • frozen since 2006.
  • looks simple enough to use, but i couldn't get it to work :(
  • example program included. there's a gateway using it (and as far as i know, it's the only gateway/simulator that seems to work with it).
  • free. opensource.
  • in case you missed it, it can be used for servers
  • SourceForge project page

BasheerG asked if i tested for performance & high load. no i didn't - i didn't have the space to, since i was (mostly) moved from the SMS arm of my employer's concerns. to answer your other question, if i could afford it, i'd go for the IP*Works first, then RoaminSMPP, then Devshock. i've no idea where i'd place the ALT.SMS.SmppClient. maybe lurking around the forum might help me decide. i'd hate to use the SMPPLIB component because of COM issues. and since EasySmpp didn't work effectively for me, i'd not use it. i hope this helps you and Sandip.

Monday, November 17, 2008

my weekend was an ass...wait, that's not right!

phew! what a weekend! Dad was out of town, so it was just my brother& i at home till last night. man, this was the illest weekend so far - as regards tiredness. i can't believe Friday & Saturday i was retiring before 10pm. dude, i really need some downtime - but i'm afraid that may not be till next month.

spent some time designing a website. unfortunately, it seems sticky-footer layouts are mutually exclusive with centered layouts. i can either allow the content pane be centered in browser window, or i can make the footer stick to the bottom of the browser window. so far, i haven't managed to let it do both.

i usually dislike the mass mail i sometimes get, but this one's got something in it so i'll reprduce it here:

One day a farmer's donkey fell down into a well. The animal cried piteously for hours as the farmer tried to figure out what to do. Finally, he decided the animal was old, and the well needed to be covered up anyway; it just wasn't worth it to retrieve the donkey. He invited all his neighbors to come over and help him. They all grabbed a shovel and began to shovel dirt into the well. At first, the donkey realized what was happening and cried horribly. Then, to everyone's amazement he quieted down. A few shovel loads later, the farmer finally looked down the well. He was astonished at what he saw. With each shovel of dirt that hit his back, the donkey was doing something amazing. He would shake it off and take a step up. As the farmer's neighbors continued to shovel dirt on top of the animal, he would shake it off and take a step up. Pretty soon, everyone was amazed as the donkey stepped up over the edge of the well and happily trotted off!


Life is going to shovel dirt on you, all kinds of dirt.The trick to getting out of the well is to shake it off and take a step up. Each of our troubles is a stepping stone. We can get out of the deepest wells just by not stopping, never giving up! Shake it off and take a step up.

see y'all some other time

Blogged with the Flock Browser

Thursday, November 13, 2008

Rhymin' on Facebook chat

was just wording with Legzitano on Facebook chat, and for some crazy reason, the conversation went like this:

Legzie: tryna stash cash
me: in a flash, smoking brown hash, flipping the ash
Legzie: brown hash is trash
cos you may crash
me: word bro...just tryna make that rhyme
Legzie: lol
me: maybe we should dash? grab some mash? what a bash!
Legzie: good, bro!
you sing like Nash
me: omo, battery don dey run down
Legzie: no vex!
ryhming no easy

i'm almost tempted to agree with the guy who said, "Of all the things i lost, it's my mind i miss the most". almost. but not quite.

Saturday, November 08, 2008

Animal Farm

yesterday i found out (courtesy of friends on Facebook) about an event that has quite a number of people abuzz: the assault of some civilians on Monday in Victoria Island by naval servicemen, including someone i knew a couple of years ago. in the aftermath, she - and some other person - is suing the Nigerian Navy to the tune of N100m. personally, i think this is both bad & good:

  • why would not moving quickly out of the way of a military higher-up be an 'offence'? i'm a citizen - he's a citizen. the fact that we both serve our country in different ways should make no difference. if anything, the fact that i pay taxes which help to fund the machinery that pays him should be accounted for. unfortunately, like Animal Farm, it's become a case of all being equal, but some more equal than others - whatever in the world that means.
  • why would an elderly man sit & watch his aides brutalize people with no show of what Shakespeare called 'the milk of human kindness'? i side with Elihu on this one (Job 32:7, the Bible) - whatever the offence, the level of beating & the treatment given her was overkill.
  • if the higher-up is in such a hurry, he should at least have found out that there's always traffic in V/I around that time, and scheduled his coming for some other time it was lighter
  • i believe his oath on taking a uniform had some variation of 'to protect and to serve'. how are the nation's best interests protected by forcing people to disobey traffic laws just because you have an inflated opinion of your own worth? 'now all i need to push people around is a uniform'. isn't that self-service at the cost of the nation's morals. it's no wonder so many people think a uniform is a shortcut to a plush life. is he - or any other egotistical military personnel - any different from people in public office who rob the nation blind? i definitely am not going to be saying to my kids: 'Rear-Admiral Arogundade? now that's someone worthy of emulation'. in my opinion, he's no different from any two-bit thug.
  • it's good that she sought out advice (bad or good) & decided to take civil action. it means that Nigerians are learning that they have rights that can be protected. i'm hoping that there will be some win for moderation and common sense...but the inmates are running the asylum.

i could go on, but let it suffice to say that things don't look too bright. i hope the support of Uzoma and the rest isn't just for show, that we are willing to take bullets for what we believe is right, instead of merely talking about it and 'thanking God' secretly it didn't happen to us. Nigeria is ripe for change, but that change will begin with individual action. when we are true to ourselves first, then to each other, we can change things. until then...we can only hope that the pigs don't make us worse off than the humans, to paraphrase Blair.

Sunday, November 02, 2008

Firefox 3 spellchecker vs me

better believe it. i win baby!

Waiting for God

ever heard of Waiting for Godot? you can find out more by clicking the previous link. sometimes, waiting for God can seem like waiting for seems He never makes it. i realized why we get tired of waiting for God to show up with something promised: every time we're waiting for God, we're presented with the option of not waiting for Him.

today, some things weren't okay at home, and since i returned from church first, i could either go fix them or wait for my dad and brother to return to get them fixed. one of them was lunch. for some unknown sentimental reason, i was loath to get lunch (i wasn't in a position to cook it) without them being around. so i tried calling. all their phones were unreachable. i was hungry. really. so i waited. then i reached my dad. he said they were on their way. i waited some more. fell asleep. woke up. by this time, as Rudyard Kipling would say, my patience had already gone where dead crabs go. so i fixed myself something to eat. while eating it, i realized that this was the same choice we always have to make when waiting for God.

i can no longer stand with my arms akimbo and accuse Abraham of impatience, for i, too, have been impatient. i looked at the clock ticking, and said to myself, "God(ot) will never show up. looks like it's time to take care of business myself". and like Abraham, only the future can tell what i messed up by "taking care of business". i may not have been promised a son the way he was, but God has promised things in His word that i need/want, and sometimes i took the alternative and stopped trusting God. that's right. that's what happens when you choose the alternative. you pretty much say, "God, time's in your hand and all, but You live outside time. i live in time. and the clock's ticking. i need this thing now.". but what you get from your own efforts can never be compared to what God chooses for you. it may be a long wait, but it's worth it.

Looking for a .NET SMPP implementation

i work for a company that's registered as a WASP (or VASP, not really sure which is the official one now) with Glo, MTN and Zain, and we have a messaging gateway connected to these operators. we have clients we resell SMS credits to, and till rather recently we used the web service on our gateway to link our clients to the gateway.

however, due to certain things, my employer recently added the ability to use SMPP binds to our gateway. i cannot be certain until i check using a tool like Wireshark (geek call-out: any other tools that might make the job easier will be appreciated!), but i think that SMPP will consume less bandwidth than using the web service.

anyway, my boss got me and the other developer on our toes with different APIs that allow us build applications that use the gateway. since we already have working knowledge of how to build applications that use the web service, we were stuck with a COM and a Java component which use a custom protocol to talk to the gateway over TCP/IP, the SDK supplied my the gateway vendor, and different components for using SMPP (if you read my Facebook status message about fiddling with Java, i was trying to learn about a certain Java SMPP API).

since i program mostly in C#, i started looking for some component(s) to allow me use SMPP from my applications. i turned up quite a few:

  • A library written in C++ with a COM component that uses it: here
  • Easy SMPP
  • RoaminSMPP
  • The Devshock .NET SMPP component (For some time the site has been under reconstruction and so the files are no longer available from their site.)
  • InetLabs's ALT.SMS.SMPPClient class library
  • /n software's IP*Works: here

since what i was doing was trying out stuff, buying a component was out of the question. i'm also kinda biased toward open source, so that kinda kicked out IP*Works (don't get me wrong: IP*Works is probably very good - but i just didn't want it. i might try it out some other time). i got the others and started trying each one out, using a local SMPPSim server (SMPPSim is a Java program that emulates an SMPP server. great for trying out SMS appliactions)

Easy SMPP came with a demo application (there's also an SMPP server on SourceForge that uses it), but i couldn't connect to my local SMPPSim server using it (oddly enough, i could connect to the Easy SMPP gateway with it), so that was a no-go. i'll try it again some other time.

The Devshock component came with zero documentation (bad), no sources (i can live with that), and demo applications (client and server) written in Visual Basic.NET (i dislike VB, something that carried over to VB.NET. also, translating a program from VB.NET to C# without an automated tool is not particularly easy, even if you can do it). somehow, i got a demo application working with it Friday, even tested it on our live gateway.

i should have been satisfied, but the Devshock component has gone two years with no updates (which really shouldn't be a problem - the SMS specification is frozen and the SMS Forum shut down). so this weekend, i tried getting the RoaminSMPP component to work (incidentally, it was updated in October, but the author won't be working on it anymore) at home, and i sort of prefer the way it's structured than the Devshock component (it uses event handlers quite a bit instead of return codes and error messages). it does have its bad sides though. it comes with zero documentation and examples. i had to load up my trusty copy of .NET Reflector (one of the greatest .NET tools ever!) and the sources to find out how to use it (also did that with the Devshock binary, but the InetLab one was obfuscated - only one namespace of five was not).

i'm yet to test the InetLab binary - and yes i know: i probably am being an idiot, since i already have one that works (two, to be precise. why knock it?). still, if i'm giving the component to someone else to use, i may need to recommend the one that's simplest to use. anyway, you already got here. go read something else for now. i've nothing more to say here (far too many acronyms, if you ask me) :D. have fun!

Tuesday, October 21, 2008

Installing Silverlight 2.0 Developer Tools

as you might know, Silverlight 2.0 has been released. as i am wont to do, i went over to the site and downloaded myself the Silverlight 2.0 Developer Tools, which updates Visual Studio 2008 SP 1 and/or Visual Web Developer 2008 Express SP1 to work with the new release. unfortunately, the setup does not include Silverlight 2.0 Developer Runtime, and always attempts to download it (when i tried it on my computer, even when i'd downloaded the Developer Runtime and installed it separately, the install wizard still downloaded the Developer Runtime setup). to forestall this, download them both, unpack the Developer Tools setup into a folder (it's just a self-extracting package - almost any decent archiving utility on Windows can do this, i recommend 7-zip - WinRAR, ZipGenius and TugZip also can - i can't tell if WinZip does), and copy the Developer Runtime setup executable to the same folder. it won't download anything. well, work calls. later!

Monday, October 20, 2008

back at work...

got back to work today. late. it almost took me 2 hours to get to the office this morning. it only took 20 minutes yesterday!

crazy item of the hour: Exception occurred: OutOfMemor (thanks to edcba)

Wednesday, October 15, 2008


Biyi told me this joke a few days back, and i thought i should share it. there was this guy who bought a jeep with '4x4' on it, and was seeing a lady in a certain area. around there lived a not-so-balanced boy who saw the jeep everyday. one day, he took a stone and scratched '=16' after the '4x4'. later on, the owner came and saw his vehicle defaced. he got it fixed, but the same thing repeated twice. the owner then decided to add the '=16' after the '4x4' himself, and asked the body shop to do it for him. the next time the schoolboy passed the jeep, he saw the new 'equation'. he then took a stone and scratched 'VERY GOOD' and a tick on the jeep.

Fixed-position footer

i've been working (more accurately trying to work) on the TOS Funerals website design so it works well in older browsers, because it degrades horribly in them. for this to work, i needed a technique to force a footer to stay at the bottom of the window whether or not the content filled the window. the first technique i tried was from Boagworld. it worked like a charm - but only in newer browsers (Chrome, Firefox 3, Flock 1.2, IE 7, Opera 9.6, Safari 3/Win). it completely failed in IE 5.5 and 6 (quite unlike the advertisement. my guess is IE 5.5 and 6 don't understand the conditional comments).

so i got my rubber gloves on and tried getting a new technique - once again a Javascript-free method of getting about it. from yesterday's tests, this technique from Dave Woods' blog worked in IE 5.5 and 6, as well as the newer browsers. guess that's what i'll be using for now.

Update: the fault was with me. the Boagworld technique works. quite well, in fact. and it's smaller in both markup and styling.

here it is in Chrome:

Firefox 3:

Internet Explorer 5.5:

Internet Explorer 6:

Internet Explorer 7:

Opera 9.6:

and Safari 3/Win:

Monday, September 29, 2008

Code Geass is over!

i never really wanted to watch Code Geass: Lelouch of the Rebellion, because i read about it and found out Lelouch killed his sister. at any rate, someone got me watching it and i have to admit it has an extremely gripping story.

on Saturday, a friend came over and it suddenly struck me that Lelouch was planning his death, and i mentioned as much. there was only one episode of the second season left and it was to be shown yesterday (Sunday). the name "Zero Requiem" had been tossed around and i realized that a requiem is a song for the dead. it was brilliant how Lelouch executed his death. i kind of was hoping for a happy ending, or some romance, but it was not to be. ah well. i guess he really did make everyone happy. in that, he and Suzaku were heroes, but he was the unsung one. great story. hopefully now the twins will give themselves some peace...

Wednesday, September 24, 2008

bringing you up to date...

so what's been happening in recent times is i got into some serious trouble i had to take care of, so i've only been to work once this month. can imagine what that means about blogging — it had to take a back seat. plus i fell ill for over a week. the one good thing about it is i confirmed i'm not fat, since i hardly ate throughout the period and i didn't lose weight :D. no, i'm not back to work, nor am i at home. you can just keep guessing — maybe i got someone pregnant? or killed someone? just keep guessing!

down to what Neo calls geek-stuff: why, oh why must programs install on C:? and why is the install procedure for Microsoft SQL Server 2008 Express so involved and such a pain in the butt? i don't have Visual Studio Service Pack 1 — so what? SQL Server 2005 Express was about 240MB, 2008 Express is over twice that - and still without Books Online. why would you give me a product that large and not add documentation? i am not always online! arrgh! at the very least, give me a choice of the packages i want to download if you're really interested in helping me conserve bandwidth. i've stopped ranting about Microsoft alone by now, but every company that will supply software over the internet. Thanks if it's free (whichever way), but there are parts of the world where it sometimes seems God turned off the internet. help the people in those areas might be a pain implementing, but if we can choose before we begin the download, it might help some of us who don't know everything about everything...

anyway, i should soon be back home and i can at least update my antivirus program again. later then!

Saturday, September 06, 2008

Waiting for God to turn off the internet...

...but while i'm waiting, i'll say hello - it's been a while since i updated this blog last. hiya doing? hope you and all your important people are doing well

now to today's business. i'm writing this post from Google Chrome, which i must admit, looks pretty good, especially for a beta product. however, it's spellchecker doesn't recognize the words "spellchecker", "plugins" or "google" (specifically in lowercase). and i don't know how it will do with plugins like Flash. and even though it's still early days - why can't i customize where the install goes to? huh?

dude, web design isn't for the fainthearted. seriously. i've been working on a redesign of the TOS Funerals website, and it's not exactly been a walk in the park getting the design to work cross-browser. i swear Internet Explorer has some beef with me. first, the content area isn't set off properly as it is in other browsers (even in IE 7 standards mode!), and i've been unable to fix that so far. something else i got fixed was the fact that IE kept drawing a border around my horizontal rule. i had to do two-step hacking: add extra markup and styling. grrrrrrrrrrrr! i've some idea how to go about it now, but i still think it bears mentioning since i haven't actually fixed it: forcing a page to be at least as high is the browser window so the footer "sticks" to the bottom of the window, irrespective of how much content is actually in the page. my own solution saw the footer somewhere in the middle of a long page in IE (again). many thanks to the guys in #css on Freenode for steering me aright - this dude is much obliged. the testsuite for the new design is available at (creating this post revealed that Chrome's text selection drag and drop always moves text, irrespective of whether or not you hold down the Control key...sigh!)

Sunday, August 10, 2008

Grouse with Facebook

morning. been a while since i last visited. well, i went to Ife and was offline almost all the time i was there. have you noticed that if you make a mistake signing in to Facebook, you hit Escape/stop the page, then try signing in again without refreshing, you can't sign in anymore? why are the Facebook developers using Ajax for the login page? wouldn't a simple submit form have sufficed? and if the Ajax was completely necessary (for instance, some webmail providers encrypt the password at the client's end before the login form even leaves the client), it shouldn't put the page in a state that the page is unusable if the user cancels it. not good, in my opinion.

Tuesday, July 29, 2008

O/RM and templating

i have a problem. i'm sending text messages to people based on data in a table. but people being who they are, they want to change the message structure at will. and the structure is currently hardcoded. so if i want to make the structure dynamic, i need a template system. i also need to map specific table fields to those template variables, then make the template changeable at runtime. that requires O/RM, so i can map table fields (relational) to objects i create in my code, and all the SQL is generated on my behalf by the O/RM engine. so far, i'm going with ActiveRecord and NVelocity from the Castle Project. i've used NVelocity, so i hope i'll get the same level of success from ActiveRecord (so many dependencies though :)

IQ tests are warped

Warning: shameless plug coming up! i added the IQ test application in Facebook. later on, the Advanced IQ test was recommended, so i added it and took the test. when i completed it, i found out of 15 questions, i only answered 13 and only got 6 right. yet when my IQ was calculated, it was rated over 100 (no, i am not telling you my computed IQ), which is not bad. in fact, it was higher than what was calculated using the regular test. hence my think they are warped. oh, 70 is idiot territory, so i guess i'm okay

Saturday, July 26, 2008

Avatar is over!

finally, i've watched all the episodes of Avatar: The Last Airbender. i have to say that all in all, the series was good. yes, there were some parts that really could have been cut out (like Season 3 Episode 17, The Ember Island Players) or modified, in my opinion, but then that's just my two cents.

stepping into Subversion

i've been joined by two other developers at work, so i needed to give them access to the code i'd written. i saw it as a great opportunity to try out version control, so i gave one of them the task of learning Subversion. he hadn't gone very far with actual implementation, and then my boss put him on something else, so i thought to myself, "what the heck" and started reading about subversion myself tonight. i installed the Collab.Net Subversion server, then TortoiseSVN and began scanning through the book (what? you expect me to actually read it? maybe on your time, not mine. it's past 2am here, for crying out loud).

i set up a repository, checked out, added a new file, tried to commit, then boom! authorization error! now the subversion book didn't say anything about this. so i downloaded HydraIRC, connected to Freenode, and joined #svn and ##csharp and asked. after some time with no answer, i went googling and found that a default repository allows anonymous reads and no writes, especially if you're connecting using svnserve. later on, someone gave me the same answer i got while googling. also got some useful tips, from the channels and the TortoiseSVN manual. in short, if you're going to use Subversion using the svn:// protocol (using svnserve, that is), you're going to need to configure your repository correctly. since it's in the TortoiseSVN manual, i'll refer you Windows users to it. please read Chapter 3, Section 2: Svnserve Based Server. everyone else, please look here for a few tips on configuring your repository for read/write access.

Saturday, July 19, 2008

i didn't go with .NET configuration files...and would like your input

i've been working on an application that needs to get some configuration parameters at runtime. at first, i thought of using configuration files, but then i realized that i would need to create another application that would be used to change the config. usually, an application config file is "tied" to the specific executable that it is created for, so - not being comfortable with XML in .NET - and having a tight schedule, i looked into other options. one was the registry and another was a custom config file. right now, i'm using SQLite as my storage medium, with the advantage that i can use the relational model if i need it. obviously, it has some drawbacks, but so far, i've got used to it. let me know what you think - assuming you do think anything.

Rant: why is Opera taking a long time to open Blogger - with no activity whatsoever? it's happened twice already...

Friday, July 18, 2008

The past week in review

hiya. been almost a week since my last post here. ah well. just wanted to bring you up to date with what's going on here, "here" being my life. grrrr. my neighbours decided today to have a party (an all-nighter by the sound of it), meaning there's going to be quite a bit of noise around.

in case i didn't mention it, i was in school last week. saw a couple of the guys, stayed over at Biyi's place while i was there. he seems to be getting along with his final year project and other stuff in his life. i'm happy for him. anyway, while there, i got some anime and have started watching Black Lagoon and Katekyo Hitman Reborn. i've also started Monochrome Factor and almost completed Hayate The Combat Butler. however, the anime series that currently has occupied my time is Code Geass. i started on Saturday and have almost completed season 1. i don't think i'd want someone like Lelouch as my opponent. my current fantasy revolves around a showdown battle of wits between Light Yagami (of Death Note) and Lelouch Lamperouge. sadly, this just reminds me of just how far behind i am with anime. Bleach, Eyeshield 21 and D.Gray-Man are all examples of abandoned anime projects. maybe you now understand one of the reasons i hate my job.

Wednesday: some local government people came around the building where i work and started complaining about the environment. so i don't bore you, they locked me and some other people in the compound. i had to jump over the gate to get out. i heard they later opened the gate - which is good, since almost everyone left in is female. every time i look at my right arm i remember - because i got scratched getting out. fro crying out, it's over 10 years i last did something like that!

Tuesday: i found that Visual Studio's debugger is superior to SharpDevelop's in one respect: if you're debugging applications within the environment, SharpDevelop's only catches uncaught exceptions. So if you're using System.Timers.Timer.Elapsed (for example), you'll never catch any exceptions. Visual Studio's, however, has no such compunctions, and will show exceptions even though the Elapsed event handler suppresses all exceptions. i can tell you that that's what saved my bacon on the current project i'm handling.

Monday: this project is my first experience with Oracle (even though i've had the express edition for almost a year), and if there's one thing i've learnt: always use 4-digit date literals in Oracle, especially if (like me) you're from a MySQL (or other database) background! i spent the whole weekend plus the greater part of Monday wondering what bug in Oracle i uncovered, only to find it wasn't a bug, just an Oracle quirk.

i've a custom class in my application that stores database connection parameters (previously in individual variables) - server, port, username, password and whatnot. since i'm moving to deploying the application solely on SQL Server 2005 Express (maybe PostgreSQL when i have the time to learn it) for now (no thanks to the many quirks of Sybase), i'm now simply hosting a SqlConnectionStringBuilder in the class. you really can't beat KISS.

while i'm still a newbie at regular expressions, i can definitely say they're great when they're used rightly. if i had to write custom code to validate phone numbers, i'd probably have a minimum of 20 lines of code, plus new if clauses (or similar) to write if the networks change. thanks to regexes, i can validate Nigerian GSM numbers - with or without country code - with about 3-4 lines - including creating the System.Text.RegularExpressions.Regex objects i want to use. and if i need a new case, i'll just have to change the pattern string. a pity more Nigerian developers don't seem to know about regexes - unless i'm wrong.

i need sleep! 'nuff said.

Saturday, July 12, 2008

Working with malware

hi. it's been a long time since i was last here. one month, eh? that's pretty bad. anyway, the point of this post is that i was recently in school, and came across some malware - one of which isn't picked up by any antivirus program i know as at now. this worms spread via USB storage (flash drives, external hard disks and so on). each copies itself to a clean device and also creates an autorun.inf entry in the device if it does not already exist (i can't tell what happens if it already exists). the one detected by AVG 8 Free has an executable named, and the one that isn't detected as at now has an executable named EXPLORER.EXE.

when i got to school, i had the 'privilege' of cleaning out two of my friends' computers. one was infected by the EXPLORER.EXE worm - which is easier to deal with if you don't have any antivirus installed - and the other was infected with the worm (if you have an antivirus that detects this, this is much easier to clean than without any antivirus, or one that doesn't detect it). let's start with the first.

EXPLORER.EXE worm in Process Monitor normally, a Windows machine has a process called explorer.exe. this process usually serves both as the shell (the program you use to launch applications) and the file manager. the executable for this is located in C:\Windows, has version information that comes from Microsoft, has the 'My Computer' icon and is about 1MB on a Windows XP machine. this worm is about 36kB, has no icon, has the same version information as the legal explorer.exe and runs from C:\Windows\system32. to get rid of this worm, you'll need a couple of applications from Windows Sysinternals, specifically Autoruns and Process Explorer (you can also download the entire suite if you want - it contains both). launch Process Explorer (an excellent task manager for Windows), accept the license agreement if you need to, and kill the EXPLORER.EXE process that doesn't have the My Computer icon and is running from C:\Windows\system32. next, launch Autoruns, allow it finish scanning, then delete the entries containing C:\Windows\system32\EXPLORER.EXE (use Ctrl-F) if you need to search). lastly, get rid of the worm executable itself. open a command prompt, and run attrib -h -r -s C:\Windows\system32\EXPLORER.EXE; del C:\Windows\system32\EXPLORER.EXE. this gets rid of the executable in its default location. your mileage will vary if Windows isn't installed on C:. EXPLORER.EXE worm in Autoruns

the other one is much harder to deal with because it creates a 'non-existent' process, according to Process Explorer. in fact, the process won't even be displayed in the processes list. i had to search for it manually. going through the console to use taskkill with the process id won't work either. so we're going to do it in the reverse flow. first, run Autoruns. search for appearances of autorunning, and disable, don't delete them. that's because if the worm is still running, it will simply recreate those entries. once you've disabled the entries, you can note the locations of the worm and reboot so you can delete it from all its hiding places (for me it was C:\Windows\system32 and C:\Program Files\Common Files\Microsoft Shared\MSInfo. again, this worm is hidden and probably has a system attribute set, so you need to remove those flags first. i'd personally recommend getting a recent (and decent) virus removal tool to remove this particular nasty, as it not only infects removable drives, but also fixed drives on your computer.

well, hope this is of some use to someone. have fun!

UPDATE: After a couple of days carrying around the EXPLORER.EXE worm on my external hard drive, i found that McAfee picks it up when i connected it to a colleague's computer. as at that time, neither AVG 8 Free nor PC Tools Antivirus was detecting it as a worm.

Wednesday, June 11, 2008

Windows power schemes

you really can learn something new every day. i recently formatted my laptop a couple of times for a number of reasons - one of them being that i found that my processor was constantly operating at its maximum speed and this was running down its battery seriously. after a new install, i noticed once again that the processor had starting running at its maximum speed again without stepping. i'd just installed WiX, and thought that might be the cause - but WiX doesn't update any system components, so i dismissed the idea (also, i'd installed WiX before and the processor was still stepping then). i'd gotten tired of formatting by then, so i just decided to keep using the laptop and its internal "oven".

this morning, i decided to google power schemes. i then found that for a laptop, power schemes really do matter beyond timing for switching on/off hardware like the monitor and hard disks. get this: they also affect the way the operating system uses the processor. for instance, the difference between "Minimal Power Management" and "Max Battery" is only the timing for turning off the monitor, hard disks, and going into standby - but under the hood, the CPU is allowed to toggle its speed based on demand. there's no difference between "Home/Office Desk" and "Minimal Power Management" when the laptop is on battery. for more information, please look up this article on Orthogonal Thought.

Blogged with the Flock Browser

Sunday, June 08, 2008

finally...finished Shounen Onmyouji!

Shounen Onmyouji is an awesome series, in my opinion. the opening song, Egao no Wake is wonderful (here it goes on my phone!), the story was great and flowed very well, and the end is awesome...(mostly). i was wondering what was going to happen in episode 26 when Masahiro kills Touda before the episode goes halfway. somehow, the end is rescued, and we get a believable ending...but why is the ending hinted at? if you - like me - rarely watch the end of an anime episode, you'd never find out that Akiko & Masahiro do go out to see the fireflies. ah well. in all, great series. pity i can't say if there'll be another great season.

Blogged with the Flock Browser

My phones and purpose

as i mentioned, i recently changed phones. i got a Nokia 7500 Prism to replace my 2600. One of the headaches of changing phones is migrating numbers. my SIM was full, and almost the same number of contacts were stored on my 2600. so i looked through my 2600, checking if the number was stored on the phone or on the SIM card, and then recording it in a text file - so i could transfer all my contacts to the new phone. i spent roughly an hour and a half doing this.

i can almost hear you say: fine, but what's this got to do with purpose? please bear with me - i can be a little long-winded when i'm trying to make a point. so i did that, then i put the SIM into my new phone and started using it - but the numbers stored on my old phone were still not on the new one. i went about for a day or so without having access to newer contacts. i then looked through my contacts (after finding out i wanted to contact someone, then seeing i didn't have their contact info), and found my 7500 had a function to move contacts from the SIM to phone memory. i did that, and emptied the SIM. i then checked the 2600 and found it could copy contacts from the phone to the SIM. so i did that too, and then moved all the contacts from the SIM to the 7500. if i'd only read the manual, i'd have saved myself about an hour and a half of typng out names and numbers.

i hope you get my point. some people might have spent another one and a half hours - or more - keying in the numbers into the new phone. but i decided that there was a better way. fortunately for me, i'm not as technically challenged as some folks, so i kind of figured out where to look pretty quickly.

let's imagine the time spent migrating contacts was your life. would you want to spend your life doing unnecessary things just to find out it was all unnecessary at - or after - its end? wouldn't you want your life to count for something? some people spend their whole lives doing things that won't count. there's Someone Who knows - much better than you - what you're meant to be doing. sadly, we usually think we - or worse off, other people - know exactly what we're meant to do. the person who best knows how my 2600 should have been used is its designer. God knows best what you're meant to do with your life. don't waste your life guessing what you're meant to do. ask Him! (James 1:5,6, New Living Translation, paraphrased: If you don't know what God wants you to do, ask Him, and He'll gladly tell you...). i pray you walk this path. life isn't meant to be guesswork.

Thursday, June 05, 2008

i got me a new phone, praise God!

i have no idea how it happened, so don't ask me, but this is what happened: i rarely change phones. i'm a strong believer in KISS, so if it can send/receive calls and text messages, it's a phone. even when MTN was giving out free MMS messages, i just had a faint feeling of loss. you know, the kind you get when you "miss" someone you never really knew. so i use my phones. and i rarely replace them. each phone replacement i've got was because the old one was faulty, got stolen or missing, except for the second. i have no idea why, but my parents decided to get myself and my sister new phones then. even the first phone i got was a hand-me-down (which i eventually handed off to someone else).

anyway, after being through about 5 phones in about as many years, my faithful Nokia 2600 developed a quirk. from time to time, it would stop ringing out (even in General mode), until ringing out at all became a very rare occurrence. i merely complained about the phone and didn't try changing it (i'm sure my pocket also had a great deal to do with this :). i was really shocked one morning when Dad, a friend and i were going out, and my dad asked why i didn't pick up his call. i mentioned my phone didn't ring out (dude, forget vibrating - i rarely notice that when i'm about). he gave me some cash to buy a phone. for maybe 2 weeks or so i kept stalling over the phone, which made no sense, because phones are sold less than 30 meters from my office. yesterday, after having a very interesting day, i just got mad and went to buy the phone. i didn't see something i liked in the display case, so i went to the price list. i saw something costing exactly what my dad gave me (no, it's not that much - but it's a sizable chunk of my monthly salary). i don't know why i felt good about the phone. i requested for it, paid for it without knowing jack about it, and went to test it. when the guy who tested it was closing the box, i asked where the USB cable was. He said it wasn't included and it would cost me an additional NGN 2500. i had that much on me, but i wouldn't be able to get home without visiting the cash machine, so i decided not to buy it. after buying the phone, i began feeling guilty, but i shook off the feeling and went home. getting home, i found i really like the new phone, plus, it uses the same cable as my MP3 player, so i really feel blessed! later!

Blogged with the Flock Browser

Sunday, June 01, 2008

Blender 2.46 out!

it's coming late, but Blender 2.46 is out, and the Big Buck Bunny movie is also out. personally, i downloaded Blender about a week back, but i haven't really don anything with it, since i'm doing a lot more programming than most anything else. and with the new release returns an old problem: i can't render with YafRay (no, not Yaf(a)Ray) as a plugin in the render window without Blender crashing. ah well. so i had to figure out workarounds - render into the 3d window, use YafRay from XML, or not use YafRay at all;)

Thursday, May 22, 2008

So Man Utd finally won...

now maybe i will get some peace! blooming soccer fans! i have no idea what makes soccer so captivating. it really does dey logic. my borther - who's a Man Utd fan - didn't eat until the match was finally over. i guess he realized that whatever happened, the players still don't realize his existence. and that's my problem with Nigerian supporters of foreign teams. don't they realize that for the most part, the players don't know they exist, nor care if they are cheered on by some people they'll never meet? and yet the madness continues. men who are never alive as far as their families are concerned suddenly come alive when there's a meet between "their team" and "the enemy". ridiculous. that's why i insist that football is demonic. the Bank PHB ad about La Liga really puts it in context.

Blogged with the Flock Browser

Java vs Ruby? Ruby wins...

if for no other reason than the fact that there are much fewer books to confuse you. and here's why

Blogged with the Flock Browser

Monday, May 19, 2008

Creating a Windows service in .NET

much as i would like to, this isn't a real tutorial about creating a Windows service in .NET. there are lots of excellent tutorials in that regard. this is just to highlight some problems i had recently when i created a service. usually, the service sits in the background, waiting for "something to happen", maybe a client connects, a timeout goes off, and all that. my service is a time-based service that performs certain actions when a timer goes off.

to get my service doing some "real" work, i used the System.Timers.Timer class, which has the Elapsed event, which calls a callback method when the timer fires. here's a caveat: the callback for the Elapsed event suppresses all exceptions in .Net 2.0 and lower (i can't categorically say that the behaviour isn't the same in higher versions). forget processing unexpected exceptions in your callback - they'll get supressed. and you may end up like me: after putting in a full day at work, spending the night there, and putting in another full day, you're at the client's and the service runs but doesn't do anything.

my fix? in my callback, i start a separate thread. the thread takes responsibility for doing the processing that was in my callback, and i once again can see what exceptions occur in my processing. by the way, design your tables so none of your fields are allowed the NULL value in .Net. use sensible defaults instead of NULL, becaue you never know when you'll get a System.DBNull object that isn't automatically converted to null. later, then!

Edit: when services run - irrespective of where the executable actually is - the working directory is always C:\WINDOWS\System32. that can be a problem if you access to files residing in the same location as the executable, especially if you don't know where the service executable is (if you think that is strange, think again: you - or someone else - could create an installer that allows the user customize the location of the install). if you need to get access to the executable's location, you can do:

string basepath = System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase;
this will retrieve the path in a format such as file:///C:/..., so you'll need to trim off the beginning of the string returned.

i used SharpDevelop for creating my service, as creating the service from scratch (Visual C# 2008 Express) or tusing an application template (Visual Studio 2008) gave me problems when trying to install the service using installutil. SharpDevelop integrates with FxCop, a code analysis tool developed by Microsoft. running FxCop on my executable showed me some things i'd never really noticed before, such as using string.IsNullOrEmpty(variable) instead of if ((variable == string.Empty) || (variable == null)) to check if a string was empty or null.

Blogged with the Flock Browser

Fun and nonsense in Freenode's ##csharp

from time to time i hang out in ##csharp on Freenode. the guys there are great (mostly) - they've helped me out with quite a number of problems. and it's just plain fun to hang out with them. here's a excerpt from the conversation there this morning:

[11:39] <scruz> i don't ever want to be you - link managed and unmanaged code
[11:40] *** Mathius joined
[11:40] * scruz shivers at the thought of interop_madness' pain
[11:40] <Mathius> hi
[11:40] <interop_madness> you you don't want to be on the same planet as me
[11:40] <scruz> what planet is that?
[11:41] <+smellyhippy> Mathius: ello
[11:41] *** SDragon quit (Read error: 104 (Connection reset by peer))
[11:41] *** SDr joined
[11:41] <interop_madness> dunno, but it certainly has no sun shining
[11:41] <scruz> yello Mathius
[11:41] <Mathius> O_o
[11:41] <Mathius> hey hey
[11:41] <scruz> from Earth import Sun
[11:42] <Mathius> >_>
[11:42] <scruz> Sun.shine()
[11:42] <Mathius> public sealed class Earth : INoLight
[11:42] *** gregzx joined
[11:42] <scruz> lol
[11:42] <pandzilla> haha
[11:43] <Mathius> CSC Error: You cannot look for light in an instance of type 'Earth'.

Blogged with the Flock Browser

Sunday, May 18, 2008

Multiple IEs on your WinXP machine

if you're like me, you like to use the latest software. that includes browsers. unfortunately, the latest browsers are a really bad idea if you're into web design - specifically standards-based design. because you need to workaround features not supported in older browsers. i made a really big mistake when designing a client's website - i designed it using the latest Firefox, Opera and IE7. it was okay in those browsers. imagine my shock when i viewed it in IE6 and it was fugly. and that was after deployment.

to avoid my mistake, you want to design using IE6. unfortunately, even i don't encourage you to use IE6. so how can you get IE6 for testing your web pages? well, i originally thought of using VirtualBox to create a WinXP disc image on my system - but that's a waste of about 2GB just to test web sites. so i went googling. and i came up with Multiple IEs. at first i thought it was just snake oil, especially when i ran IE6 and went to Help -> About. however, when i tested it, i got IE6's signature crappy rendering - and it was different from IE7's, so i'm quite happy advertising it. thanks to the guys over at TredoSoft!

Cleaning out my C:(loset)

i'm not sure why, but more and more, software installations tend to assume you have just one partition on your machine - that, or you absolutely don't mind it getting filled up with things you don't really know.

lost? let me explain: i'm in the habit of breaking up my harddisk into partitions. i used to leave 5GB on C: for OS files, taking into account that some software will always install some things on C: even if you tell the setup wizard to install on some other partition. that was enough about 4 years back. i upped it to 7.5GB sometime back, and finally to 10GB. now it seems even that isn't enough. i installed Visual Studio 2008 recently, and my free space on C: has plummeted down to less than 2.5GB - without enabling hibernate. i dread what would happen if i installed Adobe products - at least another 400MB would go should i install CS3 Design. yet i have over 14 GB lying fallow on a partition i reserved for installing application software. even with CCleaner installed, i can't free up any space. granted, a heavier-duty application can help with that, but i don't have much hope in that direction.

darn shame what they do to my disk space.

Friday, May 16, 2008

What happened to the Adobe-Yahoo collabo?

i just downloaded Shockwave Player 11 to install on my computer (yes, right now it seems nobody uses Shockwave anymore - Flash seems to have effectively killed Director) and i was surprised - no, shocked - to find the installer prompted me to install the Google toolbar. Google? what happened to Yahoo-integrated search in Adobe Reader? must be because i'm so tired...i'll check again when i do not feel so sleepy ;)

Blogged with the Flock Browser

Thursday, May 15, 2008

long time!

haven't been here in a long time. stuff's happening, and sometimes it seems hazy, but i'm sure i'll win. things are looking up now, so i'll be here more often. later!

Thursday, April 24, 2008

been so long!

wow! it's really been quite a while since i was here. anybody miss me? guess not, judging from how silent my phone was before now. anyhow, i'm currently back in school. to clear up any issues with my results. and find out if i made the final cut. for service, that is. however, i got in kinda late and so all processing is going to have to wait till today. on my way here, i saw a sign advertising a church's programmes and containing the word 'enlargement'. users of Google mail may tell you that one recurring theme in their spam relates to penile enlargement. considering it's been so long since i've seen the word 'enlargement' in any other context, you can imagine what reading it on that sign initially did to me. maybe i really do have a dirty mind. later!

Thursday, April 03, 2008

Microsoft is weird!

seriously. everyone who has programmed in a real programming language knows that numerically-idexed arrays begin at index 0 (sorry, Basic fanboys). however if you're using the Microsoft SQL Server 2005 driver for PHP and you use sqlsrv_fetch_array() with SQLSRV_FETCH_NUMERIC, the array is indexed starting from 1! it's quite easy to miss this - i know i did. all the same, it's great to see Microsoft being so 'benevolent'. Don't tell me: it's just a ploy to migrate Windows developers to SQL Server!

Blogged with the Flock Browser

Saturday, March 29, 2008

jus' chillin'

yo. long time, no see. man, the last one week has been - wow. Rental Magica is over - and i really do hope they begin a season 2. i really love that anime. and to think the twins almost made me not watch it! Bleach is on hiatus till April 9 - guess the anime has pretty much caught up with the manga now, and they don't want to introduce fillers at this point. yes, Dami was wrong - the producers chose to stop the anime rather than introduce fillers, or so it seems right now. what else? oh, yeah - i knew Castlevania: Aria of Sorrow was one of the coolest games ever! i saw Konami released it for mobile phones. yes, i love that game. even though i've completed it a number of times, it has awesome replay value...should i start playing it again soon? and it's cool that if you play the game cheat-free, it's very unlikely you'll get a complete soul set. for instance, the Zombie soul is one of the most annoying souls to get - and it can come in very useful in fighting a number of bosses (Manticore and Headhunter, anyone?).

as usual, i didn't prepare for the KMA test today...hope my score turns out good. it's hard to believe - even though the Bible shows precedent for it - but even in a school of ministry, there are people who'll do anything to pass. the test was over and the principal collected the sheets - but since he was tied up in preparing and presenting the video seminar, he didn't take the sheets in. there were people - remember, this is Bible school - that took back their scripts and kept writing even after everyone else had submitted. being smart? i don't like to think so. i think it's a basic lack of integrity coupled with fear of failure that makes people do things like that.

so what's my point? my point is: even if i haven't done that specifically, i have done things like that, showing my integrity can be questioned. for instance, if i flirt with a lady i have no intention of going out with, i'm not walking in integrity, because my thoughts, words and deeds don't add up. anyway, i have to go - power's off and i'm powering this EVDO card with my laptop battery...

Sunday, March 23, 2008

Software gripes

i sometimes play with 3D, though the time to do so is getting smaller and smaller recently...and anyway, i have a number of software packages installed, including Wings3D, Blender, Softimage|XSI Mod Tool, and an old version of Amapi. i've also had some experience with Autodesk 3ds max and Maya (very little this one).

the thing is: when i got a video tutorial showing how to model in Softimage|XSI and was using it with the Mod Tool, a recurring thought was: this would have been soooo much easier in Wings or Blender. i can model a mug in Wings in less than 5 minutes flat, including subdivisions. trying to reproduce the same thing in XSI would probably take me over 10 minutes. one reason may be because i'm new to XSI and have the Wings/Blender UI mostly down; another might just be because it really is easier in Wings or Blender. for instance, in the default Wings or Blender interaction mode, rotating your viewport is a matter of clicking (or dragging) your middle mouse button. the same in XSI is press O on the keyboard, then left-click for free rotation; middle or right for axis-constrained rotation (hint to Wings and Blender developers: mouse-controlled axis-constrained rotation isn't a bad idea). selecting polygons in XSI is annoying unless you're using raycasting - you need to lasso (with the risk of selecting something you don't want); in Blender, right-click, in Wings, left-click. so far, i'm trying to convince myself that XSI users aren't idiots (they really aren't).

by a similar token, while i'm now more used to the GIMP, i'd still rather use Paint.NET or Photoshop - simply because i find them easier to use. i'm loving Inkscape though, and Expression 3.3 is nice - but i haven't got the hang of it yet. my point: anyone fanatic about software simply because it's free or it cost them money needs a head check. at the end of the day, it's productivity - which is a relative of ease of use - that matters. 'nuff said.

Blogged with the Flock Browser

Wednesday, March 19, 2008

i saw you

i saw you last night, you know. i saw - and heard - you. you were at the bus stop. carrying a baby on your back. and you asked me for help. i wanted to, you know. i really did. but it was to 8 at night. and it was just Dad and i at home. i had to do the dinner. i had to return Pastor's flash disk. and i had to rush for a bus. plus i was dead tired. so i ignored your plea. not that i wanted to. because my heart ached for you. i don't know why. but i was sad. so i did what i usually do. i put on my mask. like Ichigo, i changed myself with the mask. unlike Ichigo, i didn't get any stronger. but i kept the sadness to myself. and i got through the night. i remember you now. and though i never helped you last night, i pray you find help. i pray the One who watches over the orphan helps you. and i pray if i ever see anyone like you, i will not be too caught up with life to stop and help them.

Thursday, March 06, 2008

the spam Google mail accounts attract...and bloody Hellsing

just wondering why the most common spam i get in two Google mail accounts is penile enlargement. must be pretty popular these days. on a far more interesting note, i've seen Hellsing Ultimate episode IV. as bloody and gruesome as the previous three - maybe even more so, with a scene in which Alucard pushes Rip Van Winkle's gun through her (yes, Rip is a girl...for some reason i always pegged her as a very feminine guy...) and start lapping up the blood on the floor of the ship...if you already read the manga, this won't be a spoiler for where did i put that Hellsing manga again...?

Blogged with the Flock Browser

Flock 1.1 out - with webmail support

Flock 1.1 is out, and has webmail (Yahoo! Mail and GMail support!). i'm seriously loving Flock. grab your copy now!

Blogged with Flock

Thursday, February 28, 2008

my boss better not be reading this!

i did it. i wasted today. i spent almost all day playing Rat Pack on Facebook. yes, i feel like a louse. but it was fun! i don't want to do it again, though - too risky to doing anything useful!

Blogged with Flock

Monday, February 25, 2008

xkcd strikes again - this time with fruity goodness!

f**k grapefruit. by the way, if you read xkcd, check the image properties. sometimes he puts the really funny stuff in the image title.

Blogged with Flock

On Creativity (but mostly a rant about Lifehacker)

as with email, subscribing to a feed, especially a very frequently updated blog like Lifehacker is a mixed blessing. you can get lots of 'spam' when you subscribe to such a feed ('spam' meaning things you're not interested in). or you can get some really cool stuff, like this article on creativity. personally, i think Lifehacker is really cool - but there's so much there, i have to train myself to ignore things or i'll never get anything done. that said, Gina and the Lifehacker crew do a great job. but when do they actually get round to doing anything else? :D

Blogged with Flock

Saturday, February 23, 2008

As a man thinketh

Got this in my mail recently. Thanks to cable-t-y. PLS GET TO THE END of it! There are two nuns. One of them is known as Sister Mathematical (SM) and the other one is known as Sister Logical (SL). It is getting dark and they are still far away from the convent. SM: Have you noticed that a man has been following us for the past thirty-eight and a half minutes? I wonder what he wants. SL: It's logical. He wants to rape us. SM: Oh, no! At this rate he will reach us in 15 minutes at the most. What can we do? SL: The only logical thing to do of course is to walk faster. SM: It's not working SL: Of course it's not working. The man did the only logical thing. He started to walk faster too. SM: So, what shall we do? At this rate he will reach us in one minute. SL: The only logical thing we can do is split. You go that way and I'll go this way. He cannot follow us both. So the man decided to follow Sister Logical. Sister Mathematical arrives at the convent and is worried what has happened to Sister Logical. Then Sister Logical arrives. SM: Sister Logical! Thank God you are here! Tell me what happened! SL: The only logical thing happened. The man couldn't follow us both, so he followed me. SM: Yes, yes! But what happened then? SL: The only logical thing happened. I started to run as fast as I could and he started to run as fast as he could. SM: And? SL: The only logical thing happened. He reached me. SM: What did you do? SL: The only logical thing to do. I lifted my dress up. SM: Oh, Sister! What did the man do? SL: The only logical thing to do. He pulled down his pants. SM: Oh, no! What happened then? SL: Isn't it logical, Sister? A nun with her dress up can run faster than a man with his pants down............ And those of you who thought the ending would be dirty pray for forgiveness!

Blogged with Flock

Tuesday, February 19, 2008

Learning every day!

i consider myself a pretty good Windows user. i'm very conversant with quite a number of features of Windows, and have acquired a number of tricks. in fact, i had a pretty high score in the Brainbench Windows XP Fundamentals test. so i considered myself a bit of a sysadmin.

well, yesterday saw me back in school, and today saw me back in the cafe where i worked as a student (doesn't that sound good? heh). something that had always puzzled me was some computers just suddenly stopped showing the LAN properties, even to administrators. no user could access the network properties and configure them using the GUI. it had happened a couple of times and each time it happened, i would repair/format the computer. today, the same problem occurred - and the Windows XP CD was broken. so i had to try to find a way to configure the network card without formatting if possible, as there was not XP disc on hand. something made me feel strongly like there should be a commandline tool to configure a network interface on Windows. i got to Google, entered a query, and found out about netsh. using netsh, i was able to configure the network interface without a GUI. i guess i did learn something new today.

so much for being a sysadmin

Friday, February 15, 2008

bug in IDLE?

i play around with Python. i 've never done anything serious in it, but it's a very handy tool. it's saved my butt a couple of times at work, or at least saved me some nightmarish coding in C, C++, C# or Java. on most major platforms on which it runs, Python comes with IDLE, which comes with an interactive shell for quickly trying out Python scripts, as well as a 'real' editor for creating scripts.

i've used Python for about 2 projects since starting work - similar things, really...and i've noticed that when i'm writing output to a file and run the script using IDLE, more often than not, the file never gets written to the end. in the latest examples, i created a Python script to create SQL INSERT statements to quickly populate a database to test another application (i probably should actually populate the database directly from the script, but that will be a 'long thing'. besides, i already saved myself a little trouble entering the data myself ;)). anyway, the script includes a option to ask how many rows of data to create. i was expecting to see 200 lines of INSERT statements, but it stopped on the 182nd line. this isn't the first time. i ran it again and something similar happened. i had to open a console window and run the script to get all 200 lines written. i'm not sure if it's a Windows-only bug, but i'm going to report it as soon as i can

Update: i posted the problem in Freenode's #Python, and i was told that i should flush() the file. when i tried it, it worked!

Blogged with Flock

Wednesday, February 13, 2008

Saved by the connection string!

more like, saved by i can't remember exactly how i got this site, but it must have been one of those days i was crawling...anyway, i was getting frustrated by trying to connect to SQL Server 2005. for some reason, i could not connect to a remote machine running SQL Server 2005. even worse, i was getting connection errors to my local instance of SQL Server 2005 Express! i got the idea of using ODBC as an interface, but i was still having issues, until i visited now i have a completely different set of issues, but that's another story...

Blogged with Flock

Friday, February 08, 2008


one of my friends described a situation: "Your life is over, and your problems just began". sometimes i feel like that on this job. i feel like i have very little free time. anyway, enough about my troubles. life goes on, doesn't it? i'm kinda stuck with over 1GB in Audacity data files, as i had to forcibly close Audacity once and had to manually search in my temp folder for the files, since the files are quite important to me. so i'm stuck as the data is in 1MB chunks, and i don't have time to listen to each part...

yes, you read right. i have to listen to each part. the trick i learned from the Audacity website was to arrange the files by date, load them into Winamp, and uisng the wave-out plugin, re-record them. it worked...but there was a problem. some of the 5-second chunks were repeated, so i have to remove duplicates from over 1.5 hours of audio. that may take up to 3 hours, time i'm not sure i have, as this weekend, even though i'm not working, is booked.

Blogged with Flock

Monday, February 04, 2008

stuff over the past few weeks

last monday, i heard a kettle whistle for the very first time. i'd heard about it, but never really believed it unitl then. so Enid Blyton wasn't lying after all. ah well.

it seems a new version of MapZone is out. still windows-only, though. i'm not sure just how well it would run using Wine, but you can give it a whirl if you're feeling bold.

Blogged with Flock

Wednesday, January 30, 2008

what's going on at Trolltech?

quite a number of developers will know Trolltech, the company behind Qt, the cross-platform framework for creating desktop applications (orignally in C++, and more recently, in Java). Qt has a long history and forms the basis of KDE.

anyway, Qt has long been a favourite of C++ developers on *nix systems. Windows developers weren't so lucky. Trolltech released a non-commercial edition of Qt, which i first learned about when Qt was in version 2.3. anyway, i never really used Qt then (even now, i just want to get started with it) but i did keep up to date with it. some open-source developers (originally behind the port of KDE to Cygwin) began an unofficial opensource native Windows. they succeeded, but they had to shut down binary builds because people (who weren't thinking of the implications of what they were doing) kept posting questions about the open-source Qt to the official Trolltech support team. and with the release of Qt 4, the team started creating (again unofficial) patches to the Qt opensource edition to make it build with compilers other than MinGW, which was the only system supported by Trolltech officially.

recently, the project has been closed. there are no new files because as the team says: "This project was closed because the goal to provide Qt/GPL on windows (inclusive msvc support) was achieved". more information can be found here. i guess that's because in the latest version of opensource Qt - even though Trolltech claims that Visual Studio support and integration is only provided with the commercial versions of Qt - you can build Qt and Qt-based applications using commandline tools with other compilers, including Visual Studio. but be careful, any commercial application you create must be completely licensed uner the GPL. as the Trolls themselves say, your product must be licensed exclusively under the GPL.

what i'm wondering is: why the change of heart? and Trolltech seems to have been bought by Nokia. so what happens to developers after this? your guess is as good as mine.

Blogged with Flock

Tuesday, January 29, 2008

my battery used to last longer!

i've noticed recently that my computer's battery isn't lasting as long as it was. i'm not quite sure why, but i think because i've installed quite a number of network applications (web server, at least 2 database servers, etc), my firewall program might just be the reason my processor (AMD Turion 64) is constantly running at top speed, instead of stepping down. so i'll do a format soon and change firewall programs, and find out how far.

Blogged with Flock

Design problems

i have to maintain a list of phone numbers. i also need to maintain the owners' details. but here's a problem: i already have access to the phone number data, but i'll fill up the owners' data as i go along. so here's the problem: how do i do this? quite a number of people have more than one phone number, so the phone number(s) cannot be the primary key. at the end of the day, each person whose data is recorded will have one or more phone numbers, but i currently have phone numbers but no associated personal data. how do i design my database so that i can fill in personal details when they come in, but i won't repeat any information and have a sufficiently extensible database design that can adapt to changing requirements?

Blogged with Flock

Friday, January 25, 2008

Enjoy your student days

leaving school and working isn't all it's jacked up to be. so many people just want to get out of school and begin their lives, but they're missing a single important thing: they're already living their lives. life started the day you were born, and continues till the day you die. somehow, we tend to miss that patently obvious fact and decide instead to wait for something or other to 'begin' our lives: "when i leave school, i'll really start living", "when i get my dream job, i'll really start living", "when we get married, we'll really start living"...please. you're alive, aren't you? life's going on all around you. assume today's the last day you'll ever live. do what you would if that were true today. then go ahead and do it everyday. each day is meant to be enjoyed to the full and maximized to the last. life is far too short not to be enjoyed; it's far too short for you not to make impact and influence your world. grow every day. hug someone you love. try to leave everyone better than you met them, and don't worry if they choose not to get better. laugh. cry. be human. for crying out loud, when did we become elastic plastic? we have fake eyelashes, fake fur coats, and we've become fake people (the fake fur and eyelashes are kinda okay - the fake people are a big no-no). make a kid laugh. tell someone you love them. there are so many things you can do, it's amazing we waste time with things that really don't bring us any fulfilment. and that's the main thing i want to say: make sure each day leaves you fulfiled. abayo!

Blogged with Flock

Tuesday, January 22, 2008

the dangers of copy and paste

copy and paste is dangerous. here's why.

a pastor was at a conference where the speaker said: 'the best years of my life were spent in the arms of a woman who was not my wife!' as the audience gasped, he continued: 'she was my mother!'. everyone clapped. the pastor decided to use the same thing back home. unfortunately he only remembered the first part, so he ended with: 'and i can't remember who she was!'

Blogged with Flock