Geeks With Blogs
Chris Breisch   .NET Data Practices
Search this Blog!
Architecture Thoughts about Software Architecture
Don't Run as an Admin, yada, yada, yada
Jeff Atwood has a good piece on why you shouldn't run as an Admin. He even links to another good piece on the subject by Aaron Margosis. Jeff makes his point by visiting a malware website with an unprotected system running an unpatched IE 6.0. The site installed the following spyware on his machine (not that he didn't click on anything or download anything) (Quote from Adam McNeil of Webroot Software): Webroot SpySweeper detected the following spies after allowing the installer to run over night. ......

Posted On Monday, July 9, 2007 12:39 PM

Lots of Stuff on Use Cases From Tyner Blain
I've mentioned Tyner Blain quite frequently in my blog, and recently talked up their series on Software Estimation With Use Case Points. Well, if you're going to do estimation using use case points, you better know how to do use cases. Here's a good smattering of their articles on use cases. They have more. Follow the suggested reading links. The Difference Between Use Cases and Test Cases People who are new to software, requirements, or testing often ask “What’s the difference between a use case ......

Posted On Friday, May 25, 2007 9:10 AM

The Cost of GUIDs as Primary Keys
I was doing a little research for a project the other day and stumbled upon this article on Informit.Com. It's old (2002), so it doesn't even take into account new features in SQL Server 2005 (NEWSEQUENTIALID()), but does give you something to think about regarding GUIDs. This table in particular is an eye-opener: Result of Test A: INSERT of 500,000 Orders Test A Time (with 500,000 Orders) INTEGER 1 GUID 30 GUID (COMB) 1.1 To see what the difference between GUID and GUID(COMB) is, you'll have to ......

Posted On Tuesday, May 8, 2007 10:04 AM

Software Estimation With Use Case Points
There's a very good series at Tyner Blain on Software Estimation With Use Case Points. The series consists of: Introduction to software cost estimation Technical Factors of the Implementation. Primarily non-functional requirements of the system. Environmental Factors. Mostly characterizing the implementation team, but touching on process as well. Use Case Quantity and Complexity. The number of use cases and the number of steps within the use cases. Actor Quantity and Complexity. The number and type ......

Posted On Wednesday, April 11, 2007 12:22 PM

The Last Responsible Moment
Jeff Atwood blogs about The Last Responsible Moment, which involves delaying decisions as long as possible, but not longer. This sounds counter-intuitive, but I believe is a key ingredient in YAGNI. Making decisions at the Last Responsible Moment isn't procrastination; it's inspired laziness. It's a solid, fundamental risk avoidance strategy. Decisions made too early in a project are hugely risky. Early decisions often result in work that has to be thrown away. Even worse, those early decisions can ......

Posted On Wednesday, October 25, 2006 8:20 AM

Business Requirements -- The "REAL" Requirements
There's an interesting post at Tyner Blain regarding Business Requirements. Their piece is a follow-up piece to a piece by Robin Goldsmith. I find both pieces fascinating because they deal with whats and hows, two items that I find myself constantly bringing up in our design meetings whether they're with the clients or not. The difference between REAL business requirements and system requirements is not the level of detail. The difference is qualitative. Business requirements are whats. System requirements ......

Posted On Tuesday, April 10, 2007 7:37 AM

The hardest part of being an Agile Project Manager
Brian Button writes on the hardest part of being an Agile Project Manager. It is, essentially, remembering to do nothing. Ok, not nothing, but having as little direct involvement in the team's progress as possible. Why? Because you want your agile team to grow as a team, and to be, well, agile. If Brian gives them the answers to their issues, they become less an agile team, and more of a top-down team. As he says: The idea is that the team must learn to recognize the issues that they have, understand ......

Posted On Monday, April 9, 2007 12:06 PM

When Collective Intelligence Fails Us
There's a good article on the downsides of "the wisdom of crowds" over at Tyner Blain. Basically, they point out that while collaboration is good during some of the early phases of the project, design isn't one of them, because it "prevents innovative, passionate, fantastic decisions". They suggest one solution is the Apple "Dictator" approach. One way is to follow apple’s model - have a dictator. As long as the person calling the shots has good instincts, she’ll make good decisions. If she doesn’t, ......

Posted On Friday, March 30, 2007 8:40 AM

Sweet! Auto Class Diagrammer for .NET Assembly
You've probably heard of Reflector, which lets you decompile .NET Assemblies and see how they work. It's a very nice tool, for what it does. However, as has been noted by others, if you're decompiling a rather large assembly, figuring out how everything links together can be difficult. This is where something like Sacha Barber's 100% Reflective Class Diagram Creation Tool. As you can guess from the name, it uses reflection to accomplish it's task, much like Reflector does. Features: Detection of ......

Posted On Friday, March 30, 2007 8:10 AM

Big Ten Rules - Writing Stylish Requirements
Earlier, and earlier still, I blogged about this series from Tyner Blain on Writing Good Requirements. They've now surpassed the Big Ten conference and added a twelfth rule. The Big Ten Rules - Writing Stylish Requirements (no, this doesn't mean that you write them in black or whatever "the new black" is) Here they're talking about the style you use for your writing. They break it down into several categories, three of which stick out to me: Prioritize Explicitly In More About Software Requirements ......

Posted On Monday, March 26, 2007 7:36 AM

Jeff Atwood Writes about "The Iron Stool"
Basically, Jeff's point is that the classic iron triangle view of Time vs. Resources vs. Functionality (Scope) is inadequate. Sometimes all three dimensions of the triangle are locked. If you're given three people, four months, and a non-negotiable budget of $300k to build software, then that's what you do. But how is this possible? Something still has to give. There's an unstated fourth ingredient in the iron triangle: quality. Once you add the fourth ingredient, the triangle metaphor breaks down. ......

