Wednesday, November 20, 2013


Wikipedia says salesforce was started by oracle executives, and announced a 2013-2022 partnership with oracle products, and was based on a Customer Relationship Management (CRM) service but has since branched out to many sales, service, data, collaboration and custom offerings.

Wikipedia says is a cloud computing platform as a service offered by salesforce that developers use to build multitenant applications that integrate with salesforce. The tenor of the wikipedia article is negative. redirects to which offers a demo and free trial both of which require phone/email sign-up. But they're just suckering you as it's just a public youtube video (sounds a bit markety). I found the free-trial signup brittle. I had to close it and start over to get past an unresolvable error. Afterwards they point you to for documentation.

The free trial seems to be of salesforce, focused obviously on contacts and sales. It makes little mention of or developers. From the "yourName" dropdown near the top right there is a link to the "Developer Console" which seems to be an interface for writing and testing Apex Code which is salesforce's custom java-like on-demand programming language.

Also near the top right in the "Sales" dropdown is a link to which seems to be what I'm interested in. After following a bunch of dead links I came accross the Workbook which seems to describe how to create a database and an app. It claims that you can create/use:

  • A database to model the information in the app
  • A user interface to expose data and functionality to those logged into your app
  • Business logic and workflow to carry out particular tasks under certain conditions
  • A public website and mobile apps to allow access to data and functionality
  • A native social environment that allows you to interact with people or data
  • Built-in security for protecting data and defining access across your organization
  • Multiple APIs to integrate with external systems
  • The ability to install or create packaged apps

To use the tutorial you need to sign up for a developer account at That's the same link as the signup available from Again with the brittle process. It seems if you do anything wrong in their form, you have to shut the window and start over. This time it was upset that I was trying to signup with the same username that I used in the non-developer account. Actually they just have weird error messages. In fact your salesforce account is your developer account.

Hello World

The following is derived from "Create an App and Database" in the salesforce workbook.

On salesforce, data objects (that you might think of as database tables) are called "custom objects". An object comes with standard fields and screens that allow you to list/view/edit, but you can add your own functionality.

To create a simple app, login to salesforce. Click "setup" in the top right. Then in the sidebar naviagate to: Build > Create > Apps. Click "quick start" in the main page to launch the "App Quick Start" wizard. Arbitrarily fill out the fields and click "create". The app is now available from the drop-down menu at the top right. It appears to be a default GUI on top of a default database table. To edit the app use the flyout menu at the center-right.

While this app looks trivial, it comes with a bunch of features like full-text search, feed (for social interaction), recycle bin, ownership-based record sharing, activity managment, live chat, and it's mobile-ready both as HTML and as a native app.

An app is really just a bunch of collaborative functionality around some arbitrary structured data. It's basically a glorified spreadsheet.

To customize our table navigate to: Setup > Create > Objects > yourObjectName > Custom Fields & Relationships > New. The wizard helps you select: data type, label, length, description, help text, weather it is requried, and a default value.

Once you've created your data objects you can import to them by uploading CSV files.


This seems like a GUI to build a database table for people who don't know about databases and don't know how to write the code to access them. It seems that your GUI and use-cases are rigidly restricted, but you get a tonn of functionality for free, so if your use-case does align with their expectations, you'll save lots of effort.

One of the things that aggrivates me about systems like this is how non-fit-to-purpose they are. For example when you hover over an entry in "the recent items" sidebar you get a popup with info about that item. The title "Merchandise" exists in a fixed width area. There isn't enough room so it appears as "Merchandis" on line1 and "e" on line2. I guess that's the trade-off for all the free functionality you're getting.

Salesforce was created from the Oracle database, and everything is data centric. You tell it about some object (tables) and some other objects (realationships between those tables) and it auto-generates an add/edit/view GUI with search/ownership/social/etc. In this respect is is both very powerful and very restrictive.

Gartner says: "The portal capabilities of continue to be well-hidden. While Salesforce Communities may imply an effective, alternative approach to achieving portal goals without traditional portal software, today's customers don't often perceive the potential to serve as a unified point of access to relevant information and business processes from a wide range of sources. ...fully live, mature and productive portal implementations supporting complex scenarios are still a relative rarity."

Advanced Features

The following is derived from "Customize a User Interface" in the salesforce workbook.

A custom object tab in an application is a navigational element that, when clicked, displays data for the corresponding object. When you create a custom object, its tab comes with an "All" view that lets you page through the table and order by alphabetical, recently used, etc. You can easily create a new view with simple selection criteria, like showing only closed invoices. When creating a view you get to select which columns will be displayed. Note that rows from views are editable inline. Double-click a cell to edit its value in a popup.

Most elements on most pages can be positioned by drag and drop within rigit one-column or two-column layouts.


Personally, I hate this kind of application. Way too many options. Way too much noise. No clean lines. Not fit-for-purpose. I realize that it's general applicability makes it affordable, but that is also what reduces its value (hence making it affordable). Which is not to say that just because some alternative was expensive that it is any better.

{ "loggedin": false, "owner": false, "avatar": "", "render": "nothing", "trackingID": "UA-36983794-1", "description": "", "page": { "blogIds": [ 468 ] }, "domain": "", "base": "\/michael", "url": "https:\/\/\/michael\/", "frameworkFiles": "https:\/\/\/michael\/_framework\/_files.4\/", "commonFiles": "https:\/\/\/michael\/_common\/_files.3\/", "mediaFiles": "https:\/\/\/michael\/media\/_files.3\/", "tmdbUrl": "http:\/\/\/", "tmdbPoster": "http:\/\/\/t\/p\/w342" }