I reserved WordWalkingStick.com to have a domain available for a hosting plan with Internet Information Server (IIS). WordWalkingStick.com sounds like some kind of commercial play for my open source project on CodePlex.com for Microsoft Office Word. But, as of today, consider the similar names a ‘coincidence.’

Instead of having a personally useless “code gallery,” my Songhay Studio Server at WordWalkingStick.com is built to be a part of my active, work-week-daily workflow. Whenever I learn something new about Silverlight, WPF or ASP.NET MVC, it should show up on the Studio Server. This Studio Server concept is a self-educational tool (beyond my relatively passive Funky KB at SonghaySystem.com) that often serves as a co-worker educational tool.

Songhay Studio Server at WordWalkingStick.com

This Studio Server concept, by the way, is direct descendant from my intranet-based ‘Development Server’ concept that I’ve used in the workplace since the early 2000s. I thought it was cool to take a slice out of my Desktop and point it at this ‘Development Server.’ The rise of the SharePoint “My Site” makes this work habit largely obsolete in the average Microsoft-based enterprise.

I have avoided Microsoft-based hosting on the public internet for years because Microsoft technology simply was not designed for the “shared” hosting model. Phil Haack led the way here and I followed him into a deal with Newtek Web Hosting.

As of this writing, the Songhay Studio Server contains:

  • Active Web Designs—page layouts for the few web sites I maintain.
  • Live Samples—CSS, jQuery and Silverlight samples online; I use these to keep current—so studying these carefully covers my current skill set.
  • Hosted Source Code—active CodePlex.com projects and legacy SourceForge.net projects (in Java).
  • Utilities—stuff for me, dating back to my Intranet days.

So, after I showed Scott Hanselman my Silverlight BiggestBox live sample, he politely asked for something more interesting. In reply to his prompt reply, I told him (I think this came across—because Twitter is terse) that he was looking at a blank canvas. In the specific Silverlight case, I had to spend quite some time getting the plumbing to work to my satisfaction. The problem is that most people can’t see the plumbing—often I lose myself in the plumbing!

This new Songhay Studio Server allows me to see an IT executive summary of what the hell is going on! I can look at the home page and click though the index and see:

Coming soon will be my Adobe Flex-based BiggestBox! Ideally I’ll have Silverlight and Flex parity. This new tool called Tofino allows me to work on Flex in Visual Studio, which is currently very convenient for me.

So, am I spread too thin? Am I “over preparing” and getting “lost” in the technology? What this new Songhay Studio Server does for me is allow me to consolidate, summarize and simplify. The work of the last two years finally comes to the surface.

Scott Guthrie: “EF Code First enables you to use ‘POCO’—Plain Old CLR Objects—to represent entities within a database. This means that you do not need to derive model classes from a base class, nor implement any interfaces or data persistence attributes on them. This enables the model classes to be kept clean, easily testable, and ‘persistence ignorant’.”

“EF Feature CTP5 Released!”

ADO.NET team: “CTP5 includes some significant internal refactoring in preparation for some features we intend to support in the future, we are still in the process of stabilizing the quality after this refactoring. We decided to release before we finished this stabilization to get CTP5 in your hands as soon as possible and give ample time to incorporate feedback before we RTM.”

Entity Framework Architecture

“PowerToys for the Class Designer and Distributed System Designer”

CodePlex.com: “The Class Designer Enhancements add-in provides additional functionality for the Visual Studio Class Designer, such as HTML export and nested type creation commands. This download includes all necessary source code and a Visual Studio project template for creating your own add-ins for the Visual Studio designers. The Class Designer is a developer productivity tool available in Visual Studio Standard Edition and above, which allows developers to easily visualize, design, refactor, and document their code.”

“ELMAH: Error Logging Modules and Handlers for ASP.NET (and MVC too!)”

Scott Hanselman: “ELMAH is one of those largely unknown and deeply awesome .NET Open Source projects that should be part of ASP.NET proper.”

Øredev 2008 - Day 1

“That No SQL Thing—Document Databases”

