Showing posts with label Tesla. Show all posts
Showing posts with label Tesla. Show all posts

Thursday, December 06, 2007

First Volta CTP Available from Microsoft Live Labs

The first public attempt by Erik Meijer to "Democratize the Cloud" is ready as of 11:00 AM PST, December 5, 2007, for VS 2008 developers to test-drive a Community Technical Preview. You can read the details about Volta, a product of the Tesla incubator group, and download the first CTP from Microsoft Live Labs' newly minted Volta site.

There's also a Q&A session with Erik Meijer on PressPass and a Volta forum for developers. 

According to Erik's Democratizing the Cloud using Microsoft Live Labs Volta post today on the Lambda the Ultimate forum:

Volta is a collection of tools that enable programmers to develop asynchronous and distributed (including but not limited to AJAX) applications by successive refactoring of normal, sequential, programs written in standard .NET languages (this CTP requires Visual Studio 2008) and deploy the resulting applications on a wide variety of target platforms (this CTP supports Internet Explorer and FireFox). Or as I sometimes say when I am trying to sound like a marketing person "Volta stretches the .NET platform to cover the Cloud" [two-part video clip.] Volta allows programmers to concentrate on the essential complexity involved in building AJAX application and have our tools take care of the gory details and accidental complexity. ...

Volta embraces the Lean Programming principle of delaying irreversible decisions until the last possible responsible moment. In particular we want to delay decisions about distribution as long as possible. To help developers make informed decisions about the distribution a program across tiers, the Rotunda profiler from MSR is fully integrated in the Volta toolchain. By automatically injection hooks for all interesting events, Rotunda creates trace information that can be inspected using the standard Service Trace Viewer tool. [Emphasis added.]

Updated: 12/8/2007

Jeff Atwood quotes and analyzes the Poppendiecks' definition of the Last Responsible Moment in his October 17, 2006 post:

Concurrent software development means starting development when only partial requirements are known and developing in short iterations that provide the feedback that causes the system to emerge. Concurrent development makes it possible to delay commitment until the last responsible moment, that is, the moment at which failing to make a decision eliminates an important alternative. If commitments are delayed beyond the last responsible moment, then decisions are made by default, which is generally not a good approach to making decisions.

See the "Erik Meijer Compares Volta and Google Web Services for Mary Jo Foley" topic of the LINQ and Entity Framework Posts for 12/3/2007+ post for additional input from Erik.

Volta Project Description and Sample Applications

The Volta site provides a more detailed description:

The Volta technology preview is a developer toolset that enables you to build multi-tier web applications by applying familiar techniques and patterns. First, design and build your application as a .NET client application, then assign the portions of the application to run on the server and the client tiers late in the development process. The compiler creates cross-browser JavaScript for the client tier, web services for the server tier, and communication, serialization, synchronization, security, and other boilerplate code to tie the tiers together.

Developers can target either web browsers or the CLR as clients and Volta handles the complexities of tier-splitting for you.  Volta comprises tools such as end-to-end profiling to make architectural refactoring and optimization simple and quick. In effect, Volta offers a best-effort experience in multiple environments without any changes to the application.

Here's a screen capture of the Virtual Earth sample client application:

Click image above to display full-size capture. 

Clicking the C# Code tab displays the C# (not JavaScript) code running in the client to perform the actions in the left-hand bulleted list.

Background

Following are links to previous OakLeaf posts on LINQ 2.0, Volta, Tesla, and "Democratizing the Cloud":

There's no mention of "LINQ 2.0" or even LINQ anywhere on the live.com site. Apparently, LINQ 2.0 will go its own way independently of Volta as the next version of LINQ.

Limitations and Comments

According to the Volta Known Issues and Limitations page:

One of the benefits of Volta compiling to MSIL before the destination runtime, rather than source-to-source translation, is that developers can use multiple .NET programming languages to build Volta applications and controls, including C# and Visual Basic. However, currently you will encounter several limitations when using Visual Basic, including:

  • Late binding is not supported.
  • Services from My (such as User, Computer, etc.) are not supported.

The following are also unsupported unless explicitly specified otherwise:

  • Conversion functions. For example, the Cint conversion function works only if the underlying type supports the conversion.
  • Helpers and VB6 legacy. For example, the Beep method is unsupported.

So VB again is a second-class citizen, even in project intended to "democratize" a technology.

According to a forum message, you can't use Volta with VS 2008 Express editions because they don't allow loading the extensions that are required to run Volta.

Expect to hear more about Volta after I download the bits and give it a test drive.

