Monday, September 29, 2008

What is SaaS?

Ladies and gentleman: the story you are about to read is true. Only the names have been changed to protect the innocent.

Pencil Pusher: All right, JP, you keep mentioning SaaS in your email and PowerPoint slides. What is that?

JP: SaaS is an acronym for “Software-as-a-Service”.

Non-comprehending stares from everyone in the room.

JP: Ok … SaaS is a business solution that has been gaining popularity over the last few years. It usually refers to a web-based application that runs in your browser. Contrast that with client server applications, that run inside our corporate network, through on-premise equipment that we've purchased.

BIG CHEESE: Why is that better?

JP: There are a lot of benefits. One of the biggest benefits is that there is nothing to install.

PENNY PINCHER: So? How long does it take to install an application? You pop in a disk and it loads.

Peter Parker’s “spider sense” would be tingling right now. I move the discussion to the white board, with lots of colored markers –- they like it when I use lots of colors.

JP: Ok, this is your Portal Server. These are file servers, they house the content repositories. This is the email integration application that sits between the portal server and our email exchange server; it allows customer emails to be uploaded directly to the appropriate CRM applications, based on the email content. This is the storage server, which holds all the data. Here’s the database application which ties these systems together. What am I forgetting? Oh yeah, this is a Security server – which makes sure that this content is accessed only by authorized personnel. This is the VPN application, Firewall, and all the stuff that allows our remote sales and service teams to access this--.

Someone’s iPhone starts blarring …

JP: Good point, thanks for bringing that up. This is the mobil delivery server. It is the interface between your iPhones and Blackberry devices, and all this other stuff.

Really getting into it now, I started drawing stick figure people …

JP: These are the IT staff. The research, select, install and maintain all this hardware, along with the software that goes with it. They work night and day to make it sure it is compatible with all the other stuff on this board. When a component goes bad, they replace it. When a system upgrade is required, they test to make sure there are no interoperability issues. Take all of this equipment drawn here, and double it -– in two different data centers on two different power grids. We need that redundancy to ensure 24x7 uptime, for our support and remote field service teams. For all this equipment, we maintain spare parts and inventory. We also maintain annual service contracts with the system vendors. Hundreds of hours are spent maintaining this equipment, by specialists in various areas of our IT department. Hundreds of thousands of dollars are spent on the infrastructure and support.

My whiteboard was a work of art. I wish I’d taken a picture of it. Instead, I looked at each of them in turn, slowly. Then, with a few sweeps of the magic eraser, my drawing vanished. I drew a cloud.

JP: This is SaaS. This is Salesforce.com. They own the hardware. They own the software. They manage all that equipment, in fully redundant data centers. They take care of all upgrades, resolve all integration issues ... everything.

I’m getting good at drawing stick figures now. I connect a few stick figure people off the cloud, talking on cell phones, typing at terminals … made a horrible rendition of the globe, but I think it was recognizable. I plopped a few of stick figure people in Mexico, Colombia, Argentina, Germany, Japan.

We “rent” from Salesforce.com, with a “monthly per user” pricing model. Through our rental agreement, we can access OUR hardware on THEIR systems – from anywhere in the world. Anywhere there is internet connection.

PENCIL PUSHER: Trade-offs?

JP: Once upon a time, SaaS had a reputation for being highly rigid. You couldn’t customize it as easily as, say, an ASP model or in-house solution. But as you’ve seen with Salesforce.com, we can customize it heavily. We integrate Salesforce with our internal ERP systems, as well as our email and file sharing servers. With tools we have available from Salesforce, there’s truly nothing we can’t do.

SaaS. No hardware. No Software. Any questions?

BIG CHEESE: No questions.

Thursday, September 25, 2008

Calendar Application in Visualforce


Check this out (click to enlarge)! It’s my latest Visualforce application, written with a little help from Ron Hess (Developer Evangelist, Salesforce.com).

Background: Our Customer Support organization schedules periodic Maintenance Windows with our customers. During these scheduled events (usually late evening / early morning), our Support team assists the customer with hardware / software upgrades, mass configuration changes on their equipment, or other “professional services”. Like any organization, we are resource constrained, so we must be careful to not overlap more than 2-3 maintenance windows during the same time period.

