Entity Framework, oh how you cut me

by Robert Mills 20. January 2012 17:00

So, Linq to SQL is awesome, but I have never really much cared for Entity Framework.

At work, we are moving to using WCF Data Services for our database access, and using Entity Framework since configuring WCF Data Services to use linq to sql is about as pleasant as punching yourself in the face...3 or 4 thousand times.

So, today I needed to add a view, a simple thing really that did bascially 'select distinct somecolumn from table where somecolumn is not null'. I drag and dropped it on the design..8 times. It never actually took.

After some discovery, I notice that down in the bowels somewhere it was gently telling me there was a problem, but not really telling me what. Interestingly if you open the edmx in notepad, you will notice it added my view, except it commented it out  stating the view 'does not have a primary key defined and no valid primary key could be inferred'.

Awesomely there isn't any way to tell it that column is the inferred private key, can we move on. Instead, I end up following an article on MSDN telling me how to manually edit the edmx file to add about 4 thousand new things to get it to recognize it and let me use it.

Of course I then had to add another table later, so I had to redo it all again.

Humorously, the MSDN article says 'modify your database schema so that each table has a primary key or so that one or more columns of each table or view is non-nullable or non-binary', which I tried, the view had distinct, non null, where is not null etc all in there, but it refused to work by conventional means.

It is no wonder to me why Microsoft has so much trouble trying to kill off linq to sql when EF is such a drama queen, and so often.

Tags:

Linq | Irks

Source Code For Invaders My First XNA Project

by Robert Mills 16. December 2011 17:52

