Tuesday, December 14, 2010


Worst Customer Service Ever : Comcast

Over the past several weeks, I have gained a complete and utter hatred for the Customer Service department of Comcast. Not by any fault of their own, the company is clearly run by a bunch of monkeys. I have Comcast (unfortunately) both at home and at the office, and I have gotten the complete run-around from both ends. I thought at least their Business Class services would be better, but no--same old story.


I will start with the home. After getting back from traveling on Thanksgiving, I noticed we weren't getting all of the channels (some had an error message "channel will display shortly). After trying numerous things over the phone, the reps determined they would need to have someone come out to fix the problem. Ok, things happen. We set the appointment for after work on Thursday. Towards the end of the installation window they gave me, I called to make sure someone was coming out. "Oh, we're sorry, the appointment has been canceled via the automated system." Strike 1. Dammit-ok, so let's reschedule. They rescheduled the appointment, and the tech actually made it out on Saturday! He determined they needed to rewire the line running to the apartment, which they only do during business hours during the work week. Not good for me, since I work, like most people, a 9-5. We set the appointment for 11-2 on Tuesday, hoping I would be able to make it off to wait for them. After pulling a few strings, I got back to my apartment on Tuesday and waited. And waited. Around 1:30, I called, and the rep told me "Oh, sorry, the tech is running late and can't make it until 2:30-3:30. Well, I can't really afford to miss work waiting on Comcast, so I head back to work, defeated. After numerous calls trying to even get a supervisor on the phone resulted in no luck. Hey, if you're looking for an office environment with no accountability, then being a rep here must be the job for you. Still unresolved--


I am getting to pissed off just writing this, so I will have to divulge our experience with Comcast at work at a later date.


Needless to say, I am completely fed up with all that is Comcast. If I had any other options for cable television, I would drop them in a heartbeat: unfortunately, they have franchise agreements with the city of Atlanta and they are the only cable operator in town--what a sick, sick monopolistic machine. I can't believe they can operate the way they do and stay in business. Surely there are others who have been as pissed off as I am!

Wednesday, November 17, 2010


Print without URL in Google Chrome

If Google Chrome wants to be seriously considered as a major browser, then the Google development team needs to listen more to feature requests that are standard in Firefox and Internet Explorer, but somehow missing from Chrome. Specifically, I am talking about the ability to print web pages without header/footer content. When I print pages in chrome, I get something like:


http://www.somewebsite.com... 1/1

at the top and bottom of the page. In Firefox, you can go to File->Page Setup and configure each section of the header and footer (or hide it). In Internet Explorer, you also go to Page Setup, and there are two text boxes that let you customize the header and footer.

Google Chrome--Get with the program! My business has a custom web application that looks great in Chrome compared to FF/IE, but we utilize printing from the application and it is extremely unprofessional to have a URL and page numbers on business documents. CHROME, PLEASE FIX THIS IMMEDIATELY!!

</rant>

Saturday, November 13, 2010


Top 10 Web Design Companies

Top 10 Web Design Companies

View the Top 10 Web Design Companies at The Web Company Directory. You rate the companies. Add your web design company to the directory for free!

Tuesday, October 5, 2010


The Future of SEO

What will be the future of SEO? It really largely depends on the future of advertising mediums. If search engines rely less on keyword search in the future, the landscape of SEO will change. Given current trends, there is no reason to suspect a movement away from keyword search in the near future, but you never know with technology...


Until Google invents a robot that analyzes your thoughts and presents relevant content, you might consider giving more thought to optimizing your site for search engines. There are several really easy steps you can take (try Analyze My SEO), and then there are more complex overall marketing strategies that you should formulate if you are trying to seriously market a product or service.

Monday, September 6, 2010


Analyze My SEO

Analyze My SEO Logo

I have just launched my new web site: Analyze My SEO. This is a great site for beginners new to Search Engine Optimization (SEO), but also provides useful information for all developers. You enter the URL of your web site, and the site provides a detailed step-by-step report of ways you can increase your page rank and CTR. Check it out!

Michael

Thursday, September 2, 2010


SORBS Headache

So, this week we had an e-mail issue at my company. For one of our clients' domains, any e-mail they tried to send to us was returned marked "undeliverable". After several conversations with our IT company and our clients' IT department, it was discovered that the e-mails were being blocked because our client's IP address was on the SORBS blacklist.


The SORBS blacklist was created by an individual (possibly with help from a few others) who appears to have repeated patterns of adding non-infected or secured machines to their blacklist in an effort to extort money out of them. Our client got their IP removed without a donation.


I am unsure whether our IT company set up our mail server to use the SORBS blacklist (as our client claims) or if it is on some server on the mail hop route (as our IT company claims).


Our IT company did install a tool which apparently showed all e-mails that were hitting the server and none of the e-mails from the client showed up, which leads me to believe that it is not on our server but somewhere else.


Any thoughts?

Tuesday, August 10, 2010


How do I get clients?

In today's economy, it seems that more and more developers are becoming independent consultants/contractors developing their own business and creating projects by themselves. While this lifestyle has both pros and cons, one of the most difficult tasks of working on your own is developing a client base. Here are a few tried-and-true pointers to help you build long-lasting relationships with your clients and expand your base.



Perfect Your Image

The most important asset of any company is its image. If you project an unprofessional or scatterbrained view of yourself to potential clients, you are never going to get business. Especially in today's economy, it is important to fine-tune your business image and tailor it to your clients' expectations.



Your Network Is Your Net Worth

Network, network, network! One of the simplest ways to grow your client base is sometimes the easiest overlooked. The second you stop making new connections and getting referrals is when your business stalls or turns downward.



Know Your Market

Perhaps a reason that you are not generating a sufficient amount of business is because you are advertising in the wrong places. Knowing the market for the type of services you offer will help you better develop a good advertising strategy and eliminate the waste of getting the word out to the wrong people.

Monday, February 15, 2010


How to use XFBML fb:request-form



This article explains how to render an XFBML request-form if you are using iFrames or Connect.

First, it is extremely important to have the proper connect settings.


1. Connect URL

Click the Connect tab in your application's settings, and set the Connect URL to your site's address with no ending / (i.e. http://www.ugadevelopers.com/frmatch).

(iFrame apps: Also ensure that you have set your Bookmark URL equal to your Canvas URL: http://apps.facebook.com/<yourapp>)


2. Cross-Domain Communication Channel

Next, you need to set up a cross-domain communcation channel so your Connect calls can send/receive info to FB. Enter this into a file and save it as xd_receiver.htm:



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Cross-Domain Receiver Page</title>
</head>
<body>
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.js?2" type="text/javascript"></script>
</body>
</html>



Save this file into the same directory as your application. I saved it in the /frmatch/ directory.


3. Set up your page to make Connect calls.

In the file you are trying to make Connect calls in, you need the following code segments in the correct place:

3a. <html> tag

First, you have to include some special parameters in your <html> tag to let the browser know how to render the XML:


<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">


3b. FeatureLoader Javascript

Next, you need to include the FeatureLoader Javascript, which is responsible for loading the features necessary to make certain calls. (Note: You must place this line directly below the <body> tag!)



<body>
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>


4. XFBML Loader Javascript

Add this Javascript to make sure your fbml is completely loaded before it is displayed. Place this code below the FeatureLoader script.

<script type="text/javascript">

window.onload = function() {

FB_RequireFeatures(["XFBML"], function() {

FB.init('xxxxxxxxxxxxx', 'xd_receiver.htm');

FB.XFBML.Host.get_areElementsReady().waitUnitlReady(function()
{
document.getElementById("container").style.visibility = "visible";
});

});

};

</script>
5. XFBML

Now you are ready to render XFBML in your iFrame or Connect application. To render an fb:request-form, place the following code block after the previous script:

<fb:serverFbml style="width: 755px;">
<script type="text/fbml">
<fb:fbml>
<fb:request-form
action="http://apps.facebook.com/frmatch/postadd.php"
method="POST"
invite="true"
type="XFBML"
content="FriendMatch Invite Form!">
<fb:multi-friend-selector
showborder="false"
actiontext="Invite your friends to play FriendMatch!">
</fb:request-form>
</fb:fbml>
</script>
</fb:serverFbml>


Share






Friday, February 12, 2010


How to use FB.Connect.streamPublish()



Please note: This guide is dated and I would recommend using the new Facebook Javascript API for this functionality. Check out this guide on the Facebook Developer site.

I have spent countless hours searching the Developer forums and reading over the wiki and haven't found a single, all-encompassing source that describes how to properly use FB.Connect.streamPublish(). This article is geared towards iFrame applications, but the same methods are used for external web sites using Facebook Connect. Also, if you own a web design company, please take a minute and add it to The Web Company Directory for free!

First, it is extremely important to have the proper connect settings.


1. Connect URL


Click the Connect tab in your application's settings, and set the Connect URL to your site's address with no ending / (i.e. http://www.ugadevelopers.com/frmatch).

(iFrame apps: Also ensure that you have set your Bookmark URL equal to your Canvas URL: http://apps.facebook.com/<yourapp>)


2. Cross-Domain Communication Channel


Next, you need to set up a cross-domain communcation channel so your Connect calls can send/receive info to FB. Enter this into a file and save it as xd_receiver.htm:



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Cross-Domain Receiver Page</title>
</head>
<body>
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.js?2" type="text/javascript"></script>
</body>
</html>



Save this file into the same directory as your application. I saved it in the /frmatch/ directory.


3. Set up your page to make Connect calls.


In the file you are trying to make Connect calls in, you need the following code segments in the correct place:

3a. <html> tag


First, you have to include some special parameters in your <html> tag to let the browser know how to render the XML:


<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">



3b. FeatureLoader Javascript


Next, you need to include the FeatureLoader Javascript, which is responsible for loading the features necessary to make certain calls. (Note: You must place this line directly below the <body> tag!)



<body>
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>



3c. streamPublish() call


Finally, we are ready to make the streamPublish() call. Here is a barebones script to test and make sure that everything is working correctly (don't forget to change to your api key):


<script type="text/javascript">

function publish() {
FB_RequireFeatures(["Connect"], function() {
FB.init('xxxxxxxxxx', 'xd_receiver.htm');
FB.ensureInit(function() {
FB.Connect.streamPublish();
});
});
}

</script>

<p>Stream Publish Test</p>
<a href="#" onclick="publish(); return false;">Post a story</a>



3d. Pop up dialog on window load


To pop up the feed dialog when the page loads (i.e. user lands on a high scores page and you present them a dialog to publish their high score), simply add the following script after the one above:


<script type="text/javascript">
window.onload = publish;
</script>


3e. streamPublish() with additional content


I assume most people want to display some content that is relevant to their app. Here is an example of attaching an image and a message to the post:



<script type="text/javascript">

function publish() {

var attachment = {
'name':'FriendMatch',
'href':'http://apps.facebook.com/frmatch',
'caption':'{*actor*} is playing FriendMatch!',
'media':[{
'type':'image',
'src':'http://www.ugadevelopers.com/frmatch/tile.png',
'href':'http://apps.facebook.com/frmatch/'
}]};

var action_links = [{'text':'Match Friends','href':'http://apps.facebook.com/frmatch'}];

FB_RequireFeatures(["Connect"], function() {

FB.init('xxxxxxxxxx', 'xd_receiver.htm');

FB.ensureInit(function() {

FB.Connect.streamPublish('', attachment, action_links);

});

});

}

</script>


I hope this helps some people. FB's documentation of setting up this process is spotty at best!

Share