Jun
19

VFP and heart stoppage

I can probably count on both hands and feet the number of times I have literally sworn at Visual FoxPro (that would make it an average of once a year). Today was one of those days. I have been working on a new solution for one of my customers that needs to send email. I have tried several techniques with emailing from FoxPro over the years (Outlook Automation, CDO, West Wind wwIPStuff, Shelling out a MailTo, and most recently Craig Boyd’s Extended MAPI FLL, and Blat). The swearing has nothing to do with any of the email techniques, but I can say working with email does cause hair loss.

The situation that caused me to swear today was one I have never seen before, and honestly cannot explain how it happened. I was working with a set of classes. One parent class (abstract) and four different subclasses with all the different implementation scenarios. I was using the Class Browser to work with the class library. I instantiated the child class like normal using a NEWOBJECT(), and then called the SelfTest method I have setup to run through different test scenarios I have to verify the code works as designed. I found the problem I was tracking down in the debugger, canceled out, and opened up the subclass.

This is when the twilight zone moment happened. When I opened the class all the source code for the class was gone. I mean gone, as in zero property settings, and no method code. I closed the class and opened it again. Same thing. Holy S&^*&&*t! (sorry, but I have to tell the whole story). A complete morning’s worth of stream of conscious coding out the window. I tried to open up the parent class and got the message that the class was in use. Weird.

CLOSE ALL
CLEAR ALL
RELEASE ALL
CLEAR PROGRAM
ox=.NULL.
RELEASE ALL
*{pray}

Yes, I know the commands have some redundancy, but one can never be to sure to get the cleanest environment. Back to the Class Browser and still no luck opening the parent class: still in use. Visual FoxPro has a way to hold on to classes when I least want it to. Time for the FoxPro flush (not the FLUSH command, rather, QUIT and restart). Opened up the Class Browser and my subclass and there it is in all it’s glory, the source code for methods and properties are back to normal. Relief.

So I backed up the class library and finished up the documentation in the classes and called it a morning. Hopefully the stress of potentially losing the source code made me stronger since it did not kill me (this time at least).

Jun
18

I know a lot of you reading this post are fans of TechSmith’s SnagIt. TechSmith released the new version a week ago and I upgraded my production machine over the weekend (only US$19.95). Simply said: SnagIt 9 rocks! I was not sure exactly what TechSmith could do to improve what I think is a nearly perfect product, but the folks over in Okemos Michigan obviously listen to their customers and have added some terrific stuff.

Over the years I have become more and more reluctant to installing newly released software, but I did not hesitate to do so with SnagIt 9 despite being in the middle of a number of projects including a new book, a regular column in FoxRockX, and using this tool to write specs and user documentation. In short, I cannot afford to lose SnagIt stability. TechSmith did not let me down. In fact, they have made my life better with the newest release.

My favorite new feature is the revamped SnagIt Editor and the ability to work with multiple images. When I am working on an article, chapter in a book, white paper, or user documentation I like to do some side-by-side images. Previous to this release I had to take the images separately, save them, and use something like MS Paint or Paint.NET to merge them together. Now I can take a couple of snags and use the editor to work with as many images as I can capture. No more one-at-a-time. This editor allows you to drag-n-drop images from the Open Captures Tray to the Canvas. Nice.

Speaking of the SnagIt Editor, I think they have implemented the ribbon control perfectly. I will admit, when I first saw the ribbon control demonstrated in Microsoft Office a couple of years ago I was skeptical. I adapted to it quickly in Microsoft Office, but even today I occasionally run into something I struggle to find. This is not the case with the SnagIt Editor. I have found everything I have looked for and it is exactly in the place I thought it should be. For instance, instead of the blurring and edging features being on individual panes in the task pane (how it worked in SnagIt 8), they are together on the Image tab of the ribbon. Same for the rotate, resize, crop, cut out, resize, border, etc., etc. The old task pane kept switching back to the main after each effect was used, but now the ribbon stays put. The list of graphic editing capabilities keeps on growing.

Speaking of the graphics capabilities expanding, I also really like the perspectives effect. Very easy to use and lots of options.

I have already started using the new tagging feature inside the Search Pane. Very cool and very powerful. There is the ability to save your own keywords, but I am using the built in flags (important, bug/error, follow up, funny, personal, financial, idea, sent, and cool) more. What images came from Visual FoxPro, FireFox, PowerDesk, etc. Now I can search the images I have captured by any of these settings.

There is one bug I have come across, but it is already solved by the developers. Occasionally I would see the Invalid Argument messagebox pop up when grabbing an image. Only way out was to kill the app via the Task Manager. One check with the tech support site shows a fix is already ready. I have not seen the message since I installed the updated SnagIt Editor fix.

