Saturday, December 08, 2007

17 Search Engine Reputation Management Optimization Tips

I recently got this e-mail from a friend of mine. The tips listed below are very true for increasing your website to be in the top of search results when searching for keywords related to your site. I followed several of these tips when I worked for a software automation company. In one to two weeks I started noticing that the bots were checking for often the company's website and the keywords searched in Google were listing the company's website to the top.

-
-----------------------------------------------------------------------------------------------------
17 Search Engine Reputation Management Optimization Tips
by Rob Garner, Wednesday, November 7, 2007

AS IT IS BECOMING MORE commonly accepted that Google, Yahoo and MSN are reputation management engines just as much as they are search engines, more folks are seeking information on how to increase positive visibility for a personal or corporate name. Here is a quick list of 17 different ways to optimize for positive visibility for your personal or brand name:

1) Add your profile to LinkedIn, and build a real page with real connections.

2) Create a site with your exact keyword or name domain, and add useful and unique content.

3) Use paid search to enhance your site visibility. The engines give you two basic opportunities for placement -- paid and natural. Consider using them both if it will help achieve your end goals. This does not mean that a defensive stance is required in the copy, but it can help increase visibility, if needed.

4) Take inventory of all of your existing sites. Determine if they are properly optimized for your target brand or name keyword set. If not, start filling in the gaps with optimized pages, and optimized title and meta elements.

5) Use various optimized digital assets -- particularly video. Video and image results can attract eyeballs away from everything else on the page. Make it useful, funny, or otherwise unique and entertaining.

6) Write useful content and establish yourself or your company as an expert, either for your own site, or for other blogs. Good content naturally finds itself at the top of the search results, and its creators are often rewarded with link citations, writer profile pages ! and high rankings as a result.

7) Link strategically. I don't want to sell this one short, as it is one of the most important elements, but leverage your on-theme sites and link to other relevant sites to help push them up higher in the results.

8) Leverage your good domain for search benefits by creating a subdomain for your target term. Add valuable and useful content. Corporate sites should seriously consider architecting around subdomains, as they are treated as separate domains by the engines.

9) Create a profile on various social media sites like MySpace and Flickr. Also note that content entered into Flickr is entered into a Creative Commons license.

10) Start a blog on WordPress. Plan on investing time and making it a real blog.

11) Start a WordPress blog on your own domain.

12) Avoid putting out any material that you wouldn't want in your primary namespace. An ounce of prevention is worth a pound of cure.

13) Create a Naymz profile.

14) Send out a press release, or two. Or twenty (over time, of course).

15) Have someone interview you about your passion. Publish the interview on your site.

16) Create a search roll at Rollyo of search engines and topics you really like.

17) Be very, very patient.


Rob Garner is strategy director for interactive marketing and search agency iCrossing and writes for Great Finds, the iCrossing blog. He is president-elect of the Dallas/Fort Worth Search Engine Marketing Association, and also serves on the board of the Dallas/Fort Worth Interactive Marketing Association.

Friday, December 07, 2007

Enterprise Library Logging Timestamp format

Just for awareness the Microsoft Enterprise Library Logging Application Block for flat file trace lister allows to specified the time stamp format in the template formatter as
{timestamp(local)} for local time zone time stamp or optionally you can specified your DateTime format such as MM/dd/yyyy HH:mm:ss.

See .NET Standard DateTime String Formats at http://msdn2.microsoft.com/en-us/library/az4se3k1(vs.71).aspx

Thursday, December 06, 2007

i.c.stars is recruiting for Cycle 16 January 2008 – Technology Jobs

i.cstars is currently taking applications for cycle 16 of technology, business and leadership training. You can apply online at www.howcanicstars.org.

i.cstars offers free training for high school or GED graduates that want to acquire technology, business, and leadership skills. At the end for the intensive training, graduates will have a change to be recruit by companies seeking i.cstars graduates to fill positions in Software Development, Business Analyst, Testing, Networking, Computer Technicians, Computer Design, Game Development, and other technology related jobs.

Information sessions are held every 2nd Tuesday at 6p.m at the Chicago location. Find more information about the information sessions at i.cstars.org.

