﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>barton's computer science blog</title>
    <description>This blog is focused on computer science topics barton is currently working with or interested in.</description>
    <link>http://www.netspheres.net/blogs/tabid/52/BlogId/7/Default.aspx</link>
    <language>en-US</language>
    <managingEditor>music@netspheres.net</managingEditor>
    <webMaster>music@netspheres.net</webMaster>
    <pubDate>Thu, 20 Nov 2008 21:54:32 GMT</pubDate>
    <lastBuildDate>Thu, 20 Nov 2008 21:54:32 GMT</lastBuildDate>
    <docs>http://backend.userland.com/rss</docs>
    <generator>NewBlog RSS Generator Version 3.1.17.12311</generator>
    <item>
      <title>Silicon Valley Code Camp 2008 Wrapup</title>
      <description>We had a great day at this year's &lt;a
 href="http://www.siliconvalley-codecamp.com/"&gt;Silicon Valley
Code Camp&lt;/a&gt; presenting "&lt;a
 href="http://www.siliconvalley-codecamp.com/Sessions.aspx?OnlyOne=true&amp;id=126"&gt;Mapping
Agile Practices for Scalable Teams to TFS&lt;/a&gt;". In case you
wanted to attend but were not able to, you can download a movie of the
slide presentation &lt;a
 href="http://www.luminousgroup.net/archive/code_camp_2008/Mapping_Agile_Practices_for_Scalable_Teams_to_TFS.mov"&gt;here&lt;/a&gt;
and an audio recording of the session &lt;a
 href="http://www.luminousgroup.net/archive/code_camp_2008/Luminous_Outformations_CodeCamp_2008_Presentation.mp3"&gt;here&lt;/a&gt;.
We had a great time and it was good to share this information with such
an attentive and interested group!
</description>
      <link>http://www.netspheres.net/blogs/tabid/52/EntryID/63/Default.aspx</link>
      <author>barton@netspheres.net</author>
      <comments>http://www.netspheres.net/blogs/tabid/52/EntryID/63/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.netspheres.net/Default.aspx?tabid=52&amp;EntryID=63</guid>
      <pubDate>Tue, 11 Nov 2008 08:00:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.netspheres.net/DesktopModules/NewBlog/Trackback.aspx?id=63</trackback:ping>
    </item>
    <item>
      <title>Luminous Group and Microsoft's BizSpark</title>
      <description>We're very excited to have been asked to be part of Microsoft's &lt;a
 href="http://www.microsoft.com/bizspark/"&gt;BizSpark&lt;/a&gt;
program for startups, making it easier than ever for privately-held
software development startups in business for less than 3 years and
have less than US $1 million in revenues to obtain full access to
Microsoft tools and technologies such as &lt;a
 href="http://msdn.microsoft.com/en-us/tfs2008/default.aspx"&gt;Team
Foundation Server&lt;/a&gt; and &lt;a
 href="http://www.microsoft.com/sharepoint/default.mspx"&gt;SharePoint&lt;/a&gt;.
We've known for some time that while these products help teams work
better, they are often cost-prohibitive, especially for startups who
are just starting out. &lt;br&gt;
&lt;br&gt;
That's why we are so excited about &lt;a
 href="http://www.microsoft.com/bizspark/"&gt;BizSpark&lt;/a&gt;.
As a network partner, Luminous Group are able to sponsor young startups
for this program and give them full access to Microsoft's full suite of
development tools - without having to pay license fees - until the
startup grows up and creates a return on this investment. &lt;br&gt;
&lt;br&gt;
So - if you are a startup and you are interested in working with what
many feel are the very best tools for software development around, have
a look at the &lt;a
 href="http://download.microsoft.com/download/4/d/4/4d41081a-d8d9-407a-9bae-5127e6e931ca/BizSpark%20Startup%20Program%20Guide.pdf"&gt;startup
