Category Archives: Workflow

All things workflow, business, team or other

Gitflow with a picture :)


Git flow is really simple but you must be very strict when using it.. as in you either do gitflow or not at all.

1 – Master is basically what the live website follow.

2 – Develop is where work gets merged into.

3 – Features is where the new work is built

4 – Hotfixes are for when you urgently need to work going live and cannot wait for the develop branch to be ready for release.


The one branch that is not mentioned in the picture is the release branch… I will add this later.


A Decentralized Internet?

I believe that the internet is truly the most important invention the world has ever seen. It gives the world of knowledge to the masses and is not controlled by any one person.

The last remaining problem with the internet is that all traffic routes through internet servrice providers (ISP’s). Each and every single request you ever make to the world wide web at some point routes through your ISP, and ISP’s are controlled by whom?

ISP’s are the last blockade to true freedom of speech and knowledge.

I recently stumbled across something called Maidsafe.

Is this a solution?

Net Neutrality – Join the Internet Countdown

I cannot actually put script tags on blogger, but if i could i would.

“Telling everyone about the vote is a key part of winning real net neutrality. We need your help to do just that. If you use twitter, click “Join with Twitter” below, and you can sign up to tweet once a day from now until the vote, or just once right before the vote. It’s your choice. If you don’t have twitter, then sign up with your email and we’ll send you a list of different ways you can help.”

var _cd_options = { theme: ‘red’ };

Salesforce glossary of terms

If your organization uses Salesforce or another CRM system , you probably know that it’s a powerful piece of software that is capable of transforming every aspect of how your sales team works. An effective CRM system can help your reps identify, manage, and close more deals more quickly. But with great power often comes great responsi … err, complexity.
For many of us marketers, our CRM system is like a black box. We know it’s chock full of data that could be useful to us, and we have a sense that we don’t know enough about it, but we still don’t know how to get our bearings. Perhaps you feel like you’re neck deep in CRM terminology every time you have a conversation with your sales manager. Maybe you just don’t feel all that confident navigating through your CRM system, or maybe you know that as a marketer, you could get a lot more out of knowing it better.
That’s why we thought it would be helpful to come out with a guide (written just for marketers) to one of the most popular CRM systems around — Salesforce. The Marketer’s Field Guide to Salesforce , which you can download for free here , will teach you everything you need to know about using Salesforce as a marketer.
While different CRM systems use slightly different terminology, to ease you into a better understanding of CRMs, let’s take a look at some common CRM, and specifically, Salesforce terminology that marketers should know.



A standard object in Salesforce that represents a company or organization (but not necessarily a customer). An account may have contacts (individuals or employees who work there), opportunities (potential sales deals), and other objects associated with it. The contact record stores details about the company like the company name, address, etc.


Records stored on an object that are typically used to represent actions taken on a lead, contact, or account — things like phone calls, emails from a rep, or future tasks that a rep intends to complete. Many marketing software platforms can automatically insert activities into the activity history to give a rep context about key actions marketing is taking with respect to a lead (e.g. email sends, if those emails were opened or clicked, form submissions made by the lead, etc.).

Activity History

A list stored on a record in Salesforce that shows the history of activities that have been carried out on that object. For example, the activity history section on a contact record may contain a list of actions the sales rep has taken in working that lead — emails sent, calls made, etc.


An API (application programming interface) is a system used by a piece of software to talk to other pieces of software. Salesforce offers an API that allows it to be connected to outside systems like a marketing platform or email tool. Some third parties ( like HubSpot ) have standard “connectors” that makes it possible to connect them to Salesforce’s API easily and without any technical knowledge.


A programming language used by developers to build applications that interact with Salesforce. These applications are often hosted on the platform (see below); there are hundreds of generally available applications in the Salesforce AppExchange.


Salesforce’s app marketplace, which contains hundreds of integrations with third-party services that allow users to extend the functionality of their Salesforce instance. HubSpot’s Salesforce integration, for example, is listed in the Salesforce AppExchange.


Bi-Directional Sync

A feature of a third-party tool (like HubSpot) that allows it to both read information from, and write information to, Salesforce. (Example: Because HubSpot’s Salesforce integration features bi-directional sync, it can both add new leads to Salesforce, and pull leads from Salesforce based on a user’s preference.)



An object in Salesforce used to track a marketing effort. The campaign object houses several standard pieces of data — a campaign name, start and end dates, expected revenue, budgeted and actual costs, and more. While Salesforce campaigns have many uses, most marketers use them for reporting purposes. Campaigns are often used in conjunction with closed-loop reporting from a marketing software platform like HubSpot.


A set of collaboration tools that are woven throughout Salesforce, allowing individuals to work together and share information on deals they are working. Users can join different groups, comment on different objects and data, and share details through chatter.