Ayende Rahien: “A document database is schema free, that is, you don’t have to define your schema ahead of time and adhere to that. It also allow us to store arbitrarily complex data. If I want to store trees, or collections, or dictionaries, that is quite easy. In fact, it is so natural that you don’t really think about it.”

“Visual Studio Programmer Themes Gallery”

Scott Hanselman: “More and more I find myself ‘skinning and [theming]’ my Visual Studio development environment in order to stay frosty. It’s surprising how changing your theme (fonts, colors, etc.) can re-energize me when I’m having trouble with some problem or motivation.”

“Native php support in Visual Studio 2010?”

StackOverflow.com: “Check out CodeLobster php, it’s free and has a very similar look and feel to visual studio plus it has IntelliSense and debugging support.”

VS.Php for Visual Studio

VS.Php is a Php integrated development environment based on Visual Studio. With VS.Php you can design, develop, debug and deploy Php applications within the Visual Studio IDE. VS.Php key features are around providing rich Php and Smarty editing capabilities as well as its ability to debug Php scripts locally as well as remotely.”

Songhay.Data.GenericWeb project 9/2009 This .NET-2.0 project is reorganized for future enhancement. These are the new and improved separation of concerns:

  • Data Transfer Contracts: currently they are used for Input only but can be used for output.
  • Input Definitions: currently these classes (implementing data transfer contracts) support IXPathNavigable input.
  • Output Definitions: what is in place now is a single static partial class for XPath-navigable output.
  • Procedures: this area of concern contains static classes for Delete, Get, Insert, List and Update procedures—almost all of these return raw XML strings straight from the DBMS (via System.Data.Common). This “strange” design is possible based on the research documented in my note: “SQL Server 2005 PROBLEM: Using the ADO.NET DbCommand.ExecuteScalar() Method Truncates at 2033 Characters.”
  • Resources: this refers to embedded Resource files—in this project these are parameterized t-SQL scripts. Of course something like LINQ to SQL can do all of this work “for me” but I would have to store these t-SQL scripts on the database server (which increases performance and security—and maintenance complexity).

All of these areas of concern are mediated by a façade, the CommandHandler class. Because it implements the Songhay.Data.ICommandHandler interface, it expects to return XPathDocument messages to an external caller.

My commitment to XPathDocument messages dates back to .NET 2.0. In our brave new LINQ-based world, we have the XDocument. Before these latest improvements, my “old” code was not in a position to easily move into this new world.

By taking the time (many hours over many days in a very hot summer room) to loosen up the coupling, I have more options:

  • I can write a LINQ version that uses LINQ to XML and still uses the old System.Data.Common stuff.
  • I can write a LINQ version that uses LINQ to XML and uses LINQ to SQL (or LINQ to Entities) exclusively. The problem with this is that I am almost sure that LINQ to SQL (or LINQ to Entities) does not aggressively and obviously eliminate what is there now under System.Data.Common.
  • I can write a LINQ version that uses LINQ to XML and still uses the old System.Data.Common stuff—but I can insinuate LINQ to Entities where it is super-obviously appropriate (for example wherever I might be using ancient ADO.NET DataSet objects for procedures that require an in-memory database).

My previous note about LINQ to SQL takes some of the polish off the DBMS-access aspects of LINQ. So I am no longer peer-pressured (most of this pressure is imagined) into getting rid of System.Data.Common stuff because LINQ to SQL is “obviously” better. No, the real question is, ‘Does XDocument completely replace XPathDocument?’ Sadly, I can only trust me to answer this question.

A few random notes:

  • Because XML is used for output there is no pressing need for output contracts. The great news is that such things can be added without violating the Open/Closed Principle too damn much.
  • My use of ICommandHandler for a façade and a mediator looks like it can be replaced by a WCF service using named pipes. The problem with this is that I do not want to lose compatibility with Mono. Yes, kids… Mono.
  • The most important task to do next is backup changes locally, add documentation to all public members and get the changes out to CodePlex.com. After this, what should be next are all the TODO items.