I am an i.cstars Alumni from Cycle 7 and I join i.cstars right after graduating from High School in Chicago Illinois. Five months after completing my training I was working as a Software Developer for a Software company in Chicago at 19 years old with a great salary.


If you think this interest you, don’t wait any more. Call i.cstars now. Oh by the way I forgot to mention. During the time you are learning at i.cstars you get a monthly check!

Friday, November 30, 2007

WebLoad posting form data as files for Ajax applications

I have an application that is doing and Ajax callback XHTMLrequest to an .ashx handler. Web launch WebLoad to record an agenda to capture the Ajax posts WebLoad was recording the agenda using the CopyFile function similar to:

CopyFile("wl3941127422.dat","wl3941127422.dat")

After digging I found out that there was a setting in the recording options "Record unknown post types as file". I un-check this settings and tried again to record the agenda an changed the way the form was posting recording the actual form data in the JavaScript Agenda.


Change this setting by going to:

WebLoad IDE --> Tools --> Recording Options --> Post Data --> and un-check the "Record unknown Post Types as File"

Thursday, November 29, 2007

Google's Grand Central - The New Way To Use Your Phone Number

I recently got an invitation to use Google's GrandCentral online service that allows me to pick a phone number and have it forward to any telephone I want. It simply can be your only phone number for life. At any time you can change the forwarding number.

I used to have AT&T VOIP service and they have an online service where I can check my incoming and outgoing calls, check voice mail and other similar functions.

GrandCentral can send all your voice mails to your e-mail so that you don't miss a voice mail message.

What I think is best is the availability to block callers, reject calls, send calls to your voice mail.

This is how it works:

Caller calls your GrandCentral number  GrandCentral calls your phones  You get a call and you take an action

Here is a screen shot of the control panel:
Google Gran Central Control Panel


So far the service now is for free for one phone number. However, when it comes out of beta I am not sure how much they will charge for the service.

Tuesday, November 27, 2007

How to use the SubSonic Collection Find() method with Predicate

Here is a code example to find a particular item within a collection of entities.




Instead of creating a loop to go over the collection to find your entity, you can take advantage of the Predicates.

Model.Person foundPerson =(Model.Person) personCollection.Find(delegate(Model.Person e) { return e.FirstName == "John"; });




I hope this is helpful. I did not find anything in the SubSonic forums regarding the Find method. This worked for me instead of creating a loop to go over all items in the collection.

Monday, November 26, 2007

SubSonic Updated Templates to Delete Entities With Children

In a recent project that I worked on I had a need to delete a top entity that had multiple children. With the generated code out of the box from SubSonic I found it difficult to delete the parent entity and all the children that depend on the parent entity since I had to specifically invoke the child entity for a delete operation. So I decided to mess with the templates. In particular with the 'Controller' (CS_ODSController.aspx).

I decided to create a method named "DeleteWithChildren()" that will take the primary key id of the parent entity to follow the same controller pattern already in place similar methods.


DeleteWithChildren() will go load the parent entity using the primary key and then invoke the corresponding controller class for each of each children.

For example,



public void DeleteWithChildren(object keyID)
{

// Load the entity
MyCompany.Model.Employee entity = new MyCompany.Model.Employee(keyID);

foreach(MyCompany.Model.SiteEmployee child in entity.SiteEmployeeRecords)
{


MyCompany.Controller.SiteEmployeeCtrl.Instance.DeleteWithChildren(child.SiteEmployeeId);

}


}




This allowed me to simple invoke the parent entity controller such as Controller.ParentEntity.DeleteWithChildren(5000); and have the controller delete everything the hangs off the ParentEntity object by calling the DeleteWithChildren() method for each child. This allows to delete hierarchical entities.

You can download the template file from my online box here.

My template was code to first check that a transaction was started since you might not want to attempt to delete everything from that entity without a transaction.

Dell Inspiron 1720 Windows XP Pro Working Audio Driver SIGMATEL STAC 92XX

After wiping out Windows Vista and installing Windows XP Pro SP2 in my Dell Inspiron 1720 I found my self in trouble. I could not find any where in Dell's web site or forums the driver for the sound device for my laptop.