Posted On Wednesday, October 25, 2006 7:34 AM

SQL Refactor from Red Gate
The always-on-top-of-things David Hayden has a great blog post about a beta product from Red Gate software called "SQL Refactor". This software does what it's name implies. It helps you to refactor your database and SQL code. To me, this holds much more promise than SQLPrompt, which usually ends up just getting in my way ......

Posted On Wednesday, October 18, 2006 10:48 AM

Manage Your ASP.NET Session Variables Using a Facade
There's a good article by David Hay on this subject over at CodeProject. When you read it, you'll no doubt have a "Well, duh. Of course that's better. Who didn't know that?" moment. I did. So, why point it out? Sometimes we don't do things that can help us, even though they're quite obvious. We don't do them for many reasons, but I think the biggest is that we're not thinking about that particular item as an issue. In this example, we've used session state for years, we know how to use session state, ......

Posted On Saturday, March 24, 2007 5:39 AM

Forget What the Media Tells You--Software is Hard
Frederick P. Brooks, 1987: Not only are there no silver bullets now in view, the very nature of software makes it unlikely that there will be any—no inventions that will do for software productivity, reliability, and simplicity what electronics, transistors, and large-scale integration did for computer hardware.... I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the ......

Posted On Friday, March 23, 2007 9:27 PM

Prototype Fidelity
There's an interesting article at Tyner Blain about Prototype Fidelity. Most of their article is a summation of Jan Miksovsky's article on the same thing.What's "prototype fidelity"? In short, it's a description of how close your prototype model is to actuality. Are your prototypes "fully functional windows/web apps" or PowerPoint slides or hand-drawn scribblings on a paper napkin? Most likely they're somewhere in the middle of all of that, and also most likely you do different things depending on ......

Posted On Friday, March 23, 2007 8:26 PM

Implicit Requirements Are Still Requirements
One of the many reasons for software project failure is failing to meet requirements (well, duh). But part of that problem is not detailing correctly what the requirements are. If you think that requirements only fall into the categories of critical success factors and/or must-have/must-be requirements, sprinkled in with a few more-is-better/highly desired requirements, you're missing the boat. And your projects will fail. As we learn from Tyner Blain, you have to capture the implicit requirements ......

Posted On Thursday, February 15, 2007 8:06 AM

How To Not Suck At Design
How could you go wrong with a title like that? The folks at Tyner Blain thought you couldn't, and I agree. Of course, they're just extending an article from Michael Shrivathsan, so both are worth a read. Start with the user interface. [Roger Cauvin adds, start with a working first iteration] Work closely with UI designers. Pay attention to details. Simpler is better. Be brave ......

Posted On Thursday, February 15, 2007 7:59 AM

Fifteen Ways to Shut Down Vista
There's a good article on Tyner Blain about over-engineering your application. Sometimes you go so far out of your way to please everybody, that you end up pleasing nobody. I've been on this type of project myself (quite recently, actually), and the results you end up with are never pretty. The example used there are the Fifteen Ways to Shut Down Vista. Don't try to please everybody. Remember that you're the software developer and that the people paying you for your work are paying you for your software ......

Posted On Thursday, February 15, 2007 7:25 AM

MassDataHandler - Generate Unit Test Test Data
This is my week for information about unit testing against databases, apparently. MassDataHandler is available from CodePlex: The MassDataHandler is a framework to assist with Database Unit Testing. The framework makes it very easy to insert test data into a database, which in turn makes it very easy to write database unit tests. The user merely needs to specify their relevant data in a simple XML fragment, and then the framework uses knowledge of the database schema to do all the grunt work and ......

Posted On Monday, October 16, 2006 7:22 AM

Why Microsoft Project Sucks at Managing Software Projects
This is a great quote: When you work in IT, you deal with the consensual hallucination of Project Management. There is an almost universal belief that it is possible to predict ahead of time how long a project will take, how much it will cost and what will happen along the way. In the broadest sense, this is possible. If you have enough experience you can come up with ballpark figures; last time we did something similar it took this long and cost this much.But some people believe Project Management ......

Posted On Wednesday, November 22, 2006 7:54 AM

What Are Mock Objects? (Specifically TypeMock)
The folks at TypeMock have written a page on how TypeMock makes your unit testing easier and more reliable. Mock objects help when unit testing code that has dependencies (often external) that make SetUp/TearDown difficult. Like the rest of XP (Agile), mocking is something you're probably going to have to "sell" to the decision makers. Print out this article and give it to them. Even if they don't go with TypeMock, at least they'll understand the reasoning behind mocks ......

Posted On Wednesday, November 22, 2006 7:21 AM

Why Scrum is Easier to Sell Than XP
Roy Osherove blogs about getting people to take on scrum who might fear XP. He makes a great point that I've made myself in the past when mentioning one of the reasons why he likes scrum: It does not contain the word "Extreme" in its name I never use the phrase XP or ExtremeProgramming when trying to sell it (I gave a talk on this last month). I always refer to it as "agile development". I realize that the two aren't necessarily one and the same, but for the people I'm talking to, it will do. Why ......

Posted On Wednesday, November 22, 2006 7:10 AM

TestDriven.NET 2.0
Jamie Cansdale has released TestDriven.NET 2.0. I admit that I haven't used the 2.0 betas, but I'm still excited about this. Quite a bit of the TestDriven.NET functionality has been assimilated into Visual Studio Team System, but not everyone is using Team System, and that might be overkill depending on the size of your project. In addition, there are very good reasons to stick with something like TestDriven .NET; it should have more frequent updates, you can get closer to the developers if you need ......

