IgorShare Thoughts and Ideas

Consulting and Training

Archive for March, 2009

CodeCamp 11 Presentation: Best Practices in building scalable cloud-ready Service based systems

Posted by Igor Moochnick on 03/29/2009

This Saturday I’ve held a “Best Practices” Zen-style discussion during the CodeCamp #11 in Waltham.

Some people were great, but I really expected to have more heated discussions and interesting “war” stories.

You can find the slide deck on the SlideShare

Posted in ADO.Net, Azure, Cloud, Data Services, Presentations, WCF, Web | Leave a Comment »

Oslo: Basic M grammar for a generic Language

Posted by Igor Moochnick on 03/23/2009

I’ve noticed that each time when I need to create yet another language definition or some rules grammar, I write the same (or a very similar) “prelude”. I guess that you do the same thing. To simplify the process I’ve crystallized this basis into a simple module. It contains the definition of a Whitespaces, Single- and Multi-line comments and a commands list. You can reuse this module by importing it into your language definition.

Here is the example of a very simple language:

// This is a comment

This_is_some_command;
This_is_another_command;

/* This is a multi-
line comment */

This_is_the_last_command;

The grammar is pretty trivial (if you reuse the foundation grammar – note the import in the beginning):

module SomeLanguageModule
{
    import LanguageBaseModule { Common as C };

    @{CaseInsensitive}
    language RulesDefinition
    {
        // Delimiters
        @{Classification["Delimiter"]}
        token commandDelimiter = ";";

        token Command = c:(C.AlphaNum | "_")+;
       

        // The Program
        syntax Main
            = C.CommandList(Command, commandDelimiter);

        // Ignore whitespace
        interleave Whitespace = C.Whitespace | C.Comment | C.MultiLineComment;
    }
}

The middle section of the grammar  (Command) is where you concentrate your development efforts. Make sure to replace the Command “token” with Command “syntax”.

The Tree result from this grammar and the sample, shown at the top of this post, looks like this:

Main[
  [
    "This_is_some_command",
    "This_is_another_command",
    "This_is_the_last_command"
  ]
]

Download the sample language and the grammar from my SkyDrive.

See the LanguageBaseModule grammar after the break …

Read the rest of this entry »

Posted in M, Oslo | Leave a Comment »

Enabling coloring scheme in IntelliPad

Posted by Igor Moochnick on 03/17/2009

So many times I’ve noticed the nice coloring on the left side of the IntelliPad and followed all the instructions and, after defining all the necessary classifications, nothing happened.

The solution is very simple. [All this information I’ve found on the IntelliPad Team blog – these guys publish a lot of interesting stuff].

Apparently there is an IntelliPad Classification format configuration file. All the color scheme is defined there.

Just edit the file “%ProgramFiles%\Microsoft Oslo SDK 1.0\Bin\Intellipad\Settings\ClassificationFormats.xcml”. This is how to make the keywords blue:

Posted in Uncategorized | Leave a Comment »

Principles for Scalable Service Design

Posted by Igor Moochnick on 03/10/2009

clip_image001

I’m preparing a presentation for the upcoming CodeCamp about the best practices in building enterprise system that can scale to the cloud and stumbled on a real gem – the Dr. Werner Vogels Availability & Consistency presentation during QCon 2007. For those who doesn’t know – Dr. Werner Vogels is VP & CTO at Amazon.com.

In this presentation Dr. Vogels in crystal clear way lays out all the principals that I was a big promoter for the last 10 years. I agree with him on 100,000% and really think that the future is with the BASE scalable systems (and not with ACID) simply because ACID propagates the error to the end user whereas BASE system deals with errors locally. I do agree that in some rare cases ACID is the easier and cheaper way to go, but still sure that even those cases is possible to implement as BASE system.

The Dr. Vogels recipie for success is build system following this menu:

  • Autonomy
  • Asynchrony
  • Controlled concurrency
  • Controlled parallelism
  • Decentralize
  • Decompose into small well-understood building blocks
  • Failure tolerant
  • Local responsibility
  • Recovery Built-in
  • Simplicity
  • Symmetry

Posted in Community, DB, Design, Presentations, Thoughts | 1 Comment »

DemoCamp Boston #1

Posted by Igor Moochnick on 03/10/2009

We’ve presented our Amigle startup during  the very first local DemoCamp Boston. The event was organized very well – everything was on schedule and worked as a clock. As a personal preference I’d like to see more vibrant presenters and presentations the next time.

See the full album on Picasa.

Posted in Community | Leave a Comment »

ADO.Net Data Services presentation @ NEVB User Group

Posted by Igor Moochnick on 03/09/2009

clip_image001

Had a pleasure presenting ADO.Net Data Services (Astoria) to the New England VB User Group last Thursday.

Had a lot of fun and there were a lot of great questions.

Feel free to shoot me any questions and you’re welcome to download the PowerPoint slide deck and BeerFest  example source code (yes, we’ve talked about beer tastings ;-).

The slides are based on the Mix’08 and PDC’08 talks.

Decided to give a try to SlideShare and published the presentation there as well.

Posted in .NET, ADO.Net, ASP.NET, Community, Data Services, Presentations, Web | 2 Comments »