Subscribe to my full feed.

Sorry for the lack of posts lately - getting read to launch and all-new blog, as well as getting the rest of my social web in order - personal, work, and professional - no small feat! Just a taste of the services I've had to set up, separate, and manage to try to make this all fit together:

Docs
Blog
Twitter
Facebook
FriendFeed
Photo Hosting
CRM Tool
VOIP Client
Google Account
SFDC Dev Environment
Web Domain
SFDC Sites Environment
Video Sharing
Myspace

I'd love to get an aggregator for my social aggregators!

Anyway, stay tuned - more to come in June.

Hey everyone, just a quick (and vague) note on the blog: I'll be upgrading shortly, and my blog will be at a new address.

Don't worry - I'll redirect you to the new page and all that, just wanted to give you a heads up that there will be extensive enhancements come the end of June or so.

Reason for the change? This blog was the alpha release - moving on to the beta - and improving aspects of branding, social networking, integration with other parts of my digital life, and, of course, "ease of spelling" of the title. ("I can has apex dot blogspot dot com" just doesn't roll off the tongue at networking events!) ;)

Stay tuned for more...

I have to say I love the automatic updates that true multi-tenant solutions offer. Yes, that means you "have" to take the upgrade, and can't "hold off a little bit", but let me share the alternative: No upgrades.

My company migrated to Salesforce.com from an on-premise solution. Our I.S. department was concerned that they were now subject to the upgrade schedule of Salesforce.com and didn't care for that - they preferred to choose when to upgrade.

The only problem was that our I.S. department has (excessively) limited budget for upgrades. So when the estimate came back at $100K, they said "no thanks" - for two years.

So yes, automatic upgrades may come at inconvenient times (for example, right across your pilot launch week - true story!), but at least you get them - and that benefits everyone.

So I was a bit surprised when I had a negative gut reaction to this post from the Google Operating System blog about Google Chrome's Automatic Updating feature. As in "We upgrade without asking, without requiring a restart, and you can't shut it off!". I thought "I know security is important, but you can't DO THAT to people! I should have the right to choose whether and when I want to upgrade!".

Then I laughed, and considered the comparison to Software as a Service. True, it MAY cause SOME problems for SOME users for CERTAIN upgrades UNTIL a patch is released to rectify the situation, but there are two big wins here:

The first is obvious: Everyone gets the latest version and security features, making computers (and the internet in general) a safer place.

But I'm more interested in the second: Google has to ensure "unbreakable" updates - if every Chrome user is going to have this update within 5 hours, you can be sure Google has it tested up, down, backwards, and forwards! And if there is an issue, Google will be on it fast! For as Google recently discovered, the internet is a fickle place, and marketshare can be lost in a single click.

So I'm changing my tune - becoming a proponent, even - of automatic and mandatory updates for on-premise applications. Of course, I don't envy Google the task of ensuring "unbreakable" upgrades on the multitude of hardware and software combinations it needs to support - a good multi-tenant architecture is much easier to update from that perspective!

Now if only we could get Microsoft to provide a free, mandatory, and problem-free upgrade to Windows 7! OK, maybe not this time...

This was the question posed to me recently, and typically a difficult question to answer in the realm of computer science.

If a manager is hiring for a junior java programmer position asks, they're actually wondering if you've ever had a job as a Java programmer. If James Gosling asks, he's wondering "Can you list the standard java classes from memory - by package, alphabetically?".

And the question gets even more vague when we move to Salesforce.com. Why? Because Salesforce does NOT require a high level of technical expertise to be successful. Depending on the organization, the definition of "Development" on the Force.com platform can range from "Can you create formula fields?" to "Can you write an Apex Trigger?". Because the Force.com platform allows us to create sophisticated applications with ZERO code, most of the administrators out there have never THOUGHT of writing a trigger, and are rather amazed by someone who can.

"I met this Force.com developer - he was nuts! He wrote, like, 5 triggers, and even had a Visualforce Tab in his app! What an incredible developer!"

Any programmers reading this are chuckling to themselves. "Anyone impressed by a 'mere trigger' isn't a PROGRAMMER! They don't understand the DEPTH and COMPLEXITY of CODING!"

True. And the fact is, you don't need to know such things in order to develop very sophisticated custom applications on the Force.com Platform.

And it's this very dichotomy that makes it a difficult question. But it helps to know who's asking the question: System Administrator asking? "Why yes I am - I've written over 20 triggers" would suffice. Senior Java Programmer asking? "Why yes I am - in fact, I just wrapped up writing the unit test coverage on a 1000-line Apex class - man, those static methods were driving me NUTS!" is the entry level response.

And me? The 1000-line example is a true story, so yes, I am. Those with 20 years of C programming may disagree. But that's the beauty of Salesforce - expert development is available - without 20 years of C programming experience!

Let's take a step back from productivity for a moment, and consider that other software will be moving to the Cloud as well. Case in point - rather than spending $500 on that brand new next-generation video game console, or upgrading your PC's graphics card, what if all you needed was a broadband connection?

Onlive
, a startup in Palo Alto, CA is trying to do just that. The MIT Technology Review reports:

"Today the company announced a service that lets any computer run the sorts of graphics-intensive video games traditionally reserved for high-end gaming systems. Games can also be played on a TV using a small device offered by the company that connects a television to a broadband Internet connection."
The founder, Steve Perlman, was part of the team that developed Apple's Quicktime compression algorithm, and he's brought his expertise to bear in this venture, to ensure there is no lag between pushing the button and seeing the response on-screen:
"Games need to be very responsive to user so when you push a button, that game better react instantaneously; the big technical problem is when you push a button at home and it's actually running at a computer potentially thousands of miles away, there's going to be a lag," Dolbier says. "Solving that problem has been a major challenge that Rearden has been aggressively tackling for some time."
Has he solved it? He seems to think so - Onlive has had 16 games up and running at its conference trade show booths and is planning to launch in late 2009. For more information, check out their website, see the demos, and sign up for the mailing list.

And yes, as a Cloud app, it will be a subscription model. Whether you consider that a good or a bad thing when it comes to your video games, it certainly beats shelling out hundreds of dollars for the next-generation video game console!

I recently blogged on how to convert Salesforce.com IDs using Apex and Visualforce, but as it turns out, many readers are more interested in actually converting IDs, and less interested in understanding how it works. ;)