program guide&lt;/a&gt; and consider joining this amazing program.
&lt;br /&gt;
&lt;br /&gt;
</description>
      <link>http://www.netspheres.net/blogs/tabid/52/EntryID/62/Default.aspx</link>
      <author>barton@netspheres.net</author>
      <comments>http://www.netspheres.net/blogs/tabid/52/EntryID/62/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.netspheres.net/Default.aspx?tabid=52&amp;EntryID=62</guid>
      <pubDate>Sat, 08 Nov 2008 08:00:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.netspheres.net/DesktopModules/NewBlog/Trackback.aspx?id=62</trackback:ping>
    </item>
    <item>
      <title>Mapping Agile Practices for Scalable Teams to TFS</title>
      <description>I'm doing an overview of how agile software development practices can be more effectively supported with software tools at the upcoming &lt;a href="http://www.siliconvalley-codecamp.com/Sessions.aspx?OnlyOne=true&amp;id=126"&gt;Silicon Valley Code Camp&lt;/a&gt; on November 9th at 10:45AM with my colleague &lt;a href="http://www.outformations.com/Who_We_Are/Our_People.html"&gt;Don Robins&lt;/a&gt;. We'll be looking at how agile practices can be effectively supported by tools such as &lt;a href="http://msdn.microsoft.com/en-us/vstudio/bb725993.aspx"&gt;Microsoft's Visual Studio Team Suite 2010&lt;/a&gt; to increase team coherence and performance. If you have some free time come and join us!&lt;br /&gt;&lt;br /&gt;</description>
      <link>http://www.netspheres.net/blogs/tabid/52/EntryID/61/Default.aspx</link>
      <author>barton@netspheres.net</author>
      <comments>http://www.netspheres.net/blogs/tabid/52/EntryID/61/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.netspheres.net/Default.aspx?tabid=52&amp;EntryID=61</guid>
      <pubDate>Sat, 01 Nov 2008 08:00:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.netspheres.net/DesktopModules/NewBlog/Trackback.aspx?id=61</trackback:ping>
    </item>
    <item>
      <title>Agile Open California Wrapup</title>
      <description>We sponsored the &lt;a href="http://www.agileopencalifornia.com/" target="_blank"&gt;Agile Open California&lt;/a&gt; conference for the second consecutive year and the event was held last week. It is a really stimulating, interesting and non-traditional conference. For example, there is no conference agenda. Instead, it follows the &lt;a href="http://en.wikipedia.org/wiki/Open-space_meeting" target="_blank"&gt;open-space&lt;/a&gt; model for self-organization, where people put sessions on a centralized board in real time, and people show up at the events that are of interest to them. I find the format to be very dynamic and engaging, allowing for the ideas in one session to literally give birth to other sessions which follow.&lt;br&gt; &lt;br&gt; If you are interested in learning more about &lt;a href="http://en.wikipedia.org/wiki/Agile_software_development" target="_blank"&gt;Agile practices&lt;/a&gt; or have already adopted them and are looking to connect with others to share best practices and ideas, I strongly recommend this conference. &lt;br&gt; &lt;br&gt; The conference is part of the &lt;a href="http://www.agileopen.net/" target="_blank"&gt;AgileOpen&lt;/a&gt;, and in fact there are conferences organized in this style all over the world, so check out whether &lt;a href="http://www.agileopen.net/" target="_blank"&gt;there is one coming up near you&lt;/a&gt;.&lt;br&gt; &lt;br&gt; The theme at &lt;a href="http://www.agileopencalifornia.com/" target="_blank"&gt;Agile Open California&lt;/a&gt; this year was &lt;span style="font-style: italic;"&gt;Principles to Practice&lt;/span&gt;, and so in keeping with this theme, my colleague at &lt;a href="http://www.luminousgroup.net/" target="_blank"&gt;Luminous Group&lt;/a&gt;, &lt;a href="http://www.luminousgroup.net/About/Us.aspx" target="_blank"&gt;Volker Frank&lt;/a&gt;, hosted a session on &lt;a href="http://agileopencalifornia.com/wiki/index.php?title=Agile_and_Strategic_Business_Planning" target="_blank"&gt;Agile and Strategic Business Planning&lt;/a&gt;. My colleague &lt;a href="http://www.luminousgroup.net/About/Us.aspx" target="_blank"&gt;Amy Lightholder&lt;/a&gt; hosted a survey session on &lt;a href="http://agileopencalifornia.com/wiki/index.php?title=Tools_for_Agile" target="_blank"&gt;Tools for Agile&lt;/a&gt;, while I hosted a more specific session on &lt;a href="http://agileopencalifornia.com/wiki/index.php?title=Tools_for_Agile" target="_blank"&gt;Team Foundation Server for Agile&lt;/a&gt;. We also had the opportunity to meet some really interesting people and learn a lot ourselves. </description>
      <link>http://www.netspheres.net/blogs/tabid/52/EntryID/60/Default.aspx</link>
      <author>barton@netspheres.net</author>
      <comments>http://www.netspheres.net/blogs/tabid/52/EntryID/60/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.netspheres.net/Default.aspx?tabid=52&amp;EntryID=60</guid>
      <pubDate>Sat, 18 Oct 2008 08:00:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.netspheres.net/DesktopModules/NewBlog/Trackback.aspx?id=60</trackback:ping>
    </item>
    <item>
      <title>Collaborative Systems as Cultural Constructions</title>
      <description>Many companies are unaware how their culture creates material effects within the organization. Social conflict and the deployment of new technologies can produce positive changes within an organization by altering social dynamics and promoting new cultural models.&lt;br /&gt;&lt;br /&gt;Culture, those patterns of human activity and symbolic structures that give such activities significance and importance, is not generally included as part of the design and deployment process when a company goes forward with a new technology. Many significant deployment failures are attributable to cultural issues  (Lorenzi  &amp;  Riley,  2003)(Yeo,  2002).&lt;br /&gt;&lt;br /&gt;While we do not normally think of computer systems as part of our culture, the manner, dress, language, belief systems, and norms of behavior found within an organization clearly extend beyond the boundary of a computational system, especially one that is collaborative. People define the essential meaning and structure of these systems. This is why we say that they are cultural constructions.&lt;br /&gt;&lt;br /&gt;To say that a system is collaborative is to imply that the system is designed to help people involved in a common task achieve their goals. Examples of this include the development of an idea, the brainstorming of a design, or the tracking of a shared objective.&lt;br /&gt;&lt;br /&gt;Collaboration technologies deliver functionality for multiple participants to create or augment a common deliverable. Document management, workflow, audit history, and other mechanisms designed to capture the efforts of many into a managed content environment are typical of these types of systems.&lt;br /&gt;&lt;br /&gt;However, in recent years, we have also seen the rise of so-called “social networking” systems; collaborative platforms are evolving, enabling people to meet each other, share information, and provide new kinds of social activity which, prior to these systems, did not exist. Systems such as MySpace and FaceBook demonstrate that collaborative systems can be social and their mass use demonstrates cultural acceptance.&lt;br /&gt;&lt;br /&gt;At Luminous, we take the perspective that collaborative systems are fundamentally a social construct that take the form of the culture in which they are placed. If placed properly, they can also help that culture to grow and change in new ways that are in alignment with the strategic goals of the organization. However, the ability of the organization to take advantage of this opportunity is highly dependent on the manner in which deployment of the collaborative system occurs.&lt;br /&gt;&lt;br /&gt;That’s why we approach the deployment of collaborative systems such as Microsoft’s SharePoint with particular attention on the culture where that system will be deployed. Cultures, based on predisposition, both embrace and resist change, depending on their traits. It is therefore vital to map out where your organization sits on the fault line of change before you deploy next year’s technology.&lt;br /&gt;</description>
      <link>http://www.netspheres.net/blogs/tabid/52/EntryID/59/Default.aspx</link>
      <author>barton@netspheres.net</author>
      <comments>http://www.netspheres.net/blogs/tabid/52/EntryID/59/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.netspheres.net/Default.aspx?tabid=52&amp;EntryID=59</guid>
      <pubDate>Sun, 07 Sep 2008 08:00:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.netspheres.net/DesktopModules/NewBlog/Trackback.aspx?id=59</trackback:ping>
    </item>
    <item>
      <title>Patterns of thought in software adoption</title>
      <description>We've been doing a lot recently supporting teams in deploying and / or
upgrading to &lt;a
 href="http://msdn2.microsoft.com/en-us/tfs2008/default.aspx"&gt;Team