Posted On Tuesday, October 31, 2006 6:53 AM

How Many Asserts In a Unit Test?
No, this isn't like "how many angels can dance on the head of a pin". There's a somewhat animated debate in the agile community right now on the benefits of having a unit test with multiple asserts. I've written them that way, and I've written them with just one. Each has pros and cons. With multiple asserts you don't know the true success/fail state of the test. Once one assert fails the test stops, so you don't know if the other asserts would've succeeded or not. This is a big problem. However, ......

Posted On Tuesday, October 31, 2006 6:48 AM

Big Ten Rules - Writing Correct Requirements
Earlier, I blogged about this series from Tyner Blain on Writing Good Requirements. It was called the "Big Ten Rules" because they had ten rules on the subject. Well, like the Big Ten conference, there are now eleven: The Big Ten Rules - Writing Correct Requirements Correctness in requirements is simply about getting it right. We wrote previously about how to apply use cases to creating correct requirements. Writing requirements correctly is as much about getting accurate information as it is about ......

Posted On Tuesday, October 31, 2006 6:37 AM

Boy, wouldn't it make your life miserable if the answer was 'no'? You do know what CAPTCHA is, don't you? I'm sure you've used it. CAPTCHA, which stands for (C)ompletely (A)utomated (P)ublic (T)uring test to tell (C)omputers and (H)umans (A)part... Here's a sample from the comment form from my blog: Pretty straightforward, right? You look at the picture and you type in what you see. But is it safe? Jeff Atwood takes a look. Oh, come on, you don't expect me to spoil the surprise, do you ......

Posted On Tuesday, October 31, 2006 6:32 AM

Project Server - Visual Studio Team System Connector
Using Visual Studio Team System and Project Server and constantly being annoyed that they don't play well together? All (ok, some of) your prayers have been answered, as Ameya Bhatawdekar posts: I am pleased to announce that Avanade has released an upgraded version of the connector. The upgraded connector is available at here. The connector is also available as a part of the Avanade Software Lifecycle Platform™. You can learn more about it here ......

Posted On Thursday, October 26, 2006 9:03 AM

Goal-Driven Documentation
Besides not doing proper testing, my other biggest pet peeve is incomplete documentation, both internal and external. The folks and Tyner Blain have been reading my mind again, because there's a great article on this very subject posted just a few days ago. Why do we write documentation? Because someone told us to write it? Because our competitors have it? Or because we want our software to be easier to use? It should be the third one, but often, writing documentation is an afterthought, and it is ......

Posted On Saturday, October 14, 2006 2:45 PM

Spec Explorer is Available For Download From MS Research
Spec Explorer is a software-development tool for advanced model-based specification and conformance testing. Spec Explorer can help software-development teams detect errors in the design, the specification, and the implementation of their systems. The tool is intended to be used by software testers, designers, and implementers. Download it here ......

Posted On Friday, October 13, 2006 10:04 AM

TDD and Designing for Testability

The jury is still out on this one, but Eli Lopian has thoughts from 14 of the jurors.  I've blogged about Eli's opinion on this subject before.  Personally, I like mocks, but I sure wish there was something better.  Later this year, I hope to have some more time to give this some real thought.

Posted On Friday, September 29, 2006 5:56 AM

BPMN Diagrams
There's a great series of posts on BPMN diagrams at Tyner Blain. Foundation Series: Business Process Modeling BPMN Diagrams - Introduction to Intermediate Events BPMN Diagrams - Make It Right With Intermediate Compensation Events BPMN Diagrams - Hit the Links With Intermediate Events BPMN Diagrams - Intermediate Multiple Events BPMN Compensation Event Correction UPDATE: Free BPMN Stencils for Visio 2003 What are BPMN diagrams? They are Business Process Modeling (as-is, to-be, etc) diagrams that conform ......

Posted On Tuesday, September 26, 2006 9:08 AM

The Big Ten Rules - Writing Good Requirements
I've been meaning to blog about these for some time. The last of the rules was published on June 15th, so I've certainly had opportunity. The good folks at Tyner Blain have come up with what they think are the requirements for writing requirements. :) Characteristics of Good Requirements Valuable Concise Design Free Attainable Complete Consistent Unambiguous Verifiable Atomic Passionate All of the articles are worth a read. I'd add more info on the series, but I'd just be copying or re-wording what's ......

Posted On Thursday, September 14, 2006 5:53 AM

Refactoring Databases: Evolutionary Database Design
This looks like a really good book. They also have a website with examples and summaries of the refactorings. A refactoring is a small change to your code which improves its design without changing its semantics. A database refactoring is a small change to your database schema (the table structures, data itself, stored procedures, and triggers) which improves its design without changing its semantics. Database refactoring is a technique which supports evolutionary development processes. It has the ......

Posted On Wednesday, September 13, 2006 11:26 AM

MSF For Agile Software Development Process Guidance
If you're a fan of the Microsoft Solutions Framework (I personally go back and forth--to me, there's a lot of "duh!" in it, and on the flip-side there's an awful lot of overkill), or a fan of Agile development with VS 2005, you'll probably want to look at this. This download contains the source code and HTML in the agile process guidance that ships with Visual Studio Team System. MSF for Agile Software Development is a scenario-driven, context-based, agile software development process that utilizes ......

Posted On Friday, September 8, 2006 6:20 AM

