Testing the full functionality of AddThis on a Development Site.

Sharing is big on the internet today, and it doesn’t appear to be going anywhere. Why sharing has become so popular is not the purpose of this post, however, enabling you to share more easily is what it’s all about. For those of you who use WordPress (as I do), you can simply go to the AddThis site and follow their simple instructions on how to include the AddThis share bar on your blog and be on your way – feel free to stop reading now. If you’ve ever tried, or are planning on trying to implement the AddThis social bar on your site, but first wanted to test its functionality on a non-publicly accessible development site or on your local web server, then this post could be helpful.

Here are a few interesting facts that you should know before continuing on:

  • Facebook ‘Like’, Google Plus (+), and a few other social media sharing sites can act erratically when you “Like” or “+1″ a page which is not a public accessible.
  • Without some meta data tags included on your publicly accessible page, Facebook and Google will likely not be able to include content, such as images or titles when sharing your pages.

With that out of the way here is the scenario – you build a great looking site at home or at work and you include the AddThis social bar on your pages, so that the droves of visitors to your site can share how great your site is with all their friends and family. There is a catch… Before you can go live with the site your QA department wants to do some testing to make sure all those visitors are going to be happy with how AddThis is working. This all seems reasonable, so you send the link along and hope for the best (fingers crossed). No sooner had you moved on to something else, that you get an e-mail from QA stating that they’re “Liking”, and “+1″, but it doesn’t seem to be showing up correctly, and that the Google Plus 1 button has actually turned red (It’s usually blue).

How can you fix this – well it’s really not that difficult. AddThis – either intelligently, or by accident, allows you to overwrite the url of the page which contains the AddThis social bar. The key is found in the addthis:url optional attribute. The AddThis site describes this attribute as: URL to use if not the current page. This is helpful when you have an AddThis button on multiple articles on the same page. While we only have one AddThis button on the page, we’re going to “trick” AddThis into thinking that we’re on the public site, while in reality the page is still under development.


Pretty simple… AddThis, Facebook, Google and a few others sharing sites now think that your development AddThis links are real links, and everyone in QA is happy. A few quick notes before moving on. If you copy any of the code above remove the “REMOVE” in the class names – this was done so that the plugin doesn’t confuse my sample code with real Addthis links. Also be sure that the url is a live, public, accessible page. For the Facebook “Like” share to include an image (such as your logo or avatar), your publicly accessible page must include some Open Graph meta tags. Google Plus 1 also uses some Open Graph tags in its sharing functionality. Here is a code sample:


For more information about Open Graph tags and more specific guidelines, see the Facebook Developers site – http://developers.facebook.com/docs/opengraph/

No Comments

jQuery localScroll – Simplified Panel Navigation

I decided a few days ago that I was going to try to learn about some interesting navigation that I had seen on some jQuery websites. After doing some research I found that many of them were created using Ariel Flesler’s jQuery.localScroll plugin. In-case you have little idea of the navigation I’m speaking about I’ve posted a demo page of what I’ll be covering here.

Initially I was a little overwhelmed by the demo provided by Ariel Flesler, with the demo page proving to be over complicated for what I was looking for. So I decided to take what I learned on the plugin page and try to trim it down to only the required code. This would give me a good base to start any projects requiring this interesting navigation.

Below is the code for the panel navigation:











 

1
2
3
4

It should noted that I did not make any change to the localScroll plugin, and that I simply trimmed the code down, removing some CSS and HTML to make it easier for others to understand.

No Comments

Cisco Telepresence – A Better Approach to “Virtual” Meetings

Recently Microsoft installed Cisco TelePresence suites in its Seattle, Singapore, and Reading, U.K. offices. TelePresence is a Cisco solution, which in my opinion is the first “real” virtual meeting application that may actually replace important face-to-face meetings. Finally there is a product where having a virtual meeting really feels like an in-person meeting, with attendees being able to view each other in real-time and to scale. High-definition cameras record everyone’s movements in native 720p and 1080p clarity, with audio being handled by a multichannel spatial audio system which is designed to remove echos and various interference.

Cisco Telepresence

Cisco Telepresence

