Selling the Message: How to get from Occupation to Social Change

The world is facing both a financial collapse rivalling that of the Great Depression and political upheaval akin to the riots of 1968. In this turbulent environment it is imperative that those wanting to enact change upon the world learn from the past and adopt policies that move us forward, both in their actual policies and how they approach change.

The biggest danger facing a movement like #occupy or the many uprisings in the Arab world is that rather than changing the world for the better they are just replacing one oppressive system for another. Political change should never happen through force of one group against another but rather consensus and pragmatic discussion. We have an opportunity here to do something together to make a more viable future for everyone. But that requires that everyone participate, whether they are the 99%, the 1% or somewhere in between.

In an earlier part of my life I was a politician. I had ideas, ideals and a strong will to enact social change on my community, my country and the world. And to some small extent I like to think I did. But more importantly my time as a politician taught me some hard lessons about how the world works and how to go about enacting change in the world. And though frustrating, ideologically challenging and often counter-intuitive, these lessons should be the very corner stone of any social movement wanting to make a difference in the world.

They are:

  1. Work from Within
  2. Speak the Language of Your Oppressor
  3. Know that Your Views are Extreme
  4. Strong leadership is vital
  5. Create a political platform
  6. Be pragmatic and think long term

Just before I continue I must warn you what I am about to say will probably make you angry. That’s part of the problem, and can also be part of the solution.

Lesson 1: Work from within

The first and most important lesson is the one hardest to swallow: If you want to make a fundamental change to a system you have to work from within that system and make the changes using its own methods and procedures. This is usually contrary both to the agenda of social movements and also to their premise. Even so it is the hard and honest truth. Save for armed revolt or intentional widespread sabotage this is the only way of enacting large scale systemic change.

To use the #occupy movement as an example: If you want to change laws governing banks, corporations or even electoral systems you must first be in a position to make changes to those laws. This can be done either by electing officials who are willing and able to make these changes or by working your way into the system so you can make those changes yourself. Simply saying the system is flawed and demanding a change will do nothing unless you also have the power to enact this change. This is of course problematic if the root of your complaint is the political system itself, but the cure is the same: If you don’t like the current political system, you must either team up with current politicians or become a politician yourself so you can make the changes necessary.

Call to action: Vote in general elections, vote for the people who share your beliefs, join a political party, set the agenda for your political party.

Lesson 2: Speak the language of your oppressor

This lesson comes from basic marketing: If you want someone to change their mind about something they have to first understand what you’re saying. And I’m not talking about English here; I’m talking about ensuring you are actually talking about the same thing. One of the key problems of radical social movements is that they use language that either doesn’t resonate with or register at all in the minds of their target audience.

A good example of this (and one I get in trouble for bringing up) is feminism. I am a feminist myself (and yes, I’m a guy) but even I have a hard time accepting the vitriolic polemic presented by many in the feminist movement. The reason is much of what is said is rooted in anger, bitterness and all out attacks on “the other”. This creates a chasm between the oppressed (women) and their oppressor (men) and makes it hard for the oppressor to cross over and see the world from the oppressed point of view. The key to winning the war on gender inequality lies in making men see and understand the world from women’s perspective. Only when the oppressor empathises with the one he oppresses can he see his own faults. But this requires that the feminist movement speaks the language of their oppressors and meets them at their level. And that goes against the very nature of the movement, and most movements, which states that the oppressor should understand that they are in the wrong because they are in the wrong.

If you were selling a product this would be crystal clear: To make people feel they have to by the latest and greatest you have to speak their language. The same is true for social movements: Unless you communicate your message in a way your target audience – the people who are doing you wrong – understand, they won’t buy it and they’ll simply ignore you.

Call to Action: Learn the language of your oppressor, speak to them on their terms, use their own language, methods and data to make them empathise with your cause and see that they are the cause of your problems.

Lesson 3: Know that your views are extreme

Social movements almost always hold extreme ideals, largely because it is the people with the most extreme views that feel the most left out and thus feel the strongest need to be heard. This is why terms like “the lunatic fringe” and “the loudest voice in the room” are often attributed to social movements as a reason to ignore them. But even if the social movement itself is extreme, many people will sympathise with most of what the movement has to say, just in a less extreme way. Therein lies the problem:

If a social movement insists on being extreme and ignores more moderate views and approaches it will invariably alienate the large group of people who agree and sympathise with the overall message. As a result the movement will be marginalized because it is not willing to make concessions and the message is never taken seriously.

The only way to ensure wide spread support is to adopt a moderate version of the general ideals of the movement. By taking the moderate route you ensure that a larger group of people will want to join and you keep the overall goal of social change in focus. This usually results in the most extreme end of the spectrum cutting lose and starting its own group denouncing the main group as traitorous. Be that as it may: The end result will be a social movement with clout that people can actually identify with. The bottom line is simple: If you are too extreme, only people who are just as extreme as you will join. And most people are not extreme.