Thread-safe GUI's
As a follow-up on my post yesterday about threading, here's a good post on how to choose among the wide variety of choices to create a thread-safe GUI. After reading both of these, I've decided that I need to re-work the threading on an app I recently wrote. Live and learn. From the intro: With .NET 2.0 and with the new "anonymous delegates" feature in C#, doing multi threaded responsive GUIs is now easier. In fact, you get multiple choices on how to accomplish this task. But which choice is the ......

Posted On Wednesday, September 6, 2006 6:05 AM

DotNetNuke And SharePoint Go Head-to-Head
Here's a very good blog post comparing and contrasting DNN with SPS (SharePoint Services). It's long, but well worth the read. Like anything, choose the right tool for the right job. Obviously DNN isn’t as scalable as SharePoint is and it can’t search file shares, web sites, Lotus Notes databases, etc. but then it also can’t be setup and running on an external web host where you don’t have console access in 10 minutes like DNN can. Choose, but choose wisely ......

Posted On Wednesday, September 6, 2006 5:53 AM

Enterprise Library Feature Voting: The Polls Are Now Closed

Tom Hollander posts on the results from the voting.  Apparently people really want new blocks dealing with Business Rules, Workflow, and Validation.

Good luck to Tom and the team on pleasing everyone. :)

Posted On Wednesday, September 6, 2006 5:35 AM

Enterprise Library v3 Feature Requests?

The Enterprise Library team is soliciting feedback on feature prioritization for the next version of the Enterprise Library.  Now’s your chance to tell them you really need that blue button on the customization tool.

Read all about it at Tom Hollander’s blog.

Posted On Thursday, August 31, 2006 5:29 AM

I18N in ASP.NET 2.0
Here’s a very good article on how to globalize and localize your ASP.NET 2.0 application. If you’re designing a public website, you probably need to look at this. Globalization is defined as the process of developing a program or an application so that it is usable across multiple cultures and regions, irrespective of the language and regional differences. For e.g. you have made a small inventory management program and you live in a region where English is the main language, assume England. ......

Posted On Wednesday, August 30, 2006 5:20 AM

Dynamic Reports With Microsoft Local Report Engine

Did you know that there’s a reporting engine available to you in VS 2005?  I’m not talking about Crystal, or MS SQL Reporting Services.  I’m talking about the Local Reports Engine.  Check out a sample here.

Posted On Wednesday, August 30, 2006 5:16 AM

Q: What's the Point of Use Cases?
A: Writing Better Software. Duh. So, why don’t we write better use cases then? Or at least learn how to read them better? (One might also think that learning to read them better might enable one to write better ones in the future also). Anyway, Tyner Blain has a few great articles on these subjects: The 8 Goals of Use Cases We write use cases for the same reasons that people use our software - to achieve goals. In our case, we want to assure that we are creating the right software. By looking ......

Posted On Tuesday, August 29, 2006 5:06 AM

p&p Guidance Explorer for ASP.NET and .NET
I’m a little slow. I misread the stuff about this when it first came out and didn’t realize what I was seeing. patterns & practices Guidance Explorer is a tool that enables discovery, composition and consumption of high quality development guidance. The Guidance Library is a catalog of guidelines and checklists that encapsulate development knowledge in several technologies such as .NET and ASP.NET. The Guidance Explorer tool provides a convenient means to view and edit the catalog. ......

Posted On Tuesday, August 29, 2006 4:54 AM

ADO.NET Entity Framework Overview
I’ve mostly stayed away from blogging about DLinq and other .NET 3.0 goodies, because I think they’re too far out in the future to be worth that much attention. However, I do think that Linq is worth keeping an eye on because I think it’s going to be one of the best parts of (insert .NET language here) 3.0. And to go along with DLinq, there are some massive changes coming to ADO.NET. I’ll follow up on these more when I feel the time is right, but for now, it’s worth ......

Posted On Tuesday, August 29, 2006 4:41 AM

A Better Way to Use Mock Objects in Your TDD
TDD is a great way to do development, and using Mock Objects is almost a requirement for doing TDD well. Unfortunately, Mock Objects often lead to unnecessary complexity and violation of several TDD principles (YAGNI and Do The Simplest Thing That Could Possibly Work). Eli Lopian has come up with a workaround for this, that enables you to continue to Do The Simplest Thing that Could Possibly work and remember YAGNI and yet use Mock Objects. Check it out ......

Posted On Thursday, August 24, 2006 7:12 AM

Software Factories From Microsoft's p&p Group
The p&p group, boldly ignoring this advice on software factories is coming out with several factories these days, the Smart Client Software Factory, the Mobile Client Software Factory, and the Web Service Software Factory. Read more about what they’re doing here ......

Posted On Thursday, August 24, 2006 6:32 AM

ASP.NET 2.0 Page Life Cycle
If you’re doing ASP.NET development, you should probably have a copy of this on your wall.

Posted On Wednesday, August 23, 2006 6:17 AM

ViewState Compression
A necessary evil of ASP.NET development is the ViewState. And if you’ve done much ASP.NET development, you’ve realized that you often need to turn the ViewState off for things that don’t really need it to reduce your page bloat. But, what do you do when you’ve eliminated everything you think you can, and your page size is still huge? Well, you really have three options: Abandon the ViewState concept completely (not something I recommend) Store the ViewState on the server somehow, ......

Posted On Wednesday, August 23, 2006 6:14 AM

