Filed Under (Random.links, Visual FoxPro) by WildFire on 30-11-2007

The FoxShow number 47.

The number 47 is a favorite of mine. Probably because of ALIAS. (with Rambaldi)

Apparently I'm not the only one interested with this number. (More related links at wikipedia)

Still... nothing compares to the Golden Number of course.


Here's one more VFP-link before we get sidetracked with numbers some more.

Cesar Chalom: How to create text as image file with GDIPlusx.


Filed Under (alien.invasion, work.BLOG) by WildFire on 27-11-2007

Strap yourself in boys, we're in for some chop chops.

Chop chops... these are.

Call it refactoring if you want.


Straightening out five year old 'funny codes'. (Though I'm not sure if it will pass the dailyWTF criteria.)

LIBRARY SYSTEM version 2.001 screenshot

Four++ years ago a client asked me to continue a three year old project of theirs.

To be completed in seven weeks... that is.

(The topic of rushed projects have been a recurring item in this blog but no most of our projects are not rushed : )

So seven weeks, I was asked... if I could do it.

Being a proud programmer back then... I accepted it.

For pride... for glory... for the challenge.

(Payment will even be given a year after. Nine months after to be exact... so financial motivation was non-existent.)

Plus back then I felt like I was an ultra-bionic coder with 28 fingers and 42 mind-to-fingers 2048-bit internal buses that can tap three alternate universes for quantum fueled code-pounding mojos.

And I have FoxPro... of course.

VFP6 was the main weapon back then.

The client's old project was done in Visual Basic 5 if I'm not mistaken. (With multiple ocx files)

So if you're me faced with a rushed project to be finished in seven weeks... the best thing to do first is of course to convert things to Visual FoxPro.

I knew VB back then... but I'm more familiar with the Fox.

In pressured situations you tend to go with those you are familiar with.


Raw slashin' instincts.


Imagine this. You're fighting a swarm of droolin' aliens. You have a choice between an advanced AKzVROOMzerg 19281 rifle with 1029 technicolored (and beautifully gradient) buttons you don't understand but can wipe out 200 aliens in one blow.

Or an old used knife purchased in eBay.

If aliens are miles away you might try fidgeting with the rifle.

Read the effin' manuals perhaps.

But if the aliens are just three feet away you'd grab the knife.

Instincts dictate you do do so.

(I know humans learn something from watching Rambo films. (Charlie Sheen spoof film included.))

FoxPro is that knife.


Going back to that project and aliens aside, I did retain the structure of the old databases.

Besides it contains a lot of data already.

I carefully imported them into independent FoxPro tables.


Fast forward to June 2007 and 8 clients later... I've decided it's about time for an upgrade.

There were of course updates... fixes and all on version 1.00 but I want a major change.

Including a rehaul of those imported databases.

A complete restructure from top to bottom.

I don't feel like I'm that ultra-bionic coder anymore but I did learn a lot.

Slashing instincts are still there though.

Plus we have new coding conventions.

And qs and I (who now codes with me (sometimes codes more than me)) have developed new engines. New frameworks.

(With new bugs. More advanced bugs. Bugs unseen to the naked user's eye.)

So I started coding and restructuring. Laughing in between at old funny codes and flows.

Mid-August a client asked for a feature. A needed feature.

Thinking it was just easy we accepted it.

I fired up two logs. One for version 1.00 and one for version 2.00 with a sub part in the old log that points out to 'codes/modules/forms modified in version 1.00 that are to be modified in version 2.00'.

Three months after I'm still working on that feature.

On both versions.

Pingpong-ing codes and chopped PRG files in between projects. A major change of database structure also made things harder. Think of the buffered variable names and flows I have to store in my mind to accomodate simultaneous processes.

Plus I'm already used to the new framework/engine of ours that uses a common library/codes folder. Much easier for lazy coders like me.

And I'm older now.

And unfocused.

I'm older and unfocused.

And more whiny.


Star Trek Home Theatre

Filed Under (Random.links, Random.scribbles) by WildFire on 24-11-2007

All I want for Christmas is this Star Trek Home Theater.

Dream on, WildFire.

Dream on.


Filed Under (GFX) by WildFire on 21-11-2007

In the lighter side of things... LEIGH remixed one of my Terai Yuki 2 renders.

Nice funky effects.

Now being the demanding person that I am, I'll be asking 9 more remixes from her (or probably 7... I'll create and remix 2 myself) and do a pingpong collab with her which will be compiled into one mosaic.

Knowing how slow I work that would probably take 3 to 5 years to finish.

But I think it's worth the try.

What do you think, LEIGH..?

ET Users

Filed Under (work.BLOG) by WildFire on 21-11-2007

Developers especially freelancers (assuming of course that their corporate counterparts are properly shielded and protected) should not only spend more time error trapping their codes, but also develop measures to error trap themselves from users.

Not all users are that bad of course.

Not all of them are 'nice' either.

And sometimes one not-so-nice out of ten nice ones is enough to pull you and your chi down.

(Note that I'm using 'error trap' and not 'idiot proof'.)

We define 'ET users'' here as not those persons who constantly ask you questions.

We love those kinds.

Even if we are answering the same questions again and again.

(And again in the middle of our coding rituals.)

Even if we have answered them before, created a help file, and posted an online link for that topic. (That we already have given them before.)

At least they're asking questions.

At least they're actually using the program.

Even if they're not reading user manuals.

Our problem lies with users who encounter a simple problem. Whines about it and never contacts us.

Now the problem lies there idle... for months.

The next thing we know the admins are pointing at us for a problem that we weren't even informed of.

To make things more annoying... somewhere in between that span of time we did contact them but received no replies.

(There were also other factors involved like administration changes and staff changes with no proper turnovers.)

So how do you protect yourself from this kind of situation..?

There are a number of ways actually.

One is to LOG.

Log everything... from feature requests... to calls to IM chats to emails and even sms-es.

I remember a year ago we were called because a certain staff claimed that we haven't been doing our job.

So we went there along with our one inch thick stack of chats/emails/sms-es and logs with dates and status reports.

We told them that even though we have complete logs of everything we would prefer to not point fingers and concentrate on solving the problem instead.

This time, partly we are lucky that someone was kind enough to follow up things for us and handle factors that are out of our hands.

Second defense mechanism would involve a maintenance scheme with fair prices that is not dependent on users contacting you.

But we're still in the process of analyzing and testing that part.

We'll keep you informed.

TY2 Render 8723

Filed Under (GFX, Visual FoxPro) by WildFire on 20-11-2007

Another modified Terai Yuki 2 render.

Content Paradise's TY2 / modified TY2 Straight Jeans (Billy-T) / E-Frontier Poser 6 (using P4 Render Engine)

And of course the logo in her shirt is a VFPX project developer logo.

VFPX at CodePlex. Help spread the word.



Filed Under (, Visual FoxPro) by WildFire on 16-11-2007

OK... the rain stopped.

Now let's do some GeSHi TESTING.

  1. procedure UTILS_GETDatabaseIndexes()
  3. set procedure to UTILITIES
  5. select &cFilerDatabase
  6. nTagCount = tagcount()
  7. if nTagCount > 0
  8. dimension aDesc(nTagCount)
  9. for nEXB = 1 to nTagCount
  10. cSRK = 'cIndex' + NUMTOSTR(nEXB, 2)
  11. aDesc(nEXB) = &cSRK
  12. endfor
  14. dimension aIndex(nTagCount)
  15. for nCount = 1 to tagcount()
  16. if !empty(tag(nCount))
  17. cIndexDesc = tag(nCount) + ' (' + ;
  18. aDesc(nCount) + ')'
  19. store cIndexDesc to aIndex(nCount)
  20. else
  21. exit
  22. endif
  23. endfor
  25. .cmbIndex.rowsourcetype = 5
  26. .cmbIndex.rowsource = 'aIndex'
  27. .cmbIndex.value = aIndex(nIndexSortIDNO)
  28. endif
  30. EndProc

Related links:
» GeSHi / Generic Syntax Highlighter
» Wongoo Lee's WordPress CodeHighlighter Plug-in


Filed Under (Visual FoxPro) by WildFire on 16-11-2007

XSource for VFP 9 SP2.

Accidentally found that news when I clicked the FoxPro link from GeSHi. (Generic Syntax Highlighter)


Filed Under (LEGO) by WildFire on 10-11-2007

Deranged knights of the Western Kingdom. They think they have a chance against these clone troopers..?

Brave... loyal... but stupid.

Oh wait.

I stand corrected.

DBI Special Offer

Filed Under (Visual FoxPro) by WildFire on 01-11-2007

I saw this special offer from DBI Technologies while browsing Eric den Doop's blog.

I have one company in mind that I am hoping would offer something like this.