Call to Action: Imagine a scale from 1 (not extreme) to 100 (absolute extreme) and plant your policies somewhere between the 65 and 85 mark, ensure that the leadership of the group is not dominated by extreme elements on one end or the other, include the extreme elements but only as a minority, pursue a moderate message at all times.

Lesson 4: Strong leadership is vital

This is another difficult lesson, especially for left wing movements: Without strong and cohesive leadership your group is doomed to failure. The reasons are many:

  • The movement must have a clear voice – and that voice can only be communicated by a leadership group. If there is no leadership media and others will ask the general population of the group for information and that information will invariably be diluted and incorrect. A clear and concise message communicated by leaders is paramount.
  • Without leadership it will be impossible to formulate a goal and move towards it because fractions and individuals will adopt their own special version of the overall goal and pursue it instead.
  • People need someone to look up to. Without a charismatic leader that people trust and look up to the group will not have a focus and will start breaking into fractions.
  • Leaders are accountable. A group without a leader is hard to address, and internally it is impossible to decide who makes decisions and who is accountable when something doesn’t go according to plan. A democratically elected leader can both ensure that the movement as a whole moves towards their common objective and be held accountable when things don’t go the right way.

The problem with social movements, and left leaning social movements in particular, is that they tend to see leadership as a pathway to corruption. This is often a key part of their gripe as is the case with the #occupy movement. The goal of the group is therefore often a move towards absolute or direct democracy. Though this looks good on paper it is a recipe for disaster. Absolute democracy – where everyone votes on everything and there is no leadership – is doomed to failure even in small groups because not every member has the time, capacity nor knowledge to make an informed decision on everything. Furthermore the group will be faced with countless decisions that have to be made on the fly, something that is impossible to do if everyone is to be consulted.

The only way to ensure that the group remains cohesive and moves towards its stated goal is to create a democratically elected leadership committee that is left in charge. This committee has to have a platform on which to base its decisions (lesson 5) and must be held accountable to that platform. To ensure accountability remains the group should introduce set election periods at which time the entire committee is dissolved and re-elected.

Call to Action: Hold elections for a leadership committee, set down firm election periods, hold leadership accountable through elections.

Lesson 5: Create a political platform

For the movement to have an impact clear goals must be formulated and acted on. Only with clear goals in the form of a political platform can a plan be created on how to enact the change demanded by the group. Once a political platform is created outsiders can see what the group is about and decide to join and outside elements like other political organizations, the media and others can get a firm understanding of what the group wants and whether or not its goals are acceptable and something that should be supported. In addition, with a political platform as a base the movement can hold their leaders accountable and individual members of the movement can refer to the platform when in doubt about what to do next.

The creation of a political platform is generally done at a general assembly. The overall process is as follows:

  1. Everyone proposes policies
  2. Policies are grouped into defined sub-sections
  3. Committees are democratically elected to deal with defined sub-sections
  4. Committees look over all proposals in their section and conform them into a set of proposals
  5. All proposals are taken to a vote on an individual basis by the general assembly
  6. Political platform is defined based on proposals that are voted in

The movement can decide how often to revise their political platform. This should be done on a time basis (every 6 months, every year etc) to give the elected leadership committee time to enact the policies.

Call to Action: Hold general assembly, open the floor for policy proposals, create sub-committees to organize proposals, vote on individual proposals and political platform.

Lesson 6: Be pragmatic and think long term

The final lesson is both obvious and infuriating: If you want to enact large scale social change you need to be pragmatic and think long term. Unless you are planning an armed uprising things will not happen over night, nor should they. Rapidly implemented social restructuring always ends in chaos.

When I say “be pragmatic” I mean that you have to accept that the general population needs time to understand your demands, think about how they will affect their lives and decide whether or not they support them. You also have to take a step back and turn a critical eye to your own demands to see if they are reasonable or if you are demanding too much. Finally you have to seek consensus with your opponents and aim for acceptable compromises. This is hard to do when you have set ideas about how things should be, but getting 50% there is better than getting nowhere.

This links directly to the thinking long term part: If you have a pragmatic long term approach and seek consensus along the way you are more likely to succeed in implementing your goals. But more importantly you’ll have a chance to test out your policies and see if they are really as great as you firs envisioned. The irrevocable truth about political revolutions is that they never end up the way originally intended because our ideals do not correspond with reality. And due to our lack of a crystal ball and a working time machine we can’t actually see the future result of political change. Slow steady change gives us a method for constant course correction and a better chance of getting things right.

Call to Action: Be critical of your own ideals, seek consensus, set out long term goals and stick to them.

Epilogue

We are all in this mess together, and it is only together we can change it for the better. Together is our only option.

#Occupy posters for Canadian issues

#occupycanadaThe #Occupy movement is spreading, and with good reason. In the western world, and North America in particular, inequality is slowly becoming the norm. And nowhere more so than in the USA.

