Best Practices for Writing Tests

Best Practices for Writing Tests

When I say the word test, what’s the first thing that comes to your mind? It’s probably the boring tests that you did in school that were either multiple choice or required sentences or in math showing your work. When I talk about tests it’s usually an automated process which can execute on software and help improve the quality and act as part of the quality assurance process.

There’s a bunch of different ways of doing tests such as automated testing, manual testing, smoke tests, and then various different subtypes such as unit testing or regression testing. Continue reading

How to Use CRM To Grow Your Business

How to Use CRM to Grow Your Business

Implementing Customer Relationship Management (CRM) software is vital to growing a company’s business because having a relationship with customers is vital. In this post, I will detail how to use crm to grow your business by implementing it correctly, making sure staff are using it and providing a few really good tips to automate business processes which will help reduce costs and drive revenue. Continue reading

5 Strategies to get Around SOQL Query Limits

5 Strategies to get Around SOQL Query Limits

In Apex, there’s quite a few constraints that are strictly enforced because the platform is a shared multitenant environment. Quite a few of the limits result in runtime exceptions that can’t be handled.

For those familiar with Salesforce, it’s no secret that there’s a lot of limits. For example, there’s limits around the ViewState which were pretty painful to work around.

One of the first limits, I believe all new Salesforce developers hit is the limit for a maximum of SOQL queries that can be done. Continue reading

Awesome Resources for Learning Salesforce Lightning

Resources for Learning Salesforce Lightning

At Dreamforce 2014, Salesforce announced they were changing the Salesforce User Interface to make it simpler to use. The new User Interface is called Salesforce Lightning. In my blog post, What is Salesforce Lightning I cover a lot more about what it is and how development differs from using Apex and Visualforce.

If you don’t have any experience with JavaScript, it will make programming Salesforce Lightning a lot more difficult. I strong recommend having a look at my blog post Resources for Learning JavaScript before you dive into learning Salesforce Lightning because JavaScript is what’s used predominantly in the controller now.

In the last two years or so, there’s been a steady increase in the number of resources that have become available for learning lightning. I launched my first lightning component as part of an AppExchange product about a year ago and have been doing lots of lightning, react and node development since then. I believe that all Salesforce Developers will need to learn and master javascript to avoid becoming irrelevant and unemployable in the next couple of years. Continue reading

How Code Becomes Legacy Code

How Code Becomes Legacy Code

I like to think that a legacy system is code that’s being used in production and still works fine, but is using older designs or older techniques that are no longer in common use. Legacy isn’t a label that means something is broken or retired, it means the software still works but might not be modifiable for some reason – possibly the software only runs on an older version of Linux or Microsoft Server because the language or libraries it depends on has been deprecated.

When I mean the code isn’t modifiable or updateable this can be for a variety of different reasons such as the language it was built in is no longer generally available or can’t be built on a more modern machine. Possibly, your company is already in the middle of updating/re-writing the legacy system or has lost the source code over the years. Over the years, I’ve spent time trying to decompile code and sometimes this works really well and other times it’s completed but the code is impossible to read.

Continue reading

5 Ways to Increase CRM Usage

5 Ways to Increase CRM Usage

Implementing CRMS like Salesforce into an existing company can be really challenging if users aren’t interested in using it or resistant to change. I recall the first time I integrated Salesforce into an organization, we had a very difficult time getting the sales staff to actually use it. Eventually we found a way to get staff interested in using the CRM and stop using Google Docs or Excel sheets.
Continue reading

Using Promises in Salesforce Lightning

Using Promises in Salesforce Lightning

It’s no secret that Salesforce Lightning is changing the way we develop for Salesforce. At Dreamforce 2014, Salesforce introduced Salesforce Lightning and it is proving to change a lot of things we do on the platform and I’m sure it will make things a lot better for users in the long term. If you aren’t already familiar with Salesforce Lightning then you need to read my post called What is Salesforce Lightning. Continue reading

A beginners Guide to Understanding CRM

Beginner's Guide to Understanding CRM

In the days of early computing, it was rare that companies would have a way of communicating with their customers that would scale as the company grew. Everything went into different “data silos” that wasn’t necessarily accessible to the right person at the right moment. When I started my career, I worked on phone systems that were mostly being used by mortgage brokers that usually worked off of lists of potential customers in excel.

Usually the brokers had no insight into how things were going or would go unless they kept adding columns for notes each time they called or emailed the person. If the mortgage broker worked on a team or had a manager – it was nearly impossible to coordinate how things were going because everything was based off of the data or papers even that one employee would keep on their computer or on their desk.
Continue reading

How to Add Third Party JavaScript Libraries to Salesforce Lightning

How to Add Third Party JavaScript Libraries to Salesforce Lightning

It’s not secret that Salesforce Lightning is a huge shift away from Visualforce and Apex, I feel like I’ve had to relearn years of development and lean heavily on my javascript development experienced. If you aren’t sure what Salesforce Lightning is or aren’t sure why it’s a huge shift, you need to read my blog article called what is salesforce lightning.

What is a Third Party Library

Third party libraries allow developers to build quickly and take advantage of other people’s abstractions to avoid having to spend time working around browser issues or etc. In JavaScript, third party libraries and code reuse are all of the rage. A third party library is basically anything your team personally write and require for your project to work. Continue reading

How to Adapt to Serverless Computing

Adapting to Serverless Computing

Serverless computing is a really new and very trans formative change that allow companies to grow and scale their businesses very quickly. Serverless computing done correctly has the potential to dramatically increase development velocity, and reduce costs. In my blog post, What is Serverless Computing I covered what it is and some of the vendors that are available.