Closed-Loop Reporting

A reporting methodology in which data about which leads/contacts/accounts ultimately convert into sales is passed back to a marketing platform . In the marketing platform, the marketer can then attribute that customer to the various marketing efforts they touched, and better understand the ROI each of those efforts generated.

Closed Won Opportunity

A standard stage in Salesforce that refers to the status of an opportunity. An opportunity is typically set to “closed won” status when a deal is closed and the associated account is now a customer. Systems like HubSpot listen for this “closed won” status in Salesforce to enable closed-loop reporting .


A piece of software that connects another system (like a marketing software platform, or an email tool) to Salesforce.


A standard object in Salesforce that represents an individual person. The contact record contains details like a name, address, email, and phone number. A contact can be attached to an account and opportunity record.

Contact Role

A standard field included on the contact record that can be used to define the role an individual plays in an account or opportunity (e.g. decision maker, influencer, etc.).

Custom Field

A specialized piece of data stored in Salesforce that is unique to the user’s business. (e.g. A dog food manufacturer might create a custom field for “favorite dog breed” in its system to track the favorite breed of each of its contacts.)

Custom Object

A specialized type of record in Salesforce created to meet the needs of an individual business. An example of this might be an “employee” object that contains several details about an employee that is used by an HR department.

Custom Report

A view of data in Salesforce that has been personalized by the user to include exactly the information they want to see. A custom report might use filters to determine which records it includes (e.g. this report should include only lead records in Massachusetts who are CEOs) and will contain a set of individually chosen fields, usually as columns (e.g. the name, email address, and lead score of those Massachusetts CEO leads).



A dashboard in Salesforce is a graphical representation of what you might find in a report. Dashboards might include charts, gauges, or other graphics that represent the metrics that underly them. They make it easy for a team to track progress toward a goal or metric.



A field in Salesforce is a piece of data stored on an object. An example of a field might be the “First Name” or “Email Address” field found on the lead and contact records. Fields are also often referred to as “properties.”

A cloud platform service that allows developers to build and host applications on Salesforce’s servers. is widely used to host applications that work in conjunction with Salesforce, like many of the apps available in the Salesforce AppExchange.


Generally speaking, a forecast is an estimate of revenue that will be brought in during a given time period. In the context of Salesforce, a forecast is a type of report that shows a tally of data from opportunities expected to close in a specified time period. Your sales managers may use Salesforce forecasts to monitor their pipeline throughout the month.

Formula Field

A formula field in Salesforce is similar to a cell in Excel that contains a formula. The field relies on an equation to populate the data it shows. That equation may take other fields or information into consideration. An example of a formula field might be a field that shows the number of days since sales last followed up with a specific lead.



A standard object in Salesforce that represents an individual identity at an early stage in the sales process. A lead record isn’t natively connected to other data in Salesforce, but is “converted” when it represents a valid opportunity (a process which creates a contact in its place, and associates it with account and opportunity records).

Lead Scoring

A process typically carried out in a marketing platform that assigns a numeric value to a lead to represent how qualified he/she is. Every organization typically devises its own scoring criteria based on factors that determine the likelihood that a lead is well qualified.


A field that references the data in another field, possibly on another object. A lookup field can be identified by the clickable magnifying glass icon that appears alongside it. An example of a standard lookup field is the “Account” field that appears on a contact — this field is set to reference the “Account Name” field on the associated account object.


Marketing Cloud

A suite of social analytics tools offered as an add-on to Salesforce that helps large enterprise organizations monitor and leverage social media.



In the context of Salesforce, an “object” is a type of record that Salesforce uses to store your data. There are several standard objects that every Salesforce instance comes with out of the box — an account, a lead, an opportunity, a contact, and many more. It is also possible to set up custom objects to reflect custom pieces of data or custom parts of your process.


A standard object in Salesforce that represents a potential sales deal. An opportunity record typically contains details about the potential deal, like expected deal size (a dollar amount that cascades up to Salesforce forecasts), expected close date, probability, and opportunity stage.

Opportunity Stage

A standard field found on the opportunity object that is used to track the status of an opportunity. The opportunity stage may be set to one of several values such as “Prospecting”, “Negotiation/Review,” or “Closed Won,” which represents that the opportunity is associated with a customer or won business.



A queue in Salesforce is akin to a “holding pen” for objects that aren’t yet assigned to an individual. An example might be a “Recycled Leads Queue” where your sales reps send unqualified leads to if they determine the lead isn’t ready for sales contact.



A report is what it sounds like — a view in Salesforce of a specific subset of records and fields of data. Salesforce comes with several standard report types out of the box (e.g. the Campaign ROI Analysis Report, or the Lead History Report). It is also possible to create custom reports in Salesforce.