In my view the #Occupy movement is at its core about one thing: Democracy. And though the issues focused on may and should differ from country to country, the one persistent message is clear: Every man, woman and child has a voice and has an equal right to speak, be heard, and be part of society. The problem is that right now, especially in North America, only the rich and powerful get heard while the vast majority get overlooked or ignored.

Occupy Canada – issues for Canadians

One of the dangers of the #Occupy movement is that it may try to transplant issues from one country to another. This will not only erode the cause itself but make the movement seem ill informed. This is especially important as #Occupy events are ramping up in Canada. So if you plan on taking part in the events starting on October 15th in Canada, take up the cause of democratic issues we all face in Canada.

To help with this I’ve created three posters focusing on three important Canadian democratic issues: Electoral reform, control of telecommunications and cross-media ownership. I’ve also attached a short blurb about each of the issues so you can see why they matter and why you should make one of them (or all) your slogan as you #Occupy your city.

Proportional Representation Now!

Proportional representation nowCanada has an electoral system that has been referred to as a “sham democracy”. The first-past-the-post system does not reflect the popular vote but stacks parliament based on artificial electoral districts and simple majority rules. The result is that parliamentary composition rarely reflects the popular vote.

Case in point, the current Harper government. Whereas the Conservatives have a Parliamentary majority of 54.2% they only got 39.6% of the popular vote. In other words, based on popular vote the Canadian government would be a coalition of the NDP, Liberals and the Bloc with the Conservatives as official opposition. So when Harper claims he has a “strong majority mandate” he is really talking about an artificially inflated mandate based on an antiquated and undemocratic electoral system. Needless to say something must be done about this.

The solution is some form of proportional representation, employed by most western nations in the world. This would ensure that the popular vote is represented in parliament.

Download the poster in PDF format. JPEG version on Flickr.

Reform the CRTC

Reform the CRTCThe CRTC (Canadian Radio-television and Telecommunications Commission ) is the government watchdog and regulatory body for all radio, television and telecommunications in Canada. In other words they are the ones that decide who and what can be aired or sent over the internet and by whom this information is carried. The CRTC regulates the four big Canadian telecoms (Shaw, Telus, Bell and Rogers) who collectively stand for nearly 100% of all broadcasting and telecommunications.

The problem with the CRTC is that unlike in other western countries (the USA excluded) their mandate does not include the Canadian people nor consumer rights. The job of the CRTC is to protect the big telecoms from each other. This becomes problematic when you learn that the board of the CRTC is stacked with former heads of the four big telecoms.

Because of the weird mandate of the CRTC the four big telecoms can agree among each other to ramp up prices, cut services and lock competition out as long as all of them agree. As a result you, the consumer, gets screwed ever time. Ever wonder why your cell phone bill or cable bill is so high or why you don’t have the same streaming video services they have in other countries? The CRTC is to blame.

To solve this and make the telecoms act fairly and treat consumers with respect the mandate of the CRTC must be reformed to include consumer rights.

Download the poster in PDF format. JPEG version on Flickr.

Cross Media Ownership Kills the Free Word

Cross-media ownership kills the free wordOn the topic of the four big telecoms, did you know that almost all Canadian broadcasters are owned by the same telecoms that provide the cable signal in your house? Or that most Canadian news outlets are owned by the same big corporations? In Vancouver, both the major news papers The Vancouver Sun and The Vancouver Province are owned by the same company.

The result of such cross-media ownership is that the free word is quashed in favour of corporate interests. When one or a few corporations control the media entirely, the corporate philosophies and political views become the predominant voice in the media landscape. This is further complicated when the broadcasters are owned by the same companies that bring the broadcast signal to your home.

The bottom line is that cross-media ownership results in censorship of opinion and the free word. You see the result in the USA, especially with FOX News, but also in general with the media blackout over the #Occupy movement. And Canada is just inches away from being in that same situation unless the Government starts cracking down on cross-media ownership and passes legislation to prevent it from spreading.

Download the poster in PDF format. JPEG version on Flickr.

Final words

If you’re going to one of the #Occupy protests keep this in mind: If you want someone to change their mind you have to make them understand your case first. If you just shout at them, or try to force them, you will get nowhere. Communication is the key to everything.

WordPress on Windows Azure: Single-Site Deployment

WordPress on Windows Azure

UPDATE November 2, 2011: The WordPress on Azure scaffolder has been updated and a new and easier process has been introduced. In response this tutorial has been rewritten to reflect the new methods.

In this step-by-step tutorial I’ll take you through the process of publishing a single-site deployment of WordPress on Windows Azure. By “single-site deployment” I mean that you’ll be using WordPress as one single site. In contrast a Network deployment refers to a situation in which you’ll set up WordPress and then run multiple sites under it in a network.

A step-by-step tutorial on how to deploy WordPress Networks on Windows Azure will be posted in the near future.

What you’ll need

The two last points are optional, but it’s always a good idea to install WordPress with the plugins and theme(s) you want to use right off the bat. It saves you a bit of time later on.

