AddThis Feed Button

Recent Items

During Dreamforce 2009, I had the pleasure of meeting Jason Ouellette, the Chief Architect at Appirio. Appirio is a well-known name when it comes to development, having been involved in some major projects such as Japan Post and the systems shown at the Dreamforce 2009 keynote (including Chatter stuff before it was even released!).

Jason has recently released a book dedicated to Development. It’s called Development with the Platform: Building Business Applications in the Cloud and, aside from having the world’s longest title, is also the world’s first book on (that wasn’t written by Salesforce).

Jason’s Book

The book covers practically every topic relating to which is, as you probably know, an awful lot of information! As such, having only 400 pages, the book is more of an introductory tutorial than a reference book. Indeed, Jason fully admits that people will still need to refer to the standard PDFs to get detailed technical information.

So, who is the book good for? Definitely for anyone having to code who is relatively new to Salesforce and It mentions all the technologies available in, so is vital for people wanting to come to grips with the platform.

If you’re a developer already using and you’ve used the Salesforce platform for 2+ years, then this book isn’t going to teach you anything new. However, it is rare that a developer has played with every feature in (eg I’ve never played with approvals, Salesforce-to-Salesforce, DML rollbacks, Visualforce JavaScript actions), so the book can even teach old dogs a trick or two.

For further insight into the book, see my review on

Now for a real treat. While at Dreamforce, I managed to snag an interview with Jason, so here he is talking about his own book:

Thanks for the interview, Jason!

The Bottom Line

  • now has its first book!
  • It’s great for people new to, might not be so helpful to already-experienced developers
  • Jason Ouellette’s a really nice guy!

As part of the Dreamforce 2009 campground, Salesforce hosted a hackathon with heaps of prizes.

At the ‘beginner level’, entrants just had to code a pre-defined system. Next came the challenge to integrate with social platforms. Finally, the ‘Secret Agent’ level required more sophisticated integration. Finalists integrated with Amazon and BaseCamp.

For the hackathon, I created Voiceforce with guru David Schach (X Squared on Demand) and defending champion of last year’s Dreamforce, Elaine Greco. We threw together a system that allows a Support Case to be lodged via a voice interface.

Using Dial2Do, a user can place a phone call, say “Create Case” and leave a message. A minute or so later, the Case appears in Salesforce:

voiceforce screen

It was quite amazing placing a phone call and seeing the spoken message appear within a Case. Yes — Dial2Do actually transcribed the phone call directly into a case. The flow is basically:

  • Call Dial2Do and leave a message
  • Dial2Do transcribes the message into text
  • It sends the message via a URL to a Sites page
  • The Visualforce controller extracts the message from the URL, creates a Case and inserts the message
  • Voila! It appears in the list of cases — providing a voice-to-case system

Unfortunately, Dave Carroll & co didn’t include us in the Top 3 entries, but if they saw our fantastic logos I think they would have changed their mind! (Yes, that ‘No Typing’ logo was hand-created from a mouse mat! Great work, Elaine!)

The most fun was hacking in the company of fellow developers. It was hard to type without having somebody ‘auto-correct’ my syntax! The M&Ms and bean bags helped, too!

The Bottom Line

  • Integration with is easy — both in & out
  • is a community as well as a platform

I’m at the Black Crowes concert, chugging Diet Root Beer, eating Bread Pudding and… blogging!

By now there’s no need to explain Chatter, the big announcement of Dreamforce. While it might not win any big sales, it will certainly give significant ‘lock-in’ with customers. While it’s easy to export customer and deal data, it’s just not possible to export a history of ‘live’ social interactions. Trust me, I know about it — my company sells an enterprise wiki and we have ALL our interactions online. Discussions, collaborative editing, company announcements. That history is more valuable than the base information itself.

The most interesting thing about Chatter was what it took to implement within the Salesforce architecture. According to Peter Coffee, director of Platform Research, they had to do a LOT of work to integrate Chatter into the Security model, even expanding the model to take into account new abilities to secure hierarchies of data. Rather than taking the quick-and-dirty ‘vertical’ approach, they’ve implemented a full ‘horizontal’ stack to implement the new services.

