Sunday, August 28, 2011

Can Comcast support and billing really be this bad?

I'm writing this in the hope that it will help others, or perhaps others can help the rest of us figure out how to not have to call Comcast periodically to getting billing issues resolved.  What billing issues you ask?  Here is my story.

In 2009 I ordered the MLB Extra Innings package so I could watch out of market baseball games.  Great service, used it some, but in 2010 I decided I didn't want it.  Comcast sent a letter saying they would offer the "convenience" of auto-renewing me in 2010 so I called and said I didn't want to renew.  I thought all was well.

Unfortunately, I received a bill with the first of four MLB Extra Inning charges on it.  A little upset, I called them and was told it was resolved and I'd receive a credit and not be billed again.  In this case, it finally stuck and all was well.

In 2011, I never received a notice about an auto-renewal and baseball season started and I never received a bill, so all was well, right?  Nope, in June I receive a letter saying due to an error in their billing system, they were going to be billing me the four installments for MLB Extra Innings as it was a service I'd been receiving since the beginning of the year.  WHAT?  I never ordered it, never received a renewal notice, was never given any indication I was receiving it.  Further, I'd cancelled the year before and never got it!  Well, I checked the channels and sure enough I was getting them.

I again called and had to navigate several layers but finally got someone who apologized and said I wouldn't be charged and I asked that I be taken off any auto-renewal they have and was told that was the case.  This was in June.  And sure enough I get my next bill (dated 7/10) and there is no charge.

So imagine my surprise when I receive the following bill (date 8/10) and the second of four charges has shown up!  Ummm, I cancelled, and seemingly that stuck as I wasn't billed the first charge, so why do I now get the second charge?

To top it off I also see on this bill that changes were made to my account effectively changing my discount which will result in a bill $18 more per month for no change to my service.  I'm not on or around any anniversary date or contract expiration that would explain this, so I'm baffled once again.   Perhaps I just lost the "just accept our billing errors and pay them" discount?

Of course, I'm finding this out on a Sunday as I pay my bills and the Comcast's billing support isn't open.  So not only am I having to waste time researching this today (and writing this blog entry), but I'm going to have to waste time during my work week to get it resolved.

Have others had experience like this?  Are Comcast's systems this bad?  To their support staff just make lots of errors?  Or is there something deliberate going on to see if customers will just pay?

I'd love to hear what you think.

Sunday, July 17, 2011

Cloud Event Processing on CloudBees RUN@Cloud PaaS

I did some prototyping of a Cloud Event Processor around a year ago that combined the open-source Esper CEP engine with Amazon's SNS and some code I wrote to create a loosely coupled event processor in the cloud.

Now, when I did this I used SNS to serve as the Cloud based loosely coupled messaging, but I did have the event processor itself running on a server on my network.  I noted then that because of using SNS and HTTP as the protocol between my server and SNS that the event processor could be deployed anywhere, but until today I hadn't actually moved it somewhere else.

What did I move it to?  I could have just found a hosting provider or gone the IaaS route and used AWS's free micro instance and configured the OS and installed a Web container, but with just a standard WAR file what I really wanted was a Java Platform as a Service (PaaS) offering I could just deploy to.  Doing this would save me the time and effort of setting everything up myself and having to maintain/upgrade it over time.  As much as the geek in me likes to play around with infrastructure and platform components, there isn't really much value in me spending time doing that in a situation like this.

So, I took a look at CloudBees and their RUN@Cloud offering.  It advertised the ability to develop like I'm used to and then instantly deploy to the Cloud.  Does it live up to this promise?  Based on my simple application and a very basic deployment, the answer is yes.

I signed up for a free CloudBees account which was very straightforward, and in a matter of minutes I had access and could create a new RUN@Cloud application.  Once created, I could then upload and deploy my WAR file and voila, I was deployed in the Cloud.  I didn't have to change a line of code or create/modify any descriptors or XML, it couldn't have been simpler.  I simply had to change my client and/or SNS URLs to point to the new server and it just worked.  And my initial goal of not having to deal with installing/configuring the platform was realized.

On top of it just working, I get some nice monitoring and administration tools that show me session, request, memory, and load statistics.  Very nice.

If you are looking for an easy to use Java PaaS, give CloudBees a look.

Wednesday, April 20, 2011

