How to get me to hire you.

People who stand out tend to show the following criteria:

  1. Intelligence, curiosity and a track record of learning and adapting.
  2. Enthusiasm for technology and for being able to use it to solve real world problems.
  3. Excellent communication skills, i.e being able to write well, speak confidently and explain concepts clearly.
  4. Mastery of the area of competence you claim to have. (If you rate yourself a 10 out of 10, you better wow me!)
  5. An understanding of the big picture and the minor details, ie. both strategic and tactical thinking.
  6. No signs of entitlement and hubris.

Also, if you send off a generic message (that you wrote in 15 seconds) in order to ask me to spend a couple of minutes reading your LinkedIn profile in order to figure out who you are and how you fit in then I’m probably not going to be motivated to reach back out to you.  I’m sorry, but my time is as important as yours and in the job application process the onus is on you to take the time to sell yourself.  That initial contact goes a long way to proving to me your ability to fulfil the criteria above.

Of course, you might ask, what do you get in working for me?

  1. Membership with a great group of expert technical staff and access to the largest Salesforce consulting team in Australia.
  2. Participation in our Advanced Developer and Certified Technical Architect development programs.
  3. A well paid job (above market rates and bonus) working on some of the most interesting consulting projects currently going on in Australia.

Beyond Trailhead: Becoming a better coder.

Since the release of Salesforce’s Trailhead  (A set of learning resources for budding developers) I’ve had a number of people ask me ‘I’ve done Trailhead… what should I next?’

Here’s my answer!


The number 1 thing you can do to improve your skills is to practise them. Coding is no different to any other form of practice, the more you code the better you become.

But what do you code?

Obviously you might be coding in your day job but there’s a good chance that it may not be sufficiently stimulating, so I like to work on a side projects.

I ‘find a itch and scratch it’.  This could involve building something I find personally useful (and rebuilding it again and again and again using different tools/technology).  Others contribute to an open source project.

What ever you decide its up to you, the only criteria is that you find it personally stimulating enough to motivate you to keep going!

Study your craft

You don’t become a world champion by simply practicing, you need coaching.

Few of us are lucky to have a mentor who’ll help you like a coach – I’ve typically relied on books to gain my knowledge.

There are a number of different style of books out there, one style is the ‘how to’ style which aims to teach you a specific technology.  Personally I find these kind of books are sometimes dangerous for learning good coding – with examples and problems that rarely examine the challenges and practices of real world problems – a lot of introductory Apex material could be considered in this category.

The second type goes into more advanced instruction specific to a technology. There are a couple of good books in the Salesforce ecosystem here:

  1. Advanced Apex
  2. Enterprise Architecture.

The final type of the book looks deeper into the practice of the coding, these are usually based on a technology (as an illustrating mechanism), but aren’t about the technology.

In this category there are a number of books I own and would recommend:

  1. Clean Code
  2. Code Complete
  3. The Pragmatic Programmer
  4. Peopleware

Learn new ways of working

Part of experience is applying the right tool to the right job and in this sense what you know is your toolbox; the more you know, the more tools you have and the more ways you have to solve problems.

One rule of thumb people apply is to learn a new programming language every year but the world is more nuanced than simply programming languages – you can extend this to frameworks and tools as well.

But what technology should you pick?  My two criteria are:

  1. What is popular right now.
  2. What will be useful to me.

So for me that has been things like AngularJS and Mulesoft, for you it’s likely to be something completely different.

One more thing

If you are like me, you’ll always feel like there is more to know that what you already know.

You just have to recognise that there is no end game, no point at which you can say ‘I’ve learned all I can’.

The industry is always changing, if you aren’t moving forward, you’ll fall behind.

Does clicking an attachment in Service Console Case Feed not work?

If you are currently experiencing the following problem:

  1. You have Enabled ‘My Domain’
  2. You are using the Service Console
  3. You have turned on Case Feed
  4. You are using its ‘Compact Layout’ feature


  1. Clicking on email attachments in the case feed results in nothing happening.