I am sure there are other new features I have not even looked at and will be using down the road, and I am looking forward to discovering them. Great user interface, great work flow, great product.

Jun
17

My new desktop image

The latest pictures of the International Space Station complete with new Kibo lab and European Automated Transfer Vehicle (Jules Verne) are posted. These were taken by the astronauts on the Space Shuttle Discovery during STS-124 mission.

Here is the newest picture on my desktop for those who are interested:

photo missing

Spectacular shot. Wish I was spending some time there for summer vacation. Only US$25 million left to save {g}.

Jun
17

After listening to a couple of friends swear it is not another potential BIG distraction, and being prompted by an email notification from Hentzenwerke with Whil’s take on Twitter, I have decided to listen to the chirping. At least give it a try for the short-term. New methods of learning is what this is all about. If I learn this is a waste of time, I still have learned something.

If you are interested in my brief ramblings, you can find me on Twitter.com/rschummer.

In case you are wondering what “tweeting” is, I posted the description on the ProFox list back a couple of weeks:

“Tweeting” is what Twits do when they post on Twitter. {g}

And for the record, I do not expect this to take away from the blogging (not that I have been doing much of this lately either with my crazy schedule). Blogs are way better in my opinion because I can explain things in detail when I have more than 140 characters to write.

Jun
12

I was mentoring one of our clients this morning because of a reporting issue he faced with some weird truncating labels (not that this tip is of any help for his problem {g}). During the session he showed me this new wiz-bang function he created to concatenate text together to be displayed on the report. He mentioned how his function removes the missing details from a snail mail address. You know the drill, customer wants to track address line 1 and 2, contact name and company name, but only wants to print the things that are filled in.

I turned around and told him about his new friend the semi-colon (;). This is a trick I learned back probably in FoxPro for Windows or even DOS when I was creating labels for customer mailings. You first drop a textbox on the Report/Label designer and size it to show the max lines you will print based on all the data being entered in the record. You can add the expression like this:

cCustomerName;cCompany;cAddress1;cAddress2;ALLTRIM(cCity)+”,”,cState,cPostalCode;cCountry

The semi-colon acts as a carriage return and any columns in the expression that are empty are not printed and if the line is empty the carriage return is not included. The commas (,) outside of a quote are replaced by spaces. So you can see how I am concatenating the city, state, and postal codes for a line.

I know this is an old trick and tip, but my client has been using Fox of some sorts for a long time too so in the case where you did not know this I am hoping it will be helpful. There are so many little things like this I take for granted that everyone knows, but realize in working with other Fox developers that this is not always the case. I also wonder from time-to-time how many little tips like this one I don’t know about.

Jun
05

It has been a very emotional time for hockey fans in Detroit, but tonight the Wings win Game 6 and clinch their 11th Stanley Cup – 4th in the last 11 seasons. The most traveled trophy in all of sports makes its way back to HockeyTown.

I think the last six games have been some of the best hockey I have seen in the last few years for sure, and maybe ever. Heart-stopping plays and continuous action makes it hard to work while the games are on. I was at my daughters final band concert this evening and missed the first period. Fortunately we had Internet on the phone and could keep current with ESPN.com {g}. I actually watched the rest of the game and only hit the computer during the intermissions.

I think Red Wing’s coach Mike Babcock made a statement that really shows how lucky the Wings are and how good a team they are – he said that when you switch goalies in the first round it normally means they are going fishing in a few days. Meaning you are usually giving up. This team was not giving up.

Most memorable moment for me is the almost goal with less than 3 seconds left in game 6, and how Osgood shuffled it away, and how sheer physics kept the puck momentum from hitting the net. I was having a flashback to game five and was dying thinking we might be going to another triple overtime. The other was when Zetterberg tied up Crosby as the puck skipped by the goal post in the fourth game. Third moment was Zetterberg’s last goal that literally squirted through the goalie’s legs and was pushed in – heartbreaking if you were a Penguin fan. The hits, the pinpoint passing, bad ice, a broken nose, hamstrings strung, post-clinkers in close games, pulled goalies, last minute goals, and octopus on the rink. Fantastic hockey by both teams.

Thanks Pittsburgh, if the Wings we not going to win it I cannot think of another team I would have enjoyed watching win it more. I would not mind playing this team for years to come.

Mary – you are off the hook. You were right in the end – the extension of the series allowed us to watch more great hockey. Terrific stuff if you are an adrenaline junkie.

Wings win, Wings win, Wings win!!!! HockeyTown rocks again. What a ride.

