# Saturday, 05 December 2009

Can't get any simpler than this (from Steve Marx's blog)

Saturday, 05 December 2009 17:11:42 (Pacific Standard Time, UTC-08:00)

I'm playing with Cool Sites this weekend. Hope to be out of Beta very soon, but one idea begets another and pretty soon my ambition turns this into a full-fledged product. www.CubicCompass.com is currently running on Cool Sites Beta 1.

Here's a sneak peek of the latest console (below).
Note: Cool Sites is a web Content Management System (CMS) running on the Force.com platform.

Saturday, 05 December 2009 11:52:15 (Pacific Standard Time, UTC-08:00)
# Friday, 27 November 2009
Microsoft announced at last weeks PDC that the project code-named Oslo is now SQL Server Modelling Services.

As any Salesforce.com Developer or Admin will tell you, the cloud has become synonymous with declarative database definitions and rapid application development.

Oslo, which originally started as a domain specific language modeling environment, will now apparently be positioned as a data and application modeling tool, complete with Visio-like drag and drop capabilities for developing Azure applications.

The disconnect between tools like Rational Rose and actual working object-oriented code has long been a problem. It'll be interesting to see if Oslo's models, err SQL Server Modelling Services, are co-dependent on actual code to ensure they stay in sync.

Friday, 27 November 2009 18:05:45 (Pacific Standard Time, UTC-08:00)

This video from the recent Microsoft developers conference provides an excellent overview of Azure. It's a little over an hour, but worth it.

Some takeaway points:

  • The Azure Table service that was introduced early on as a core platform feature, largely in response to Google's BigTable and Amazon's SimpleDB, no longer appears to be strategic to Azure.
  • SQL Azure lets Developers reuse existing SQL Server databases, stored procedures, and skills for storage in the cloud.
  • Applications are developed locally and pushed to the cloud.
  • Both staging and production environments are available for a 2 phase publishing workflow (nicely done!)
  • Azure instances run on virtual machines.
  • Provisioning is fairly low-level. Developers control how many CPU cores, RAM, and bandwidth resources. Pay for more as needed. Scale back when not needed.
  • Load balancing is built-in (although not clear to me how multiple SQL instances stay in sync)
  • Azure instances are language agnostic. Developers can run Ruby on Rails, PHP, or .NET apps. Basically anything that can run on IIS will run on Azure
  • Developer can choose from among several geographies when provisioning cloud apps.
  • All demo apps I've seen are running in the URL cloudapps.net. Not clear on how DNS fits in the mix, but apparently it's possible to have multiple domain bindings on a single VM for multi-tenant architecture
  • Copies exist of all data and apps for disaster recovery
  • Logging is done using existing native .NET APIs
  • It appears almost all APIs are accessible via PowerShell scripts. GUIs are starting to come online, demonstrating Microsoft's patience of getting the system level aspects done right before working on eye candy
Bottom line is that Azure is the real deal and is squarely looking to make up the ground lost to Amazon EC2. If you get a chance, I recommend checking out this guided tour of a next gen Azure container.

Friday, 27 November 2009 17:31:08 (Pacific Standard Time, UTC-08:00)

The principles behind Sun Tzu's Art of War have been carried forward from 6BC and are used today in all facets of business.

It wasn't until a re-reading earlier this year that I discovered the value and applicability of The Art of War to the agile development and distribution of software (aka SaaS or "cloud computing").

A chapter by chapter analysis resulted in the following slides that were assembled to further commit my understandings to memory. This was presented to the XPDX Portland Agile Users group earlier this year. The responses varied from sincere interest to blank stares :-)

As we try to revitalize Portland's Old Town and make it a haven for software entrepreneur's, I believe more than ever in the opportunity of using these principles and leveraging cloud computing platforms to launch new companies.

Friday, 27 November 2009 11:02:40 (Pacific Standard Time, UTC-08:00)
# Monday, 23 November 2009

I just returned from the 2009 Dreamforce conference last week. Prior to the conference, a few of us on Twitter were bouncing ideas around on how to track all the after hours events and arrange for meeting people while at the conference. Additionally, I was looking for something mobile-browser friendly since carrying a netbook around wasn't going to be practical.

I built the site http://www.dfbuzz.com using Force.com Sites as an excuse to try out a new UI library and address these requirements.

In the end, Twitter ended up being the best way to get realtime information on the conference 'buzz', but I did get some feedback from people that they discovered an event on DF Buzz, or that a comment left on an event was useful in making a decision on whether or not to attend.

Thanks to all the sponsors who posted their events. I have a laundry list of enhancements to make next year. :-)

Monday, 23 November 2009 14:22:00 (Pacific Standard Time, UTC-08:00)
# Saturday, 21 November 2009