Saving and Displaying Photos in SQL Server
Dave Hayden has two good blog entries on this subject: One on Saving and Retrieving Images from SQL Server Using DAAB and ADO.NET 2.0, and the other on Saving and Displaying Photos in SQL Server using ASP.NET. The former details putting the images in your DB and getting ‘em out, while the latter shows you how to display them on your web page once you’ve retrieved them. As always for Dave Hayden, the results are top-notch (well, except for the fact that he uses in-line SQL, but nobody’s ......

Posted On Wednesday, August 23, 2006 6:07 AM

Model View Presenter with ASP.NET
This article on CodeProject is one of the best I’ve read in recent memory. It details how to use the MVP pattern in ASP.NET, with a small sample and then builds on it, adding user controls, events, page redirects, security and then shows you how to build this into your Enterprise Architecture. Only complaint? One could argue (incorrectly in this case, I think) that it suffers from too much OOP ......

Posted On Wednesday, August 23, 2006 6:01 AM

Error Provider for WPF
Paul Stovell has written a good article on how to roll your own ErrorProvider for a WPF project.  Also gives some elementary understanding of XAML, and uses the Strategy Pattern as well.  And since this is all part of .NET 3.0, we should pay attention, because we’re going to be stumbling down this path ourselves some day.

Posted On Monday, August 21, 2006 6:20 AM

Dynamic Themes in ASP.NET 2.0
A good article on CodeProject on using Dynamic Themes in ASP.NET 2.0. ASP.NET 2.0 makes it very easy to give your site a complete makeover in just a few lines of code. ASP.NET 2.0 makes dynamic themes really easy. No need to envy someone having cool multiple themes you can have your own instantly! This instruction shows you step by step how to make dynamic themes in C#. You can practice this code alone with Personal Web Site Starter Kit. Source code can be download at ......

Posted On Monday, August 21, 2006 6:15 AM

XML Comments In .NET 2.0.
Ok, so we all use NDoc and love it. You do use NDoc, don’t you? Well, you may have stopped using it if you’re doing .NET 2.0 development, because NDoc’s support for .NET 2.0 is, well, not very satisfying. Microsoft has recognized an un-fulfilled need here and started work on a project called SandCastle. Sandcastle produces accurate, MSDN style, comprehensive documentation by reflecting over the source assemblies and optionally integrating XML Documentation Comments. Sandcastle has ......

Posted On Monday, August 21, 2006 5:20 AM

Can You Use Too Much OOP?
Jeff Atwood at Coding Horror thinks so. How would you render the following XML fragment? <status code="1" /><data> <usergroup id="usr" /></data> He does it in two lines of code without bothering with all of that XmlWriter stuff. The idea of "write once, run anywhere" via a complex set of objects and adapters is a pleasant one, but it also adds a heavy burden of verbosity and complexity to your project. And you probably aren't gonna need it anyway. Sometimes it's simpler and ......

Posted On Monday, August 21, 2006 5:13 AM

A DelegateQueue Class
This article on CodeProject deals with the intricacies of managing delegates and multiple threads. If you’ve ever tried to use or modify a Control from any thread other than the main thread, then you likely have run into some of the difficulties Leslie Sanford is trying to solve. I need to go back into a little utility of mine and hook this in, because it’s a better solution than the one I came up with. Note that this uses Delegates, SynchronizationContexts and the ISynchronizationInvoke ......

Posted On Monday, August 21, 2006 5:02 AM

Product Differentiation vs. Product Improvement
Another great article on Tyner Blain, this time on evolution vs. revolution. You need all types. In America’s past we tended to be better at revolution, not so great at evolution. Where was the television invented? America. Where was it made great? Japan. In Japan they tended to emphasize evolution over revolution. However, those are just tendencies, and nowhere near absolutes. Japan is getting much better at innovation these days, and we seem to be emphasizing evolution more. The quick buck ......

Posted On Friday, August 18, 2006 5:08 AM

Add Office 2007-style Ribbons to Your App
It’s no secret that I’m a fan of the new Office user interface. But how to get it into your app? I’m too lazy to write my own ribbon. Fortunately, someone else has already done the heavy lifting for me. Check out these controls on GotDotNet ......

Posted On Friday, August 18, 2006 4:32 AM

The .NET Developer's Guide to Identity
Keith Brown has written a great article for MSDN on how to build identity-aware applications for .NET. From the introduction: What is an "identity-aware" application, anyway? In my mind, first and foremost it's an application that relies upon details of its clients' identity, adjusting its behavior based on those details. That's why the first section of this paper focuses on authentication. Another part of being identity-aware is being directory aware. I'm not here to tell you to throw away SQL Server ......

Posted On Friday, August 18, 2006 4:25 AM

Requirements Gathering - Interviewing the Right People
Scott Sehlhorst at Tyner Blain asks one of the ultimate questions: How do we find out what someone wants when they don’t know what they want or what they can have? Fortunately for us, he has an answer: We use personas to identify different classes of users in a software system. We use those personas to drive feature prioitization and design decisions. When making design decisions, we focus on the level of competence of the users to prioritize features. When we are eliciting requirements, it ......

Posted On Thursday, August 17, 2006 6:49 AM

Working with TFS From Word
WDriven is a Microsoft WORD document template integrated with Microsoft Team Foundation Server. It enables you to communicate and collaborate on Visual Studio 2005 Team System projects from within Microsoft Word. Through VSTS Smart Tags, you can add/edit/track work items. Tables of Items gives you an overview on all the works items referred by your documents. WDriven doesn't impose any special format on your word documents. You can add Work Item Tracking to your existing regular doucment easily. ......

Posted On Thursday, August 17, 2006 6:29 AM

Applying Design Patterns (Observer, Decorator, Strategy and Builder)
Another good article on CodeProject by Anoop Madhusudanan. This one on Design Patterns. The intro just draws you in immediately: Solution Architect: "But you can use patterns" Dumb Developer: "Yes, But can I get it as an ActiveX control?" Anyway, as he says: In this entire article, you will go through the following steps You will model a very simple football game engine You will identify the design problems in your football game engine You will decide which patterns to use for solving your design ......

Posted On Tuesday, August 15, 2006 7:10 AM

Functional Software Testing
Scott Sehlhorst has another good blog post on Functional Testing over at Tyner Blain. Actually, this is part of a larger Foundation Series which is all good. Anyway, in this post, he covers what’s right and wrong with both unit testing and functional (system) testing, and how to get the most out of each. Highly worth a read. ......

Posted On Friday, August 11, 2006 6:41 AM

The Seven Deadly Sins of Programmers
Eric Gunnerson is creating a list of his Seven Deadly Sins of Programmers. Here’s my list: Lack of Testing – This is my biggest pet peeve. I absolutely pull my hair out over this one. One year I made it a goal at my office to mention “testing” at every single meeting I attended. You can ask my co-workers, if you like, but I did it. Drove them crazy. :) Even if you’re not doing TDD, you should still be unit testing, functional testing, acceptance testing, etc. Trusting ......