As mentioned in my last post (http://blogbybob.com/post/2011/12/08/XNA-4-Project.aspx) I made an 'clone' of the Atari 2600 version of Space Invaders to try out XNA. It isn't perfect, there are a couple small bugs, some by design, some not, but you can get the code here: Source Code

I was going to network aware it, but I think I am saving that for the next game. I am going to move on to something in 3d. Suggestions welcome!

Tags:

XNA

XNA 4 Project

by Robert Mills 8. December 2011 11:19

A friend of mine at work started looking at the XNA stuff and decided he wanted to make a game. I decided to see how easy the XNA framework is, but didn't want to have to do any artwork (I am lazy).

What did I come up with? A space invaders "clone", but not just any clone, a clone of the Atari 2600 version!

I'll upload source code and a link to the installer in a bit, I would say today, but the Diablo beta is getting in the way of real work.

Tags:

Games | XNA

Diablo 3 Beta Invite

by Robert Mills 8. December 2011 11:14

Just as I start to make some good progress in Skyrim, Blizzard sends me a beta invite for Diablo 3. I think it is a ruse to keep me from coding!

Is this World of Warcraft?

Tags:

Games

Adding a custom config section

by Robert Mills 26. November 2011 19:10

This is a note to my future self as I had to sort this out this time around. If it helps you, great, else, please ignore it.
The app.config:
<configSections>
    <section name="TexturePacks" type="BlogbyBob.SpaceInvaders.ConfigurationSections.TexturePackConfigurationSection, ConfigurationSections" requirePermission="false"/>
  </configSections>
  <TexturePacks>
    <texturePacks>
      <add name="Classic" playingFieldTexture="Background" scoreBoardTexture="Scoreboard" bunkerTexture="Bunker" blimpTexture="Blimp" playerTexture="Player" playerBoundryTexture="Boundry" missileTexture="Missile" invaderTextureRow1="InvaderRow1" invaderTextureRow2="InvaderRow2" invaderTextureRow3="InvaderRow3" invaderTextureRow4="InvaderRow4" invaderTextureRow5="InvaderRow5" invaderTextureRow6="InvaderRow6" />
    </texturePacks>
  </TexturePacks>
The supporting code:
public class TexturePackElement : ConfigurationElement
    {
        [ConfigurationProperty("name", IsKey=true, IsRequired=true)]
        public string Name { get { return (string)this["name"]; } }

        [ConfigurationProperty("playingFieldTexture", IsKey=false, IsRequired=true)]
        public string PlayingFieldTexture { get { return (string)this["playingFieldTexture"]; } }

        [ConfigurationProperty("scoreBoardTexture", IsKey=false, IsRequired=true)]
        public string ScoreBoardTexture { get { return (string)this["scoreBoardTexture"]; } }

        [ConfigurationProperty("bunkerTexture", IsKey=false, IsRequired=true)]
        public string BunkerTexture { get { return (string)this["bunkerTexture"]; } }

        [ConfigurationProperty("blimpTexture", IsKey=false, IsRequired=true)]
        public string BlimpTexture { get { return (string)this["blimpTexture"]; } }

        [ConfigurationProperty("playerTexture", IsKey = false, IsRequired = true)]
        public string PlayerTexture { get { return (string)this["playerTexture"]; } }

        [ConfigurationProperty("playerBoundryTexture", IsKey = false, IsRequired = true)]
        public string PlayerBoundryTexture { get { return (string)this["playerBoundryTexture"]; } }

        [ConfigurationProperty("missileTexture", IsKey = false, IsRequired = true)]
        public string MissileTexture { get { return (string)this["missileTexture"]; } }

        [ConfigurationProperty("invaderTextureRow1", IsKey=false, IsRequired=true)]
        public string InvaderTextureRow1 { get { return (string)this["invaderTextureRow1"]; } }

        [ConfigurationProperty("invaderTextureRow2", IsKey=false, IsRequired=false)]
        public string InvaderTextureRow2 { get { return (string)this["invaderTextureRow2"]; } }

        [ConfigurationProperty("invaderTextureRow3", IsKey=false, IsRequired=false)]
        public string InvaderTextureRow3 { get { return (string)this["invaderTextureRow3"]; } }

        [ConfigurationProperty("invaderTextureRow4", IsKey=false, IsRequired=false)]
        public string InvaderTextureRow4 { get { return (string)this["invaderTextureRow4"]; } }

        [ConfigurationProperty("invaderTextureRow5", IsKey=false, IsRequired=false)]
        public string InvaderTextureRow5 { get { return (string)this["invaderTextureRow5"]; } }

        [ConfigurationProperty("invaderTextureRow6", IsKey=false, IsRequired=false)]
        public string InvaderTextureRow6 { get { return (string)this["invaderTextureRow6"]; } }
    }

    public class TexturePackElementCollection : ConfigurationElementCollection
    {
        protected override ConfigurationElement CreateNewElement()
        {
 	        return new TexturePackElement();
        }

        protected override object GetElementKey(ConfigurationElement element)
        {
            return ((TexturePackElement)element).Name;
        }

        public TexturePackElement this[int index]
        {
            get { return (TexturePackElement)BaseGet(index); }
            set
            {
                if (BaseGet(index) != null)
                {
                    BaseRemoveAt(index);
                }
                BaseAdd(index, value);
            }
        }
    }

    public class TexturePackConfigurationSection : ConfigurationSection
    {
        [ConfigurationProperty("texturePacks")]
        public TexturePackElementCollection TexturePacks
        {
            get { return (TexturePackElementCollection)this["texturePacks"]; }
        }
    }

The client code (kind of, chopped out what I don't need for this example.

            TexturePackConfigurationSection section = (TexturePackConfigurationSection)ConfigurationManager.GetSection("TexturePacks");

            for (int t = 0; t < section.TexturePacks.Count; t ++)

            {

section.TexturePacks[t]);

            }

Tags:

XNA Map editor

by Robert Mills 12. November 2011 10:06

A friend of mine at work is learning to write C#, and decided to do so through writing some small games with XNA.

He found a XNA Map Editor at XNA Fantasy that seems to have been abandonded in late 2008. The author's comments say it is free to redistribute as long as you give him credit.

I've updated it to build in Visual Studio 2010, .net 4 and the latest XNA framework and uploaded it here.

 

The only real verification that I have done is it builds, and when I hit go, it opens the application. My friend says it is working as he expects though, so you are welcome to download it, send thanks to the original developer, and you milage may vary :)

