Meet IKIA

Filed Under (Random.scribbles, work.BLOG) by WildFire on 06-08-2004

I acquired a new pet today, a three and a half feet fire-breathing orange eyed lizard with fifteen fingers.

For those who have been following this site for quite some time, I’m sure you have heard about my tiger and pterodactyl. Well this lizard is the newest.

… and the most arrogant.

I’m starting to call this one IKIA, a short cut for ‘I Know It All’. Ikia claims he knows C++, Java, VB6, VB.NET and SQL. He even understands Clipper and VisualFoxpro as well. He claims his fifteenth finger was meant for the space bar and that he can create a program to generate a 7x7 magic cube in less than five minutes.

Impressive claims if you’d ask me… but until I can find another keyboard for him to use, I won’t be allowing his slimy fingers to touch this Logitech keyboard of mine.

Ikia seem to know it all. He started blobbing about certain operating concepts, kernels, threads and other stuff which I believed were discussed when I was in college. Too bad I was busy doodling some non-cs related illustrations then.

Then he proudly stated the words ‘I am good because I can solve things fast.’

BEEP.

I have seen this before, good programmers and even good students bragging that this and that are easy.

Well… while programming is indeed about problem solving, it is not just about problem solving. It is about solving problems efficiently.

Not just solving problems efficiently today… or this month or this year, but solving problems retroactively, currently and beyond. Unlike hardware, software, especially database applications are not meant to deteriorate.

Well at least, that’s how I see things.

IMCS.CPanel.DataTransfer Module

Filed Under (Visual FoxPro, work.BLOG) by WildFire on 05-08-2004

02:08AM.

Unholy hour for some… but for me this is the holiest of holy hours. Every thing’s calm and at peace and I can code the way I want. Of course there are those times (especially when the sun is up) when I would prefer coding when U2, Paul Oakenfold, Enigma, NIN or even the soulful music of ColdPlay pounds in my ears… but when the sun decides to dream, I prefer silence.

Ah… enough of these things. I did promise myself to concentrate on work blogs once more. To discuss more programming/freelancing/system-analysis-related issues and insights would be the priority. The info-links you used to see will still be there, probably underneath each ‘work blog’.

So what have I been working on for the past few hours?

IMCS.CPanel.DataTransferModule

What in wakahalarovha’s name is that?

IMCS stands for Integrated Media Center System and CPanel for Control Panel. Like most control panels you see in this world, this module aims to give the user the ‘lowest level access’ to some core parts of the program. Most settings and configuration are in there.

One of my measurements on how ‘good’ a program/system is, lies on how it can stand alone independent of the programmer who created it. If it can run for 7 years or more without my intervention, the hacker-part of this soul would be lust-ified.

That is why the CPanel is there.

Of course certain ‘outside factors’ like operating system variables, upgrades, environment, meteorites, non-thinking management and millions of other factors, pose a great challenge to that ‘independence’. Include some marketing related factors too. But, that would be another blog for now.

It has been my practice too, to make the database systems I develop compatible with a certain client’s other existing database applications. And since the Registrar and Cashiering (which involves different student information-related modules) are already handled in four of my clients by another software development company years before me, I made the Transfer Module as a means to export their databases to my database applications.

Of course I could make use of their database directly inside their own folders, but I prefer using my own re-structured database for a number of reasons.

One’s to be safe. If something happens on their part of the application, the database applications I am maintaining would not be affected. Same holds true the other way around. If corruption or any variation of those things happen, their system would not suffer.

And trust me when I say I don’t want a fellow Foxpro programmer to suffer… especially in my own hands.

Second reason is I am very particular with how I name the fields, the name formats and such. If you maintain several programs, it would be good for you if you’re using your own easy-to-remember conventions which would be hassle-free for you to recall once you switch on your development process to and fro from within your tasks pool.

Third reason involves the way I normalize fields and records. Fields such as Relative01, Relative02, Relative03 and so on is a big no no for me. Well, at least most of the time. This would be a different story though if it is a RelativeGivingOutiPodsandG5sToDevelopers. If this is the case… the more the merrier applies instead.

But following a database system that is not yours is not that easy. Even if both systems are developed in Visual Foxpro and you’re only scratching the database parts.

For one, the other database programmer can change the structure of the database at any point, and you, like me, find yourself re-coding some parts of your program, which in my case, the Data Transfer module.

These occur too especially if the other software development company has more than one programmer who seems to juggle with their field naming convention. CLIENT_01 uses MTELNO and FTELNO for their parent’s phone numbers. CLIENT_02 on the other hand uses MBTELNO and FBTELNO where I suppose ‘B’ stands for Business. Client_01 don’t have equivalent names for those fields. And in this digital world, one bit makes a BIG difference.

Last June, I also found myself in a position where another database structure was change and I cannot even edit it until I open the database exclusively. A feature which I should be adding on the Database Utility Module (equivalent to Clipper’s DBU) I made.

A utility which I will discuss further in another blog… in another time.

���

Good luck, Arctic Team… may you find what you’ve been looking for. Same shout outs to Cassini and the Mercury Messenger as well (472 million dollars for 7.9 billion kilometer journey eh?).

Aloe vera may treat battle wounds. Nah… I prefer peace, unity and discussion. Deal with things the way ‘good’ programmers handle problems. War was never a solution… and never will it be. How come we never learn from the past?

