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.

https://gearset.com/

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.
http://www.amazon.com/Force-com-Enterprise-Architecture-Andrew-Fawcett/dp/1782172998


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.

Thursday, February 5, 2015

Following the Developer Trail: New Trailhead Content

Back in November, I published a guest post from Jayvin Arora on Trailhead, and at the time it was something I still hadn't had a chance to play with myself. Not long after that I signed up, and powered through everything available, not neccessarily beacause it covered content I didn't know, but mostly to see how it works as a learning resource.

Trailhead: Go get started!


Learning With Trailhead


In short, Trailhead is a great way to learn the platform. Not only is the content available presented in a logical and consistent manner, it actually tests you. Not just through questions, but through getting you to write code. It then connects to the Salesforce org you're developing in and actually runs your code to make sure you've completed the requirements. In my humble opininon this is the next best thing to having a person review your code, and obviously a lot faster meaning you don't get held up waiting before the next module. There is an aspect of gamification to the whole process too, where you earn badges and points as you progress through the content, right now I have 4000 points and 3 badges to my name, and hopefully I'll add some more of both this weekend.

Friday, January 30, 2015

The Book All Salesforce Developers Must Read

Read this, it's all but optional.
Last year I had the priviledge of being a technical reviewer for Andy Fawcett's WIP book, Force.com Enterprise Architecture, it was publised in September 2014. It's taken me a while to get around to writing about it, but if you're developing on the platform then you can't afford not to read this book.


Who The Book Is For


This book is primarily focused at developers on the Salesforce1 platform who are building ISV applications and dealing with the trials and tribulations that are managed packages. That said, it should be emphasised that a solid 90% of the content is relevant to all developers on the platform, and even curious admins should not shy away from it; there are some great hints on how to get the most out of the standard platform features which do not require code.

Friday, January 9, 2015

Add a Salesforce Console Component To Your App, Part 2

Ok, so you've read part one of this two-parter and you've got a console component that puts your Visualforce page into the Salesforce console, so what's next? Well all of the integration with the console itself is done via a Javascript API, so as always reading the documentation is a great place to start. It's broken down neatly into sections for different styles of interaction, but I want to call out some of the basics here so that you can get struck straight in (because the deep end is always fun, right?).


Are You In?


First up, it's probably a good idea to find out if our page is indeed being viewed in the console, and as you'd expect (or at least hope) it's very easy to find that out. First we have to include a script in the Visualforce page that provide access to the console API:

<script src="/support/console/32.0/integration.js" type="text/javascript"></script>

Now, in our own Javascript we can call the rather conveniently named function, isInConsole(). Care to guess how that function works? It's pretty much (I've not checked everything) the only function in this API that is synchronous, everything else uses callbacks.

<script type="text/javascript">

    if(sforce.console.isInConsole())
    {
        console.log('Hello, Console!');
    }
</script>

Friday, December 12, 2014

Add a Salesforce Console Component To Your App, Part 1

The Salesforce console (originally service, and now sales as well) is something that's always been on my radar but not something I'd ever used until last week. If that sounds like a familiar story then I really do urge you to check it out, a little customisation and there's a good chance you'll find it suits your work patterns better than the regular UI, and if it's not something you've considered for your app, you really should do.

Over the last week I've been adding console support to both CrowdGuide and Ring My Bell, and at first I found things a little confusing as it turns out there's not a heap of developer-focused information out there, so I'm writing up this short list of pointers to help others get started on the same path.

Ring My Bell in the Salesforce Console