Archive for the ‘Uncategorized’ category

An Open Letter To AT&T

August 17, 2012

Dear AT&T,

I have been a loyal customer of yours since the dial-up days of Worldnet. I write this letter to congratulate your company for being so successful that you no longer need me as a customer nor need my money which you have dutifully taken without fanfare from for the past 17 years.

If you are still reading this, I’m amazed because that’s not the attitude the majority of your Customer Support conveys. My recent issues started when we decided to go with a 3rd party VoIP solution and port our existing number to that company. My wife called your Customer Support at least 2 weeks prior to ask if it was possible to port the number and keep our existing DSL connection. She was told there would be no issues. Well, obviously, there is or I wouldn’t be writing this letter.

Our number was ported and my DSL was disconnected leaving me without service. When I called to check on this issue the next day I was told there was no more DSL capacity and my service could not be reinstated. At this point, I was left with no options from AT&T- no DSL and no Uverse in my area.

My case was escalated and I was told very coldly, “there is nothing we can do for you!” Obviously, this was very frustrating to me since I did not ask for my DSL connection to be terminated and was advised there would be no issues.

This exposes what I see as a flaw in your system. No one from AT&T contacted me before, during or after my number was ported. One would think your company would contact me before porting the number for at least the reasons as follows:

1. To ask me why I am not satisfied with the current service and how AT&T could keep me as a dial tone customer.

2. To protect me as your customer and ensure I authorized the porting of my number and was not being taken advantage of by another carrier to steal your business.

3. To warn me that if I go through with the porting that I would not only have an interruption in Internet service but it would be terminated with NO option for reconnection from AT&T.

In retrospect, I wonder if your “at capacity” status is reason for some of the service issues I’ve had over the past years?

In closing, I guess this incident is a blessing. You will not be burden with needing to add my meager monthly payment to your profits. There is probably nothing you could do to bring me back as a customer (and you probably feel you don’t need me) but I hope in some way this incident will flag someone in your large organization who will be able to help the next customer with similar issues.

Thank you for your time. Please excuse me while I research cell carriers to switch my family’s 4 cell phones to.

Richard Dowell

Unable to Ping Router using GNS3 and VMWare ESXi Environment

June 4, 2012

I haven’t posted anything new to this site in a long, long time but thought this was worthy of posting since I could not find the answer in my searches. I have a simple simple network configured on VWare ESXi using GNS3 on Microsoft Windows XP to emulate Cisco routers. The layout is as following:

This same scenario worked on XenServer 6.0.2. After check the usual stuff (i.e. interface configs, default routes, VM settings, etc), I found the issue to be with the Promiscuous Mode setting of the VMWare vSwitch. The default setting is ‘Reject’. Setting to ‘Accept’ as shown below allows traffic to flow.

A reboot of the VMware host or the VM guests were not necessary when making the setting change above.

Core Data Error: Can’t Find Model for Source Store

July 29, 2009

Well, I’m still learning how Core Data works and how it works with iPhone OS 3.0. The following displays how I was able to resolve an error running an app using Core Data and a pre-populated SQLite database. The error gives the reason as “Can’t find model for source store”.

1. Create a new SQLite database with the following tables and columns.



Z_VERSION (Int Primary Key)
Z_ENT (Int Primary Key)

ZFriends is an example of the pre-populated table with the columns (or attributes) FirstName and LastName. Z_METADATA and Z_PRIMARYKEY are the tables necessary for Core Data functionality.

2. Create the Data Model (xcdatamodel file) in XCode.


a. Create the Entity (Table Name without the leading ’Z’).

b. Create the attributes (Columns).

Using a Pre-Populated SQLite Database with Core Data on iPhone OS 3.0

July 13, 2009

I was recently re-writing a yet to be published iPhone app to use Core Data with a pre-populated SQLite database. I was able to get the app to function with a new database using the CoreDataBooks sample code as a reference but could not get the app to read a pre-populated database added to the project.

After many hours of troubleshooting, I discovered differences in the pre-populated database and a Core Data created SQLite database. The pre-populated database consisted of just my simple 1 table structure and the Core Data created SQLite database consisted of “extra ‘Z’ tables’ For example: Z_METADATA, I searched the Internet and Apple docs but could not find a utility or any other way to convert or prep a pre-populated SQLite database for use with Core Data.