Note that the following assumes you have a Windows Azure subscription. If not, go to the Windows Azure website and get a free trial.

1. Setting up Azure

The first step in deploying WordPress on Windows Azure is to set up the necessary elements in the Windows Azure environment. This is all done through the Windows Azure Management Portal found at http://windows.azure.com. For the deployment you’ll need a new Hosted Service, dedicated Blob storage and a database.

1a. Create a new Hosted Service

New Hosted Service

Your WordPress deployment will live in a Hosted Service on Windows Azure. You can have multiple Hosted Services under one account. To set up a new Hosted Service log into the Windows Azure Management Portal and click the New Hosted Service button in the top left corner.

This opens the New Hosted Service dialog where you can define the different parameters of the hosted service as seen below:

New Hosted Service Dialog

Off the top you select what subscription you want the new Hosted Service to live under.

Next give it a name so you know what it’s about and enter a dedicated URL prefix for your application.

By default all Windows Azure applications have a URL that looks like http://something.cloudapp.net. You can change this by forwarding one of your own domains to this address. More on that later.

Under Choose a region or affinity group you define in what general geographic area the application will be used. Pick the region or affinity group that is closest to your users.

When setting up a new Hosted Service you can deploy an application immediately. But since we have yet to build a deployment, check Do not deploy and click OK.

Windows Azure now runs a process and when it is completed you should see your new Hosted Service on the list as seen below.

New Hosted Service complete

1b. Create a Storage Account (Blob storage)

New Storage AccountWe’ll be using a Blob Storage Account to host all the uploaded content as well as the plugins and themes so that if and when your Windows Azure deployment reboots or reimages you don’t loose all this content. To create a Storage Account click on the New Storage Account button in the top left corner.

This opens the Create New Storage Account dialog as seen below:

Create New Storage Account dialogAgain pick the subscription you want to host the storage under, enter a URL prefix and set the region or affinity group. Make sure to place the Storage Account in the same region or affinity group as the Hosted Service.

Windows Azure runs a process and when it is completed you should see your new Storage account on the list as seen below.

Storage Account created

1c. Create a Database

The final step in the Windows Azure setup process is to create a database. This is where all the actual content of the WordPress site will live. This is a two step process: First you set up a new Database Server and then you set up a new database within it.

Create New Database Server

To create the new Database Server click the Database button on the lower left and click the huge Create New SQL Windows Azure Server button under Getting Started. Alternatively you can select the correct subscription and then click the Create button on the top toolbar. This opens the Create Server dialog. This is again a multi-step process.

First select the region (again, pick the same region you chose for the Hosted Service and Storage).

Create New Server step 1

On the next screen set the username and password for the server. This is the info you’ll use to interact with the databases on the server so make sure you have a copy of it somewhere. You can edit it later but it’s a big pain.

Create New Database Server step 2

The next step is interesting. You can assign custom IP addresses that are allowed to access your database directly. That’s not necessary in our case, but it could be in the future. For now just check the Allow other Windows Azure services to access this server box so WordPress can read and write to to the database. This will add a new rule with the IP range 0.0.0.0.

Create New Database Server step 3

When you click Finish, Windows Azure will create the new database server. When it’s done it will appear with a weird computer generated name on your server list as below.

Create New Database Server step 4

Create New DatabaseWith the database server set up you can now create a database for WordPress. To do this select the new database server and click the Create Database button on the top menu. This opens the Create Database dialog seen below.

Create Database dialog

