Wednesday, 17 September 2008

Amazon SimpleDB/dev

Matt has created a local instance of Amazon's SimpleDB. It allows you to develop for SimpleDB if you don't have a SimpleDB account and helps you reduce the costs of SimpleDB development if you do have a SimpleDB account. Originally enough he has called it "SimpleDB/dev". It is an open source project and it is available on Google Code today.

Develop for SimpleDB without a SimpleDB account

SimpleDB is still in limited beta. You can register for the beta online and Amazon are adding people to the service as capacity becomes available but not everyone has an account yet.

SimpleDB/dev runs as a server on your local machine and replicates the SimpleDB API as specified in Amazon's technical documentation. This means that you don't have to wait for your SimpleDB account in order to write your SimpleDB applications.

Reduce the costs of SimpleDB development (and develop offline)

Amazon's pay-as-you-go pricing is great for production services (you only pay for what you use). But it makes development expensive: every time you want to test a change in your application-code against SimpleDB, it costs you.

So even if you already have your SimpleDB account, then using SimpleDB/dev means that you can do your development without paying (money) for all your mistakes. Once you know that your code works, deploy to SimpleDB and pay for real usage of your application. Using SimpleDB/dev also means that you can develop for SimpleDB while offline.

The technical bits

SimpleDB/dev is written in Python and replicates the SimpleDB REST API. SimpleDB/dev implements every SimpleDB query-action and includes a large suite of tests, created from the query examples provided by Amazon. Implementation of the SimpleDB SOAP API is on the list of outstanding things to do. SimpleDB/dev is released under version three of the GNU General Public License and contributions to the project are welcome - just contact Matt through the Google Code page.

Some background (for my mum and dad - "Amazon! Don't they sell books?")

Amazon launched as an online bookstore in 1995 but have become a lot more than that since then. Electronic and many other goods are now sold through the online store and with the advent of the Kindle, Amazon have also become a hardware manufacturer.

In 2002 they got into the business of reselling computing - actual computing: processor cycles and storage et cetera. Instead of buying, hosting and managing your own servers, you (if you are an internet company) can have Amazon host and manage your servers for you. And instead of paying upfront for the privilege, you only pay for what you use (with utility computing you get utility bills).

There are a number of different Amazon Web Services:

The story goes that Amazon had this huge, web-scale infrastructure to serve the online store, which was under-utilised for most of the year - the run up to Christmas being the exception; this 'Christmas capacity', gave rise to the idea of reselling redundant computing during the rest of the year. I don't know if the story is true but I think that it explains the concept quite well. Anyway, the initiative has taken-off in a big way, and Amazon Web Services now account for more traffic (in terms of bandwidth) than the retail store.

Monday, 4 August 2008

Marc Benioff and web-suffix inflation

On Friday, Marc Benioff, CEO of Salesforce, wrote an article for TechCrunchIT proclaiming the arrival of Web 3.0.

In the article, Benioff claims that the next iteration of the web will see increasing numbers of applications being developed on multi-tenant cloud-computing platforms (like his own). He also borrows an argument from Vic Gundotra to say that Web 3.0 applications will not require a compromise to be made between computation, storage and ease of application deployment on the one hand and application accessibility and functionality on the other hand.

Benioff previously talked about Web 3.0 in his keynote at Dreamforce Europe. There he put the story of the evolution of the web in the following terms,

Web 1.0Killer internet appsEveryone can access
Web 2.0User generated contentEveryone can publish
Web 3.0PlatformsEveryone can innovate

Web 3.0 - Cloud Computing Platforms as a Service

Apart from the Techcrunch Web Tablet Project, there are only two other articles on TechCrunchIT that have generated more commentary than this one. There is definite resistance amongst commentators towards web-suffix inflation, viewing it as marketing hype. Benioff is obviously not concerned about this - Platform as a Service is a sufficiently significant new development in his view to warrant an increase in the web version number. I am inclined to agree with him although I did enjoy playing with the Web Economy Bullshit Generator that I found amongst some of the negative comments.

Of note, the very first comment from Pete, links to a YouTube video that shows Eric Schmidt answering the question "What is Web 3.0?"




The most novel aspect of Schmidt's answer is his assertion that Web 3.0 applications will be distributed virally, which will be, as he says, "a very different application model".

Wednesday, 30 July 2008

Fuel Conference: Ryan Carson

So...quite a long time ago now (6 weeks) I went to Ryan Carson's Fuel Conference, which was a conference all about marketing with and the marketing of Web 2.0 applications and services.