Tags:

Asus Transformer Prime

by Robert Mills 12. November 2011 09:58

Today I am being punished for being an early adopter. Not only do I 'need' the new tablet (I have a gen 1 TF) but I will have to buy a new dock.

Fortunantly, I kept the boxes for my existing tablet and my existing dock. I think they are going to be Christmas presents for the wife :)

Tags:

Home Server 2011 unattended install file

by Robert Mills 25. October 2011 19:36

Stole this off the internet somewhere, but this is here for when I need it again. Home Server unattended install file for the HP Homeserver thing.

[WinPE]
InstallSKU=SERVERHOMEPREMIUM
ConfigDisk=1
CheckReqs=0
WindowsPartitionSize=61440

[InitialConfiguration]
AcceptEula=true
ServerName=HOMESERVER
PlainTextPassword=SomePassword!1
PasswordHint=some password hint
Settings=All

I have one of the older boxes that doesn't auto boot to the USB drive, so I had to hit F12 repeatedly for 10 seconds at bootup, hit down arrow 7 times and then press enter blind.

Tags:

SBS Redux

by Robert Mills 27. April 2011 18:37

So, I posted before my happiness (sic) that Microsoft is basically retiring Windows Home Server in favor of pushing Small Business Server Essentials, and I had made up my mind to pretty much stay on Home Server v1 until the end of time.

Well, my normal A.D.D kicked in and I formatted my server at the house, installed SBS Essentials 2011 and moved about 5 TBs of data across the network.

Windows Update rebooted the machine during the copy, so, well, I copied 5 TBs of data across the network again.

With Home Server gone, I no longer have Drive Extender to seemlessly duplicate my data across multiple drives, and shares are now limited to the size of one drive. To get my movies on one 'drive' I end up spanning a pair of drives together. And to get backups, I know have to set them up manually. I set up a couple drives to store server backups and go to configure my backups.

Nice

Now, I wasn't looking to back up the whole drive, just a very small couple of folders off of it, but I don't even get the option to drill into it. So not only have they screwed us out of the convienence of drive extender, now I can't even manually do what was built in before.

That doesn't even cover the fact I don't get Sharepoint or Hyper-V in Essentials. Positive spin, I have found there are a lot of great free options for virtualization out there right now!

I am off to download the sync toys to set up some file replication to get backups going. I have been a HUGE Microsoft fan for a really long time, but I have to say, they are making it hard to drink the Koolaid anymore.

Tags:

Irks | Microsoft

Forms Authentication in Sharepoint 2011

by Robert Mills 24. April 2011 11:14

After much reading, I think http://donalconlon.wordpress.com/2010/02/23/configuring-forms-base-authentication-for-sharepoint-2010-using-iis7/ is the best link to use for configuring forms auth in sharepoint 2010.

Clear and precise, and unlike most of the other links I read, the time was taken to figure out how to do everything through the management tools instead of mucking around in Notepad in the config files.

Thank you Donal, I hope some time in the future I can mail you a Double Bacon Cheesburger, with extra bacon.

Tags:

Sharepoint

Aggregate MSDN keys

by Robert Mills 23. April 2011 15:15

There is still a page that allows you to export all of your MSDN product keys to an offline location.

Tags:

Moving mail from one account to another

by Robert Mills 23. April 2011 10:27

So, having moved hosts this weekend, I ended up with a bunch of accounts that needed their mail migrated.

Any interesting (at least to me) way to do this is to add both accounts to Outlook, setting up the destination account as a IMAP account and then just dragging and dropping all of the mail into the new account.

Because it is IMAP instead of POP, it actually syncs from the client side as well and pushes all the emails to the server. You can use IMAP to create any folder structure you might have had on the old account to keep your organization etc.

Filing this under cool easy things I didn't previously know.

Tags:

Lunch

by Robert Mills 22. April 2011 00:40

The sad part is, I couldn't even finish the second one.

 

 

Best Burgers Ever

Tags:

Food

