www.fgks.org   »   [go: up one dir, main page]

New Addition to My Toolbox
08 March 08 07:46 PM

When it comes to creating CDs and DVDs, I pretty much have a singular need - burning ISO images of software.  Therefore, I always find myself pretty annoyed with the "everything and the kitchen sink" tools like Nero and Roxio and I've been quite content over the past year using an internal command line tool.  Unfortunately, over the last month, I've been encountering all sorts of problems with this tool and as I'm about to pave my workstation for Vista with SP1, I needed to find a good (free) DVD burning tool - and stumbled across this little gem.  Bottom line from my experience thus far - it's free, it's simple, and it works as advertised.

imgburn

Postedby hdierking | 5 Comments    
Filed under: ,
Last Old Blog Code Update
06 March 08 11:12 PM

Ok - after posting this update, I'll consider myself caught up with regard to picking up the pieces of my old blog.  This is the updated code sample for creating custom mapping types in NHibernate.  The updated sample provides a loose example of implementing the type object pattern - a pattern where one object instance serves as the type for a set of other object instances.  Here, for the sake of simplicity and expediency, I have designed the types such that the type object is also the value container - hopefully when you look at the code, you can see it's a pretty simple process to go a step farther and implement the full pattern.

Anyway, similar to my last post, I've updated the code to use the latest version of NHibernate, and I've added in some LINQ goodness.  And of course, all demoware disclaimers apply.

Old TDD Demo Blog - Digest and Code
01 March 08 11:24 PM

Several of you have emailed me over the past several months asking if I had a copy of the blog text and/or code that I had mentioned in a much earlier blog entry.  As it turns out, a good friend of mine found some old archived versions of the site on an Internet cache and set them over to me.  Therefore, I have taken the web pages and compiled them into an XPS document so that you can see the thought progression that went along with building a small application, TDD style. 

Additionally, I've updated the code samples a bit.  Specifically, I've upgraded the version of NHibernate to 1.2.1.GA - and as such, dropped the use of Ayende's NHibernate Generics library.  Also, as I was going through my NHibernate mappings, I realized that I had been pretty lazy with regard to semantic accuracy for collection types - I had pretty much completely used <bag> mappings instead <set> mappings for unordered collections so that I could use IList<T>.  Therefore, I cleaned that up a bit.  Other than that, the only other thing that I did was update some of the looping and conditional code to use LINQ.

Finally, let me emphatically throw out the "Demoware Disclaimer" - The point of the blog and the code samples was to illustrate the thought process and corresponding code behind using TDD to design a domain model.  As a result, everything else in the code is the simplest thing that could be implemented to support the overall goal - and nothing more.

The Visual Studio Gallery
28 February 08 05:23 PM

Once upon a time (ok, fine - 2 weeks ago), I was doing some Ruby development in Notepad and just had a craving for more.  Don't get me wrong - I love the raw performance of Notepad, but between Visual Studio (with R#) and Eclipse, I just had a need for something more aesthetically pleasing.  One thing that I've always loved about the Eclipse side of the universe is that if I'm ever in need of a new plug in, I can simply go to the Plugin Central portal and browse through hundreds of different plugins, from language tools to modeling tools.  As I was hoping, I came across a fantastic plugin for Ruby development.

If you hadn't noticed yet, we have now launched a similar one-stop-shop for Visual Studio add-ins - the Visual Studio Gallery.

image1

One of the things that I found particularly interesting about the Visual Studio Gallery is in how you can source Visual Studio add-ins from a variety of different sources, from CodePlex to the new MSDN Code Gallery portal (if you just want to surface the code and not binaries), to your own hosting provider.  The particular combination of this with something like CodePlex strikes me as particularly cool.

Database Development - What is it to you?
05 February 08 10:21 AM

As I mentioned in a recent editor's note, one topic that you said you would like to see more of is database development.  While this request was not entirely unexpected, it's not all that clearly defined in my mind either.  I think that the reason has more to do with the length of time that I've been at Microsoft than it does how clear the topic is defined.  To elaborate, internally we tend to look at database development as more the function of somebody in the "IT Professional" classification.  Practically (and historically), that means that articles fitting into this genre are better suited for TechNet Magazine than they are for MSDN Magazine.  We currently run the "Data Points" column which focuses on data access - but from our recent reader survey results, it seems like that's not covering all of what's needed.