In the dialog give the database a name (this is the name you’ll call from the WordPress config file, define the type (edition) of database you want (the options are Web and Business of which I use Web) and set the maximum size. If you’re running a single install WordPress site I’d be flabbergasted if you ever managed to get the database up to 1GB so stick with that.

Click OK and Windows Azure creates the database. You’ll notice that there are two databases in the server, one called Master and the one you created. This is as it should be. You can manage, drop and mess with the database you created all you want but you should leave Master alone.

2. Preparing your computer for the build

Before creating your WordPress on Windows Azure deployment package you need to install the Windows Azure SDK, the File System Durability Plugin and the Windows Azure SDK for PHP. The Windows Azure SDK is necessary for your computer to be able to build an Windows Azure deployment package. The File System Durability Plugin does exactly what it says – ensures file system durability. This is necessary because in Windows Azure you can spin up and down several instances of the same site and we have to make sure the instances are identical all the time. The Windows Azure SDK for PHP contains the functions necessary to build custom Windows Azure deployments that depend on PHP.

The easiest way to install the Windows Azure SDK is to download Web Platform Installer, search for “Azure SDK” and install it using the tool. Web Platform Installer will do all the heavy lifting and configurations for you in one clean sweep. If you really want to you can also install the Windows Azure SDK manually but I’m going to warn you up front that it’s a pain unless you are very familiar with IIS and other Windows obscura.

To install the File System Durability Plugin download the zip file from Github and extract it into the Windows Azure SDK plugins folder found at:

C:\Program Files\Windows Azure SDK\v1.x\bin\plugins

Finally to install Windows Azure SDK for PHP simply download it and place the contents of the trunk folder somewhere on your computer. I created a folder called “Windows-Azure-SDK-for-PHP” in my Program Files folder for this. For what we are doing the SDK for PHP requires no installation, it just has to live on your computer in a place you can remember. If you want it to be a permanent feature on your computer you can follow the instructions at this site for a more advanced install.

3. Creating the WordPress on Windows Azure scaffolding

The following assumes you have already installed Windows Azure SDK, the FileSystemDurabilityPlugin, Windows Azure SDK for PHP and PHP.

With Windows Azure set up it’s time to create the WordPress deployment package. This is done using a “scaffolding” tool created specifically for this purpose. The tool is baked into the Windows Azure SDK for PHP. The basic idea of the scaffolding tool is that it builds the framework in which we will build and configure the final deployment package. Once the scaffolding is created we can configure and add content such as plugins and themes to the WordPress core before deploying it.

To make this process as easy as possible the Microsoft Interoperability Team has created a complete solution for us, available from Github. Download the entire package where you want to do the setup for your deployment and let’s get started.

The actual building of the scaffolder will be done in Command Line (Start -> CMD) in Administrator mode. You can start it from the Start Menu (remember to right-click and select Run as Administrator).

Before running the scaffolder command you need to include the Windows Azure SDK for PHP in the system environment. This can be done by tweaking your system settings, but if you want a quick and easy way that leaves your system settings alone you can just configure it for the current open command line window using this command:

SET PATH=%PATH%;c:\PHP;C:\Program Files\Windows Azure SDK for PHP\bin

(The above assumes PHP is installed in the PHP folder on C: drive and the Windows Azure SDK for PHP is installed in the Windows Azure SDK for PHP folder under Program Files. Your command may be different depending on where you installed PHP and Windows Azure SDK for PHP.)

With the system settings changed it’s time to run the scaffolder. You can do this manually or you can use the convenient new build.bat batch file that will run the entire process for you. In command line type:

build.bat

If you’ve kept all your ducks in a row up until this point the scaffolder will now run and you’ll see a bunch of prompts in the command line window. The scaffolder sets up the entire environment you need to get WordPress to run on Windows Azure, downloads the latest version of WordPress automatically and adds a couple of very important WordPress plugins to boot. Pretty nifty.

When the command completes you’ll have a new folder called “build” in the same folder where build.bat was located. The build folder in turn contains three files: ServiceConfiguration.cscfg, WordPress.cspkg and WordPress.phar in addition to a folder called WordPress.

4. Configuring the WordPress for deployment

With the scaffolding built it’s time to configure WordPress. If you’ve ever worked published a WordPress site before you know that you need to plug in database access info and other data in the wp-config.php file before deployment for the site to hook onto the database. In the case of WordPress on Windows Azure however, that information is placed in an Windows Azure configuration file and the wp-config.php file queries this configuration file for the details. This allows you to change the configuration of the WordPress installation on the fly through the Windows Azure deployment configuration panel rather than having to redeploy every time you want to change something. The file in question is found in the build folder and is called ServiceConfiguration.cscfg. Open ServiceConfiguration.cscfg in a text editor and make the following changes as outlined below:

Database info

Database setup

DB_NAME is the name you set for the database, in my case “PhotoPivotDB”

DB_USER is your Windows Azure username combined with an @ and the name of the database server as assigned by Windows Azure. The full user name looks like this: “mor10@k3b1ogbnc7″

DB_PASSWORD is the password you defined when setting up the server.

DB_HOST is the host name of the server combined with .database.windows.net, so for example k3b1ogbnc7.database.core.windows.net

Security keys

With the new build.bat file the security keys are automatically generated so you no longer have to worry about them unless you want to add more complicated encryption.

FileSystemDurabilityPlugin settings

File System Durability Plugin

This section relates to the FileSystemDurabilityPlugin. Here you provide the access info to the Blob storage you set up earlier:

StorageAccountName is the name you gave your storage, in my case ppwpstorage

StorageAccountPrimaryKey you get by going to the Windows Azure portal, clicking Hosted Services, Storage Accounts & CDN, selecting your storage and clicking the Primary Access Key button on the top right hand corner:

Primary Access KeyThis opens a dialog from which you can copy the access key. It ends with two equal signs (==)

Leave everything else as it is.

5. Create the Deployment Package

The core setup is now complete and we are ready to create the deployment package. If you want to add any custom plugins or themes to your deployment, this is the time to do so. You find the plugins and themes folders under the \build\WordPress\WebRole\wp-content\ folder where you can add them by simply dropping them in. This is also where you add new or changed files when you are going to redeploy.

To ensure that WordPress can send administrator emails I recommend you download and add the WP Mail SMTP plugin. As Windows Azure does not have a native email server you need to use an external SMTP server to handle WordPress’ emails. This is further covered at the end of the article but since you’ll want the mail function to work you will save time by adding the plugin now so it’s part of your deployment package.

Creating the package is the final step before deploying to Windows Azure. Like with the scaffolder, the packager is run in comman line. First, navigate to the build folder where you find the WordPress.phar file. Then run the as follows:

package create -in=".\WordPress" -out=".\package" -dev=false

The process runs and you should end up with a new folder called package with two files: WordPress.cspkg (named after the export folder) and ServiceConfiguration.cscfg.

6. Deploying the Package

To deploy the package log in to the Windows Azure Portal, go to Hosted Services, Storage & CDN, click Hosted Services and select the hosted service you created earlier.

Next click the New Production Deployment button in the upper left corner. This opens the Create a new Deployment dialog:

New deploymentGive your deployment a name and point the Package location to your WordPress.cspkg file and Configuration file to ServiceConfiguration.cscfg, both in the package folder.

Click OK and if everything is correct you’ll get a warning like the one below. Click OK and the package will be uploaded and deployed. Because the build file will be at least 15mb in size this may take a bit of time.

warningOnce the package is uploaded you have to wait for Windows Azure to do its thing. This can take quite a long time (I’ve seen it take over an hour!) You just have to be patient and wait for it to do its thing.

7. Setting up WordPress on Windows Azure

If everything went as planned you should see the Deployment, Role and Instance of your deployment change to Ready. If so you can click on the deployment and you’ll get the DNS name you set in step 1a (http://something.cloudapp.net). Visit this address and you’ll get the standard WordPress setup screen.

Here you fill out all the standard stuff like Site title, username, password and an email address. Before clicking Install WordPress, make sure you remember your username and password! As Windows Azure doesn’t have an email server WordPress will not send you an email with your username and password nor will it do so if you click the “I forgot my password button”, so be careful.

After hitting Install WordPress the application is installed as normal and you get to the login screen. From here we have to do a couple of extra things before we’re all set to go:

7a. Set up Windows Azure Storage for WordPress

WordPress normally stores all uploads in the wp-content/uploads folder and this works fine on a normal server. But Windows Azure is a virtual server environment so things don’t work the same way. This is especially true when it comes to uploads. Because your WordPress instance (or instances) on Windows Azure live on a virtual server that can be reset and re-imaged, the WordPress on Windows Azure solution has to create synced copies of the wp-content folder in Blob storage so that all instances are identical and resets are not destructive. That means if you have a ton of images or other files on your site, these will be constantly passed back and forth between your instances and Blob, and that will become costly.

To get around the problem the WordPress.phar file ships with an extra plugin called Windows Azure Storage for WordPress. This plugin allows you to use Blob storage to save media in your installation.

Before activating the plugin you need to assign a container in your Blob storage for your uploads. The easiest way to do this is to use a tool like CloudXplorer and set it up manually.

To activate go to Plugins and activate Windows Azure Storage for WordPress.

Then go to Settings and select Windows Azure. This takes you to the configuration page for the Windows Azure Storage for WordPress plugin.

WordPress Azure storage plugin setup

Here you need to plug in the storage account name and the access key for the storage account. I use the same storage as for WordPress itself so I just copy the info out of my ServiceConfiguration.cscfg file and paste it in. If you want to you can set up separate storage as well but it seems excessive.

If you want to you can define an alternate CNAME for your storage (by default the domain for your Blob storage is http://YourAccountName.blob.core.windows.net/) and even set up proxy server info. I’ll leave that for you to decide.

Lastly remember to check the Use Windows Azure Storage for default upload box.

With everything set click Save changes and the plugin will connect to your storage.

At this point the Default Storage Container filed will be populated with whatever storage containers are available in Blob storage. Pick the container you set up for your uploads using CloudXplorer and click Save changes again.

Now you should be ready to go. Just to make sure, go to Media, upload an image and make sure it works and that the URL points to Blob storage.

7b. Set up an external SMTP server

The final compulsory step in setting up WordPress on Windows Azure is to set up an alternate SMTP server for the application so it can send emails to you and others. This is important because WordPress uses emails to communicate with you about things you need to know such as new user registrations, new comments and most importantly how to retrieve your username and password when you forget.

Setting up an SMTP server can be done using any one of a number of plugins. We use the WP Mail SMTP plugin by Callum MacDonald on PhotoPivot.com and it works splendidly. The setup of this plugin is self-explanatory and should need no further elaboration except to say you can use any number of different free SMTP servers to do so including GMail, Hotmail and others.

8. Extra Credit: Domain redirect

Now you have a fully functional WordPress site running on Azure on the domain name http://yourchosenname.cloudapp.net. That may not be what you had in mind. Fortunately redirecting a domain to Windows Azure is very easy. There are two steps involved:

  1. Use a CNAME redirect to point your existing domain to the Windows Azure domain (so www.yourdomain.com points to yourchosenname.cloudapp.net)
  2. In WordPress go to Settings -> General and change WordPress address (URL) and Site address (URL) to your new domain name.

These have to be done in order and you should not change the WordPress settings until your domain fully redirects to WordPress, otherwise you won’t be able to visit your site.

Appendix: Caveats

Plugin support

Though running WordPress on Windows Azure is cool, there are some drawbacks, the most important of which is that not everything works as expected. WordPress itself will run fine, but many plugins cause weird problems or don’t work at all. This is especially true for a lot of form plugins. The reason for this is that WordPress on Azure uses SQL Azure even though WordPress is meant to run on MySQL. Needless to say this causes some rather bizarre problems not experienced elsewhere. That said this is a minor concern and one that can be resolved with some clever coding

Service resets

Due to the nature of Windows Azure, the system will sometimes reset. There is no warning when this happens and you don’t know how long it’s going to last. The way around this is to create several instances of your site. That way when one goes down the other one stays up.

Bleeding edge means weird problems

Running WordPress on Windows Azure is an interesting experience. Having created hundreds of WordPress sites on many different servers I can tell you I’ve experienced things on Windows Azure I’ve never seen before, and a lot of it I can’t explain. However most of these issues have been worked out and what we have now is a stable and solid release. Even so I must warn that by doing this you are entering into the world of extreme bleeding edge scenarios so expect the unexpected!

Good luck and report back!

Now you have the complete algorithm to get WordPress up and running on Windows Azure. The only thing left is to try it for yourself. And once you’re up, report back in the comments below and tell the world how it went, what happened and if you ran into any weirdness along the way. I’d love to hear from you and see what you’re doing so don’t be a stranger! You may also want to check out the Github forums for the scaffolding tool to see what other people are doing with this solution.

A case for hosting your photos in the cloud (Flickr, Picasa, etc)

Pictures on the web, much like grown children, live better lives away from home. As a bonus, they don’t eat all your food and use your hot water. And if they get sick, they won’t infect everyone else. But most importantly when you decide to move house, move to a different country, or if you get foreclosed on, your house burns down or when you pass away, they continue their existence and continue interacting with others.

Pictures on the web should be autonomous units that can act and be acted on in their own right independently of what you do.

Though this sounds scary it is a good principle upon which to base your publishing of images on the web.

SEO is all about common sense

A study published under the name Google News Ranking Factors 2011 outlines the 10 most important factors that decide ranking on Google News – one of the biggest news aggregators in the world. And the result is good news for everyone, especially those who fret spending more money on expensive SEO services.

I’ve said it many times before, and now it’s supported by cold hard data: SEO (Search Engine Optimization), at least for Google News, is more about common sense and good writing than code magic and secret formulas. SEO service providers everywhere should cringe at this news because it proves, once again, that anyone can do this.

You can go check out the 10 most important factors that decide ranking on Google News right on the site. Highlights include authority, keywords in headings, trustworthiness, sitemaps and quality.

Overall the factors can be split into three groups:

  • Trustworthiness (1, 3, 4, 6, 8 )
  • Good writing and good journalism (2, 5, 7, 9)
  • Good coding practice (10)

Improve your SEO with some Common Sense

Based on this study and many others it is clear that rather than you don’t need to find a secret formula for how to trick the search engines into ranking your content higher. Instead you need should take the three main areas above and make them your mantra:

  • Do your research, make sure to quote and link your sources and only publish accurate and topical content. That way people trust you, share your content and your ranking will grow.
  • Make sure your writing is solid, both in the title and the body of the article. Better written articles are better rated. For the title, research what keywords people are looking for on the topic and use them, but use them sparingly. In other words, write titles that ask or answer a question directly.
  • Build the back end of your site properly, use the correct tags and above all create a Google XML Sitemap for your site so Google has an easier time indexing your content.

For the last point, if you have a WordPress site you can get Google XML Sitemaps by installing a simple plugin.

Get the whole study and read it for yourself over at Google News Ranking Factors 2011 (via ReadWriteWeb).

Build and Customize Your Website with WordPress – learn WordPress with me

Photo by Syx Langemann

UPDATE: Due to a scheduling conflict we’ve moved the start of the course to October 4th. That means you still have a chance to sign up and join me and learn how to get the most out of WordPress.

Want to build your own website? Have an existing website but want more control? Want to learn how to get the most out of WordPress? Look no further than the new course Build and Customize Your Website with WordPress taught by yours truly, Morten Rand-Hendriksen, lynda.com trainer, author and WordPress expert.

It’s been in the works for a long time and now it’s finally on track: I’m starting a course on how to build, customize and manage your website with WordPress. The course is fittingly called Build and Customize Your Website with WordPress and will be hosted by the good people at Vancouver Photo Workshops who have accepted me into the fold. Classes start on September 20th October 4th and you can sign up right now through their website.

From the course description:

Over 8 weeks you’ll walk through every step of the process, from inception to publication. Along the way you’ll learn how to optimize your site for search engines (SEO), connect it to popular social networks like Twitter, Facebook and LinkedIn, integrate content from sites like Flickr, and how to produce content that gets noticed, shared, and referenced by the people of the internet.

The course is comprehensive and in-depth and is designed for beginners as well as people who already have a WordPress website or want to port an old website to WordPress.

In addition to the regular class material we will also leave time for discussion, idea sharing and real-life website creation. At the end of the course every student will have a website published on the web, and throughout the course we will work together to make each of them great.

Topics covered include WordPress basics like setup and administration, content creation and publication, social media integration and Search Engine Optimization. In addition we’ll take a shallow dive into the world of HTML, CSS and PHP

Although focused on photographers, the course is general enough for anyone to attend. If you want to build, manage, and maintain your own website or a website for a company, this is the place to start!

A little background

Those of you who have been following me for some time will now that I’m now splitting my time in half: 50% client work and 50% education and community work. My lynda.com WordPress training videos, speaking engagements, and books along with organizing the Vancouver WordPress Meetup group and WordCamp:Developers have been my main avenues for helping people get the most out of the web but I’ve always had a desire to take things a step further and starting a true class where I can interact with students over time and help them build truly effective presences on the web they are able to manage and grow on their own.

My goal for this course and the more advanced ones in the works is to empower you to build your own online presence and to understand not only how the web works but how you can use it effectively. In the classroom I’ll give away all my secrets so if you want to pick my brain this is the place to start!

Sign up for the 8 week Build and Customize Your Website with WordPress course over at Vancouver Photo Workshops.

Profile: Syx Langemann

Vancouver photographer Syx Langemann at his teaching gig at Vancouver Photo Workshops. Syx has a background in the art of tattoo and as a result his body is covered in ink. The tattoo across the knuckles of his hands reads " FERREALS".

Syx getting ready for our talk at Vancouver Photo Workshops.

Your Blog is Boring and Your Photos Suck – take two

Mark your calendars! On Thursday August 25 Syx Langemann and I are hosting a two hour encore of our hugely popular Northern Voice 2011 talk Your Blog is Boring and Your Photos Suck about photoblogging. The talk will take place at the Vancouver Photo Workshops and is 100% free of charge.

The talk was hugely popular at Northern Voice and we had people sitting on the floor and standing in the isles. If you want to join us, go register at Meetup.com or Eventbrite.com. And again, the talk is free.

Your Blog is Boring and Your Photos Suck is a two-part presentation. Part one has Syx take you through the creative process of taking a photo – everything from camera techniques and lighting to composition, colour theory and beyond. The second half picks up where Syx leaves off with me explaining how to publish your photos online in the most efficient way and get them noticed by the people of the internet.

If you’ve ever wanted to take better pictures, publish your photos online or you run a WordPress or other photo blog and wonder what you can do to make it better and more noticeable, this is the talk for you.

Because we have more time this time we’re also adding in ample time for Q&A, so bring your questions, ideas and comments and we’ll have a good old fashioned free-for-all.

So, go register at Meetup.com or Eventbrite.com and come geek out with us on Thursday!

As a side note I’m also starting a full-fledged WordPress course at Vancouver Photo Workshops in September. The course is the first of three targeting beginners. You can learn more by going to the Vancouver Photo Workshops website.

 

Oslo Love – Vote for my first ever Threadless submission

I’m a big t-shirt fanatic and I’ve often wished I could get a t-shirt design printed by Threadless. This month the opportunity arose when they started the Threadless Loves Your City contest. So I created a design to honour my favourite city, the one where I spent my formative years; Oslo, Norway.

The design is simple: Emblazoned on the silhouette of the iconic Oslo City Hall are the names of all the sections (bydeler) in Oslo. The design is red and white and is printed on a blue shirt to correspond with the colours in the Norwegian flag.

To get the shirt printed it has to be voted through. So now it’s up to you, dear followers, to go to Threadless and vote for my Oslo design.

I believe you need an account to vote. Luckily accounts are free and do not require you to buy anything. Of course once my shirt does get approved you will want to buy it because it will be your doing, but that’s down the road. For now, just vote!

Last Friday … In Norway – my op-ed piece in the Vancouver Sun

“Last Friday a terrorist tried to kill my friends. With a bomb placed outside their workplace he voiced his political dissent in the most cowardly of ways: Through violence. In the hours that followed I reached out over the Internet, through email, Facebook and Twitter, to make sure they were OK. And they were. By random chance, the luck of the draw, by the tiniest of margins. One was on holiday. Another had gone home early. The third met a mutual friend in front of the building at 3:16 p.m., only 10 minutes before the bomb went off. They likely walked right past the terrorist. In an email to me later, one of them writes “It’s strange to think how close I was to waiting a bit longer.” The bomb went off as they turned the corner a block away, killing eight and wounding many more. The time was 3:26 p.m.”

Read the whole piece over at the Vancouver Sun.

Related: My reaction on the day of the attacs: Together is our only option and my ongoing Norway Q&A.