links for 2011-04-20: Who should(n't) by an iPad 2; Oracle gives up on OpenOffice

Wednesday, April 13, 2011

Is GlassFish v3 slower and a bigger footprint than v2.1?

When I was at Sun, we often touted the work we did with GlassFish v3 to improve startup times.  A lot of this was based on v3 being more  modular with an OSGi kernel and "HK2".  Now that I'm on the other side, at a software vendor (NextGate) that supports GlassFish as an app-server for our product, I get to see if it is really true in the real world!

To try it out, I did a few quick tests.  For the record, what I tested was GlassFish v2.1.1, v3.1 Full, v3.1 Web Profile, and I included Tomcat 7 for one test just to compare.  I also did this all on OS X on a fairly new MacBook Pro.

First, I deployed a fairly small and simple Web-app and then stopped and restarted each app-server several times.  My observations on startup times and footprint after start were:

ContainerStartup TimeFootprint
GlassFish v2.1.116 sec178 MB
GlassFish v3.16.5 sec153 MB
GlassFish v3.1 Web Profile5 sec123 MB
Tomcat 71 sec74 MB

This shows that v3 has clearly made improvements over v2 in both startup time and footprint This is as expected.

What surprised me a bit was that Web Profile had further improvements over the full profile, this because I thought only what was required would be started with the full profile and so it should basically match Web Profile in this case and it didn't. It was also significantly heavier weight. Does this make sense?

Also, Tomcat is clearly the speed demon and lightest weight, but this isn't really an apples to apples comparison as Tomcat doesn't offer as much as any of the other options. It still sets the standard for fast startup and small footprint though.

Next, I deployed another EAR and WAR file that make up our application.  Here is what I observed:

ContainerStartup TimeFootprint
GlassFish v2.1.120 sec207 MB
GlassFish v3.124 sec400 MB

Now this was more surprising.  Not only did v3 take longer to startup, the footprint was nearly twice that of v2!  Effectively, v2 added 4 seconds to startup a second WAR and an EAR, but v3 added nearly 18 seconds to do the same.  And why v3 is using so much more memory, I'm not sure.

Now, perhaps my test is too simple or I'm not looking at the exact right metrics to really measure startup time.  But what I'm using is the Real Memory reported by Activity Monitor and both the time it takes for "asadmin start-domain" to return the the start time reported in the server.log file.

As additional background, I'm deploying the same WAR and EAR files to both v2 and v3, and since they run in v2 they are not specific to EE 6 and the only EJBs are SSBs.

So GlassFish experts, help me out.  Is what I'm seeing real?  Is v3 really slower and larger than v2 for this type of use case?

Monday, March 14, 2011

links for 2011-03-13: iPhone 5 wishlist; Do you think like an Engineer?; Gmail outage

Friday, January 28, 2011

links for 2011-01-28: AT&T unlimited data plan for iPhone back; LibreOffice release; iPhone and Google Voice; Startup business models

Wednesday, January 26, 2011

links for 2011-01-26: AWS Simple Email Service; Marc Fleury on Oracle and Open Source; No screenshots on Windows Phone 7

Tuesday, January 25, 2011

Fun with QR Codes - Encoding URLs and contact information in images

I've been playing with QR Codes recently.  What is a QR code you ask?  It is one of those square bar-code looking images that you may have started to see lately, and are used to encode text which can be URLs, vCards (contact info), phone numbers, or other data.  By encoding this information in the QR Code, the data can be easily decoded by say a camera phone, and the information acted upon.  Common uses are sharing URLs, avoiding having to type in a long sequence of characters on a small keyboard, or sharing electronic business cards (vCards).

Here is an example that encodes the URL to the Wikipedia page on QR Codes.

Use a QR Code reader on your mobile phone and it should launch your browser on that site.  Most readers I've come across have this built-in behavior for URLs, but what about other forms of text encoded in the image?

I've done a fair amount of experimentation with several readers on the iPhone and have discovered some that simply show the text for non-URLs, while others have nicer behavior, especially with vCards.  For example, the following QR Code has a name, work phone, e-mail, company, and title.

On an iPhone, scanning this with QRReader just displays the vCard text.  i-nigma 4 recognizes it as a vCard, parses it, and lets me add it to my contacts, but ignores the company (ORG) and title (TITLE) fields as well as the work attribute on the phone number.  ScanLife does the best, recognizing the vCard and all the fields.

So, your success with using a QR Code as your business card will depend on the reader your audience is using.  Feel free to comment on how your reader works.

As you can see, when more information is added the QR code larger/denser which is natural and to be expected.  The specification calls for a maximum number of characters of 4,296 but that would have an image that was 177x177 pixels and the dense one above is 1/9 as large.  So when using it as a business card, particularly if you are printing it on the back of your business card, at some point it is too dense to print on such a small card and have readers still be able to process it, so you are somewhat limited in what you can include.  You'll notice that I didn't include an address or secondary phone numbers in either case above and those would add significant characters.

The other thing I learned in trying things out is that while there are numerous services on the Web that will create the image from text you enter, they don't all properly format the vCard with the proper syntax and punctuation when you fill in their vCard form.  But part of my project was to find a way to encode without internet access so I had to write my own anyway and did so using the Google's zxing project.  That project seems focused on readers, but has encoding classes in it too.

What is your experience with QR Codes?  What readers do you use and which work well?

Monday, January 24, 2011

links for 2011-01-24: Forrester on the Future of Java; Honda 1-ups Segway; Linux distros switching from OpenOffice to LibreOffice