Foundation Server 2008&lt;/a&gt;. It's been a very interesting and
enlightening period of our work at Luminous because it is field testing
and reinforcing some of the fundamental ideas we have held
about the underlying patterns of thought people experience when
adopting software.&lt;br&gt;
&lt;br&gt;
Software adoption is a complex cultural process that is often relegated
to a functional discipline that is ill-equipped to address the
organizational and cultural requirements that support
successful adoption. Adoption is not simply putting someone
new in front of someone. Optimally it addresses the notion of enhancing
the capability of the individual, which inherently is about changing
the way people think about the world and their relationship to it.
Software adoption always occurs as some substep to a larger process,
namely &lt;a
 href="http://en.wikipedia.org/wiki/Change_management_%28people%29"&gt;change
management&lt;/a&gt; within an organization. Executed properly, it is
always motivated by strategic goals. There is an excellent
paper on this topic written by John Kotter from the Harvard Business
Review entitled "&lt;a
 href="http://harvardbusinessonline.hbsp.harvard.edu/hbsp/hbr/articles/article.jsp?articleID=95204&amp;ml_action=get-article&amp;print=true"&gt;Leading
Change: Why Transformation Efforts Fail&lt;/a&gt;". &lt;br&gt;
&lt;br&gt;
It's funny how we can sometimes generate certain ideas and then lay
them aside only to later realize how important and central those ideas
are to what we do. A case in point here has to do with the ideas I
presented in my 2003 &lt;a
 href="http://en.wikipedia.org/wiki/CPSR"&gt;CPSR&lt;/a&gt;
paper entitled "&lt;a
 href="http://www.netspheres.net/reference/Patterns_of_Thought.pdf"&gt;Patterns
of Thought:  An alternative approach to technology design&lt;/a&gt;".&lt;br&gt;
&lt;br&gt;
In this paper, I argued that regardless of the type of technology,
people tend to respond in the same, predictable ways to the
introduction of a new technology. These responses can be categorized as:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Masking&lt;/span&gt;:
New technologies emerge in the guise of (or are used as if
they were) old technologies;&lt;/li&gt;
  &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Convergence&lt;/span&gt;:
Technologies evolve by converging with other technologies;&lt;/li&gt;
  &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Specificity&lt;/span&gt;:
Different people use technologies differently;&lt;/li&gt;
  &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Ramifications&lt;/span&gt;:
The adoption of technologies by a society always causes fundamental
changes in that society;&lt;/li&gt;
  &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Evolution&lt;/span&gt;:
Changes may take time yet they do occur;&lt;/li&gt;
  &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Entropy&lt;/span&gt;:
People resist change.&lt;/li&gt;
&lt;/ul&gt;
Knowing this, I argue that when deploying new technologies (or
designing new ones) that it is of great value to consider
these cultural responses as part of the process. In this
fashion, focus is  tightened around the strategic goals of the
technology for the target group so that clear steps to achieve the
objectives can remain at the fore and be fully realized.&lt;br&gt;
&lt;br&gt;
At Luminous, this is a core aspect of our practice. We have deep
knowledge about specific technologies, but it is our understanding of
organizational dynamics, culture, and human behavior that enable us to
support organizations to consider how these critical factors play into
the process of deployment so that these are considered and addressed in
practical terms.&lt;br&gt;
&lt;br&gt;
What we have found is that there is a profound difference
between the results acheived by those organizations who take the time
to fully explore the strategic, organizational, and cultural
aspects of deploying a new technology and those who simply take a
functional approach to the same process.&lt;br&gt;
&lt;br&gt;
Results and benefits of employing our suggested approach include:&lt;br&gt;
&lt;ul&gt;
  &lt;li&gt;Greater alignment about the strategic vision;&lt;/li&gt;
  &lt;li&gt;Tangible ways to track and measure progress;&lt;/li&gt;
  &lt;li&gt;Accelerated progress;&lt;/li&gt;
  &lt;li&gt;Greater ease in execution as technology becomes perceived
as supportive rather than  hindering;&lt;/li&gt;
  &lt;li&gt;Technology investments are fully aligned with business
goals;&lt;/li&gt;
  &lt;li&gt;End-users have a sense of ownership about "their" process
and tools;&lt;/li&gt;
  &lt;li&gt;Enthusiasm for change process and an environment where
innovation is possible;&lt;/li&gt;
  &lt;li&gt;Work environment moves toward proactive initiatives;&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
These are results we can get really excited about.  
</description>
      <link>http://www.netspheres.net/blogs/tabid/52/EntryID/58/Default.aspx</link>
      <author>barton@netspheres.net</author>
      <comments>http://www.netspheres.net/blogs/tabid/52/EntryID/58/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.netspheres.net/Default.aspx?tabid=52&amp;EntryID=58</guid>
      <pubDate>Wed, 16 Apr 2008 08:00:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.netspheres.net/DesktopModules/NewBlog/Trackback.aspx?id=58</trackback:ping>
    </item>
    <item>
      <title>XLINQ , Schema Inference, and Intellisense on XML Properties in VB9</title>
      <description>&lt;BR&gt;