Posted On Thursday, May 18, 2006 5:58 AM

Info on Design Patterns and Refactoring
industrial logic has some papers worth reading here, if you’re trying to get your feet wet with Design Patterns and Refactoring. Featured Postings Smells to Refactorings Cheat SheetWe developed this handy cheat sheet as a teaching aid while teaching our Refactoring Challenge Activity. You'll find a table that maps code smells to their likely refactorings with corresponding page references to source material contained in the books Refactoring: Improving the Design of Existing Code by Martin ......

Posted On Thursday, May 18, 2006 5:25 AM

Practices of Continuous Integration
Martin Fowler has updated his overview article on Continuous Integration. If you’re not doing something along these lines, you’re introducing unnecessary risk to your project. Martin Fowler is considered one of the “founding fathers” of Agile development, but I would argue that Continuous Integration has little to do with Agile, and much more to do with common sense. Whether you’re on a waterfall project, an incremental delivery project, an Agile project, or any type ......

Posted On Thursday, May 11, 2006 5:28 AM

{SmartAssembly}- Assembly Improvement and Protection Tool
Roy Osherove is very impressed with {SmartAssembly}. In short, {SmartAssembly} is an Assembly "improvement" tool, to be used after you've created your project and your app is ready to be deployed. It's very slick and easy to use UI allows doing many useful things to the assembly such as merging all of its dependencies into one file, removing code that is not used, obfuscate the code and even wrapping your application with a global exception handler. In short, it's a easy click-through product that ......

Posted On Thursday, May 11, 2006 4:57 AM

Agile's Biggest Strength is Agile's Biggest Weakness
This post gets to the heart of my issues with Agile. Agile’s biggest weakness is that they minimize forecasting. Most companies today, when they commit to a million dollar project, want to know what they get for their money. They want to know when they get it too. And they want to know before they sign the check. The less planning you do at the beginning of a project, the less you know about the end of the project. This is hard for non-Agile companies (or executives) to swallow. By minimizing ......

Posted On Wednesday, May 10, 2006 5:57 AM

Challenging Requirements
Another good blog post at Tyner Blain on the challenges of validating requirements. From the introduction: The hardest long term challenge in eliciting requirements is improving our ability to do it. The hardest short term challenge in gathering requirements is getting all of them. We have a lot of techniques for gathering requirements, from interviewing to brainstorming to researching. How do we know we defined all of the requirements? Everyone who manages requirements knows the value of validating ......

Posted On Wednesday, May 10, 2006 5:48 AM

Keeping Up and "Just In Time" Learning
Feeling overwhelmed? Subscribe to too many blogs? Or have too many friends send you stuff that “you might be interested in” and feel like you can’t possibly keep up. Well at Coding Horror, they have the answer: It's time to let that go. You're not keeping up. I'm not keeping up. And neither is anyone else. At least not in everything. As they say, read the whole thing ......

Posted On Monday, May 1, 2006 7:21 AM

Two big benefits of incremental delivery
Another great blog post at Tyner Blain on the benefits of incremental delivery. Worth a read for this line alone: The benefit of waterfall process estimation is that we can confidently predict how long it will take us to implement the wrong requirements. I have definitely been on waterfall projects that have done exactly that. Big and expensive ones, unfortunately, Now that I’ve stolen the thunder, read the rest of the post ......

Posted On Monday, May 1, 2006 4:53 AM

Security Briefs: Step-by-Step Guide to InfoCard
Keith Brown has an article on MSDN that’s a step-by-step guide for using InfoCard. InfoCard seems like it’ll be really nice. However, identity management has never been a strong suit for Microsoft, so I’m cautiously optimistic, at best. I wish it wasn’t being tied so closely with the train wreck Microsoft is calling Vista. More and more that seems like it might be a rather large albatross being tied around InfoCard’s neck. Anyway, here’s a little of what Keith ......

Posted On Friday, April 21, 2006 5:29 AM

First community drop of the Web Service Software Factory now available!
Tom Hollander has a post on the most recent item out of the patterns & practices group: First community drop of the Web Service Software Factory now available! The patterns & practices team is pleased to announce that the first public drop of the Web Service Software Factory is now available from our new community site at http://practices.gotdotnet.... We're looking forward to having you as a member of the community, and your feedback and questions will help us make this ......

Posted On Tuesday, April 18, 2006 5:58 PM