Courtesy of here :-)

Saturday, 21 November 2009 14:55:40 (Pacific Standard Time, UTC-08:00)
# Saturday, 14 November 2009

I hope the buzz is true. If so, I plan to setup a netbook specifically for running Chrome OS. Even better if the netbook/OS can run Eclipse. I'll make it my "cloud machine" :-).

Saturday, 14 November 2009 11:13:25 (Pacific Standard Time, UTC-08:00)
# Wednesday, 11 November 2009
CodeRun is a fantastic site. I'm not sure how long it's been around, but sure wish I'd discovered it earlier.

While I'm impressed with any attempt to deploy a cloud-based IDE, most editors have their limitations, leaving me to fall back to using Visual Studio, Eclipse, or Notepad++ for 90% of all development work.

This leaves me to wonder if the web is so unique that the traditional IDE as a design metaphor perhaps shouldn't be carried forward. Since the cloud is a completely new way of managing IT assets and applications, should the development environment also be as innovative?

The CodeRun IDE first presents itself as a web version of Visual Studio.NET. It was almost scary to see such a faithful replication of the Windows based application entirely in HTML.

CodeRun has a fantastic Freemium model where you can start creating projects without even registering an account (I did in order to save my projects). When you're ready to deploy your application to the web, they provide paid services for hosting.

There are several project template options. It's weighted towards traditional C#/ASP.NET development, but there are options for both JQuery and PHP projects. I only played with the ASP.NET, ASP.NET Web Service Application, and JQuery templates.

I was most impressed by the built-in Intellisense. Just type a scoped entity and a drop down list of methods, properties, and interfaces appears (clicking tab to select an intellisense option didn't work like it does in VS). On the fly code highlighting is pretty good. I imagine tab and space management must be difficult to do in a browser IDE, and the code templates I played with had some problems with whitespace.

One use case I focused on was a State Tax webservice for an eCommerce shopping cart application. State sales tax rates don't change very often, which makes it easy to create a webservice that takes a US State input and returns a tax rate (I didn't delve too deep into return types. A production quality web service would be better off returning a more complete data structure).

Coding in C# then pressing "Build" to compile the project seemed very natural. Clicking on a build error took me to the offending line of code.

The "Debug" feature didn't work for me. Best I can tell, you're getting an actual virtualized ASP.NET instance for each project. I changed a namespace which resulted in a cryptic error, and when Debug didn't work I was able to access the actual ASMX file to update the namespace in code front.

The "Databases" feature didn't work either. It says it's in alpha, which I guess means it's a UI prototype (?). Anyway, most web apps would be better served to start from the ground up without a relational database. I would really like to see the concept of a cloud DB be something like CouchDB or a smart JSON store.

Overall, very amazing little tool. I think its borrowed enough from the old school to be familiar to many developers, and therefore easy to adopt. The challenge will be adding the cloud-specific features that help differentiate it from traditional IDEs.

The "I" in IDE is "Integrated". So, in a cloud context, I think this should mean exposing Google Code, Charts, Maps, Amazon S3, Force.com, StrikeIron, Facebook, Twitter, and any number of APIs directly in the IDE.
Wednesday, 11 November 2009 21:26:16 (Pacific Standard Time, UTC-08:00)
# Sunday, 08 November 2009

The term "Write Once, Run Anywhere" was Sun's slogan for illustrating a benefit of using Java. The justification being that Java runs on virtual machines, therefore not bound to any particular physical machines or hardware.

There are clear benefits to exploiting native features in cloud platforms today, but if a "Write Once, Run Anywhere" architectural strategy were available, what might that be?

The most basic components of an Internet application running in the cloud are JSON, Javascript, CSS, and HTML. There are, of course, abstraction development environments that automatically convert from a higher level language to one of these 4 formats.

Every storage solution in the cloud has their own approach to providing database services, but fundamentally they all manage Noun entities (aka tables) that have properties (columns). Cloud storage services also typically provide a web service, or controller tier for getting data out and putting data in.

Design considerations for "write one, run anywhere in the cloud" include:

  1. Embrace the core technologies freely found on the Internet and supported in all browsers
  2. Identify the fundamental Noun entities and properties. Keep it simple.
  3. Use multi columnar design over more complex 4NF schemas.
  4. Modularize the application functions that send/receive data to/from cloud services.
  5. Consider using a client-side database like TaffyDB for managing JSON in the browser.

This architectural pattern is more than a portability enabler. It's actually required for applications that aggregate multiple web services in a single application or use cross-site XHR.

Sunday, 08 November 2009 18:24:44 (Pacific Standard Time, UTC-08:00)