Make way for Doom’s Day instead.

Mark Anthony Panizales is now bloggin’… and Ceazar Ryan Sealana too. If you could remember they were part of the first call-to-blog post of mine. I’ll be posting a second batch of roll calls within the week.

Looks like SCO gets it.

I don’t get it.

Nevermind.

Happy birthday, Neil Armstrong.

NF . RedHat 9

Filed Under (Random.scribbles, work.BLOG) by WildFire on 26-07-2004

Last Saturday, qs and I bought some PC peripherals and stuff. You see… in my regular job, I’m not only in charge with the development of database applications and systems-related functions, I also do hardware related tasks, canvassing and purchasing of computers, haggling with vendors, installation of lan cables, crimping, crawling and networking, hardware inventory and auditing, maintenance and sometimes preparing and arranging some defective computer parts for the weekly roof top practice target shooting.

Most of the time during these purchases, I am just given a budget and I will be the one in-charge to ‘configure’ the specs and joggle the needs to fit those tight budgets.

With a budget this time of 27K in our pockets (1 US dollar is approximately 55 Pesos), we were able to purchase 1 CPU with an AMD Athlon 2000+ processor and a decent MSI motherboard, a good looking transparent case with an extra fan in the side, an 80GB 7200 rpms barracuda hard disk, another 40GB 7200 rpms hard disk for another department which needs this upgrade after their 2GB hard disk crashed from too much porn, 1 256 DDRAM and another 128 DDRAM, three floppy disk drives, two 52X LG CD-ROM drives, (because of the tight budget in last last week’s purchase I refrain from buying those disk and CD-ROM drives), an Epson scanner (CHED is now requiring photos in TORs), an 8 port CNET switch, two Logitech keyboards (one for me), an AVR and a Logitech mouse.

All in all it was a good loot for 26.5K, I got a discount of P375.00, which is quite less compared to the average 1K discount I got from the previous two purchases.

So while waiting for the CPU to be assembled, we roam around the mall. QS found an MP3 CD-ROM which contains the soundtracks of Shrek 2, Dirty Dancing 2: Havana Nights and 13 Going on 30, which she has been pining for… for quite some weeks now.

I, on the other hand, found a copy of Red Hat 9 Linux installation CDs. I was looking for a copy Fedora which after reading from a number of FilTech blogs online, have stirred my curiosity, but couldn’t find one.

I tried downloading Fedora online but since Wednesday last week, I still can’t get a connection that doesn’t say ‘Busy’. From the looks of it looks like Fedora 3 will be released before I can download Fedora 2.

When we arrived home, the first thing I did was to make that spare 40GB hard disk the primary disk, reconfigured the boot up sequence and booted from the Red Hat 9 installation CD. It was five years ago since I was beside our system administrator when she (yup it’s a she) configured and installed Red Hat in three out of our four office servers. Quite a long time already and a lot has changed since then.

I installed using the default settings ‘probed’ by the Red Hat installer. The Red Hat ‘look’ is even cool that my three year old daughter pulled one chair and sat beside me during the installation. She was quite intrigued too with the blue light the CPU case emits.

Every thing was smooth until my daughter who got intrigued by the little silvery power button located on the edge of the case, pushed it.

I ‘Graaa-ed’, my daughter giggled knowing she did something wrong, then kissed me on the cheeks. I guess Linux-users just develop this kind of charm when they start using this penguin-powered OS, eh?

Anyway… the installation run smoothly afterwards. There are just some little things that could have made the installation smoother and a number more things, in my opinion that needs to be removed or remedied to make Red Hat Linux appeal more to the non-geeks in this world.

You see, if Linux or any bundle of its variation wants to be widely used by ‘ordinary humans’, it should lower down a little to a more ‘duh-i’m-a-noob’ level. Of course, without sacrificing its strength… security-related features included.

I’ll delve more on that one on another post but let me give you one example which probably hard-core Linux users overlooked. During start-up, the geeks’-love-for-details is being reflected in a Linux boot up. Those Initializing processes with OK or Failed brackets coupled with some three letter acronyms… you see, ‘normal users’ don’t give a rat’s arse about those things.

Of course to a geek administrator it means a lot but to Mr. O’ Charlie who only wants to run a word processor those things are gibberish. Microsoft during ‘normal’ boot ups would only display their Windows XP logo which I’m sure has a thousand of subliminal hypnotizing subtle messages floating somewhere around it.

There’s more but I’ll delve into that in another blog.

I don’t have much time to explore deeper last Saturday so I made my last quest of changing the display to a much higher resolution. I’m a sucker for higher resolution displays… and since I used the default VESA drivers, the Linux I installed only can go far as the 800×600 dimension limit.

Just for the heck of it I tried misconfiguring the drivers, rebooted (required)… then I got this cyan over blue screen which displays a Yes and a No option with no message.

How in Olympus’ name could I figure that out?

I tried clicking Yes then No but both tries were futile.

After a couple of reboots it was able to restore the old settings though. Again… this was just a rush test installation, I’ll explore more one of these days.

UPDATE:
I installed another Red Hat 9 Linux on an aging and always cranky AMD500 MHz computer of mine in the office today. I paid more attention to details this time and it was able to ‘probe’ my GeForce2 video card and the LG Studioworks monitor which made the resolution better compared to that installation I have done last Saturday.

