Like many people with a technical background, I have lots of links in my resume to companies I have worked for and projects I have completed. When I send out a resume I would like to know whether people click on the links in the resume, but normally I can only get stats for sites I control (using Google Analytics Campaign Tracking). By using a URL shortening service I can embed links that are specific to the resume that I sent, and I can track every click on that link from that specific resume. The only problem here is that creating those links is time consuming, especially if you send out lots of resumes and/or have lots of links in your resume.
I created a macro that can automatically generate trackable links with one click. You need to be somewhat technical to use this macro, and I have only tested it in Word 2007 (please leave comments on whether it works for you in other versions). The macro is simple: it contacts a URL shortening service (either Cligs or Bitly at your option) and looks through all the links in your resume and shortens them using your account (so that you can track them).
You will need three things before you can use this VBA code:
A copy of your resume with standard hyperlinks in Microsoft Word
The macro also includes a place for you to enter Google Analytics campaign tracking which will help keep stats for sites you control (if you use Google Analytics).
The parameters at the top of the macro are things you need to set up before running the macro on a document. If you are using Bitly, then enter your Login and APIKey in the variables at the top. If you are using Cligs, enter your APIKey in that variable (leave the other API blank). If you are going to use Google Campaign tracking, then enter in those variables (leave them all blank otherwise).
If you are comfortable in VBA programming you can just create a new macro attached to your resume and paste the code below. You can also download a sample Word 2007 document with the macro already built in. Either way you will need to run the macro from your Word document once you have the variables set up. Note: It’s a good idea to delete the macro from the document once you have run it. Otherwise people opening the document will get a macro security warning when they open the document.
One other note: using a URL shortening service for your links could result in non-operative links if the URL shortening service shuts down (which happened to cligs before they were acquired). So use at your own risk. I also might be willing to add other URL shortening services that might be more reliable (and have an API).
Here is a short (4 min) screencast of how to use the macro. In the example I use Cligs, but the same process applies for using Bitly. Please comment with any questions.
Sub URLShortener()
'
' URL shortener/tracker
' Created by Dave Sohigian http://dave.sohigian.com 1/5/2010
' For more information go to http://www.techdemoguy.com/?p=192
' License: Creative Commons Attribution Share-Alike - http://creativecommons.org/licenses/by-sa/3.0/
'
'Variables you should enter. Enter either BitlyLogin AND BitlyAPIKey
'OR CligsApiKey, depending on which service you will use.
'If you want to track the Google Campaign, then enter those three
'variables. Otherwise leave the Google variables blank
BitlyLogin = ""
BitlyApiKey = ""
CligsApiKey = ""
GoogleCampaign = ""
GoogleMedium = ""
GoogleSource = ""If (GoogleCampaign <> "") Then
GoogleQueryString = "?utm_source=" & GoogleSource & "%26utm_medium=" _
& GoogleMedium & "%26utm_content=1%26utm_campaign=" & GoogleCampaign
Else
GoogleQueryString = ""EndIf'Loop through all of the hyperlinks and shorten the URLs
For i = 1 To ActiveDocument.Hyperlinks.Count
ApiUrl = ""
LinkText = ""' select the next hyperlink
ActiveDocument.Hyperlinks(i).Range.Select' store the name of the hyperlink
LinkText = Selection.Range.Text
' store the url of the hyperlink
LinkUrl = ActiveDocument.Hyperlinks(i).Address
' Make sure it is not a bit.ly or cligs url (would error out)
If (Left(LinkUrl, 13) <> "http://bit.ly") And (Left(LinkUrl, 13) <> "http://cli.gs") Then' Set up the API object
Set ObjHttp = CreateObject("MSXML2.XMLHTTP")
If (BitlyApiKey <> "") Then' Create the API URL for Bitly
ApiUrl = "http://api.bit.ly/shorten?version=2.0.1&login=" _
& BitlyLogin & "&apiKey=" & BitlyApiKey & "&history=1&format=text&longUrl=" _
& LinkUrl & GoogleQueryString
ElseIf (CligsApiKey <> "") Then' Create the API URL for Cligs
ApiUrl = "http://cli.gs/api/v1/cligs/create?key=" & CligsApiKey _
& "&appid=ResumeStats" & "&url=" & LinkUrl & GoogleQueryString
EndIfIf (ApiUrl <> "") Then' Setup the call to the REST API
ObjHttp.Open"GET", ApiUrl, False' False indicates the call is synchronous - wait for URL Result
' Send the request
ObjHttp.send
' Get our results (the shortened URL) if the response was okay
If (ObjHttp.StatusText = "OK") Then
StrResult = ObjHttp.responseText
Else'Otherwise just keep the original URL
StrResult = LinkUrl
EndIfElse
StrResult = LinkUrl
EndIf' Update the Hyperlink in the document with the shortened URL
If (LinkText <> "") Then'If it is a text link, then keep the Link Text
ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _
StrResult, SubAddress:="", ScreenTip:=LinkUrl, TextToDisplay:=LinkText
Else'Otherwise don't change the Link Text (if it is a linked image it will have " " as the selection text)
ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _
StrResult, ScreenTip:=LinkUrl
EndIfEndIfNext i
EndSub
Unlearing is an important concept for anyone trying to take on new tasks. Although I have not seen this name put on it specifically the concept is the challenge presented by learning a new task is really about UNLEARNING old patterns rather than learning new ones.
In his book, On Intelligence, Jeff Hawkins (inventor of the PalmPilot and Treo) talks extensively about how our brain stores patterns. According to his model these patterns are stored at various levels in the neocortex. The lowest level in the hierarchy stores simple patterns while the higher levels have the capability to see the big picture. An example he gives in the book has to do with reading. When you are first learning to read you start to recognize individual letters. Eventually you can recognize whole words made of these letters (once you learn the word and you no longer need to actually read each letter, you just see the whole word). And once you are truly comfortable with reading you will start to see entire sentences. For example, you may notice that when you are reading a book to a child that you change or leave out certain words. Your brain is recognizing the meaning of the sentence and does not worry too much about each individual word (much less each letter).
These patterns are built up over time in the wiring of the brain. Each time you successfully use (or encounter) a pattern, the wiring for recognizing (or using) that pattern is further cemented in the brain. For the low level patterns that you encounter all the time (letters, words, faces, etc..) you have very strong wiring indeed. Marcus Buckingham in “Now, Discover Your Strengths” talks about how your brains build up these connections (wiring) until about the age of 16 and then we start to rapidly lose about half of those connections over the next few years. Buckingham uses this information to back up his theory that we need to focus on our strengths – the wiring that remains after we lose all that extraneous stuff.
It also follows that the highest levels of the neocortex are also the ones that most under conscious control. The lower levels in the hierarchy just happen they are firmly ingrained habits that we don’t even notice much of the time. This is a good thing because many complex tasks would be nearly impossible if we were conscious of all underlying unconscious control required. If I consider how to move each of my fingers while I am typing this, I will have a heck of a time finishing another word.
That is the challenge presented when you try to unlearn a way of doing something. You are trying to change those patterns in the brain that you have relied on for many years. Changing the wiring for these patterns that your brain so efficiently ignores is very difficult – Buckingham would say it is not worth pursuing. I agree to a certain extent, but when you do need to learn a new pattern (which may mean unlearning an old one that has been “successful” so far) there is a strategy that I have found effective.
The strategy relies on what I have learned through my Alexander Technique lessons. Alexander Technique is about gaining “conscious control” of the self. But I have experienced it as a process of “unwiring” the habitual patterns developed over time. Alexander Technique undoes deeply ingrained patterns (such as our posture) by bringing conscious attention to it, releasing the old pattern and rebuilding a new one. It is an arduous process and takes dedication to see progress. When it comes to how you “use” yourself I think it is actually worthwhile to do this unlearning. But I also agree with Buckingham that putting in this kind of effort to see marginal improvement in an area where you never will truly excel.
If you are a Unix geek you probably know all about this, but since I am a Windows guy, I find this stuff valuable. My favorite Unix command the “tail” comman which allows you to see the last few lines of a text file. This may not seem very useful at first, but if you turn on a particular switch (“-f” for “follow”) it will tail the last portion of a file even it is updated. This is particularly useful for watching log files (such as the app server log or an error log). The full command might look like this:
C:appservLOGS>tail -f -10 appsrv_0614.log
This command will tail the last 10 lines of the specified log file – allowing you to view it dynamically as it is updated. This is useful when you have debugging turned up – this way you can see what is going on with the application in real time.
Ivan Illich discovered that in the 1930s, nine out of ten words that a man had heard when he reached the age of twenty were words spoken to him directly – one to one, or as a member of a crowd – by somebody whom he could touch and feel and smell. By the 1970s, that proportion had been reversed: About 9 out of ten words heard in a day were spoken through a loudspeaker. “Computers are doing to communication what fences did to pastures and cars did to streets,” Illich said in 1982. For Illich, there was a huge difference between a colloquial tongue – what people say to each other in a context, with meaning and a language uttered by people into microphones.
I think this the last part of this passage is the most revealing – the nature of what people say when they are face to face vs. what they say when speaking into a microphone. The same applies to emails (particularly one to many emails) and blogs. I often hear about how blogs promote people’s “voice”, but what is the quality of that voice when it is directed at a mass audience? Keep this in mind when you are doing a remote demonstration: the medium is the message.
I was thinking I would put together a list of good resources for Sales Engineer/Consultants, but Darrin Mourer at “The Sales Engineer” has already done a fine job! Check out his list of blogs, books and other resources at his SE Resources page. Nice work, Darrin!