Archive

Archive for the ‘Uncategorized’ Category

Jun
07

I am very excited to announce SweetPotato Software Inc. (owned by VFP MVP and Fox Guru Craig Boyd), and Cully Technologies, LLC (owned by Kevin Cully who runs the FoxForward conference) are Bronze sponsors added today for Southwest Fox 2007!

Craig has been helping the organizers by hosting the Southwest Fox Web site and handing administrative details concerning the email accounts we have. This has been a huge help behind the scenes here at SWF, and is one of those things we flat out have not had to worry about.

Both of these gentlemen are huge supporters of the Fox Community and we are very excited to have them aboard as sponsors. You can check out the complete list of sponsors on the Southwest Fox 2007 sponsors page. Please help us show appreciation for their support of the conference and Fox Community by visiting their pages, and checking out their offerings.

Thanks again guys.

, ,

Jun
06

I recently had a frustrating conversation with my Workers Compensation insurance vendor. I don’t really need WC insurance for myself, but I do for my son’s wages, and on occasion my customers will ask if I have it. A few clients have requested I provide a certificate of insurance for a project. Last week I learned why this is so important.

It all centers around the definition of the word employee. I am an employee of White Light Computing, in addition to my ownership in the company. As the company president I get paid a modest salary. For each US$1000 of salary I get paid, the company pays US$0.80 in premium for the insurance in case I get hurt on the job and cannot perform my duties as a software developer. Just in case you are wondering, roofers are one of the most expensive jobs to insure: approximately US13.00+ per US$1000 salary. So we have it cheap.

The annual audit arrives and the paperwork I fill out asks me the usual questions about the business, how many employees, and how much I pay them. This year I also had to provide details about subcontractors and how much I paid them. Previous years asked if I had subcontractors, but never the amount of money involved.

This triggered a long discussion with the auditing department. They asked me to get certificates of insurance from each of the subcontractors. Several of them are just moonlighting at night and won’t have the coverage, but I do business with a couple of companies. So I spent an enormous amount of time documenting my subcontractors, the work they did, the time periods when they worked, and tracked down as many of the certificates as I could. I hate wasting time on this administrivia. Frankly it would have been better financially to pay the extra premium and spent all this time billing on projects that are way more fun to work on, but the principle of the matter is this: I dislike insurance companies and certainly don’t want them double-dipping on me and the companies I have hired.

The reason I had to do all this work is to not get charged the extra premium because the insurance company was going to consider each subcontractor as an employee. They did not care if my contract states they are not employees of my company and responsible for their own taxes, insurance, etc. They did not care that I do not have them on my payroll and that my payroll service has never paid them a dime. They only care that they *can* charge me a premium and it is my responsibility to prove otherwise. Guilty until proven innocent. Their definition of employee is anyone I pay and cannot prove they have their own Workers Compensation policy.

I asked them a simple question: if one of my subcontractors was hurt while working on their site (not mine), would I be able to make a claim? The answer really was not unexpected, but really seems unbalanced. “Sir, it does not matter where they were hurt, they are subcontractors, not employees, and thus we would fight to the death to not pay the claim.” I thanked them for the clarification and double-talk. They were also kind enough to inform me that I would find all their competitors do the exact same thing. Having written software for the WC industry I know how bad employers get the short end of the stick.

Let’s review the rules of the insurance game: business owners always lose and there is absolutely no way to play the game where you can win, or have it even fair. Thanks for the clarification, not!

So for all the employees out there who read my humble writings – be thankful for your job and all the little things your employer does on your behalf that lowers the profitability of the company you work for, and ultimately lowers the wages you can get paid. For all the business owners and independent folk: I know, nothing new here. Just me having another stressful business moment.

,

Jun
06

Twenty years ago today I became a father when our oldest son was born in the middle of the night (2:56 am). We were very young and married for only 10 months. We were broke because we bought a house when we got married. Each of us were working full time, and trying to establish ourselves in the world.

Therese called me at 4:00 in the afternoon on a Friday and asked me not to work late because she thought she might be experiencing labor pains. It was one of those weeks where I was more than happy to come home because I worked a lot of hours on a tough project hoping to meet some deadline before our new baby arrived. I was ready for my week long “vacation” (there was no such thing as paternity leave back then).