After several hours of search and trying different drivers I found a driver only available in Dell's German Language for the SigmaTel sound card R153908.exe.

You can download it from Dell's website here or you can get it from my online box here.
Just donwload run the file it will extract all the files to a directory default "c:\dell\drivers" and the setup will be launched.

Wednesday, November 21, 2007

Free Screen Capture For Windows - Cropper

Cropper is an open source screen capture tool written in C# .NET that allows users to mark a region in their desktop and take a screen capture and save it to any image type format.

Its simple, light weight and its free.

Cropper was support for plug-ins (extensions, add-ons what ever you want to call it). You can create your own extension in .NET to enhance the functionality of cropper.


I used it for my development for to take a snapshot of an error for example and then automatically uploading the capture image to the issue management application such as “Mantis”.

Compare to SnagIt, cropper does not have all the features in SnagIt out of the box but there are several extensions for cropper our there that can provide a similar functionality. You’ll find the plug-ins download sites here.

Friday, November 16, 2007

Agile Testing: Performance vs. load vs. stress testing

Here is a good blog about performance and load testing for web applications.

Agile Testing: Performance vs. load vs. stress testing

I am currently working on adding load to an application I have been working for the past six months.
So far I can say that this is probably one of the most time and effort consuming phase of the entire project for me. Lucky I have WebLOAD to create the load scripts and simulate the user for the application.

WebLOAD was easy to get started. Initially I could not getting it work under Windows Vista but when I had my new machine with Windows XP it worked like a charm.

WebLOAD can connect to the web server and collection metrics. It also shows you a nice graph of all the stats collected.

When adding load to the application I was able to identify potential issues what would come up once we bring the application live.

Where I am having some difficulties is identifying the state of the application. I am trying to identify what is an acceptable response/performance so that I can say "The web servers can support x number of concurring users" Or "If you want to support x number of users" here are the specs you need for the web servers.

If any has a good experience with loading testings such as what are the key metrics to collection, please shared them with the public.

Thanks!

xplorer² (Windows File Manager Replacement)

Since I was introduced to Xplorer2 my a friend at work, I have not gone back using the traditional windows explorer.

The first thing I do when my boot my laptop when I get to work is "Ctrl + space which launches the bad ass launch and then I type "xplorer" to open Xplorer2.

Xplorer2 allows you to have dual panes so that you can navigate multiple directory structures. With dual panes you can transfer files from one location to another simply by using the F5 shortcut. You need need to open another windows explorer window.

In the Xplorer2 address bar of your path location you can set filter so that you only see the files you care such "D:\Music\*.mp3 to display all the mp3 files in the Music directory.

The find window allows you to enter multiple filters so that you can find exactly what you are looking for.

Xplorer2 files search dialog


Xplorer2 is $30 bucks and its worth it.
You can download the trial version here.

Thursday, November 15, 2007

String.Format() JavaScript equivalent to .NET

Here is a JavaScript function to format strings on the Client-Side as if you were using in the the .NET String.Format() method in your code-behind.




String.Format = function()
{


// Check for arguments
if( arguments.length == 0 ) return null;
// Get the string which is the first argument
var stringToFormat = arguments[0];
for(var i=1; i < arguments.length;i++)
{
var replaceExpression = new RegExp('\\{' + (i-1) + '\\}','gm');
// Replace argument
stringToFormat = stringToFormat.replace(replaceExpression, arguments[i]);
}

// Return the formated string
return stringToFormat;

}



Alternative you can used the JavaScript prototype framework 'Template' object to do string formatting using variable names instead of argument indexes.

See http://prototypejs.org/api/template for the Template object API.

Wednesday, November 14, 2007

A long night fixing defects....

We did it again...

We work all day yesterday from 7:30am to 10:30am fixing all possible defects log in our defect tracking application "Mantis". We are in a code freeze phase and we are fixing the issues logged from the user acceptance testing group.


Eric Flores working late
Here is Eric with his krispy kreme hat. All happy about staying late fixing all the defects. Eric is great an paying attention to details and can really put him self in the shoes of the user. Its important to have someone like him in a team.

Tuesday, November 13, 2007

