<feed xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US">
    <title>Ramblings of a Flying Programmer</title>
    <link rel="self" type="application/xml" href="http://geekswithblogs.net/jsaunders/Atom.aspx" />
    <subtitle type="html" />
    <id>http://geekswithblogs.net/jsaunders/Default.aspx</id>
    <author>
        <name>John Saunders</name>
        <uri>http://geekswithblogs.net/jsaunders/Default.aspx</uri>
    </author>
    <generator uri="http://subtextproject.com" version="Subtext Version 0.0.0.0">Subtext</generator>
    <updated>2009-02-25T14:57:41Z</updated>
    <entry>
        <title>Riding The Bench</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/jsaunders/archive/2009/02/25/riding-the-bench.aspx" />
        <id>http://geekswithblogs.net/jsaunders/archive/2009/02/25/riding-the-bench.aspx</id>
        <published>2009-02-25T14:55:01-06:00:00</published>
        <updated>2009-02-25T14:57:41Z</updated>
        <content type="html">After nearly a year and a half, I've finally rolled off of leading an enormous project requiring the better part of my days/nights/weekends. While taking some time "on the bench" between assignments, I am happy to be able to return to blogging some of my findings, questions and random rants &lt;img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/wink_smile.gif" /&gt;&lt;img src="http://geekswithblogs.net/jsaunders/aggbug/129680.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/jsaunders/comments/129680.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/jsaunders/comments/commentRss/129680.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/jsaunders/services/trackbacks/129680.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Second Life has Mono</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/jsaunders/archive/2008/02/05/second-life-has-mono.aspx" />
        <id>http://geekswithblogs.net/jsaunders/archive/2008/02/05/second-life-has-mono.aspx</id>
        <published>2008-02-05T15:04:48-06:00:00</published>
        <updated>2008-02-05T15:15:48Z</updated>
        <content type="html">&lt;p&gt;&lt;font size="2"&gt;For those that haven't experienced &lt;/font&gt;&lt;a href="http://secondlife.com"&gt;&lt;font size="2"&gt;Second Life&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, it is an online virtual world imagined and created entirely by its residents. Noticed that I said &lt;em&gt;experienced&lt;/em&gt;, rather than &lt;em&gt;played&lt;/em&gt;, since Second Life isn't really what you'd call a game. Best of all, Second Life doesn't cost a thing to experience (though owning land can be costly).&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Since it's 2003 launch, Second Life has grown to inhabit millions upon millions of residents. Inside Second Life you're introduced to a world of entertainment, experiences, and creations of fellow residents, and are able to begin choosing your own destiny where you can do basically anything that you can imagine.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Second Life consists of a large server farm primarily running on Linux operating systems. Among these servers there are login servers, user servers, space servers, data servers, simulators and several others. The simulators themselves are responsible for running the physics engine, collision detection, and sending updates to the client viewers. The client viewers handle the location of objects, determining velocity and other physical information, but do not handle any sort of detection collision. A robust scripting language, the &lt;/font&gt;&lt;a href="http://wiki.secondlife.com/wiki/LSL_Portal"&gt;&lt;font size="2"&gt;Linden Scripting Language (LSL)&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, is available to the residents themselves so that they can create the world as they see it. This script runs within the simulators' virtual machine. This is where &lt;/font&gt;&lt;a href="http://www.mono-project.com/Main_Page"&gt;&lt;font size="2"&gt;Mono&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; comes in. A beta is officially in progress to test &lt;/font&gt;&lt;a href="https://wiki.secondlife.com/wiki/Mono"&gt;&lt;font size="2"&gt;LSL compilation to Mono bytecode&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; within a beta set of simulators with Mono viewers!&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;For those that aren't aware of Mono, it is an open-source implementation of the .NET Framework which allows client and server .NET applications to run on Linux, Solaris, Mac OS X, Windows and Unix.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Second Life allows for endless opportunity for its residents to say  skydive, visit foreign countries, participate in political debates, build homes, run businesses, and the list goes on and on as far as you can imagine. My personal favorite thing to do in Second Life is to participate in &lt;/font&gt;&lt;a href="http://www.sldnug.net/default.aspx"&gt;&lt;font size="2"&gt;Second Life .NET Users Group (SLDNUG)&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;. This is a community of Microsoft .NET users sharing ideas, participating in group presentations hosted by Microsoft developers, and helping to bring more users to the community itself. If interested, you can join SLDNUG by visiting the &lt;/font&gt;&lt;a href="http://www.facebook.com/group.php?gid=6173101606 "&gt;&lt;font size="2"&gt;Facebook&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; page.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/jsaunders/aggbug/119305.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/jsaunders/comments/119305.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/jsaunders/comments/commentRss/119305.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/jsaunders/services/trackbacks/119305.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Enterprise Application Development using the Microsoft .NET Platform - Part 1</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/jsaunders/archive/2008/01/29/enterprise-application-development-using-the-microsoft-.net-platform---part.aspx" />
        <id>http://geekswithblogs.net/jsaunders/archive/2008/01/29/enterprise-application-development-using-the-microsoft-.net-platform---part.aspx</id>
        <published>2008-01-29T11:50:21-06:00:00</published>
        <updated>2008-01-29T11:52:16Z</updated>
        <content type="html">&lt;font face="Arial"&gt;
