AboutSQL Server, Analytics, .Net, Machine Learning, R, Python Archives
About Me
Mitch Wheat has been working as a professional programmer since 1984, graduating with a honours degree in Mathematics from Warwick University, UK in 1986. He moved to Perth in 1995, having worked in software houses in London and Rotterdam. He has worked in the areas of mining, electronics, research, defence, financial, GIS, telecommunications, engineering, and information management. Mitch has worked mainly with Microsoft technologies (since Windows version 3.0) but has also used UNIX. He holds the following Microsoft certifications: MCPD (Web and Windows) using C# and SQL Server MCITP (Admin and Developer). His preferred development environment is C#, .Net Framework and SQL Server. Mitch has worked as an independent consultant for the last 10 years, and is currently involved with helping teams improve their Software Development Life Cycle. His areas of special interest lie in performance tuning |
Saturday, September 30, 2006SQL Express 2005
A colleague asked me yesterday about SQL Express 2005 and what restrictions it has. I mentioned in a previous post that SQL Express does not limit user connections.
SQL Express 2005 is Microsoft’s SQL Server 2005 lightweight edition, which is free to use and redistribute. This new edition is the upgrade to Microsoft's SQL Server 2000 Desktop Edition MSDE). SQL Express is limited to a single CPU, 1GB RAM, and a maximum database size of 4GB. There is NO workload governor which means SQL will not limit or reduce the speed of queries. SQL Server Express can be installed on multiple CPU machines with more than 1GB of RAM, but the database engine will limit itself to a single processor and only utilise 1GB. Apart from these restrictions, the SQL Server Express database engine is the same one found in the other SQL Server products. SQL Express does not include Analysis Services, Integration Services, Reporting Services, and Notification Services. Views, stored procedures, triggers, cursors, CLR, XML, and T-SQL all work the same way as in the full SQL Server versions. Download SQL Server 2005 Express Edition Service Pack 1 from this link. Visit the SQL Express home page for links to useful resources and information on registering for redistribution. One thing you should be aware of, if you plan to build an application and redistribute a database with it, you should be using SQL Server Express as Windows Vista will not support MSDE. Friday, September 29, 2006Do You Suffer from Premature Optimisation?
Randall Hyde published a paper on The Fallacy of Premature Optimisation back in July 2006, which discusses the mindset required to create efficient code, and how it has been misconstrued:
Observation #1: "Premature optimization is the root of all evil" has become "Optimization is the root of all evil." Therefore, optimization should be avoided.This is similar to an often misquoted biblical quote, “The love of money is the root of all evil” (which is misquoted as “Money is the root of all evil”). What Hoare and Knuth are really saying is that software engineers should worry about other issues (such as good algorithm design and good implementations of those algorithms) before they worry about micro-optimizations such as how many CPU cycles a particular statement consumes. This is something I try to explain to all junior programmers, and why it is important to have at least a basic understanding of algorithm order complexity, e.g. O(N ²) versus O(NlogN) I saw this article via Rico Marini’s blog. Regional Director Code Samples
Did you know there is Microsoft site containing Regional Director Code Samples? I'm assuming this is a public site, only I'd just logged in with my Passport via the partner site.
Microsoft Regional Directors specialize in creating crafty shortcuts and ingenious innovations for developing with the .NET Framework. Check out some recent tricks of the trade here-and contact an RD if you want to learn more. More or Less Agile
Rockford Lhotka (the creator of CSLA, and author of Expert Business Objects) has posted another follow-up to Steve Yegge’s post from yesterday:
See that’s the thing. Formalize a set of practices into a Methodology and the practices lose their meaning. Each practice in Agile really is good – in a specific place and for a specific purpose. But when wrapped in a Methodology they become “good at all times and in all places” – at least to most practitioners.Rocky puts it into words so much better than I could. Friday, and No Squid?
Au Contraire! Piglet Squid!
Compilation and Deployment in ASP.NET 2.0
Rick Strahl has posted a great, must-read article on Compilation and Deployment in ASP.NET 2.0:
It's an in-depth look at the pros and cons of out-the-box stock projects and the newer Web Application Projects (available as a free download for Visual Studio 2005, but does not work with Visual Web Developer). Thursday, September 28, 2006Pragmatic Programmers Checklist
I seem to be spending quite a lot of time at Jeff Atwood’s blog of late; this post is one I like to revisit from time to time, The Pragmatic Programmers Checklist.
The Good, the Bad and the…Agile?
As a counterweight to the change diary post here’s one I saw via Joel Spolsky’s blog, Steve Yegge’s post on agile: Good Agile, Bad Agile, which among other things gives an idea of the work environment at Google. It’s an interesting read, whether you agree with it or not.
James Shore’s Change Diary
Once in a while you come across something that is really excellent; an article that strikes a chord and captures your imagination. James Shore’s Change Diary is a candid and well-balanced account of how he tried to bring agile methodologies and processes to a company where he had been taken on as a developer. It is well written, in an engaging, flash-back style. You can empathise with James’s ups and downs as he describes his 19 week journey. Thanks to Jeff Atwood for the heads up.
The really scary thing is not that the company he describes had problems (most do), but they are by no means the worst out there. I’ve worked in a ‘service based’ environment not dissimilar to the one described, and I’ve actually had senior management tell me “What’s the point of doing it faster? We bill the client for all the time we expend.” Go figure... Wednesday, September 27, 2006Oracle
Being a great fan of all things SQL Server, I had hoped to remain an Oracle virgin but alas it was not to be! I couldn’t begin to call myself an Oracle expert but here are a few simple tips I picked up.
When writing stored procedures in Oracle 10g, you can reduce possible maintenance time by declaring the type of stored procedure parameters like so: ‘COLUMN_NAME’ IN ‘COLUMN_NAME’.%typerather than explicitly declaring a data type. Oracle have released the Oracle Developer Tools for Visual Studio .NET which includes a schema browser, integrated context sensitive help and a PL/SQL debugger integrated into Visual Studio 2005. There is a basic article describing how to Build a .NET Application on the Oracle Database, although you would almost certainly be better off using a code generation tool such as MyGeneration or the CodeSmith NetTiers 2 templates (with the CodeSmith Oracle provider) to generate your Data Access Layer (or any one of the others available). As an aside, this looks interesting but I haven’t actually used it: Convert SQL Stored Procedures to ORACLE. Here is a question for any Oracle experts out there. I spent some time looking through 2 well known and respected Oracle books, and googling to see whether the 30 character identifier limit in Oracle is configurable, as I reasoned that it surely must be, right. Right? Well, I could not find a way. A 30 character limit is a real pain when you are using code generation. Is it possible to increase this limit? Tiny VPC images
I’ve recently been building quite a few VPC images for betas, testing, sandboxing etc and have made use of the techniques that Jeff Atwood posted about and I linked to in a previous post. It’s staggering how small you can make them, and how much faster they load. Jeff’s article is essential reading if you are making use or intending to make use of VPC’s. I managed to get a full Windows XP Sevice Pack 2 image down to 584MB !
Creating Windows XP Icons
I was doing a spot of late night browsing (in fact I was in the middle of reading a very interesting article on Agile development experiences when the server went down!), and came across a totally unconnected MSDN article from July 2001, which is a beauty. Creating Windows XP Icons describes in step-by-step detail how to create icons just like the guys at Microsoft. It describes the palette, perspective, common icons for toolbars, adding drop shadows, creating correct transparency maps etc.
If you are a designer or a programmer in a designer's shoes, this is a must read. The article has been rated over 7500 times and it has an average rating of 8 out of 9 (who's the person that seems to visit every MSDN article and give a rating of 1 ?!?) Tuesday, September 26, 2006Visual Studio 2005 IDE Productivity Tips and TricksIf you use the Visual Studio IDE frequently there are a number of shortcuts that can make you more productive. None of these tips are new, but there might be one or two shortcuts you were not aware of. The majority of these tips come directly from the Tech-Ed 2005 and 2006 presentations given by Anson Horton and Karen Liu respectively. I’ve condensed the gist of these 1 hour sessions into what you see here. [Note: these are the C# key bindings; other languages may differ]. One thing certainly worth remembering is that adding the Shift key to most key combinations causes the opposite sense of whatever the action is.
Understanding Code: Exploring the .NET framework’s Class Relationships Ctrl-K, Ctrl-C - Comment out currently selected code FxCop is a Static Analysis tool that can not only help you come to terms with an unfamiliar code base (see previous post) but also to improve existing code. FxCop runs over the IL generated from your source code and performs a set of rule based comparisons on it. There are 2 rule sets that can help with refactoring: naming and maintainability. One of the rules that can generate warnings relates to something called ‘cyclomatic complexity’. Cyclomatic complexity is just the number of branches in a method. The higher the value, the greater the likelihood that a method could be reduced by having sections of code extracted into new methods (refactored). Thinking About Money?
If you’ve been a VB6 programmer at some point in your career, it’s pretty good odds that you would have heard of Dan Appleman (Visual Basic Programmer's Guide to the Win32 API, Desaware). But did you know about one of his other interests? It’s probably one of yours also…His site thinkingaboutmoney is an excellent place to visit to pick up some of Dan’s common-sense advice.
Dan has recently published a 25 page e-book “The Graduating Geek’s Guide to High Finance” aimed primarily at recent graduates but it also contains advice for the rest of us. It costs US$3.99 and is well worth those few dollars. It’s not a get rich quick scheme, but talks about the financial practicalities you should consider, even as soon as graduating and taking your first job. Some of the information is US specific (such as the super fund information), but the majority is applicable in any country. Dan discusses the importance of saving (and starting to save sooner, rather than later), trade offs with different types of investments and a worked example of why you should completely avoid credit card debt. I think this is one of those areas that programmers often neglect. It is all too easy to get wrapped up in the technology side of things, and forget to take care of your finances. Disclaimer: Dan provided me with a free review copy of the e-book, but my comments were not biased because of this. Sunday, September 24, 2006Elements of Composition
Here are just a few of the principles espoused in the “Elements of Style” (see my previous post) which I have taken liberty with and made a few OO analogies:
Choose a suitable design and adhere to it. This pretty much stands alone as good advice in the context of writing or coding. Spend time on the design before you start coding. Don’t hastily start coding to one design, then change it, and then change it again. Make the paragraph the unit of composition. As a general rule, start each paragraph either with a sentence that suggests the topic or with a sentence that provides a transition. This is similar to grouping like behavior into classes. A class should contain a well-defined set of related methods, not just a random collection of unrelated functionality. Keep related words together. The principle means of showing the relationship of words to one another is their position. The intent is to give clear meaning, and not to confuse the reader by making sentences ambiguous. The analogy I tenuously liken this to is name your methods accurately, preferably with verb-noun pairing. Use the active voice. The analogy here is objects being asked to perform a particular behaviour rather than being used in functional coordinated approach. Put statements in positive form. This is akin to avoiding the double negative in poorly named methods. Use definite, specific, concrete language. Put truly common behaviour into abstract base classes, place specific behaviour in concrete classes. Omit needless words. A sentence should contain no unnecessary words, a paragraph no unnecessary sentences. This could be restated as: A class should contain no unnecessary methods, a method no unnecessary lines of code. Avoid a succession of loose sentences. Do not place inappropriate behaviour in classes. If things get too complicated, make more types. Software Evolution
Jeff Atwood has posted a 'food for thought', historical perspective of the evolution of programming languages, Fifty Years of Software Development, over at his Coding Horror site (yes, that is the actual coding horror graphic from Code Complete! If you're a developer and you haven't read Code Complete, drop what you're doing and go order it from Amazon).
VB 6 Print Form Ability Now Available in .NET
The Visual Basic 2005 PowerPack people have just released a PrintForm component to add back the functionality that was present in VB6. You can download it here: PrintForm Component 1.0. It will also work with C#.
Saturday, September 23, 2006Usability, Usability, Usability
A second edition of Steve Krug’s, “Don’t make me think” has been released. I’ve just added it to my burgeoning Amazon booklist. Steve has website here. It’s not exactly loaded with extra content but does have some interesting videos.
On the topic of one of my favourite subjects, usability, the headrush site is a gold mine of information. The latest post, Why they don't upgrade (and what to do about it), contains this pearl, “People don't upgrade because they don't want to move back into the "[I] Suck Zone."” I’m sure this is something Microsoft is spending considerable effort on with the approaching release of Vista. Q: Have PC users queued up in the cold to buy a Microsoft OS since Windows 95? Kathy Sierra writes:
Maybe Vista will get them queuing? Thursday, September 21, 2006Zen and the Art of Code Design and MaintenanceA few weeks ago, I posted a list of design principles for software development. Here’s a list of guidelines centered on the development process: Development Principles
I’d like to leave you with this parting thought from The Pragmatic Programmer: Wednesday, September 20, 2006Tools to Help With Unfamiliar Code
A while back, Jeff Atwood posted an article on managed code analysis tools and more recently on the benefits and the dangers of misusing code metrics. Static code analysis can help you to come to terms with an unfamiliar code base. Here are a few free useful tools:
Tuesday, September 19, 2006TCP Tracing
If you want to perform tracing on a web service or site that you’re developing, there are several tools out there. SoapScope is great for debugging web service calls on the wire but it costs US$299.00 for a one year license. The good news is there is a free option; namely TCPTrace and it does not require an installer. TCPTrace acts as a tunnel between a client and a server and displays requests and responses received.
If you can’t do port forwarding then there is also ProxyTrace and YATT (at the same site). Other tools like Ethereal are great but they alter your network stack, so if you want a non-invasive approach TCPTrace is a simple and free solution. [I saw this quick tip via Scott Hanselman’s developer productivity tools talks.] What is Refactoring?A non-programmer recently asked me what refactoring is. Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the system, but improves the internal structure of its code, making it easier to understand and maintain, and thereby reducing the cost of making subsequent changes to the system. Refactoring goes hand-in-hand with unit testing. Each unit test, should test a single method for a single set of inputs against an expected result.
I’m sure everyone has seen code at some point and thought “I should really change that, but I’ll have no way of knowing if my changes will break something else”? I know I have. Unit tests with ‘sufficient’ code coverage give you the courage to make radical code changes. Monday, September 18, 2006Productivity Tools for Developers WebcastsThe unstoppable developer machine they call Scott Hanselman posted a very watchable, short series of video webcasts back in August (I just got around to watching them!), on the subject of developer productivity tools. You can download all four parts for online viewing from here Developer Productivity Tools Video Part 4 (download links are towards the bottom of the page).
Sunday, September 17, 2006The Art of Writing Clearly
If you can’t express yourself well in words, how can you expect to write clear, concise code? Joel Spolsky makes this point many times over. In fact, he goes as far as saying: hire programmers that can write well. And I agree. Given the choice between two programmers of similar skills and experience, I would pick the one with the best writing skills. Joel makes some excellent points here Painless Functional Specifications - Part 4: Tips. Paul Graham makes excellent sense in Writing Briefly; I’ve been trying to follow a similar methodology for some time.
If you want to improve your ability to write clear code you need to improve your English writing skills. If you want to improve your writing skills (apologies in advance, to everyone for who English is not their first language), a good starting point is buying and reading the book “Elements of Style” 4th Edition by William Strunk and E.B. White. Incidentally, this was the book that provided the title inspiration for Brian W. Kernighan and PJ Plauger’s “The Elements of Programming Style”. The “Elements of Style” is a tiny book; you could add it to your rucksack or briefcase without extending your arms that bit more! In fact, it’s small enough to carry in your pocket. The fourth edition is a little gem. I highly recommended you buy and read it, and then keep it close, so you can flick through it from time to time. Saturday, September 16, 2006A Few More Quotes...
Several people left comments when I posted a few of my favourite quotes, so here's a few more.
The first quote in this list is from possibly one of the most brilliant men to have every lived, and one of my heros. I would have dearly loved to have met him.
Friday, September 15, 2006It’s Friday and that can mean only one thing!
Yes, you guessed it. It’s squid time!
Live giant squid caught on camera You have to feel sorry for the squid, when the ‘researchers’ are getting excited at ripping off one of its tentacles! Doesn’t bode well for its continuing existence… Super squid surfaces in Antarctic Thursday, September 14, 2006The Joy of (Deleting) Code: Less is More
I love coding! I can still remember when I first discovered programming at the age of eleven. At that age it filled me with a sense of wonder and it had the feel of a black art! But there’s one thing I like more than writing code…and that’s deleting it! That’s right, I just love deleting code.
Less code can mean less errors and less ‘cognitive friction’ when reading it, and therefore easier to maintain. I’m not talking about code that’s a candidate for the next obfuscated C competition! I’m talking about lean, simple, concise and precise code with no duplication. The work days I like the most, are those when I leave work having refactored a large chunk of code (be it mine or someone else’s). Liberate yourself, delete some code today! Wednesday, September 13, 2006Favourite Quotes…
OK, this is not a technical post, but I do like succinct, pithy quotes. They seem to sum up what we often do as developers, that is, reduce things to simple, but information rich forms, meme's if you will. Here are just a few of my favourite quotes:
In the land of the blind, the one-eyed man is king. Monday, September 11, 2006Windows XP Service Pack 2 Support Tools
Every so often (actually quite often!), I come across something and I think “I really should have known that!” (bit like the F7 key in a command window…). Some time ago, pre-.NET in fact, I was playing around with some VB/Win32 API code written by L.J. Johnson, and put together a simple app. to display (among other things) domain group membership. I’m sure I’m the last person to know this but Microsoft have a freely downloadable set of Windows XP Service Pack 2 Support Tools that includes whoami.exe that can display your SID and group membership:
C:\> whoami /USER /SID [User] = "HOMEDOMAIN\mitch" S-1-5-21-1935655697-117609710-839522115-1003 C:\> whoami /GROUPS [Group 1] = "HOMEDOMAIN \None" [Group 2] = "Everyone" [Group 3] = "HOMEDOMAIN \Debugger Users" [Group 4] = "BUILTIN\Administrators" [Group 5] = "BUILTIN\Users" [Group 6] = "NT AUTHORITY\INTERACTIVE" [Group 7] = "NT AUTHORITY\Authenticated Users" [Group 8] = "LOCAL" Saw this via Bart De Smet’s blog. Command Line Snippet (from Scott Hanselman of course!)
So I'm watching yet another great Hanselman webcast, and he casually mentions that if you hit 'F7' in a command prompt window (cmd.exe), you get a history list of all your commands...wait a minute rewind that! I knew about the history list and the up/down cursor keys (as I’m assuming everyone does right?), but ‘F7’? And what do you know, the folks responsible for PowerShell have also included it!
Troubleshooting SQL Server Locking problems
Bart Duncan has posted a really useful article showing a step by step procedure on how to troubleshoot SQL Server locking problems: Deadlock Troubleshooting, Part 1
Sunday, September 10, 2006CSS Control Adaptor Toolkit: Update Available
A recent on-going trend in web page design is for page layout to use pure CSS based layout instead of TABLE elements. [See References Zen Garden, Free CSS layouts for just a few examples.]
What are Control Adaptors? ASP.NET 2.0 has a new extensibility model built into it called Control Adapters. Control adapters allow you to plug into any ASP.NET server control through this model and override, alter or tweak how that control is rendered. The great thing about control adaptors is they do not require developers to change the way they program against existing controls or to use new controls on a page. In fact, the developer can be completely unaware that a control adaptor is being used, because the control adaptor encapsulates all the functionality required. The ASP.NET 2.0 CSS control adaptor white paper can be found here. A new Beta2 of the control adaptor toolkit is available and you can download it from here. Scott Guthrie’s original article is here: CSS Control Adapter Toolkit for ASP.NET 2.0. His update article CSS Control Adapter Toolkit Update contains a Quick Start walkthrough. Excellent stuff! .NET Exception Handling Guidelines: Catching Exceptions (part 4)
using (SqlConnection connection = new SqlConnection(connectionString)) { }
try { //...code that might throw here... } catch (CustomException ex) { // perform some specific handling here... throw; //rethrow the original exception }
The links to the previous posts on this topic are here: part 1, part 2, part 3. .NET Exception Handling Guidelines: Custom Exceptions (part 3)
[Serializable] public class CustomException : Exception, ISerializable { public CustomException(){} public CustomException(string message) { } public CustomException(string message, Exception inner) { } // This is required for serialisation protected CustomException(SerializationInfo info, StreamingContext context) { } }
Saturday, September 09, 2006.NET Exception Handling Guidelines: Throwing Exceptions (part 2)Exceptions are aptly named! Throw them in exceptional circumstances. A public method represents a contract with consumers. A method should raise an exception whenever it cannot successfully complete the task that its name implies it was designed to accomplish.
Don’t do this!: foreach (Item i in someList) { try { someOtherList.Add(i); } catch { // swallow failures, where i already exists in someOtherList... } }
part 1, part 3 and part 4 are here .NET Exception Handling GuidelinesAs a developer, some of the books I have on hand get read and re-read (partly due to low retention!). One such book is the Framework Design Guidelines by Brad Abrams and Krzysztof Cwalina; every .NET developer should have a copy of this within arms reach! After a discussion about exception handling best practices with another developer, I went back to this book for a re-read…and coincidently the same day, Scott Hanselman had made a post about the same topic. (I’m going to post this in 4 parts rather than one large post…)
Although you should not use return codes to indicate failures, you can still return status information for successful operations (such as returning the number of records inserted). part 2, part 3 and part 4 are here. Come to the Dark Side, Luke!
All you Star Wars fans may be a little disappointed by this post’s content! Jeff Attwood went there but came back. Scott Hanselman went there lured by John Lam, then Brad Wilson decided he liked it there. If you can’t beat ‘em… I’m going to try this out for a while...
Friday, September 08, 2006Friday Squid Blogging
OK, Bruce Schneier has got me at it! Every Friday for a while, Bruce has posted a tidbit about squid. Must resist….must …. resist….
Weird sex: Giant squid do it deeper "Weird" New Squid Species Discovered in Deep Sea Thursday, September 07, 2006IronPython v1.0 Released
As this happened 2 days ago now, it's probably old news! IronPython v1.0 for .NET has been released. You can download the binaries, source code, and tutorials from CodePlex here.
This latest release utilises some of the new dynamic language features added to the CLR in version 2.0 of the .NET framework. Reading List for Debugging
I discovered Tess’s blog fairly recently. She has some great material on low-level debugging and internals. Her blog led me to this blog post with an excellent reading list of books and articles on the topic of .NET debugging.
A Daily Developer Dose of Goodness
David Lemphers has had a great idea that I think we should all try to support and contribute to. It's a Wiki for developers, but not for the technical nuts-and-bolts stuff. It's for all the other stuff that developers often give little priority to (and I don't mean washing!): things like career development and life skills, people skills and presumably chatting up the opposite sex for a spot of pair programming! But seriously, I think its a great idea.
It's almost live: Daily Developers...coming soon Drop David an email and let him know you're interested. The only thing I don't like (and I realise I run the risk of being excommunicated) is that it's hosted on Sharepoint and it just doesn't look as calm and soothing as the standard Wiki look and feel. Does it have a standard Wiki skin? Wednesday, September 06, 2006Programming is knowledge work
The whole reason that the term ‘master craftsman’ exists, is to distinguish those people who take their craft beyond that of others. If everyone could build software to the same standards at the same speed, then we would all be machines!
Large projects are (and always have been) about managing large numbers of people with greatly differing skill levels, personalities and idiosyncracies. It’s unreasonable to assume that what you can achieve with a small team of highly skilled, highly self-motivated individuals can necessarily be scaled up to larger teams, even with a in-house framework of standards, guidelines, tools and best practices. Programming is knowledge work, it just doesn’t scale like manufacturing. Visual Studio Team System Videos and Webcasts
I came across a very nice collection of VSTS videos and webcasts compiled by Jeff Bramwell here.
Tuesday, September 05, 2006ASP.NET 2.0 MSDN Tutorial Series
Over at the Microsoft MSDN site there is an excellent set of ASP.NET 2.0 tutorials written by Scott Mitchell (of 4GuysFromRolla fame). These very useful and up-to-date (June 2006) tutorials walk you through creating a Data Access Layer (DAL), a Business Logic Layer (BLL), using Master pages (one of the great new features in ASP.NET 2.0) and wiring up UI elements to business objects. Each includes downloadable source code.
The series consists of: Tutorial 1: Creating a Data Access Layer Tutorial 2: Creating a Business Logic Layer Tutorial 3: Master Pages and Site Navigation Tutorial 4: Displaying Data with the ObjectDataSource Tutorial 5: Declarative Parameters Tutorial 6: Programmatically Setting the ObjectDataSource's Parameter Values Tutorial 7: Master/Detail Filtering With a DropDownList Tutorial 8: Master/Detail Filtering With Two DropDownLists Tutorial 9: Master/Detail Filtering Across Two Pages. Tutorial 10: Master/Detail Using a Selectable Master GridView with a Details DetailView Sunday, September 03, 2006.NET Framework 3.0 RC1 Available
The .NET Framework 3.0 RC1 has been released:
.NET Framework 3.0 RC1 (containing Workflow Foundation RC5) http://www.microsoft.com/downloads/details.aspx?FamilyId=19E21845-F5E3-4387-95FF-66788825C1AF&displaylang=en VS Extensions for Workflow Foundation RC5 http://www.microsoft.com/downloads/details.aspx?FamilyId=117ECFD3-98AD-4D67-87D2-E95A8407FA86&displaylang=en Windows Vista RC1 SDK (optional: provides SDK samples and help) http://www.microsoft.com/downloads/details.aspx?FamilyId=117ECFD3-98AD-4D67-87D2-E95A8407FA86&displaylang=en Keep a Decisions Document
I found this great idea while ago in Bob Walsh’s book “Micro ISV: From Vision To Reality”: keep a summary of all decisions you make in a “Decisions Document”. Bob was talking about it from the point of view of a one person start up (or micro ISV), but it can apply equally well to a software department. This should be done for each project individually as well as another document for the department as a whole.
The Decisions Document should include a short description of the decision, the reasons for making it, the date, references to any documents or research material, and where appropriate the people involved in making the decision. It allows you to re-visit decisions at a later date and re-assess whether they still apply. Design is not just about what you put into an application or product; it is also about what you decide to omit. An excellent place to keep your decisions document is in a Wiki (along with your other development artifacts). |
ContactMSN, Email: mitch døt wheat at gmail.com LinksFavorites
Blogs |