Steve McConnell on Software Estimation
Steve McConnell has a new book on Software Estimation. Often referred to as the “black art” because of its complexity and uncertainty, software estimation is not as difficult or puzzling as people think. In fact, generating accurate estimates is straightforward—once you understand the art of creating them.Discover how to:• Estimate schedule and cost—or estimate the functionality that can be delivered within a given time frame• Avoid common software estimation mistakes• ......

Posted On Tuesday, April 18, 2006 5:46 PM

Tyner Blain likes the Office 2007 UX
I’ve mentioned that I like the new UI for Office 2007 before. Scott Sehlhorst has a great summation about it at the Tyner Blain blog. I have said it before, and I will say it again. Other than upgrades to Outlook, this is the first worthwhile upgrade to the Office Suite since Office 97. I’d say Office 95, but I think there was still some 16–bit code in Office 95. I don’t currently use any features with any kind of regularity that weren’t in Office 8+ years ago, and you ......

Posted On Friday, April 14, 2006 6:26 AM

Teamprise 1.0
Teamprise 1.0 is now available. This looks like a pretty sweet way to handle mixed-platform development. Teamprise is a suite of client applications for accessing Microsoft Visual Studio 2005 Team Foundation Server from outside of the Visual Studio Integrated Development Environment (IDE). Teamprise enables software development teams to use the source control and work item tracking features of Team Foundation Server from within the Eclipse IDE, and from other operating systems, including Linux and ......

Posted On Wednesday, April 12, 2006 12:14 PM

Competent Users and Software Requirements
Scott Sehlhorst has been writing quite a bit lately on personas in software requirements. I haven’t mentioned it before, because I’m still ruminating on some of this stuff, but he makes a good case for using them in this article about making sure you’re designing your software for competent users. He poionts out that most requirements come from design issues related to beginners and experts, but that most users fit into neither category. When we’re designing software we need ......

Posted On Wednesday, April 12, 2006 11:51 AM

Better Testing By Developers
Scott Sehlhorst has another great post on Tyner Blain on how to improve whitebox testing. From the introduction: We’ve talked about the value of using whitebox testing in our Software testing series post on whitebox testing. What we haven’t explored is how to make sure we are creating the right tests. We have to validate our tests against the requirements. This post shows where the flaw is in the typical whitebox testing process, and how to fix it. A reader emailed us with the comment, ......

Posted On Wednesday, April 12, 2006 11:41 AM

Descriptive Class Names
Yawn. Another post about descriptive class names. You’ve read it all a zillion times by now. But it’s worth repeating. Do you have a lot of SomethingManager classes? SomethingController might be a bit better, but that’s another one that suffers from over-use. Anyway, Jeff Atwood lays it out on why you shouldn’t have SomethingManager classes, with some stuff ripped almost verbatim from McConnell (if you’re going to plagiarize, McConnell’s a good place to start. ......

Posted On Tuesday, April 11, 2006 4:53 AM

A Matter of Perspective: Innovation
If you’ve ever studied the four quadrant approach to time management (Urgency vs. Importance), then Scott Sehlhorst’s post here on the four quadrants of innovation should make perfect sense to you. Just like most of us do in time management, you’re probably spending all your software development life in the wrong quadrant. He shows us how to see that and gives us the first steps on how to fix it. ......

Posted On Tuesday, April 11, 2006 4:44 AM

What Is a Software Architect?

Michael Stal lays it all out right here.

A software architect should have expertise in the following: Software Engineering, Software Process, Project Management, Business Skills, Technology, Implementation, and Social Skills.

I think he’s exactly right, and I see immediately where I need to improve.

Posted On Thursday, April 6, 2006 5:17 AM

Scrum for Team System
Since today is apparently “Agile” day, I’ll mention that Scrum for Team System is now available and you can’t beat the price (free). Scrum for Team System is a free Agile Software Development Methodology add-in for Microsoft Visual Studio Team System, developed by Conchango, in collaboration with Ken Schwaber and the Microsoft Technology Centre UK. Scrum for Team System provides development teams with deep support for the use of Scrum, when running projects using Visual Studio ......

Posted On Thursday, April 6, 2006 5:02 AM

Pairwise testing
There’a a good article on the benefits of pairwise test over at Tyner Blain. I’ve said before that I believe that Extreme Programming is the way to go in the future for software development, but that it has two big hurdles to overcome: a) explaining it to management, b) making it work better with project management. The XPers will tell you that iterative releases will solve the PM issues, but I’m not totally sold that that has all the answers. That, however, belongs to another topic. ......

Posted On Thursday, April 6, 2006 4:58 AM

OOP and Design Patterns Resources - Books Websites Articles

David Hayden posts about some good books to read to understand OOP and Design Patterns.  I’m sad to say that I only have one of the five he mentions, but at least now I have some more things for my reading list.  :)


Posted On Thursday, April 6, 2006 4:45 AM

Getting SPAMMED for architecture
I came across this blog about software architecture that’s pretty interesting. He has an architecture framework that he calls SAF which stands for SPAMMED Architecture Framework. From one of his posts: OK, so what is SPAMMED already… well: S – Stakeholders - Anyone with vested interest in the project (end users, clients, project manager, developers etc.) These are the people you will have to explain you architecture to. These are the people that have concerns that the architecture ......

Posted On Thursday, March 30, 2006 4:50 AM

Death By a Thousand Textboxes
Jeff Atwood wants to know why HTML forms have to be death by a thousand tiny textboxes, and proposes a change. The classic example of this is phone number, which typically forces you to tab through three annoying little textboxes to enter a single number: On the other hand, it’s often a good thing to do it like everyone else does. How do you know which to do? I think UI experimentation is not only desirable, but necessary. If we don't experiment, we can't evolve UI forward. However, you have ......