Standard Object

A type of record where data is stored that Salesforce uses out of the box. Examples of a standard object might be a lead object, a contact object, an account object, or an opportunity object. Also see the definition for “object.”



Tasks in Salesforce represent an action that has been taken or will be taken with respect to a record in Salesforce. An example of a task might be a phone call to a lead, or a marketing email that was sent to and opened by a contact. Tasks are listed on individual records, and are used by sales reps to manage their day-to-day actions for each lead. Managers can track tasks to measure the activity of a rep via reports.


A piece of Apex code that is used to kick off actions in Salesforce when a change to a record, or creation of a new record, happens in Salesforce. An example use of a trigger might be to change the “company type” field on an account record to “enterprise” if an account is set to have more than 500 employees in its company size field.



Think of a view as a predefined set of filter criteria that can be applied to a list of data from a drop-down menu. Many lists of data come with a preset list of helpful views; for example, you might choose to filter a list of contacts to see only “My Contacts,” which would surface a list of only contacts that you are set as the owner of. You can also create custom views in Salesforce.


Web to Lead

A tool in Salesforce that allows you to create simple forms that you can place on outside websites. When a user fills out the form, a lead is created in Salesforce. Note that most Salesforce Web to Lead forms will only accept up to 500 submissions per day.

Workflow Rule

A tool in Salesforce that allows you to automate certain actions like sending notification emails, updating fields in your database, adding tasks to a record in Salesforce, and more. An example use of workflow rules might be setting up a rule that sends an email to a specific sales manager when a deal comes in that needs their approval, based on the company size (or any other characteristic) of the associated opportunity. 

Don’t Be Overwhelmed!

While there are many terms you’ve probably heard used in reference to your particular CRM system, it’s important to not be overwhelmed. By biting off small bits and learning more and more from this  CRM and Salesforce glossary , you’ll get a better understanding of the system your sales team uses every day, and how you can better leverage its capabilities to improve your marketing and your processes. 

SVN – Commit emails with sSMTP

Simple bash shell script to run in conjunction with sSMTP. Save as post-commit, svn will run after any commit.

# This is a custom post-commit for sending email
# when an svn repo is changed.


author=`/usr/bin/svnlook author  -r $revision $repodir`
date=`/usr/bin/svnlook   date    -r $revision $repodir`
log=`/usr/bin/svnlook    log     -r $revision $repodir`
info=`/usr/bin/svnlook   changed -r $revision $repodir`

ssmtp <<EOF
To: Dev Team
Subject: SVN Commit

repository  –  $url
date        –  $date
username    –  $author
revision    –  $revision
comment     –  $log


Installing and configuring SVN on Ubuntu 11.04 for use with TortoiseSVN on Windows

NB – As with the rest of the my blog posts, this is just a method I choose. It may or may not be 100% correct. If it helps you, brilliant, but it is intended for my own use.

I recently had to install and configure SVN for a couple of projects running on servers with Ubuntu 11.04. There are a few guides out there but as usual to get the complete process from installing to actually using (in this case committing changes… etc etc) I had to pick bits from a few guides across the web.

Also, one thing to note this guide will add all your files to the svn at the end of the guide.

The requirements for both these projects were:

  1. Server OS – Ubuntu 11.04
  2. Password protected using WebDAV
  3. Multiple users to each svn install
  4. Both projects to use the SVN repositories via TortoiseSVN from Windows 7

 Assumed knowledge for this guide

  1. An understanding of Ubuntu server at cli
  2. An understanding of what SVN is although prioir use not strictly essential.

Step 1 – Installing SVN
Before doing anything I always find it best to log in at the root (as long as your username has these permissions)

sudo su

As one of the requirements is to use SVN with WebDAV there are two things to install first, SVN and liapache2-svn, run apt-get update first to ensure your lists are up to date, then:

apt-get install subversion libapache2-svn

Step 2 – Creating your first SVN repository on the server
After installing SVN you will then need to create an SVN repository somewhere on you server (this is central repository where all developers will commit changes to and download other peoples changes from). As you do not want anyone outside of your dev team from seeing the SVN repository  you will need to create this somewhere out of the public Apache folder (ie not in www or what ever you may have configured it to be).

For this guide we will be creating the svn repos in the ‘/home/svn’. Making sure you are at the root create your new directory which will later hold the SVN repos.

mkdir  /home/svn

If this is the first time you are setting up any kind of version control for your project it might be advisable to have a read up on branching:

It is possible to have multiple SVN repositories running from the one server. In fact you could have multiple SVN projects along with multiple VPS all on the same server. However, even with multiple SVN repositories it is still good practice to house all your SVN repositories in the one directory (in our case it is the one we just made).

Now create a subfolder with the title of your project name. For this exmaple the projects name is ‘project101’. Create this folder within the svn directory you just created:

mkdir project101

Now from the root run the following command to start the svn repository:

svnadmin create /home/svn/project101

Step 3 – Creating the SVN group
You will need to create a new group for svn and add any developers user account to the said group along with the Apache user, www-data.

This guide will show you how do this via cli, or if you have GUI installed such as Webmin you could do this via that (for Webmin it is system > users and groups

You will then need to change the ownership of the project101 folder to the Apache user, www-data. This again can easily be done in Webmin with permissions 2775 or via command line (getting into the svn folder first):

Step 4 – Configuring WebDAV
Although you should now be able to navigate to your SVN folder from a web browser now:

 It really is obviously completely unsecured and the whole world can see your svn repos.

The following steps will essentially be protecting your svn repository with basic authentication which you may have already come acros if you have ever used something like Barclay EPDQ.

Assuming you are still logged in with admin access we will now edit the following config file:

nano /etc/apache2/mods-available/dav_svn.conf

You will see a that the whole file is commenting out with #’s. It is quite well documented so you can get to grips with what each line does very easily, however the code we need is this and can be added to the bottom leaving the rest commented out, change project101 to what ever the name of your project is:

DAV svn
SVNPath /home/svn/project101
AuthType Basic
AuthName “project101 subversion repository”
AuthUserFile /etc/subversion/passwd
Require valid-user

The above has now instructed SVN to require a password upon any user trying to access the svn repos. The passwords are stored in the file against AuthUserFile.

You will need to restart apache now for the above to have an effect:

/etc/init.d/apache2 restart

Step 5 – Adding the passwords
If you don’t already have a password file set up run (replace user_name with the username you wish to gain access):

htpasswd -c /etc/subversion/passwd user_name

This will create the password for you (hence the -c) and then prompt you to enter a password.

Adding additional users to the password file run (the above but without the -c):

htpasswd /etc/subversion/passwd second_user_name

You should now only be able to access the directory from a browser if you enter a username and password.

Step 6 -Installing TortoiseSVN
This step is pretty obvious, but hey why not:
Go here from your windows computer
Download the appropriate version (64bit for win7)
Install on you win7 comp, I think from memory you have to restart your comp after the install.

If it is installed correctly you should be able to see some new options in your right click drop down from within windows explorer:

  1. svn checkout
  2. Tortoise SVN with more options…

Step 7 – Checking out the repos

First you will ‘Checkout’ your empty SVN repository to somewhere on your windows machine. First create somewhere in windows explorer to hold your ‘Working Copy‘ hehehe… sorry i just love LMGTFY.

So once you have created your folder to hold your working copy, right within it and click ‘SVN Checkout…’

You should get the following box:

Enter the url to your project101 and everything else should be left as is.

After clicking OK you will be asked for a user name and password along with the option to save for future… tick if you don’t want to type in the credentails all the time.

Step 8 – Adding the files
All that is left to do now is add the files to the SVN repository.

Simply copy and paste all your files into the folder in windows explorer.

After they have been copied in you should see a blue question mark next to all of the files and folders… don’t worry this is good.

If you cannot see any icons next to all your files:

  1. right click > Tortoise SVN > Settings
  2. Click the icons overlay and check the box where you have placed your working copy, then restart your computer.

From the top level of your working directory,

  1. right click > Tortoise SVN > Add
  2. SVN should list all the folders and files in the directory
  3. Click OK

After all the files are added (they have been added to your win7 svn program) you will need to ‘Commit’ them to your servers central repository. Again from the top level of your working copy folder:

  1. right click > Tortoise SVN > SVN commit
  2. SVN should check all the files which need committing, which for this first time should be all of them
  3. Click OK
  4. Tortoise SVN should now flicker away Committing all the files to your server

Step 9 – Setting up further developers computers

  1. Install TortoiseSVN
  2. Create a working directory in windows explorer
  3. SVN Checkout with their username and password
  4. DONE, their working copy should be filled with all the files.

Step 10 – Using
As stated at the top you should have a basic understanding on how to use your new configuration of SVN but just incase here’s the uber basics….:

When configuring SVN with webDAV: When comitting a new file to the SVN repository, if you have a rewrite to handle your 404 errors you will most likely see an error reading ‘moved repository’, and moved to where ever your 404 rewrite is pointing to.
SVN apparently uses 404 (not found) errors in order to add new resources. You must allow this one to pass through instead of making a redirection, or svn will get confused.”

Every time you make a change and save the file TortoiseSVN will not the change and you will see a red !. To allow all your other devs to access the changes SVN Commit

Everytime one of your devs commits a change you will see a red !. Unfortunately there is no differentiation between files needing committing and files needing updating. However there are plenty of IDE which do offer this.