Peter’s an interesting fellow, very enthusiastic about the company and its platform. I especially enjoyed his 4-point argument to convince CIOs to move to the cloud:

  • Avoid capital expenditure
  • Instantly scale as required
  • Instant kill-switch if things don’t work out as expected (no hardware to write-off!)
  • Superior productivity, with 3 studies apparently showing 5x productivity over .Net/Java

Some of those points are hard to dismiss. My company is trying to implement Disaster Recovery to a fail-over data center but it needs almost real-time synchronisation to avoid downtime and loss of data. I managed to chat with Thomas Spingola (VP, Technology) who pointed out that this is the reason why people should move to Salesforce’s platform — because they do all the hard work for us!

Here’s Spingola explaining how they have managed to introduce the 5-minute upgrade:

If you’re interested in the platform, try and view the recording of today’s State of the Nation presentation.

I managed to have a great chat with Craig Weissman,’s CTO, and I asked him some heavy questions about the architecture decisions they made for their multi-tenant architecture. For a CTO, he sure knows his systems! Here’s some of what I learned:

  • They had a big debate on whether to have ‘wide’ database columns for custom fields, or whether to use ‘pivot tables’ — in the end they actually used both (it’s explained in the white paper)
  • Picklists are stored as values, but if you store a new value via Apex code, the system assume it’s intentional and stores the value as metadata, assigning a number
  • The reason that IDs are sometimes 15-characters and sometimes 18-characters is because they are case sensitive. Windows apparently loses the case, so the extra 3 characters give the string its unique identity if case is lost (this is apparently documented in the API manuals).
  • The rather unusual ‘bulk database operations’ are a mirror of Oracle’s PL/SQL ‘foreach’ capability. They figured if the database can operate efficiently in bulk, then why not try to mirror it in the actual system architecture!
  • Key staff within Salesforce have access to customer’s metadata so they can run tests, but they can’t access customer’s actual data. For example, tests are run before major releases to try and find things that break.
  • Custom Settings are a great way to avoid having to continually retrieve data from table, thereby improving performance
  • In future, they’d like to enhance SOQL by adding things like group by and having (hooray!)

Random Tidbits

Here’s some random stuff I picked up from various speakers:

  • They hope to introduce URL rewriting so you can create your own ‘logical’ URLs that could even be used for REST calls to Visualforce
  • The new ‘Aloha Look’ isn’t just to be pretty — it’s to enable new functionality and to clean up little annoyances like having the Related Lists pop-up when you drag from the tabs to the main body of an object (yeah, I hate that!)
  • In future, they’d like to introduce Drag & Drop within Visualforce, rather than having to code it up in text.
  • In case you didn’t know, the platform is written in Java on a Linux platform, using Oracle as the database, with bits of PL/SQL. They’ve got their own optimizer to handle Organization partitions and to work against their multi-tenant architecture.

I rounded out the day by attending a Hackathon in the campgrounds. It was really fun programming up some Visualforce surrounded by experienced developers and Salesforce staff — in fact, it was hard to type without having each keystroke corrected from an on-looking developer. We didn’t win, but I’ll blog later about the hack we made!

The Bottom Line

  • There are some a lot of very, very smart people in Salesforce and their systems are well architected, implemented and maintained
  • Dreamforce rocks!

Well, the results are out for the June ’09 Cloud Developer Challenge and, unfortunately, my entry with David Schach didn’t win. In fact, we didn’t even score in the Top 10. Sigh.

One of my work team took the news quite bad — he replied to the news with “Robbed indeed! Right, we’re dropping SF in-favour of emailed spreadsheets.” hehe

However, we seem to have piqued the interest of the honourable Jon Mountjoy, who added this mention to the official results:

For sheer exuberance, John Rotenstein and David Schach deserve a mention for their Daily Shinro game!

I’m not sure what he means by that, but at least it met my goal of getting a mention!