I recorded some great content that day (pictures, draft blog posts, video) and it is about time that I shared some of that. Writing it all up also allows me to reflect on some of the things that I learnt.

Looking at the blog posts that I drafted on the day, I can't tell where my own comment leaks into my record of what the speakers had to say. I have tried to convey the gist of each speaker's message, in a nutshell, with my own thoughts mixed in - hopefully I haven't misrepresented anyone.

Ryan gave the first presentation, here is what he had to say.

Nobody cares about your marketing message
  • Nobody cares about your marketing message.
  • Nobody cares about your company.

  • People do care about people: the real people behind your company.

  • So...
    • ...be honest
    • ...and be accessible
    • as a person!

  • Your customers want to talk to you.
  • Your customers want to talk with you.
  • Consider Wesabe: on the front page of their website is a link inviting you to Talk to Marc, CEO of Wesabe. The link takes you to a page with a phone number and the hours that Marc is available to take calls. [I don't know anyone who has talked to Marc this way.]

  • In practical terms, how do you be accessible?
    • Use Seesmic: asynchronous video conversations
    • Use Twitter: public instant messaging, status updates with history
    • Use Qik: video streaming from a (Nokia) phone
    • Use UserVoice: great site for gathering user feedback, [I have used this to give feedback on SlimTimer, which I love]
    • Use Facebook: social networking site
    • Use Plurk: Twitter competitor, like Twitter but more visual, supports comments and emotions (?) [username] [is/loves/likes/shares/gives/hates...]

  • You have a community as soon as you have one person who cares about you.
  • You should Tweet as often as you have something interesting to say.
  • Once you open up and become accessible there is no going back.

Tuesday, 1 July 2008

iSalesforce

So, a couple of months back, Matt and I went over to San Francisco for Google IO - the Google developer conference. We were also planning to catch up with some of our friends at Salesforce while we were out there and so thought that it would be fun to build some more integration between the two companies' technologies. About a week before we set out, the team sat down for a brainstorming session and we came up with iSalesforce - affectionately named in homage to Salesforce and iGoogle.

The idea was to build a customisable desktop / homepage much like iGoogle but within Salesforce using the new Visualforce technology. Here's an outline of some of the things that it can do,

  • Users can add and remove functional components to/from a page and arrange the components on the page via drag and drop
  • Components can be Google Gadgets or Visualforce pages, which effectively means anything you can display on a web page - including Salesforce dashboards
  • Different arrangements of components can be saved in separate workspaces
  • State is saved in Salesforce so that customisations are not lost between sessions
  • Components are setup and controlled using Salesforce custom objects
  • Rights and priveleges can be controlled using Salesforce roles and profiles if required
  • This is all achieved without once having to enter Salesforce application setup

After we had started building iSalesforce, and just before we went out to San Francisco, I was browsing the Salesforce IdeaExchange and came across the following two Ideas "Home Tab customizable by End-Users like iGoogle" and "Drag and Drop for Dashboard Editing" with 490 and 2,910 votes respectively. With custom homepages now available and using the unofficial reports API, iSalesforce could fix both those Ideas. I pointed this out to Mark Trang and Thomas Tobin from Salesforce and they encouraged me to offer iSalesforce as a solution. Neither Idea is on any product roadmap and Ideas are often closed by people other than Salesforce themselves, which is something I didn't know.

You might therefore be reading this post having followed a link from one of those two Ideas. If iSalesforce is something that you would like to use then leave a comment below or email iSalesforce[at]kusiri.com. Visualforce pages cannot yet be packaged for the AppExchange so we cannot simply release iSalesforce onto the AppExchange. There are, however, other ways of making Visualforce applications available to people and if there is enough interest in iSalesforce then we'll spend some time doing that.

Monday, 30 June 2008

Bill's last day

It was Bill Gates' last day at Microsoft on Friday. We (half) considered wearing black armbands to commemorate the event.


Microsoft homepage on Bill's last day

The Microsoft home page was almost entirely taken over by the advertisement of a Bill-retrospective.


Install Microsoft Silverlight

If you clicked through to watch the videos, then you were taken to an "Install Microsoft Silverlight" page - a nice final touch I thought. Proves that I still haven't installed Silverlight yet.


Amongst all of the press around the event my favourite has to be an article by Todd Bishop, who reproduced the full text of an email from Bill Gates entitled Windows Usability Systematic degradation flame - it is well worth reading.

My message to Bill,

"So long and thanks for Microsoft Excel - OneNote is pretty good too."

- - - - - - - - -

Disclosure: I used to work at Microsoft Research.

Friday, 27 June 2008

Salesforce Content

I have some outstanding blog posts to catch up with; principally from Ryan Carson's Fuel Conference but I also came across this neglected post that I started at the Dreamforce Europe conference. To explain: I have got into the bad habit of starting blog posts without finishing them. I get the majority of the content down but then fail to finish and publish. I'll have to see what I can do about that.

Anyway, I have some photographs of the Salesforce Content screens and I thought it was worth putting them out there for others to see.

Tim Barker, who is the product manager for Salesforce Content, was presenting and these are some raw notes that I made during the presentation along with some photographs of the screens.

I met Tim last year when we were doing some work for one of the large banks. We were looking at a way of automatically aggregating and managing content to deliver to users in Salesforce. There was no API for Salesforce Content back then, which meant that it was a bit of a non-starter for us - as we needed to dynamically insert content into Salesforce. I asked Tim the API question again at the end of his talk - and unfortunately there is still no API for Salesforce Content.

The Ajax UI is a bit of a departure for Salesforce. And a welcome one at that. I met Dani Pletter, who was the Lead UI Architect on Salesforce Content, when I was out in San Francisco for Google IO. He is now working on a major redesign of the main Salesforce UI so I think we can expect more good Ajaxy stuff like Content in the main app. We showed him some of the things we have been working on (K-Framework, iSalesforce) where we have been trying to reshape the way that you can interact with Salesforce.

Tim began his talk by explaining some of the inspiration for the different aspects of Salesforce Content: search with keywords (Google), preview before download (YouTube), tag content (Flickr), filter search results (Expedia), rate and review (Amazon), create custom alerts (Yahoo! Alerts).

The pictures aren't great and I apologise for that but you can see the screen details.



Salesforce Content - workspace

Every user has a workspace that displays featured content, top content, recent activity, and popular tags.



Salesforce Content - filters

It is possible to build filters to narrow the set of content displayed



Salesforce Content - preview

You have a full preview of the document available to you in the browser before you download it.



Salesforce Content - version tracking

Version tracking is supported



Salesforce Content - voting

Content can be voted on and comments can be added



Salesforce Content - subscribe to content

Users can subscribe to a document's feed which will alert them of any changes to the document. It is possible to subscribe to either a workspace or a document and control the frequency of alerts.



Salesforce Content - tagging

Content can be tagged. There are three types of tags: open tags (anything goes), guided tags (user can create their own tags or select from the suggested list), restricted tagging (users can only tag content with suggested tags).



All of the information about the document is stored in Salesforce. Document workspace membership, for example, is controlled through Salesforce user profiles. It is also possible to obtain feedback and data on content usage. Salesforce Content is available in Customer and Partner portals.

There is no limit to the size of documents that can be uploaded, there is no restriction on bandwidth, there is no restriction on the file types that can be uploaded. Pricing is based on total storage across an org. Uploaded content is handled differently with respect to preview and search et cetera - for example, the text in .doc, .pdf and .html documents is indexed for search. The use of content in workflow and approval processes will come later in the year.

Salesforce content comes from the acquisition of Koral. Salesforce themselves use Content across their 3,000 users and collated and published about 15,000 documents as part of the initial roll-out.

Friday, 30 May 2008

Live (Brief) Blog: GWT Extreme!

Ray Cromwell (Timepedia.org)

GwtQuery (aka GQuery) is jQuery ported to GWT. Sweet! It has some extra features though - compile time selector parsing, and optimisation by transforming into document.querySelectorAll() on Safari 3.1, on Firefox, Opera & older safari it uses the xpath document.evaluate(). On IE <8 it uses DOM & regexps - urgh, but necessary.

Generators - feature of deferred binding. It replaces requested type with generated calss definition, like in Ruby. Nice!

GwtQuery uses annotations and compilation to get a 5:1 code size decrease when compared to jQuery. The code is lean and readable, increadibly impressive. It's being released as an alpha today - definitely having a look at this asap!

Also demoed are a high performance graphics API for GWT, and a chart API - Chronoscope. Seeing 1 million rectangles animated in a browser, and 1 million points animated on a graph using javascript is impressive, I have to say.

Syndroid is interesting. It allows you to write gadgets in a restricted API and compile to Dalvik, JS or (in the future) AS3.

An interesting GWT to SWF technique was shown, and although a hack was pretty awesome. I wonder if there's a future in this?