ASPNIX Hosting Review

by Robert Mills 21. April 2011 23:31

As someone who has used ASPNIX for at least 5 years (I have emails for this domain while hosted there dating back to 2007, but based on the content I would guess I had already been with them for 2 years or more), I figured I would provide a bit of feedback and a general feel from my experience there.

First things first, if you are one of the people I referred there, my apologies. I know things are fine for some of you, and some of you cancelled a long time ago. I would have moved a long time ago as well, but I just use my hosting to mess around and uptime isn't all that big of a deal.

So, for performance/availability:

When things are going well, things work great. Servers are fast and responsive, especially considering the price point. The problem is, when things are not going well, things tend to fall apart and stay apart for way too long. And customer service was always less than helpful in those situation from my experience. They either seemed to be unable to provide any information, or would plain deny the problem.

Mail: Anyone who has been with them for more than the last 6 months will know the story with the email server there. This thing was down a ridiculous amount of time for something as relied upon as email (even considering the price point) and when I would contact support, they would act like this was the first time it was down in forever. When they finally migrated/replace/fixed the server, the scheduled down time was 3 hours. IIRC, it took well over 48 hours to resolve. Or I should say, it took 48 hours to get it back online. For the next month or two, it still went down regularly, and again, when I would contact support, they would act like this was the first time it has been down since the upgrade.

SQL: I have to say, I don't think I have ever seen their SQL Sever down. The performance has been great etc. Top notch here.

Websites: Hit or miss. Seemed like it was either running great or really struggling. I had way more downtime than I would have like, but like I mentioned earlier, I wasn't real concerned about it (lazy).

I almost cancelled a couple years ago, and had actually moved my blog to self hosting at my house and blogged about my frustration with ASPNIX then, but self hosting is typically pretty drama filled when you do it on a residential connection, so out of laziness again, I ended up moving it back up to ASPNIX when they got the webserver uptime issues I was seeing at the time sorted.

Support/Customer Service: This has been the big issue for me. I don't think I have had a single positive experience with ASPNIX since day one in the customer service arena.

Long story short, they reached out to me a couple weeks ago and told me they weren't going to be supporting .net 4.0 on the server I was on and I needed to be moved to a server with their new fangled control panel software. You know me, I love change. 

Now remember, this scenario comes in to play because I have been a customer with them long enough they are retiring the Helm platform I am on.

I ftped everything down and sent them an email that I was ready to move. The replied was that the move would mean deleting my domains from the old control panel and rebuilding them on the new. In that process that meant that I would lose all of my email accounts, and emails...unless I wanted to pay them. Per domain.

So wait, they are having me move servers, after years of paying for hosting and they wanted to charge me money to move to what any new customer would get for free out of the box.

We went back and forth literally for days, and yes, it would have been easier to just pay, but as we let more and more companies treat us with disrespect, more and more companies will notice they can. (yes, I am also looking at you Charter, but that is a story for another day).

So, much immaturity on both sides, and they basically lost mostly free residual income that had lasted for 6+ years, and would have lasted probably for the rest of my life (again my laziness) over about 30 bucks.

So, yeah...anyhow, moving on.

<update>I went to leave feedback on their Customer Feedback and Reviews forum, following the rules in the sticky that feedback needed to be constructive. I was polute and specific in my issues, and when I posted, was informed that forum is moderated. My post didn't show up. I guess that is why all of the posts in that area are either positive or are concerns with Roma addressing them with specific answers. People with real grievances are just censored. I really should have left there a long time ago, I hate giving people like that my money.</update>

Tags:

Irks

XAP files are just zip files

by Robert Mills 12. April 2011 12:23

Mostly just a reminder to myself, silverlight XAP files are just ZIP files renamed, if you need to change a connection string or something in the config, just open it, change it and save it.

Tags:

Silverlight

>Barnes & Noble Nook

by Robert Mills 15. March 2011 19:45

So I picked up a Nook Color about a week ago. A week later, and about 2347273498724 format c:'s later, I have a full fledged Android tablet that, considering the price (the Nook Color is currently $249ish), is just amazing.