So by popular demand, I've made a converter in Excel that takes your 15-character Salesforce.com IDs and converts them to the 18-character IDs.

Download the file, paste up to 25 15-character IDs at a time, and the sheet will give you the 18-character version using Salesforce's conversation algorithm.

It's protected (to avoid unintentionally overwriting a formula), but no password, so if you're Excel-savvy, feel free to pick it apart and modify it (for instance, if you want to do 5000 IDs at a time).

Enjoy - and click here to download.

My in-laws are Bosnian, and have been living in Mexico for the past 15 years. They don't speak English, and no, I don't speak Bosnian or Spanish. For a long time, this meant infrequent conversations with translation provided by my wife or her brother.

More recently, Google Translate has been doing the heavy lifting for me. My in-laws write to me in Bosnian, I put it through the Croatian (very similar language) translator on Google translate, and it gets most of the meaning across.

I then compose in English, put it through Google Translate into Spanish (according to my wife, the Spanish translation is much more accurate, which makes sense), and send back. It can be tricky, but it gets the job done, and has done a great job and breaking the language barrier.

So I'm intrigued by recent speculation that GMail will offer one-click translation as part of its 5th anniversary celebration. Although it wouldn't translate better than than my current process, it would save me quite a bit of copy/paste time. Here's hoping!