Right or wrong. Here’s what I finally did (NOTE: All the ‘coding’ is based on the CoreDataBooks sampe):

In XCode:

1. Ensure the CoreData framework is added to your project.


** If creating a new project, check the ‘Use Core Data for storage’ option when selecting a template.


2. Create the Data Model file (xcdatamodel) if not already created.

a. Click File | New File.

b. Choose iPhone OS | Resource | Data Model


c. Click Next, name the file and click Next again.

d. If the model class is already created, select it from   the  next window. You can create it later if it isn’t created already.


2. Add an Entity (table name) and bind it to the class.

a. Click Design | Data Model | Add Entity

b. Rename Entity to the table name you wish to create and change the Class to the desired class name.


3. Create the Attributes (columns).

a. Click Design | Data Model | Add Attribute

b. Rename newAttribute to the desired column name and set the type.


c. Repeat step b for each additional attribute.


4. Set the name of the SQLite database name and location in the AppDelegate.m file (Please refer to the CoreDataBooks sample code for further info).

– (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator != nil) {
return persistentStoreCoordinator;
NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @”CoreData.sqlite”];
Set up the store.
For the sake of illustration, provide a pre-populated default store.
NSFileManager *fileManager = [NSFileManager defaultManager];
// If the expected store doesn’t exist, copy the default store.
if (![fileManager fileExistsAtPath:storePath]) {
NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@”CoreData” ofType:@”sqlite”];
if (defaultStorePath) {
[fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];

NSURL *storeUrl = [NSURL fileURLWithPath:storePath];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];

NSError *error;
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
// Update to handle the error appropriately.
NSLog(@”Unresolved error %@, %@”, error, [error userInfo]);
exit(-1);  // Fail
return persistentStoreCoordinator;

5. Build and Run the app.

In Finder:

1. Use Spotlight to search for the SQLite database created by the app in the iPhone Simulator. This is /Users/<Username>/Library/Application Support/iPhone Simulator/User/Application/<Application GUID>/Documents/<database name.sqlite>

2. Copy that database to a working folder.

3. Populate that database.

4. Add the populated database to the project.

I hope this helps! If anyone has a better or preferred way of formatting a SQLite database for use with Core Data, please let me know.

WatchGuard x550e: Upgrade from a WatchGuard x500

July 6, 2009

With WatchGuard dropping the support on the WatchGuard x500 Firebox product in September 2009 you may find yourself configuring a new WatchGuard. We recently purchased a WatchGuard Firebox Core x550e. There is good news and bad new.

The bad news: You cannot use the config backup file from the x500 to configure the x550e. 😦

The good news: After you run the setup wizard to configure the x550e Firebox, you can configure the firewall policy with a backup (XML file) from the x550. Here’s the steps:

1.On the x500 Policy Manager, click File | Backup and save the backup to an XML file.

2. On the x550e Policy Manager, click File | Restore and load the XML from step 1.

3. On the x550e Policy Manager, click Network | Configuration and click Yes to the message concerning whether you want to change from a 6 interface Firebox to a 4 interface Firebox. If you don’t do this, you will receive a DATA_ERROR concerning the interfaces when attempting to save the the firebox in the next step.

4. On the x550e Policy Manager, click File | Save > To Firebox.

5. You should know have the policies from the x500 on the new x550e Firebox.

WatchGuard Firebox x550e Factory Default

July 6, 2009

I recently found myself with the need to set a WatchGuard Firebox x550e to the factory default. If you’ve ever had to do this for any WatchGuard Firebox product you know there are different procedures depending upon which Firebox you have. This WatchGuard support article details how to do a factory default of a Firebox X Core or Peak e-Series and non e-Series.

XenServer 5.0: Creating a Windows File Share

June 9, 2009

At some point you might need to setup a VM using an ISO file. This post shows how to setup a file share for use by XenServer.

1. Within XenServer, click Storage | New Storage Repository.


2. Click the Windows File Sharing (CIFS) radio button and click next.


3. Enter the desired name and share name. Click Finish.

4. The new repository (CIFS ISO library) is displayed in the left-hand pane of XenCenter with details on the right-hand-side.



5. Now you can use the ISOs on this Windows Share to setup your VM by changing the DVD drive setting to the desired ISO.