I tried the Terminal and the other applications and had fun browsing the screensavers. Anyway it will stay there for quite a long time since that old PC crashes often in Windows 98SE, Windows ME, Windows 2000 and Windows XP installations… yup I’ve tried installing them all in the span of three months.

Red Hat 9 is sailing smooth so far.

workBLOGS . SMAH visit

Filed Under (Visual FoxPro, work.BLOG) by WildFire on 19-07-2004

Against heavy afternoon rains after the morning heat and recovering from last week’s fever and wicked.cough-problems, I visited a client at Hagonoy Bulacan this day. Armed with a printed copy of a _databasestructures-updates.txt I have created which holds the program and database changes by date, I updated the ILS module in that environment.

This file serves as one of my log reference that helps keep my sanity intact. It is a little difficult monitoring database and program updates when you’re maintaining a program with seven core modules in four different clients each with their own requested features, formats, ‘moods’ and countless outside factors.

Things were lighter this time as compared to the rough visit last May 2004 when a new administration was not able to recognize me. In freelance-related quests, facing a new administration is one of the toughest tasks. I’ve been to this experience twice already. Patience have always been a key… and of course, charm.

Yes Earthling… charm is one factor a freelance programmer/developer/system analyst needs. You can partially acquire this by growing your hair long. Nose hair and armpit hair included.

I get to meet too, for the first time the FoxPro programmer who’s working on the Registrar and Cashier applications. They hold the core system of almost every school I ‘freelance’ and the ILS application imports their databases. This was the first time after almost three years of me following their trail of DBCs and DBFs and sometimes leftover PRGs. The programmer was friendly and helpful and even stopped his programming task in that place to create a Novell account for me so that I can access his database. I guess Foxpro programmers just have this inherent respect for each other.

Same holds true probably for VB programmers meeting another like-minded VB dude, Java developers sharing coffee with another Java developer, Delphi-powered minds bumping into one another and so on.

Even assembly programmers probably talking in a cafe with no one else in a five mile radius understanding the things they’re discussing.

I saw him using the VF6 IDE there. Something I seldom do. I can’t seem to work on a computer that is not fully customized, tweaked and morphed according to my preference. But of course sometimes the need forces me to fire up VisualFoxpro and code in a computer which feels alien to me. In one case, I was even faced with a desktop displaying Taiwanese male celebrities. Quite scary if you’d ask me.

I could’ve run my database conversion module on site but it seems that some fields in the database in this school are different from the other schools I have followed. Just one letter differences in seven or more fields, but in this world of binary, one bit of a byte makes a big difference.

workBLOGS . work varchar and .NETRocks072

Filed Under (SoftDev (non-VFP), work.BLOG) by WildFire on 15-07-2004

Suffering from a slight fever and cough, I visited a client in Baliuag, Bulacan today to update the ILS Program and install the client modules of Project Sophieai. I’ll share some stuff tomorrow… right now I’m pumping this system with vitamins C and E hoping these could drive away the dark forces from this operating system of mine.

Linkwarps: .NETRocks! features Tim Huckaby and John Koziol points one of the new behavior which even in its improved existence pays respect to the ‘legacy’… SET VARCHARMAPPING ON | OFF.

workBLOGS . oTimeTotal

Filed Under (Visual FoxPro, work.BLOG) by WildFire on 14-07-2004

A little something something.

It’s already 2:40AM, I’m done with a couple of Reports and I’m still online trying to annoy a VB6-lovin’-former classmate of mine.

To give you an overview of this late-night-to-early-morning little quest of mine, I’ll start with the target task. The objective is to add those TimeTotal and FeeTotal amounts in the reports that deals on the usage of the internet/computer.

So it’s something like this:

 NAME
TIME IN
TIME OUT
TIME TOTAL
TOTAL FEE
         
 Richelle
09:19:03
11:05:45
01:46:42
44.17
 Marv
17:32:25
18:57:49
01:25:24
35.42
 Teresa
20:27:22
21:15:05
00:47:43
19.58
         
     
cTotalTime
nTotalFee

This is just part of the data and at 2AM I’m not sure if they’re the right numbers so tone down that meticulous geek in you, I just want to present an overview.

Generating nTotalFee is easy using VisualFoxpro’s Report Tool/Designer. You simply create a variable, let’s say oTotalFee, store the value of the database field (USAGE.FeeTotal), set the initial value to 0 and click the SUM part on the Calculate frame. You can set the variable to reset at the end of the page or at the end of the report. Just that and hardworkin’ VFP will do the things automatically for you in the background while your report is being generated.

The trickier part is the cTotalTime since it is a character (well I made it that way months ago probably to make things harder for me in the future). ‘01:00:00‘ + ‘00:00:25‘ is equal to ‘01:00:0000:00:25‘ and not ‘01:00:25‘. I tried another couple of barfed-out-rushed patch solutions which in the end didn’t work.

That was when I remembered that there’s a CTOT() function. But CTOT() needs additional characters such as CTOT(“2000-10-24T13:30:00“) and the other time/date-related functions I found were of no use, well at least in this situation. Besides I was secretly praying that none of these reserved functions would work so that I can have an excuse to do things the ‘old school’ way.

