Arrive alive
Arriving at London after a 4-40am start we made our way through the ExCeL building that had been taken over by Salesforce for the day, found registration and duly collected the holy grail, a Costa coffee gift card with £5 on it. After downing the coffee we gathered we set off to the main keynote speech. The keynote was fairly slick as you would expect, but not really aimed that much at developers, it was more of a sales pitch. An effective sales pitch needless to say, but a sales pitch nevertheless. Themes which would run through the day were hinted at including the social content integration of chatter and the gamification of Rypple (think Steam achievements). Thankfully, for me and my developer geek side, more interesting things were to come later.
Battle Plans
After the keynote presentation finished, I wondered off to my preferred event. Needless to say I was focused on tech. I’m not a Salesforce expert and thus I wanted to start from the basics. I decided I wanted the initial dev keynote, theforce.com introduction and the streaming API session.
Dev keynote
The dev keynote was fairly general but hinted at some interesting things, such as the Rypple stuff, and discussion of the kind of money one can make building Salesforce apps. There was lots of talk about how developers need to be able to focus on creating and not so much on building servers (in the same way that these days we use Frameworks to avoid boilerplate code). There was some discussion of Heroku and how one can set up a site from a template athttp://java.heroku.com and hook that into Eclipse and Git, and use that to very quickly create simple apps.
Mobile
Looking at what was happening in mobile, it turns out that Salesforce has a more touch-specific interface at http://touch.salesforce.com which provides big buttons and touch gestures. There was also a fairly in-depth discussion of the mobile SDK, which supports IOS and Android for native/hybrid apps, and of course any platform for pure HTML5 apps. Interestingly, using the native apex form widgets is discouraged, and a lot of the build around html5 apps seemed to be just straight HTML with Mobile JQuery (which is awesome by the way) connecting to Salesforce via REST (database objects can be accessed via REST and directly manipulated that way) to create a richer interface. There is a downside to this technique, which is that each call uses up 1 API call from your limits, which may mean you can’t poll too often. One useful tip offered was that we should make use of standardstylesheet=”false” (see documentation) to disable the standard (rather bulky) stylesheets in favour of our own lighter mobile-oriented styles, should we be coding on force.com and not connecting over APIs. I could see this approach being useful for non-mobile apps too, as it might allow us to use Salesforce as big storage and create a more interesting presentation layer over the top of that, maybe letting Salesforce do the big calculations and collation of data and leaving you to present this to the user in new and interesting ways.
A brief aside on JQuery Mobile
Like many developers, I love JQuery. Having been around in the bad old days of getElementById I can appreciate the wonders of css selectors, and all the lovely helpers for AJAX requests that JQuery provides. I also knew of JQuery Mobile’s existence. The big highlights were the ability to bind to various touch gesture events (swipeleft, swiperight, tap, taphold) as well as changes in the state of the device (orientationchange, offline, online) and user actions like scrollstart, scrollstop. One thing I was less keen on (which may just be how they were implementing things at the demo) was the mushing of multiple pages into one within the HTML, which reminded me of the bad old days of WML and its decks and cards (I was there fresh out of university in 2000, I built an awesome web app which worked on every phone in the office [bulky, black and white, mostly Nokia], then the boss tried it on his and it didn’t work, turned out forms didn’t work on some gateways, and with that we consigned WML to the dustbin of history).
The Cool Bit – Streaming API
The first thing is that using the streaming API doesn’t count towards your API call limit. That’s nice, and will extend the range of what I can do with Salesforce. The second interesting thing was http://workbench.developerforce.com which is a bit like JSFiddle, but for Salesforce. Our host showed us how one can build a topic from SOQL (the Salesforce version of SQL) and then using CometD libraries available for all the languages I use (smart move) I can retrieve data in real time (well, within 3 seconds) which isn’t bad. The page will update instantly on acquisition of new data. Now of course, this got me thinking. What if our case list updated automatically while we were viewing it? What if notifications (Facebook-style) let us see when something has happened outside of our view? Running a sales department? Why not have a projector showing a live constantly-updating leader board, perhaps with Steam Achievement-style icons being awarded to individuals who do something cool? All these are possible applications of the system. I can see so many exciting possibilities here; we can build things that will really help businesses to be more efficient, their employees to be more engaged and their customers to reach. And with that in mind we made our way back to Bristol after an insightful event.