Yes, the iPad is better. Yes, there are better Android tablets...for $800 (Xoom anyone)? But for $250 the nook is a great device *and* I got at least $250 worth out of the journey. Hacking away at it, flashing this and that nightly etc was a riot. I don't think I went to bed before 1 am any night for the last week+ as I played with all the options. The sheer volume of applications out there for the Android is staggering (literally sometimes) and getting it to do just want you want instead of what x company wants you to do with it is right there for the taking.

I ended up my journey, for now, with Gingerbread (CM7) installed on the internal flash. Froyo is a bit faster, and probably more stable, there are a couple rough edges, but I like where it is going. I am sure I will continue to flash the nightlies as they come out.

The wife, after playing with my device for awhile went out and bought one as well. I think I will be putting Froyo on it this weekend. When Honeycomb source comes out and it hits a decently stable spot, I'll be putting it on both of them. Honeycomb is so much more a tablet experience, where Eclair, Froyo, Gingerbread feel more like using a phone with a bigger screen.

All in all, very happy with both purchases, highly recommend it for anyone that wants to play around with it. As for the disclaimer though, Android on the nook is not in the same place as it is on some other devices. It isn't something you can give to your grandma and let her run with it, it will probably need at least a bit of TLC now and then.

If you are interested in such things, I would pop over to the XDA forums and check it out.

Tags:

Nook

Windows Home Server 2011 RC release

by Robert Mills 5. February 2011 13:58

Not that anyone cares. It seems like it is pretty unanimous that people will either be staying with Windows Home Server v1 or moving on to something like Amahi with Greyhole built in to replace the removal of the only real feature of home server, drive extender. Ok, so the backups were nice too, but not worth keeping the product for.

I find it just unfathonable that Microsoft would get 97% feedback that home server without drive extender is no longer a product and still take it out. There is really only one possibility, they are killing home server to move people to small business server essentials instead. Since, you know, the clientelle is so overlapping...oh wait...

Personally, I am virtualizing v1 home server and calling it a day, though Amahi is definitely tempting.

Tags:

Microsoft

Getting SSMS to print messages before hell freezes over

by Robert Mills 27. December 2010 08:52

Scenario: You have a sproc that takes about 2 decades to run and you want to see where the problem section lies.
Problem: When you put print statements in your sproc to debug, ssms (and sqlcmd) cache them until after the sproc is done running before printing them out. This also affects RAISERROR.

Before we go any further, I want to say, who ever designed this needs to reevaluate their career choice.