Project Need: The Support team wanted an application that allowed them to view all maintenance activity in a monthly calendar format.

Here’s a screenshot of the custom tab, which uses Visualforce and Apex in it’s design. In Calendar mode, the user can see all the activities scheduled for the entire month. They can view activity from previous months, or future scheduled activity, at the click of a mouse.

Each scheduled item is color coded, based on the status of the maintenance activity:

- Black: Requested
- Blue: Scheduled / Resource Assigned
- Green: Success
- Red: Fail / Problems Encountered
- Olive Green: Cancellation

The color-coding updates automatically, whenever the case detail record status changes. For instance, when scheduled (blue) activity is finished, the Support Tech updates the status field in the Maintenance detail record. When this Calendar page is refreshed, the URL link to that activity changes from blue to green.

The Support Managers find this format much more practical than the custom Report / Dashboard views we had created for them previously. Those reports/dashboards provided the same information, but seeing the data in Calendar format is so much easier for them to see what's happening, and when.

This view helps prevent the scheduling of too many maintenance windows in a single night (although I'm going to add an Apex trigger to more tightly enforce that). The Calendar view also allows the support managers to look back at previous months, and see the volume of activity they've worked, including customer cancellations, failed activities, and successful acitivities. The data has always been in Salesforce, we're just displaying it in a different, more intuitive format -- and that's made a huge difference.

I mentioned earlier that this application was written with the help of Ron Hess. In truth, Ron unknowingly helped “jump-start” this project with his detailed post on the Salesforce.com Community forums. It's an old post, dating "way back" to April 2008. In that post, Ron provided some source code for a small calendar application he was using in conjunction with the Event object. I took snipets of that code, expanded on it, and my own calendar page then fell together quite easily.

That’s another great feature of Salesforce.com – the community forums are a great resource for getting information, ideas, and project “jump starts”.

Wednesday, September 24, 2008

Are you effective, punk? Well? Are you?


According to The Effective Executive In Action, an effective executive:

  • Manages their time

  • Focuses their efforts on making contributions

  • Makes their strengths productive

  • Concentrates their efforts on those tasks that are most important to contributions

  • Makes effective decisions

…and leaves you the following questions:

“What am I getting paid to do? What should I be paid to do if I am being paid for getting the right things done in my position? Am I doing things that I shouldn’t be doing?

Eliminate or reduce the activities that do not contribute to effectiveness, the things you shouldn’t be doing. What are some of these activities?”

Tuesday, September 23, 2008

Monday, September 22, 2008

Ripples of the Wall Street Meltdown


Last week, there was enormous turmoil in the American financial system, triggering a Meltdown on Wall Street. For a lot of Tech Geeks, it's difficult to appreciate the impact of this Meltdown.

Consider Merril Lynch, which is now being acquired by Bank of America. Last year, Merril Lynch became one of Salesforce.com's largest customers. With 25,000 user licenses, they were larger than Cisco and Dell (with 15,000 users each). At the time, it was heralded as a mega-deal, and even prompted Salesforce.com to release a custom "wealth management edition", to go along with it's Salesforce Automation and CRM application suites.

Salesforce.com clearly has been making a push into the financial services industry, and now includes companies like Dow Jones Newswire and SunTrust Banks, but Bank of America is not a significant customer. I wonder what will happen to those 25,000 user licenses, now that Merril Lynch has been acquired by Bank of America. Some of that decision may hinge on how favorably Salesforce.com CFO Graham Smith's presentation to the Bank of America Investment Conference was received. You can hear his presentation here.

One thing is for sure, the Force Monkey Hotline has been ringing heavily the past two weeks. Three different head hunters called, looking for Project Managers and/or Developers with expertise in Salesforce.com. Their contracts were all in New York City, and all for companies in the Financial sector. One of them was already flying in a contractor from Denver Colorado every week.

The ripples of the Wall Street Meltdown have just begun, and I think we're going to be feeling them for a long time to come. As Wall Street consolidates, expect to see lots of infrastructure consolidation projects. These will be large, long-term projects, lasting several years. Project Managers will be in greater demand, especially for those experienced in system integration.

What about you? How has the upheavals on Wall Street affected your company? What impact do you predict from last week's events -- on the economy, in the IT sector, on your company, or on you?

Wednesday, September 17, 2008

Would you pick an Airline because it offers Internet?

In my current business, I don’t fly very often, but this November I’ll be flying coast to coast so I can attend Dreamforce 2008. I’ve already booked my flight on Southwest Airlines, but after reading a recent New York Times article (Internet in the Sky: Surf but Don’t Call), I’m regretting that. According to the article, American Airlines began offering in-flight internet, but is errecting “technological barriers to block Skype and similar software programs from enabling voice calls”.

Whoa … hold the phone! Did you just say that American Airlines offers in-flight internet? And they’re currently the only airline offering this service?

I’m geek through and through, and love the fact that I’m completely wired into the web. Whether I’m on my internect connection at work, my wireless connection at home, a WiFi connection at the coffee shop, or checking email and twitter from my Blackberry.

Sure, I take vacations with my family, and I schedule a long weekend escapes from work. During these occassions I am always unplugged, off the grid, and completely inaccessible. But once I’m back in “civilization”, I need to be wired constantly. I’ll go through withdrawals if I’m not able to IM friends and colleagues, or connect to my various Cloud applications.

In the past, a plane flight meant 2-6 hours of my being forced off the grid. Mentally, that just drove me nuts. I’d prepare for the flight by printing out a bunch of tech articles to read, some work-related documents, and maybe pack a user guide or reference manual. Light geek reading. Be the end of the flight, these documents would all be tattered and covered with jotted notes I’d made during the flight: “Discuss with Jack.” “Forward to CRM steering committee”. “Google this.” “Google that.” “Review benefit / impact to XYZ dept.” I couldn’t wait to power-up my Blackberry, as soon as we landed, and I’d be twitching as I searched for that first public WiFi connection.

Six hours isn’t really a very long time – but spending those hours stuck in tiny seat (usually wedged between two “larger” passengers on either side) with nothing to stare at except the seatback in front of me … torture. If an airport terminal has several airline vendors vying for my business, and only one of them offers in-flight internet … it’s a no-brainer for me. American Airlines just became my preferred airline.

What about you? Would you choose an Airline over competitors, principally based on it’s offering of inernet service?

Tuesday, September 16, 2008

Cloud Computing Joins the S&P 500

I’ve been watching news blurbs and press releases about Salesforce.com being added to the S&P 500 with passive interest. Interest, because it’s Salesforce.com. Passive, because I’m not enough of a finance geek to know how big a deal this is, or what it really means.

The big news is that Salesforce.com is the first Software-as-a-Service (Saas) company to be placed on Standard & Poor’s S&P 500 Index. That’s big news for cloud computing in general, and Salesforce.com in particular.

"The decision to add salesforce.com to the S&P 500 is a clear sign that cloud computing has arrived," said Marc Benioff, Chairman and CEO at Salesforce.com. "Every day, more than 47,000 customers rely on salesforce.com to help run their businesses. Now that incredible record of success in cloud computing has a new home -- the S&P 500."

According to their website, Standard & Poor provides "independent credit ratings, indices, risk evaluation and investment research and data". The company picks the 500 leading companies in the leading industries of the U.S. economy, and monitors them on the S&P 500. In order to remain on the S&P 500, companies must have a market capitialization of $5 billion (SFDC has a market cap of $6.8 billion), and at least half of the companies shares must be publically owned.

The company that is coming off the S&P 500 Index, opening the spot for Salesforce.com, is Freddie Mac (Federal Home Loan Mortgage). The failing lender's market cap dropped to $614 million last week. Soon after, the U.S. government siezed control of the company (along with Fannie Mae), fired all of it’s executives, and burdened U.S. tax payers with the massive bail-out debt. Be sure to send a thank you letter to your political leaders!

Salesforce.com has some great company on the S&P 500 Index. Three of the top ten companies are all in IT: Microsoft, IBM and Apple. Go, Salesforce.com, go!

Monday, September 15, 2008

Formating datetime variables in Apex

The current project I’m working on is a custom Visualforce page showing all of the scheduled maintenance activities my Support department has scheduled with our Customers. We have a custom object (Maintenance__c) which describes the details for the maintenance activity, including Start Date/Time and End Date/Time. I wanted to display this information in Calendar format using Visualforce. That way, my users can see, at a glance, what activities are scheduled throughout the month. I’ll show more of the application, as it develops, but for now I’ll focus on my first crisis.

The Problem: I wanted to display the current date in the subtitle of the section header. The code that does this is highlighted in the Page Editor section below, and the Visualforce page is right above it. It looks … fine. But I’m really, really fussy when it comes to page views. I didn’t like how the {!Today()} function returned “00:00:00 GMT” in the middle of the datetime output. Yuck! I wanted to see the information displayed in the “long date” format, just like I see in my Excel worksheets: “Monday, September 15, 2008”. I also didn’t like the fact that the datetime was GMT time, and my users would be mostly viewing this page from Eastern, Mountain or Pacific Time Zones. Apex to the rescue!



The Solution: I haven’t done much date manipulation in Apex, so I pulled out my trusty Apex Language Reference Manual. On page 182, the manual describes how you can use the “format” instance method to manipulate the date format: “format” takes a Java Class SimpleDateFormat string and the local time zone of the current user, and returns the datetime as a string. Perfect!

But what the heck is a “Java Class SimpleDateFormat” string? The document provided a link to the Java Sun website, where I learned all about date and time patterns, and using pattern letters to display full form vs. abbreviated form in datetime strings.

I switched over to my Sandbox, built a very simple Apex class to display the datetime in Microsoft (?) long date format:

public class MaintCalendar {

String LongDate = ' ';

// Init cLongDate with the current Datetime in long date format
public String getLongDate() {
Datetime cDT = System.now();
LongDate = cDT.format('EEEE, MMMM d, yyyy');
return LongDate;
}

}


The first line in my getlongDate method initializes the ‘cDT’ variable with the current datetime. The second line uses the “format” instance method to set a global string variable “LongDate”, using the following SimpleDateFormat string: ‘EEEE, MMMM d, YYYY’ The four letters indicate that the Day, Month and Year should be spelled out in full (non-abbreviated) form.

The code (and the VF page output) is displayed below.



Phew! Am I glad I figured that out. Every time I started working on the Calendar code, that ugly default date format in the {!Today()} function mocked me, telling me that I was making an ugly UI. Well, that’s enough code for this week … for some reason I now have a craving for orange creamsicles. Need to go find an ice cream truck.

Friday, September 12, 2008

Get Ready for Winter'09!

It seems like we just upgraded to the Salesforce.com Summer'08 Release -- I still haven't been able to take advantage of all the features I wanted to turn-up yet. I was hoping to implement the Analytic Snapshots last month, but that got side-tracked as my team started taking a deep dive into Apex and Visualforce. We kicked out some sweet customizations / enhancements for my organizations Case management application, and migrated our old email2case application to Apex.

Don't blink ... the Winter'09 Release will be here sooner than you think (although it should be called the Fall'09 Release, in all deference to Mother Nature)! I got an alert reminder that the server pod on which my organization's Force.com instance is hosted will be updated October 10th. Yikes! That's only a few weeks away!

First thing's first ... here's the maintenance and release schedule for the Winter'09 Release: http://trust.salesforce.com/trust/status/maintenance.html


Want to see what's coming in Winter'09? Check out this list: http://ideas.salesforce.com/popular/coming_in_winter_09

There are a lot of neat things in this one. Topping the list, my personal favorite: Scheduled emailing of reports. At my organization, we already take full advantage of the Scheduled Dashboards feature (which came out in Spring'08). With the Scheduled Dashboards feature, Administrators can configure Dashboards to automatically refresh, and mail an HTML copy of the Dashboard to a user distribution list. I turned this feature up as soon as it became available. Immediately, users asked if I could automate the same feature on some of their custom reports. With Winter'09, we can! This feature will be handy, especially for communicating with Sr. Management!

Other neat stuff that I'm looking forward to in this release:

Plus a whole, lot more!

Release Notes for Winter'09 Release can be found here:
https://na1.salesforce.com/help/doc/en/salesforce_winter09_release_notes.pdf