That said, I understand that the reality is that you as developers wear many hats - and designing and implementing databases is one of them.

So, the bottom line is that I could use your help in scoping this a little better.  What specific kinds of topics related to database development are you looking for in MSDN Magazine?

Postedby hdierking | 3 Comments    
Filed under:
You Always Hope...
24 January 08 07:32 PM

That your kids will find what you do for a living somewhat interesting.  As you can see, I don't think I'm going to be that lucky...

DSC02260

Postedby hdierking | 3 Comments    
Filed under:
New Years Resolution - Not Quite World Peace, But...
08 January 08 05:46 PM

So it's a new year, and while I'm not really in the habit of making resolutions, there is one thing that I would really like to accomplish this year...

I've spent the majority of my career as a developer building and sharpening my skills in OOD, design patterns, DDD, TDD, and a whole host of other acronyms containing the letter "D".  Then came along services and with it an acronym that every vendor seems to use and no vendor seems to understand: SOA.  As SOA grew in popularity, so did the rise of more and more middleware services.  Some notable examples for me as of recent have been WF and WCF.

The deeper I get into working with these new technologies, the more my concern is growing that SOA at some level seems predicated on designs that I consider OO anti-patterns.  More specifically, SOA seems to favor an anemic domain model (a data model, really) which is consumed by services and orchestrated by workflows to a rich domain model, where both the data and behavior of the problem domain are expressed using the same semantics and syntax.  Fundamentally, it feels to me at this point that SOA requires the problem domain to be factored horizontally by functional layer rather than vertically by logical domain abstraction.

So my resolution: to develop a solid understanding about the practical ramifications of SOA (and associated technologies) on object-orientation.

Have any of you run up against this yet?  I ask the question somewhat rhetorically as I'm seeing it start to pop up on several listgroups that I'm a part of.  What kinds of conclusions have you reached at this point?

Postedby hdierking | 1 Comments    
Filed under:
IIS 7.0 and the ASP.NET Integrated Pipeline
27 December 07 09:45 AM

One of the coolest things about working at MSDN Magazine is the exposure I get to all the different technologies coming down the pipe from all over the company.  One of these that recently grabbed my attention was the set of enhancements that the IIS team has made in IIS 7.0 surrounding the "Integrated Pipeline".  If any of you have ever written an ISAPI filter in C (shudder), you will be particularly interested in this technology as it allows you to write the equivalent functionality by using ASP.NET HTTP modules!!

In the January issue of MSDN Magazine, Mike Volodarsky describes the pipeline in great detail and walks you through a sample where he adds ASP.NET functionality such as forms authentication and output caching to an existing PHP application - all without touching the existing application code!

Additionally, Mike has posted a follow-up on his blog - check it out!

Postedby hdierking | 2 Comments    
When Poor Quality Control is Just Plain Funny...
25 December 07 10:24 AM

Anyone that I went to high school with will find extra humor in this.  This moment of Christmas humor is brought to you by Pottery Barn.

DSC02049

Postedby hdierking | 3 Comments    
Filed under:
"CLR Inside Out" Needs Your Ideas
19 December 07 06:55 AM

One of the benefits that we at MSDN Magazine are proud to be able to offer readers is access to many of the actual product groups at Microsoft.  For those of you who read the magazine, you know that we run a column called CLR Inside Out - the column is authored by the product team that develops and maintains the .NET CLR/DLR and its goals are to provide you with an "under the covers" view of the runtime and to provide insight into some of the thinking that went into its creation.

Particularly with this column, we want to make sure that we are providing you not only deep insight - but relevant deep insight.  And as a result, the CLR team wants to know what you are interested in reading about as we move into 2008.

Thoughts?

Random Question...
18 December 07 09:44 AM

Since I discovered that I can keep my laptop powered during the 5 hour flight between Seattle and New York, I've been able to do some programming again!!  And naturally (well, maybe not naturally), that got me thinking about...music.

So the question: what do you listen to while programming? 