Anyhow, The solution is to use RAISERROR, with any severity of 10 or less (SQL won't stop on a low severity error) and add WITH NOWAIT. This tells the query engine to print you message NOW DAMNIT.

Syntax: RAISERROR('Print my message NOW DAMNIT',0,1) WITH NOWAIT

Tags:

SQL

Performance Issues with the Telerik Dropdown

by Robert Mills 3. September 2010 08:18

It seems there are some rendering performance issues with the Telerik drop down, but I was able to find a fix on one of the Telerik blogs. It is an older post and the namespace on the controls is not what is default now, but it still works. It is basically changing out the embedded control that is used for rendering from a RadComboBoxItem to a virtual stack panel. It took the performance I was seeing from unacceptable to instant.

You can read more here: http://blogs.telerik.com/valerihristov/posts/09-10-28/virtualized_telerik_combobox_for_silverlight.aspx

 

Tags:

Silverlight

Blog Spam

by Robert Mills 6. August 2010 22:02

Holy crap, I sure picked a bad time to start blogging again. 62 spam comments today!

Humorously, I also had a recruiter send me a message through the blog, I mean, really? With all of the people un and under employed in this economy, you would think they would have plenty of candidates without going to such seemingly extreme measures.

Tags:

Media Center

Day One with ATT DSL

by Robert Mills 4. August 2010 20:58

So, today is the big day, when I get to stop tethering on my cell phone and get real internet again. Maybe.

I get home to find a big 70 foot long cable running from the road, across my yard and around to the side of the house. It seems they hooked up my DSL, but didn't have time to bury the cable. They are coming back in eight days to do that...

Having said that, I should have internet! Wait. My welcome package didn't come today like it was supposed to.

As fortune would have it though, I declined being provided a modem and elected to use my own. Jet down the stairs, hook everything up (we'll bypass the complexity caused by the rats nest of cabling in my basement...) and...

I need my PPP username and password. Sigh.

Now, I have to admit, ATT's automated phone service is ingenious. Never before have I had to randomly guess what it actually wanted me to say to get to the right person, after answering truthfully and getting sent in circles for 48 minutes. However, once I actually reached a real live breathing human being, they sorted me out pretty quick, not counting one oddity.

As I have read elsewhere, they really, really didn't want to support my modem. I didn't even ask them to, I literally said I needed my username and password, that's it. I eventually even agreed to use the Motorola 2210 I had laying around from the *last* time I had DSL with them at our old house. Humorously, they use a class C internal address range coming out of their modems. So it wanted to use 192.168.1.1 as the external IP for my network. Kind of an issue, since I use that range for my internal network, and I reallyu wasn't interested in changing my DHCP server's scope, reassigning all of the reservations and rebooting a gajillion machines, and the wireless access point... Not to mention I would have lost connectivity to the server that the DSL modem was plugged in to and I really didn't want to have to walk back in there to log into it locally.

Oddly, this seems like it is what it is for DSL, as the other DSL modem I purchased is actually using 192.168.0.1 as the external IP for my network, which seems even *more* drama filled, as most routers default to that range.

Long story short: Much drama, but I have internet again!

Tags:

Bob

Virtualizing TMG

by Robert Mills 3. August 2010 19:10

I may be a humble software developer by day, but at night... I play a network admin on TV. One of the things I have been thoroughly enjoying playing with lately is Threat Management Gateway, or ISA 2010. The wife, however, is just quite ecstatic that Microsoft now supports running it virtualized, so I don't have to buy another server!

Long live Bill Gates...uh..Steve Ballmer!

Tags:

Networking | Hyper-V | TMG

PDC 2010

by Robert Mills 3. August 2010 19:06

Very excited, unless the world ends between now and then, I am going to the PDC!

Tags:

Bob

ASP.NET MVC 3 Preview 1 is out

by Robert Mills 1. August 2010 15:02

Stumbled across this on HAACKED yesterday. Preview 1 for MVC 3 is out. I must be falling behind, it seems like it hasn't been that long since I launched my first MVC 2 app...

I guess the main things to know are:

  Requires .NET 4.0
  Requires Visual Studio 2010

Read more: http://haacked.com/archive/2010/07/27/aspnetmvc3-preview1-released.aspx
             or: http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx

Tags:

ASPNET | MVC

The Day the Internet Died

by Robert Mills 30. July 2010 15:07

I guess I should first say, I am posting this tethered to my cell phone, as my previous ISP and I have had a disagreement with what constitutes 'service'.

Now, humorously, the ISP I just parted ways with actually looks really good on paper. They offer 30 down/3 up service, albeit at $80 a month (85 if you lease a modem). Having said that, this is actually the second time I have cancelled my service with them.

Let's travel back in time a couple years. Around 2007 or so, I moved near where I am now and found out the area was serviced by Charter Communications instead of Time Warner, which Charlotte has. Now, I have heard complaints about Time Warner's service in Charlotte, but more or less they have treated me ok, my needs aren't that extreme. Anyhow, Charter comes and hooks up our 10meg by 768k service or whatever the default speed was and we go merrily on our way. Except between 5PM and 10PM, when I found myself either with extremely slow speed (less than one meg down) or no service at all, the modem sitting there blinking it's ready light at me.

I call in and they come check out my line, and tell me how everything is great, but of course it is, they come at 8AM. I am not having issues at 8AM. Fast forward 6 months and about 8 service calls later. They are basically refusing to come to my house unless I agree to pay the 'wiring maintenance fee' or some silliness. I agree to pay the fee if they will actually fix my issue. By some act of the Newborn Baby Jesus, they actually agree to come out after 5PM to see what I see. They even send a specialist. He basically takes a reading and within 5 minutes tells me that the issue amounts to over sateration of the nodes that service my area.

Nice, you would think someone could have told me that 6 months and 8 visits ago, instead of blaming me the whole time and telling me I just can't configure my router/modem/computer/whatever. Even better, there were currently no plans to upgrade said nodes, so there was no fix in site.

I called ATT the next day and set up service, cancelling my Charter the day it got hooked up. The problem? At the time, the only service you could get from ATT without also paying for a home phone line was something silly like 768k down/128k up. I struggled along with that as long as I could, but ended up coming to the realization that I had no choice. I had to go back to Charter.

So, I set up the install and get Charter installed again. I pay extra to get 30 down/3 up hopeing that would mean I could at least stay connected to the internet during the peak times. More or less it worked, so I went on for the next couple of years rewarding Charter for their poor service, not only by being a customer, but by paying extra to do so.

The second issue is why I am where I am now. Fortunantly for me, ATT now offers all of their internet speeds whether you buy phone service as well or not, the unfortunant piece is DSL is so rediculously slow compared to what you can get from cable.

But back to why I am tethered to my cellphone. I called Charter for service, my $80 a month 30meg by 3meg line is behaving worse than usual. I haven't gotten a down speed higher than 3.5meg in about 3 days, and pulling up a typical site would sometimes take 30-45 seconds, so there was some serious packet loss going on. The tech comes out and tells me a recent storm caused some issues and I could expect service to be restored to normal in a couple weeks. Really? Then he went so far as to tell me 'if you are lucky and fixing something else fixes your issue, it might be back in as soon as a week!'

Now, I could see if this was 1990 or so, but we live in the future. We work from home, we bank from home, the internet isn't really a luxury item to most people anymore. You don't have your internet and you start to struggle. I called Charter to ask to talk to a supervisor and was placed on hold, and shortly after that, straight out hung up on. This humorously happened four times. Four times I asked to talk to a supervisor and four times I was humg up on. Do you realize the ramifications of that? That would make it seem as though they are actually training people to do that, it couldn't have been a fluke at those odds. I went online and did the live chat. I asked the tech what my options were to escalate a customer service issue and was told there was no path to do that, there was noone to call, noone to contact.

The next day, my internet went out totally. I called back in, and I am sure by this time they have enough notes in my account that noone really wants to talk to me. I ask to have a technician sent out as I no longer have service at all and I want someone out the next day (I called on a Friday). The technician assures me I will have someone out between 9 and 11 am. Things are looking up, maybe I can at least have internet again. I get up semi excited the next day and wait around. And wait. And wait. I call in at 10:50 as their service said I would get a call 30 minutes before their arrival, and 11:00 minus 10:50 is less than 30 minutes.

The nice operator on the line then drops the final bomb. Oh, your service isn't set up for today, it is set up for Monday.

Shortly after that I was talking to the insistant lady in the cancellation department, who was valiantly trying to pitch me a story I didn't want to hear. I just wanted my service cancelled so I could move on.

I sure hope, as I sit here tied to cellphone that ATT loves me more than Charter does. Tell me again why we sell off areas to ISPs and don't let any competition in? It sure isn't in an attempt to improve the customer's experience...

<edit>Humourously, I called back in on 8-2 (I cancelled on 7-24) because I couldn't see any indication on my account management that I had cancelled, and the nice lady said my account wasn't cancelled and that the agent I talked to on the 24th reported that she had 'lost the call' with me. A good indicator that not giving them my business anymore was the right move. Too bad there really aren't any other options.</edit>

Tags:

Bob

About the author

My name is Robert Mills and I am a .NET developer in Charlotte(ish), NC. While everyone is welcome to peruse, most of these posts won't actually provide any value, they are just a reminder to me so I won't forget.

Tag cloud

Month List