Archive

Archive for January, 2008

Jan
31

I am busy. Really busy. But my dad called me this afternoon and is frustrated because his email has not worked in a couple of days. He is able to get email, but not send. The same problem is on my mom’s computer. He is also worried because he knows I am really busy and did not want to bug me, but he thinks he as a serious problem because Comcast sent him an email noting his email is getting blocked because he as a virus.

Virus?!? Really? Possible, but very unlikely. Each of their computers are stacked with AVG and ZoneAlarm with email protection, and I run regular scans for spyware every time I visit, and there has not been a single problem.

So I read the email and Comcast wants to configure email through port 587. They have blocked port 25 because their customer is being bad with spam. More interesting, the email states to click on a link in the email and it will automatically configure your email client to use this new port. I don’t know about you, but this immediately sets off the warnings for me. How they heck is this not a virus waiting to be sprung?

So I call Comcast tech support. I tell them I am the tech for my folks and I want to confirm that Comcast really sent this email. “Yes, your parent’s account has been flagged because they have some sort of virus on their machine that is sending out email and we need to protect ourself.”

Thanks bud, you just made me look bad in front of my parents (customer) telling them my plan to protect them failed. I press a little more. Can you tell me exactly what triggered this message? Can you tell me what machine and what virus is lurking for me to fix? The customer support person hesitates, “I am only trained to change you to port 587.”

So I push more and ask, is the only fix I need to do is to change to the new port? He responded affirmatively. Seriously? Seriously?!? What about removing the alleged virus. “Well, it could be someone reported abuse against the IP address, or your email address. It might not be a virus that triggered the alert. It could be that your parents emailed out to a distribution list of 100 people.” I directly asked them if this was a general email or one sent only to my parents because of the situation. They received it because they were flagged.

How deceptive is this?

I called the Abuse/Security department and asked for details. They basically told me they could not because it was proprietary information. I see, they can claim the customer has a virus, but cannot explain exactly what it is. The rep was downright obnoxious. Customers are guilty without any real proof.

BTW, it does not matter what port you connect to, if the client is configured to the port the email will get sent. The only thing this protects against is direct port 25 access of the virus. All they need to protect against this is require authentication to send the emails.

I googled “Comcast 587″ and see this is not unusual with their other customers to lock down the port. While this can be a pain if you use another email provider who is only set up for port 25, all Comcast had to do is be upfront with the customers and say we are being extra careful to protect against spam. Ameritech/SBC/AT&T; also blocked port 25 years ago, but they allow customer to waive the block. Still a pain in the neck, but more customer oriented than Comcast.

If my parents did not have a geek to call they likely would have had to hire someone to fix a non-existing virus. They would have taken three computers to the local Geek Squad and spent money on nothing and it still would not have fixed their email.

Bonus time waster: the link to automatically fix their email client brought up a page of ASP script code dumped in the browser. I mention this to the tech who told me to click on the link in the email. I figured it would not work. The tech said they were having some problems reported with this. Really?!? I’m shocked!

Comcast – thanks for wasting an hour for me today, I needed the break. You truly have extremely poor customer service, a horribly abrasive Abuse department, and treat your customers to deception that is wasting a lot of time and likely money on support costs. Pathetic.

, ,

Jan
27

Looks like Craig Boyd was up all night putting the Sedna source into VFPX on CodePlex. You can read more at the Sedna page on VFPX. Craig also reveals the location for the very cool DBi Technologies ActiveX controls released with Sedna too!

Thanks Craig!

,

Jan
26

Over on ProFox there has been some minor grumbling about Sedna requiring SP2. I do not think SP2 is required. I can see some of the components requiring VFP 9, but my guess is the components will work fine with SP1 and maybe even the RTM version.

I think the only things required is the .NET 2.0 framework for the NET4COM, Visual Studio for DDEX, SQL Server for the Upsizing Wizard, and Vista for the VistaDialogs. I believe the SP2 requirement on the Web site is one of those things where Microsoft puts the latest version up because it is what they support.

