Tuesday, September 8, 2015

Salesforce Lightning Experience: Learning for Developers

So unless you were hidden under a rock, or have (amazingly) an internet connection worse than mine, then you can't have missed Salesforce's "Meet the New Salesforce" event wherein they revealed the new Lightning Experience. If you did somehow miss it, then go and watch this, checking out @Shawnawol doing what she does best (being awesome), and then come back to this post.

The new-look Opportunity Page

So, it's a new UI. It's built with Lightning (in turn based on Salesforce's open source Aura project), and is a world apart from the current Salesforce UI—referred to now as Salesforce Classic—and uses some very different paradigms. Gone is the old-school server-side page generation, and in is a new world of an ajax and even driven Javascript framework. As you can see in the screenshot above, it's a little different.

Wednesday, August 5, 2015

Dreamforce 2015 is Coming: Get Ready With Trailhead!

It's hard to believe it, but Dreamforce time has rolled around again (I swear I just left yesterday), which means if you've not yet convinced your company that you should be there, then it's time to really start pushing for it.


Not Just Sales

Dreamforce is not a conference focused on sales teams. The purpose isn't to show your clients a good time and close deals. It's not a jaunt for your CEO. 

Dreamforce can be those things, but it's a conference for everyone in the ecosystem, users, admins, consultants, developers and everyone who's even slightly curious about the platform, the products, IoT, Heroku, marketing... you get the idea. It genuinely annoys me when companies only send their sales staff to Dreamforce as they're completely missing the point, and it suggests to me a mentality where development (as in developing people, not coding!) is not high on the list of priorities.

I've written in the past about why companies should send their developers to Dreamforce, and I'm not going to reiterate the points here, but it is a valuable and worthy investment. It is not an expense.

Friday, July 24, 2015

Quick Tips For Creating Email Templates in Test Methods

First up, there's been some radio silence here and for that I apologise, Proximity Insight has suddenly gotten very busy and to boot my daughter was born; turns out babies are a lot more work than coding.

Anyway, to the point. Sending emails from Apex isn't particularly uncommon, but it turns out testing such methods can prove a little tricky. Weirdly with the latest release I'm not seeing any issues in actually invoking the Messaging.sendEmail() method itself, but I was finding it hard to create an email template to use.

Sunday, May 24, 2015

Mobile SDK and KnockoutJS Experiements

As the lack of posts over the last month probably suggests, it's been something of a busy period for me, with a particular highlight being the Salesforce MVP Summit. For me it's not even about the content (which is always fascinating) but really the inspiration to be gained from talking with so many amazing people. It's a group of caring people that never fail to amaze me, and I'm humbled to spend time with them.

Summit aside, I've spent a large part of the month playing around and experimenting with the latest versions of the Salesforce Mobile SDK, which has advanced in leaps and bounds over the last year.

Sync Me

One of the major additions to the SDK over the last couple of years is the SmartSync Data Framework which removes the need for a developer to bother themseles with moving data explicitly via the REST API. Until quite recently the SDK had features such as this enabled in some places but not in others (i.e. for the various platform, native/hybrid/remote hybrid combinations), and with the release of version 3.1 this was all brought together into a unified architecture.

Now with 3.2 (and some more exciting changes coming in 3.3) syncing information and working offline is a breeze, there's a new "Canonical Sample App" that demonstrates how to quickly build a simple app with offline editing support using standard HTML 5 and Web Components via Polymer. If you've not checked this stuff out, then do yourself a favour and have a read of this blog post.

Friday, April 17, 2015

Introducing Gearset: Simplifying Salesforce Deployment

Undisclaimer: Before you get any further, I want to clarify that I was not asked by Gearset to write this, I'm merely doing so because I think the Salesforce.com development community as a whole will benefit from trying this tool out.

It's no secret that while the Salesforce.com platform enables developers to build solutions very quickly, it does have a few weaknesses and from a developer's perspective those have historically revolved around the tools available. Thankfully the publication of the Tooling API had the intended effect, accelerating the growth of community-built developer tools, with tools such as MavensMate that adopted it almost overnight in place of the Metadata API.

The Joy(?) of Deployments 

Deployments have always been a contentious issue to some extent, initially we either had to become familiar with ANT or make do with the Eclipse plugins driven by the Metadata API. I always used the later, though the modal dialog nature of those deployments was incredibly frustrating to deal with: if you needed to tweak a class, or include something else you had to close the dialogs and start the process again, including entering the details of the org you were deploying to.

Changesets alleviate a lot of problems and make deployments possible from the declarative UI, but again they don't always garner favour from developers as driving things through the UI is not necessarily ideal (not to mention the seemingly random times they take to pass through the ether).

These days I tend to use Mavensmate to do my deployments: it remembers connections, makes metadata selection a breeze, and you can do other things while the dialog boxes are open, but there's still a lot of manual effort involved if you need to compare two orgs before deploying. I'm sure that most developers on the platform are familiar with the process of having two local projects setup, updating both prior to a deployment and using a diff tool to compare the files retrieved.

Changing Gears

https://gearset.com/getting-startedThis week I had a call with some of the team at Gearset, and they've seemingly had many such calls with developers in the community because they're specifically looking for input and feedback on what developers don't like about deployments, and what they'd like to see in this application.

In essence, Gearset is a Windows tool—that will soon be hosted online—where you enter the credentials for two orgs, get a breakdown of the differences in the metadata of the them, and can then select what should be deployed from one to the other. That might not sound particularly expansive right now, but it should be stressed that this is a brand new tool and it's already removing a lot of manual steps in the deployment process. If you don't do diffs at the moment then I emplore you to consider doing so, as knowing the lay of the land is critical in any environment management.


Our mission is to make deployment and developer collaboration on the Force.com platform ingeniously simple - Gearset

I encourage every developer reading this to try the tool out, email the team or join their UserVoice forum, and make your suggestions for features and improvements. I wouldn't be surprised if the majority of the ecosystem was using this tool for their Salesforce deployments within the next twelve months.

Related Posts

Monday, March 23, 2015

The Enterprise Patterns on a Diet

Not too long ago I wrote a post regarding Andy Fawcett's book, Force.com Enterprise Architecture, though I must confess it's only in the last few weeks that I've really been getting to grips with the patterns and putting them to use.

Shying Away

One reason I never really looked into the patterns in too much detail (until the arrival of the aforementioned book) is that I like things to be lean, and simple, I'm not a huge OO guy and the idea of having extra classes around was not something I liked the sound of. I recently started working on a new project and thought it'd be a great chance to put the patterns to use, so I headed to the GitHub repo and was slightly taken aback at how much code was required just to be able to use the base pattern classes, i.e. the Selector, Domain and Service base classes.

Lightening The Load

I raised my concerns over the amount of code required to start using the patterns, and we had a Skype chat to discuss the idea of breaking down the fflib-apex-common library, to remove the dependency on the Apex Mocks library (fflib-apex-mocks) and separate out the more 'advanced' features of it.

Friday, March 6, 2015

Lightning Strikes! How To Bottle It

Chances are that if you've not been on a desert island for the whole of the last six months and you're involved with the Salesforce platform in any shape or form, you will have heard of Lightning. I finally built my first Lightning Component, and I've got to say it was quite fun (aside from an issues in my Firefox dev tools where I'd accidentally disabled Javascript error reporting!), and I think it's definitely going to change the way developers work on the platform, not least when it comes to mobile.

Where's The Lightning Framework Used?

Right now you can build Lightning Apps and Lightning Component Bundles, and you can then host those apps inside of the Salesforce1 mobile application using a custom tab. Later on we should see this apps hosted inside of the desktop browser version of Salesforce too.