May
31

I have been using Ameritech/SBC/AT&T; Yahoo DSL for close to 6 years now. Overall I have been very happy with the service. It rarely goes down, which to me is the single most important aspect of Internet service. I get my emails as fast as Outlook will pull them down (which never taxes the line based on Outlook’s performance). I get to Web sites and the performance is very acceptable for me and the people who share it here at White Light Computing World Headquarters.

I started out with the 784kbps service, which was a big bump from the 144kbps service I had with Voyager before they decided to stop offering DSL. A few years ago I upgraded to Pro (1.5 to 3.0 mbps) and last year to the Elite package which promises between 3 and 6mbps service (readers might recall my post when I upgraded last year: AT&T; DSL Tries to Increase 25%).

When I moved up to the Pro service I tested out the DSL Speed at 1.2 to 1.3 mbps. Every time I tested it, no matter the time of day, no matter what day of the week, I always got 1.2 to 1.3mbps. I called the tech support and they told me the distance from my house to the central office was further than the recommended distance. I figured this was pretty good since the best I was ever able to get on dial-up more than a decade ago was 26kbps (yes I am serious, even with a 56K modem). According to the phone company I live in the oldest phone infrastructure in the state of Michigan despite the fact that my house was built in a new neighborhood just 14 years ago.

Over the last few years I have complained periodically about the performance of the line hoping they would move the central office closer to my house via the infrastructure, or put in some line boosters. I mostly complained around the time I renew my annual contract. Last year they promised me if I moved to the Elite version that I would definitely get better performance. Nope, still at the 1.2 to 1.3mbps speed. I complained at least twice since the upgrade. Apparently not loud enough.

A couple of weeks ago I get a sales call from AT&T; Yahoo asking me if I would like 6.25 mbps. I told them I would love to get the low end of the Elite service I have been paying for. You see, I have finally wizened up {g}. The gentleman told me the old modems were the problem. All I had to do is get the new service and purchase a new modem and I would be set to rock and roll. Hmmmm, new modem is the problem. So I decline and talk to tech support to see if I can get a replacement modem. I ask about the specs and they tell me they cannot find anything about the upper limits. They proceed to tell me it would be easy to get the latest technology for something like US$79.99. I get shipped back to sales again. I Google the DSL modem I have and the manufacturer’s site tells me it can go as high as 8mbps. Back to tech support.

Smelling the rat I get escalated to second level support. Interestingly enough it takes the second level tech about 60 seconds to have an “aha” moment. In my “record” I was still tagged at Express speed which means Ameritech/SBC/AT&T; have throttled my performance to max out at 1.5mbps. He updates my record and tells me to test the DSL speed again. Holy cow, over 5mbps!!! More than triple the speed I was getting minutes before when the first level techs told me the modem was old and I was too far from the central office one more time.

Back to sales to get my monetary adjustment. First level sales said the best they can do is two months credit because I did not complain enough to them over the three years they were throttling my speed. Two months!?!?!? How about $120 per year since this is what the difference is between the Elite plan I have and the Express plan I was throttled to get? Nope, the best I should hope for is two months, and actually I should consider this a “generous offer.” Seriously!?!?! Customer service has never been one of the phone company’s strong points. You would think the alleged competition would make them treat customers like human beings, but no, they treat them more along the line of the necessary evil people who pay to keep them in a job.

Moving to the “supervisor” offered me $100, credited to me over the next few months. This happens to cross over my contract year so if I bail to cable or another provider I will not even see the entire credit. Total crapola.

So the moral of this story is to test out your speed performance and ensure you are getting what you paid for. If you are getting the run around you can ask for level two support and ask them to check your record to ensure it is set correctly. I am still considering my options as far as if I should go after AT&T; Yahoo to get a full refund. I am normally anti-lawsuit, but this one really is something they should be called out on. If they are doing it to me, they are probably doing it to a lot of others. I have also considered giving a call to the local news station and getting one of their consumer reporters on the case just for grins. Fortunately for them I have been buried in work and have not had a moment to think about this since I got the “speed boost” a couple of weeks ago.

Another Life Lesson learned thanks to the folks at the New AT&T;.

May
25

I decided I needed a break this Sunday morning and came across a link from a friend that sucked me in for a little time:

http://www.jigzone.com/

I have never been a huge jigsaw puzzle fanatic, but I found this interesting and really think the technology and code behind this site has to be interesting. You can link to puzzles on your own site or blog, and even load up your own pictures. Fun idea.

Keep enjoying the Memorial Day holiday weekend if you are here in the USA, otherwise, keep enjoying your weekend {g}.