&lt;p&gt;&lt;font face="Arial" size="2"&gt;This will be the first in a series of articles covering Enterprise Application Development using the Microsoft .NET Platform.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" size="2"&gt;In this first article, I'd like to give you an understanding of the fundamentals of the Microsoft .NET Framework.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" size="2"&gt;This will lay groundwork for upcoming sessions covering object-orientation (OO), software design patterns, service-orientation or Service Oriented Architecture (SOA), Microsoft BizTalk, Visual Studio, Team Foundation Server and other related Microsoft tools and best practices that enable development of distributed applications.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" size="2"&gt;&lt;a target="_self" href="http://geekswithblogs.net/jsaunders/archive/2008/01/29/an-introduction-to-the-microsoft-.net-platform.aspx"&gt;An Introduction to the Microsoft .NET Platform&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/font&gt;&lt;img src="http://geekswithblogs.net/jsaunders/aggbug/119043.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/jsaunders/comments/119043.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/jsaunders/comments/commentRss/119043.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/jsaunders/services/trackbacks/119043.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Consultant Evangelism</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/jsaunders/archive/2008/01/28/consultant-evangelism.aspx" />
        <id>http://geekswithblogs.net/jsaunders/archive/2008/01/28/consultant-evangelism.aspx</id>
        <published>2008-01-28T16:21:26-06:00:00</published>
        <updated>2008-01-28T16:33:17Z</updated>
        <content type="html">&lt;p&gt;&lt;font face="Arial" size="2"&gt;Working as a consultant, I often find myself preaching the .NET gospel attempting to "save" my client's development teams. I've yet to see a team that hasn't been able to benefit from implementing Microsoft platform solutions, but initially there's a general vibe against drinking the cool-aid. Most of this push back stems from a lack of understanding of the tools that are available. I'm not here to say that .NET can solve world peace, but enterprise software applications can be rapidly developed, easily maintained, scale out to support demand and provide the interoperability required to support legacy systems.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Most of my work consists of providing architectural designs, rapid proofs of concepts, and development team direction through implementation before moving on to the next client. That said, there's often a lot of instruction required to bring my colleagues up to speed, not just on the Microsoft .NET platform and related tools, but on fundamental software development skills applied at a more general level.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Once more I have been asked to provide instruction now after having sold the concept, and again I kick myself for not saving previously prepared training sessions given to other clients. I am happy to do this again though, since bringing more developers to the .NET community makes me very happy, and often what these people can bring TO the .NET community only benefits everyone!&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;I'd like to use this forum to both keep this training material handy, and also to share with the community the guidance that I can offer after having used the .NET platform almost exclusively for the past six years (~2002).&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;My goal is to start from the basics, ultimately offering you an understanding of how to architect distributed applications for your enterprise.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;John Saunders &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;&lt;em&gt;MCP, MCDST, MCAD, MCSD&lt;br /&gt;
&lt;br /&gt;
&lt;/em&gt;&lt;img height="53" alt="Microsoft Certified Solution Developer" width="112" border="0" src="/images/geekswithblogs_net/jsaunders/Certs/MCSD.jpg" /&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/jsaunders/aggbug/119009.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/jsaunders/comments/119009.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/jsaunders/comments/commentRss/119009.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/jsaunders/services/trackbacks/119009.aspx</trackback:ping>
    </entry>
    <entry>
        <title>ADO.NET Entity Framework</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/jsaunders/archive/2008/01/23/ado.net-entity-framework.aspx" />
        <id>http://geekswithblogs.net/jsaunders/archive/2008/01/23/ado.net-entity-framework.aspx</id>
        <published>2008-01-23T21:39:57-06:00:00</published>
        <updated>2008-01-23T22:11:52Z</updated>
        <content type="html">&lt;p&gt;&lt;font size="2"&gt;Now that I'm feeling a bit more comfortable with LINQ to SQL and LINQ to XML, I really wanted to begin exploring the ADO.NET Entity Framework and LINQ to Entities. &lt;br /&gt;
&lt;br /&gt;
I started by going to &lt;/font&gt;&lt;font face="Arial"&gt;&lt;a href="http://msdn.microsoft.com/data"&gt;&lt;font size="2"&gt;msdn.microsoft.com/data&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; and installed the ADO.NET Entity Framework Beta 3 and ADO.NET Entity Framework Tools CTP 2 (for Beta 3).&lt;br /&gt;
&lt;br /&gt;
At first glance, I didn't notice anything new being provided by the Tools CTP, so I started a simple C# Console Application. From the Add New Item menu, I noticed an ADO.NET Entity Data Model template. After adding the data model, you're asked if you would like to generate the model contents from a database, or create a new one. Considering that I didn't know what exactly went into the model, I went with the generated approach. You are then asked to create a connection or use an existing and give a name for the connection settings to be saved in the App.Config. You'll see that it creates an "Entity connection string".&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;font face="Arial" size="2"&gt;metadata=.\Model1.csdl|.\Model1.ssdl|.\Model1.msl;provider=System.Data.SqlClient;provider connection string="Data Source=LOCALHOST;Initial Catalog=Northwind;Integrated Security=True"&lt;br /&gt;
&lt;br /&gt;
Finally you are able to choose the database objects (tables, views, stored procedures) to include within your model and give a name for the model namespace. Once generated, you'll find a ".edmx" file with an associated Designer class within the solution. The edmx Model appears similar to the reverse engineered tables, but also there are different types associated with each entity. In fact, each of these entities are classes that were generated to represent the data structure. Along with the scalar values of the associated table (i.e. Customers.Address), you'll notice "Navigation Properties" representing collections of related entities.&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;img height="285" alt="" width="227" border="0" src="/images/geekswithblogs_net/jsaunders/IDE/order_details.jpg" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Notice the Orders and Products collections associated to the Order_Details entity? Ok, this is very interesting stuff that I'll explore more a little later. I want to see the what's changed for ADO.NET!&lt;br /&gt;
&lt;br /&gt;
I decided to start simple. Suppose I wanted to see a list of customers who haven't made any purchases. Maybe we should send them some coupons! So, I'm thinking I'll create a database connection and execute a query using LINQ against the connection. Well.. &lt;br /&gt;
&lt;br /&gt;
Along with my Entity Types and Associations that were created with my model, I also have what's called an EntityContainer called NorthwindEntities that contains Entity Sets and Association Sets (and optionally imported functions). Again, further exploration required, but let's see what we can do with this EntityContainer.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;img height="287" alt="" width="373" border="0" src="/images/geekswithblogs_net/jsaunders/IDE/NorthwindEntities.jpg" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Notice the Orders entity collection associated with the cus object. I didn't write any query or join to do that!&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;img height="103" alt="" width="321" border="0" src="/images/geekswithblogs_net/jsaunders/IDE/nwresults.jpg" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;font size="2"&gt;I truely have to explore more to be qualified to speak on the topic of ADO.NET Entity Framework, but after 20 minutes of investigation, I am happy about what I am seeing! &lt;br /&gt;
&lt;br /&gt;
More on this topic to come!&lt;/font&gt;&lt;img src="http://geekswithblogs.net/jsaunders/aggbug/118846.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/jsaunders/comments/118846.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/jsaunders/comments/commentRss/118846.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/jsaunders/services/trackbacks/118846.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Multithreaded WPF UX</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/jsaunders/archive/2008/01/15/multithreaded-wpf-ux.aspx" />
        <id>http://geekswithblogs.net/jsaunders/archive/2008/01/15/multithreaded-wpf-ux.aspx</id>
        <published>2008-01-15T08:53:12-06:00:00</published>
        <updated>2010-03-11T14:36:57Z</updated>
        <content type="html">&lt;p&gt;In my last post, I talked about a hidden method on the Dispatcher associated with a WPF control to check if the current thread has access to the control. I thought that I would take a moment to explain how I actually used the CheckAccess() method. &lt;br /&gt;
