Everyone loves GitHub but the CLI can be a little intimating for newcomers. A couple of days ago GitHub released a client for OS X. The setup walks you through the process of creating a GitHub account (if you don’t have one), uploading repositories and provides a slick little interface for cloning, browsing and managing repos.
If you are on Mac, be sure to download the app and give if a whirl. Salesforce.com is using GitHub more and more so starting getting up to speed on it.
While on my European vacation, Wes Nolte was so kind as to arrange the UK Force.com Developer & Admin Meetup during my time in London. He has a great recap on the Tquila blog.
For such a short notice, there was a really good turnout and we had some very interesting presos on Talend and dynamic Visualforce components. I got to meet a bunch of the guys at Tquila (my new favorite UK mates!) and we attempted to put the pub out of commission but were thrown out shortly before midnight. Fortunately, there were a couple of more pubs open in London so we ran next door.
The next UK Force.com Developer & Admin Meetup is scheduled for August 2nd and Wes and Anup Jadhav are presenting on Team Development Strategies and Tools on the Force.com Platform. Not sure if I can make the meeting but I’ll try.
I didn’t post it earlier but I’m on vacation with the lovely Mrs. Douglas. We are hitting Ireland, Paris and London for almost three weeks. Wes Nolte was so nice as to schedule the Force.com Meetup in London during my visit. Brillant!
My blog will be pretty quiet until I return on the 28th. Cheers!
There are tons of great community contributed projects on Force.com Code Share! I was browsing last week and ran across SQLForce, a command line scriptable tool that provides ANSI like SOQL DELETE, INSERT, UPDATE, SELECT/DISTINCT, and SELECT/UNION commands. The project has been out for a year but I’ve never heard anyone talk about it so I decided to give it a whirl.
Here are some sample SQL statements that you can run:
SELECT Id, Name FROM Account Limit 10;
SELECT Id, Name FROM Account Limit 10 Output '/Users/Jeff/Accounts.txt';
INSERT INTO Contact (AccountId, FirstName, LastName) SELECT Acct, N1, N2 FROM CustomObject__c;
UPDATE Contact SET MailingCountry='USA'
WHERE MailingCountry IN ('United States', 'US', 'United States of America', 'America');
DELETE From Account WHERE Name = 'My Account';
After using SQLForce for about week now I’m in love with it. Here’s a brief video of it’s features. The install is absolutely painless so give it a try.
So continuing with my learning Ruby series, I finally finished my sample app using the Force.com REST API. I ran into a few issues and fortunately Quinton Wall and Heroku support came to my rescue. Apparently require ‘Accounts’ and require ‘accounts’ aren’t the same when running on Heroku. Go figure.
This is a demo Rails app running on Ruby 1.9.2 and Rails 3.0.5 hosted on Heroku. It uses OAuth2 via OmniAuth to authorize access to a salesforce.com org. It uses the Force.com REST API to query for records, retreive records to display, create new records and update existing ones. It should be good sample app to get noobs (like me) up and running.
I forked Quinton Wall’s (excellent) omniauth-rails3-forcedotcom project to get started. One of the things you have to do when using the Force.com REST API is to configure your server to run under SSL using WEBrick. I found some excellent instruction for OS X here.
All of the code for this app is hosted at github so feel free to fork it. I’ve pulled out some of the more important parts of the app for discussion after the video.
app/controllers/accounts_controller.rb
The account controller delegates authority to accounts.rb for integration with Force.com and then packages up the returns for the views.
Accounts.rb does most of the heavy lifting for the app. It prepares the requests to Force.com with the correct headers and makes the actual calls to Force.com with the REST API.
I’ve received a number of emails over the past months regarding “phantom” searches showing up in Google for content that doesn’t exist on my blog. Unfortunately I installed a WordPress plugin that automatically submitted all search results for my blog to Google. I uninstalled the plugin about a month ago but it appears that the search results still exist. If anyone has info/strategies for getting these removed, I would greatly appreciate the feedback.
The Salesforce Handbook is now available on Amazon.com (finally)! Here’s the link to the book. We would love it if some people could add some reviews. That would be really #superfrickinawesome!.
You can still purchase the print and PDF versions of the book at Lulu.com which are a bit cheaper. I guess the Amazon.com premium is for being able to find the book easier.
Wes is working on the Kindle version of the book now so hopefully that will be available shortly.
First of all, if you are not using the Force.com Migration Tool (ANT) to deploy metadata changes… you should. You use the Metadata API to retrieve, deploy, create, update or delete customization information, such as custom object definitions and page layouts, for your salesforce.com org. This API is intended for managing customizations and for building tools that can manage the metadata model, not the data itself.
The easiest way to access the Metadata API is to use the Force.com IDE or Force.com Migration Tool. The Force.com Migration Tool is ideal if you want to use a script or a command-line utility for moving metadata between a local directory and a salesforce organization. A number of new developers on the Force.com platform seem to shy away from using the ANT tool so I wanted to provide a quick tutorial showing how easy it is to use the ANT version. You can find out how to download, configure and run at from the Force.com Migration Tool page.
The salesforce.com Summer ’11 release is due to hit an org near you in the next 30 days. Are you ready? As usual, I’ve scoured through all 71 pages of the release notes and pulled out my favorite features. I didn’t hit all of the items in the release notes so make sure you pull up the PDF and check out all of #superfrickinawesomeness in this release. Also remember to visit the Summer ’11 Force.com Platform Release Preview page for any last minute info.
Jigsaw is GA!
Everyone using supported Salesforce editions (Developer, Enterprise, Professional, and Unlimited ) can search for Jigsaw CRM records. The Free version of Jigsaw provides Jigsaw data to all users, but you need to implement the paid version of Jigsaw to get complete contact and lead data.
Free version users can’t see phone and email information for contacts, and they can’t add contact or lead records to Salesforce.
Jigsaw has it’s own Licenses & Limits, so check the docs for more info.
Chatter Enhancements
Save feed search or topics as a “Chatter favorite” for easy access.
You can now view Chatter feeds on standard and custom object list views.
Use Global Search to find people who are mentioned in Chatter.
When sharing a file with a person or a group, you can choose to give them viewer or collaborator permissions.
Enhanced filters to help you find and view specific groups of files more quickly and easily on the files tab and “select from salesforce” search.
A new Chatter Mobile App for Android (beta) and updates to Chatter Mobile apps for BlackBerry and iOS devices
Organizations with login IP restrictions can now allow specific users and groups to use the Chatter mobile app outside of the login IP range.
Chatter will automatically recommend people in your organization that you might want to follow based on similar interests.
Each new org that enables Chatter will have a special user named “Chatty” that offers tips, tricks, and sample postings to help users get started with the default Chatter groups. Uh…. does this sound like Clippy?
Sales & Service Cloud Enhancements
Salesforce CRM Content Workspaces are now called “Libraries”.
Chatter files are now included in Salesforce CRM Content Searches
Granular permissions for Salesforce Knowledge including “create”, “read”, “edit” and “delete” object permissions for article types.
Workflow rules and approval processes are now available for Salesforce Knowledge article types.
Custom console components allow you to customize, extend, or integrate the sidebars of the Service Cloud console using Visualforce.
You are now able to customize the page layout for milestones.
Analytics
Some operations with the Report Builder load asynchronously, so you can continue to make changes to your report while the preview loads. Asynchronous loading isn’t available for matrix reports.
In Report Builder, you can now select multiple fields at once to add, remove, or reorder.
In addition to posting snapshots to dashboard and user feeds, you can now post snapshots them to Chatter group feeds! A snapshot is a static image of a dashboard component at a specific point in time.
No more “lost” dynamic dashboards! You can no longer save dynamic dashboards to a personal folder.
Security Enhancements
The identity confirmation process has been improved and made consistent across devices. Salesforce now sends a numeric verification code to users instead of a URL for identity confirmation.
Just-In-Time Provisioning with SSO uses SAML to create users on the fly the first time they try to log in with SSO.
Chatter Connect RESTful API
The new REST API makes it much easier to fetch chatter data!! No more need to traverse the byzantine Chatter data model. Relationships between objects can easily be traversed without having to resolve foreign keys!
The API provides access to Chatter feeds and social data such as users, groups, followers, and files.
Returned information is automatically localized to the user’s time zone and language and feed items are structured in a way that makes it easy to render.
Uses OAuth2 and a Salesforce remote access application
Force.com Enhancements
The sidebar in Setup includes a search box for browsing and quickly finding setup tools (not records), a la the Greasemonkey Setup Enhancer. Finally!
The Global Search box now appears in the header of all Salesforce setup pages.
A new enhanced profile user interface to easily navigate, search, and modify settings for a profile.
Deferring Sharing Calculations allows you to suspend automatic group membership and sharing rule calculation until your system has the bandwidth and processing power.
A new System.URL Class which seems to be the favorite new feature for most developers. You can use the methods of the System.URL class to create links to objects in your organization. Objects can be images, logos, or records that you want to include in external emails, in activities, or in Chatter posts.
New limit for @Future method invocations. Per the release notes, “The basis for the computation of the limit on the number of future method invocations changed. In addition to full Salesforce user licenses, Salesforce Platform user licenses are now included in the computation of the limit and Chatter Only, Guest User, Customer Portal User, and Partner Portal User licenses are excluded. The limit is 200 method calls per full Salesforce user license and Salesforce Platform user license, per 24 hours. This is an organization-wide limit. For example, suppose your organization has three full Salesforce licenses, two Salesforce Platform licenses, and 100 Customer Portal User licenses. Your entire organization is limited to only 1,000 method calls every 24 hours ((3+2) * 200, not 105.)”.
Dependent lookups are now GA.
The limit for the maximum number of fields on a custom object has been raised from 500 to 800 fields per object in Unlimited Edition.
The total number of sharing rules per object increases from 100 to 300 in Professional, Enterprise, Unlimited, Developer and Database.com Editions.
There are no longer limits to the number of rich text area and long text area fields that an object can contain, although your Edition’s limit (all editions except Database.com) for the total number of custom fields allowed on an object, regardless of field type, still applies. Now, each object can contain a total of 1.6 million characters across long text area and rich text area fields. The default character limit for long text area and rich text area fields is 32,000 characters. A long text area or rich text area field needs to contain at least 256 characters.
Visualforce Enhancements
Javascript Remoting for Apex Controllers is now GA
Visualforce now allows some methods in Apex controllers to be called via Javascript using the @RemoteAction annotation.
Inline editing on Visualforce pages now supports rich text area fields bound to the component.
Dynamic Visualforce Components – Pilot
Dynamic Visualforce components offer a way to create Visualforce pages that render according to a variety of states, such as a user’s permissions or actions. Rather than using standard markup, dynamic Visualforce components are designed in Apex.
Enhanced Field Sets Editor – Beta
With the Enhanced Field Sets Editor you can now create field sets with a drag and drop WYSIWYG interface. The enhanced editor lets you quickly customize, create or edit field sets for your organization, or edit any installed field set with an improved drag and drop design.
Mobile Phone Verification – Pilot
As part of the pilot, if you get an identity challenge when logging into Salesforce, you are sent an email message with a security code. You must enter that code to confirm your identity.
Salesforce.com allows you to override standard button and links (add, edit, delete, etc.) throughout the platform with your own customized functionality. This is a video which details some of the functionality I outlined here along with the new feature to by-pass the recordtype selection page.
I'm a Senior Technical Consultant at Appirio specializing in cloud-based applications using Salesforce.com, Google App Engine and VMware.
You should be a foster and/or adoptive parent. I'm both and it's fun!! Ask me how.
Buy My Books!
By Jeff Douglas & Wes Nolte
By Jeff Douglas &Kyle Roche
Favorite Quotes
"Any sufficiently advanced technology is indistinguishable from magic."
"Those who say it cannot be done should not interrupt the person doing it."