It was a nice warm day so we were able to take a short walk when I got home. We followed the instructions given to us by the doctor and waited to the contractions to get 10 minutes apart before heading to the hospital at 10:30. Sure enough the admissions people pushed us right up to the maternity ward and hooked Therese up to the contraction monitor machine. Captain Obvious (me) noted on several occasions when the contractions were starting, something I never mentioned to Therese during the other three births {g}.

During the contractions I watched the heartbeat of our son and how it would go from 120 to 60 beats per minute during the peak of a contraction. During one of the hard contractions I watched the heartbeat go flat line. So I did what any good husband would do, I panicked and screamed for the nurse who then calmly called out Stat-something or another, Code-something or another. I sat in a chair at the foot of the bed as a crew of doctors and nurses rushed the room (just like on the TV show ER or Grey’s Anatomy) calling out different observations and making guesses as to what was going wrong. They hooked up a probe to my son’s head to get more accurate readings. I felt myself passing out (not good with blood or bad medical news) so I put my head between my legs. At least I remembered proper first aid {g}. Sure enough the monitor was bad and needed to be replaced. So all night long I got hammered by every nurse and doctor as the dad who could not keep it together. I never passed out, but I did require some orange juice to keep it together. As you can see, my hatred for hardware even goes to the extent of the hospital equipment. Chris was born and was healthy (a blessing we took for granted). The doctor had some fun by letting loose blood from the umbilical cord. It splattered all over the very clean delivery room.

The next day I got to change my first diaper ever with my mom looking over my shoulder. I handled it like I had done two or three before. Today I could probably change one in my sleep as I have done so many times over the years. Actually it has been more than 10 years since I have changed one, but I am guessing it is like riding a bike. The key with boys as we learned the day we got home is to cover them up when you take off the old diaper. Twice on the first day we got to witness the fountain of urine {g}.

I have learned a lot about being a father in the last twenty years and know I have a lot to learn in the next twenty years. Today is another one of those chapters as my oldest daughter goes to her Senior Prom tonight. Now where did I store that Super Soaker? (not much into carrying a real gun around {g}). Actually the young man taking my daughter to the Prom is a nice guy and I figure this night should be no different than any other date they have been on except it is costing them a small fortune.

So Therese and I will celebrate our parenthood by taking a ton of pictures, calling Chris to wish him a happy birthday, and then going out to dinner. It will be much different than twenty years ago, but one thing will be consistent: I am exhausted after a long week of work trying to meet a deadline (but today is only Wednesday).

Jun
06

From the files of Captain Obvious: Code References does not search open files. I know, duh.

Tonight I was searching for all the places a table column is used in an application. I pulled out the always trusty Code References tool (one of the nicest tools Microsoft has included in the last couple of releases of Visual FoxPro in case you are still using VFP 7 or earlier) to perform the text search of all the files in the project. The search result list comes back with less than stellar results because it does not show any place where this column is used. I know it should be manipulated and even set as a ControlSource in one object in this form I have open, and yet the results show nothing. Argh. I have the form open!

The key to understanding what is going on is to pay attention to the Warnings/Errors details displayed in the pane at the bottom of the Code References window. This will list off all the problems the Code References’ search came across when it was looking up the text you asked it to find. In this case the form I had open was not searched and this was the form with all the code to work with the column in question.

So the moral of this lesson is to always review the status at the bottom of Code References for the search you just performed. One more bonus tip, the warnings and errors are retained as long as you keep the search results. In my particular case I was able to close the Form Designer, click on the Code References Refresh button, and see the results I was expecting.

, ,

Jun
04

One of the resources in the Fox Community that does not get a lot of publicity and might be a little under appreciated is FoxCentral. FoxCentral is hosted by West Wind Technologies and is a great place to get news about things happening in the Fox Community. Many user groups announce future meetings, third-party product producers inform you about releases, conference organizers post updates to entice you to attend their conference, etc.

Not only is FoxCentral a Web site, it is also a Web service you can access from VFP or anything else that can access Web services. For instance, the Web service is used by Foxite to display the news on the Foxite home page.

FoxCentral has been my Web browser home page since it was introduced. I also subscribe to the RSS feed in FeedDemon. Many thanks to Rick Strahl for hosting this site and for the recent update. The new look is very nice. For those who post entries, make sure to get the latest client because there have been changes to the Web service.

, ,

May
30

Yes, I religiously read Eric Sink’s blog (Eric.Weblog()) and find the posts very optimal, extremely useful, and enlightening. In fact, Eric would be on my short list of CEOs to invite to a CEO Weekend Retreat.