Enabling/Disabling ASP.NET Checkbox in client side via JavaScript

If you are wondering why you cannot disable and enable a simple asp.net checkbox in IE using simple script like this...




function ToggleEnableCheckbox(checkboxObj)
{

checkboxObj.disabled = !checkboxObj.disabled;
}





Well the answer is because IE goes one level up and also adds a span which wraps the input checkbox.

<span disabled="disabled">
<input id="myCheckbox" disabled="disabled" type="checkbox">
</span>




To make it work in IE you also need to update the parent node node.




function ToggleEnableCheckbox(checkboxObj)
{

checkboxObj.disable = !checkboxObj.disable;
checkboxObj.parenNode.disabled = !checkboxObj.parenNode.disabled;
}





This was a pain in the beginning until I looked at the output html source of the page. First procedure works fine in FireFox but IE adds the disabled attribute to the span, therefore you have to compile for both browsers.

I hope this helpful.

The next step is to create your own checkbox list control that inherits from the ASP.NET Checkbox List and override the source writing for better simplicity.

Good Luck!

Visual Studio .NET environment fonts that don't hurt your eyes.

After working long hours in the Visual Studio .NET 2005 environment the default colors and environment settings start hurting your eyes.

When working with Alex Lee with Ruby on Rails for his game, I started using E-text editor. I found that "E editor" had a nicer and less ease to your eyes environment with a black background and multi-color fonts. During the day I used Visual Studio .Net 2005 and sometimes in the afternoon I was using E. So I decided to make the environment match so that the transition was not harsh.


Visual Studio .NET 2005 Class Editor Colors:
Visual Studio .NET environment fonts and colors


Visual Studio .NEt 2005 html source editor colors:
html source editor colors


You can download my font setting here.
Use the visual studio Import settings utility under the Tools menu to import the fonts. For the text I use a MONACO font not install in Windows XP by default. You can also download the font here.

Thursday, November 08, 2007

Inspiron 1720 with Windows XP nVidia GeForce 8600M GT driver

About a week ago a got my new Inspiron 1720 laptop from dell.
Of course dell push me to Window Vista Home edition but we all know that developer's cannot work with this. I was running Window Vista Business edition in my previous laptop a Lenovo 3000N100 which a got to say that it was a piece of junk. My friend Alex got the same Lenovo machine and he blog about how bad the keyboard is. Read he's blog post here.


As soon as I open the box with my new Inspiron 1720 I fire it up with the Windows XP Pro CD.
I had difficulties installing the Windows XP Pro, since the laptop was targeting Vista. But thanks to some blogs out there I finally got it working.

However, the trouble came when installing the drivers. Dell doest not have any driver downloads at there website for Window XP operating system, therefore, I had to search the entire internet.

I tried several nVidia drivers from http://www.laptopvideo2go.com/ but what got it working for my nVidia 256mb 8600M GT graphics card was the driver version 163.75 with the modded inf file.

You can download the driver here from the http://www.laptopvideo2go.com/

I hate that Microsoft and the retailers are trying to get everyone stuck with Vista.
I don't have any problem with Vista. But as a developer I need to used reliable tools and applications and many out there are still not up to date for Vista.

If laptopvideo2go.com is down, you can download the driver here.
The modified .inf file you get download it here.

Good luck!

Tuesday, November 06, 2007

SubSonic - Using the Exist() Method using predicates

Here is a simple example on how to use the Exist() method that hangs of the collection entities generated by SubSonic.




for (int i = 0; i < originalentitycollection.Count; i++)
{
Predicate exist = delegate(Model.Person match)
{
if (match.PersonId == originalentitycollection[i].PersonId)
return true;
else return false;
};


if (!distinctpersoncollection.exists(exist))
{

distinctpersoncollection.add(originalentitycollection[i]);
}
}





You can visit MSDN for more information about the predicate delegates:
http://msdn2.microsoft.com/en-us/library/bfcke1bz.aspx

Saturday, November 03, 2007

How secure can you get with PDF files

You have an application that provides a service for your customers where your users are allowed to download a produced pdf document by your application.