If utilized on a regular basis the costs of the Cisco Telepresence suites would be minimal when compared to the costs of travel and related expenses of an in-person meeting. Cisco offers a savings approximation calculator on their site, which in my assumption seems to show an inflation in savings, but at least it gives an idea of the potential savings. With companies such as Pepsi Co. and Bank of America signing on in 2010 to use the Telepresence product, maybe this is a solution for “virtual” meetings that will stick around.

Cisco Telepresence

Cisco Telepresence

Cisco has also recently released a consumer Telepresence product called Umi, which it hopes can compete with other video-calling web services such as Skype.

No Comments

Invitation Systems – The Value of Invitations

A website invitation system utilizes electronic invitations to allow users to register and join a website. The invitation system allows for site administrators to control the population of a site by not allowing open registration.

In many instances existing users of the site are given a number of invitations themselves that they can disperse to friends, family, or co-workers, allowing them to join the site.

When to use Invitation Systems:
An invitation system is appropriate when software is in a controlled release period and systems may not be able to handle an over abundance of traffic, or during a beta testing period. Invitations can also be utilized to build buzz around a product or event. By simply offering invitations, outside users become interested in what exactly they think they’re missing out on. Invitations can fulfill one of Maslow’s hierarchy of needs: belongingness.

Invitation systems can also be utilized to keep out the rif-raf. One forum I found moved to an invitation system to “screen new members to ensure as much as possible that we only have Invited Members who are intelligent, mature and genuinely interested in being a productive, long-term part of the” community.

My initial encounter with software invitations was with Google Gmail. Although the Gmail system received great hype when first announced, the general public was not allowed to sign-up. Infact a public signup page did not exist. Instead Google utilized an invitation system which allowed them to control the growth of the Gmail systems use.

Actual Value of the Invitations:
With Google Gmail a market arose for the invitations on eBay, with hundreds of invitations per day selling from between $.99 to $217.50 per invitation. In total there were roughly 3,135 auctions for Gmail invitations auctioned on eBay from 5/06/04 to 6/08/04.

Sample Invitations:
sample invitation
sample invitation 2

No Comments

Google’s Increased Acquisition Activity

In keeping with my inherent need to try to follow all the happenings on the World Wide Web, I frequently read quite a few technology blogs. Lately, in the last two or three months, I have seen a considerable amount of acquisition activity out of Google’s venture capital arm, Google Ventures. This got me to question whether there was an increase in Google Ventures ventures, or was I just now more cognizant of their activity.

So I decided to do some research to see just how active Google Ventures has been. Without going back too far, since the beginning of 2005, Google Ventures has acquired 56 companies. Below I’ve broken down their acquisition activity by year, with some of the notable companies highlighted and what products they helped Google launch:

2005: 11 – Android Inc. (obvious), Urchin Software Company (Google Analytics)
2006: 10 – YouTube, Endoxon (Google Maps), Neven Vision (Picasa)
2007: 16 – DoubleClick, GreenBorder (Google Chrome), Postini, GrandCentral (Google Voice)
2008: 2
2009: 6 – On2, AdMob, reCAPTCHA,
2010: 11 (< 5/20/10) - Plink, BumpTop, Simplify Media (Google Music)

The interesting angle or piece of information that I find after reviewing some of their recent acquisitions is that it appears Google is in the business of purchasing innovations rather than developing them from within. Now I'm sure Google has an abundance of talented developers, each working on the next big thing, but if you look at this list of acquisitions you'd see where many of Google's most popular applications were born, and not within the walls of Google headquarters.

Obviously this method of growth is not without risk and not considered new, but looking from the outside in, I think it makes great sense. Let’s quickly examine one of Google Ventures more recent acquisitions, the purchase of BumpTop on April 30th, 2010 for $30 million. This is an exciting company with a very relevant touch screen desktop application. Check out this video for more: BumpTop. Now obviously this acquisition will likely be a key part in some future tablet PC operating system, or possibly a new extension of Android, and it just seems to fit and make complete sense from a technology aspect, but does it make financial sense.