I'm a big Skype fan - I use it to videoconference with my brother in S. Korea (teaching english for 2 years), my parents use it as free long distance (instead of their cell phones, I guess), and it's also one of my two instant messaging apps (the other being Google Talk, of course).

But up until now, it's been the only method of communication in my life that wasn't iPhone-compatible. Take a look:

1. Call me on my cell? iPhone rings or has your voicemail.
2. Email me at work? iPhone links to Exchange.
3. Leave me a voicemail on my WORK number? Cisco VOIP phone puts it in my inbox - on my iPhone.
4. Write me a personal email? Gmail has it - on my iPhone.
5. IM me on Google talk? iPhone does that too.

(And no, I don't have a land line).

But what to do with Skype? No matter - tomorrow, Skype will be releasing Skype for iPhone on the App Store - I'm not holding my breath for video calls, but the chat and voice features would be great - and I'll be first in line for the download.

If you want to sing out, sing out, and if you want to be free, be free, cause there's a million ways to be, you know that there are...
- Cat Stevens
And now there's one more way to be free...

I use GMail to manage all of my email addresses. For example, if you send an email to my old college email address, it will show up in my GMail inbox, and when I hit reply, it will appear to have come FROM my school account - seamlessly. I love it.

But there is one catch - your alternate email provider MUST support the POP3 protocol - something that Microsoft Hotmail did not, at least until now.

With Hotmail now supporting POP3, you can now have your hotmail emails go TO your GMail inbox, and when you hit reply, it will reply using your HOTMAIL address.

So if you've been clinging desperately to your Hotmail account - it's time to be free!

Instructions here. Lolcat of happiness below.

The Unofficial GoogleSystem blog has posted a list of content that Google does NOT allow other search engines to index, through the use of robots.txt files. Although some of the items are common sense (indexing search result pages would clutter results), or privacy issues (indexing Google Docs content would make those docs public), there are a few items listed as "unfortunate" exclusions:

* the LIFE photo archive, which is only available in Google Image Search. "It's disappointing that Google gets exclusive access to index these images and every other search engine is out of luck. Exclusivity like this doesn't seem in line with Google's philosophy," says Andy Baio.
Is Google being Evil? Andy seems to think so. I disagree.

Google has made more unique content available to the public in an organized, searchable format than (I suspect) all the other search engines combined. I appreciate that, as well as Google's openness in almost all cases. But I'd like to remind Andy of three realities to consider:
  1. The restrictions on sharing content such as the LIFE photo archive MAY be contractual. Google may have had to choose between an exclusive bank of images, or no images at all. Much as iTunes had to start out with 100% DRM-protected songs from a small group of major labels, Google may have to start with more restrictions, to "ease" these companies into the 21st century. But I'm glad they chose to at least go this far!
  2. Google has the goal of indexing the world's information. It can't do this if it does 100% of the heavy lifting, but shares the benefit with other competing search engines. Google has a proprietary search algorithm, it has some proprietary content. This impacts its competitors - not the public it is serving. That works for me.
  3. And yes, Google IS a public corporation. Although it successfully (I think) has balanced the ideals of profit and "not being evil", it just can't be completely altruistic without going out of business - and thus failing in it's task (of indexing the world's information).
Let's cut Google some slack on this one - I can access it, you can access it, and Yahoo can't. That gives Google a competitive advantage, enhancing performance, enhancing it's ability to bring me and you more great content in the future. Definitely NOT Evil.

I've always appreciated Google's candor when releasing new features - the endless betas, and the flat out admissions of "this is new - and might not work right - but you can try it out!" are a great way to show the value constantly coming out of the Google R&D team, without the long waits for "major releases". That's the great thing about Cloud Computing - incremental, continuous, unobtrusive upgrades. If you don't need it, you don't even need to notice it!



I laughed out loud the first time I clicked the "Find and Replace" option in Google docs, and saw the following caveat:


I love it - "Find and Replace...but really just Find at the moment"! I appreciated simply knowing that better things were coming. And as of yesterday, they have!


Google Docs now has a Find and Replace toolbar that also takes regular expressions as search criteria - all accessible with keyboard shortcuts.

It's finally HERE!

I'd never been a fan of the "classic" version, and it's "Click a button, get a huge list" approach to browsing applications. Ever since the early days of EBay, I find myself quite irritated by any site that doesn't provide convenient filters to help me narrow my search, or brings me to product pages that feel like (informational) dead ends. As soon as the preview site was up for the new AppExchange, I was waiting with baited breath!

The new site is great - more categories, endless filters, and a much more immersive and interactive experience on the product pages. And of course, it's been built using Force.com Sites - I love a company that drinks its own Kool-Aid!

Check it out - I found a number of great apps that I never knew existed, with just a few mouse clicks (and testing one of them today). Highly recommended.

Executive Sponsorship is critical to any CRM implementation. We all know this. Yet, for executives new to CRM initiatives, system initiatives, or all of the above, there may be very little understanding of what their exact role in sponsorship must be to ensure success.

Model Metrics has provided a great whitepaper called "CRM for CEOs" that provides an excellent overview for executives. It's a strategic "How To" guide that lays out areas of focus, best practices, and (most importantly for executives) the business drivers and benefits of each.

It's also a great read for other members of your CRM implementation team and impacted business unit managers - a great reminder of the big picture your business is trying to achieve, and how each piece of the puzzle contributes.

PS - For anyone not familiar with Model Metrics, these guys are one of Salesforce.com's most diverse and innovative implementation partners, making this well worth the read. Enjoy!

This one is for the true database geeks out there - a 60 minute webinar on the guts of Salesforce.com's multitenant architecture.

Indexes, table partitioning, query optimizing, the application stack - it's all here.

I'll be honest - I only stayed on top of about half of the material - but that's the beauty of the Force.com platform - customers are shielded from all of the sophisticated, complicated, miraculously innovative hardware, database, and software kernel details, so there's really no need.

But for those of you who do this professionally, have a great time geeking out on this - fascinating stuff. Here is the link to the webinar, the FAQ, and the whitepaper - enjoy!

Ever wondered what the big deal is with Cloud Computing? Or just wondering what this catchy phrase actually MEANS to your business?

I came across an excellent clip on YouTube (below) that does a great job of breaking it down in a fun and effective way - it's well worth the 3 minutes, no matter what you level of expertise - enjoy!


This is Part 5 of 5 in my series on converting 15-character Salesforce IDs seen in the Salesforce UI into the 18-character IDs seen in results from the Data Loader and API calls. You can start at Part 1 here.

Wrapping this up - we have the problem, the solution, the solution code, and the visualforce. Let's display it on the homepage.

You have two options:

Option 1: Put in on the main section of the home page.
Pros: Can HIDE the "Developer mode" section that gets in the way
Cons: Have to go to the home tab to use the widget.

Option 2: Put it in the Sidebar
Pros: It's there for you throughout the application (if your sidebar settings allow)
Cons: have Developer mode turned on? Then this won't work.


Either way, here's the process:
1. Create a custom home page component. (Setup->Customize->Home->Home Page Components->New->HTML Area)

2. Select which part of the page you'd like it on - Wide (main), or Narrow (sidebar).

3. Click "Show HTML", and enter the code below:

<iframe src="/apex/IDconverter" height="150" width="100%"></iframe>

Note that you should replace the src="" with whatever the address for your Visualforce page is.

Scott Hemmeter from ArrowPointe shared a great trick on his blog to disable developer mode on this page so your homepage component displays correctly. As he mentions, this is "unofficial" functionality, so could stop working at any time.

It's simple - just add "?core.apexpages.devmode.url=1" to the address above, resulting in "/apex/IDconverter?core.apexpages.devmode.url=1".

As I mention in the pros/cons above, this worked for me on my main homepage - but NOT in my sidebar (although others have had better luck). Best of luck to you!

And that's that. Now, my admins have a little widget to let them quickly answer the dreaded "What's the 18-char ID of the record" question we get when working with IT. Here it is:



And that's the end of that - hope you found it helpful - we'll have to do this again some time.


This is Part 4 of 5 in my series on converting 15-character Salesforce IDs seen in the Salesforce UI into the 18-character IDs seen in results from the Data Loader and API calls. You can start at Part 1 here.

Part 2 covered the Apex code snippets necessary to convert an ID. In this section, we'll cover the Visualforce markup and remaining Apex code to make it all work.

Ironically, even though the entire purpose of this project is to create a Visualforce page to convert IDs, the actual "Visualforce page" was almost no work.

Here is the basic interface:



And the equally simple markup:


It's all Visualforce 101:
1. Enter a value in an inputText field (our 15-char ID)
2. Click the commandButton to call the custom controller code
3. The controller returns the 18-char ID in an outputLabel
4. The outputPanel re-renders so the result is seen by the user

So in addition to the code covered in Part 3, I added getter and setter methods to pass the ID values back and forth, and a pageReference method that responds to the button click. You can check out the final controller code here.

The last step will be to embed the Visualforce page somewhere useful, where my administrators will always have quick and immediate access to it - say, as a custom sidebar component. That - along with a hack to disable developer mode - will be the wrap-up in Part 5.

This is Part 3 of 5 in my series on converting 15-character Salesforce IDs seen in the Salesforce UI into the 18-character IDs seen in results from the Data Loader and API calls. You can start at Part 1 here.

In Part 2, we walked through the algorithm for converting the ID. Now Part 3 will cover the basic pieces of doing it in Apex. (code improvement suggestions welcome!)

Block 1: Convert to Binary
1. Take each letter in a 15-character string
2. Convert it to binary (1 for capital letter, 0 for anything else)
3. And put it back into a 15-character string (backwards, as required)



Block 2: Function for converting 5-character binary strings
1. Create a big ugly map (binary chunks to a letter)
2. Use the chunk you passed in to get a letter from the map
3. Return the letter



Block 3: Build the result string
1. Start with the original 15-character string
2. Convert the binary string 5 characters at a time (with the above function)
3. Append the resulting letter to your final string

And that's it! Following the algorithm published by Salesforce (see Part 2 for details), we converted a Salesforce ID into binary, reversed it, and used 5-character chunks against a map to get the final 3 letters of the new, 18 character ID.

In Part 4 we will put this Apex into a Visualforce controller, along with a simple page.

All I ever wanted from Apple was a powerful Mac Mini, so I could buy a 30" Apple monitor to go with it. Instead, I've been buying a string of powerful iMacs, and waiting for the eventual upgrade that would give the Mac Mini the same guts as an iMac.

Good News: I got my wish!
Bad News: The pricing is outrageous!

While Dell thinks that the hardware in a (maxed out) Mac Mini should cost under $500, Apple has priced that same configuration at $1147 - a 130% premium.

I've never had a problem paying a premium for Apple products. But this is insane.

Final verdict on the new Mac Mini:

This is Part 2 of 5 in my series on converting 15-character Salesforce IDs seen in the Salesforce UI into the 18-character IDs seen in results from the Data Loader and API calls. You can start at Part 1 here.

It turns out that learning the "secret formula" for converting a 15-character ID into an 18-character ID is as easy as searching for "how do I convert an ID" in the Salesforce help screen. The resulting solution accurately describes the process, although it isn't exactly written in a way that makes it immediately clear how the process works (no "ah ha!" moments here...).

Luckily, they include an example, which I will share (in a simple form) below.

Side Note: If anyone is reading this, and needs to convert the 18-character ID BACK to the 15-character ID, there is no algorithm required - just chop off the last 3 characters! There - I just saved someone the pain of trying to do the steps below in reverse... ;)

Step 1: Get the 15-character version of the ID, in this case "500x000000003TR"

Step 2: Convert to 1's and 0's. Rule: Capital letter get's a 1, anything else gets a 0.
500x000000003TR becomes
000000000000011

Step 3: Split into 3 chunks of 5 characters, and REVERSE the order of the characters in each group:
00000 becomes Chunk 1: 00000
00000 becomes Chunk 2: 00000
00011 becomes Chunk 3: 11000

Step 4: Use the key below to convert each chunk to a Letter (you can use the chunk, or convert the chunk from binary into decimal - whatever you prefer)
Binary Decimal Matching
Chunk Chunk Letter
00000 0 A
00001 1 B
00010 2 C
00011 3 D
00100 4 E
00101 5 F
00110 6 G
00111 7 H
01000 8 I
01001 9 J
01010 10 K
01011 11 L
01100 12 M
01101 13 N
01110 14 O
01111 15 P
10000 16 Q
10001 17 R
10010 18 S
10011 19 T
10100 20 U
10101 21 V
10110 22 W
10111 23 X
11000 24 Y
11001 25 Z
11010 26 0
11011 27 1
11100 28 2
11101 29 3
11110 30 4
11111 31 5

In our case:
Chunk 1(00000) becomes "A"
Chunk 2(00000) becomes "A"
Chunk 3(11000) becomes "Y"

Step 5: Add the converted chunks, in order, to the end of the original 15-character ID:
500x000000003TR becomes 500x000000003TRAAY

And there it is. The non-case-sensitive version of 500x000000003TR is 500x000000003TRAAY.

Salesforce is very friendly about using either version of the ID - you can use the 15-char or the 18-char version anywhere - in the URL, in the Data Loader, via the API, etc.

But for my IT group, who stores SFDC IDs in a non-case-sensitive table (try getting them to change that!), it's the 18 character version or nothing.

And that's where babies 18-character IDs come from.

Stay tuned - in Part 3, we'll turn the process above into Apex Code!

Salesforce.com record IDs come in two flavors. The flavor you see in the browser is a 15-character, case-sensitive version. The flavor you see when using the data loader or other API-based tools is an 18-character non-case-sensitive version.

So when troubleshooting integrations, and our IT department says "Can you provide some sample IDs?", we needed a way to quickly take the 15-character ID we were staring at in the browser, and convert it to an 18-character version that our (non-case-sensitive) IT department could reference in their data warehouse.

Initially, we used the Data Loader to get this info. As in:

SELECT
Id
FROM
Contact
WHERE
Id = 'Insert 15-char ID here'

That would return the 18-character version, and all was well. But to open the data loader, grab my security token, select an object and an export file, type the code, etc was just too much work.

Luckily, Salesforce publishes the algorithm used to convert from the 15-character version to the 18-character version (which is really just the 15 character version with 3 additional characters appended).

This week, I'll be exploring the published algorithm, creating an Apex Class to do the conversion for me, with a Visualforce front end. Stay tuned!

(Disclaimer: As always, I'm sure there is an easier way to do this - at least I'd imagine so. Even if there was, I'd still do it this way, just for fun!)

One of the biggest changes we saw when moving from an on-premise CRM solution to Salesforce was the difference in development time for small changes (such as modifying a page layout).

Previously, we had used the time-tested method of "develop in dev, test it in QA, deploy to production", which we still use for major releases and integration work. But for a page layout change? Yes - even there, our old system required that to mitigate the risk that a missing semi-colon or bracket could bring down production for a time, so a 5-minute task turned into weeks of project requests, approvals, scoping, developer time, weekly release dates, testing, and deployments.

Now, we're back to 5 minutes! Life is good.

But the challenge arises when we need to do large integration projects or other major developments. How do we keep our dev and QA sandboxes in sync with production? Typically, we would just do a refresh from production, and we're ready to start developing! However, due to the nature of our integrations, we have to refresh at the same time as our other on-premise apps refresh into their QA environments - once every 6 months.

For a while, this meant triple development - add the field in Prod, add the field in QA, add the field in dev. Ick.

The we discovered the Force.com IDE in Eclipse! Now, we periodically "deploy" from Production to our QA sandbox, ensuring all configuration is in sync, without touching the data that the integrations rely on. All in just a few minutes.

And a good thing too - as you'd expect, our "triple development" solution, and the potential for sub-optimal syncing had created a number of discrepancies between the environments - not to mention that our QA environment now has access to all the reports and list views used by production.

The developer sandboxes that were once a royal pain, are now a great benefit - and ease deployment into production as well. And it's easy to deploy. That's the key.

Very cool.

Blog Title

Some may be confused by the grammatically incorrect nature of my blog title. Please be assured - I am not an idiot. ;)

It's an homage to lolcats - those hilarious, ad-hoc, and grammatically incorrect cat pictures that have spread themselves far and wide on the internet, or intentionally gathered for your browsing pleasure.

Specifically, it's an homage to the original lolcat - "Happy Cat" (below) - that originally swept through the internet all those years ago (3 years is forever in internet time!).



You may see the occasional lolcat throughout the blog - other than that, it's all about Salesforce.com and developing on the Force.com platform! Hope that clears things up.

Enjoy the site!

My company uses Cisco IP phones, and recently upper management decided that our sales team needed an auto-dialer. As in, right now.

If you've ever worked in a call center, you know that auto-dialers are great when you have a group of people making scripted calls of a giant list. You sit with your headset on, and - bam! - you're talking to your next "customer".

But if you're talking to individual contacts that you've been working with, a script doesn't cut it. So when "Bob Johnson" suddenly comes up on your screen, you have no idea why you had him on your call list, what you've discussed lately, or where he is in the sales process. Sure - you could just take a glance at his contact record for 10 seconds - but by the time you see his name, he's already said "Hello!".

"Hey Bob, it's Zach. Say - could you hold on for 10 seconds, while I figure out why I called you?"

No good.

Still, upper management wanted to make the reps more efficient with their calling, and gave us 6 weeks to do it. Solution: Salesforce.com and Cisco's "Click to Dial". Best part: if you're on Salesforce, you already have it (you just don't know it!)

It's no more difficult to use that it sounds. Click on the phone number, and the phone at your desk starts dialing. Very cool.

So our resident Cisco guy called our Salesforce Sales Engineer, who brought in a subject matter expert from Cisco - and a few conversations later, it was ready to go! We tested internally, then with a small group of sales reps, and are now rolling out to all 800 users - all within the 6 week deadline.

There was some frustration (inspiring the image on the right!). A widget that connects your computer to your phone that needs to be installed (software...ick). After the admin configures it (basically just adding your cisco call manager account username and password, and your IP phone's MAC addresss), the user then needs to select their exension one-time the next time they log in. No problems, just the trial-and-error one expects from such an endeavor - missing passwords, substituting "5" for "S" in a MAC address, etc.


But let's be totally clear - how many CRM solutions out there can provide:

* full integration with your phone system,
* with no additional hardware or software costs,
* no consulting or professional services required,
* and have it all working in under a week?

Salesforce saves the day again. Good times.

First Post!


I've never been a big blogging fan. The poster at the right sums up the reason.

And yet...here we are.

So why are we here? Because hopefully I can share news, info, code, and links that will help my reader (or readers? Dare I hope?) with the Force.com platform.

Oh - and because I wanted to post the lolcats I've been making it work. (And yes it's good use of work time! They're about Force.com! That's work - right?)

Because seriously - it's tough to find a niche on the internet these days. Have a web site that's one-in-a-million? Then there are 185 sites (or so) JUST LIKE YOURS!

But there don't seem to be any Salesforce.com or Software As A Service lolcats out there - and I think that makes it worth sharing. ;)

;;