<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Mike Cole's .NET Blog</title><subtitle type="html" /><id>http://weblogs.asp.net/mikecole/atom.aspx</id><link rel="alternate" type="text/html" href="http://weblogs.asp.net/mikecole/default.aspx" /><link rel="self" type="application/atom+xml" href="http://weblogs.asp.net/mikecole/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20510.895">Community Server</generator><updated>2003-12-09T13:27:00Z</updated><entry><title>Atlanta Geek Dinner - November Edition (11/15/2004)</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/mikecole/archive/2004/11/11/255795.aspx" /><id>http://weblogs.asp.net/mikecole/archive/2004/11/11/255795.aspx</id><published>2004-11-11T18:35:00Z</published><updated>2004-11-11T18:35:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://blogs.msdn.com/kaevans"&gt;Kirk Evans&lt;/a&gt; is organizing round 2 of the &lt;a href="http://blogs.msdn.com/kaevans/archive/2004/11/11/255728.aspx"&gt;Atlanta Geek Dinner&lt;/a&gt;.&amp;nbsp; It will be Monday, 11/15/2004 6PM, at the Perimeter Mall food court.&amp;nbsp; Heck, as long as they serve beer.&amp;nbsp; See you guys there.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=255795" width="1" height="1"&gt;</content><author><name>mikecole</name><uri>http://weblogs.asp.net/members/mikecole.aspx</uri></author></entry><entry><title>October Surprise</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/mikecole/archive/2004/10/21/245845.aspx" /><id>http://weblogs.asp.net/mikecole/archive/2004/10/21/245845.aspx</id><published>2004-10-21T18:31:00Z</published><updated>2004-10-21T18:31:00Z</updated><content type="html">&lt;p&gt;And its not from the Bush or Kerry camps. Instead, it is from Microsoft's developer division, announcing C# Edit-and-Continue support in VS 2005. &lt;a href="http://blogs.msdn.com/somasegar/archive/2004/10/15/242853.aspx"&gt;http://blogs.msdn.com/somasegar/archive/2004/10/15/242853.aspx&lt;/a&gt;&amp;nbsp; Woo-hoo!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=245845" width="1" height="1"&gt;</content><author><name>mikecole</name><uri>http://weblogs.asp.net/members/mikecole.aspx</uri></author></entry><entry><title>Atlanta Geek Dinner</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/mikecole/archive/2004/06/16/157787.aspx" /><id>http://weblogs.asp.net/mikecole/archive/2004/06/16/157787.aspx</id><published>2004-06-17T03:32:00Z</published><updated>2004-06-17T03:32:00Z</updated><content type="html">&lt;P&gt;Wow.&amp;nbsp; Geeks everywhere! The &lt;A href="http://weblogs.asp.net/kaevans/archive/2004/06/01/145709.aspx"&gt;Atlanta Geek Dinner&lt;/A&gt;&amp;nbsp;went off with out a hitch. Kirk tells us that next time Microsoft will even pick up the tab. ;-)&lt;/P&gt;
&lt;P&gt;It was great meeting the group. People from all over. A showing by Home Depot, &lt;A href="http://www.matra.co.uk/"&gt;Matra&lt;/A&gt;, Turner, HomeBanc,&amp;nbsp;Microsoft of course - and lots of others. I enjoyed meeting &lt;A href="http://weblogs.asp.net/pwilson"&gt;Paul Wilson&lt;/A&gt;, &lt;A href="http://www.cerkit.com/cerkitBlog/"&gt;Michael Earls&lt;/A&gt;.... where was Matthew Nolton?&lt;/P&gt;
&lt;P&gt;Thanks to &lt;A href="http://weblogs.asp.net/kaevans"&gt;Kirk Evans&lt;/A&gt; and &lt;A href="http://weblogs.asp.net/dbrowning"&gt;Don Browning&lt;/A&gt; for making it happen.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;(Below, standing: Wally, Kirk)&lt;BR&gt;&lt;IMG src="http://mikecole.brinkster.net/pics/AtlGeekDinner5.jpg"&gt;&lt;BR&gt;(Earls, Cole)&lt;BR&gt;&lt;IMG src="http://mikecole.brinkster.net/pics/AtlGeekDinner2.jpg"&gt;&lt;BR&gt;&lt;IMG src="http://mikecole.brinkster.net/pics/AtlGeekDinner6.jpg"&gt;&lt;BR&gt;&lt;BR&gt;(Back Left: Browning, Wilson) (Back Right: Paul Lockwood, Mauricio Feijo) (Also: Kevin, Jason)&lt;BR&gt;&lt;IMG src="http://mikecole.brinkster.net/pics/AtlGeekDinner4.jpg"&gt; &lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=157787" width="1" height="1"&gt;</content><author><name>mikecole</name><uri>http://weblogs.asp.net/members/mikecole.aspx</uri></author></entry><entry><title>My excuse for being in Japan...</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/mikecole/archive/2004/05/14/132058.aspx" /><id>http://weblogs.asp.net/mikecole/archive/2004/05/14/132058.aspx</id><published>2004-05-14T16:58:00Z</published><updated>2004-05-14T16:58:00Z</updated><content type="html">&lt;FONT size=2&gt;
&lt;P&gt;...is a Microsoft Certified Partner conference that isn't actually taking place.&lt;/P&gt;
&lt;P&gt;I'm bloggin here from the Westin Tokyo with a pretty awesome view of the city, including the &lt;A href="http://www.amphi.com/~psteffen/fmf/ttower.html"&gt;Tokyo Tower&lt;/A&gt; that went dark about 1 hour ago (1230AM)&lt;/P&gt;
&lt;P&gt;Oh this Japanese culture.... My girlfriend has been here for a week visiting her dad, and I came in tonight and met the family. Now ---- to wrangle a week together (alone) in Tokyo she is actually telling her dad she is going home (to Atlanta) tomorrow.... While at the same time, I just got here on business.... Its a little far fetched, but what are you gonna do.&lt;/P&gt;
&lt;P&gt;My first ride on the subway --- I ran into a local with an O'Reilly XML tee-shirt, also a bag promoting some O'Reilly Perl book. Interesting. I have no idea what the software consulting market here is like. Anyone know?&lt;/P&gt;
&lt;P&gt;I was thinking hard about some Lost In Translation parady regarding SOA. But, ya know what. I've been up almost 24 hours straight ---- and even though I haven't blogged in months, I'm about to do a half-gainer into my king size bed.&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=132058" width="1" height="1"&gt;</content><author><name>mikecole</name><uri>http://weblogs.asp.net/members/mikecole.aspx</uri></author></entry><entry><title>Object Design Skill vs. UML Notation Skill</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/mikecole/archive/2004/01/07/48321.aspx" /><id>http://weblogs.asp.net/mikecole/archive/2004/01/07/48321.aspx</id><published>2004-01-07T15:43:00Z</published><updated>2004-01-07T15:43:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;First, kudos to my current favorite book: &lt;A href="http://www.amazon.com/exec/obidos/tg/detail/-/0137488807/102-3016125-1329716?v=glance"&gt;Applying UML and Patterns&lt;/A&gt; by &lt;A href="http://www.craiglarman.com/"&gt;Craig Larman&lt;/A&gt;.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Craig writes:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;#8220;Drawing UML diagrams is a reflection of making decisions about the object design. The object design skills are what really matter, rather than knowing how to draw UML diagrams.&amp;#8221;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Hey, it&amp;#8217;s impossible to argue with these statements &amp;#8211; truly, object design skills are a pre-requisite to being able to communicate those designs&amp;#8230;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Ok&amp;#8230; that&amp;#8217;s no fun. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;I&amp;#8217;ll see if I can argue&amp;#8230; Are we saying here that UML is simply a mechanism for documenting design decisions? (not really his point,&amp;nbsp;I know, but bare with me.)&amp;nbsp;I would argue, rather, that visual modeling is a critical tool for use &lt;I style="mso-bidi-font-style: normal"&gt;during&lt;/I&gt; the design process. &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;I think I&amp;#8217;ve formed this opinion, because, as a consultant, I&amp;#8217;m not always the final decision maker. I&amp;#8217;m often on teams including other senior developers and architects. I find having a common way to share and review design alternatives is&amp;nbsp;critical when you are not a one-man show.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Additionally, when my object models are anything more than trivial &amp;#8211; I absolutely have to visually model during the design phase to incrementally manage its complexity.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;But, that&amp;#8217;s just me.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Ok. So &amp;#8211; I suppose what I&amp;#8217;m saying is that unless you are a complete brainiac, and 100% responsible for all design work on your projects, then the ability to effectively visually model is at least moderately coupled to OO design skills. (And by design skills, I mean overall effectiveness at producing OO applications.)&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Moreover, UML is a design tool, not simply a language for documentation.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Agree/Disagree? Have I completely missed the point ? Comments appreciated.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=48321" width="1" height="1"&gt;</content><author><name>mikecole</name><uri>http://weblogs.asp.net/members/mikecole.aspx</uri></author></entry><entry><title>Just Arrived in London</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/mikecole/archive/2003/12/16/43820.aspx" /><id>http://weblogs.asp.net/mikecole/archive/2003/12/16/43820.aspx</id><published>2003-12-16T13:16:00Z</published><updated>2003-12-16T13:16:00Z</updated><content type="html">&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;
&lt;P&gt;I wish there was a &lt;A href="http://iancooper.brinkster.net/Welcome.htm"&gt;London .NET User Group&lt;/A&gt; meeting or something going on...&lt;/P&gt;
&lt;P&gt;I may try to get over to the microsoft campus in Reading on Wednesday for this event: &lt;A href="https://msevents-eu.microsoft.com/cui/EventDetail.aspx?culture=en-GB&amp;amp;eventid=118740802"&gt;Business Integration - BizTalk Server 2004, SQL Server, XML, and VS.NET&lt;/A&gt;.&amp;nbsp; Seems a quick train ride.&lt;/P&gt;
&lt;P&gt;I'm here for the week. If anyone is up for a pint some evening - drop me a note!&amp;nbsp;&amp;nbsp; Also, any recuiters reading this? (drop me a note)&lt;/P&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=43820" width="1" height="1"&gt;</content><author><name>mikecole</name><uri>http://weblogs.asp.net/members/mikecole.aspx</uri></author></entry><entry><title>ObjectSpaces - thin?</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/mikecole/archive/2003/12/11/42897.aspx" /><id>http://weblogs.asp.net/mikecole/archive/2003/12/11/42897.aspx</id><published>2003-12-11T21:04:00Z</published><updated>2003-12-11T21:04:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;One of the most innovative things about ObjectSpaces is the fact that your business entities are not required to inherit from any base class.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;With every persistence framework I have worked with &amp;#8211; this has always been a requirement.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;As in this example, EntityBase would provide your O/R mapping and persistence functionality: &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; Employee : &lt;B style="mso-bidi-font-weight: normal"&gt;EntityBase&lt;/B&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; _ID;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; _fullName;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; ID {&lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt; {&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; _ID;} &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt;{_ID = &lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;;}}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; FullName{&lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt; {&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; _fullName;} &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt;{_fullName = &lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;;}}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; Employee()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;By &lt;B style="mso-bidi-font-weight: normal"&gt;not&lt;/B&gt; requiring use of a base class &amp;#8211; I think Microsoft has done a great job keeping ObjectSpaces as thin and transparent as possible.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;How was this accomplished?&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;The ObjectSpace classes (driven by map files) consume your custom classes, instead of providing functionality through inheritance. &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;For example to retrieve an employee,&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;ObjectSpace os = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; ObjectSpace("map.xml", conn);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;ObjectReader reader = os.GetObjectReader(&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; ObjectQuery(&lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;(Employee), "ID = 1234&amp;#8217;"));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;Employee myEmp = (Employee) reader.Current;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Very nice. However, you might say&amp;#8230; how is this considered thin? I&amp;#8217;m used to instantiating business objects as easily as this:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;A)&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Employee myEmp = new Employee(id);&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;OR&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;B)&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Employee myEmp = Employee.GetByID(id);&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Well, the good news is&amp;#8230; if you have been using a factory design pattern to instantiate your biz objects (as in B) &amp;#8211; then you will be able to encapsulate all of the ObjectSpace classes within your static method (GetByID):&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Similar to this,&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; Employee&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt; &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; _ID;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; _fullName;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; ID {&lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt; {&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; _ID;} &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt;{_ID = &lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;;}}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; FullName{&lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt; {&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; _fullName;} &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt;{_fullName = &lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;;}}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; Employee()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; Employee GetById(&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; ID)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ObjectSpace os = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; ObjectSpace("map.xml", conn);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ObjectReader reader = os.GetObjectReader(&lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;ObjectQuery(&lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;(Employee), String.Format("ID = {0}", ID)));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt;((Employee)reader.Current);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;So, if you have been using a factory creational pattern &amp;#8211; perhaps the developers consuming your business objects need not be aware of a conversion to ObjectSpaces at all&amp;#8230;. Seems pretty tight to me. Of course, I have not seen examples of inserts/updates using ObjectSpaces yet.&amp;nbsp; Please comment!&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;-Mike&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;PDC&amp;nbsp;&lt;A href="http://microsoft.sitestream.com/PDC2003/DAT/DAT410.htm"&gt;presentation &lt;/A&gt;&amp;nbsp;, Lucas Bolonese on ObjectSpaces.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=42897" width="1" height="1"&gt;</content><author><name>mikecole</name><uri>http://weblogs.asp.net/members/mikecole.aspx</uri></author></entry><entry><title>American Developer in London</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/mikecole/archive/2003/12/09/42263.aspx" /><id>http://weblogs.asp.net/mikecole/archive/2003/12/09/42263.aspx</id><published>2003-12-09T18:27:00Z</published><updated>2003-12-09T18:27:00Z</updated><content type="html">&lt;P&gt;In the fall of 2002 I began exploring travel opportunities related to my .net consulting career.&amp;nbsp; This was the result of a desire to travel, but also I think -- simply hedging my bets against a faltering economy.&lt;/P&gt;
&lt;P&gt;.NET contract opportunities in London (&lt;A href="http://www.jobserve.com"&gt;www.jobserve.com&lt;/A&gt;) were, and are,&amp;nbsp; pretty incredible. Much better than here in Atlanta - probably on par or better than NYC.&lt;/P&gt;
&lt;P&gt;It was very important to me to not be tied down to a particular consulting house. Luckily, the UK has a special visa program called the &lt;A href="http://www.britainusa.com/consular/SearchResults.asp?link=&amp;amp;Article_ID=324&amp;amp;TableName=tblBGO_Oth"&gt;Highly Skilled Migrant Programme&lt;/A&gt;.&amp;nbsp; Through this program, select candidates can become authorized for 'permit free' consulting.&amp;nbsp; Its a pretty interesting point system based on education, experience, earnings, etc... The idea is that you need to prove you are adding needed skills to their economy, rather than competing with their workforce for jobs.&lt;/P&gt;
&lt;P&gt;After applying in&amp;nbsp;Oct 2002, I finally received my HSMP visa in March 2003.&amp;nbsp; After wrapping up things with my last client -&amp;nbsp;it seems&amp;nbsp;LondonTown is calling !!&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I&amp;nbsp;will&amp;nbsp;be in London Dec 15 - 22 to&amp;nbsp;hopefully track down a contract to begin&amp;nbsp;early 2004.&amp;nbsp; I will document my journey here.&lt;/P&gt;
&lt;P&gt;I'd enjoy reading feedback from anyone who has or is considering a similar move...&lt;/P&gt;
&lt;P&gt;One more good link for anyone interested: &lt;A href="http://www.workpermit.com/ubb/cgi-bin/ultimatebb.cgi?ubb=forum&amp;amp;f=1"&gt;Immigration Discussion Board&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;-Mike&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=42263" width="1" height="1"&gt;</content><author><name>mikecole</name><uri>http://weblogs.asp.net/members/mikecole.aspx</uri></author></entry></feed>