$30 million dollars is quite a large capital investment, but what would it have cost Google to develop the software in house. Likely it could have been done for less, but then again, maybe not. When factoring in certain variables, such as salaries, benefits, general overhead, opportunity costs, and other intangibles, I think Google has made a wise decision. Acquisitions like BumpTop have given Google the edge it needs to remain a global technology leader.

No Comments

Morpheus – a design studio website launch

So it has been a while since I have posted and I am hoping to once again renew my blog posting efforts. Part of my absence has been my due to various side projects I’ve been working on. Last week one of those projects went live. Morpheus is a design studio located in State College Pennsylvania. They desired a simple clean site where they could showcase their previous work, and say a little bit about their services and give some general contact information.

Another requirement was for the image and photo section of the site to be easily updated by themselves. Take a look at the site. I really like the simple clean layout and design of the site. Take a look: Morpheus Studio

Morpheus Design Studio - Flash Website

No Comments

Moodle “Error enrolling into (course name) as a student”

If you utilize the upload feature in Moodle 1.9.3 to enroll students into a course then you may have come across an error message which states something similar to “Error enrolling into (course name) as a student.” Although not a serious error it will cause a variety of issues for your Moodle system. After troubleshooting the issue I’ve found that it comes from trying to enroll a student/teacher/admin, etc into a course which has an enrollment length of “unlimited”.

There are a two ways I know of to handle this. First you could set all of your courses in Moodle to have an enrollment period of 365 days or less. This could however pose problems for larger systems with many users. You wouldn’t want to have to re-enroll, and track a large set of users.

The better solution is to make a code change to the upload code on your Moodle system. In the uploaduser.php file in the /admin/ directory of your Moodle installation. Somewhere around lines #660 you’ll want to make these code changes:

if ($courseit->enrolperiod) {
$timestart = time();
$timeend = ($oldtimeend-$timestart) + $courseit->enrolperiod + $timestart;
}

if($timestart == “”){
$timestart = time();
}

if($timeend == “”){
$timeend = (time()+630720000);
}

You can’t have no unenroll time for Moodle uploads, so what this code change will do is set the un-enroll period to be 10 years from the date of upload. Please contact me if you have any questions about the code.

Please remember that if you do choose to upgrade your Moodle release that this change may be overwritten. So I generally note files which I’ve changed code on, and be sure to either copy those over after an upgrade, or make similar changes to the new Moodle release files.

, , , ,

No Comments

Dynamically Adding Controls in C# ASP.NET

Adding C# controls dynamically is actually pretty simple:

public void showTextBoxes(){
    //
    TextBox txtBox = new TextBox();
    txtBox.ID = “txtBox1″;
    txtBox.TabIndex = 1;
    txtBox.CssClass = “textBoxClass”;
    //
    form1.Controls.Add(txtBox);
}

Now this all works fine, but is somewhat limiting. Many times when your going to want to add controls you won’t know exactly how many at runtime. The number of controls needed may hinge on a users input. Possibly the value entered into a TextBox. This would then be handled with a loop:

public void showTextBoxes(){
     form1.Controls.Add(new LiteralControl(“<table>”));
    //
    int i = 0;
    //
    int numberOfDays = Convert.ToInt16(txtDays.Text.ToString());
    //
    while (i <= numberOfDays){
         //
         TextBox txtBox = new TextBox();
        //
         txtBox.ID = “txtBox” + i;
         txtBox.TabIndex = i;
         txtBox.CssClass = “textBoxClass”;
         //
         form1.Controls.Add(new LiteralControl(“<tr><td>”));
         //
         form1.Controls.Add(txtBox);
         //
         form1.Controls.Add(new LiteralControl(“</td></tr>”));
        //
         i++;
     }
    form1.Controls.Add(new LiteralControl(“</table>”));
}

This function will create TextBoxes for however many days that the user has entered into the txtDays TextBox. The loop will also give each new TextBox a unique ID and TabIndex. This method though has some drawbacks, such as any information entered into the TextBoxes will be lost on a refresh of the page. So if your using C# and not Javascript for form validation you would lose all dynamically created Controls on validation.

In future posts I will look into ways to handle this issue and other similar situations.

, , , , , ,

No Comments