Proxy.pac for VPN, corporate, home, and public networks

Your ads will be inserted here by

Easy Plugin for AdSense.

Please go to the plugin admin page to
Paste your ad code OR
Suppress this ad slot.

This post is dedicated to those that take a laptop in-and-out of corporate networks, public networks, and VPN.

After years of changing proxy server settings (based on my location) for internet connectivity, I tried to create an automated solution this week. I have to change proxy server settings based on where and how I am connected online. While not difficult, it’s become a nuisance. Since I change locations often, I’m constantly updating settings. So I went on a search.

The goal
Regardless of location and regardless of browser, I should be able to connect to the internet without changing any settings and without having to key username/password for authentication.

Spoiler Alert: I was not able to find a completely automated solution. This post is documenting some of the steps I followed. +1, Like, and kudos for anyone that can provide assistance.

Pieces of the equation

  • I use multiple browsers (Chrome, Firefox, IE, and Safari)
  • The proxy server from work requires authentication with a domain account and password
  • I’m using a MacBook running Snow Leopard with Parallels running Windows 7
  • I have three environments:
  1. Corporate network (work)
  2. VPN (work via home / public)
  3. Home / Public network

Step 1: Create a proxy.pac file.
There are many sites that give examples of these files along with the supported functions. It’s essentially a javascript file that helps you define when to use and not use a proxy server. I was originally drawn to this type of configuration in hopes that I could configure each of my three locations within the file.

Right now I have the simplest of all configurations. It looks like this:

function FindProxyForURL(url, host)
return “PROXY”;

More on my issues with this a bit later.

Step 2: Install Authoxy. This program runs on the local machine and serves as a proxy server intercept. It forwards requests to the proxy server along with username/password details that are defined. The reason for using this software is to get the username/password in a single location instead of multiple locations in the system preferences or browser specific proxy configuration.

Here’s the configuration found in the System Preferences area on the Mac. Notice I reference the proxy.pac created in step 1.


Step 3: Set Authoxy to start automatically. Do this in the System Preferences → Accounts → Login Items tab.

Step 4: Set the proxy settings in Systems Preferences → Network area for both the ethernet and Airport (wifi) interfaces. The trick here is to set the proxy destination to (local hosts) because remember that the Authoxy program is running to act as a proxy to the proxy.

Your ads will be inserted here by

Easy Plugin for AdSense.

Please go to the plugin admin page to
Paste your ad code OR
Suppress this ad slot.

Step 5: Set the browser settings.  On the Mac, the Safari and Chrome browsers use the system proxy setting that is set in Step 4. So no further work is required for Safari and Chrome. For Firefox, there is a separate section in the Preferences → Network tab. Right now I have this set to “no proxy” but I could also point that to the system settings.

Firefox Proxy Settings

In this setup, the Chrome and Safari browsers will work without further configuration if I am connected to the corporate network or to the corporate VPN. Those two browsers do not work if I am connected to a public or home network because the proxy server doesn’t exist on those networks. For this situation I have set Firefox to use no proxy.

Issues with Proxy.pac
As I mentioned before, I had hoped to configure the proxy.pac file to recognize all three of my environments. I tried three different techniques to solve this.

First Try: Use myIpAddress()

function FindProxyForURL(url, host)
//If machine on corporate network then use proxy
if (isInNet(myIpAddress(),”″,”″))
return “PROXY MyProxyHost.MyProxyDomain.local:8080”;

//Otherwise do not use proxy
return “DIRECT”;


This worked great while I was on the corporate network and I thought it would work with the VPN because the machine receives a 10.x.x.x address when on the VPN. The problem is the myIpAddress() function returns the first IP address from the system and that is my wireless adapter address when I’m on the VPN.

Second Try: Use return statement with multiple destinations

//alternative way to do this in one statement. Checks to see if proxy responds
//and if not then try the next destination.
return “PROXY atltmgp1.harlandclarke.local:8080;DIRECT”;

This solution works great for the corporate network and VPN. But when I’m on a public/home network I have to wait for the proxy destination to timeout. Sometimes the browser timeout occurs before the proxy timeout and so no page is served.

Third Try: Use isResolvable()
//if the proxy server is resolvable then machine is on the corporate network or VPN.
if (isResolvable(“MyProxy.MyProxyDomain.local”))
return “PROXY MyProxy.MyProxyDomain.local:8080”;
//Otherwise use no proxy
return “DIRECT”;

This never worked. I think the DNS check to resolve the host name exceeded the timeout for the browser.

At the end of the day and several hours of trying different combinations I didn’t reach my ultimate objective. But I did get a little closer. 😉

Finding social rhythms

Your ads will be inserted here by

Easy Plugin for AdSense.

Please go to the plugin admin page to
Paste your ad code OR
Suppress this ad slot.