&lt;br /&gt;
To start with, I have a combobox in a WPF window that I would like to load a list of categories into without freezing the window itself. To load the items into the combobox, which I'd like to do at runtime, I'll use the Loaded event on the combobox. &lt;br /&gt;
&lt;br /&gt;
&lt;font color="#0000ff"&gt;&amp;lt;ComboBox Height="26" HorizontalAlignment="Left" Margin="133,0,0,3.95440729483283" Name="comboBox1" VerticalAlignment="Bottom" Width="121" Loaded="comboboxLoaded" DisplayMemberPath="Name" /&amp;gt;&lt;/font&gt; &lt;br /&gt;
&lt;br /&gt;
Now, I'll follow the typical pattern of calling the data access method on another thread from the comboboxLoaded method. &lt;br /&gt;
&lt;br /&gt;
&lt;font color="#0000ff"&gt;protected void comboboxLoaded(object sender, EventArgs e) &lt;br /&gt;
{ &lt;/font&gt;&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;System.Threading.Thread thread = new System.Threading.Thread(Load); &lt;br /&gt;
thread.IsBackground = true; &lt;br /&gt;
thread.Start(); &lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;&lt;font color="#0000ff"&gt;} &lt;br /&gt;
&lt;/font&gt;&lt;br /&gt;
Here you'll notice I'm calling a method called Load() on a new thread. This typically would be the extent of the threading that I might do to ensure that my Load method does not hold up my UX thread. (By the way, I've grown quite fond of the term of UX (User Experience) rather than UI.) What I want to be sure of though is that the thread that I created has access to the control. &lt;br /&gt;
&lt;br /&gt;
&lt;font color="#0000ff"&gt;private delegate void loadCategories(); &lt;br /&gt;
private void Load() &lt;br /&gt;
{ &lt;/font&gt;&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;&lt;font color="#0000ff"&gt;CategoryList categories = CategoryList.GetCategoryList(); &lt;br /&gt;
if (comboBox1.Dispatcher.CheckAccess()) &lt;br /&gt;
{ &lt;/font&gt;&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;&lt;font color="#0000ff"&gt;comboBox1.ItemsSource = categories; &lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;&lt;font color="#0000ff"&gt;} &lt;br /&gt;
else &lt;br /&gt;
{ &lt;/font&gt;&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;&lt;font color="#0000ff"&gt;comboBox1.Dispatcher.BeginInvoke(DispatcherPriority.Render, &lt;br /&gt;
new loadCategories(delegate &lt;br /&gt;
{ &lt;/font&gt;&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;&lt;font color="#0000ff"&gt;comboBox1.ItemsSource = categories; &lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;&lt;font color="#0000ff"&gt;})); &lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;&lt;font color="#0000ff"&gt;} &lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;&lt;font color="#0000ff"&gt;} &lt;br /&gt;
&lt;/font&gt;&lt;br /&gt;
You'll notice that if an invoke is required, the CheckAccess() method will return false, giving me the opportunity to pass the logic off to the loadCategories delegate. This may seem a bit like overkill, but given the rich experience abilities given by WPF, the last thing that I'd want is my UI flickering or freezing up while I'm doing databinding. I think I'll explore this a bit more and build a resuable control to extend from that will auto delegate logic when necessary. &lt;br /&gt;
&lt;/p&gt;&lt;img src="http://geekswithblogs.net/jsaunders/aggbug/118564.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/jsaunders/comments/118564.aspx</wfw:comment>
        <slash:comments>4</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/jsaunders/comments/commentRss/118564.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/jsaunders/services/trackbacks/118564.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Hidden Methods - EditorBrowsable</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/jsaunders/archive/2008/01/14/hidden-methods---editorbrowsable.aspx" />
        <id>http://geekswithblogs.net/jsaunders/archive/2008/01/14/hidden-methods---editorbrowsable.aspx</id>
        <published>2008-01-14T21:13:40-06:00:00</published>
        <updated>2008-01-15T07:57:36Z</updated>
        <content type="html">&lt;p&gt;&lt;font size="2"&gt;Recently while exploring multi-threading with WPF, I came across a method on a WPF control's Dispatcher to check if the current thread has access to the control.&lt;/font&gt;&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;&lt;font size="2"&gt; &lt;font face="Arial"&gt;myButton.&lt;font color="#3366ff"&gt;Dispatcher&lt;/font&gt;.CheckAccess();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;&lt;font size="2"&gt;Now, the funny thing about this method is that it is a public method, but unavailble from Intellisense within Visual Studio. If manually typed in, it compiles and executes just fine, but there was no idication of that method existing. Now how could that be? Could I have missed something? Obviously I did - this method of hiding members has been available at least as far back as the 1.1 version of the framework.&lt;/font&gt;&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;&lt;font size="2"&gt;[&lt;/font&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;&lt;font color="#339966"&gt;EditorBrowsable&lt;/font&gt;(1)]&lt;br /&gt;
&lt;font color="#3366ff"&gt;public boolean&lt;/font&gt; CheckAccess();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;&lt;font face="Arial" size="2"&gt;This attribute takes a parameter which is an &lt;font color="#3366ff"&gt;EditorBrowsableState&lt;/font&gt;. This is an enumeration defined as:&lt;/font&gt;&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;&lt;font face="Arial" size="2"&gt;Always = 0 &lt;/font&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;&lt;font color="#339966"&gt;//The property or method is always browsable from within an editor. &lt;br /&gt;
&lt;/font&gt;Never = 1 &lt;/font&gt;&lt;/font&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;&lt;font color="#339966"&gt;//The property or method is never browsable from within an editor.&lt;br /&gt;
&lt;/font&gt;Advanced = 2 &lt;font color="#339966"&gt;//The property or method is a feature that only advanced users should see. An editor can either show or hide such properties.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;&lt;font face="Arial" size="2"&gt;First of all, who determines whether I am an advanced user or not? Well, that's an option set in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
&lt;img height="382" alt="Hide Advanced Members" width="599" border="0" src="/images/geekswithblogs_net/jsaunders/IDE/advanced.bmp" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;font face="Arial" size="2"&gt;Ok, so by default these Advanced members aren't hidden. Whew! But as for the EditorBrowsable(1) members, keep in mind there may be more available than what you are seeing!&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;a target="_blank" href="http://msdn2.microsoft.com/en-us/library/system.componentmodel.editorbrowsableattribute.aspx"&gt;&lt;font size="2"&gt;More on MSDN...&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/jsaunders/aggbug/118547.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/jsaunders/comments/118547.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/jsaunders/comments/commentRss/118547.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/jsaunders/services/trackbacks/118547.aspx</trackback:ping>
    </entry>
    <entry>
        <title>2008 Microsoft CES Keynote</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/jsaunders/archive/2008/01/13/2008-microsoft-ces-keynote.aspx" />
        <id>http://geekswithblogs.net/jsaunders/archive/2008/01/13/2008-microsoft-ces-keynote.aspx</id>
        <published>2008-01-13T15:45:29-06:00:00</published>
        <updated>2008-01-13T15:46:24Z</updated>
        <content type="html">&lt;p&gt;After first giving the keynote address for the Computer Electronics Show almost 15 years ago, Bill Gates gave his final speech in Las Vegas on January 6th. Bill spoke about the past 10 years of software and where he sees the next "digital decade" taking us. &lt;/p&gt;
&lt;p&gt;He also took time to talk briefly about the fact that this would be his last CES keynote and the fact that in July of '08 he'll be moving from his fulltime position at Microsoft to working fulltime on his foundation. Having been employed with Microsoft since the age of 17, he joked about the fact of not knowing what he would do that last day at work this summer. He showed us a humerous video where celebraties such as Jay Z, Bono, Jon Stewart, Stephen Spielberg, Hillary Clinton, Barack Obama and more roast him in the skit around his last day.&lt;/p&gt;
&lt;p&gt;Once back into speaking on the Second Digital Decade, Bill (along with other Microsoft spokesman) showed us several new products that were in the works at Microsoft. Some of these included the Windows Surface,  visual recogition devices, Silverlight (i.e. MSN and NBC partners to create the 2008 Olympics website), Windows Media Room, and much more. Bill spoke about the service "cloud" where rich devices will be service connected to bring high definition experiences with more natural user interfaces.&lt;/p&gt;
&lt;p&gt;All in all, a very powerful presentation (oh yea, Slash even comes on stage in the end with a guitar solo to lead it out). Very good speech and well worth taking an hour out to watch it.&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;a target="_blank" href="http://www.microsoft.com/ces/"&gt;www.microsoft.com/ces/&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://geekswithblogs.net/jsaunders/aggbug/118505.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/jsaunders/comments/118505.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/jsaunders/comments/commentRss/118505.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/jsaunders/services/trackbacks/118505.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Serializable Voodoo</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/jsaunders/archive/2008/01/03/serializable-voodoo.aspx" />
        <id>http://geekswithblogs.net/jsaunders/archive/2008/01/03/serializable-voodoo.aspx</id>
        <published>2008-01-03T09:56:36-06:00:00</published>
        <updated>2008-01-03T09:56:36Z</updated>
        <content type="html">&lt;div&gt;Here's an interesting concept that I'm trying to sort out in my head.. &lt;br /&gt;
&lt;br /&gt;
Passing objects &lt;em&gt;by value&lt;/em&gt; - creates a copy of the object and changes made to that copy aren't reflected in the original value. &lt;br /&gt;
&lt;br /&gt;
Passing objects &lt;em&gt;by reference&lt;/em&gt; - passes a reference to the original object and changes made are reflected immediately. &lt;br /&gt;
&lt;br /&gt;
Passing &lt;em&gt;Serializable objects by reference&lt;/em&gt; - The object is actually passed by value, but the .Net Framework treats the copy as a reference to the original object. Changes made to the copy are passed back to the calling code when the operation is complete and then the original object is replaced with a reference to the new copy! &lt;br /&gt;
&lt;br /&gt;
Previous references made to the original object still point to the original value so there is the possibility of having two copies floating around at this point. Should we follow a true SOA model, encapsulating our logic so that we are only exposing the contracts, this is perfect for distributed environments. &lt;br /&gt;
&lt;br /&gt;
Serializable Contact object instantiated in client app domain -&amp;gt; passed to application server where data access methods are called and attributes populated -&amp;gt; passed back to client. This allows for perfect n-tier distributed implementations. &lt;br /&gt;
&lt;br /&gt;
With the Framework itself determining when to create that additional copy (e.g. it will not create a seperate copy if passed within the same machine from layer to layer), this seems like the way all object-oriented systems should work.. &lt;br /&gt;
&lt;br /&gt;
I wonder how Java handles that?&lt;/div&gt;&lt;img src="http://geekswithblogs.net/jsaunders/aggbug/118188.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/jsaunders/comments/118188.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/jsaunders/comments/commentRss/118188.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/jsaunders/services/trackbacks/118188.aspx</trackback:ping>
    </entry>
    <entry>
        <title>LINQ to Objects</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/jsaunders/archive/2008/01/03/linq-to-objects.aspx" />
        <id>http://geekswithblogs.net/jsaunders/archive/2008/01/03/linq-to-objects.aspx</id>
        <published>2008-01-03T09:56:07-06:00:00</published>
        <updated>2008-01-03T13:32:42Z</updated>
        <content type="html">&lt;div&gt;I've been playing around with LINQ to Objects and have come across something quite odd... &lt;br /&gt;
&lt;br /&gt;
Say we have this statement: &lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;pre&gt;Dim myCustomers = From customer In customers _
&lt;br /&gt;                  Where customer.Id = 5 _
&lt;br /&gt;                  Select customer.Id, _
&lt;br /&gt;                  FullName = customer.FirstName &amp;amp; _
&lt;br /&gt;                  " " &amp;amp; customer.LastName
&lt;br /&gt;For Each customer In myCustomers.Distinct()
&lt;br /&gt; Console.WriteLine(customer.FullName)
&lt;br /&gt;Next
&lt;br /&gt;
&lt;br /&gt;&lt;/pre&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
FullName becomes a ReadOnly Property here and acts as &lt;br /&gt;
if it belonged to the Customer class. &lt;br /&gt;
&lt;br /&gt;
Now, say we take out the first field in the select list: &lt;br /&gt;
&lt;/div&gt;
&lt;pre&gt;Dim myCustomers = From customer In customers _
&lt;br /&gt;                  Where customer.Id = 5 _
&lt;br /&gt;                  Select FullName = _
&lt;br /&gt;                  customer.FirstName &amp;amp; " " &amp;amp; _
&lt;br /&gt;                  customer.LastName
&lt;br /&gt;For Each customer In myCustomers.Distinct()
&lt;br /&gt; Console.WriteLine(customer.FullName)
&lt;br /&gt;Next
&lt;br /&gt;
&lt;br /&gt;&lt;/pre&gt;
&lt;div&gt;&lt;br /&gt;
This doesn't compile? It treats FullName now as an &lt;br /&gt;
extension of String? &lt;br /&gt;
&lt;/div&gt;
&lt;pre&gt;Error 1 'FullName' is not a member of 'String'.
&lt;br /&gt;
&lt;br /&gt;&lt;/pre&gt;
&lt;div&gt;&lt;br /&gt;
That makes no sense to me.. Maybe it's because it's after 1am, &lt;br /&gt;
but I'd love if someone wanted to make some sense of that...&lt;/div&gt;&lt;img src="http://geekswithblogs.net/jsaunders/aggbug/118187.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/jsaunders/comments/118187.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/jsaunders/comments/commentRss/118187.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/jsaunders/services/trackbacks/118187.aspx</trackback:ping>
    </entry>
</feed>