But before that I was even considering the lame approach of simply dividing nTotalFee with the RatePerHour and a little TimeConversion() algorithm to derive cTotalTime… a sort of a short circuit cheat. But that my friend, is not the way things are done especially when I’m in the mood to punish myself.

So choosing the ‘right’ path, I entered the following manipulation inside the variable part:

(val(substr(usage.timetotal, 1, 2))*3600) +
(val(substr(usage.timetotal, 4, 2))*60) +
(val(substr(usage.timetotal, 7, 2)))

In the report, a field control is added to store this code:

NUMTOSTR(alltrim(str(int(oTotalTime/3600))), 2) + ‘:’ +
NUMTOSTR(alltrim(str(int((oTotalTime%3600)/60))), 2) + ‘:’ +
NUMTOSTR(alltrim(str((oTotalTime%3600)%60)), 2)

NumToStr is a function I use to convert a number to a character field with additional ‘pads’. Something like NumToStr(97, 5) would yield ‘00097‘. It is quite useful too in IDNumber/Code formatting and other related functions.

So with that… the quest was completed.

Perhaps there are better solutions for this but for now this will do, donkey. It gives you a little taste of how things are done the ‘good-old-school’ way. Ah well at least a step above the older assembly/machine code approach.

workBLOGS . What makes a good client?

Filed Under (work.BLOG) by WildFire on 10-07-2004

Arising from an early-evening-to-the-midnight nap after visiting my fourth project client this day. A client which is slowly becoming a favorite of mine lately.

So what makes a client a good client? Or probably we should we use ‘favorite’ since ‘good’ is such an elusive term.

In my part, food is one factor. Make that the first factor. Ah the influence of the previous boss still has this effect on me. Yes food. If one could make a version of the mongo beans in such a way that makes it so yummy, bitter and sweet at the same time… that’s something. Include adobo in the table (Yes you’re reading things right adobo not Adobe and what the heck would Adobe be doing in the dinner table in the first place… and in case you have ingested too much silicon-based stuff lately, adobo is not ADODB), some crunchy, crispy, juicy and a little chili-tasting home made fried chicken, some fried fish plus two cans of coke and of course rice and that’s enough to add a few pounds on you while you’re updating the system you have created on site. If you’re living somewhere in this world and haven’t tried Filipino food yet, I suggest you try some and I’m sure you’ll be asking for more.

Another factor too would be that willingness to innovate. It doesn’t matter if you’re in a company with 270+ computers or in a company who has only one Pentium II in the midst. As long as the willingness and the mind for innovation is there, other things will follow. There is a quite phi-raised-to-the-power-of-e (in other words ‘huge’) difference too if you’re in a finance-rich first world country and when you’re in a rich-in-other-things archipelago whose economy has been struggling for the past couple of decades. I, without regrets, belong to the latter.

Third factor would be that certain invisible push that a certain client gives to make you strive to become a better programmer… a better developer… a better system analyst… a better person. That same invisible force that drives passion to your work and possibly squash the lady bugs that have been infesting in your system lately. That I think is one of the strongest factor in determining a favorite client on my part. Well next to food of course.

There are more factors I know. Probably you can discuss those here.

On a different frequency, I get to test in the open too the Support Forum I created and was reconfiguring the previous few days. If you’re into IT-related projects, you know by now that no matter how you test things inside your room or your cubicle, there will always be a number of differences in things when you’re out there with your clients. Plus there’s surely a BIG difference when you’re the one testing your works as compared to when your clients are the ones actually using it. When you’re the one holding the keyboard, pounding things away with ease and when you’re behind your client watching her having a hard time figuring out how to use the scrollbars in the drop down combo box.

Something I’d like to discuss in a different post… in a different time.

workBLOGS . Lazy Bug

Filed Under (work.BLOG) by WildFire on 09-07-2004

I’ve been bitten by a Lazy Bug that has infected my system for almost three weeks already. So what’s a Lazy Bug you ask me? I’ll tell you more later.

workBLOGS . Support Forum

Filed Under (work.BLOG) by WildFire on 07-07-2004

I’m at home working on the Support Forum I am creating for my freelance projects. The re-configuring started last night and I’m still finalizing and analyzing some parts.

I’ve decided to use the Invision Power Board, over YaBB which I’ve been using for almost five years already in a different forum. I get to evaluate PHPBB too. Each has their own strengths but in the end I have chosen Invision since currently it has more features compared to YaBB and PHPBB. Plus Invision is just one click installation in my current webhost and I find the Pre-register feature quite helpful on my part. (Of course after that there will be countless clicks when you’re re-configuring/customizing things.)

Maintenance-wise, especially if you’re doing the behind the scene manual hacks on the threads, things are easier done with YaBB. I’ve proven this countless times in the past when I’m moving threads saved on a hard disk to another server and combining each of them with the newly created ones. Of course the process still is cumbersome.

The directory structure of Invision is quite scary to look at compared to the way YaBB organizes its files. Although, YaBB has this tendency to save all threads on one directory, which if you’re in a slow internet connection like me, would take quite a while before the listing of files are displayed inside the FTP client application. Multiply that delay of the loading time with the N processes you’re doing on that directory.

Now after five hours and a half, I am faced with certain issues and concerns. One… would I allow CATEGORY_001.Forum_001 for Client_001 to be accessible for Client_002 who has CATEGORY_001.Forum_002? Consider too that there are issues that are affecting both clients. I made a sort of General Client Forum for some matters to somehow ‘patch’ this issue but I’m still looking for other alternatives.

Second issue would involve if I allow the guests or the other non-client members to view the Clients Section. Probably it would be good for potential clients but will it be beneficial to the existing clients. Nonetheless the client forums are protected by passwords.

Which will probably an issue too since some non-techie clients in my experience would prefer lesser clicks and lesser hindrances to what they want to do, something Microsoft gave weight before which probably lead to some security-related problems in some of their previous OSes.

Probably it would be good too if I organized the forums by product but since I would like to implement transparency on the program progress and would like to post progress reports on certain clients it would make things complicated in the long run.

Ah… probably I’ll rest and empty my mind first so that I’ll get a clearer view on how to tackle these issues.

This is one of the advantage of working at home… you’re near your bed in times your mind needs defragging and recalibrating.

Article . VFUG June 2004 Newsletter

Filed Under (Visual FoxPro, work.BLOG) by WildFire on 27-06-2004

This is still one of those buffered and backlogged blogs of mine. (There’s still one more before I’ll delve into the ‘normal operations’)

A couple of weeks ago, VFUG released their June newsletter which I printed and brought along to read while I was waiting for a bus en route to a client Wednesday last week. The wait was more than two hours so I was able to finish the whole printed newsletter.

There are a number of good read inside that newsletter. On top of the list would be Les Pinter‘s Data Management in Visual FoxPro and Visual Basic .NET which was also included in one of DevTeach Pre-conference training sessions.

I would like so much to comment on how Foxpro one liners are bloated into three or even 20++ lines in .NET (which is quite obvious already) but that would be unfair for .NET for now since I haven’t delve much into it except for the occasional listening to episodes in .NET Rocks!, the .NET overview the Microsoft website gives plus the codes and snippets that I see online and in some .NET-related magazines.

Yes. I haven’t jumped yet into that .NET bandwagon. Quite ironic that years ago I was into this pulling of some friends who are doing things in Clipper 5.2/DOS-related PLs to use Visual-powered tools. And now I’m the one who’s quite hesitating to change the ‘old-school-ic’ ways of mine.

I can give a comparison though between Visual Foxpro and Visual Basic 6 if you like… anytime. But then again I don’t want to ignite a VFP versus VisualBasic in here. Well… not now, so give those flame gears of yours some rest. Besides we all know who’ll emerge on top when we talk about database-related transactions.

Another irony reveals every time I look back and I remember that when we entered a certain university after graduating from college (five of us to be exact), we were the ones who introduced Visual Basic into that environment. It was predominantly VisualFoxpro and Clipper individuals that were existing in that place back then. Now, here I am convincing an old friend who’s still there, to include VisualFoxpro in their curriculum. Quite sad, that not too many institution in this country of ours are into VFP these days.

But still… no worries, child. No worries.

workBLOGS . NAV

Filed Under (work.BLOG) by WildFire on 04-06-2004

This morning when I received an sms message telling me that the computers running Project:Valhalla shutdown as expected. The half of the neuron population on this brain of mine, which was already assigned to that project (Yup it’s taking that amount of space and energy already), leapt in joy. In fact it was leaping for almost five minutes that at the end of that period, I could feel some bouncing motion in my head. And for another hour, my head was nodding involuntarily as if I’m listening to a certain rock band’s beat.

So off I went to another client, having that sense of peace which was missing for almost a week because of those ‘outside factors’-induced problems plaguing Valhalla.

When I returned home, the Valhalla.client showed me this error:

Terminating thread due to a stack overflow problem. A VxD, possibly recently installed, has consumed too much stack space. Increase the setting of ‘MinSPs’ in the SYSTEM.INI or remove recently installed VxDs.

For a second or two the neuron population went nuts. Grinding sounds were heard on my head. When will all these problems end? BUGS seem to be coming and coming and I am slowly being drained.

I was slowly isolating the factors in my head, calculating the possible cause of the problem. All of them seem to point to that Shutdown WinAPI. Then I realized… I was online and there is such thing known as GOOGLE.

So I entered the error as a query and I got this result from Symantec’s support site.

You see… the culprit was Norton Antivirus 2001, but since the last thing that was done on that place was the installation of a new system from me, all computer-related problems are being blamed on Valhalla. Probably if an asteroid hits the ocean they would blame Valhalla too. What’s next, Valhalla as the cause of offshore related problems?

But this is just part of the thing they call as ‘work hazards’… or whatever. Besides as the saying goes… ‘Smooth seas do not produce skillful sailors.’

Or if we’ll do it the Master Yoda way:

Skillful sailors
Smooth seas
Produce not.

workBLOGS . clientCHECK

Filed Under (work.BLOG) by WildFire on 03-06-2004

I’m on a client’s lair updating and monitoring VALHALLA. The vibrations are good.

… and the food as well.

THOUGHTS . VFP Revolution

Filed Under (Random.scribbles, work.BLOG) by WildFire on 03-06-2004

