Monday, December 28, 2009

S-Control Deprecation

From the Blog:

S-Controls were labeled as deprecated in the Spring ‘09 release. With the upcoming Spring ‘10 release, we will be taking the next step in S-Control deprecation. Read the S-Control Deprecation article for more detail on what will and what won't change with the next phase of S-Control deprecation.

Friday, November 27, 2009

Dreamforce 2009: How to Write Good Unit Tests in Code

In addition to presenting the Creating Rich User Experiences session at Dreamforce 2009, I also presented a session on How to Write Good Unit Tests. I was really happy with how the session turned out - after the session, a couple of attendees told me that they were surprised that I was so enthusiastic about a topic that they had considered to be complete drudgery. They said that they were excited to go back home and start applying the tips that I had provided.

If you haven't already, I encourage you to check out the video, read the accompanying How to Write Good Unit Tests article, download the slide deck and play around with the sample source code from the session.

Dreamforce 2009: Creating Rich User Experiences Using Google Visualizations and Adobe Flex

The content from the session that I presented with Nick Simha at Dreamforce 2009 is now available. The feedback that we received on the session was pretty great, so I hope that you'll check it out!

In addition to the video and slide deck, be sure to check out all of the great session resources that we put together.

Wednesday, November 04, 2009

Introduction to Developing Commercial Applications on

If you're thinking about building a new application on, be sure to check out the new How to Develop Commerical Applications on blog post.

Tuesday, September 22, 2009 as Google Visualization Data Source

From the Blog:

Did you know that you can configure apps to act as a Google Visualization Data Source? This means that you can now publish data from your org to the internet where it can be easily consumed by various Google Gadgets and Google Visualizations - not just on your website, but on any website that supports embedding the gadgets or visualizations.

Much of your company's data probably should not be published out on the internet, but you can certainly imagine a number of situations where exposing some of your company's data could be very beneficial.

For example, if your company is putting on a user conference, your marketing team might want to expose some of the attendees' demographic data so that the conference attendees can create heat maps of shared geographic locations, shared topics of interest, etc.

Or your sales team might want to expose a list of its most popular products so that your customers can see what other customers are buying - similar to the way that Amazon publishes lists of its bestselling items.

Or your support team might want to expose its call volume data so that customers know when they're most likely to be able to speak with an agent directly.

There are many additional reasons why you might want to publish some of your company's data to the internet. Once you do, your customers may just innovate and come up with additional uses for your data that you had never even thought about. Learn more about exposing your data as a Google Visualization Data Source.

Tuesday, August 18, 2009

Google Visualizations Project Update

Over on the blog, I mentioned that the Google Visualizations project has been updated on Code Share.

The updates include a couple of new visualization components, including a Hierarchical Chart component that can be used to visualize Account hierarchies and Contact hierarchies out of the box. In addition, the test coverage for the entire project has been increased, and there are many new code samples - so there's something for everyone!

Monday, August 10, 2009

Optimizing Standard Detail Pages That Contain Visualforce Pages

I just posted a new tip on Optimizing Standard Detail Pages That Contain Visualforce Pages over on the blog. Check it out, and let me know if you have any questions.

Thursday, July 30, 2009

How to Write Good Unit Tests

From the blog:

If you’ve written Apex Code and deployed it to production, then you’ve encountered the 75% code coverage requirement. In order to help you achieve (and hopefully exceed) 75% code coverage, I’ve written an article that introduces some of the most important concepts for crafting good unit tests. It explores the proper structure of unit tests, the code scenarios that your unit tests should cover, and the properties of well-written unit tests.

One property of well-written unit tests is that they are thorough. Good unit tests exercise your code in expected conditions, and in unexpected conditions. One unexpected condition that you may have encountered, is when your code deliberately throws an exception because something out of the ordinary has happened. It’s not necessarily obvious how to write a unit test for this scenario, which is why my article demonstrates this useful pattern:

static testMethod void verifySpecificExceptionIsThrown() {
/* Set up all conditions for testing here. */

/* Call the method being tested here. */
catch (SpecificException e){
// If the expected SpecificException is thrown and caught,
// then the test was successful and we can exit.

// If the expected SpecificException is not thrown and caught,
// then fail the test.
System.assert(false, 'A SpecificException was expected, but was not thrown.');

To learn more, and to see this particular pattern in action, read How to Write Good Unit Tests.

Saturday, June 27, 2009

Google I/O: as a Google Visualization Data Source

The video from the Google I/O session where I spoke about as a Google Visualization Data Source is up on YouTube. It's been viewed a number of times already - I'm glad that so many people are interested in Google Visualizations and! The discussion specific to starts at about 32:00.

You can also download the accompanying slide deck from the Implementing your Own Visualization Datasource session page.

Wednesday, May 27, 2009

Google Code Blog - Guest Post

Google just published a guest blog post that hints at the exciting announcement that we'll be revealing during our upcoming Google I/O session:

... will be co-presenting a session at Google I/O that will discuss how to embed the power of the Google Visualization API in business applications, and how to turn a application in to a Google Visualization data source. We hope to see you there!


Monday, May 18, 2009

Speaking @ Google I/O

I'm really excited to be speaking at the upcoming Google I/O conference! Here's my speaker blurb:

Jesse Lorenz is a Technical Evangelist at, focused on inspiring independent software vendors, product teams and other partners to architect and build innovative applications on Jesse is one of the authors of the Google Visualization Component Library for
Nir Bar-Lev, Itai Raz, and I will be discussing the Google Visualization API.

Thursday, May 14, 2009

Are You Having Problems Sharing?

From the blog:

The number one rule in life for author Robert Fulghum is to "Share everything." Your application is one place where it’s okay to break that rule and not share everything. That’s why allows developers and administrators to control access to data at many different levels. You can control access at the object-level, the record-level and even at the field-level. In the vast majority of cases, the appropriate sharing settings can be defined declaratively by simply pointing and clicking. In some cases, developers may need the ability to define even more sophisticated sharing settings, and this is where Apex Managed Sharing comes in.

Apex Managed Sharing allows you to use Apex Code to build sophisticated and dynamic sharing settings that aren’t otherwise possible. For example, a developer can use Apex Managed Sharing to write a trigger that will automatically share a custom object record with a user that has been specified in a lookup field. You can also use Apex Managed Sharing to write custom Visualforce controllers that implement your sharing logic.

After an introduction to sharing, the accompanying article looks at the components of Apex Managed Sharing, and how you can use Apex Managed Sharing in your own applications. The article, Using Apex Managed Sharing to Create Custom Record Sharing Logic, also provides sample code for the trigger described above.

Apex Managed Sharing is a really interesting aspect of It enables developers to build some very innovative applications.

Wednesday, May 06, 2009

The Fastest Path to SaaS: Technical Overview for ISVs

From the blog:

CTOs, Architects, VPs of R&D, Product Managers, Developers and other Technologists at companies that want to build and sell SaaS applications should attend this Monday's "Fastest Path to SaaS" webinar. During this webinar, we will examine the obstacles to success that companies traditionally encounter when they try to build and deliver applications in the cloud. We'll take a look at the platform and explain why solves these problems. (Hint: is the fastest, most trusted and most complete platform for building and delivering applications in the cloud.) We will also discuss a few examples of the many companies that have already achieved success by building their applications on Register now to learn more about why is the Fastest Path to SaaS.
If you're a technologist at an ISV that wants to deliver SaaS applications, be sure to check it out. I'm interested to know what you think of it. Are there any topics that we should add, or cover in more depth? Is there anything we should remove? Did the webinar convince you that building and delivering apps on lets you focus on innovation and not infrastructure?

Friday, April 24, 2009

Phoenix User Group Meeting 4/23

Big thanks to David Gildar for leading the Phoenix User Group meeting last night. It was great to meet a bunch of local users.

I enjoyed iLinc's demonstration of how their web conferencing software integrates with salesforce. And Dan England gave a great demo of Informatica On Demand. If you're using the dataloader to get data in to or out of, you should definitely check out Informatica On Demand. It was the #1 Data Integration Service for last year and it's free!

I'm already looking forward to the next User Group meeting. If you're local to Phoenix, I hope to see you there! IDE 15.0.2 Now Available

From the blog:

"You'll want to install the latest version of the IDE. This maintenance release for Spring '09 includes several fixes and is highly recommended. For more information, check out the release notes."

The Deploy Applications to Production Faster wiki article was updated in the process as well.

Tuesday, April 14, 2009

How to Build an App on

If you're curious about what it's like to build an app on, I recommend watching the video from the in Action - Fast Application Development in the Cloud session that was presented at Cloudforce London. It's an outstanding introduction to many of the services that provides to business analysts and developers for free.

If you're inspired by the session and want to get your hands dirty, the exercises in the developer workbook are a great way to get started building apps on

The other session videos from Cloudforce London can be found here:

Thursday, March 05, 2009

"Zero" Creates Brilliant New Business Models

If you understand where the zero fits into the business model, then there are plenty of business models that work great.
It makes plenty of economic sense for certain things to be free and then the scarce goods are what you charge for. The trick is enabling a business model where the infinite goods make the scarce goods you control more valuable. This is absolutely possible for any business -- and, in fact, failing to understand how you do this will most likely doom your overall business.

One simple example of this is to use that item that "costs" zero as a promotional good for something that does not have a zero marginal cost.

The band No Doubt, is giving away their entire catalog of music as a download, for folks who buy certain concert tickets.

Thursday, February 12, 2009

SaaS vs. On-Premise: What Did You Do This Weekend?

Here's a tweet from customer Jeff Grosse:

I'm glad that is performing an upgrade to my CRM system tonight so I don't have to.
Compare that with Dan Blake's description of upgrading Microsoft Dynamics CRM 4.0:

We’ll be installing the update to the update in the CourseMax data center this weekend. It’s a pretty involved process. Here is the process we’ll go through:

  • Apply the update in the sandbox
    • Since our CRM server roles are split up, we’ll have to install it four times
  • Run through the test plan on all four servers
  • Apply the update on the production servers
    • Six different servers this time
  • Run through the test plan again on Production
... This is also why I’m not really comfortable yet with the 2 month update cycle. I like to keep current with updates but it is a lot of work. Keep in mind that this is in addition to the testing and updating we do for our own software. If we would have installed the first version of Update Rollup 2 we would have had to go through this whole process twice within a month [emphasis added].
This might be the most compelling argument for SaaS I've heard - you get to keep your weekends!

Monday, February 02, 2009

He's the DJ, I'm the Wrapper Class

A common request on the Visualforce developer board is to be able to display a selection check box next to every record in a table. Check out these two posts on the wiki for details on how to use a "wrapper class" to accomplish this requirement.

Also, be sure to check out this classic:

Wednesday, January 28, 2009

Cloud Connect Recap

In case you weren't able to attend Cloud Connect in person, Ryan Marples put together a great recap video from Cloud Connect.

Sunday, January 18, 2009

Cloud Connect

I'm going to be at the Cloud Connect Event Tuesday - Thursday of this week. Drop by the booth and say hello if you're there as well.

Wednesday, January 14, 2009

Why You Must Put Your App Under Version Control

Without a version control system, your software development process will not be efficient. And that's the best case scenario - I've seen software development projects fail because version control wasn't used. As a result, I became a version control disciple.

My first experience with CVS was at university during my first major collaborative development project. Throughout the project, my team was very diligent about checking code in to CVS after every significant code change. We regularly ran integration tests and this meant that we always had an accurate understanding of our progress to date. However, it wasn’t until the last day of the project that I really learned the value of version control.

On the due date, my team was feeling calm and confident about our work. We had completed development of all the required features ahead of schedule, and we had already added a number of bonus features. The experience of the team sitting next to us in the computer cluster was a stark contrast to ours.

This other team hadn’t bothered to set up a CVS repository for the project as had been suggested by our instructor. Instead, they had used email to exchange updated code over the course of project. To make matters worse, they had waited until the day before the due date to perform their first full code integration. It was painful to watch them flail against the bugs that they kept discovering. When my team left the computer cluster that evening, it was obvious that the other team wasn't going to be able to submit their project before the midnight deadline. Since then, I’ve used a version control system for every project that’s lasted longer than a day - including projects that I've worked on alone.

I feel a sense of accomplishment every time I check additional functionality in to a project. I also enjoy peace of mind, knowing that I can always revert to an older version of code if my current development direction doesn't work out. It’s so easy to put your entire application under version control and the benefits are so great, that I can’t think of any valid reasons for not doing so. To prove how simple it is, I recently recorded a video that demonstrates adding a project to a Subversion repository in less than 90 seconds:

Tuesday, January 13, 2009

Success Tour - Washington D.C.

If you're going to be at the D.C. Success Tour this Thursday, be sure to say hello. I will be co-presenting the "Become a App Builder" session.