If you think about it, Microsoft did not enhance the core VFP 9 EXE other than to fix bugs (and put some new ones in {g}). Even the new Reporting enhancements in SP2 work in SP1 (something I heard from Colin Nichols at OzFox 2007 if I remember correctly).

The one thing I have not tested is attempting the Sedna install on a machine without SP2. I would be very surprised if the installer checked to see if you have SP2 installed first. If we find out this is the case, I have a workaround to have both SP1 and SP2 on the same machine peacefully.

, ,

Jan
26

I know this has been long in coming, but very early this morning (1:00am EST) Microsoft released the much anticipated Sedna add-ons for Visual FoxPro 9.

You can download it from the Microsoft download site. There is a readme file and an MSI file to download.

Sedna includes the DataExplorer updates, DDEX for .NET access to VFP data, the MY IntelliSense extensions, the NET4COM examples to bridge VFP and .NET, the Upsizing Wizard for SQL Server, and VistaDialogs4COM to modernize VFP on Vista.

I will be installing it soon and will post my thoughts a little later.

, ,

Jan
06

The Business of Software Conference was held October 29th and 30th, 2007. It was a conference I really was interested in attending, but because it fell right between Southwest Fox and German DevCon I could not squeeze it in. The speaker list has some of my favorite bloggers.

The cool thing is there is the Business of Software Blog. This blog has interesting posts and some of the posts have videos from the conference. I just finished listening to Eric Sink from SourceGear talk about Marketing for Geeks. Great talk, even if he did disrespect Detroit {g}. It was something I could listen to while working on some code. This would make a great session for the business track at Southwest Fox.

They are planning a conference this year. I am hoping they move it to a different date so I have a better chance of going.

, ,

Jan
06

Over the last 10 months I have been complaining loudly about Outlook and how it has frustrated me because of a few issues with performance. Several of my friends have recommended to me to use Web mail to handle my email. Centrally processed, backed up on a remote server, and accessible from anywhere in the world. All valid and tempting reasons for sure, but there are several reasons why I won’t ever use Web mail:

1) All the email resides on a server and the server has limits of 10MB for my host. I can probably pay to get this bumped to a higher limit, but I have 10 years of historical emails in Outlook and my main PST file and archives totally more than 3.0GB.

2) I don’t control my own data. All my contacts, all my folders, all my emails. If the server is not backed up correctly it could all get deleted. Worse yet, what happens when I am not happy about the hosting provider, how would this information get moved to a new hosting company and server?

3) In general Web mail stinks. It is definitely not as rich as the Outlook interface and not as powerful with respect to rules to file email to folders. I do use Web mail when I am away from my computer or don’t have wireless Internet access except through my phone. Handling email via the phone is a task, but usable when I have too (like sitting in an airport, or stuck in a traction machine at the chiropractor, or waiting between appointments).

I don’t always read Robert Scoble these days as I find most of what he is talking about irrelevant to me, but occasionally I will scan his post topics to see if something interesting comes up. Some of his recent posts have been quite interesting about how he broke the terms of one of the social networking services and had everything erased from his account and was locked out. Photos, video, and things other people posted. Almost as if it came right out of a science fiction movie. Scary!

How much data is out there on the Web that is out of the control of the users? I am guessing a lot. Granted, having access to the information from any computer is cool and productive. My wife is the perfect example: she does not really have her own computer. So she rotates to any computer in the house that is open to check her email. I occasionally back up her contact list to CSV format and download a copy to the server. She would be unhappy if her email evaporated one day, but life would go on for the most part. Nothing mission critical.

There is no way in heck I would allow other companies to control my data. Not my business data, and not my personal data. This is exactly why I use a program on my computer to control my email, and why I have a word processor and spreadsheet program locally. I am not a future customer of Google Apps.

Even though my blog is handled through Blogger, all my posts are posted to my hosted Web site, and yes, I do back those up so they do not evaporate one day.

I will not rely on online backup services to protect my backups. I handle them myself. If there is anyone to blame for losing something, all I have to do is look in the mirror.

Data is too important to trust to someone else. I do not want to be the victim of erasure like Robert Scoble.

,