Moved: 12/6/2007 from LINQ and Entity Framework Posts for 12/3/2007+

Technorati Tags: , , ,

Monday, December 03, 2007

LINQ and Entity Framework Posts for 12/3/2007+

Note: This compendium is updated daily or more often, depending on availability of articles.

Scott Guthrie: ASP.NET 3.5 Extensions Due on Sunday by Monday 12/10/2007

Scott says at the beginning of his December 8th Links: ASP.NET, ASP.NET AJAX, ASP.NET MVC, .NET, VS 2008 post:

Several people have pinged me asking for the download location of the ASP.NET 3.5 Extensions Preview.  We were hoping to post it on the web Friday, but unfortunately found a late bug that we felt needed to be fixed.  The team is working this weekend to sign off on the new build.  We hope to be able to post it as soon as this is done - apologies for the delay.

Scott didn't mention any holdbacks, so we should be safe in assuming that all these pieces will be included:

  • ASP.NET MVC
  • ASP.NET AJAX Improvements
  • ASP.NET Dynamic Data Support
  • ASP.NET Silverlight Support
  • ADO.NET Data Services (Astoria)

He posted his article about noon on Saturday for a change. (Not in the middle of the night.)

Added : 12/7/2007

Update 12/9/2007: I asked Scott in a comment to his post: Will all five items (MVC, AJAX Improvements, Dynamic Data Support, Silverlight Support, Data Services (Astoria)) ship with this forthcoming drop? His reply:

Yes - this preview will include all of those features.

Regarding the release date, Scott said in another comment:

Sorry about the delay.  We are hoping to have the bits live early Sunday - so keep an eye out for them then.  That way you have at least half of the weekend to play with them.

The December 6, 2007 Microsoft Simplifies Data-Centric Development in Heterogeneous IT Environments press release contains this ASP.NET 3.5 Extensions preview link to the download. It 404'd as of 07:30 on 12/9/2007.

Update 12/10/2007: The preceding link is now live. See ASP.NET 3.5 Extensions Preview Released for details and a screen capture of a page generated by ASP.NET 3.5 Dynamic Data scaffolding.

How to Merge SSDL, MSL and SSDL Files into an EDMX Designer File

Courtesy of Danny Sullivan's How To: use your existing CSDL/MSL/SSDL files in the Entity Designer CTP2 post of December 7, 2007, you can read Sanjay Nagamangalam's detailed instructions for merging SSDL, MSL, SSDL and designer metadata into the single Container.edmx file introduced by Entity Framework (EF) Beta 2 and required by EF Beta 3.

Before you go through the first steps of the process, be sure to observe this warning:

NOTE: Manually edited .edmx files may not display in the designer if they have content not supported by the designer. These include Complex Types, TPC mapping, C-Side conditions, schema references (“using”), query views, defining queries, command text, unmapped abstract types, and multiple entity sets per type. Please refer to the ReadMe for more details.

Added : 12/7/2007

ADO.NET Data  Services CTP1 "Almost Here" with LINQ to Astoria, New Wire Formats, and Increased Security

Astoria PM Mike Flasko's ADO.NET Data Services == Project "Astoria" post of December 7, 2007 formalizes the name change from "Project Astoria" to to "ADO.NET Data Services" and confirms that CTP 1, which is "almost here," will support two scenarios with a pluggable data layer:

  • Exposing the Entity Data Model's conceptual view of a database to the Web with the Entity framework (the original scenario)
  • Exposing as conceptual views data from arbitrary, non-relational data sources that are accessible by an IQueryable provider with update extensions.

CTP1 also will include LINQ to Astoria for translating LINQ queries into the new URI query syntax that Pablo Castro discussed in his URI Format - Part 1 - Addressing resources using URI path segments post of September 21, 2007. (There's no Part 2).

Added : 12/7/2007

Alex James Explains How to Perform Bulk Updates with LINQ to Entities: Part 1

Entity SQL v.1.0 doesn't include DML keywords, so you must use LINQ to Entities if you want to insert, update, or delete entities rather than operate on physical rows in the persistence store (a.k.a. database) directly. To update or delete entities, you must bring the entities into memory with the appropriate LINQ query before you modify or destroy them. Alex contends that this process "seems somewhat wasteful considering you could do this in T-SQL with one very simple update statement, thereby bypassing all the query, hydration and cross process shipping costs" when performing a batch update or deletion.

In his previous post of December 4, 2007 (see below), Alex promised "to demonstrate how you can perform bulk updates with LINQ to Entities in his next post." In this post he shows about half of the process of creating a generic Update<T>() function with the following signature:

public static int Update<T>(
this IQueryable<T> queryable, Expression<Func<T,T>> updator) where T: EntityObject, new()
{

}

Alex promises to implement the Update<T>() function in his next post.

Question: Is an updator a relative of the velociraptor?

Added : 12/7/2007

Erik Meijer Compares Volta and Google Web Services for Mary Jo Foley

ZDNet Blogger Ed Burnett called Volta a late-coming Google Web Toolkit (GWT) imitation in his December 5, 2007 Microsoft creates GWT clone column, so Mary Jo Foley enticed Erik Meijer to respond. His explanation of how the two products differ is the subject of Mary Jo's December 7 Microsoft architect compares Volta and Google’s GWT post.

Erik contrasts the multi-lingual and tier-splitting capabilities of Volta with the GWT's Java-only source code input with the GWT compiler converts to JavaScript. Changing a Volta method from synchronous to asynchronous invocation only requires decorating the method signature with an [Async] attribute; doing the same with the GWT requires significant added code. Erik points out a number of other differences that favor Volta in the post.

Added : 12/7/2007

Beth Massi Does Word MailMerge the Hard Way

Beth's Mail Merging with Word, LINQ and XML Literals in VB describes how to replace Word's MailMerge Wizard with LINQ to SQL and LINQ to XML to generate the .xml part of Word .docx files.

The most interesting part of the post is her use of the Package.DeletePart() and Package.CreatePart() methods from the System.IO.Packaging namespace to refresh the .xml component of the .docx file with the correct merge data.

The System.IO.Packaging namespace contains objects and methods for creating or modifying Office Open XML, XAML, XPF, and other files that conform to the Open Packaging Conventions (OPC) specification, which is part of the ECMA Office Open XML document interchange specification (ECMA-376).

On the whole, however, I think using the MailMerge Wizard is quicker.

Added : 12/7/2007

Rick Strahl Explores LINQ to SQL C# Connection Strings

In his LINQ To SQL and the Web.Config ConnectionString Value post of December 7, 2007, Rick examines how the C# DataContext constructor handles default connection strings for Web sites and class libraries.

Added : 12/7/2007

Eric White: Four LINQ to XML Performance Posts

The XML Team's Eric White has assembled four performance-related posts:

Each post provides a narrative about the performance impact of the topic but doesn't compare actual execution times.

Miguel de Icaza: Moonlight 1.0 Due in Six Months, 1.1 to Follow Shortly

Mary Jo Foley reports in her First Moonlight port of Silverlight to Linux due in six months post of December 6, 2007 that Novell's VP of Developer Platform and lead Mono/Moonlight contributor, Miguel de Icaza, said at the XML 2007 conference in Boston that the Moonlight 1.0 port for Silverlight 1.0 on Linux will be fully cooked in 6 months.

Mary Jo also quoted Miguel as saying Moonlight 1.1, which includes Mono, "will be ready shortly thereafter and Moonlight 2.0 will follow Silverlight 2.0's RTM by about six months.

Added : 12/6/2007

Entity Framework Beta 3 Available for Download

What it says. The files are here:

The background and links to related posts are in the Entity Framework Beta 3 Available for Download.

Added : 12/6/2007

Brian Beckman Interviews Sam Drucker About the Entity Framework

Microsoft's "Renaissance Man" of mathematics, physics, set theory, etc., Brian Beckman, interviews Data Programmability General Manager Sam Drucker about object/relational modeling (O/RM) with inheritence and other hard-core Entity Framework (EF) issues in this 1:03 Channel9 video segment of December 5, 2007, Expert to Expert: Brian Beckman and Sam Druker - Deep Entity Framework.

Sam gives what I think is the clearest view of the value-add of the Entity Data Model in an environment where databases have an order-of-magnitude greater lifetime than their front-end applications. He also explains why the Astoria team used EF in their .NET Data Services.

Added : 12/6/200

Scott Guthrie Explains Passing ViewData in the ASP.NET MVC Framework

Scott's ASP.NET MVC Framework (Part 3): Passing ViewData from Controllers to Views of December 6, 2007 (at 2:49 AM) explains how to deliver a Northwind Category and its Products from a LINQ to SQL DataContext to a label bulleted list in a view using a ViewData dictionary (key and string value) or strongly-typed List<Product>.

Scott doesn't seem to require the traditional eight hours of sleep.

Added : 12/6/2007

Mike Taulty on Asynchronous LINQ to SQL Queries and the DataContext.Translate() Method

Mike's LINQ to SQL: Asynchronously Executing Queries post of December 6, 2007 outlines an approach to executing LINQ to SQL queries asynchronously with the DataContext.GetCommand() method and then with DataContext.BeginQuery(IQueryable) and DataContext.EndQuery(IQueryable) extension methods.

His same-day LINQ to SQL: DataContext.Translate and Anonymous Types post observes that the DataContext.Translate() method wants a concrete type as its argument and won't accept an anonymous type. (The VS 2008 docs say that the Translate() method converts an existing DbDataReader to objects. Each row in the DbDataReader is converted to an object in an IEnumerable<(Of <(T>)>) sequence.

Added : 12/6/2007

Zlatko Michailov Explains Entity SQL's Canonical Functions

Zlatko says Beta 2 introduced Entity SQL's canonical functions for which the Entity Framework defines the syntax but the .NET Data Framework API defines the behavior for a specific data provider. His Entity SQL: Canonical Functions post provides a brief description of the canonical functions.

The ADO.NET Entity Framework > Feature Reference > .NET Framework Data Provider for SQL Server path to the Canonical Functions list for SQL Server that that Zlatko's post provides doesn't exist for the Feature Reference topic that purports to be for Beta 3 or Beta 2's AdoNetEntityFramework.chm help file, which appear to be identical.  Maybe Zlatko has the real Beta 3 documentation.

  • Update: The online files were out of sync as of 12/6/2007 13:30 with the help files installed by the Beta 3 runtime. See my Entity Framework Beta 3 Available for Download for more details.

  • Added : 12/6/2007

    Rodney Lake Clones LINQ to SQL DataContext for Attach Operations

    New Zealand developer Rodney Lake's Clone Entity method for LINQ to SQL Datacontext post of December 6, 2007 includes the source code for a CloneEntity() method that creates by reflection a new instance of a DataContext with the same values as the original entity. You can attach the clone to a DataContext for update "without any problems" using this syntax:

    MyEntityType newUnattachedEntity = dataContext.CloneEntity <MyEntityType>(oldAttachedEntity);

    His post provides the C# source code for the method.

    Added : 12/6/2007

    First Volta CTP Available from Microsoft Live Labs

    The first public attempt by Erik Meijer to "Democratize the Cloud" is ready as of 11:00 AM PST, December 5, 2007, for VS 2008 developers to test-drive a Community Technical Preview. You can read the details about Volta, a product of the Tesla incubator group, and download the first CTP from Microsoft Live Labs' newly minted Volta site.

    Erik originally referred to Volta as "LINQ 2.0", which established its association wtih LINQ for these posts. The LINQ 2.0 prefix is no longer in use, but we'll continue to report on Volta's progress (partly because Erik Meijer is considered by most to be the "Creator of LINQ.")

    More details and a sample screen capture from the Volta samples are at First Volta CTP Available from Microsoft Live Labs.

    Added : 12/5/2007, Updated: 12/6/2007

    VB Hands On Labs for VS 2008 RTM Released

    You can download the Visual Basic LINQ Hands On Labs for Visual Studio 2008 package dated December 3, 2007 from the Download Center. (I don't recommend trying the Beta version of the proposed Silverlight "upgrade," if you're given the opportunity. The eye candy detracts from usability.)

    Here's the Overview:

    These Visual Basic LINQ Hands-on Labs provide an introduction to the LINQ Project. Learn basic LINQ features, including the Standard Query Operators, and see how these features can be used against in-memory collections, connected databases, and XML documents. The labs also provide a clear picture of the relational data access support provided by the LINQ Project, referred to as LINQ to SQL.

    Added: 12/5/2007

    Zlatko Michailov Digs into ObjectQuery<T>.ToTraceString() and .CommandText

    Zlatko's What Do ObjectQuery’s Builder Methods Build post of December 4 describes how removing the command tree from the process of constructing Entity SQL from a LINQ to Entities query in Beta 2 lost the ability to expose the Entity SQL's intermediary text and the final SQL statement. Beta 3 adds ToTraceString() method for Entity SQL and CommandText property for SQL to the ObjectQuery<T> object. His How to Get the Native SQL from an ObjectQuery and How to Get the Native SQL from an EntityCommand explain the process in excruciating detail.

    Using the ToTraceString() method was the topic of Alex James' ObjectQuery<T>.ToTraceString() and possibilities... post of December 4, 2007 (see Below).

    Added: 12/5/2007

    Faisal Mohamood Signs on as New ADO.NET Program Manager

    The ADO.NET Team announced in New ADO.NET Team Members - Part 2 of December 4, 2007 that Faisal Mohamood is a new program manager for LINQ to SQL and Entity Framework Object Services.

    Apparently, Faisal doesn't plan to start his own LINQ-related blog (yet). He has an ASP.NET Weblog with a last posting on December 14, 2004 and a SlashStar blog about his job as an MSBuild PM with four posts in 2005. He made several contributions to the MSBuild Team Blog in 2006, so you might watch for his posts in the ADO.NET Team blog.

    It's nice to see the ADO.NET team taking my suggestion about announcing new staff members.

    Added: 12/5/2007

    LINQ to XSD Redux and LINQ to Stored XML Coming

    It appears that the Data Programmability/XML Team is ready to continue Ralf Lämmel's efforts to make strongly typed LINQ to XML queries a reality by rejuvenating the LINQ to XSD project.

    Shyam Pather is presenting LINQ to XML: Visual Studio 2008, Silverlight, and Beyond session tomorrow at the XML 2007 conference in Boston.Shyam's abstract for the session discusses LINQ to XSD as one of the LINQ to XML Team's two incubator projects.

    The other incubator project is LINQ to Stored XML for querying SQL Server 2005+'s xml datatype.

    Read all about it here.

    Added: 12/4/2007

    Bill Horst Translates T-SQL to LINQ Queries: Part 3

    Converting SQL to LINQ, Part 3: DISTINCT, WHERE, ORDER BY and Operators (Bill Horst) continues the VB Team's weekly posts that compare T-SQL and corresponding LINQ query syntax.

    Added: 12/4/2007

    Alex James takes the Wraps off ObjectQuery<T>.ToTraceString()

    Alex's brief ObjectQuery<T>.ToTraceString() and possibilities... post of December 4, 2007 describes the forthcoming ToTraceString() method of the Entity Framework's ObjectQuery<T> object. ToTraceString() performs the same function as LINQ to SQL's DataContext.Log without having to resort to TextWriter and StringBuilder objects.

    Alex promises to demonstrate how you can perform bulk updates with LINQ to Entities in his next post.

    Added: 12/4/2007

    The ADO.NET Team's New ADO.NET Team Members - Part 3 post of December 5, 2007 finally confirmed Alex's new occupation.

    Updated: 12/5/2007

    Beth Massi Spots Northwind Customers with LINQ to XML and Virtual Earth

    Beth's Northwind Meets Virtual Earth - Generate VE Maps with LINQ post of December 3, 2007 describes a VB application that uses LINQ to XML and Locative Technology's http://geocoder.us service to geocode the addresses of Northwind's Oregon customers into <latitude> and <longitude> pairs of RSS <item> elements. JavaScript code then sends the RSS document to Virtual Earth and returns an .aspx page that contains a map with a pin at the location.

    You can download the source code here.

    Added: 12/4/2007

    Mike Taulty Posts LINQ to XML Annotations and Events

    Mike's Video - LINQ to XML Events and Annotations post and video clip of December 3, 2007 deals with two seldom-used LINQ to XML features:

    • The Annotations property of an XElement or XAttribute let you associate any object with a specific location in your document.
    • The Change event fires when any change occurs to the document; eventArgs return the type of change.

    The post include a set of links to Mikes prior LINQ to XML video clips.

    Added: 12/4/2007

    Pablo Castro Gives Astoria Schedule in Guy Smith-Ferrier Interview

    This 28-minute Podcast: Pablo Castro On Astoria consists of a question-and-answer session recorded at Tech*Ed Developer, Barcelona. At about 2:50, Pablo gave the following development schedule for .NET Data Services (formerly code-named Project Astoria):

    • December CTP: December 2007 (first CTP from the "real" codebase)
    • Beta 1: Early 2008
    • RTM: First half 2008 ("near the middle of the year")

    Other topics include:

    • Future integration of Astoria with the Visual Studio platform
    • Differences between Amazon and SQL Server's SQLXML
    • DBA FUD with URI-based dynamic queries
    • LINQ to Astoria client with a LINQ-to-URI converter
    • Concurrency with timestamp ETags
    • Transactions

    Guy's 12/3/2007 post includes a link to the slides from his Astoria presentations.

    Added: 12/4/2007

    LINQ to SQL Beta 2 to RTM Breaking Changes Summary

    Jim Wooley reports in his More on VS 2008 breaking changes post of December 3, 2007 that you can download the summary of Dinesh Kulkarni's LINQ to SQL Beta 2 to RTM Breaking Changes as a .docx file.

    Jim also notes that a Visual Basic and C# Breaking Changes from Visual Studio 2005 to Visual Studio 2008 white paper is available, too.

    Danny Simmons Diagrams the Entity Framework

    In his Concepts Part II: Relationships post of December 2, 2007, Entity Framework, Danny Simmons provides a detailed diagram showing the relationships between Customer, SalesPerson, Order, and OrderLines entities, Relationship Manager, EntityReference, EntityCollection, ObjectStateManager, and ObjectStateEntry for each Entity.

    Here are the topics Danny covers in his narrative:

    • ObjectStateManager: Value-view over the Object Graph
    • RelationshipManager: Late-bound Access to Relationships in the Object Graph
    • Stubs: Working with Relationships and Partial Graphs

    My background is engineering, so I appreciate diagrams that show how software works.

    Note: The post relates to Danny's earlier Creating an original value object from the separate values stored in the ObjectStateManager post of November 21, 2007.

    Mike Taulty Demonstrates Streaming XML Output from LINQ to XML

    Mike's Video - LINQ to XML and Streaming Out Large Documents post of December 3, 2007 demonstrates how to use the new XStreamingElement class. Unlike XElement, XStreamingElement defers the execution of a query until the result is required, which reduces memory requirements for large documents.

    The description of the video is "Short video on working with table valued parameters in LINQ to XML," but there's no evidence I can find of an SQL Server 2008 table-valued parameter in the clip.

    Mike's post includes a collection of links to his earlier LINQ to XML videos.

    Julie Lerman Posts PowerPoints of Her DevTeach and DevConnections Sessions

    Julie's DevTeach and DevConnections session PowerPoints uploaded of December 1, 2007 contains links to the following LINQ and Entity Framework-related presentations:

    • ADO.NET Entity Framework Overview
    • Real World Entity Framework (multi-tier issues and patterns)
    • ADO.NET 3.5 Data Access Guidance
    • Access RESTful DataServices in the Cloud (aka Astoria/ADO.NET DataServices)
    • Databinding in ASP.NET with LINQ

    (The Real World Entity Framework slides were 404 the last time I checked.)

    Luke Marshall Replaces DTC with a LINQ to SQL Transaction Resource Manager Class

    Luke provides the source code for the LinqTransaction.SharedDataContext class library in his Avoiding MSDTC with LINQ to SQL post of December 3, 2007. The purpose of the class is to share a single DataContext across multiple operations within a single transaction so as to avoid loading the Distributed Transaction Controller. 

    Off-Topic: Pat Helland Continues His Tech*Ed Travelogue

    Monday -- The Coliseum, the Forum, the Palatine Hill, and the Pantheon -- Wow!! of December 5, 2007 covers several Roman tourist hotspots.

    Added: 12/5/2007

    His Sunday -- Cold Outside but Loved the Museum... of December 2, 2007 covers the pair's Sunday (November 17) in Rome. 

      • Tuesday, August 14, 2007

        Erik Meijer to Demo Volta for the First Time at OOPSLA 2007

        Erik Meijer, the "Creator of LINQ," will make four—count 'em, four!—presentations to the ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA) 2007 conference in Montréal, Canada, from October 21 through 24, 2007.

        Democratizing the Cloud with Volta (Demo)

        Volta is a Tesla incubator project that's charged with development of LINQ 2.0. According to Erik, "We've made very good progress in turning ideas into working code. In particular, the declarative tier splitting is really cool."

        This is the first scheduled public demo of Volta's tool-assisted approach to dividing client/server applications into n-tier projects automatically. Here's the latest abstract from Erik's updated paper:

        Programming distributed data-intensive web and mobile applications is gratuitously hard. As the world is moving more and more towards the software as services model, we have to come up with practical solutions to build distributed systems that are approachable for normal programmers. Just like Visual Basic democratized programming Windows by removing much of the boilerplate, such as message pumps and window handles, that contributed more to the problem than to the solution, we propose a toolkit of language extensions, APIs, and tools that do the same for web programming. As a result, ordinary programmers can concentrate on the essential aspects of building distributed and mobile applications such as partitioning and flowing code and data across tiers, deployment, security, etc. without getting bogged down in low level details.

        Here's a link to Erik's earlier "LINQ 2.0: Democratizing the Cloud" paper, as well as Mary Jo Foley's August 8 2007 A (Microsoft) Code Name a Day: Volta and April 23, 2007 Volta: Microsoft’s dev platform in the Cloud? posts. Here's my original post March 16, 2007 "LINQ 2.0" in Early Returns from QCon 2007, London and subsequent May 18, 2007 Erik Meijer and LINQ 2.0 - Round 2 and August 2, 2007 QCon 2007 and Erik Meijer Coming to San Francisco November 7 - 9 items.

        Confessions of a Used Computer Language Salesman (Essay)

        Erik wrote "Confessions of a Used Programming Language Salesman: Getting the Masses Hooked on Haskell" for The 11th ACM SIGPLAN International Conference on Functional Programming (ICFP 2006), held in Portland, Oregon on September 18-20, 2006, but his PDF file doesn't carry the ICFP copyright. Here's the OOPSLA abstract:

        Programmers in the real world wrestle every day to overcome the impedance mismatch between relational data, objects, and XML. For the past ten years we have been working on solving this problem by applying principles from functional programming, in particular monads and comprehensions. By viewing data as monads and formulating queries as comprehensions, it becomes possible to unify the three data models and their corresponding programming languages instead of considering each as a separate special case. To bring these theoretical ideas within the reach of mainstream programmers, we have worked tirelessly on transferring functional programming technology from pure Haskell, via Comega to the upcoming versions of C# 3.0 and Visual Basic 9 and the LINQ framework. Functional programming has finally reached the masses, except that it is called Visual Basic instead of Lisp, ML, or Haskell!

        I first wrote about this paper in my May 16, 2006 Erik Meijer Promotes LINQ at Expo-C 2006 post, but this might be the paper's first formal presentation.

        Lost in translation: Formalizing proposed extensions to C# (Paper)

        Erik's giving this paper in conjunction with Gavin Bierman (Microsoft Research Cambridge) and Mads Torgersen. Here's the OOPSLA abstract:

        Current real-world software applications typically involve heavy use of relational and XML data and their query languages. Unfortunately object-oriented languages and database query languages are based on different semantic foundations and optimization strategies. The resulting "ROX impedance mismatch" currently makes life very difficult for developers. Microsoft Corporation is currently developing extensions to the .NET framework to facilitate easier processing of non-object-oriented data models. Part of this project (known as "LINQ") includes various extensions to the .NET languages to leverage this support. In this paper we consider the current proposals for C# 3.0, the next version of the C# programming language. We give both an informal introduction to the new language features, and also a precise formal account by defining a translation from C# 3.0 to C# 2.0. This translation also demonstrates how these language extensions do not require any changes to the underlying CLR.

        Apparently, Gavin's still at work on the paper, but here's a link to an earlier related presentation, "Formalizing and extending C] type inference (Work in progress)" that Gavin presented at the 2007 International Workshop on Foundations and Developments of Object-Oriented Languages (FOOL/WOOD '07).

        LINQ from the Source (Demo)

        Erik and Ted Neward (Ted Neward and Associates) will join in delivering this 3.5-hour demo that Erik says will be an "introduction to the various LINQ parts with lots of code samples and many questions from the audience. It's great to see that LINQ is catching on!" Here's the OOPSLA abstract:

        Language Integrated Query (LINQ) is one of the hot technologies in the next version of Visual Studio. In this session, hosted by one of the designers of VB9, C# 3.0, LINQ to Objects, LINQ to XML, and LINQ to SQL, we will drill down into all the gory technical details behind LINQ, as well as its practical applicability to modern development projects, from large-scale enterprise systems to "tiny webapps on a big database" projects. This is a unique opportunity to get a first hand account of this new technology, the design process, and historical context.

        Ted Neward is the author of the infamous "Object/Relational Mapping is the VietNam of Computer Science" essay.

        Update 8/15/2007: Unrelated links have moved to LINQ Updates for 8/15/2007.

        Friday, March 09, 2007

        Streaming with LINQ to XML Series

        The XML Team has started a multipart blog series on the topic of Streaming with LINQ to XML and the XStreamingElement class. The objective of streaming is to enable forward-only processing of a large input or output data source, such as log files or serialized relational data, in order to avoid loading an entire document into memory. The The XmlDataReader and XmlDataWriter pull parsers currently provide the .NET Framework's streaming implementation.

        Streaming with LINQ to XML - Part I describes the XML Team's efforts to develop a streaming API for LINQ to XML:

        The LINQ to XML design team has spent a lot of effort over the last year or so wrestling with alternative ways to provide streaming functionality in a way that is consistent with the API's overall philosophy. The May 2006 CTP included support for streaming output (but not input) via an XStreamingElement class that essentially allowed XML-like trees of IEnumerable<T> instances that could be lazily consumed while being saved as XML text. This was removed from later CTPs to "keep the slate clean" while incompatible options were considered.

        Following is the (abridged) outcome of the team's design deliberations:

        After literally months of discussion and prototyping, we decided to address these requirements by a) putting XStreamingElement back in the supported API as it was in the May CTP; b) to NOT push any streaming input API into Orcas RTM, but to release one or more implementations of the ideas we’ve discussed as code samples that can be implemented on top of the public API.

        We'll present some pretty straightforward code to handle the most basic use cases such as huge logfiles with a very flat XML structure. Maybe some of these examples can migrate into a "LINQ to XML Power Tools" library of some sort (hint, hint, MVPSs?). Anyway, stay tuned for the details, and please let us know what works for you and what you still need to work with XML easily and efficiently.

        Let's hope future code samples include VB 9.0 for a change.

        Streaming with LINQ to XML - Part 2 delivers the "code to handle the most basic use cases such as huge logfiles with a very flat XML structure." The team's approach, using a 10-MB Wikipedia abstract.xml file for the example, is:

        The key is to write a custom axis method that functions much like the built-in axes such as Elements(), Attributes(), etc. but operates over a specific type of XML data. An axis method typically returns a collection such as IEnumerable. In the example here, we read over the stream with the XmlReader's ReadFrom method, and return the collection by using yield return. This provides the deferred execution semantics necessary to make the custom axis method work well with huge data sources, but allows the application program to use ordinary LINQ to XML classes and methods to filter and transform the results.

        (Still no VB code examples.)

        Update: 3/25/2007: Added link to part 2, abstract and complaint.

        Note: Ralf Lämmel, the "father of LINQ to XSD," is a LINQ to XML streaming enthusiast. (LINQ to XSD is a product of Erik Meijer's Tesla incubator group that's in the early preview stage.) The article cites his "API-based XML Streaming with FLWOR Power and Functional Updates" paper presented at XML 2006.

        Thursday, February 22, 2007

        Erik Meijer to Keynote QCon London Conference

        Erik Meijer will deliver the "Democratizing the Cloud" keynote to the QCon Conference to be held March 12 - 16, 2007 in London. Erik, whom the conference management calls "the creator of LINQ," describes democratizing as:

        [T]rying to stretch the .NET framework to cover the Cloud such that it will become possible to incrementally and seamlessly design, develop, and debug complex distributed applications using your favorite existing and unmodified .NET compiler and deploy these applications anywhere.

        The Democratizing Backstory

        You can preview Erik's keynote in a eponymous January 13, 2007 Channel9 video, and read a seminal January 24, 2006 post in Lambda the Ultimate: "Beyond LINQ: A Manifesto For Distributed Data-Intensive Programming." This post marks Erik's first known public use of the term democratizing in the context of programming distributed systems.

        Erik runs Microsoft's Tesla incubation team that's tasked with democratizing the Cloud, "like Visual Basic democratized programming Windows many years ago." Erik chose VB as the project's language because "it's uniquely positioned" between strict, static-typed languages like C# and Java and loose lenient, dynamic-typed languages, such as Ruby and Python. The goal is to enable static typing when necessary and dynamic typing when appropriate.

        One approach the Tesla team is investigating to give democratized VB applications greater reach is compiling CLR IL to JavaScript. An alternative is to compile IL to Perl 6 and then compile Perl to JavaScript with an existing implementation. The Perl 6 group also is working on compiling Perl 6 to the CLR IL.

        Note: Another Tesla team incubation project is LINQ to XSD.

        Update 3/16/2007: Read "LINQ 2.0" in Early Returns from QCon 2007, London, which provides links to reviews of Erik's keynote.

        Update 4/24/2007: Read Mary Jo Foley's ‘Volta’: Microsoft’s dev platform in the Cloud? article about the "Live development platform" that Soma Somasegar plans to divulge at MIX 07. Read desicriptions of the four sessions that contain LINQ content in LINQ-Related Sessions at MIX 07.

        Presentation: "Introduction to Microsoft Language Integrated Query (LINQ)"

        Erik also will present a one-hour sales pitch for technical presentation about LINQ and Visual Studio vNext as part of the .NET Enterprise Development Track hosted by Ted Neward.

        Note: Thanks to Mary Jo Foley for posting "Why the Sharp languages still matter" on her ZDNet All about Microsoft blog. The post includes links to her "Sharp Words with Microsoft's Erik Meijer" interview and "Look Sharp: How C#, F# and other experimental programming languages are driving next-generation development" article for Redmond Developer News.

        Update 2/24/2007: Minor corrections.