Then you might think you are experiencing this ‘Known Issue’: I know I did.

Turns out this appears to be an issue with configuration that doesn’t happen automatically.

The way to fix it is:

  1. Turn on your Javascript Console in your fav browser (I use Chrome).
  2. Click the link, you’ll see a message appear in the log:

errorYou might recognise this as the problem you have with other URL in the service console, you need to white list it.

To do this,

  1. Go to Setup
  2. Click ‘Apps’
  3. Select your Service Console app from the list.
  4. Click ‘Edit’
  5. Add the domain mentioned in your error message to the whitelist section.  In my case it was ‘herod-dev-ed–’.
  6. Click Save
  7. Refresh the Service Console page in the browser.


The problem should be eliminated.


Dreamforce tips in 3 bullet points

  1. Have specific goals for the event.  

    1. What can you learn.
  2. Plan your must see events and organise your agenda around those events.

    1. There is SO MUCH on, going in without a game plan will mean you’ll miss everything.
  3. Comfortable shoes and some painkillers.  

    1. You’ll do a lot of walking and standing :)



Time based tokens – More secure authentication for your Salesforce org.

Salesforce# app showing the random generated keys for two different Salesforce orgs and the countdown.
Salesforce# app showing the random generated keys for two different Salesforce orgs and the countdown.

Salesforce prides itself on the attention it pays to securing the platforms on which your Salesforce org sits – but that last mile which is your Salesforce org is in the hands of you and whomever you share your Salesforce administration duties with.

There are many, many facets to securing your Salesforce org, this blog post will cover only one aspect, a feature which arrived in the recent past but which I have seen few people adopt despite its benefits, that of ‘Time based tokens’ or ‘Two Factor authentication‘ (2FA for short).

Traditionally the first line of defence is an excellent password, but I believe it should be standard practice for anyone who has administrative rights to your Salesforce org be required to use 2FA to enhance authentication.

2FA works on the principle of using two separate mechanisms to prove your identity to Salesforce.  In the real world this is as simple as a Debit card and your debit card pin: Something you have (the card) and something you know (your pin).

In Salesforce’s world, these two factors are your traditional username & password and the use of a mobile application called ‘Salesforce #’ (available in the iTunes App Store and Google Play stores).

Salesforce # a mobile application that produces a new random number every 30 seconds

Physical RSA SecurID Token
Physical RSA SecurID Token

using (one assumes) a secure and unpredictable mechanism.  This is identical to what you may already use with your Google account using Google’s Authenticator, or with a physical RSA SecurId token your employer may use.

Setting up your token generator (To be repeated for all users who will use it)

User Detail page showing already setup time based token
User Detail page showing already setup time based token


  • Log into your Salesforce Org
  • Go to your ‘User Detail’ page and locate the ‘Time-Based Token’ item
  • Click ‘Add’
  • Enter your username and password again
  • Start your mobile app.
  • Click ‘Add New key’
  • Take a photo of the QR code.
  • Done!




From now on Salesforce will use this token to verify you when you login from an unknown computer (instead of emailing you the verification code).  

In order to get Salesforce to use 2FA on login, you need to add the use of Time-Based Tokens to your user.

If you are using a custom Profile, you can add this option in the ‘System Permissions’ section

Enabled permission in ‘System Permissions’

However, I prefer to use a Permission Set to do this.

  1. Create a new Permission Set called ‘Two-Factor Authentication’
  2. Tick the ‘Two-Factor Authentication for User Interface Logins’ in the ‘System Permissions’ section
  3. Save the Permission Set
  4. Make sure everyone who is going to be affected knows about the change!  (See below)
  5. Add the Permission Set to all users with System Administrator profile (or any other profile with sensitive rights).

Now when you login you’ll see the traditional login screen, and then after you are successful with your username and password, you’ll see this screen.

2FA code verification screen
2FA code verification screen

Time to find where you left your phone!


What happens if the people assigned the permission set haven’t setup their time based token?

They’ll need to install the app, when they login they’ll get a screen like below:

What someone sees on login if they haven't set up a token but their config requires it.
What someone sees on login if they haven’t set up a token but their config requires it.

What happens if I delete the app by mistake? 

On the iPhone at least, reinstalling it from the app store will recover your 2FA setup without any issues.

What happens if I delete the token configuration on my phone?

You can remove the token setup by swiping it and deleting it, if its gone you’ll need another Administrator to remove your time based token on your User record to allow you to set it up again on your next login.  It’s probably a good idea to have at least two Administrators configured for your org!



Book Review: Development Blueprints

I picked up a copy of ‘ Development Blueprints’ on Friday and I wanted to share some of my first impressions. Development BlueprintsThe book contains five blueprints:

  1. Building a Salesforce community
  2. An online store using and Heroku
  3. A traditional CRM application
  4. A reporting system with custom dashboards
  5. A Mobile SDK application using Android and Microsoft Azure!

The first thing that surprised me was the technical breadth of the book, it’s not often you find one text that touches on, Android Development, Heroku, Azure and Angular.js.  On this basis I think  ‘Salesforce1 Development Blueprints’ may have been a more appropriate title.

The use of the word ‘Blueprint’ in the title of the book is, however, entirely accurate as these solutions are effectively reference architectures for the each of blueprint’s problem domain.  They are the starting point from which you could build out your own solutions.

The book’s foreword states that it is targeted at ‘Intermediate Visualforce developers’ but I think its audience is much greater than that. Readers with a non-Salesforce development background may find this book quite useful as it quickly demonstrates the nature and style of solutions that you can build on the Salesforce1 Platform.

It’s currently on sale thanks to a Packt deal, and for $10 the ebook version is fantastic value (and the book is still good value at full price).  You can buy it direct from Packt.


Visualforce: A Visual Reference Guide.

When I started working with Visualforce I found it quite time consuming to figure out what the various Visualforce tags and their options looked like when actually rendered on the page; I really wished that the tag reference included screenshots.

So, to help you out, that’s what I have done. I’ve put together some basic Visualforce tags and accompanying screenshots so you can:

  1.  see what that tag combination looks like
  2. flick through the screenshots looking for the UI you need and then check the code sample to see how to create it.

This document will be continually improved with additional examples, in the meantime I hope you find it useful!

Visualforce – A Visual Guide  (Version 1.0 – 80 pages, 6MB PDF)

URL encoding URLs in a Report.

Recently I had a slightly interesting requirement.

A URL field needed to be url encoded so that the report export could be directly imported into another system that couldn’t handle an un-encoded URL.

I would normally have handled that requirement with a formula field that called the URLENCODE function that you have in Visualforce but it turns out that function isn’t available to you when defining a formula field.

So I had to resort to this rather terrifying use of the ‘SUBSTITUTE’ function in defining a new formula field.  I thought I’d pass it on here for those who have similar needs.

'%21') , '#', '%23') , '$', '%24') , '&', '%26') , '\'', '%27') , '(', '%28'), ')', '%29') ,
 '*', '%2A') , '+', '%2B') , ',', '%2C') , '/', '%2F') , ':', '%3A') , ';', '%3B') 
, '=', '%3D') , '?', '%3F'), '@', '%40') , '[', '%5B') , ']', '%5D')

Maintaining your Salesforce Certifications….

How do I maintain my certification?

  • Each track you hold a certification in requires you to undertake maintenance exam each release.

    Certification Paths
    Click to Enlarge
  • The maintenance exam is a simple 15 minute (5-15 question) multiple choice exam booked via Web Assessor and undertaken without a proctor (i.e. at your desk, no supervision)

The Schedule

Every 12 months you need to pay a renewal fee to unlock the next 12 months maintenance exams.

Certification Maintenance Paths
Click to Enlarge


  • If you fall more than two releases behind, you will lose all your Certification’s in that and have to re-sit them all!
  • The fee is due 12 months after you passed your first exam for that track (i.e. Administrator or Developer)