If you haven't followed the development releases, here are a few highlights of what's new, as compared to NUnit 2.2:
* NUnit 2.2.4 runs under .Net 2.0 and works with VS2005. If you work exclusively with .Net 2.0, you can download a version that is actually built with that framework version, which eliminates dealing with the config file.
* You can run tests built against older versions - 2.0 or later - of NUnit without recompiling. As a bonus, you can run tests built against CSUnit without recompiling.
* A number of new Asserts and Attributes have been added. It is now much easier to create your own custom Asserts while still taking advantage of NUnit's built-in error message formatting.
* An extensibility mechanism allows you to define your own attributes for test fixtures and cases that behave in non-standard ways. [This feature is Still a bit experimental, and will appear in final form in the 2.4 release.
* Documentation is substantially improved and is provided as a set of html files. The packaged documentation includes only version-specific details, with info that may change over time, such as contacts, kept on the web site.
You can read the full release notes at http://nunit.com/testweb/index.php?p=releaseNotes&r=2.2.4. Note that the nunit.org site has not yet been updated to reflect this release.
You can download NUnit 2.2.4 at http://sourceforge.net/project/showfiles.php?group_id=10749
Saturday, December 17, 2005
NUnit 2.2.4 Released!!
Friday, November 25, 2005
A thought experiment, just for fun
The central character in God’s Debris knows everything. Literally everything. This presented a challenge to me as a writer. When you consider all of the things that can be known, I don’t know much. My solution was to create smart-sounding answers using the skeptic’s creed:
The simplest explanation is usually right.
My experience tells me that in this complicated world the simplest explanation is usually dead wrong. But I’ve noticed that the simplest explanation usually sounds right and is far more convincing than any complicated explanation could hope to be. That’s good enough for my purposes here.
The simplest-explanation approach turned out to be more provocative than I expected. The simplest explanations for the Big Questions ended up connecting paths that don’t normally get connected. The description of reality in God’s Debris isn’t true, as far as I know, but it’s oddly compelling. Therein lies the thought experiment:
Try to figure out what’s wrong with the simplest explanations.
What I found interesting is that, at least, sounds very much like the "simple design principle" that is advocated, correctly in my view, by the Agile Extreme Programming methodology.
In addition to this, I also found of interest related to software development was a discussion of pattern recognition and usage. In the chapter, Science, the central character states:
Computers and rocket ships are examples of inventions, not of understanding," he said. "All that is needed to build machines is the knowledge that when one thing happens, another thing happens as a result. It’s an accumulation of simple patterns. A dog can learn patterns. There is no 'why' in those examples. We don’t understand why electricity travels. We don’t know why light travels at a constant speed forever. All we can do is observe and record patterns." (P. 22)In any event, instead of getting my daily fix of humor I got much more, a jolt to my thinking about fundamental questions. That, in my possibly warped view of entertainment, is for more enjoyable. Moreover, perhaps the joke is on me since I do not know nearly as much as I foolishly thought.
Thursday, November 17, 2005
Agile Amigo?
Check this potential Agile Amigo out here. This will be interesting to follow.
Tuesday, November 15, 2005
Microsoft released guidelines for converting ASP.Net 2002/2003 projects to Visual Studio.Net 2005
Microsoft released guidelines for converting ASP.Net2002/2003 projects to Visual Studio.Net 2005 at Step-By-Step Guide to Converting Web Projects fromVisual Studio .NET 2002/2003 to Visual Studio 2005.
The article states:
The primary benefit of converting a Web application project to Visual Studio 2005 is the ability to use many new features in ASP.NET 2.0 (e.g., master pages,etc.) in your existing application. If you are looking to enhance an existing Web application built using Visual Studio .NET 2003, then upgrading to Visual Studio 2005 is most likely the right decision.As expected, simple projects will be easier to convert:
For relatively simple Web projects where a Webproject is the only project in your Visual Studio .NET 2003 solution, conversion should be a relatively automatic process requiring little time or problem resolution.
However, not all ASP.Net 2002/2003 project conversions will be easy:
If the application you are converting is of reasonable size and has several Web projects and additional projects, such as class libraries, in a single Visual Studio solution, it is possible to encounter issues during migration. Be prepared to spend the better part of a day completing the entire process. The steps and guidance provided in this article can help an informed user to migrate most applications of medium complexity.
Thank you Web Platform and Tools Team for your honest assessment. I must admit that I am very skeptical when someone says, "it’s really pretty straight forward." Yea....right. In any event, I am looking forward to moving some of my small-sized projects to VS 2005.
Monday, November 14, 2005
Webservice Account Permissions "Gotcha"
The “gotcha” that we encountered was that the accounts that the web services were utilizing needed modify permissions on the server <WindowsFolder>/temp folder in order to generate serialization proxies.
Click here to see what was done to remedy the issue.
Monday, November 07, 2005
It's in the wild!!
Also, DotNetNuke, an Open Source Web Application Framework, is releasing its 3.2 framework, built on the 1.1 .Net, and its 4.0 framework, built on .Net 2.0.
I can see that I am not going to get much sleep.
Friday, November 04, 2005
New from Yahoo! and still in beta - Instant Search
Thursday, November 03, 2005
Covariance and Delegates in .Net 2
Very nice code re-use construct!
Friday, October 14, 2005
Essential ASP.Net 2 Webcasts and Lab Exercises
Fritz Onion has been doing some great webcasts concerning ASP.Net 2.
There are also labs and demo code provided with the slides! There is nothing like actually building something with the code to learn newprogramming constructs and techniques.Saturday, October 01, 2005
Continuous Partial Attention, please?
I typically download podcasts, audio program files in MP3 or WMA format, to listen to as I jog or mow the yard. One podcast feed that I subscribe to is IT Conversations.
A recent podcast dealt with a discussion panel of information overload and how that affects our attention to any one thing at a time.In a world where information overload is common, attention is a very scarce resource and there is an increasing need to manage it efficiently. In this panel discussion, Steve Gillmor, Glenn Reid, Doreé Duncan Seligmann, David Sifry and Linda Stone talk about the problem of coping with more information than one can handle and the possible solutions.In a connected world it is becoming very difficult to filter out the information that really needs our attention from that which is irrelevant to us. The panel discusses the work that they are currently involved in and tries to come up with answers to the problem of overwhelming information, only some of which deserves our attention. They talk about the tools, practices and new technology being developed to effectively use data which matters to the end user.
Part of the discussion dealt with what Linda Stone has termed continuous partial attention:
For almost two decades, continuous partial attention has been a way of life to cope and keep up with responsibilities and relationships. We've stretched our attention bandwidth to upper limits. We think that if tech has a lot of bandwidth then we do, too.With continuous partial attention we keep the top level item in focus and scan the periphery in case something more important emerges. Continuous partial attention is motivated by a desire not to miss opportunities. We want to ensure our place as a live node on the network, we feel alive when we're connected. To be busy and to be connected is to be alive.
She then states how through the last twenty years we have come to realize that the belief that connectedness is synonymous with living is not necessarily true.
Now we long for a quality of life that comes in meaningful connections to friends, colleagues, family that we experience with full-focus attention on relationships, etc.
I for one will begin to strive to give full attention when talking and relating to not only my loved ones, but friends, neighbors, and co-workers. What higher compliment can we pay to others but attention?
It is all about people
We are all still striving to become. Let the newest software languages and methodologies, the latest portable toys, and the most recent killer apps assist us in being, not just being wired.
Wednesday, September 21, 2005
ASP.Net 2 Cross-Page Posting - More than Server.Transfer
For those controls that implement the new (in ASP.Net 2) IButtonControl interface, such as the Button control, the PostBackUrl property (that must be implemented by the control), "Gets or sets the URL of the Web page to post to from the current page when the button control is clicked."
Too cool!!
For more on this go here.
Wednesday, September 14, 2005
The LINQ Project - Check this out!
The The LINQ Project is a codename for a set of extensions to the .NET Framework that encompass language-integrated query, set, and transform operations. It extends C# and Visual Basic with native language syntax for queries and provides class libraries to take advantage of these capabilities.See a demo from Anders Hejlsberg on Channel 9.
Friday, September 02, 2005
Factory Method or Abstract Factory
I'm trying to understand the difference between simple factory and factory method. They are the same thing! It's just one is composed while the other is inherited. I could even argue that since we prefer composition over inheritance, simple factory is better than factory method. I don't understand why factory method is better, and I've been tearing my hair out for hours to figure out why.While I myself am a mere student of patterns here was my reply and thoughts on his question:
James,
You have asked a good question.
The factory method is good to implement alone if you have variations of a particular object that you need to create.
The Head First book uses a pizza store as the example here. The pizza store has a limited variation of pizzas it sells. Therefore, an abstract class is implemented (extended in java) in your subclasses and you are good to go for specific pizza object creation.
The abstract factory is utilized for creating a "family of objects" and therefore often utilizes factory methods within it.
In short, which pattern is used is dependent upon your need. If a simple set of related objects is what you want, then the factory method is your pattern. If you need a more varied set of objects created, the abstract factory pattern provides this via the ability to use a set of interfaces for each desired set of objects.
You stated that composition is favored over inheritance. That is correct, but which pattern is used is dependent upon your need.
Hope this helps,
Mark
Monday, August 22, 2005
Playing with Partial Classes in C#
Here it is.
Tuesday, August 16, 2005
Web UI Developers, for now, use the Firefox Browser
However, I must say, at least until IE 7 becomes more visible and out of beta, that Mozilla’s Firefox browser provides better tools for web developers through Firefox’s extensions for developers.
I especially like the Web Developer extension. Sure beats the Alt+Tab dance between the browser you are viewing your changes with and your CSS editor!
Sunday, August 07, 2005
How can we be sure we are singing from the same page of music? – Fit in the key of C#
I also briefly discuss the desire to test properties in addition to fields and methods with Fit. I have "tweaked" the source code to provide this. My initial tests work but I would like to further test the code and submit it to other Fit developers as I am sure this has already been considered. My guess is that I may not be implementing the RowFixture subclass correctly. I will provide my source code on this later following more tests and discussion.
UPDATE 7-10-2006: After posting the above info, I submitted a proposed patch to source forge, artifact 1255429, which deals with using properties instead of member variables. The patch was submitted to source forge in August of 2005. Nothing as of this update has been done, that I am aware of, so I thought I would put it out for public consumption and comment.
In more detail, fixtures deriving from RowFixture have instantiated classes with public variables, instead of exposing the instantiated object’s members via public properties. With these modifications you can write fixtures directly against objects under test, which are typically the actual application classes, exposing properties instead of variables to the RowFixtures. This enables the .Net developer to avoid writing additional code beyond the fixture and the actual application objects under test.
The new post: Testing .Net Properties with FIT
Friday, August 05, 2005
Resharper: Sharper indeed
For example, if you have private local variables and you want to expose those guys via public properties just Alt+Insert (ReSharper > Code > Generate... via the ReSharper menu) in Visual Studio and you get:
As you can see you can also easily generate a constructor, implement interface members, or override members from base classes.
There are many more “niceties” from ReSharper such as automatic indentation within bracket blocks {}. I got real tired of typing the brackets, separating them via hard return, and then tabbing to indent the first line in the block of code.
public void SomeMethod()
{
//indented code here
}
Instead, when you enter a set of brackets for a block of code, ReSharper will insert your cursor between the brackets. Then, when you hit the Enter key the new line is indented for you! These are just a few of the great features of ReSharper.
I did not mention the Refactoring it provides. ReSharper rocks!!
Thursday, August 04, 2005
101 Samples for Visual Studio 2005, in VB.Net and C# -- Nice!
Samples include base class library samples, data access samples, web development samples, and windows forms samples.
Nice!
I love Virtual PC!!!!
I have 2 Windows 2003 server virtual installs (one with Fitnesse, PHP5 and the Netbeans IDE running on it and the other with Visual Studio 2005 Beta 2) and am installing SUSE Linux 9.3 in a separate install next!
This is most useful when doing development R & D on various OS/platform applications. Did I already say that I love Virtual PC?
Thursday, July 28, 2005
C# FIT Basic Setup on XP Pro
I am now at the chapter introducing Fitnesse. The use of a wiki format for Fit tests is powerful to say the least. More on that going forward.
Anyway, I thought it best at least to detail the steps of the basic setup of .Net's Fit on Windows XP Pro. So here you go!
Sunday, July 24, 2005
Open exchange of ideas...NOT
I must say I am thankful this is not the case where I work! Thanks Sarah and Reed!!
Saturday, July 16, 2005
Just got my copy of Fit for Developing Sofware!
Tuesday, July 12, 2005
IT Conversations - It’s a small world indeed
Each morning, at least on weekdays, I jog my usual neighborhood loop. To make this less tedious I usually have my Rio MP3 player piping music or a podcast into my head. The last few days here in Northern Kentucky we have felt the effects hurricane Dennis. Just days earlier I watched as the hurricane ripped through the pan handle of Florida. I find it fascinating that within our vast ecosystem one pressure or influence affects another. Anyway, on my run this morning, I noted the cloud cover from Dennis. At the same time I was listening to an MP3 that was found as the result of “googling” for technology podcasts. What I found from Google was IT Conversations. You often here in agile development circles of the emergence of "organic" applications due to environmental pressures. Here, at least in my view, is the emergence of a great service due to pressures of the need for thought provoking audio in the technology “ecosystem.”
The IT Conversations site is a free, donation based podcast site that deals with everything from software development to social trends and how technology affects these domains.
I highly recommend IT Conversations and encourage all to go there. If you agree, please donate to keep the informative and entertaining podcasts coming.
Saturday, July 02, 2005
Configuring NUnit 2.2 to use Visual Studio 2005 Beta 2
Click here for the steps to make that happen.
I will be getting Visual Studio 2005 Team Suite Beta 2 on my server shortly. Until then, it is nice having NUnit2.2 to use with just the plain Visual Studio 2005 Beta 2 install.
Saturday, June 25, 2005
Language Oriented Programming
In mainstream programming, most of the time spent 'programming' is really just finding ways to express natural language concepts in terms of programming level abstractions, which is difficult, not very creative, and more or less a waste of time. For example, today a good deal of development time is spent on object-oriented design (OOD). This is actually a fairly creative process where the programmer expresses classes, hierarchies, relationships, and such. The purpose of this exercise is to express the program in object-oriented terms such as classes and methods. The process of OOD is necessary because these classes and methods are the only abstractions that object-oriented languages understand. It seems like it is necessary and creative, but with Language Oriented Programming, OOD is not needed at all.Okay, now you have my undivided attention. Having just spent a week in RUP training which was about taking use cases and performing "use case realization" which is completed to translate the anticipated business line usage senarios of the application in question, I was really interested.
The article then discusses the aspects of LOP. Then following this an overview of LOP and a JetBrains' Meta Programming System overview dealing with LOP is provided. Most interesting.
Needless to say, I will be reading more on LOP.
Saturday, June 18, 2005
RUP Development Iterations and TDD together
During a class discussion it was stated by the teacher that within the old waterfall lifecycle approach, when the project was nearing the production release date, testing was the portion of the project that got squeezed out due to a looming deadline. The discussion then moved to the fact that within the phases of RUP, iterative style development insures that testing for that particular iteration is done and not affected by timeline pressures.
When the instructor stated that, I quickly considered past situations within development iterations where testing time still got "squeezed" because of the various pressures to move to the next iteration. Because I know the value of the Test Driven Development (TDD) methodology I thought, what if, within the RUP phase iterations, TDD was utilized?
First, the TDD methodology could ensure that the developer tests are passing and that code coverage is almost complete. In addition, TDD would make certain that the code is refactored and ready for the next development iteration. TDD could also provide a living artifact to demonstrate to the stakeholders of the project that the entire bank of developer tests is passing. (You TDDers know the warm, fuzzy feeling you get when you see the green bar of tools like JUnit or NUnit.) Finally, the tests provide a quick and automated regression testing mechanism when any changes are made to code base in future iterations.
Thursday, June 16, 2005
The Rational Unified Process and Test Driven Development
I agree with Mike concerning "Unless you have a LOT of authority you will find it very exhausting to try and influence a culture change without buy-in from your management." I work at a large financial institution which whole heartedly supports RUP. In addition to having one of the "three amigos" own consulting company contracted to provide detailed courses on the four phases of RUP and their various disciplines, Dr. Jacobson has often provided great lectures to the application development teams that are broadcast to the various corporate team locations within the United States. In my view that is great. However any corresponding and/or competing methodology is typically viewed with skepticism and then ignored.
I have found that within the corporate environment I have been able to introduce Test Driven Development as a programming methodology that our dev team can use internally. In fact I am finding that it is a relatively easy sale because TDD is so effective concerning both the quality of code and efficiency of the team production! Moreover, the artifact of the tests is a great source of "developer oriented documentation" for new team members that are already familiar with developer testing tools such as JUnit or NUnit.
All in all, RUP is a tried and tested methodology for an organization as large as the one that I am currently employed. Yet, it is greatly enhanced by agile processes.
Monday, June 13, 2005
My First C# DotNetNuke Module
Initial DotNetNuke "gotchas" with Windows XP Pro
Click here to find out more.
Sunday, May 08, 2005
PDF to byte array with TDD
From the sample API of the web service, the first task was to get the report, that is in a PDF format, to a byte array that will be passed to the web method.
Click here to see the how Test Driven Development (TDD) made this task much easier and quicker to complete.
Monday, April 18, 2005
What to do with complexity
What I quickly noted on the page was the following quote by Alan J. Perlis: Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.
Wow! I must admit that when I have encountered complexity, in both code and in life in general, I have ignored it, suffered it, and avoided it. Rarely, if ever, have I removed it. What comes immediately to my mind concerning the removing of complexity is Refactoring. This I try to do regularly with code. What is Refactoring? According to the Wikipedia Refactoring is the process of rewriting written material to improve its readability or structure, with the explicit purpose of keeping its meaning or behavior. Wikipedia defines readability as, Readability is a measure of the comprehensibility or understandability of written text.
The main reason I refactor is indeed pragmatic. I find that further updates to the code is easier to do if the current code is as clear in its intent and as simplistic in its structure as possible.
Perhaps those who really are geniuses remove complexity out of altruistic reasons, for myself as a mere mortal, I remove it so I can better understand how and why.
For more quotes by Alan J. Perlis, click here.
Saturday, April 09, 2005
XHTML and CSS: a union made in....
Check out my latest learning spike about using XHTML and CSS to form a great web design toolset.
Monday, April 04, 2005
NMock 101
Click here to see the step-by-step process I used to create a demo of NMock using a TDD methodology with NUnit.
CopySourceAsHtml
Anyway, the solution was to take the source code and do a local build, creating the install file and installing from that .msi file. Then all worked swimmingly.
Saturday, April 02, 2005
The link from Head First Design Patterns is up
Thursday, March 24, 2005
Head First Design Patterns in C# with NUnit
Anyway, the book shows the code and exercises in Java. To better learn the patterns I implemented the code in C#. About halfway through the book I e-mailed the authors and let them know how much I enjoyed the teaching style of the book and informed them about the C# exercise code that I was creating. They were interested and asked me to post it to them when completed. I did and they, I say they as the book has four authors and I have been corresponding with one, suggested that I create a small web page to link too, that briefly shares my learning experience with a link to the C# code. I did and the author graciously stated that they will be linking to my page from their page (see link above) shortly. Meanwhile, click here to get to my page with the brief overview and code.
Sunday, February 13, 2005
Eating Elephants
The fact that is hard to remember is that the process of eating is the same for whatever size meal you may have before you. Whether you are eating a peanut-butter sandwich or an elephant, you take the food item, and bring it to your mouth, take a bite, and begin chewing. Since the process is the same regardless of the size of the meal, it is logical to deduce that the size of meal should not be a factor in the decision of one starting the process.
Now I understand that the size of the meal can be intimidating if you are expected to consume all that is set before you. However, since we are not using the analogy to discuss the eating of food, the goals we are trying to achieve or problems we are attempting to overcome typically do not require a solution be reached in one sitting. We may in fact want to have the goal met or issue dealt with quickly, but this does not mean that it has to be. More than often, that is simply our impatience forming our expectations and not a well informed understanding of the situation we are desiring to change.
Finally, both you and I will end up taking several bites as we sit at several meals throughout our lifetime. We might as well be taking bites out of those goals and issues that are before us. We all exist in time. We will use this time for something. This moment-by-moment time is the same for everyone regardless of how we use it. Therefore, start biting!!
Wednesday, February 02, 2005
...you who judge practice the same things.
The passage that I am thinking of is Romans 2:1. The New American Standard translation states:
Therefore you have no excuse, everyone of you who passes judgment, for in that which you judge another, you condemn yourself; for you who judge practice the same things.
The Message paraphrase states the passage as:
Those people are on a dark spiral downward. But if you think that leaves you on the high ground where you can point your finger at others, think again. Every time you criticize someone, you condemn yourself. It takes one to know one. Judgmental criticism of others is a well-known way of escaping detection in your own crimes and misdemeanors.
Yes, at work, I hear the annoying laugh of the girl in the adjacent department and then realize just how silly my laugh can be at times. Or, I notice the peculiarities of others around me. Then I see that these are the same tendencies that I exhibit.
In fact, for quite some time I have thought that this passage was only speaking of the preceding section of Romans, chapter 1, that details how that even though mankind has a general revelation of God in nature, we have and do suppress that truth and spiral into all sorts of wickedness. Oh my!! You mean that as we see this taking place in our time, we are in fact doing the same things. Yes. Perhaps in less obvious forms, but still the same, we are actively at fault, just as those outside the family of Christ. Not just in the large things. But as time has shown me, the small, insignificant things also. Indeed, in my view, the Word of God is true.
Yet, what is different about us who name the name of Jesus? Do we deserve any less punishment than they? More on this later....
Great GoF Patterns site with C# examples
Tuesday, February 01, 2005
First Post
Also, and more importantly, stay tuned for thoughts on a Biblical Worldview.