So when he posted his Trip Report: SD West 2007 back in March and offered the Evil Mastermind shirts I took him up on his offer. I am always up for a free geek shirt. Just ask my kids who think my entire wardrobe is made of of geek-ware.

So here is my obligatory photo:

So have I sunk to the level of promoting someone’s company for the sake of getting a shirt? Sure, but I don’t promote products or companies unless I believe they service their clients well. I really like SourceGear’s SourceOffsite. It is a great product. If you are using Visual Source Safe (VSS) and need to access the source code repository outside of your network (i.e over the Internet via a VPN), it is a tool I consider indispensable. I consider it indispensable even when working with VSS on my network. It just plain works better than the VSS client.

I see Rick Borup got his shirt too and is making an offer to Southwest Fox attendees. Another Southwest Fox speaker Alan Stevens also got his shirt. Hmm, am I sensing a trend here? Maybe we won’t need speaker shirts! {g}

Interested in getting your own shirt? Go here… and they will be giving them away at Tech-Ed if you are in Orlando next week.

, , , ,

May
28

Kevin has announced the early-bird registration for FoxForward has been extended a few days. Perfect for those who headed out early for their Memorial Day three day weekend here in the USA and forgot to send it in. Hurry up, you have until this Wednesday, May 30th.

May
26

I often refer developers to the Solution Samples and the Fox Foundation Classes (FFC) to see how things can be accomplished with Visual FoxPro. I have read Doug Hennig’s articles on mining the gold out of the FFC and sat in on his sessions on the same subject. I believe these two resources are under utilized by many Fox developers. I might not use the classes directly (although I have from time-to-time), but the concepts and fundamental code is all there for the taking. There is some really cool code in the samples.

This month I got to leverage a class I have wanted to use since seeing it in the VFP 8.0 beta, but have not had a reason to do so until this month. I am not sure who wrote the System Tray Icon class, but they did a spectacular job on it. As is documented in the class: this is pure magic with a combination of Windows API calls and the BINDEVENT() function.

The concept is simple: display an icon in the system tray (AKA: the Windows Taskbar Notification Area). The icon handles events for the double-click and right-click so the user can interact with the icon with an optional menu, or run a process, or display a form or report. Optionally you can inform the user of events or actions taken via a balloon tip and/or a tool tip.

Like all the VFP Solution Samples, the System Tray Icon class comes with a sample to demonstrate how you work with the class. I was able to study the solution sample and get the class operational in short order. The sample uses a form and has the system tray object dropped on the form. I did everything in code:

goSysTray = NEWOBJECT(“SysTray“, “SysTray.vcx“)

goSysTray.IconFile = “Graphics\SystemTrayApplet.ico
goSysTray.TipText = “Process Runner Status”
goSysTray.MenuText = “menus\SysTrayShortcut.mpr
goSysTray.MenuTextIsMPR = .T.
goSysTray.MenuOffsetFromRight = 100
goSysTray.AddIconToSystray()
.
.
READ EVENTS

There are numerous ways to create a menu. I created a shortcut menu complete with icons. My menu starts and stops a Windows Service, opens a top-level form, and shuts down the system tray applet. My application has a CONFIG.FPW compiled in it (file not excluded) to ensure the VFP frame does not display, a FoxUser.DBF file is not created, and some general house cleaning is handled.

SCREEN = off
RESOURCE = off
HELP = off
MVCOUNT = 1200
TITLE = Process Runner
BITMAP OFF

Since the status form is a top-level form it gets displayed on the Windows Desktop and it looks like a professional application to the end users.

Once and a while I will surf through the Solution Samples and FFC (via the Component Gallery) to see what is there and to take a peek at the code if I have time. The reason is probably obvious: if a client calls me and asks me if I can do something like X and I have not done it before, but can recall seeing it in the Solution Samples or FFC, I can tell them it is feasible. In the case of this project, when the client asked if he could have an icon in the system tray to show a form with the status of his process running as a Windows Service I was able to say “sure, no problem.”

If you are looking for the System Tray Icon solution sample just start up the Task Pane Manager, click on the Solution Samples, and look under the New in
Visual FoxPro 8.0 grouping. I am not sure I would have been able to put this class together in a weeks worth of hours. Thanks to whoever put this together. You made me look real good to my client and saved him a bunch of development time and money he can use on other parts of his project.