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

Friday, November 21, 2014

Thimbleweed Park: Backing a Dream

TL;DR; BACK THIS NOW. In fact, do that, and THEN read this.

Update: 25/09/14

Ron and Gary hit their goal! At the time of writing they are around $15k over their target, but that doesn't mean you shouldn't back this game if you haven't done so already. Now that the main fundraising target has been hit, we're talking stretch goals, and these are more than worthy of your money, especially if English is not your first language or if you fancy playing Thimbleweed Park on your iOS or Android device using "jab & smoosh" technology. Keep up with the love people, and maybe we can all play the games we want to once again!


Original Post


While I love the never-ending evolution of computing and the systems we use, there's still a time and a place for machines, games and ideas from the past. Old does not mean defunct, even if you're not going to be using those machines to run your business. I suspect there's more than a few developers in our community, around my age, who spent the late 80s sand early 90s playing Lucasfilm (which became Lucasarts) adventure games. If you're not in that group it's never too late, but if you were I'm pretty sure you'll hold Monkey Island in the highest of regards, and you'll know it all started with the seminal Maniac Mansion.


Things Lost


This was the first screen I ever saw of Monkey Island
One thing that's always bugged me is that I'll never be able to play Monkey Island for the first time again, and if you haven't then I'm most definitely jealous of you. Extending that, for the last 15 years or so I've been gutted that I won't get to play a new Lucasfilm adventure ever again. I use the company name purely because they made, in my opinion, the greatest adventure games by far. That they did so has a whole lot to do with the fact that they had the SCUMM engine, created for Maniac Mansion by Ron Gilbert. Ron and Gary Winnick created a genre with Maniac Mansion, and then Ron went on to create Monkey Island which is game I've loved since first sight; and yes, I do remember the first time I saw it.