Jan
03

My ongoing battles with Outlook have eased a little since installing Office 2007 SP1 on New Year’s Day, but it is still slower at getting POP3 email than Outlook 2003. So I guess a small hurray is in order.

I was hoping for dramatic improvements since reading some of the fixes listed for the SP1 update. At least the “freeze” I experience when getting email is minimal after the update. I can scroll my list of folders with very little interference and I have only experience my typing lock up a couple of times for a couple of seconds when composing an email when a download pass is in process. The download of the email is faster, but not as fast as 2003. At least I don’t get the 30-60 second lockups, and the first pass of email in the morning can happen in a couple of minutes instead of the normal 15-20 minutes.

I am looking forward to testing this out on my Vista machine to see if the performance is any better. The other good news is I have not experienced any new bugs. At least so far. {g}

,

Jan
03

Each time a new version of VFP is released I look at all the new commands and functions to see how I might be able to incorporate them into my user applications and developer tools. Each time I have found some function or command that makes me scratch my head and wonder what the Fox Team had in mind. For VFP 9 this was MAKETRANSACTABLE().

At least this is how I felt about this command up to a month ago. I received a new mini-project from one of my clients who needed a basic import of some accounting data from an external program into their custom app. The external table was a free table created and/or updated by another program. The new records needed to be imported into another DBF contained in a database container. Once the records are imported I needed to stamp them as imported in the free table. Hmmm, sounds like something I would want to do inside a transaction, but I have this free table… ah, finally the perfect reason to use MAKETRANSACTABLE().

The funny thing about this is I have never tried the new command to see if it works {g}. It is rare for me to work with free tables in a production environment. Normally I work with SQL Server, or VFP contained tables.

So I tested it out and it does indeed work, and it works well. The odds of the import not working is very, very remote because I am only adding the new records to the database table (no updates of existing records), but I thought the extra security of doing it inside a transaction was worth the extra couple of commands to add to the code.

Here is some of the code so you can understand fundamentally what I did.

TRY  USE (toParameter.cFeedFile) IN 0 EXCLUSIVE ALIAS (toParameter.cFeedFileAlias)  SELECT (toParameter.cFeedFileAlias)  INDEX ON TimPe TAG TimPe   * Allow the free table to work in a transaction

  MAKETRANSACTABLE(toParameter.cFeedFileAlias)

 * Set buffering so entire table gets updated or can be reverted  CURSORSETPROP("Buffering", 5, toParameter.cFeedFileAlias)  **** Open other tables...

CATCH TO loException  toParameter.lOpenedAll = .F.  toParameter.cTableUpdatedFailureMsg = "Failed opening tables - " + ;                                    loException.Message ENDTRY

*** Handle processing of tables...

* Start a transaction so all changes can be backed out.

BEGIN TRANSACTION

toParameter.lDatabaseFileTableUpdatedResult = ;TABLEUPDATE(.T., .F., toParameter.cDataBaseFileAlias)

IF toParameter.lDatabaseFileTableUpdatedResult * Continue on with the feed table update  toParameter.lFeedFileTableUpdatedResult = ;  TABLEUPDATE(.T., .F., toParameter.cFeedFileAlias)   IF toParameter.lFeedFileTableUpdatedResult * All changes committed    END TRANSACTION  ELSE * Record why    AERROR(laError)    toParameter.cTableUpdatedFailureMsg = laError[2]  ENDIFELSE * Record why  AERROR(laError)  toParameter.cTableUpdatedFailureMsg = laError[2]ENDIF 

* Determine the way to finish up.IF toParameter.lDatabaseFileTableUpdatedResult AND ;  toParameter.lFeedFileTableUpdatedResult * All went well and is commitedELSE  * Problems and rollback  ROLLBACK   TABLEREVERT(.T., toParameter.cDataBaseFileAlias)  TABLEREVERT(.T., toParameter.cFeedFileAlias)  toParameter.nRecordsInserted = 0 ENDIF

RETURN

I think it is cool when there are others that have a vision to incorporate things into Visual FoxPro that hit me years later how I can use them.

,