<feed version="0.3" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://purl.org/atom/ns#" xml:lang="en-US"><title>Jiho Han</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/jhan/default.aspx" /><tagline type="text/html">Musings on .NET and life</tagline><id>http://www.dotnetjunkies.com/WebLog/jhan/default.aspx</id><author><url>http://www.dotnetjunkies.com/WebLog/jhan/default.aspx</url></author><generator url="http://communityserver.org" version="1.0.1.50214">Community Server</generator><modified>2004-08-20T14:04:00Z</modified><entry><title>Test</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/jhan/archive/2006/07/20/142336.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:142336</id><created>2006-07-20T03:13:00Z</created><content type="text/html" mode="escaped">&lt;a href="http://technorati.com/claim/feye3m7wcu"&gt;Technorati Profile&lt;/a&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=142336" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/jhan/commentrss.aspx?PostID=142336</wfw:commentRss></entry><entry><title>So many ORM tools to choose from...</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/jhan/archive/2005/10/07/133108.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:133108</id><created>2005-10-07T07:39:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;There are an abundance of ORM tools out there.&amp;nbsp; I guess having many options is better than being forced to use one over the other - or worse, having only one available or none at all.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.mbrit.com/mbrit/content/bootfx.aspx"&gt;MBR BootFX&lt;/A&gt; is one of them [by &lt;A href="http://www.larkware.com/dg4/TheDailyGrind727.html"&gt;Larkware&lt;/A&gt;]&lt;/P&gt;
&lt;P&gt;I still want to evaluate &lt;A href="http://nhibernate.sourceforge.net/"&gt;NHibernate&lt;/A&gt;.&amp;nbsp; &lt;A href="http://sourceforge.net/projects/orm-net"&gt;ORM.NET&lt;/A&gt; is another one.&amp;nbsp; &lt;A href="http://www.npersist.com/"&gt;NPersist&lt;/A&gt; is yet another.&amp;nbsp; I've heard good things about &lt;A href="http://neo.codehaus.org/"&gt;NEO&lt;/A&gt; as well.&lt;/P&gt;
&lt;P&gt;And then there are commercial ones which doesn't necessarily mean they are better or worse, like:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.deklarit.com/"&gt;Deklarit&lt;/A&gt;, &lt;A href="http://www.llblgen.com/"&gt;LLBLGen Pro&lt;/A&gt;, &lt;A href="http://www.ormapper.net/"&gt;WilsonORMapper&lt;/A&gt;, etc.&lt;/P&gt;
&lt;P&gt;Boy, where am I going to find the time to try all of these!&lt;/P&gt;
&lt;P&gt;UPDATE: I checked out &lt;A href="http://www.mertner.com/confluence/display/Gentle/Design+Recommendations"&gt;Gentle.NET&lt;/A&gt;'s spec for the next version and I like what I see...&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=133108" width="1" height="1"&gt;</content><slash:comments>3</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/jhan/commentrss.aspx?PostID=133108</wfw:commentRss></entry><entry><title>DataTable.GetChanges() returning something for nothing...</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/jhan/archive/2005/10/05/133075.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:133075</id><created>2005-10-05T13:49:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;In my latest project, I am using DataSet/DataTable a lot and there have been ups and downs but I am so far pretty happy with the flexibility of DataSet.&lt;/P&gt;
&lt;P&gt;One thing I encountered, however, is that DataTable.GetChanges() method will return something for nothing.&lt;/P&gt;
&lt;P&gt;Let me elaborate.&lt;/P&gt;
&lt;P&gt;When you assign a new value to a column, it makes the column "dirty".&amp;nbsp; It's set dirty so that the DataSet object knows which tables/rows to persist.&amp;nbsp; Here's a funny thing though.&amp;nbsp; Maybe not funny but strange nonetheless.&lt;/P&gt;
&lt;P&gt;If you individually examine whether a column that's been set is "dirty", it won't be so obvious that is has been changed.&amp;nbsp; In order to see whether a column is dirty or not, I use the overload with DataRowVersion parameter:&lt;/P&gt;&lt;CODE&gt;!someRow["LASTNAME", DataRowVersion.Original].Equals(someRow["LASTNAME", DataRowVersion.Current])&lt;/CODE&gt; 
&lt;P&gt;So if you've changed the the value of the LASTNAME column, then the above will result in true and know that the column has changed.&amp;nbsp; If you later check someRow's RowState property, it will correctly report DataRowState.Modified.&amp;nbsp; But what if you set the value to exactly the same value?&amp;nbsp; The above statement will return false but the RowState property will still return DataRowState.Modified.&amp;nbsp; What gives?&amp;nbsp; Now, this may be an intended behavior since you may want to explicitly set the column "dirty" for some reason.&amp;nbsp; And that's how it works in classic ADO as well.&amp;nbsp; I just can't figure out where this extra information is stored.&lt;/P&gt;
&lt;P&gt;Also, when you are inserting a new row, there's no such thing as original values, so you can't use the above statement.&amp;nbsp; Right now I end up having to enumerate all columns for a table rather than using only the columns that were explicitly set, even if they are null values.&lt;/P&gt;
&lt;P&gt;I've used Reflector to great effect so far and this may be another time that I may have to do so.&amp;nbsp; It's time-consuming but educational nonetheless... unless someone else already has an answer to this :)&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=133075" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/jhan/commentrss.aspx?PostID=133075</wfw:commentRss></entry><entry><title>Of Design Patterns and OOD/OOP</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/jhan/archive/2005/08/11/131881.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:131881</id><created>2005-08-11T04:37:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;&lt;A href="http://codebetter.com/blogs/jeremy.miller/archive/2005/08/11/130536.aspx"&gt;Jeremy D. Miller brings up a point&lt;/A&gt; that I have been mulling over for many months now.&lt;/P&gt;
&lt;P&gt;I am working in an environment that is transitioning - or need to transition from a procedural thinking to a more OO thinking.&amp;nbsp; And I originally come from a OO environment (mainly java).&amp;nbsp; I had to retrofit my way of development into a procedural way of design and programming and it was hard.&amp;nbsp; I have since then found ways to adapt myself to use as much OO principles in my procedural environment and although at times limited, I think I have been pretty successful in my approach.&amp;nbsp; (Think VB6/VBScript and OO, now transitioning to .NET).&lt;/P&gt;
&lt;P&gt;I've always had GOF book but never really got into it until I found the Head First book.&amp;nbsp; Everyone should own the Head First book.&lt;/P&gt;
&lt;P&gt;And I admit it is difficult to use patterns.&amp;nbsp; And I think it's because patterns are not a recipe that you can follow blindly but every situation is different and you have to adapt the pattern to your current situation.&amp;nbsp; I am still learning and I am also surprised that I have been using some of the patterns described in these books but just didn't know the "lingo".&lt;/P&gt;
&lt;P&gt;My problem is - I'm sure similar to many of you - that although I fully accept the benefit of OO and Design Patterns, I, many times, fail to explain to my peers - who are mostly procedural - why.&amp;nbsp; I am wondering why myself but the concept of OO is very natural to me and to me, it almost is unthinkable to do it any other way.&amp;nbsp; You can understand my frustration when I had to "adapt" to procedural style.&lt;/P&gt;
&lt;P&gt;For any of you out there, how would you convince those who may or may not have learned OO in school but still do not understand why it's beneficial, and to use them in their everyday development efforts?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=131881" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/jhan/commentrss.aspx?PostID=131881</wfw:commentRss></entry><entry><title>The new VS.NET 2005 looks</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/jhan/archive/2005/04/13/65515.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:65515</id><created>2005-04-13T07:24:00Z</created><content type="text/html" mode="escaped">Does anyone else think it's kind of tacky?&amp;nbsp; I especially don't like all these gradients.&amp;nbsp; I just noticed some 3rd party tools are starting to employ gradients into their own products, maybe to give consistent user experience with VS.NET 2005.&amp;nbsp; It's distracting I tell you and it does not add any value.&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=65515" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/jhan/commentrss.aspx?PostID=65515</wfw:commentRss></entry><entry><title>TabletPC and general hardware manufacturers...</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/jhan/archive/2005/03/04/58720.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:58720</id><created>2005-03-04T07:49:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;Toshiba has &lt;A href="http://www.toshibadirect.com/td/b2c/ebtext.to?page=tabletpcfam&amp;amp;ccid=1291021&amp;amp;seg=HHO&amp;amp;sel=1"&gt;two brand new TabletPCs&lt;/A&gt;&amp;nbsp;in their line-up.&lt;/P&gt;
&lt;P&gt;I've never seen TabletPCs in real life but I love the idea of hoisting around a what's-essentially-a-digital-notebook in my hands and being able to do all kind of cool things with it.&amp;nbsp; I tell you I'm just waiting for the price of the darn things to drop.&amp;nbsp; And those two TablePCs are a good sign of things to come.&amp;nbsp; I hope.&lt;/P&gt;
&lt;P&gt;So, here's my rant.&lt;/P&gt;
&lt;P&gt;Who designs these pieces of hardware?&amp;nbsp; I mean in general, who's in charge of putting the feature list and the form factor, etc. together for a device, be it a laptop, PDA or TablePC?&amp;nbsp; Every time a new device comes out, I am always excited at first but then I get disappointed by the lack of certain obvious things that should be there or some things that should not be there.&lt;/P&gt;
&lt;P&gt;Now, these two TablePCs are what they call convertibles.&amp;nbsp; You can turn and twist the screen around so you can use it like a laptop or a tablet.&amp;nbsp; Pretty cool, eh? NOT!&amp;nbsp; If I wanted a laptop, I would buy a laptop.&amp;nbsp; Who wants to lug around a 6 lbs of metal and plastic in your arms?&amp;nbsp; I certainly don't.&amp;nbsp; I'd rather have a thin, light, and affordable TabletPC with no keyboard and no nothing.&amp;nbsp; Just a screen and a pen, and me of course.&amp;nbsp; That's all I need on the road and if I need serious sitdown time, I'd use a dock or something.&amp;nbsp; That being said, if any TablePC manufactures are reading -- I doubt that very much, but oh well --, here's my ideal but reasonable setup for a TabletPC.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Processor:&lt;/STRONG&gt; I don't think I need a super-powerful processor here.&amp;nbsp; If the processor is fast enough to recognize my pen strokes in real time and display the information fast enough, that's good enough.&amp;nbsp; I am not particularly looking to do .NET development on the thing.&amp;nbsp; See Battery. 
&lt;LI&gt;&lt;STRONG&gt;Battery:&lt;/STRONG&gt; Definitely one of the most important feature for sure.&amp;nbsp; The thing is if you want a bigger battery, your overall weight goes up.&amp;nbsp; So you have to make compromises here I guess.&amp;nbsp; However, without some of these excess extra components, we should be able to squeeze out a good 6+ hours of battery power, don't you think?&amp;nbsp; Hurry up with those methanol or hydrogen batteries already! 
&lt;LI&gt;&lt;STRONG&gt;Hard Drive:&lt;/STRONG&gt;&amp;nbsp;Again, I don't need a huge drive.&amp;nbsp; Can it store my documents and some pictures?&amp;nbsp; 20GB should be plenty.&amp;nbsp; Of course, if there is no significant difference in price, performance or battery life, bigger drives wouldn't hurt I guess. 
&lt;LI&gt;&lt;STRONG&gt;Memory:&lt;/STRONG&gt; I'd guess 512MB(min) to 1GB(max) should be&amp;nbsp;good.&amp;nbsp; Again, no development.&amp;nbsp; No video editing either. 
&lt;LI&gt;&lt;STRONG&gt;Screen:&lt;/STRONG&gt; I'll be looking at the thing all day, so&amp;nbsp;it should be nice and bright and have wide&amp;nbsp;visible angles.&amp;nbsp; I&amp;nbsp;think the size can&amp;nbsp;vary here but again I'm guessing bigger screen would draw more power.&amp;nbsp;&amp;nbsp;Maybe&amp;nbsp;starting with 12” and going&amp;nbsp;up to 15”? 17” would be nice&amp;nbsp;but&amp;nbsp;again, the battery...&amp;nbsp; Hurry up wth OLED already! 
&lt;LI&gt;&lt;STRONG&gt;Connectivity:&lt;/STRONG&gt; I would say, that the wireless connectivity should be there.&amp;nbsp; USBs should be there.&amp;nbsp; Not sure about IEEE 1394 though.&amp;nbsp; Having a SD card or CF card slots would be nice.&amp;nbsp; The three standard audio ports should be there.&amp;nbsp; The video-out can be argued but not a&amp;nbsp;big deal.&amp;nbsp; The two toshibas have more than enough connectivity options and I can't complain much there.&amp;nbsp; However, I don't want my TablePC to have too many “holes”.&amp;nbsp; It just ain't pretty.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Notice that I don't have any optical devices listed up there.&amp;nbsp; I think it's an overkill for a TablePC.&lt;/P&gt;
&lt;P&gt;All other features are optional and should not be included.&amp;nbsp; Put them on the dock.&amp;nbsp; Most people nowadays have a desktop or a laptop at home since they are so cheap (some of the laptops aren't really laptops but a small-form-factor desktops, really).&amp;nbsp; So I'm sure file transfers and even network installs or network boot shouldn't pose a serious challenge.&lt;/P&gt;
&lt;P&gt;Now, here's a wild idea though.&amp;nbsp; I am not a hardware junkie so I don't know if it's at all possible.&lt;/P&gt;
&lt;P&gt;Notice I said that a powerful processor isn't needed for my TabletPC -- actually I said super-powerful but that's beside the point --, but it would be nice (read: optional) to have the necessary horsepower to do development or something like video editing.&amp;nbsp; And let's just assume that you don't have another PC available or you just want to do it on the TabletPC machine, for some reason.&amp;nbsp; All of that really doesn't matter actually.&amp;nbsp; Let's just say you want to do that on your limited horsepowered PC.&lt;/P&gt;
&lt;P&gt;What if your dock contained a processor?&amp;nbsp; A processor or processors more powerful than what is found in your TablePC.&amp;nbsp; So that when you dock your TabletPC, the whole setup will run in parallel as if you had mutiple processors.&amp;nbsp; So you would have two processors running simultaneously to give you that extra boost you need to do whatever your heart desires.&amp;nbsp; Or if that's not possible, here's a simpler idea.&amp;nbsp; Upon docking, your processor in the TabletPC shuts down and the processor(s) in your dock takes over.&amp;nbsp; I can dream, can't I?&lt;/P&gt;
&lt;P&gt;Oh, also check out the new camera/mp3/photo &lt;A href="http://www.olympusgroove.com"&gt;m:robe 500i&lt;/A&gt;&amp;nbsp;from Olympus.&amp;nbsp; I like it.&amp;nbsp; Now if that thing&amp;nbsp;were able to&amp;nbsp;play DivX, that would have been beautiful.&amp;nbsp; Too bad.&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=58720" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/jhan/commentrss.aspx?PostID=58720</wfw:commentRss></entry><entry><title>Microsoft in web hosting business?</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/jhan/archive/2005/02/24/56484.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:56484</id><created>2005-02-24T10:54:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;Check &lt;A href="http://www.microsoft.com/smallbusiness/products/online/wh/detail.mspx"&gt;this&lt;/A&gt; out.&amp;nbsp; I fumbled onto the page but I had no idea Microsoft had a web hosting side of business.&amp;nbsp; Who knew?&amp;nbsp; Hmm...&lt;/P&gt;
&lt;P&gt;Not sure what to make of it...&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=56484" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/jhan/commentrss.aspx?PostID=56484</wfw:commentRss></entry><entry><title>Microsoft's internal coding guidelines for .NET</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/jhan/archive/2005/02/15/54467.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:54467</id><created>2005-02-15T08:56:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;&lt;FONT face=Verdana&gt;I found &lt;A href="http://blogs.msdn.com/brada/articles/361363.aspx"&gt;this post&lt;/A&gt; by Brad Abrams which states the coding styles used internally by Microsoft for .NET projects.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Although I don't agree with all of it, I must say I was surprised to see that I was more or less in line with them.&amp;nbsp; I have a question though regarding the &lt;STRONG&gt;using&lt;/STRONG&gt; statement being located under &lt;STRONG&gt;namespace&lt;/STRONG&gt; block.&amp;nbsp; First of all, I don't know the reason behind this; my initial guess is that it has to do with multiple classes per file issue.&amp;nbsp; I don't have that issue normally.&amp;nbsp; Also, VS.NET doesn't follow this practice.&amp;nbsp; It puts &lt;STRONG&gt;using&lt;/STRONG&gt; statements at the very top before &lt;STRONG&gt;namespace&lt;/STRONG&gt; declaration.&amp;nbsp; Does anyone know how to change this - through project templates or whatever - to&amp;nbsp;have VS.NET insert&amp;nbsp;&lt;STRONG&gt;using&lt;/STRONG&gt; statements inside&amp;nbsp;&lt;STRONG&gt;namespace&lt;/STRONG&gt; block?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;EM&gt;&amp;lt;rant&amp;gt;&lt;/EM&gt;Also, although I don't care whether I use space or tab character for indentation since it's easily converted to and fro, I am annoyed that when I use 4 spaces and I hit backspace to go back out to the previous indentation level, VS.NET only deletes a single space, making me hit BS four times!&amp;nbsp; What a travesty!&amp;nbsp; Well, it's not that bad but I think if the editor is smart enough to insert 4 spaces for indentation, it should be smart enough to delete 4 spaces to outdent.&lt;EM&gt;&amp;lt;/rant&amp;gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=54467" width="1" height="1"&gt;</content><slash:comments>1</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/jhan/commentrss.aspx?PostID=54467</wfw:commentRss></entry><entry><title>Gathering software requirements...</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/jhan/archive/2005/01/31/49558.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:49558</id><created>2005-01-31T21:41:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;&lt;FONT face=Verdana&gt;(I'm a little annoyed that I just lost the post I was typing for like 15 min.&amp;nbsp; That's what I get for using the web interface!)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Writing software requirements is an arduous task.&amp;nbsp; In my opinion, it's more of an art than a science.&amp;nbsp; But then, what do I know, I'm only a coder.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;In my projects, I'm currently having some difficulty with gathering and organizing screen designs/layouts.&amp;nbsp; Usually for web projects, you have a web designer who creates a template or pages in their favorite tool.&amp;nbsp; Then a developer like me puts the code behind them, making adjustments as needed.&amp;nbsp; It may vary here and there but I think that's pretty standard practice.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;How about winforms or rich client applications?&amp;nbsp; I don't know of many requirements analyst that know how to use Visual Studio.&amp;nbsp; So what are some of the effective ways of going about this business?&amp;nbsp; Do you have designers create the layouts in their favorite graphics tool(photoshop?) and then you try to recreate it in Visual Studio as best as you can?&amp;nbsp; Or do you have the "business types" learn just enough Visual Studio to lay out controls on a form?&amp;nbsp; Or do you go as far as to create a custom mock-up tool?&amp;nbsp; Previously, I had someone who used Excel to create the mock-up screen, which worked out ok for the most part.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Then there is that "sometimes-very-tedious" control show/hide logic.&amp;nbsp; You know what I'm talking about.&amp;nbsp; If field A is X, then field B should be shown, if Y, hidden.&amp;nbsp; If field C is Z, then field D should list these certain values, etc.&amp;nbsp; Annoying as these are, they are very essential to a good user experience.&amp;nbsp; My initial thoughts have been to separate the layouts - physical coordinates - from their states - values, visibility, style, etc.&amp;nbsp; Easier said than done though.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;And when all this is done, how do you keep track of these requirements.&amp;nbsp; Word document?&amp;nbsp; Line items stored in a relational DB?&amp;nbsp; An XML document?&amp;nbsp; XAML might be the answer.&amp;nbsp; But that's not here yet and I still need to work with VB6-era apps.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;I'm also thinking whether this is going against the whole "agile" development process that's all the rage these days...&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=49558" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/jhan/commentrss.aspx?PostID=49558</wfw:commentRss></entry><entry><title>Blogging and Intellectual Property</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/jhan/archive/2004/12/20/37917.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:37917</id><created>2004-12-20T12:28:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;&lt;FONT face=Verdana&gt;Do blogs you post using the company's machine and its network to your own personal blog become the company's?&amp;nbsp; We know that all emails that go out or comes in through the company's mail server is candidate for company's review at will.&amp;nbsp; That doesn't mean that the email you compose becomes the property of the company's or does it?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Although the post in itself may not be susceptible to this precarious situation, I am wondering whether the ideas or the code snippets contained within the post might.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;What do you think?&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=37917" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/jhan/commentrss.aspx?PostID=37917</wfw:commentRss></entry><entry><title>Something just went *click*...</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/jhan/archive/2004/12/15/37186.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:37186</id><created>2004-12-15T13:44:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;&lt;FONT face=Verdana&gt;Upon reading Udi Dahan's post, something clicked in my head.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;I've been in a O/R mapping funk lately and could not clearly work through some of the dilemmas and I may have just figured it out.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Really. It's just a report on data - a read-only report: notice the "get me" and "show me" at the beginning. At that exact point in time, I just want to show some kind of report to the user, I don't need behavior filled domain objects. To tell you the truth, almost anything I show to the user doesn't need to be immediately backed by a domain object. Should the user choose to edit one of the customers, or add another category the product falls under, right then and there I'll go and get the ONLY domain object I need, and use it.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Really.&amp;nbsp; It's all very simple.&amp;nbsp; I don't know why I hadn't thought of that before...&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=37186" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/jhan/commentrss.aspx?PostID=37186</wfw:commentRss></entry><entry><title>Appalling...</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/jhan/archive/2004/11/12/31941.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:31941</id><created>2004-11-12T17:20:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;&lt;FONT face=Verdana size=2&gt;You've read about &lt;/FONT&gt;&lt;A href="http://www.livejournal.com/users/ea_spouse/274.html"&gt;&lt;FONT face=Verdana size=2&gt;this&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; already I'm sure but I just can't believe it.&amp;nbsp; I've heard some overtime stories but this is really crazy.&amp;nbsp; This has got to be against some kind of labor law as the author states.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I guess I should feel very lucky working 40 hr/wk&amp;nbsp;+ occasional late stays.&amp;nbsp; Even then, my eyes feel so very tired most of the time, sometimes unable to focus on anything which is kind of scary, and the chronic head/backaches.&amp;nbsp; Not to mention that I may go sterile sitting all day long, according to my mom.&amp;nbsp; I don't know where she read it but I believe her.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=31941" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/jhan/commentrss.aspx?PostID=31941</wfw:commentRss></entry><entry><title>Just another file extension test result...</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/jhan/archive/2004/11/04/31003.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:31003</id><created>2004-11-04T10:52:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;I am :&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.bbspot.com/News/2004/10/extension_quiz.php"&gt;&lt;IMG height=90 alt="You are .pdf  No matter where you go you look the same.  You are an acrobat.  Nothing is more important to you than the printed word." src="http://www.bbspot.com/Images/News_Features/2004/10/file_extensions/pdf.jpg" width=300 border=0&gt;&lt;BR&gt;Which File Extension are You?&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;I don't even know what that means, man.&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=31003" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/jhan/commentrss.aspx?PostID=31003</wfw:commentRss></entry><entry><title>SQL Server 2005 Beta 3...</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/jhan/archive/2004/09/30/27233.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:27233</id><created>2004-09-30T07:01:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;I followed the &lt;A href="http://entmag.com/news/rss.asp?editorialsid=6385"&gt;link&lt;/A&gt; from Mike Gunderloy's &lt;A href="http://www.larkware.com/Articles/TheDailyGrind471.html"&gt;blog&lt;/A&gt; and found some info on the beta 3.&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P align=left&gt;&lt;FONT face=Verdana size=2&gt;ActiveViews offered a Web-based report authoring and end-user query tool based on Microsoft&amp;#8217;s .NET framework that was designed to exploit SQL Server 2000 Reporting Services. The product was intended for business users with no development expertise.&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT face=Verdana size=2&gt;Microsoft rewrote the tool with a more Microsoft-like user interface and is renaming it the SQL Server Report Builder. Placing the tool inside SQL Server 2005's Reporting Services, Microsoft bills the technology as bringing self-service, ad hoc reporting capabilities to its ever-broadening SQL Server portfolio.&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Another nail in the coffin for Crystal Reports?&lt;/P&gt;
&lt;P&gt;I found the following quite funny.&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P dir=ltr align=left&gt;&lt;FONT face=Verdana size=2&gt;Because of the proactive caching, developers will no longer have to understand the esoteric differences involved in deciding among Microsoft's ROLAP, MOLAP and HOLAP flavors of OLAP.&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Am I alone?&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=27233" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/jhan/commentrss.aspx?PostID=27233</wfw:commentRss></entry><entry><title>Repositories and aggregate objects...</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/jhan/archive/2004/08/20/22787.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:22787</id><created>2004-08-20T14:04:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;&lt;A href="http://dotnetjunkies.com/WebLog/seichert/"&gt;&lt;FONT face=Verdana&gt;Steve Eichert&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana&gt; posted about &lt;/FONT&gt;&lt;A href="http://dotnetjunkies.com/WebLog/seichert/archive/2004/08/08/21456.aspx"&gt;&lt;FONT face=Verdana&gt;Repositories&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana&gt; and I've been coming across&amp;nbsp;many situations in my projects&amp;nbsp;where I would definitely benefit from such design.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;However, one thing still bothers me and I can't seem to come up with a clear answer and that is regarding handling of aggregate objects.&amp;nbsp; In the original example, there are two domain objects: Customer and Address.&amp;nbsp; Each Customer can possibly have multiple Address objects which is not an unrealistic scenario.&amp;nbsp; So then, as &lt;/FONT&gt;&lt;A href="http://dotnetjunkies.com/WebLog/seichert/archive/2004/08/08/21456.aspx#21745"&gt;&lt;FONT face=Verdana&gt;Shawn Oster&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana&gt; and I asked in the comments, how would the loading of this aggregate object be handled?&amp;nbsp; Would CustomerRepository call AddressRepository?&amp;nbsp; So then we would have a method like FindByContactID in AddressRepository that will return a list of Address objects to the CustomerRepository which in turn will return the whole thing to the next layer up.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;A problem I have with that is then what happens if I have Account domain object that has many Customer objects.&amp;nbsp; Then calling AccountRepository.FindByID() would possibly trigger many other repository calls.&amp;nbsp; For example, if an account has 5 customers and each of the customers has 3 different addresses, that's one call&amp;nbsp;on AccountRepository, 5&amp;nbsp;on CustomerRepository, and 5 on AddressRepository.&amp;nbsp; I am assuming each of those calls will end up as a single trip to the database.&amp;nbsp; The whole thing can be retrieved in a single sql statement instead if we wanted.&amp;nbsp; Obviously, there would be duplicate information returned but if we only retrieved, say, account name and contact name along with the addresses, it wouldn't be much.&amp;nbsp; So then maybe&amp;nbsp;AccountRepository.FindById() should run two sql statements: one to retrieve itself and another to retrieve all customers with all of their addresses.&amp;nbsp; Is that necessary?&amp;nbsp; But it surely beats running 5 or more separate queries.&amp;nbsp; Maybe there should be a overload that accepts a flag - maybe something like &amp;#8220;bDeep&amp;#8220; - that will either retrieve all or just placeholders.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Then&amp;nbsp;I thought about lazy loading.&amp;nbsp; How would this be achieved?&amp;nbsp; In order for this to work, each property that represents a domain object must reference its respective Repository.&amp;nbsp; That might be ok if the object remained in a single layer.&amp;nbsp; Would you pass this object to the UI?&amp;nbsp; But then I realize that these Repositories are not necessarily bound to the data access layer - maybe I'm confusing myself with DDD and tiered design(are they compatible?).&amp;nbsp; Repositories on the UI layers(or the client side) can represent a proxy that references middle tier business objects (whether be it via remoting or web services).&amp;nbsp; This actually is a pretty good design I think since then that Repository facade gives way to a smart client design where sometimes the client needs to go offline and still retain the data in a local data store.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;I wonder how all this Repository&amp;nbsp;stuff fits into &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/distapp.asp"&gt;&lt;FONT face=Verdana&gt;Microsoft's new architecture from the P &amp;amp; P group&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Then there is the problem of&amp;nbsp;how to handle different retrieval criteria.&amp;nbsp; Should we create one method per criteria - FindByCustomer, FindByCity, FindByState, FindByLastNameAndState?&amp;nbsp; Or do we create some other mechanism to specify the criteria, parse it, and create sql statements from those criteria?&amp;nbsp; By the way, on a side note, this totally&amp;nbsp;eliminates any possibility of&amp;nbsp;writing a stored procedure for that case since we need to accommodate any combination of&amp;nbsp; criteria.&amp;nbsp; But this last discussion is for another day...&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=22787" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/jhan/commentrss.aspx?PostID=22787</wfw:commentRss></entry></feed>