VFP Revolution has been floating around for a week or more and this evening I was reading Craig Berntson’s opinion about it on his FoxBlog. Though his opinions may sound pessimistic to some (especially to those live/die-hard Foxpro coders out there), it is in a way a practical approach on how to view things.

I also have some thoughts about this matter since the first day I’ve read those ‘we-feel-abandoned’ type of articles in the ‘net, but up to this moment I’m still struggling to organize those thoughts.

Just recently I was talking online to a former college classmate of mine who is working on a company whose boss is requiring them to convert their VisualFoxpro systems into a VisualBasic one. My pet tiger and I cringed at hearing that news.

Anyway… if you’ll look closely at Microsoft.com’s Product Lifecycle Dates : Developer Tools Family, you’ll see that the Extended Support for Visual Foxpro 8.0 ends on the 31st of March 2010 and probably VFP9 which will be released late this year will have three to four more years… probably around 2014, and that’s ten years from now.

Ten years is such a long time in the world of computers and the internet era. With that span of time you can still develop countless database-driven systems that will last five times that span of time.

Hmm… should VisualFoxpro developers worry about the operating systems and platforms more..?

Just a part of the random thoughts I have on this matter that I’m still trying to organize.

workBLOGS . The Outside Factors

Filed Under (work.BLOG) by WildFire on 02-06-2004

This is the second straight night that I was talking to a client that monitors Project: Valhalla. I must admit that I have overlooked some parts of the system but most I have fixed already waiting deployment and installation on my next visit. The auto-download and update utility is still in conception so I have to guide my client to do things through online instant messaging.

Go to the Desktop. Right click on the Network Neighborhood icon. Find the computer labeled as ShyMonster. No not that one… the one with the green icon that shows Elvis’ face. Find the shared folder. Enter this password. Right click. Map network drive. Pound the keys. Pound the monitor. Grab anything you can grab. Test force. Test gravity… and so on.

I think I’m grumbling too much at night that my little kid’s sleeping habits are getting affected too. He’s awake up to two in the morning watching Finding Nemo or Monsters Inc or Shrek for the Nth time. Yup and I’m already able to talk along with the movie while coding. And this is showing on some of my variables: cSquishy, cNemo, nBruceTeeth, lMikeWachowski and even procedure names: CheckShrek().

This little kid of mine has the makings of a programmer already… I’m almost convinced until he starts to growl and howl that I’m beginning to picture out what IDE or ‘x-developer-environment’ in the future should be developed in order to accommodate sounds such as this.

But back to Valhalla, most problems really are ‘outside factors’. Internet connection… mis-configured OSes. Unchecked daylight saving time features. Users that seem to be suffering from short term memory loss or the password that seems to like to forget their users. Printers that barf out things… name it, I think these things are popping out everywhere.

Just earlier tonight, the client told me that the Report Preview is ‘good’, it shows the data but when it prints things, it prints nothing. Data is showed in the preview but when the print button is clicked, the printed sheet shows nothing but headers. Weird for it was working fine just yesterday. In fact it was just working this morning. So I asked her to send the database to me, I tested it here at home and things are fine on my unit. Weird now becomes Weird++.

I tried deleting some ‘suspected records’ and some ‘fall guy records’ and sent it back to her and still the problem exists. But of course I have to guide her once again from the backing up of databases, copy-and-pasting things and so on. As a programmer you know already how frustrating it is to wait for the results. Once a mind is in motion, the mind gets pissed if the motion is delayed by an outside force. That’s Newton’s law.

Yesterday I was beginning to wonder if it is WinAPI’s way of saying: ‘You think you have conquered us already eh? Dodge this! And this!’

And I’m like… ‘Whoa… Hoo…’ Ah wait that’s FindingNemo’s Crash dude DialogBox already.

So I created a temporary patch that exports the database to an Excel sheet for an ‘easier’ way of printing out this time and just when I was about to ask her if she had printed out the file already… her online presence disappeared.

Only to reappear minutes later telling me that Valhalla’s shutdown procedure booted her out. This was followed by a slight panic because data won’t show in the preview part anymore when I realized that it was twelve midnight already and things were filtered out by date causing the filtering out of yesterday’s data.

Good thing changing dates is not that difficult. But since I added an algorithm that checks inconsistencies in dates and interprets it as a user trying to adjust the time to lessen his/her billing so he/she can save some money to buy some shoes, things get complicated once again.

This was the part where momentarily I was wishing I could just Alt+Ctrl+Del the client and start things all over tomorrow. But of course I was not trained that way. I was trained to do the axe kick + bat + flying dragon approach. So I’m saving all of these ‘energies’ for my next visit.

And just I was about to wrap things up for the night, a five minute block-out occurred.

workBLOGS . API shutdown and maps

Filed Under (Visual FoxPro, work.BLOG) by WildFire on 30-05-2004

This is the Windows 98SE-compatible snippet I use for shutting down the CPU.

procedure SYSTEMSHUTDOWN

#define EWX_LOGOFF 0
#define EWX_SHUTDOWN 1
#define EWX_REBOOT 2
#define EWX_FORCE 4
#define EWX_POWEROFF 8
#define EWX_FORCEIFHUNG 16
declare integer ExitWindows IN user32;
����������integer dwReserved, integer uReturnCode
declare integer ExitWindowsEx IN user32;
����������integer uFlags, integer dwReserved