To protect your business you need to secure and protect the output PDF documents as much as possible. But can you really protect a PDF document?

Let's step back for a second....

The application's requirement is to protect the produced document and restrict user's from modifying the document. At the same time the produced document needs to be in a standard format that an average user with internet access can download. Oh and did I mentioned that the output document can be many pages long.

We know our constraints:
  • Standard format
  • Average internet user( that means non-technical users)
  • Many pages long

This means we cannot produced a proprietary document that can only be view with a in house viewer. It cannot be an image since it's many pages long. That leaves us with PDF documents.

Yes we can secure a PDF document with Adobe PDF Digital Right Management (DRM).
But at the same time there are several application out there that can removed the protection of the PDF document.

How can you prepare and handle this situation? Well I still have not figure it out. If you can think of a better alternative please comment in this blog.

The reality is that once your document goes out from your control. In this once the user has downloaded the document they can do anything! They can print it, ORC, modified and re-used it. Of course that will mean that the user is violation legal rights.


As the article at this link mentions " The only way to keep PDF secure is to keep it your self"
www.cs.cmu.edu/~dst/Adobe/Gallery/PDFsecurity.pdf


Friday, November 02, 2007

TortoiseSVN & Beyond Compare Settings

Here are my settings for TortoiseSVN to use Beyond compare as the file difference tools.


Wednesday, October 03, 2007

Building Wars of Earth

About 3 months ago I met a new friend (Alex Le) at work. He is also very young and we both have the same age. Alex is very talented. Two days later we meet he introduced me to Ruby on Rails. He is building an RPG game "Wars of Earth". You can check out the official game web site at www.warsofearth.com. Occasionally Alex brings it off line.

Ruby sounded very interesting and I said why not give it a shot. I have spend a few night helping Alex to develop his game. So far a build the guild and user messaging pages for the game. It's very exiting. Learning Ruby on rails is no brainier, but there are some bridges you need to cross. I look forward on the release of Wars of Earth.

Subversion integration with Visual Studio .NET 2005 (AnkhSvn)

AnkhSVN is an awesome add-in for Visual Studio .NET when working with subversion source depository.

You can download AnkhSVN from Scott Hanselman's blog (Scott Hanselman's Computer Zen - AnkhSVN: Using Subversion within Visual Studio).

Once install you may want to edit the default configuration by going to Tools --> AnkhSVN --> Edit AnkhSVN Configuration in Visual Studio .NET IDE.

I turn off "AutoAddNewFiles" since I don't really want to add to the depository new files that I add to my project. Having this property turn on to "true" made my life annoying.

Here are my setting found in the ankhsvn.xml under my application data folder:
C:\Documents and Settings\username\Application Data\AnkhSVN\ankhsvn.xml


You can download the xml file here:
http://www.box.net/shared/iz7jefzos4




Tuesday, October 02, 2007

SQL Server 2005 Management Studio Intellisense

In the quest for sql intellisense for the SQL Server 2005 Management Studio I came across SQL Assist for SSMS 2005 from company Round Polygons. SQLAssist can be download it here.

SQL assist works great. Its lighter weight compare to the RedGate tools.
I think its definitely worth the $50 bucks. I initially downloaded the beta version 2.0.210.0, however, this did not work for Windows Vista Business. After installing version 1.5.185.0 I was in business.

Make sure you have SQL Server 2005 Management Studio (Standard or Enterprise) version since this tool will not work with SQL Server 2005 Management Studio Express.

Replacing old notepad in Windows Vista

I am have been trying to find a good tool to replace the old windows notepad in Windows vista.
For a developer notepad.exe just doesn't cut it.
So far I have using notepad 2, notepad ++ and programmer's notepad 2.
These are all great tools, but I have not been able to replace notepad.exe from the c:\windows and c:\window\system32 directory. I have follow the instructions from Matt Berther's blog but the instructions do not seem to work for vista.

If any one has accomplish this task, please share it.

Thanks.

Thursday, September 20, 2007

Coming Soon Send To GMail

I created a little windows app that allows users to right-click on a file in windows explorer and select from the context menu 'Send To Gmail' and allows the user to e-mail attachements using your gmail account.

I will post the download link later...