Since we didn’t win that one, I’m now pinning my hopes on the Dreamforce VIP Video Contest. The objective is to create a 60-second (max) video saying why I’d like to attend the Dreamforce conference coming up in November 2009. Here’s my entry:

The top 3 entries get a free conference pass, free accommodation, travel expenses, lunch with Colin Powell and Marc Benioff (I bet he’s a big eater!), a Flip camera and backstage pass to meet the Black Crowes. I’m still trying to think of something to discuss with Colin Powell that he can actually discuss without revealing national security secrets.

The Bottom Line

  • I didn’t win the Cloud Developer Challenge (didn’t even come close)
  • Luckily, my team at work enjoy playing the game!
  • Here’s hoping for a better result with my video

I’m pleased to announce my entry into the 2009 Cloud Developer Challenge .

The Challenge is designed to evangelize the platform, encouraging lots of people to discover, learn and use The rules are wide open — just build something using, Visualforce and Sites (so that it is publicly accessible). It’s a very clever idea — sort of a small version of the X-Prize , with the concept that offering prizes will encourage more people to do interesting than actually directly paying people to do it!

Our Entry

So, would you like to know about our entry?

Yes, I use the word ‘Our’ rather than ‘My’ because I’m happy to say that I teamed up with David Schach, author of the X-Squared on Demand blog . Previous readers will remember that I met David some time ago when he visited Australia . Well, it just so happened that David read my previous blog entry about the Cloud Developer Challenge and dropped me an email to say he was visiting Australia again, and did I want some help?

This was a god-send, because I had been hitting lots of brick walls in my ramp-up of Visualforce and Sites knowledge, and David is an absolute expert in the subject. So, I did all the high-level UI, he did all the low-level ‘engine room’ stuff and we worked in the middle to make a very exciting site.

Introducing Daily Shinro

The site we developed is a Social Gaming Website that we call Daily Shinro .

Daily Shinro

The idea for the site began with my work team at Atlassian , where we play a daily game of SET , a really fun logic puzzle that changes each day. To keep track of our scores, we created a shared Google Apps spreadsheet with our scores and we soon discovered that it was actually just as fun to analyze the scores as to play the game!

We had been looking around for another daily puzzle that we could all play, preferably something that only took a couple of minutes and which had a scoring element. Unfortunately, very few online games took our interest. However, around that time, I had become addicted to playing Shinro Mines on the iPhone. Shinro is a little-known puzzle that has been described as a cross between Minesweeper and Sudoku.

So, once I put together the desire to enter the Cloud Developer Challenge, the need for another team puzzle with a social scoring element and my enjoyment of Shinro Mines, the choice of project became obvious!

A Social Gaming Website

There’s really two parts to Daily Shinro: the game and the social aspect.

The Game
I created the game in JavaScript using the fantastic open-source Raphael JavaScript graphics library that provides cross-browser graphics. It renders in XML for IE (boo!) and SVG for every other browser (yay!). It even supports animation.

Raphael was actually written by Dmitry Baranovskiy , a colleague of mine at Altassian. I highly recommend you look at the demo pages!

To provide a ‘daily’ concept for the game, a new puzzle is made available each day. The background picture for the puzzle is a daily selection from flickr, selected with the help of the beautiful Idée Multicolr Search Lab . It just adds a bit of spice and variety to the daily puzzle!

Social Gaming
From the very beginning, my intention was to create a ‘social’ gaming experience, based upon the spreadsheet developed by my work team. Basically, scores are calculated by how well each player beats the team average. Therefore, it needs at least two people to play the puzzle and all scores net-out to zero. This has the advantage that, if somebody doesn’t play one day, they aren’t penalized.

This scoring system is implemented at two levels in Daily Shinro — Public and ‘League’.

At the Public level, players’ scores are compared to the public average. At the League level, scores are compared only amongst your friends or office co-workers who are members of the same League.

Leagues are all about comparisons within a team rather than between teams — sort of like a private gaming site for friends. Thus, everyone can create their own League and invite friends to join. The score graphs then reflect the scores amongst members of the League.

League Score sample