For me, the list consists of bands like Chemical Brothers, The Crystal Method, Rage Against the Machine, NiN (older stuff) - and sometimes the random classical Indian music (I play a little tabla and I'm a huge Zakir Hussain fan).

Postedby hdierking | 9 Comments    
Filed under:
The Coolest Thing About Flying First Class
17 December 07 06:24 AM

So I finally earned enough frequent flyer miles to qualify for Medallion status on Delta.  One of the benefits of the program is that you are automatically upgraded from coach to first class if there are available seats.  For my latest trip to New York, this was the case.  And I discovered the single coolest thing ever about flying first class.  It's not the larger seats, free movies, or upgraded meal - oh no!  It's that your seat as an AC adapter built right in - which, for me, meant that I could use my laptop for the entire trip!

In hindsight, I wonder as to whether this may be more an indictment of my laptop's battery...

Oh well, totally cool nonetheless!

Postedby hdierking | 6 Comments    
Filed under:
On Vacation Today - A Little Blog Maintenance
10 December 07 11:22 AM

Yea - so in answer to your first thought, I agree - I shouldn't be doing this on my vacation day.

That said, out of random curiosity, I took a look today at all of the spam comments that were sent but never posted to this blog.  In the past month, I had around 2000.  I went through and cleaned them up, but wow - if this is typical (which I'm assuming it probably is), then let's say that gives this blog about 20 spam comments per post, per month.  Also, keep in mind that my blog is small by comparison in terms of my posting frequency.  All in all, it just makes you wonder how much space is taken up in these management databases with junk.  If any of you happen to manage one of these databases, could you post a legit comment with some statistics?

Postedby hdierking | 0 Comments    
How you know when you don't have a SOA...
09 December 07 10:07 PM

You know that you're probably not living in an SOA world when your definition of application integration looks like a replay attack.

Yes, dear friends, that is what I'm having to do at the moment in order to integrate our internal procurement application with our vendor management application.  You might think that, at the very least, these 2 systems would be integrated on the back end - and you'd be right.  The problem is that each system still maintains its own, proprietary UI - and each UI defines (and essentially constrains) the way that the 2 systems are able to integrate for the end user - in this case, me.  And if you haven't been able to tell from the post so far, those definitions do not meet my specific business needs.

workflow copy My automation needs are not really that out of the ordinary.  I have a very simple workflow that looks like the following.

So why then, in a company that actually creates so much of the software that makes this kind of thing possible, do I have to resort to techniques like HTTP sniffing and IE automation in order to get our vendor management application and procurement application to work together?

I think the problem is completely irrespective of any company - I think the problem lies in the way that IT organizations are traditionally organized.  Moreover, I believe that the way IT organizations are organized within most medium to large companies makes the promise of SOA nearly unattainable.

Let's take a closer look at my particular problem.  When I acquire a new article for MSDN Magazine, I need to enter information about the author 1 time, and then automate the process of creating a contract, opening a PO and optionally creating a new vendor.  This basic workflow crosses 3 back-end systems (that I'm aware of) - and there's been a fair amount of integration already between them - but only on the back end.  For me, the task looks like this.

  • Create a procurement request (big long InfoPath form with a whole bunch of fields that I end up copying the same stuff into for every request)
  • Create a Word doc with the deliverables schedule (info about the article, due dates, cost, etc...)
  • Attach the Word doc to the InfoPath form
  • Upload the InfoPath form with the attached Word doc to a SharePoint site.
  • If the author does not already have a vendor ID, go over to the vendor application, fill out a web-based form with the author information (same information that I already typed into the InfoPath form), and submit the form as a new vendor request
  • Rinse and repeat for every article I acquire

Now, you might say, "but come on - you're just being overly dramatic - how long can that really take?"  Generally, it takes about 15-20 minutes - not a huge deal.  However, it can become quite a pain when you're doing 3 or 4 contracts at one time, and I'm also going to fall back on general principle here - it's moronic that I should have to do it this way in the first place.

As you can see from my workflow, I was able to work around the aforementioned problems by leveraging the following.

  • The nice thing about both Word and InfoPath is that they are based in XML.  Therefore, I just created my own InfoPath form where I captured only the information relevant for creating author contracts.  I then used XSLT to generate both the Word doc and the procurement InfoPath form, and then copied the byte stream of my Word doc into my InfoPath form (this simply automated InfoPath's "attach file" feature)
  • The vendor application was a little more of a pain, because I ended up having to just automate IE (as soon as I can find an equivalent web service, I'll change my approach).  For this, I took advantage of a popular web testing framework, Watin.

So how did it come to this where the only practical BPA solution looks so much like a hack?

My opinion is that it has everything to do with how IT organizations are structured, and more importantly, in how IT organizations define and measure value (or contribution).  It seems to me that IT organizations measure value only in terms of direct contributions to end users.  As a result, they are generally put in the most impossible position - to try and add some level of benefit to all users in the organization.  As the size of that organization increases, the depth of value that can be added gets continually reduced in favor of adding some value to the breadth of end users.  Recent pushes towards service orientation have been somewhat successful at having systems integrate on the back end, but because of the way that value is measured, new, integrated features are exposed to end users in fixed, and many times imageconstrained, ways.  In my case, it looks like the following - does this look familiar to you?

Again, from my perspective, this diagram looks a whole lot more like the organizational chart within the IT organization than it does a systems architecture that would help either me or Joe optimize our business processes (btw, whereas I'm sure that there really is someone named Joe on the Windows team, I'm not referring to anyone specific here).  By that, I mean that it aligns users with systems instead of business workflows. What would, of course, be more ideal is something like the following.

image

So let me pause for one second and state that I am completely aware that this desired end state is nothing new.  To my original statement though, I believe that most IT organizations are not setup in a way that would allow them to ever really deliver this end state because of how they are structured and how they are measured.  So, should it be changed?  Two things come to mind.

  1. Structure IT into 2 tiers - a capabilities development tier and a solutions delivery tier.  The capabilities development organizations would align around systems - LOB, custom, operational (ESB), etc...  The solutions delivery organization would align around individual business units. 
  2. Measure each organization differently. The capabilities development organization should be measured on how well capabilities were organized, managed, and surfaced to the solutions delivery group.  The delivery organization would be measured on the degrees of efficiency added to every business unit that was a customer.

The overall idea here is that for IT to align with business, it has to do it at much more of a granular level than what is happening today.  After spending some time observing IT organizations in different companies, I'm becoming increasingly convinced that because of the absence of this division (and particularly the lack of different goals), we continually end up with a set of systems that, while integrated and maybe even "service-oriented" on the back end, are no more helpful to our business users than the monolithic client-server apps of yesteryear.

Postedby hdierking | 0 Comments    
Filed under:
Wow - That Was Annoying
18 November 07 06:18 PM

So I'm in an awkward place right now when it comes to programming.  In addition to the fact that I no longer program on a day-to-day basis (which is starting to bug me a little more than it used to as I'm afraid I'm starting to atrophy a bit), I'm also now up on Visual Studio 2008 - which is really great in a lot of respects - but at the same time is kind of bumming me out.  I'm not bummed because of anything inherent in Visual Studio - I'm bummed because Resharper just doesn't really work all that great in it.  Don't get me wrong - R# works - but the semantic analysis tools don't yet work with a lot of the C# 3.0 language enhancements - and as much as I tried to ignore the R# compiler errors on things like Linq queries, I finally just got tired of it an uninstalled R#, impatiently awaiting the 4.0 release.

Firstly, let me just say that not having R# is miserable from a refactoring standpoint.

Secondly, losing R# led me down the path to another headache (which is the subject of this post) - I no longer have a VS add-in runner for NUnit.  Yes, I know - I could (and probably should) go back and download TD.NET - but instead, I was curious to see how easily it would be for me to just convert my NUnit tests to VS 2008 unit tests.  In short, it's not terribly difficult, but getting there was a frustrating journey.

Why?  Because unlike NUnit, where a test fixture is explicit in code (and only in code) via the TestFixture attribute, VS tests rely on a second piece of metadata in order to have them run via the VS test manager/test runner.  That metadata is not found in the *.vsmdi file - instead, it's actually a property in the project file of your unit test project.

Therefore, if you started from a regular class library project and need to have it recognized by VS as a "test project", open the *.csproj file in notepad and add the following to any PropertyGroup.

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

The first Guid identifies your project as a test project (the second is the language I believe - feel free to correct me if I'm wrong).

More Posts Next page »
Page view tracker