&lt;P&gt;To continue with my topic on things you can do in VB9 that you cannot (yet) do in any other .NET language, I wanted to write a bit about XML Schema Support and intellisense support for XML properties in VB9.&lt;/P&gt;
&lt;P&gt;First, I highly recommend reading Eric Meijer and Brian Beckman’s research paper &lt;A href="http://research.microsoft.com/users/emeijer/Papers/XLinq%20XML%20Programming%20Refactored%20%28The%20Return%20Of%20The%20Monoids%29.htm"&gt;XLINQ: XML Programming Refactored (The Return Of The Monoids)&lt;/A&gt;, which provides background as to the motivation and implementation of &lt;A href="http://xlinq.net/"&gt;XLINQ&lt;/A&gt; technology. The &lt;A href="http://www.prairienet.org/%7Edsb/monads.htm"&gt;Monads&lt;/A&gt; referred to in the paper remind us that the constructs being integrated into the .NET framework are enabling a more &lt;A href="http://en.wikipedia.org/wiki/Functional_programming"&gt;functional&lt;/A&gt; programming paradigm. This and the concurrent development of the &lt;A href="http://blogs.msdn.com/hugunin/archive/2007/04/30/a-dynamic-language-runtime-dlr.aspx"&gt;dynamic language runtime&lt;/A&gt; promise to further expand the capabilities of the .NET platform to languages and programming approaches so that any programmer with any approach can make use of the platform in a fashion they are comfortable with.&lt;/P&gt;
&lt;P&gt;The &lt;A href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;LINQ&lt;/A&gt; project, as many of you are aware, brings to all .NET languages capabilities languages like &lt;A href="http://en.wikipedia.org/wiki/Lisp_programming_language"&gt;LISP&lt;/A&gt; and &lt;A href="http://en.wikipedia.org/wiki/Scheme_%28programming_language%29"&gt;Scheme&lt;/A&gt; have long enjoyed, based on the notion of the &lt;A href="http://en.wikipedia.org/wiki/Lambda_calculus"&gt;Lambda-function&lt;/A&gt;. There are &lt;A href="http://msdn2.microsoft.com/en-us/vcsharp/aa336746.aspx"&gt;many examples&lt;/A&gt; for LINQ available so I will not bore you with that topic, however, what I do think is very interesting are the extensions to LINQ which support XML (&lt;A href="http://xlinq.net/"&gt;XLINQ&lt;/A&gt;) as well as a number of other VB9-specific capabilities such as &lt;A href="/blogs/tabid/52/EntryID/55/Default.aspx"&gt;XML Literals&lt;/A&gt; that make working with and programming against XML infinitely easier.&lt;/P&gt;
&lt;P&gt;This blog post explores the way in which Visual Studio 2008 and VB9 work together to enable programmers working with XML to:&lt;/P&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;1. Infer a schema based on a XML file itself (useful in cases where you have the XML file and not the schema);&lt;BR&gt;2. Use the inferred schema to hook up Visual Studio’s intellisense capabilities for the XML properties of that schema;&lt;BR&gt;3. Use XLINQ to easily load and query some XML&lt;/DIV&gt;
&lt;OL&gt;&lt;/OL&gt;
&lt;P&gt;Ready? Here we go!&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Setup&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;First, make sure you have downloaded and installed &lt;A href="http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx"&gt;Visual Studio 2008 Beta 2&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;Then, in order to make inferring the XML Schema easier, download and install this &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9ac5a653-563a-4204-a4eb-dddcae80b244&amp;displaylang=en"&gt;XML to Schema Inference Wizard&lt;/A&gt;, which is an add-on to Visual Studio and makes the process of inferring a schema from XML very easy.&lt;/P&gt;
&lt;P&gt;We will be querying a XML file that contains data from a plant catalog. To obtain this file, go to &lt;A href="http://www.w3schools.com/xml/xml_examples.asp"&gt;http://www.w3schools.com/xml/xml_examples.asp&lt;/A&gt; and download the file &lt;A href="http://www.w3schools.com/xml/plant_catalog.xml"&gt;plant_catalog.xml&lt;/A&gt; to your desktop. &lt;/P&gt;
&lt;P&gt;Next, launch &lt;A href="http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx"&gt;Visual Studio 2008 Beta 2&lt;/A&gt; and create a Console Application using the Visual Basic language:&lt;/P&gt;&lt;IMG style="WIDTH: 632px; HEIGHT: 350px" alt="Create Project Dialog" src="http://www.luminousgroup.net/images/bjf_blog/blog_190907_1.png"&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P&gt;&lt;STRONG&gt;Add a XML namespace to the XML file&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In the same way that the .NET framework organizes the massive API it encompasses into &lt;A href="http://en.wikipedia.org/wiki/Namespace_%28computer_science%29"&gt;namespaces&lt;/A&gt; to establish an organization for the framework and minimize name collisions, when we use XML using these tools, it helps to add a &lt;A href="http://en.wikipedia.org/wiki/XML_namespace"&gt;XML namespace&lt;/A&gt; if the file does not already have one. This XML namespace is used by visual studio to map the schema to the actual file you are working with. The namespace must be in the form of a &lt;A href="http://en.wikipedia.org/wiki/Uniform_Resource_Identifier"&gt;URI&lt;/A&gt;, which means it can be either a &lt;A href="http://en.wikipedia.org/wiki/Uniform_Resource_Locator"&gt;URL&lt;/A&gt; or a &lt;A href="http://en.wikipedia.org/wiki/Uniform_Resource_Name"&gt;URN&lt;/A&gt;. In a production environment, you would agree with your development team or department what the namespace would be, but for our example, it could be anything. To add the namespace to the file you downloaded, open it in notepad and extend line 3 of the line to read as follows:&lt;/P&gt;&lt;IMG style="WIDTH: 430px; HEIGHT: 25px" alt="xmlns code" src="http://www.luminousgroup.net/images/bjf_blog/blog_190907_1_5.png"&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P&gt;Think of this as analogous to the code you would write when importing a .NET namespace into your procedural code. Placing this namespace in the file provides a unique reference point for the schema we will infer.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Infer the Schema&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This part is fun. Right-click on the project in the solution explorer and choose “Add new item”. Then from the dialog box (if you have installed the &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9ac5a653-563a-4204-a4eb-dddcae80b244&amp;displaylang=en"&gt;XML to Schema Inference Wizard&lt;/A&gt;), you will see at the bottom an item called “Xml to Schema”. Select that, and for the purposes of our demo, name it “PlantCatalog.xsd”.&lt;/P&gt;
&lt;P&gt; &lt;IMG style="WIDTH: 639px; HEIGHT: 353px" alt="Add New Item Dialog" src="http://www.luminousgroup.net/images/bjf_blog/blog_190907_2.png"&gt;&lt;/P&gt;
&lt;P&gt;The wizard will run and the following dialog box is displayed:&lt;/P&gt;&lt;IMG style="WIDTH: 594px; HEIGHT: 418px" alt="Infer XML Schema Dialog" src="http://www.luminousgroup.net/images/bjf_blog/blog_190907_3.png"&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P&gt;Note that you can infer the schema with this wizard from:&lt;/P&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;- A file on your disk&lt;BR&gt;- A location on the web&lt;BR&gt;- The contents of your clipboard (Add as XML)&lt;/DIV&gt;
&lt;UL&gt;&lt;/UL&gt;
&lt;P&gt;In our case, we will “Add from File”. When you click on the “Add from File” button, a dialog will appear, where you should navigate to the plant_catalog.xml file referred to earlier in this post:&lt;/P&gt;&lt;IMG style="WIDTH: 594px; HEIGHT: 418px" alt="Add XML Files Dialog" src="http://www.luminousgroup.net/images/bjf_blog/blog_190907_4.png"&gt; &lt;BR&gt;
&lt;P&gt;The dialog will then list the file as an input to be processed by the wizard, as follows:&lt;/P&gt;&lt;IMG style="WIDTH: 594px; HEIGHT: 418px" alt="Infer XML Schema Dialog" src="http://www.luminousgroup.net/images/bjf_blog/blog_190907_5.png"&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P&gt;Click OK and you will see that a file, “PlantCatalog.xsd” is created in the solution explorer:&lt;/P&gt;&lt;BR&gt;&lt;IMG style="WIDTH: 288px; HEIGHT: 154px" alt="Solution Explorer" src="http://www.luminousgroup.net/images/bjf_blog/blog_190907_6.png"&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P&gt;Open this file by double-clicking to review the contents:&lt;/P&gt;&lt;IMG style="WIDTH: 580px; HEIGHT: 416px" alt="Plant Catalog XSD Schema" src="http://www.luminousgroup.net/images/bjf_blog/blog_190907_7.png"&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P&gt;The actual work of inferring and building the schema is done by a tool that has shipped with Visual Studio since VS.NET 2003, named &lt;A href="http://msdn2.microsoft.com/en-us/library/x6c1kb0s%28VS.71%29.aspx"&gt;xsd.exe&lt;/A&gt;, however, this is a command-line tool while the &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9ac5a653-563a-4204-a4eb-dddcae80b244&amp;displaylang=en"&gt;XML to Schema Inference Wizard&lt;/A&gt; we are using puts a nice UI over this step and also takes care of adding the output to the current project.&lt;/P&gt;
&lt;P&gt;Note also that the “targetnamespace” property has been inferred from the xmlns property we added earlier.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Importing the Schema into Intellisense and writing code&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Now that we have a schema ready to use, all we need to do is tell the VB9 compiler that we want to use it in our code. For this we use the standard “Imports” directive that you are familiar with when you want to import .NET namespaces.&lt;/P&gt;&lt;IMG style="WIDTH: 218px; HEIGHT: 118px" alt="Imports code" src="http://www.luminousgroup.net/images/bjf_blog/blog_190907_8.png"&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P&gt;Choose “&lt;XMLNS&gt;” from the intellisense choices and then type a colon. This colon defines a separator where you define an alias you will use in your code to refer to as an alias for this namespace. We use “plants” as the alias. Finally, if you type “&lt;STRONG&gt;=”&lt;/STRONG&gt;” you will see the intellisense suggest the namespace for the XML schema you have brought into your project:&lt;/P&gt;&lt;BR&gt;&lt;IMG style="WIDTH: 454px; HEIGHT: 108px" alt="Imports XML namespace" src="http://www.luminousgroup.net/images/bjf_blog/blog_190907_9.png"&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P&gt;I should note here that the steps we took in this example of adding the namespace and importing it are &lt;I&gt;not required &lt;/I&gt;if you are working only with one XML document in your application that does not specify a namespace. However, many real-world cases will have more than one schema, so this is a good thing to know.&lt;/P&gt;
&lt;P&gt;Accept this option and the close the statement with a closing quotation and greater-than sign. You are now ready to begin writing code. Let’s use the following example that shows XLINQ in action:&lt;/P&gt;&lt;IMG style="WIDTH: 586px; HEIGHT: 474px" alt="VB9 Code Example" src="http://www.luminousgroup.net/images/bjf_blog/blog_190907_10.png"&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P&gt;Note that in addition to the normal intellisense you have come to expect as part of your programming experience with Visual Studio that you also get intellisense in places where you are using XML literals in the code, for example:&lt;/P&gt;&lt;BR&gt;&lt;IMG style="WIDTH: 558px; HEIGHT: 370px" alt="XML intellisense 1" src="http://www.luminousgroup.net/images/bjf_blog/blog_190907_11.png"&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P&gt;And also here:&lt;/P&gt;&lt;IMG style="WIDTH: 542px; HEIGHT: 342px" alt="XML intellisense 2" src="http://www.luminousgroup.net/images/bjf_blog/blog_190907_12.png"&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P&gt;The “…” operator deserves a bit of explanation here, as it is new for VB9. Referring again to Meijer and Beckman’s &lt;A href="http://research.microsoft.com/users/emeijer/Papers/XLinq%20XML%20Programming%20Refactored%20%28The%20Return%20Of%20The%20Monoids%29.htm"&gt;paper&lt;/A&gt;, (in section &lt;A href="http://www.idealliance.org/xmlusa/05/call/xmlpapers/63.1015/.63.html#S5.2"&gt;5.2&lt;/A&gt;, actually) this syntax is defined as representing the &lt;I&gt;child axis&lt;/I&gt; of the current element. This is a form of &lt;A href="http://en.wikipedia.org/wiki/Syntactic_sugar"&gt;syntactic sugar&lt;/A&gt; that returns all PLANT nodes in the plantsXML document, regardless of how deeply in the hierarchy they occur. It is another aspect unique to VB9 at this time that will save a lot of time for those of us reading XML in code.&lt;/P&gt;
&lt;P&gt;Finally, what you will see, if you run your lovely application is the following output:&lt;/P&gt;&lt;IMG style="WIDTH: 678px; HEIGHT: 344px" alt="Command-line output" src="http://www.luminousgroup.net/images/bjf_blog/blog_190907_13.png"&gt; </description>
      <link>http://www.netspheres.net/blogs/tabid/52/EntryID/56/Default.aspx</link>
      <author>barton@netspheres.net</author>
      <comments>http://www.netspheres.net/blogs/tabid/52/EntryID/56/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.netspheres.net/Default.aspx?tabid=52&amp;EntryID=56</guid>
      <pubDate>Wed, 19 Sep 2007 08:00:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.netspheres.net/DesktopModules/NewBlog/Trackback.aspx?id=56</trackback:ping>
    </item>
    <item>
      <title>Levelling The Playing Field</title>
      <description>&lt;P&gt;While I am not an expert on the subject, in my tenure as a founder of the Bay Area .NET Users Group (&lt;A href="http://www.baynetug.org/"&gt;Bay.NET&lt;/A&gt;), I am very much aware of cultural differences between programmers who work with the Visual Basic and C# languages. An excellent overview written by Nigel Shaw on these cultural differences can be found &lt;A href="http://www.codeproject.com/dotnet/CSharpVersusVB.asp"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Having lived in many places throughout the world I would consider myself as one who is most interested in culture and cultural differences. In my experiences, I have discovered in myself an inclination to find things I &lt;I&gt;appreciate&lt;/I&gt; about other cultures (and people). &lt;/P&gt;
&lt;P&gt;I think we all tend to look at differences, be they cultural, as in those who prefer Apple Computers to Windows or Linux and make some value judgments based on what camp &lt;I&gt;we &lt;/I&gt;live in and what camp &lt;I&gt;they&lt;/I&gt; live in.&lt;/P&gt;
&lt;P&gt;My late friend Rich Gold put it beautifully in his biographical work &lt;A href="http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&amp;tid=11274"&gt;The Plenitude&lt;/A&gt; when he said:&lt;/P&gt;
&lt;P&gt;“During my life I put on and took off four hats of creativity: artist, scientist, designer and engineer. I think of each one as quite distinct with its own methods, world views, precedents, predecessors, style of dress, interior decorations, histories, vocabularies, alliances, likes, dislikes, prejudices, tools, techniques and demeanors. I can walk into an office and know immediately if it is a designer’s office or an engineer’s office. I instantaneously know if it is an artist’s loft or a scientist’s lab even if they are filled with the same digital tools. Actually it is only with great effort that I have begun thinking about them as &lt;I&gt;hats&lt;/I&gt;; in some real way, for me, they are states of &lt;I&gt;being&lt;/I&gt; as different as alligators and elephants.”&lt;/P&gt;
&lt;P&gt;The one thing Rich made extremely clear about these cultures is that &lt;I&gt;all of them are essential to create a great product.&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;What is true regarding Gold’s observations of the artist / scientist / designer / engineer cultures is also true of the Visual Basic and C# cultures (as well as those of all other programming languages): We need all of them to make truly great products.&lt;/P&gt;
&lt;P&gt;Prior to and since its incorporation into the .NET framework, Visual Basic has been perceived by many as somewhat of an ugly stepchild by many programmers whose language of choice is not Visual Basic.&lt;/P&gt;
&lt;P&gt;And &lt;STRONG&gt;that&lt;/STRONG&gt; is why the new version of Visual Basic.NET – &lt;A href="http://msdn2.microsoft.com/en-us/vbasic/aa463382.aspx"&gt;VB9&lt;/A&gt;, to be released as part of &lt;A href="http://msdn2.microsoft.com/en-us/vstudio/aa700830.aspx"&gt;Visual Studio 2008&lt;/A&gt; is so terribly exciting to me. It marks a powerful sea change in the Visual Basic language where the culture behind that language is bringing some exciting innovation to the .NET platform based through language-specific features.&lt;/P&gt;
&lt;P&gt;I will be spending the next few blog posts, writing about, among other things, these new language features. They are features that are important for all .NET developers to know about so informed choices can be made regarding the approach used to build software applications.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;XML Literals in VB9&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The first VB9 feature I think it going to make me more productive as a programmer is the ability to work with XML literals directly in code. From a description, this may not seem like much, but it represents is a new paradigm of working with XML natively in a programming language. No longer do I need to learn an API to work with XML, but I can write XML in 2 lines of code, as follows:&lt;/P&gt;&lt;IMG style="WIDTH: 381px; HEIGHT: 78px" alt="Code Example 1" src="http://www.luminousgroup.net/images/bjf_blog/082907code_example1.png"&gt; 
&lt;P&gt;That may not seem like much, but VB9 also supports embedded expressions that are evaluated at runtime within the XML literals, that, when combined with language integrated query (&lt;A href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;LINQ&lt;/A&gt;) to enable very powerful, yet simple constructions, such as:&lt;/P&gt;
&lt;P&gt; &lt;IMG style="WIDTH: 362px; HEIGHT: 198px" alt="Code Example 2" src="http://www.luminousgroup.net/images/bjf_blog/082907code_example2.png"&gt;&lt;/P&gt;
&lt;P&gt;The &lt;%= ... &gt; syntax above represents an embedded expression and you can nest these recursively as many levels as you need to represent the desired structure.&lt;/P&gt;
&lt;P&gt;These are things you just cannot do in any other .NET language and will make a huge different in productivity for any job where the construction of XML is required.&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;
&lt;P&gt; &lt;/P&gt;</description>
      <link>http://www.netspheres.net/blogs/tabid/52/EntryID/55/Default.aspx</link>
      <author>barton@netspheres.net</author>
      <comments>http://www.netspheres.net/blogs/tabid/52/EntryID/55/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.netspheres.net/Default.aspx?tabid=52&amp;EntryID=55</guid>
      <pubDate>Wed, 29 Aug 2007 08:00:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.netspheres.net/DesktopModules/NewBlog/Trackback.aspx?id=55</trackback:ping>
    </item>
    <item>
      <title>The illusion of the perfect computer</title>
      <description>&lt;P&gt;I recently got a new computer preloaded with Windows Vista. I must say that when I got the machine I was extremely surprised at how well it worked and how easy it was for me to transfer my data to the new machine (Lenovo T60p). With all of the comments I had been hearing which indicated that many people felt that the Vista operating system was problematic, I was rather surprised at how smooth my transition was.&lt;/P&gt;
&lt;P&gt;Alas, this was not to last, and what is rather ironic is that I have been subject to a number of issues in the past month that have been rather disruptive and taken some time to remedy and yet are not related specifically to any flaw in the operating system. &lt;/P&gt;
&lt;P&gt;The first sign of trouble was when I shut the computer down after doing some work and found it would not start the next morning. I believe a file was (or files were) corrupted somehow on shutdown (although I do not know for sure) and were only able to get back to an operable state by restoring the OS from a recent rescue and recovery backup, which I do regularly. One nice part about this option is that one can restore the OS to the state in the backup without touching the state of user files. In other words, fix only the OS and leave my files alone. This worked like a charm, so I was pleased to see that the recovery tools worked as they should. But I was not yet through my ordeal. This was only the beginning of a folly of further system errors. &lt;/P&gt;
&lt;P&gt;The next thing that happened is that I started to receive visits from the &lt;A href="http://en.wikipedia.org/wiki/Blue_Screen_of_Death"&gt;Blue Screen of Death&lt;/A&gt;. Now, I am an intense computer user, so when this happened, I naturally assumed it was because I was doing too many things, i.e. playing music, compiling code, having too many files open, etc. Yet, when this continued to occur even at times of minimal activity and began to interfere with system backups. I knew at that point that I really needed to get to the bottom of this.&lt;/P&gt;
&lt;P&gt;The next issue occurred, rather ironically, when I was trying to fix this problem and ran the Lenovo &lt;A href="http://www.pc.ibm.com/us/think/thinkvantagetech/system_update.html"&gt;system update&lt;/A&gt; tool. When I ran the update, the tool informed me of a “&lt;A href="http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-67648"&gt;critical BIOS update&lt;/A&gt;”. Upon reading about this update, I found it interesting that the language Lenovo used to describe what the update was addressing was “a possible processor marginality” and “a potential source of unpredictable system behavior”. Further research on the &lt;A href="http://support.microsoft.com/default.aspx/kb/936357"&gt;Microsoft site&lt;/A&gt; was more telling: “You may receive a Stop error, or you may experience unpredictable system behavior”. Oh yes, I thought I had found the issue and so proceeded to apply this update. But something odd happened when the update was complete. The computer would not start and the BIOS screen did not come up. I knew immediately that the BIOS was either erased or corrupted, and so contacted Lenovo support, who promptly sent out a technician to replace the system board. &lt;/P&gt;
&lt;P&gt;Phew! Well, that’s over, I thought. But it wasn’t. Now, not only was I still getting blue screens, but since they had replaced the system board, all sorts of additional ramifications emerged:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;I had to re-activate Windows by calling Microsoft;&lt;/LI&gt;
&lt;LI&gt;I found that the technician had not entered the machine type or serial number to my machine, making it impossible to use certain ThinkVantage software such as system update;&lt;/LI&gt;
&lt;LI&gt;I had previously been using the security chip on the old system board to secure the computer – now the &lt;A href="http://www.pc.ibm.com/us/think/thinkvantagetech/security.html"&gt;Client Security Solution&lt;/A&gt; was caught in a loop and I had to uninstall and reinstall the entire subsystem;&lt;/LI&gt;
&lt;LI&gt;The antivirus program I had installed no longer worked &amp; required reinstallation;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Then when the technician came out to update the system board he proceeded to tell me that he could not put the serial number in the computer because this was not supported under Windows Vista.&lt;/P&gt;
&lt;P&gt;Surprisingly, I found that I did not get upset as I was presented with this continual assault on my computing platform. I just decided I would fix it all, piece by piece.&lt;/P&gt;
&lt;P&gt;I called Lenovo and asked them about what the technician had told me. They informed me that he was incorrect and arranged to have another technician who understood that one had to &lt;I&gt;boot&lt;/I&gt; from the program using a floppy (How passé! One would think that in this day in age we could at least boot off of USB  flash memory for this kind of operation…) that enters the serial number rather than double-click it from the operating system.&lt;/P&gt;
&lt;P&gt;Armed with my new serial number - embedded system board, I proceeded to troubleshoot the ongoing bluescreens. One nice feature of Vista is that it keeps a log of all system failures (separate from the event log) and associated files. So all the memory dumps were there and available for me to analyze with the Windows debugger. My research showed that the issue was with the wireless driver for the Lenovo / Atheros chipset on my system. My hypothesis is that either the Lenovo system update or Microsoft update saw the hardware and provided the wrong update to this driver, as I was able to confirm that a system update happened on the 18 of June, which is the date of the updated driver and the date that the bluescreen problem started. I was able to resolve the issue by removing the driver and then reinstalling the driver from a fresh download package.&lt;/P&gt;
&lt;P&gt;I then noticed that when I tried to back up the computer using the new Microsoft backup program, I received an inormative message, “An error occurred. The following information may help you to resolve the problem: Catastrophic failure (0x8000FFFF)”. I could just imagine how an average user would respond to that message. Oh, thanks for that, very helpful! &lt;/P&gt;
&lt;P&gt;I proceeded to check the event log and found that the NTFS file system reported errors and suggested that I run chkdsk. So I did. Or, at least I tried to. But no matter what I did, on reboot, chkdsk would not run. I am apparently &lt;A href="http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1623750&amp;SiteID=17"&gt;not the only person&lt;/A&gt; to experience this issue. I figured out that if I booted into the recovery partition and then to the command prompt that I could run chkdsk and was able to run it successfully. It found quite a lot of errors and corrected these. I hypothesize now that this was the actual source of many of these issues, as the initial problem where the machine would not boot properly may have been caused by a bad write to the drive. &lt;/P&gt;
&lt;P&gt;Having repaired the disk to pristine state, I rebooted. Oh dear. Now the system informed me that a Windows dll was corrupted and continuously popped up a message box to remind me. Hmm. Well, at least I was provided with the name of the dll, so back to the recovery console I went and performed a manual copy of that dll from the recover partition to c:\windows\system32. I rebooted, saw no errors, the event log looked clean (and still does several days later). &lt;/P&gt;
&lt;P&gt;I have now gotten the machine back to a stable state and am back up on daily backups. Altogether, it has now taken me about one month to re-stabilize this system which started out as being so wonderfully smooth I could not believe it. Maybe that was the problem all along. &lt;/P&gt;
&lt;P&gt;In any case, what is clear to me is that no computer is free of problems, and to expect that from anything in life is something I consider to be unrealistic. If a typical user faced these issues, I loathe to think what they would do without a full battery of technical support staff on hand to assist them. The lesson? The compelling illusion of the perfect computer is so pervasive we often forget that there are many possible responsibilities that come with operating a complex piece of machinery. It is ironic that the user interfaces we strive to build often support that illusion. And yes, we &lt;I&gt;do&lt;/I&gt; want to make it easier for people to use computers, however, we must not ourselves be seduced by the metaphor.&lt;/P&gt;</description>
      <link>http://www.netspheres.net/blogs/tabid/52/EntryID/52/Default.aspx</link>
      <author>barton@netspheres.net</author>
      <comments>http://www.netspheres.net/blogs/tabid/52/EntryID/52/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.netspheres.net/Default.aspx?tabid=52&amp;EntryID=52</guid>
      <pubDate>Sun, 15 Jul 2007 08:00:00 GMT</pubDate>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.netspheres.net/DesktopModules/NewBlog/Trackback.aspx?id=52</trackback:ping>
    </item>
    <item>
      <title>The imminent programming language and accompanying cultural convergence</title>
      <description>&lt;P&gt;I have often noted with intense interest that people who program in particular languages seem also to fall into certain patterns of thinking about the problems they solve. &lt;A href="http://en.wikipedia.org/wiki/Kenneth_E._Iverson"&gt;Kenneth Iverson&lt;/A&gt;, the inventor of the &lt;A href="http://en.wikipedia.org/wiki/APL_programming_language"&gt;APL programming language&lt;/A&gt; spoke to this point in his 1980 Turing award lecture entitled “&lt;A href="http://portal.acm.org/citation.cfm?id=1234321.1234322"&gt;Notation as a tool of thought&lt;/A&gt;”. The thesis of that paper is the general idea that “the advantages of executability and universality found in programming languages can be effectively combined, in a single coherent language…”.&lt;/P&gt;
&lt;P&gt;Fast forward to 2007 – here we are in a world where there are not five, but hundreds, if not thousands of &lt;A href="http://www.levenez.com/lang/history.html"&gt;programming languages&lt;/A&gt;. For many who program in a specific language, the choice to learn a specific syntax and accompanying abstractions is a decision not taken lightly. Some even describe the experience in what might be termed a &lt;A href="http://www.stromian.com/copyleft.htm"&gt;religious posture&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;So about a month ago, Microsoft announced, through the blog of &lt;A href="http://blogs.msdn.com/hugunin/archive/2007/04/30/a-dynamic-language-runtime-dlr.aspx"&gt;Jim Huginin&lt;/A&gt;, support for an extension to the .NET &lt;A href="http://en.wikipedia.org/wiki/Common_Language_Runtime"&gt;Common Language Runtime (CLR)&lt;/A&gt; to better support dynamic languages such a &lt;A href="http://en.wikipedia.org/wiki/Python_%28programming_language%29"&gt;Python&lt;/A&gt;, &lt;A href="http://en.wikipedia.org/wiki/Ruby_%28programming_language%29"&gt;Ruby&lt;/A&gt;, &lt;A href="http://en.wikipedia.org/wiki/Javascript"&gt;JavaScript&lt;/A&gt; (ECMAScript 3.0), and &lt;A href="http://en.wikipedia.org/wiki/Visual_basic"&gt;Visual Basic&lt;/A&gt;. Its name? The &lt;A href="http://en.wikipedia.org/wiki/Dynamic_language_runtime"&gt;Dynamic Language Runtime, or DLR&lt;/A&gt;. Also, it is interesting to note that the source code for this project is being made freely available under &lt;A href="http://www.microsoft.com/resources/sharedsource/licensingbasics/permissivelicense.mspx"&gt;permissive license&lt;/A&gt; on Microsoft’s &lt;A href="http://www.codeplex.com/IronPython/Wiki/View.aspx?title=v2.0%20Alpha%201%20Release%20Notes&amp;referringTitle=Home"&gt;codeplex&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;It is also very interesting to note, in case you do not know, that Jim Hugunin wrote the Java implementation of Python known as &lt;A href="http://en.wikipedia.org/wiki/Jython"&gt;Jython&lt;/A&gt;, wrote the compiler for a very interesting extension to Java that is helpful in managing change among large numbers of classes called &lt;A href="http://en.wikipedia.org/wiki/AspectJ"&gt;AspectJ&lt;/A&gt;, and most recently has been responsible for the &lt;A href="http://en.wikipedia.org/wiki/Ironpython"&gt;IronPython&lt;/A&gt; project, whose goal is to make the Python language fully available on the .NET platform.&lt;/P&gt;
&lt;P&gt;And to add more into the mix, when we look at the new &lt;A href="http://en.wikipedia.org/wiki/Functional_programming"&gt;functional&lt;/A&gt; extensions to &lt;A href="http://msdn2.microsoft.com/en-us/vcsharp/aa336745.aspx"&gt;C# 3.0&lt;/A&gt; that are an outgrowth of &lt;A href="http://en.wikipedia.org/wiki/Anders_Hejlsberg"&gt;Anders Hejlberg’s&lt;/A&gt; &lt;A href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;LINQ project&lt;/A&gt;, it becomes clear that .NET is moving toward an unprecedented level of support for just about any modern programming language and style.&lt;/P&gt;
&lt;P&gt;So, rather than reality following Iverson’s idea, it seems instead that the way things are turning out is that the .NET platform will support static and dynamic languages, which opens the door for many, many more programmers, already well skilled in their programming ways, to leverage the platform. &lt;/P&gt;
&lt;P&gt;
&lt;P&gt;I have to confess I find the entire prospect extremely exciting. And it is clear to me that Hugunin is dedicated to including other language designers in the process of developing the DLR so that there is a “community process”. That is certainly the right thing to be doing in today’s climate.&lt;/P&gt;
&lt;P&gt;Every language has its lexical structure, its syntax, its keywords, identifiers, and taken together, I argue that becoming proficient in a particular programming language is equivalent to &lt;A href="http://en.wikipedia.org/wiki/Sapir-Whorf_hypothesis"&gt;taking on a particular view of the world&lt;/A&gt;. The view of that world is based very much on how the language abstracts the hardware and allows the programmer to conceptualize the system they are encoding.&lt;/P&gt;
&lt;P&gt;So, as I ponder over these differences (let’s call them &lt;I&gt;cultural differences&lt;/I&gt; for the moment) that exist between programmers that are influenced by the language, I am even more interested in how these cultural differences will be bridged, and even more importantly, how to create situations for us to look beyond our differences towards an even higher set of goals that could serve to motivate everyone to create better software, regardless of their language world view.&lt;/P&gt;
&lt;P&gt;I think that these issues are rather important to look at, as people, not the languages, are the ones who actually move things forward. &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <link>http://www.netspheres.net/blogs/tabid/52/EntryID/51/Default.aspx</link>
      <author>barton@netspheres.net</author>
      <comments>http://www.netspheres.net/blogs/tabid/52/EntryID/51/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.netspheres.net/Default.aspx?tabid=52&amp;EntryID=51</guid>
      <pubDate>Thu, 31 May 2007 08:00:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.netspheres.net/DesktopModules/NewBlog/Trackback.aspx?id=51</trackback:ping>
    </item>
  </channel>
</rss>