The charts are generated with some magical Apex code that gathers up League scores, compares players to game averages and then outputs the results into a Google Charts URL.

I invite you all to visit and play the game!

If you find any bugs or strange behaviors, please let us know!

Will we win?

Ah, that’s the big question! My personal goal is to have the site ‘mentioned’ in the results pages of the Cloud Developer Challenge. That way, we’ll feel rewarded for the long hours that were put into the site.

We’ve done several things to give us an advantage in the competition:

  • We made a fun site that is attractive and enjoyable to use.
  • We utilized lots of different technologies to showcase how can ‘pull together’ capabilities from across the web to build an even richer application environment.
  • We added lots of pages of explanations , showing how we used technology. I’m hoping that this will help the folks at promote the platform, which means that they’ll want lots of people visiting our site to help promote their technology. And what better way to do this than mentioning us in the final results?! (Clever, eh!)
  • Finally, there’s this blog, which I know is read by about 1000 people per month (including some legendary Salesforce staff!). Throw in David’s blog and we’re hoping to get the attention of enough people in Salesforce that we’ll get on the short-list.

Oh, one word to the judges — we fixed a few bugs in the last couple of days. So, if you visited the site already, please visit again and see it in its fully-working glory!

It’s been a tough Challenge, but it was great fun and an utterly fantastic way to learn Visualforce and Sites. I started with zero knowledge and now consider myself a competent user of those technologies. I’d also like to thank David Schach whose knowledge of Visualforce and Sites is just incredible. I couldn’t have done this site without him.

The Bottom Line

  • Visualforce and Sites are mature and capable technologies for building websites on technology
  • The Cloud Developer Challenge was an excellent way to ‘spread the word’ and get people to use the technologies
  • You’ve got to visit Daily Shinro!
  • If you know the judges, please tell them how great we are! :)

As part of the release of Sites , Salesforce has made available a Free 100-user Platform account . This makes it very easy for people to construct web-based database apps without infrastructure worries. It’s so simple, that even a Business Analyst can do it!

This is similar to the standard Free Developer Edition account, which offers a 2-user, fully-featured CRM/SFA account, which is great for developers and evaluators.

The offering, however, is even more amazing. It’s a fantastic Google-like move, aimed at gathering momentum for their platform offering. The multi-tenant architecture means that giving the free accounts won’t consume many additional resources, aside from storage and some processing when people are online. But it’s a great way to attract people away from traditional alternatives like in-house database apps built on Microsoft Access or SQL Server.

The platform includes a database, highly configurable UI, workflow, Java-like customisation language that includes Triggers and web services, field-level security, API, the new publicly-accessible Sites offering and heaps more. It’s everything you need to make web-based custom apps, without the Developer!

I’m already thinking of some apps that I could deploy to the free platform offering — small systems involving just a few people, that would otherwise require me to get a developer to write a Grails-based app, or reuse some of our existing systems to do things a bit outside their intended design.

Interestingly, it means I’ll be creating a free org separate from my company’s existing Enterprise license because I don’t want to use my full-priced Enterprise CRM licenses for users who just need access to a simple database app. It would be much better if Salesforce gave me 100 free Platform licenses to add to my existing Enterprise org — less logins, more centralised data. Alas, at $50/user/month (or the current special of $20/user/month if I buy a license for every employee) is too expensive to justify the simple apps. So, free version it is for me!

The Terms & Conditions attached to the Free account are:

  • 100 Users
  • 10 Custom Objects per user
  • 10MB storage per user (so 1GB in total)
  • Various restrictions are Sites and processing time

However, reading the fine print also reveals that Salesforce do not actually enforce these limits. Rather, it’s up to the customer to ensure, for example, that a particular user profile can only access a maximum of 10 custom objects. They balance this with the right to audit and the requirement to purchase full-version licenses if the limits are violated.

Edit: Oops. I originally said $50/user/year. It’s actually $50/user/month. (Thanks Chun!)

The Bottom Line

  • The Platform is great for creating custom web-based apps
  • The free Platform offer is very attractive for small-scale apps
  • This will help publicise as a viable development platform