‘ = ExitWindowsEx(EWX_LOGOFF, 0)
‘ = ExitWindowsEx(EWX_REBOOT, 0)
= ExitWindowsEX(EWX_SHUTDOWN, 0)

EndProc

Note: The html CGIs i’m using auto eliminates * so i’m replacing it with ‘.

There’s a better one which can shutdown Windows XP and Windows 2000 and do a lot more ‘cleaning up’ procedures. I’ll post that one later once I figure out to whom I can give credits for that code.

One of the issues yesterday involves this ‘automatic’ shutting down of computers at a given time. There were no problems in the client computers but in the server module, which uses a mapped/shared virtually-created-drive approach, it shows this ‘there are n users connecting to this computer… shutting down will make them whine and howl…’ type of error. For a moment there which lasted for 10 minutes or even more, I was formulating solutions and knocking once again on the doors of WinAPI, hoping that there’s a way I could somehow supress that confirmation.

Only to realize that I can make things easier if I set a different shutdown time for the server and make it do the shutdown process after all the client PCs are knocked out.

Yeah… sometimes the best solution to a problem are those little simple things we often overlook.

workBLOGS . oDAYDreams

Filed Under (work.BLOG) by WildFire on 29-05-2004

A Saturday of a week of client visits… this day is. For most of my life Saturdays were created to quench my laziness… dreaming about being a knight or a magician in the medieval era fighting fierce three headed toxic-breathing dragons using three inch USB switchblades, a laser light as my sword and/or mind control-related powers.

This or the other 1001 dream variations where I came out an unscathed hero at the end of the day, was always the way lazy Saturdays were spent.

Not today.

There were no knights… no swords nor daydreams, just CDRs, keyboards and codes.

Although I bring a backup of my Microsoft Visual Foxpro installer almost every client visit, I seldom end up using it on a client site. This day was different. I spent most of the time re-configuring things and coding at site which I haven’t done since I started ‘serious freelancing’. I often test things and think of possible and weird scenarios a day or two before each visit. Plan Bs and Plan Cs are formulated in advance.

I guess I underestimated converting an existing project to a simpler one. It was too late when I realized that it is easier to ‘complicate’ simple programs than making a complicated program simple. I’m talking about Project:Valhalla, a trimmed down version of Project:Sophieia, both Internet Usage Monitoring Systems targeted for Internet Cafes and Computer Laboratories.

On site, the first challenge (or problem) was API related. The codes I made were targeted for Windows XP and Windows 2000. Though I tested it with Windows ME before and was quite sure it was working fine then, it seems Windows 98SE merely logs out the user instead of shutting down the computer. Good thing the first module I made which contains Windows 98SE/ME-compatible codes was included in the CD I brought along. The newer version of that shutdown I made was supposed to work with older versions of Windows but I guess there’s really a big difference in theory and once it’s working ‘out there’ already.

The next problem is server related. Though a server in this case, is not present in the client’s place. There is however a ‘pseudo-server’ powered by Windows 98SE (again) but this makes things difficult for me. I was left with no option but to share a folder and map things on the client computers. Problem is… the settings inside the SETUP.dbf, my main configuration database, would be inconsistent already with VALHALLA’s client modules and its main server module (directory settings and others). The pseudo-server was not partitioned too, so, I cannot merely place the program in Drive D: and map the shared folder as drive D. Had this been Windows XP, drive letters could be changed, though I’m not sure if it can change the primary boot drive too.

Running the program on a read-only CD-ROM is also out of the pool of possible solutions since it needs to write things.

Good thing I brought along an old compiled Essentials CD I compiled a year ago which contains the PowerPack TweakNow 2003 application which can create virtual drives. TweakNow saved the day in terms of that problem.

After a free lunch (which these days have been a sort of silent unspoken agreement between me and my clients), there were some minor-‘out-of-nowhere’ errors too… certain variables that won’t work on the mapped directory but works fine on the un-mapped one, a variable that refuses to update and sticks with its initial value unless you issue another select DBName . Go Top . cInt = DBName.Field_001 lines of code, a stubborn CD-ROM that ‘buffs-out’ which I believe was the source of a heated argument between two IT-related technicians from different companies that visited that place yesterday (another story for now), power-supply related blues, a number of time-field related issues and countless accidental reboots. I also made a couple of on-the-fly reports in that place.

Around 04:30PM when every important issue was treated, test files purged, all other utilities installed, and another batch of snacks, we decided to call it a day.

Walking out of the client’s premises, somehow I have this victorious feeling just like those medieval knights battling three-headed dragons on my past lazy Saturday daydreams.

I guess I’m just living out some dreams after all.

workBLOGS . unsmoothen

Filed Under (work.BLOG) by WildFire on 25-05-2004

Not all client visits are ‘walk in the parks’. Sometimes it’s rough. Sometimes the rough part involves database that goes south and east then goes south once again. Sometimes it involves the politics inside a certain company… like for example, a change in administration and you’ll find yourself re-initializing the explanation (and impression/integrity-build-up) from scratch all over again, strict security guards which you cannot blame in the first place since they’re just doing their jobs… and a lot more.

But let’s not elaborate into that for there are a lot of good things in each client visit to think about the ‘not-so-good’ ones.