Posted On Friday, March 24, 2006 4:57 AM

Architectural Truthiness
This post is about Architecture, but it could very well be about real life or politics (politics clearly isn’t real life). Be true to your architecture, and use an appropriate architecture for your problem. Don’t pick something just because it’s “neat” or “cool” or the “latest and greatest”, if the architecture doesn’t fit the problem. From the post: 'Truthiness' is about wanting something to be right, rather than it actually being right. ......

Posted On Wednesday, March 15, 2006 4:49 AM

In pursuit of simplicity
While I don’t agree with every point in this post, Jeff Atwood does make a strong case for simplifying the UI. And it’s apparent that people are listening to him. Based on what’s been publicly posted, it’s apparent that MS is going for simplicity in the new UI. As a matter of fact, we were told at the PDC that over 80% of the features requested for MS Office, are already in the product. It’s just so cumbersome that no one can find them. Of course, another part of the ......

Posted On Wednesday, March 15, 2006 4:38 AM

Getting Started with Microsoft Windows Workflow Foundation: A Developer Walkthrough

Dino Esposito has a great article on MSDN on using Windows Workflow Foundation.  WWF lets you create Biztalk-like flows and build a .NET app around them.  This was one of the most impressive things I saw last year at the PDC.

Posted On Tuesday, March 14, 2006 5:01 AM

Practical Tips For Boosting The Performance Of Windows Forms Apps
MSDN has a good article on boosting performance of Windows Forms apps. It lists 12 performance tips (shown below), and details on how best to use them to your advantage. * Load fewer modules at startup* Precompile assemblies using NGen* Place strong-named assemblies in the GAC* Avoid base address collisions* Avoid blocking on the UI thread* Perform lazy processing* Populate controls more quickly* Exercise more control over data binding* Reduce repainting* Use double buffering* Manage memory usage* ......

Posted On Tuesday, March 14, 2006 4:58 AM

Usability for older web users

There’s a good article on CodeProject on making your website accessible and user-friendly to elderly users.  Good design tips.

Posted On Tuesday, March 14, 2006 4:52 AM

Sometimes a Word is Worth a Thousand Icons
Here’s a great post on Coding Horror on how to improve your toolbar UI. I’ll steal a little bit from the introduction: Pop quiz, hotshot. What do these toolbar icons do-- and what application are they from? Okay, maybe that's a bit too monochrome. Same application, alternate toolbar skin. Does color help? Okay, let's try something less abstract. Same application, alternate toolbar skin. Does a more traditional look help? This article sums things up nicely. You gotta love the pic of Microsoft ......

Posted On Friday, March 10, 2006 5:27 AM

How Not To Build a Framework

Joel Spolsky has a great & funny post on the disadvantages of “do-everything” API’s.

UPDATE:  Giving credit where credit is due.  It IS on Joel Spolsky's blog, but the author is Benji Smith.  Sorry about that, Benji.

Posted On Thursday, March 9, 2006 8:17 AM

How to Avoid Being a Software Dinosaur
There’s a good article on Tyner Blain on why you should do iterative development with automated testing, and avoid code freeze ice ages. From the article: Steps in a dinosaur’s development process Receive list of requirements/features for the current release. Implement the code for the release. Check the code into source code control. Freeze the code and deliver to the test team. Receive defect reports from test team. Fix all defined defects. Return to step 3 until no bugs are reported. ......

Posted On Thursday, March 9, 2006 5:42 AM

Prioritizing Software Requirements
Most of my links are to good articles about coding practices. But there’s more to software development than just coding. Soctt Sehlhorst has written a great article on prioritizing software requirements using the four Kano categories: Surprise and delight. Capabilities that differentiate a product from it’s competition (e.g. the nav-wheel on an iPod). More is better. Dimensions along a continuum with a clear direction of increasing utility (e.g. battery life or song capacity). Must be. ......

Posted On Thursday, March 9, 2006 5:32 AM

Devconnections 2006

DevConnections will be in Orlando, FL, April 2–5, 2006.  The site says “Register by February 16, 2006 and save $100”. Interesting, since I just got notification of this on February 21.  Perhaps they will extend the deadline.

There’s a DevConnections blog as well.

I don’t see anything specific about sessions or speakers yet.

Posted On Wednesday, February 22, 2006 4:58 AM

Software Project Secrets: Why Software Projects Fail
On CodeProject, there’s a few chapters from the Apress book Software Project Secrets: Why Software Projects Fail. Chapter 1 – IntroductionChapter 2 – Why Software Is DifferentChapter 4 – Case Study: The Billing System ProjectChapter 7 – Case Study: The Billing System RevisitedChapter 8 – Afterword Worth a read, especially Chapter 2 ......

Posted On Wednesday, February 15, 2006 8:37 AM

Intentional Programming
David Ing makes some good points about Intentional programming.

Posted On Tuesday, February 14, 2006 8:22 AM

Architect Personas

Here’s a good post on the differing “Architect Personas”.  Simon makes some good points.  I think I sit right about where he does, which is (stealing shamelessly from his blog):

Primarily a Solution Architect

Posted On Tuesday, February 14, 2006 8:17 AM

Code is Model
Harry Pierson wrote a great post on Code is Model (yes, I know, back in October). I’m still not 100% sold on this idea, personally. I think it’s a great ideal, but the modeling tools are going to have to get much better before this will be practical on a large-scale project. MS is working on providing some of this abstraction with things like their Windows Workflow Framework, but even here the code sits below the model ......

Posted On Tuesday, February 14, 2006 8:09 AM

Copyright © Chris J. Breisch | Powered by: