Saturday, September 16, 2006

Michael Arrington Badmouths Squidoo (Again)

Michael Arrington delivered a presentation to The Future of Web Apps conference held in San Francisco on September 13-14, 2006. According to Dan Farber, who covered the conference for ZD Net, Arrington included Squidoo in a "What were they thinking?" list of companies that he was "not proud that they exist."

The startups subject to Arrington's stigmata are Inform, Gather, PubSub, Browzor, Jigsaw, and Squidoo. Of that group, I'm only familiar with Squidoo and Gather; the preceding two links point to one of my Squidoo lenses and a Gather demonstration page.

Note: This post is an expansion of the "Subsequent Events [9/14-15/2006]" section of my August 6, 2006 "Hubpages' Attempt to Clone Squidoo is a Bust" post. This post was updated 9/18/2006.

Squidoo describes itself as "a new online platform and community that makes it easy for anyone to build a single page--called a lens--on a topic, idea, product or cause he is passionate about. These lenses in turn help finders get unique, human perspectives instead of computer-selected and often irrelevant search results."

Squidoo received favorable coverage in an April 10, 2006 New York Times article, "A Home Where Bloggers Can Plumb Those Obscure Passions." A Google search on "The Black Scholar" returns about 30,000 hits; my Squidoo lens on the topic is in second place—immediately after The Black Scholar's Web site.

Gather is a social sitebuilding startup that claims to be "a place to connect over common interests and passions, to engage in dialog or share different viewpoints." BusinessWeek's Liz Ryan named Gather one of the Top Ten Desktop Diversions of 2006 on March 27, 2006. I'm inclined to give a BusinessWeek columnist far more credence than a blog entrepreneur.

Arrington's Praise for Squidoo-Like Wiki Hosts

On June 18, 2006, Arrington favorably reviewed Wetpaint, an ad-supported Wiki hosting site, which received $5 million funding from Trinity Ventures and Frazier Technology Ventures. Arrington said that Wetpaint "is the best hosted wiki I’ve seen so far," comparing it to competitiors PBwiki, Wikia, and JotSpot.

Note: The "best hosted wiki I've seen so far" is StikiPad, based on my first tests of the preceding and a few other hosted wiki sites. StikiPad offers exceptional editing flexibility, doesn't clutter free accounts with AdSense adverts, and has a very intuitive and attractive UI. Here's a link to the default page for my first StikiPad wiki. Click here for a WikiMatrix comparison of JotSpot, PBWiki, Socialtext, StikiPad, and Wetpaint. StikiPad offers free as well as paid—$4.95, $9.95, and $14.95—accounts. (StikiPad is based on the Ruby-based Instiki wiki clone and the Ruby on Rails framework.)

My impression of these wiki sites is that they are simply free (ad-supported) or paid Web site hosts with multi-person editing, comments, or both enabled. For example, PBwiki offers free, $9.95, $24.95, and $34.95 per month options. JotSpot (requires free registration to read) has $9.95, $24.95, $69.95, and $199.95 per month plans. Wikia requires a wiki to "have a large potential audience and be likely to attract enough editors to maintain the wiki." The preceding links open simple test wikis; here's a link to a more complete Wetpaint wiki.

Note: No hosted wiki that I've seen so far, including Socialtext and wiki.com, has features that come close to matching the capabilities of Microsoft's Windows SharePoint Services (WSS) 2.0 or 3.0, which is a free add-in to Windows Server 2003 SP1. Stay tuned for a future post comparing WSS 3.0 and online wiki applications.

Wiki sites enable multi-person page editing, but most wiki sites offer far fewer editing widgets than Squidoo. I've seen nothing so far to convince me that any of these startups have much—if anything—more to offer than Squidoo, Google Pages, or Blogger. For example, Blogger lets you enable team blogging. If you're willing to take the risk, you can enable multi-person editing of Squidoo lenses by disclosing your username and password to trusted colleagues. Alternatively, you can set preferences to Share My Squidoo and enable anyone to edit your lens.

Rick Segal's Take on Arrington's Squidoo Castigation

Canadian venture capitalist Rick Segal takes on Arrington's castigation of Squidoo in a trilogy of posts—Mike Arrington - Sit Down, Michael Arrington Responds, and The Good of Web 2.0. Squidoo donates a portion of advertising revenue after operating expenses to charity, and Squidoo Lensmasters have the option of donating their Ad Sense earnings to charity.

One of Segal's issues is Arrington's insistence on an accounting of Squidoo's donations before considering a retraction of his miscategorization of Squidoo. According to Squidoo's Report page's Squidoo-wide Stats section, Total Money for Charity was $7,194.03 from 40,282 Total Lenses as of 9/19/2006.

Note: Here's how Squidoo distributes its income: "We divide up the money we receive in a very public way. First, we pay our bills. That's direct out of pocket expenses like rent and servers and salary and benefits expenses (our CEO doesn't take a salary, and neither does our board of directors). Then, with no other deductions, we pay 5% of our post-expense revenue directly to the charity pool, 50% directly to our lensmasters and retain the rest to pay off investors and employees." (From Everything about getting paid, "11. Does Squidoo Make a Profit?")

The fact that charities and Lensmasters are receiving payments—regardless of the amount—indicates that Squidoo is profitable and debunks Arrington's May 9, 2006 assertion that Squidoo is Seth Godin's "Purple Albatross." It's a good bet that Hubpages—a Squidoo rip-off and Arrington's favored topical Web page host—won't reach profitability before it burns through the $2 million funding it received earlier this year from Hummer-Winblad Venture Partners.

Arrington's Squidoo-related posts and comments demonstrate to me that he harbors personal enmity for Squidoo and/or Seth Godin. The question for TechCrunch readers is the extent to which this animus biases Arrington's "Web 2.0" reviews.

Technorati tags: , , , , , , , , ,

Monday, September 11, 2006

SQL Server 2005 Ordered View and Inline Function Problems

SQL Server 2000 introduced the TOP n [PERCENT] operator to enable restricting the number of rows in the resultset of a view or inline table-valued function (TVF). In SQL Server 2000, starting the SQL statement for a view or TVF with SELECT TOP n [PERCENT] ... enables adding an ORDER BY clause to order the query's internal rowset so as to return the correct resultset. As a byproduct of that operation, views and TVFs returned resultsets sorted in accordance with the ORDER BY clause. A SELECT TOP 100 PERCENT query with an ORDER BY clause in SQL Server 2000 or MSDE 2000 views and TVFs returns all rows sorted. SQL Server Management Studio [Express] and the Microsoft Access Upsizing Wizard expect—and the Wizard depends on—this behavior. SQL Server 2005 [Express] does not respect the SELECT TOP 100 PERCENT operator or it's SQL Server 2005-only functional equivalent—SELECT TOP (100) PERCENT—and ignores the ORDER BY clause in views and TVFs. Thus resultsets are not sorted. ANSI SQL specifies that ORDER BY clauses are valid only in the top-most (outer) SELECT block of a query. But no ANSI SQL version supports the TOP operator, so the ANSI rules don't apply to SELECT TOP queries. Most SQL Server DBAs don't permit use of ordered views or TVFs, preferring to apply the sort with an ORDER BY clause in the SELECT block that invokes the view or TVF. Visual Studio and Microsoft Access developers commonly use the shortcut. As mentioned earlier, SQL Server 2005's corresponding TOP (100) PERCENT function also enables adding an ORDER BY clause to a view or TVF. However, the SQL 2005 query optimizer ignores the TOP (100) PERCENT and ORDER BY clauses and does not return a result set with the specified custom sort. The query optimizer "optimizes out" the TOP (100) PERCENT function as redundant, which deactivates the ORDER BY clause without warning. Fortunately, there's a workaroud that I'll discuss shortly. SQL Server Books Online's ORDER BY Clause (Transact-SQL) topic has a note that states:

When ORDER BY is used in the definition of a view, inline function, derived table, or subquery, the clause is used only to determine the rows returned by the TOP clause. The ORDER BY clause does not guarantee ordered results when these constructs are queried, unless ORDER BY is also specified in the query itself.
The upshot of this note is that there is no guarantee whatsoever that SELECT TOP ... ORDER BY ... query constructs will return rows in sequence specified by the ORDER BY clause. My experience—and that of most other commentators on this issue—is that SQL Server 2000 returns rows in the expected order for all valid TOP integer and TOP float PERCENT values, as does SQL Server 2005 for valid integer and all float values except 100. The da Vinci Toolset Obscures the Issue The Visual Data Tools (VDT)—more commonly called the da Vinci toolset—first appeared in the SQL Server 7.0 version of SQL Server Enterprise Manager (codenamed "Starfighter"). SQL Server 2005 Management Studio (SSMS), SQL Server Management Studio Express (SSMSX), Visual Studio 2005, and Access 2007 use the current da Vinci toolset version. The da Vinci toolset's query parser automatically adds a TOP (100) PERCENT operator when you save or execute an ALTER VIEW or ALTER FUNCTION definition that contains and ORDER BY clause in its SELECT block. Note: SQL Server Express (SSX) SP1 offers SSMSX as an individual download or bundled with SSX SP1 in SSX with Advanced Services SP1. Here's an example of a TOP (100) PERCENT query (Access's Alphabetical List of Products) in SSMSX's view design window:

Notice that the resultset in the lower Results pane is ordered alphabetically by the ProductName column. However, when you right-click the Alphabetical List of Products item in Object Explorer and choose Open View, the resultset isn't ordered by ProductName (or any other set of column values), as seen here: The sorted display of the Results pane is undoubtedly due to the SELECT query in the SQL pane being the outermost query at this point. This ambiguous presentation for views is likely to lead unsuspecting developers down the primrose path.

Note: SSMX and a Microsoft Access query from upsized Northwind.accdb is used as the example, because many more data-intensive application developers use (or will use) SQL Server (2005) Express (SSX) with SSMSX and Visual Studio Express editions or Access than SSMS and SQL Server 2005 Standard or Enterprise editions. (Visual Studio Express editions don't include the VDT.) The da Vinci Tools in the Access 2007 Project Designer Microsoft Access 2000, 2002, 2003, and 2007 use the da Vinci toolset as the Project Designer for Access Data Projects (ADPs). However, the Access 2007 Beta 2 Technical Refresh version shown here appears to use a slightly different query parser. Adding a sort to a view or inline TVF adds the SQL Server 2000-style TOP 100 PERCENT operator (without the parenthesis for backward compatibility with the Microsoft Desktop Engine (MSDE) 2000.) Note: Access 2007 Beta 2 TR won't display the contents of the Diagram or Grid panes if you or SSMS[X] add parenthesis to the TOP operator. Addition of parenthesis by SSMS[X] prevents round-tripping of view or TVF designs to Access 2007 without loss of Diagram and Grid panes. Running the preceding query displays the unordered resultset in Access's Datasheet View, as shown here: Access substitutes it's Datasheet View for SSMS[X]'s Results pane. The preceding resultset obviously isn't ordered by ProductName, so developers will know immediately that the sort wasn't applied.

Note: In Access 2007 Beta 2, clicking the Tools group's Run (!) button of the Function & View Tools, Design ribbon doesn't update the row order of an open Datasheet View. You must close and reopen the Datasheet View to see the effect of a change to the view or inline TVF row order. A Simple Workaround for the TOP (100) PERCENT Problem If you must apply a custom sort order to views and TVFs, which is generally considered to be a hack, substitute TOP (VeryLargeInteger) for TOP (100) PERCENT. The largest integer that the query parser will accept is MAX(int) or 2147483647. This limitation appears to be for backward compatibility, because SQL Server 2005 converts TOP (n) values to the bigint data type. Here's the view's new query in SSMSX: In this case, the Results pane above reflects reality, as shown below: The TOP 2147483647 operator also behaves correctly in Access views and queries. However, Access developers have the option to set the Order By property of a view or inline TVF to Column1 [DESC][, Column2 [DESC] ... ] on the Data page of the ObjectName Properties dialog. This property specifies the ORDER BY clause of the outer query. Visual Studio developers and others might need to alter their TableAdapters or SELECT queries to apply an ex post facto sort order.

Note: SQL Server 2005 TOP (n) views are updatable if the view without the TOP (n) function is updatable. Conclusion It's surprising that the SQL Server tools group didn't alter the query parser to replace TOP (100) Percent with TOP (2147483647). The group also should have fixed—or warned users about—the ambiguous presentation in the Results pane for views.

The appropriate solution for SQL Server 2005 [Express] SP2 is to require SQL Server 2005's query processor to respect SELECT TOP (100) PERCENT ... ORDER BY views and TVFs by emulating SQL Server 2000 behavior, and change the party line by guaranteeing that SELECT TOP ... ORDER BY views and TVFs return a sorted resultset.

I haven't tested the workaround exhaustively, but it's likely to work in most or all cases. However, you're far better off from a performance and reusability standpoint to follow the ANSI SQL rules and apply the ORDER BY clause within the outermost query block, not in views or inline TVFs.

Note: For more information about the use of ORDER BY in SQL Server 2005, see the Ordering guarantees in SQL Server... item by Conor Cunningham, Query Optimizer Development Lead, in the SQL Engine Tips blog. See Books Online's TOP (Transact-SQL) topic for more detailed information on the TOP function.

Updates: Minor updates with clarifications on 9/27/2006 and 9/29/2006.

Technorati tags: , , , , , , , , , , , , , , ,

Monday, September 04, 2006

Generate RSS Feeds with ASP.NET and LINQ to XML

Jim Wooley has written a clever LINQ to XML procedure that generates RSS feeds from event logs. If you've installed the Microsoft Visual Studio Code Name “Orcas” Language-Integrated Query, May 2006 Community Technology Preview, you can download Jim's source code for the _Default partial class as Default.aspx.vb, and give it a test drive, preferably with IE 7.0 RC1 or later. Just create a new Visual Basic LINQ ASP.Net Web Site from the VB templates and substitute his Default.aspx.vb for the original empty version under the Default.aspx node, as shown here:

Tip: Clear at least the Application log and reboot before running the project. Otherwise, you'll find that Iexplore.exe will consume almost all available memory while it attempts to generate an RSS file with several thousand items.

Press F5 to build and run the project. If you have IE 7.0 RC1 or a late beta, the page appears as shown here:

If you're familiar with Dave Winer's RSS 2.0 spec, you'll notice some missing items—such as the top-level <rss version="2.0"> element—and non-conforming <publisher> and <author> tags under the <channel> element. <item> elements also have non-conforming <date> and <creator> tags, and dates that don't conform to RSS's requirement for the RFC 822 date/time format.

Adapting the Page for Feed Readers

IE 7.0 ordinarily displays RSS and ATOM files with a style sheet. For example, here's the start of the IE 7.0 feed page for the OakLeaf Systems blog as of this post's date:

Note: IE 7.0's style sheet treats ATOM 0.3/1.0 feeds as RSS 2.0 feeds with elements qualified by ATOM namespaces.

I wanted to see how IE 7.0's style sheet would handle the feeds generated by Jim's project. The missing top-level <rss version="2.0"> element prevents IE 7.0 from applying its feed style sheet. I believe that other non-conforming elements might prevent some readers from displaying the data correctly. I also wanted to add hierarchical <category> tags to see if IE 7.0 would filter events by category correctly.

So I added the <?xml version='1.0' encoding='UTF-8'?> XML declaration and the <rss version="2.0"> element pair, then made other minor corrections and a few additions to bring the feed up to the RSS 2.0 standard. Here's the result before subscribing to the feed in IE 7.0:

Note: The five filter categories are EventLog, EventLog/Entries, EventLog/Entries/Application, EventLog/Entries/Information, EventLog/Entries/Application/Warning. Filtering works as expected.

And here's the transformed page after subscribing to the feed:

If you publish the Website to IIS, run Cassini on a fixed port, or just copy the current URL—http://localhost:1686/XLinqRSS/Default.aspx—for this example you can subscribe to the feed with any popular reader. For example, here's Dare Obasanjo's RSS Bandit open-source reader displaying the OAKLEAF-MS15 feed:

You can read an abbreviated version of the updated RSS 2.0 feed code here and see the modified Visual Basic 9.0 source code for the updated WriteRSS20 subprocedure here.

Syndicating event logs isn't a mainstream RSS application, but Jim Wooley's technique demonstrates the remarkable efficiency of programming with LINQ for XML and VB 9.0's XML inline literals with inserted element and attribute values.

Technorati Tags: LINQ to XML, XLinq, LINQ, Orcas, RSS 2.0, RSS, Event Logs, Jim Wooley

Saturday, August 26, 2006

ADO.NET vNext and Entity Framework Resources

This post contains links to resources for .NET developers who are interested in exploring ADO.NET vNext for Visual Studio vNext ("Orcas"). The link topics are the Entity Framework (EF), Entity Data Model (EDM), Entity SQL (eSQL), LINQ to Entities, LINQ to SQL (formerly DLinq), LINQ to DataSets, LINQ to XML (formerly XLinq), LINQ to Objects, and EF's erstwhile predecessor, ObjectSpaces. The last two sections of this post are devoted to Object/Relational Mapping (O/RM) in general and Domain-Specific Languages (DSLs).

Note: Unlike most blogs entries, this item is updated and republished periodically (see the end of this post for details.) Last update 4/11/2007.

ADO.NET vNext and LINQ CTP Downloads

The following CTPs have been superceded by the ADO.NET Entity Framework and LINQ implementation of the Orcas March 2007 Community Technical Preview. However, some features of the May and August 2006 LINQ CTPs are missing from this Orcas CTP -- most notably, the Entity Data Model (EDM) Designer, which will not be included in the final Orcas RTM version.

Microsoft Visual Studio Code Name “Orcas” Language-Integrated Query, May 2006 Community Technology Preview installer (LINQ Preview (May 2006).msi, 5/10/2006, required to install ADO.NET vNext CTP)

Use the Add/Remove Programs tool to remove previous versions (PDC 2005 or January 2006) of the LINQ CTP and review the C# Readme, VB Readme, or both before downloading and installing the LINQ May 2006 CTP (5/10/2006)

ADO.NET vNext CTP (Community Technology Preview) - August 2006 installer (ADONETVN.msi, 8/17/2006, requires LINQ May 2006 CTP, Visual Studio 2005 Standard Edition or higher, Visual Basic 2005 Express, or Visual C# 2005 Express; Visual Web Developer 2005 Express isn't supported.)

Visual Studio 2005 Web Application Projects add-in (WindowsApplicationProjectSetup.msi, 1.2MB) is required to run the WebForm's Visual Basic version that includes a WebAppSample.vbproj file.

White Papers and Backgrounders

Entity Framework (EF) and Entity SQL (eSQL)

Next-Generation Data Access: Making the Conceptual Level Real by José Blakeley, David Campbell, Jim Gray, S. Muralidhar, and Anil Nori (June 2006, HTML)

The ADO.NET Entity Framework Overview (June 2006, HTML)

ADO.NET Tech Preview: Entity Data Model (June 2006, HTML)

eSQL: An Entity SQL Language, ADO.NET Technical Preview (promised by the "Overview")

Entity SQL Quick Reference Guide (June 2006, a Word DOC in your C:\Program Files\Microsoft SDKs\ADO.NET vNext CTP\Docs folder after installing the CTP)

Mapping-Driven Data Access, a position paper by Sergey Melnik about declarative mapping, bidirectional views, and view maintenance in the ADO.NET Entity Framework (8/23/06 draft, see also the Reusable Tools for Metadata Management - Pie in the Sky? presentation in the next section).

There Is No Impedance Mismatch: Language Integrated Query In Visual Basic 9, a brief paper to be presented by Microsoft Research's Eric Meijer at the ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA 2006), October 22-26, Portland, Oregon. Queries in ADO.NET vNext, a detailed ADO.NET Team Blog post by S. Muralidhar, a.k.a, Murali (August 21, 2006)

The Weird World of Bi-Directional Programming slides about the University of Pennsylvania's Harmony, a universal data synchronizer, by Benjamin C. Pierce, Microsoft Research, Cambridge (on leave from the University of Pennsylvania, March 2006)

Integrating Programming Languages & Databases: What's the Problem? by William R. Cook and Ali H. Ibrahim, Department of Computer Sciences, University of Texas at Austin (October 2005 draft)

LINQ to DataSet

LINQ to DataSet for C# Developers (May 2006, Word DOC)

LINQ to DataSet for Visual Basic Developers (May 2006, Word DOC)

LINQ to SQL (formerly DLinq) 

LINQ to SQL: .NET Language-Integrated Query for Relational Data by Dinesh Kulkarni, Luca Bolognese, Matt Warren, Anders Hejlsberg, Kit George (updated March 2007)

DLinq Mapping Draft Specification (August 2006, Word DOC)

DLinq Data Types and Functions (August 2006, Word DOC)

DLinq Overview for C# Developers (May 2006, Word DOC)

DLinq Overview for Visual Basic Developers (May 2006, Word DOC)

DLinq Designer (May 2006, Word DOC). See also the Domain-Specific [Programming] Languages (DSL) section at the end of this post.

LINQ to XML (formerly XLinq)

.NET Language-Integrated Query for XML Data by Michael Champion (updated February 2007)

XLinq Overview (May 2006, Word DOC)

XML Support In Visual Basic by Erik Meijer and Brian Beckman (January 2006, PDF)

Generic LINQ, C# 3.0 and VB 9.0

LINQ: .NET Language-Integrated Query by Don Box and Anders Hejlsberg (updated February 2007)

The .NET Standard Query Operators by Anders Hejlsberg and Mads Torgersen (updated February 2007)

Overview of C# 3.0 by Anders Hejlsberg and Mads Torgersen (updated March 2007)

Overview of Visual Basic 9.0 by Erik Meijer, Amanda Silver and Paul Vick (September 2005)

C# Version 3.0 Specification (October 2005)

ObjectSpaces (abandoned)

A First Look at ObjectSpaces in Visual Studio 2005 by Dino Esposito (February 2004)

Getting Started with ObjectSpaces by Jan Teilens for MSDN Belgium/Luxembourg (February 2004, HTML)

Videos, Screencasts, Podcasts, and PowerPoint Presentations

Visual Studio: The .NET Language Integrated Query (LINQ) Framework Overview with Anders Hejlsberg from Tech*Ed Barcelona (November 2006)

C# 3.0: Future Directions in Language Innovation with Anders Hejlsberg from Tech*Ed Barcelona (November 2006)

Anders Hejlsberg on LINQ and Functional Programming interview with Charlie Calvert (January 26, 2007)

The LINQ Project with Anders Hejlsberg from the LANG.NET conference (August 2006)

ADO.NET Entity Framework: What. How. Why. Channel9 video with Pablo Castro, Michael Rizzo, and Britt Johnston (July 19, 2006)

Two ADO.NET vNext screencasts (C#): Part 1 and Part 2 (July 11, 2006)

Chatting about LINQ and ADO.NET Entities Channel9 video with Anders Hejlsberg and Sam Druker (June 9, 2006).

Slides from Reusable Tools for Metadata Management - Pie in the Sky, by Sergey Melnik, Microsoft Research, a keynote presentation about EDM in ADO.NET vNext and mapping-driven data access to the 18th International Conference on Scientific and Statistical Database Management (SSDBM 2006, July 3 - 5, 2006, Vienna University, Austria.

Slides and ASP.NET/LINQ to Everything sample code from Scott Guthrie's Building Data Driven ASP.NET Web Applications using LINQ presentation at Tech•Ed 2006 Australia and New Zealand.

InfoWorld analyst Jon Udell interviews Anders Hejlsberg about the LINQ and the May 2006 CTP (May 12, 2006)

Slides from Jim Gray's Database Activities and Trends Tech*Ed London 2006 presentation, which refers to Entity Sets as the "next step for DataSets in ADO.NET v3", and describes LINQ for SQL and LINQ for XML as "a BIG deal" (June 2, 2006)

Note: The following two Jim Gray papers don't relate directly to ADO.NET vNext or LINQ, but are the foundation for much of the preceding Tech*Ed 2006 presentation.

Jim Gray’s What’s Next for Database presentation to the SQL PASS 2005 Community Summit (September 2005, video). Related paper by David Campbell, Service Oriented Database Architecture: App Server-Lite? (ACM SIGMOD, June 2005, PDF).

Slides from Jim Gray's The Revolution in Database System Architecture presentation from Advances in Databases and Information Systems (ADBIS, March 2004), Budapest; Extended abstract, The Revolution in Database Architecture (ACM SIGMOD, September 2004, PDF).

Slides from Meta Data Management by Sergey Melnik and Phil Bernstein of Microsoft Research's Model Management Project, presented at the 20th International Conference on Data Engineering (ICDE 2004, March 30 - April 2, 2004). Phil Bernstein formerly was the architect of Microsoft Metadata Services.

Luca Bolognese’s seminal Developing Applications Using ADO.Net ObjectSpaces presentation to the Microsoft Professional Developers Conference, PDC 2003 (October, 2003)

Microsoft ADO.NET vNext and LINQ-Related Sites and Blogs

The LINQ Project (main MSDN LINQ site, but not kept up to date

New ADO.NET blog (emphasizes ADO.NET vNext)

Danny Simmons: system.data.objects dev guy (EF Object Services layer)

XML Team (covers LINQ to XML)

Data Programmability Team (general data topics)

Dinesh Kulkarni (LINQ to SQL, infrequent posts

Scott Guthrie (ASP.NET and LINQ)

Matt Warren (occasional posts about LINQ)

Dave Remy (formerly XLinq program manager and XML group program manager)

Andrew Conrad (posts about ObjectSpaces)

Soma Somasegar: LINQ and ADO.NET Innovations (LINQ naming conventions) and May LINQ CTP available now! (description of latest LINQ CTP)

Articles about ADO.NET vNext and LINQ from FTPOnline

Objectify Data with ADO.NET vNext by Roger Jennings for Visual Studio Magazine using the August 2006 CTP (October 30, 2006)

Generate Data-Based Web Sites With Blinq by Roger Jennings about an autogenerated ASP.NET Web site scaffolded with LINQ for SQL from the May 2006 CTP (June 26, 2006)

LINQ Takes Shape in May CTP by Roger Jennings about the May 2006 CTP from FTPOnline's Special Report on .NET (May 15, 2006)

Save Time With LINQ Queries by Bill Wagner, based on the January 2006 CTP, from FTPOnline's Special Report on SQL Server (May 1, 2006)

Test Drive VB9 and DLinq by Roger Jennings about the January 2006 CTP from Visual Studio Magazine (March 27, 2006)

Streamline Mapping With Orcas and LINQ by Roger Jennings about object-relational mapping (ORM) with the PDC 2005 version of LINQ from Visual Studio Magazine (November 7, 2005)

Microsoft Unveils .NET Data Futures at PDC 2001 by Roger Jennings about the first ObjectSpaces "Orca" Technical Preview (December 2001)

Note: Reading more than page 1 of the preceding articles or downloading sample code no longer requires free registration.

Microsoft Newsgroups for ADO.NET vNext and LINQ

ADO.NET Orcas Forum (for Entity Framework, LINQ to Entities, Object/Relational Mapping, and Entity Data Modeling)

LINQ Project General Forum (for LINQ to Objects, LINQ to SQL, LINQ to XML

OakLeaf Blog Entries about ADO.NET vNext, LINQ, and ObjectSpaces

See Yet Another Primer on New Language Features in Orcas (March 13, 2007, updated April 11, 2007) for serial posts about LINQ, LINQ flavors, and (primarily) C# 3.0.

Search Google for OakLeaf items about ADO.NET vNext, DLinq or LINQ to SQL, XLinq or LINQ to XML, and ObjectSpaces (Blogger search doesn't display items earlier than March 2006; these Google searches return all items.)

Other Third-Party ADO.NET vNext and LINQ Blogs

Andres Aguiar: Andres Aguiar's Weblog

Peter Gielens: ThoughtsService

Kevin Hoffman: The .NET Addict's Blog

Julie Lerman: The Data Farm and DevLife

Sahil Malik: blah.winmarts.com Blog

Fabrice Marguery: Fabrice's Weblog and The Mad Geek (articles in English and French.)

Bart de Smet: The B# Blog (IQueryable Tales - LINQ to LDAP)

Erwyn Van Der Meer: Blogging About Dot Net

Jim Wooley: Wooley' Wanderings

Note: Listed alphabetical by last name.

See Yet Another Primer on New Language Features in Orcas for links to Microsoft and third-party blogs about LINQ and the Entity Framework.

Object/Relational Mapping (O/RM) Resources

Entity/Relationship Model (Wikipedia)

Object/Relational Mapping definition (Wikipedia)

How-To-Select an Object-Relational Mapping Tool for .NET by Jason Mauss reviews 36 proprietary and open-source O/RM tools (undated)

Choosing an object-relational mapping tool (for .NET) by Fabrice Marguerie, also available in French (November/December 2004)

The Viet Nam of Computer Science by Ted Neward, an essay postulating that the U.S. military machine were and computer programmers now are "faced with a deadly form of the Law of Diminishing Returns (June 2006)

More coming soon.

Domain-Specific [Programming] Languages (DSLs)

Domain-Specific Programming Languages definition (Wikipedia)

Visual Studio 2005 Domain-Specific Language Tools site

Stuart Kent: Domain-Specific Software Development blog

Steve Cook: Steve Cook's Weblog (Microsoft DSL Tools team)

Updates: 9/2/2006: Added ADO.NET vNext related papers and presentations by Microsoft Research's Sergey Melnik and Phil Bernstein, who are members of the Database Group and direct the Model Management Program. 9/5/2006: Added links to Eric Meijer's VB 9.0 OOPSLA 2006 presentation and Scott Guthrie's Tech•Ed 2006 Australia and New Zealand LINQ session, plus Sahil Malik's Winsmarts.com blog. 9/8/2006: Added A First Look at ObjectSpaces in Visual Studio 2005 by Dino Esposito (February 2004), The Weird World of Bi-Directional Programming by Benjamin C. Pierce (March 2006), Integrating Programming Languages & Databases: What's the Problem? by William R. Cook and Ali H. Ibrahim, Department of Computer Sciences, University of Texas at Austin (October 2005 draft), The Viet Nam of Computer Science by Ted Neward, and several Wikipedia entries. 12/8/2006: Added reference to Chatting about LINQ and ADO.NET Entities video with Anders Hejlsberg and Sam Druker. 4/11/2007: Major update with additions of updated Microsoft white papers from Jim Wooley's LINQ articles on MSDN2 post of 4/11/2007 and LINQ to SQL white papers and LINQ videos from Charlie Calvert's February/March Orcas CTP Now Available post of 3/1/2007.

Technorati Tags: ADO.NET vNext, Entity Framework, Entity Data Model, LINQ, LINQ to Entities, LINQ to DataSets, LINQ to SQL, Entity SQL, eSQL, DLinq, XLinq, C# 3.0, VB 9.0, Orcas, ObjectSpaces, Domain-Specific Languages, DSL, DSL Tools

Thursday, August 24, 2006

Blogger Finally Gives OakLeaf Blog Spam Clearance

My August 6, 2006 Windows Live Writer (WLW) review couldn't test the Web Layout and Web Preview features or post directly to the OakLeaf Web site because the Blogger API includes a spam blocker, presumably a CAPTCHA. I sent a message to Blogger requesting removal of the spam blocker the same day as the review.

Today, 18 days after my request, Blogger finally verified that my blog wasn't a splog. This is a test post to see if removing the Blogger API's spam blocker enables Windows Live Writeer's Web Layout and Web Preview modes, as well as publishing posts and posting drafts. Previously only drafts posted. Sure enough, you're seeing WLW here in Web Layout mode.

and here in Web Preview mode.

Not only do I get an instant view of the post, but also no CAPTCHA to complete before manually posting to the blog.

If your Blogger blog requires you to complete a CAPTCHA to post, send a "Non-spam review and verification request for BlogName.blogspot.com" message to support@blogger.com. After a long hiatus, you should receive the following message:

Hello,

Your blog has been reviewed, verified, and cleared for regular use so that it will no longer appear as potential spam. If you sign out of Blogger and sign back in again, you should be able to post as normal.

Thanks for your patience, and we apologize for any inconvenience this has caused.

Sincerely,

The Blogger Team

Update: A newer version of Tim Heuer's Flickr4Writer add-in solves some minor problems:

Technorati Tags: Windows Live Writer, Flickr4Writer, WLW, Blogger

Friday, August 18, 2006

Writely Beta Finally Opens (with a Thud)

Hard on the heels of the Windows Live Writer (WLW) beta, Google finally took the wraps off Writely by opening a public beta. Google would have done better by taking a few more months to debug their free online word-processor candidate before exposing it to the general public. Jen asked in the Writely blog:

Why have we reopened now? Maybe it was because we just won a very nice product review on CNET ... or maybe it was that ten-billionth person who emailed us to say, "Hey what's UP? When will Writely open again?" Well, in fact, now Writely is truly ready to open its doors to everyone, so let's just do it!

I'm sure the timing of the WLW beta influenced Google's timing for releasing the Writely beta, but I'm not as sure that "Writely is truly ready to open its doors to everyone." For example, I immediately encountered problems in IE 7 Beta 3 deleting selected text and formatting paragraphs as block quotes. Note: WLW is a downloadable .NET 2.0 WinForm app, while Writely is an online .NET 2.0 WebForm app. (The .aspx file extension indicates ADO.NET Web pages.)

Writely as a Blog Editor It's a good bet that many Writely users will test it for blog posting, but they're likely to be disappointed. For example, I set up the OakLeaf Systems Blogger blog as the single publishing point in this dialog (Writely currently supports posting only to a single blog): Clicking test returned the following message: However, when I tried to publish the document to the OakLeaf blog (there's no option to post a draft version), I received this error message: (http://www.blogger.com/api/RPC2?rnd649026752=69898776 does not appear to be a valid url). However, Writely was successful at posting a draft, which I converted to this post. (The problem is undoubtedly due to the captcha entry required for posts.) Writely gets the nod over WLW for image handling because Google stores your images on line if you insert them with IE7. I specified Center alignment for all images I imported, but all graphics ended up left aligned. The 1 px black right border on all images is an artifact of the capture program, which doesn't appear when capturing in other applications. Image size settings don't include an option to maintain aspect ratio, so I had to calculate the height setting when limiting the width of images to 400 px wide (the maximum width of the text area of my blog). I gave up and used Paint.NET to resize the images with much better quality scaling. Blog preview doubles the number of newline characters. Here's the top of the test edit page:

And here's the corresponding top of the blog post preview: Browser Change

My results with IE 7 were so poor that I decided to check out Firefox 1.5. So I saved the document, opened it in Firefox, and rechecked the problems I was experiencing.

Firefox correctly formatted the block quote, but didn't fix any of the other issues that I encountered and described above. Firefox appeared to save images to the local file system instead of to http://www.writely.com/File.aspx?id=dcq9twsv_10hmwpzf or the like, caused problems with detecting image dimensions during insertion, and didn't respect my default 350-px maximum width setting for the text: Back to IE7 Beta 3 Round-tripping content between Writely and my OakLeaf Systems blog turned out to be a nightmare. Content copied and pasted from Blogger's Compose window appears OK in the Writely editor (except it's not in the selected font), but you must export HTML from Writely and paste it into Blogger's Edit HTML window, then do major fixups due to doubling or tripling of newline characters on importing to Blogger.

At this point, I decided to copy and paste the HTML with IE7 Beta 3 to the OakLeaf blog so I could point folks in the Google Groups: Writely Discussion Group to examples of the issues. Join the group and see what others have to say about my problems. Watch for frequent updates as I see what other reviewers and folks in the Writely Discussion Group have to say about Writely's readiness for prime time.

Interim Conclusion

Writely isn't even close to cooked as a blog editor. I doubt if CNET tested Writely's compatibility with "Google Blogger" (or any other blogging software) for its review. I'm also concerned about the different set of issues I encountered with IE 7 and Firefox. For now, I'll stick with WLW for blog editing, despite having to add images as a second operation in Firefox.

Paul Graham of the Y Combinator venture-capital group takes the position that competing head-to-head with a Google app ensures the immediate or eventual demise of a start-up. He cites the flat-lining of Kiko as an example, but David Heinemeier of 37Signals says "Google does not render resistance futile." Dare Obasanjo concludes that "Kiko was a feature, not a full-fledged online destination let alone a viable business." Fortunately, Google doesn't need—or, I assume, intend—to make a business out of Writely.

Competing online word-processors, such as Zoho Writer (beta), ThinkFree Office 3 (beta), or Glide Write 1.0 (beta) might suffer eventual extinction by a greatly improved Writely, but it's not likely that the final Writely version will shoot down WYSWYG blog editors like WLW, Qumana, RocketPost, Performancing (for Firefox), and ecto (for MacOSX and Windows).

Note: RocketPost's attempt to charge US$12 for the software might lead to immediate extinction by WLW, Qumana, Performancing, or ecto.

A read-only version of the Writely document for the initial version of this post is here.

Technorati Tags: , , , , , , , ,

The New Yorker Covers the Clark Foam Fiasco

If you're into surfing or the surfboard business and don't subscribe to The New Yorker, go to your local newstand now and pick up a copy of the August 21, 2006 issue. You've got the right issue if you see "Surf's down! William Finnegan on the Howard Hughes of boards" on the promo flap. "The Howard Hughes of boards" refers to Gordon "Grubby" Clark, the owner of Clark Foam—the world's largest supplier of rigid polyurethane foam cores (blanks) for surboards. Clark Foam unceremoniously shut its doors on December 5, 2005, which became known as "Black Monday." The closure led to a state of semi-panic among Southern California's custom surfboard makers, who had no immediate source of blanks to continue production. Clark Foam had 80% to 90% of the U.S. blank business for custom-shaped surfboards. William Finnegan, the best-selling author of Cold New World: Growing Up in Harder Country and A Complicated War: The Harrowing of Mozambique, co-author with Matt Warshaw of The Encyclopedia of Surfing, world-roaming surfer, and staff writer for The New Yorker delivers an eloquent, feature-length analysis of Clark Foam and the surfboard industry in the magazine's August 21, 2006 issue. Unfortunately, the six-page article is only available in print or from LexisNexis, but it might appear in The New Yorker's digital archives after an appropriate hiatus. Your local public library will have a copy or you can obtain a back issue for US$9.00.

As if making amends for the digital oversight, the magazine offers archive links to a two-part article about the San Francisco surfboard scene that Finnegan wrote in 1999: "Playing Doc's Games: Part I and Part II." "Doc" refers to Mark Renneker, M.D. (a.k.a., "Doc Hazard" because of his near-sightedness), probably the most famous of the Ocean Beach surfers. I first learned about Dr. Renneker's devotion to cancer education and screening when he was the principal investigator of a demonstration project at the West Oakland Heath Center.

Note: If you believe "San Francisco surfboard scene" is a typo, check out this photo by Q. T. Leong.

Finnegan received a B.A. from the University of California at Santa Cruz and an M.F.A. from the University of Montana. Cold New World received the New York Times Notable Book of the Year award, the Los Angeles Times Best Nonfiction of 1998 selection, and was one of the Voice Literary Supplement's Twenty-five Favorite Books of 1998. Finnegan was the Sidney Harman Writer-in-Residence (Fall 2004) at the Baruch College, City University of New York. His writing won the James Aronson Award for Social Justice Journalism from Hunter College (2002), a Citation for Excellence from the Overseas Press Club (2000), and the Sidney Hillman Award for Magazine Reporting (1998).

In addition to the books mentioned earlier Finnegan is the co-author with Philip Gourevitch of Crossing the Line: A Year in the Land of Apartheid and author of Dateline Soweto: Travels with Black South African Reporters". He's also one of the authors featured in Robert S. Boynton's New Journalism compilation. According to his bio from the New Journalism site, "Finnegan is currently working on a surfing-themed memoir about male friendship."

Photo courtesy of Baruch College.

Note: If you wonder why this dramatically off-topic post is here, I was in the polyurethane foam chemicals and surfboard business in the late 1950s through the early 1970s. In his fax announcing the closure of Clark Foam, Grubby Clark credited me, Chuck Foss (my company's distributor to the Southern California surfboard industry), and Harold Walker as having "pioneered the first successful blank business selling blanks directly to surfboard builders." The full story is here.

Technorati Tags: , , , , , , , ,