While some may draw inspiration from great programmers/developers like (insert-your-icon-here… mine was Peter Norton when I was still in college), if you’ll look everywhere you’ll find a lot of good models from ‘simple-day-to-day’ humans. One of this is this bus vendor I encounter every now and then when I travel to our north-based clients. To give a short overview, these are the people bringing goods (mineral water, hard boiled eggs, newspapers, ‘chicharons’ etc.) to buses, loads, hollers, advertises, then after five minutes or so unloads and waits for another bus where they can sell their goods.

There’s this one vendor who aside from selling helps people when he’s in the bus. This afternoon he even left his goods in the bus to rush down to help another passenger load her stuff.

Programmers and software developers who do free lance related works should also be like this. When you’re visiting your clients and there are things that could help them whether it’s part of your work or not but would make things better, never hesitate to do so. Install free anti-virus applications, firewalls and spyware removal tools. Introduce OpenOffice.org or other productive applications that could make their company save a lot. Teach them to defrag. I’ve seen a lot of fragmented and unoptimized units in most of my clients and I’m sure there are a lot of others out there.

You can even teach them how to blog.

In this world where silicon is getting powerful and powerful each day… it won’t hurt to show little acts of kindness… just like that bus vendor.

workBLOGS . confidence

Filed Under (work.BLOG) by WildFire on 24-05-2004

Sometimes you can measure and rate the software you develop by the amount of confidence you have when you’re presenting it to your clients. I remember showing two integrated database systems to three client schools September last year. I was more confident presenting Project:Genesis which was a couple of years old already compared to Project:Alexandrieia (Integrated Media Center System) which then was only two and a half months old. Still pretty much in its infancy if you’d ask me.

With Genesis, I can even click and present things with eyes closed while I was closing my eyes and crossing my fingers silently when I was presenting Alexandrieia.

But after months of working up to 3 or even 4 in the morning, Alexandrieia have grown to something a little ‘powerful’ than before. It can now even auto-detect a user who have not taken a bath yet and initialize the shutdown procedure once it detects a certain scent from a user. Yes that’s how powerful APIs are.

thoughts . problem solving

Filed Under (Random.scribbles, work.BLOG) by WildFire on 19-05-2004

Sometimes, if not always, it is so hard to talk someone about systems and problem solving especially if that someone is lSensitive, lEmotional and cPersonality = STRONG. To make things even harder, these are the persons that are often close to us, persons we hold dear. Closeness is oftentimes quantified by emotions but the use of such in this discussion, stops there.

A great deal of our life lessons, we learn through our work. And in database-related programming, software development and system analysis humans can learn a lot. In fact the approach use in the whole software development process if applied to real life situations could make this greed-infested/disorganized/unsystematic world a better place to ‘interface’ and connect with.

One can view life as a big problem (but not necessarily negative) that needs to be solved or ‘lived’ if you prefer such word. In every step of your life, directly or indirectly, you create means to solve a problem, but first and the most important aspect of all; you must know what the problem _really_ is. This is where you question existence, the why’s of things and in such thing as complicated as life these questions can stretch far beyond places Hubble’s sight can even reach in 7 cybernetic lifetimes.

Most often, a big problem is composed of little problems branching out to another set of nodes and child problems.

Now, one’s approach to solving such things would depend on how you, with your experience, view things. You can view it as ‘cut-the-root-of-the-problem’ and the nodes will be flushed as well .OR. you can do little node and leaves at a time until slowly and slowly you are tackling and conquering the problem subset before marching to the next level/node. That or the other or the combination of both or A then B or B then A, the combination is endless, can bring you to the doors of the solution. The process in itself can be views as a means of solution to start with.

Now let’s go back to that arguing/talk with someone we first tackled on Paragraph-01. You can’t expect to solve a problem if you’re attitude is like this: while discussing Problem v1.117.1256725, and you feel like you with your intelligence cannot ‘fight through’ the parameters of that problem starts randomly accessing bits of information that will pull Problem v1.291.1837125, Problem v2.129.28341245 and countless others.

Solve problems ONE by ONE, it doesn’t matter if you’re doing it the LIFO or the FILO way, or the stack or queue approach. Even CPUs tackle each program line by line. Even Superman to be efficient follows this principle. Spiderman too, he rescued his girl first then maneuvered towards the dangling train. And I don’t believe hyperthreading on a 512-bit computer with 7777500GHz could defy this principle.

Talking to someone who tends to bring all problems forward instead of dealing with it one by one frustrates me. Add more nFrustrationCounts if that someone gets too emotional, looks for other holes instead of concentrating on the problem at hand and too close minded enough to see things. We’re talking about oOBJECTS here so things must be dealt with objectively and lEmotion should be set to .F.

Add the nCount(ProblemOccurence) too. If the problem keeps repeating and repeating all over again nFrustrationCount increases. There must be something wrong with the system that needs to be addressed instead of being to emotional and close minded to even discuss the problem.

And in every thing/activity/process they do, humans should learn to evaluate and reflect on things.

But that my friend is another story for now and I still have to work on how to prevent database corruption during power fluctuations.

In case you want to know what the problem is about… we’ll I tell you it’s about spoon and forks.

Yes really. No kidding this time. Such a ‘near-to-null’ related matter, right?