Adopting serverless computing makes a lot of sense for companies, but there are steps that you need to do before you can begin moving to serverless technologies. One of the first things to make sure you and your team understand is that serverless computing is primarily event driven and functional programming has the potential to make things a lot easier. Continue reading

What is a Self Invoking Function

What is a Self Invoking Function

In JavaScript, it’s common to hear lots of strange terminology without a lot of description around what it is or what it does. I want to try and demystify what a self invoking function is and why you should consider them and the times when maybe you shouldn’t consider them. Continue reading

What is Serverless Computing

What is Serverless Computing

In the ten years or so that I have been programming professionally, there’s been significant changes to the way we did things whether it be the way we developed software, the way we managed software, or the environments we used to execute our code. Over time, these changes have become increasingly more and more dramatic to the point where it’s now possible to run a company and maintain almost no actual servers.

For the last 18 months or so, I have been working with “serverless computing” which is an incredibly encompassing buzzword for a lot of different technologies and techniques.
Serverless computing is a very large break from the traditional way we developed software and deployed software to servers. Serverless computing is basically an architecture where code is stored and executed by a fully managed provider. Continue reading

Why JavaScript

Why JavaScript

In the earlier days of the web, there was a battle between two scripting languages VBScript and JavaScript. VBScript, thankfully, eventually died and JavaScript became the dominant language for making really easy to use and interactive websites.

In the years since, JavaScript has become more and more used. Backend code can be written in basically any language, even in JavaScript, but the client side will almost always require a developer with some JavaScript knowledge. Every industry has a lot of javascript and some are even rewriting core functionality to use more. Surprisingly, even large banks and credit card companies are beginning to use JavaScript or Node in big ways. PayPal has been rewriting very large parts of their code base to make it more scalable and usable. Continue reading

How to Use Reduce on JavaScript Arrays

In functional programming, being able to reduce is one of the fundamental concepts.

Reduce is used to iterate through the values in an array and condense all of the values into a single value.

Usually the value is a sum of all of the elements, but it could be used to decrement, multiply or even divide.

What is Reduce used for?

Normally, you would want to use a reduce method when you want to sum all of the values in an array and then use the total for some operation. For example, it might make sense to use a reducer when you want to get the total number of items in a shopping cart and determine the tax or determine how many items a customer purchased.

I like using reducers to avoid having to write boiler plate code for loops and being able to do really simple one line operations.

How to Use Reduce

A reduce method takes in a function as a parameter, and that function needs to take in an accumulator and the current element.

So, basically, a really simple example of how to use reduce is this:

var numberArray = [0,1,2,3]

var accumulatedResult = numberArray.reduce(function (total, currentElement) {
	return total + currentElement;

If we ran this in the developer console of Chrome, we would see this:
Example of a JavaScript Reduce Method

As I mentioned, every element of the array is added together and then the total is available in the accumulatedResult variable. We could write this as a for loop and get exactly the same result if we wanted to but it would be more code:

var numberArray = [0,1,2,3]
var accumulatedResult = 0;

for (var i = 0; i < numberArray.length; i++) {
	accumulatedResult += numberArray[i];

And, if we ran this for code for a loop in the developer console, we would see this:
JavaScript for Loop Compared to Reducer

So this means, that a reduce method cycles through the values in an array – in a way similar to a for loop but it’s able to do some mathematical operations like summing of values and store a lot less variables in code and use a lot less boiler plate.

Advantages of JavaScript’s Reduce Method

  • the reduce method is that it can handle array elements that don’t have a value. Technically the for loop above would crash if there was a null or undefined value.
  • Reduce methods are usually much shorter – and much easier to understand.
  • Reduce methods can be chained together – forEach and for loops can’t be easily which means they can’t really be used too well in functional programming.

How to be a more Efficient Debugger

How to be a More Efficient Debugger

For the last 10+ years or so, I’ve been programming professionally. Even with ten years of practice, I still am unable to write a bug free applications. In this blog post, I have put together some tips on how to be a more efficient debugger and how to actually resolve the issue. A lot of my bugs aren’t as obvious as they used to be, but they are definitely still there. In the book Code Complete, Uncle Bob Martin, suggests that every error is an opportunity to learn. Continue reading

Detecting Inactivity in JavaScript

Detecting Inactivity in JavaScript

In a lot of web applications, it can be really useful to detect whether the user is still active or not. For example, when a user is no longer active it can make a lot of sense to automatically log the user out or remind them that they’re about to be logged out. Continue reading

How to merge Objects together in JavaScript

How to Merge Objects in JavaScript

Merging objects together in JavaScript isn’t very difficult although there’s quite a few different ways that it can be done.

Note, I’m not covering deep cloning for the sake of simplicity although this can be easily done through most of these different methods.

Continue reading

Book Review: Advanced Apex Programming

Advanced Apex Programming

It’s no secret to those that know me that I read a lot and spend a lot of time gathering knowledge and honing my craft. I believe I own and have read most of the books on apex and salesforce that are available right now. Advanced Apex Programming by Dan Appleman is definitely the most advanced book for programming on Salesforce and Continue reading

How I stay informed of Salesforce Changes

How I stay informed of Salesforce Changes

Salesforce does three major releases per year which often include hundreds of changes whether they be bug fixes or new features. Staying on top of what is changing is very difficult as the company continues to expand and is consistently enhancing the platform.

As a professional it’s part of our jobs to stay current on what is available in Salesforce and what may change in the next year or few years. Continue reading