Tim Murphy's .NET Software Architecture Blog

August 2007 Entries

Creating A Paint.NET Effect Plugin

This is an area that I have not explored before.  That is the creation of plug-ins and community property.  Add to that the fact that the most graphical programming I have done is frame by frame line drawing animation on an Apple II.  In this case I ran into a challenge online that requested an effect that Paint.NET did not offer.

My first adventure started with a version of CodeLab published by BoltBait (sorry I don't have a real name).  It is a tool that launches as an effect within Paint.NET giving you a NotePad style editor for C# with some basic development-time code checking.

There is also a Visual Studio template for VS2005.  It can be found here.  This is how you can overcome the limitations of CodeLab.  The main limitation is the fact that CodeLab gives very few options for dialog boxes.  The best support for the template is a blog post which contains a howto.

Now if you are going to use the template then take advantage of the custom controls within the Paint.NET assemblies.  These reside in PaintDotNet.Core.dll and PaintDotNet.exe.  In my case I chose to use the ColorWheel.

Another key thing to make sure of is that you implement all of the constructors in the token class (token is used for data communication with the dialog).  It seem that the one that takes another copy of the same class is used to pass the token back to the main plug-in class' Render method.

If you want the user to get a real-time view of what they are changing each of your dialog control change events should call the FinishTokenUpdate method.

Of course there is more to developing Paint.NET effect than this, but I will write that when I work out a few more image theory subject with the one I am currently writing.

Ultimate Tool List

He has done it again.  Scott Hanselman has come out with his 2007 Ultimate Tool List.  If you value your time check it out.

OT: Floating Away

Last month we were begging for rain.  My grass is completely dead in spots and the only thing growing are weeds and crab grass.  This month it just won't stop raining.  I looked up some figures this morning.  The county I live in gets an average of 4" of rain in August.  One town is reporting almost 10" so far this month with two weeks to go and a forcast of rain all this week.  I'm thinking of building an arc.  Anyone want to join me?

David Hayden On .NET Rocks

This latest show really interested me since the topic was Enterprise Library.  It is a subject that is near and dear to my heart since I spent significant amount of time working on a few chapters of a book for the 2.0 release.  I have to admit I haven't had much time to keep up lately and had even forgotten that they had moved it to CodePlex.

I found the application blocks that were added for 3.0 exciting.  The fact that there is now a validation application block and a policy injection application block I think shows how far we as a community have come in our abstraction. 

Now there is also an Application Block Software Factory.  Now that is something to get excited about.  I can tell you from experience that even writing new classes isn't a cake walk.  This sort of wire frame to help those brave enough to build their own application blocks is a god send.

Do yourself and your team a service and check this out.

Invisible Captcha

This is another one of those things I heard about on .NET Rocks.  I believe that it is being used here on GWB, considering the visible one doesn't seem to be in use any more.  It is an interesting approach to a difficult problem.

Now the question is what is next when the spammers figure out how to defeat this barrier?  I'm waiting for the retina scanner.

Feeling The Need For Agile

I sat in a meeting today where a boat load of process documents were dumped on the team in the middle of an A&D phase which is already behind schedule.  Now this wasn't to introduce us to new processes, but to document the processes we are already doing informally.  Add on top of that a request to redo a full team meeting because a couple of people couldn't attend and I feel like I am being pounded to death by the "waterfall" today.  How about just a little agile?

The Things You See On The Way To Work

Here is something you don't see every day.


weinermobile20070808_ (2)

Photography Can Teach Different Ways To See Design

This is becoming a trend for me taking different hobbies in my life and applying them to my job (which also happens to be my hobby).

One way that you can learn to take better images is to work through assignments.  These can be challenges from a group, a paid project or self assignments.  This is the way I learned .NET 2.0 and how I will approach learning VS2008. 

With 2.0 I rewrote my wife's web site. 

The other things that these assignments teach is looking at things from different perspectives.  Take for instance the most recent one I was working on which was to portray time or the passing of time.  Try to think of how many ways you can do that.

You start by brain storming.  First things that come to mind are the usual: clocks, watches, hour glasses.  Now turn it on it's head: candles dripping, a rusting sign, a falling down building next to a new one. 

Now apply the same approach to design.  Start with standard patterns: factory, singleton, command.  Now let your imagination go to town ...

Yahoo Spam Filter Gone Crazy

I don't know what is happening, but for about the last week Yahoo's spam filter has started putting half of my emails to the spam folder.  If I didn't go in there every so often and check things out I would still be wondering where some of them were.  Go figure!

IT: The Next Generation

I was talking with a neighbor who is going to DePaul University for software engineering.  Things have definitely changed since I was in college.  He was working on a Java PDA app and a traffic light controller application.  That is a long way from encryption programs and inventory reports.

One thing that is a little scary is that he says his focus is on project management.  Now maybe my thinking is outdated, but I don't believe that you can effectively manage developers without knowing how to develop yourself. 

Now the question is does taking a few development classes qualify?  To my way of thinking, no.  There are just so many things that you don't encounter in the class room.  Things like how do meetings affect your ability to deliver code on time and the impact of ever changing requirements don't come up in the academic environment.

So let's change the question.  Should they teach project management in school.  Most definitely.  It is just as important for a developer to understand how a project is managed as how to build the software.  I just don't believe that someone right out of college should go straight into project management.

Now That Is Dedication To Your Product

Yesterday I posted about adding whatIf functionality to a PowerShell script.  Less than 24 hours later I had a comment from Jeffrey Snover of the PowerShell team.  This isn't the first time that I have noticed hits to my blog from Microsoft addresses after posting on one subject or another.  I find the fact that the product teams are keeping an eye on the community reassuring.  Keep up the good work guys!