We have limits on the number of digital profiles we can keep active.
I have six digital profiles that I use regularly for various purposes. Here’s the list in no order of significance: Blog site, RSS reader, Google+, LinkedIn, Twitter, and Facebook. My activity on each varies from week-to-week based on a variety of factors including my schedule and purpose of communication. I’m not closed minded to changing in the future. But at this point in time those are the areas that comprise my digital life.

I don’t know for sure, but I suspect six digital areas are far more than most people try to maintain. I’m not active on Pinterest or Instagram or (insert your favorite site not listed here). It’s not that I wouldn’t enjoy learning and exploring, but my capacity to participate is limited by my other choices.

Our digital participation is subject to change.
I think we all gravitate towards the spaces that give us the most value. By that I mean, a place where we connect with people and information. This is a place that we can consume information that provides knowledge and benefit to us, but it’s also a place that allows us to contribute information back to the space.

We may create profiles and try them for a time before abandoning the profile for something else. Twitter is a good example. I see abandoned profiles all the time. Many have created a Twitter account to see what it’s all about but have never contributed any information on their own. LinkedIn is another good example. One could argue it’s a professional expectation now to have a LinkedIn profile. But most people don’t use LinkedIn for professional activity such as networking, knowledge share, or research until they are actively pursuing a job.

We develop social rhythms based on the platform and content.
Maybe you don’t think of it that way. But we are all creatures of habit. I know I try to find a rhythm for producing and consuming digital content. It’s a challenge and requires dedication each day. As I see it though, my digital lifestyle is about learning, thinking, and growing. Even though contributing content isn’t directly related to my compensation at work, keeping an expertise and knowledge molds my thinking and knowledge for work activities.

Here’s some examples from my routine:
* My RSS feed is like my newspaper. It contains profiles of information sources that I want to read regular updates. Some of them are media outlets while others are blogs from individual thought leaders.

* LinkedIn is a always-on professional networking forum. I can keep track of my professional connections changing jobs, adding skills, or sharing pieces of information.

* Google+ is like combination of a RSS reader and discussion forum. I’ve created circles based on topics and when I view the stream from an individual topic it’s like reading a RSS feed. I’m finding that Google+ is more rich with discussion about topics than a typical blog or media publication. Much of the value of Google+ comes in reading and participating in the comments after each post.

* My blog is a my thought sandbox. I use the blog to record my thoughts, practice writing, and experiment with digital publication.

Platforms may come and go. But our basic need to communicate doesn’t change.
Regardless of what digital platform(s) we use or how we use them, we are driven by a need to communicate. “Social media” is just a term to wrap around social creatures. Maybe the current platform we use is discontinued in the future. But we’ll find another one to use because of our basic need to communicate ideas with one another. How much or how little we contribute is based on our rhythm for consumption.

I’m always searching for ways to stay in rhythm or to develop a more complete set of habits in my life. Let me know what works for you.

How to create an archive of Google+ blog posts

There’s a growing movement that supports Google+ as a next generation blogging platform due to it’s built-in interactive aspects, audience reach, search indexing, and digital capabilities. One of the biggest proponents of the movement is +MikeElgan and he recently posted about his support of Google+ as a blogging platform. Traditional blogging platforms provide methods for auto-generating an archive of posts. Archives can be chronological or topical and provide readers with a quick way to link or search into the contents.  For writers using Google+ as a blog publishing platform, +ShawnHandran posted a way to create an archive of the Google+ blog posts.  Handran’s method was to manually maintain an archive in a public Google doc spreadsheet.

That made me think about my recent post of automating my digital life with the tool from If This Then That. Using this service, it’s possible to automate a RSS feed into a Google doc spreadsheet.

So putting the automated service together with Shawn Handran’s idea, here are the complete steps to create an archive for public Google+ blog posts.

1. Create an RSS feed for your Google+ public posts.
There are many tools to do this. One that +MikeElgan recommends is Pluss Feed Proxy for Google+. When you visit the site you can choose the option to “Login with Google”. This will generate a URL for your RSS feed.

2. Create an account on If This Then That.

3. With the ifttt profile create a recipe that uses the RSS feed from step 1 as the trigger.
There are two options: a) All RSS posts b) Posts that contain specific keyword phrases.
I recommend using the option for keyword phrase matching because you may want to create public posts that are not blog posts.

4. Then for the output choose a Google Doc spreadsheet.
Note: You don’t have to use Google Docs as the output. There are a variety of platforms that provide service to make a document accessible via URL (Evernote, Sky Drive, etc.)

5. Share the google doc spreadsheet.
Do this by clicking the share button in Google docs and making the file publicly viewable.  Get the URL of the file.

6. Add the google doc archive to your Google+ profile.
On your Google profile in the links area add an entry for Blog Archive and put the URL of the public Google Doc.

That’s it! The recipe on IFTTT does not trigger automatically. But if you create a Google+ post and share with public using your keyword, then you should see the archive within 30 minutes or so.

Let me know if you have any questions.

eMail marketing vs social channels

My daily routine of working in the marketing department includes planning and executing communications on digital platforms. What’s not to like about this work? It’s full of experimenting with message formats, exploring new channels, researching customers, and tracking results. Good stuff.

But ultimately marketers are measured on the success of the communications they create. So it goes beyond experimenting having a little fun. The work needs to produce a return. I may create digital messages on five different platforms and feel good about it. Yet success is measured by some connection. The connection might lead to a sale, solve a complaint, answer a question, etc. No one aims to produce noise, irrelevant messages, or content that is otherwise not useful.

In recent days, my group has had more success with the older email communication channel than with newer digital platforms such as Twitter, Google+, LinkedIn, etc. The metrics we use to measure were so lopsided that I recently told my boss that eMail is our trojan horse through the corporate firewall.

What I meant by this was that my research showed limited use of some digital networks during business hours for B2B communications. While I don’t have specific numbers, I believe that many of our clients are restricted from using those digital sites due to corporate firewall and social media policies. But email is allowed. Email is a way to get through the internet usage policies and to deliver messages.

Of course the message must still be relevant. But we can get a sense of that from eMail tracking. Unlike paper based mail, we can not only track deliverability but we can see open, render, and click-through rates as well. I can’t tell you how many people read a tweet. I have to look for some other evidence such as if they respond to a message, retweet it, use a coupon code,etc.

The eMail inbox is different though. People are in the habit of reading or at least scanning the subject line of every message that is inside their email inbox. That’s not true of other digital media such as status updates on LinkedIn, Twitter, Facebook, etc. I know at least with my own habits, that I don’t review and read every message from every contact on social sites where I have a profile. I typically see a status feed of the most current events. If I haven’t looked in a few days then most likely I never see the social message. That’s the email difference. It’s still a place where most people attempt to scan every message because they don’t want to miss those messages that are personal to them.

Melissa Campanelli of Online Marketing Strategies and Tactics summarized a Forrester study on email usage. Her summary includes points made by Forrester about email volume growth including cost and effectiveness. It all adds up to supporting evidence for companies to continue to use eMail for B2B communication.

I found the question of eMail Marketing vs social media posted on LinkedIn as well.   The points in that discussion are great:
* Email isn’t a replacement communication device but part of a larger overall strategy.
* Message content, audience, and relevancy are critical

Bottom line? Find what works. Experiment. Then make connections. What’s not to like about that kind of work? 😉

The customer is always right?

Is the customer always rights?
The question is more complicated than face value. Within the context of a single event you could make a case that the answer is yes. But this study posted on LinkedIn about customer experience and expectations suggests the customer may not always know what is best.  Of course what’s best depends on who is judging the situation. What’s best for the customer, as in a lowest price, may not always be what’s best for the business.  According to the study,the problem for businesses is that it often isn’t what drives additional sales.

Digging into voice of the customer.
I looked at the voice of customer remarks for the eCommerce sites that I help operate. There are definetly patterns within the data so I pulled some common customer feedback to analyze. The question to consider was would it add value to the business transaction to do what the customer wanted? Here’s a look at three of the common feedback items:

Lower prices – It’s the Internet and customers are used to retailers enticing them with free shipping. In my case consumers opinions are molded by banks offering “free checking”. But if the business lowered pricing for expedited delivery on product sales would the customers that are looking for lower delivery prices be more likely to upgrade from standard delivery?

Would lower prices add more value? No. Price sensitive customers want to shop for the lowest price but will leave anyways if they find a lower price elsewhere. For the business it creates a race to zero. Zero margins doesn’t create an environment for a sustainable business.

Ability to change shipping address – This feature is a bit trickier for my site because it is selling a financial instrument (paper check) on behalf of a bank/credit union. In most cases my business is contractually bound to not service an address change. The owning financial institution requires their customer to change their address at a branch location.

Would an address change add more value? Yes for the customer. It keeps them in their preferred channel. Yes for the business. It increases customer satisfaction by saving a trip to the branch or a phone call. This is a good opportunity to use technology to help change a business rule.

Package Change – We recently changed the traditional packaging for our main product from a box to a flat folio container. Prior to the change we conducted focus groups getting input from hundreds of consumers. They indicated overwhelmingly that the package change was a good thing. But post implementation feedback has been mixed.

Would it add value to allow the customer to pick their package type? No. In this case the customer isn’t buying the package. They are buying the product in the package. For the business, it creates more costs to have equipment that provide the product in two different formats and it reduces the opportunity for volume based shipping rates for a given package type.

The article published on LinkedIn gives all of us a subject we should think about more. Is the customer always right? As with many questions in life, my answer is “it depends”.