<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-3708975</id><updated>2009-09-29T03:44:00.972-06:00</updated><title type='text'>Random Madness</title><subtitle type='html'>Stray thoughts that cross my mind.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default?start-index=26&amp;max-results=25'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>151</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3708975.post-121722983448364774</id><published>2008-09-20T00:45:00.001-06:00</published><updated>2008-09-20T00:45:43.574-06:00</updated><title type='text'>Batch Processing</title><content type='html'>&lt;p&gt;Mainframes are built to move huge amounts of data around.&amp;#160; IBM did a fantastic job of building giant batch processing engines.&amp;#160; Granted there are online options, but, to be honest, their bread and butter is huge amounts of data in and out.&amp;#160; Because of that mentality, the fact that the course designers at Universities and older people in the IT field &amp;quot;growing up&amp;quot; with this technology and even the integration of the term &amp;quot;batch processing&amp;quot; into the general lexicon of life, people design systems to include batch processing. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;*WRONG*&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;OK, that may be too strong.&amp;#160; Let's say that the majority of the &amp;quot;reasons&amp;quot; for batch processing are actually replaceable with the phrase &amp;quot;because we've always done it that way&amp;quot;.&amp;#160; Batch processing, the processing of huge volumes of data in a scheduled, off prime time manner, is a relic of the mainframe and needs to be replaced with the idea of a batch of one.&amp;#160; This idea of a batch of one is not new, as I`ve even used it on the mainframe.&amp;#160; The user needed certain processing done immediately as opposed to that night and we dynamically created a job, complete with the JCL and necessary parameters, in a low priority job queue and the job was processed when the machine had spare cycles.&amp;#160; It was batch, but a batch of one. &lt;/p&gt;  &lt;p&gt;The idea is applicable in today's world.&amp;#160; When I ask people why they are creating a batch job they say something like &amp;quot;the printer is loaded with a certain paper at night so that is the only time we can do this&amp;quot;.&amp;#160; &lt;strong&gt;*WRONG*&lt;/strong&gt;&amp;#160; The processing can be done at anytime, the printing can only occur at night.&amp;#160; Instead of doing a lot of processing at night, do the processing in an asynchronous manner throughout the day and do the printing at night.&amp;#160; Split things into two pieces:&amp;#160; processing and printing.&amp;#160; They are two separate functions and do not need to be combined.&lt;/p&gt;  &lt;p&gt;Let me rephrase in a more &amp;quot;global consulting&amp;quot; manner:&amp;#160; by separating processes into their unique steps, you create more opportunities to provide value to the business client.&amp;#160; Through a selective process of decoupling the steps in a business process you provide opportunity to inject new business functionality into a more flexible framework with less rework to the existing systems. Isn't that &lt;em&gt;really&lt;/em&gt; what the business user wants?&amp;#160; More flexibility?&amp;#160; More value?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-121722983448364774?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/121722983448364774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=121722983448364774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/121722983448364774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/121722983448364774'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/09/batch-processing.html' title='Batch Processing'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-496091986341863736</id><published>2008-09-11T10:39:00.001-06:00</published><updated>2008-09-11T10:39:35.522-06:00</updated><title type='text'>Short tempered</title><content type='html'>&lt;p&gt;Some have said that my comments in the Daily Migration Note are &lt;a href="http://www.wordreference.com/definition/brusque"&gt;brusque&lt;/a&gt; or just plain old rude.&amp;#160; Others have said that I am condescending in my notes.&amp;#160; A number of years ago a project manager actually said he found me &amp;quot;&lt;em&gt;abusive and your attitude repugnant&lt;/em&gt;&amp;quot;.&amp;#160; (I always keep those good emails so that I can refer to them later.)&amp;#160; Others call me up to see if I am still sane or whether I'm going to &lt;a href="http://www.phrases.org.uk/meanings/159050.html"&gt;go postal&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I am, by my own admission, a strange duck.&amp;#160; Pressure doesn't affect me the same as other people.&amp;#160; I've been in situations where an the vast majority of an organization was sitting on their hands, waiting for me to come up with a solution. I've been the key person involved in resolving a payroll issue that affected tens of thousands of people.&amp;#160; While they are stressful situations, the pressure of the problem, the adrenaline that is produced, all blend together.&lt;/p&gt;  &lt;p&gt;And yet, some things make me react quite harshly.&amp;#160; Yes, even quite rudely.&amp;#160; Why?&lt;/p&gt;  &lt;p&gt;At a recent event there was an opportunity to evaluate myself based on a number of different characteristics.&amp;#160; Based on my answers to the questions, I was (drum roll please) &lt;strong&gt;not&lt;/strong&gt; a people person.&amp;#160; This may not be a surprise to a bunch of you, maybe all of you.&amp;#160; What the quiz showed me was something that I knew all along:&amp;#160; process and logic are the key factors when I am dealing with work.&lt;/p&gt;  &lt;p&gt;So, what does this mean?&amp;#160; Well, if things don't make sense to me I have a tendency of digging my heels in and saying &amp;quot;No&amp;quot;.&amp;#160; If there is no logical sequence of events I have a tendency of saying &amp;quot;stop&amp;quot;.&amp;#160; If people try to pressure me to do something that I think is illogical, I fight back.&lt;/p&gt;  &lt;p&gt;Do you know what actually makes sense to me?&amp;#160; Something that is a logic progression when resolving a problem?&amp;#160; A partnership.&amp;#160; Not a partnership where one or more sides pay lip service to the idea of a partnership so that they can check it off their list of marketing responsibilities (there are many such partnerships amongst major corporations that fall into this category), but a true partnership where each side is working towards a common goal and where all parties are free to bring forth ideas to the table.&amp;#160; No finger pointing.&amp;#160; No &amp;quot;&lt;a href="http://www.changingminds.org/explanations/behaviors/games/blame_game.htm"&gt;blame game&lt;/a&gt;&amp;quot; tactics.&amp;#160; &lt;/p&gt;  &lt;p&gt;I have been involved in a number of different groups that were true partnerships between two or more groups and the results are amazing.&amp;#160; With the freedom to make &lt;em&gt;any&lt;/em&gt; suggestion about &lt;em&gt;any&lt;/em&gt; topic without fear of reprisal the ideas and solutions that come out of such a group are amazing.&amp;#160; There is tremendous difficulty in this as you need to leave your ego at the door and be willing to admit you were wrong.&amp;#160; You need to understand that there is more than one way to &lt;a href="http://www.worldwidewords.org/qa/qa-mor1.htm"&gt;skin a cat&lt;/a&gt; and that yours may not be as effective.&amp;#160; And, in a true partnership, you don't try to pressure people to follow your lead or your suggestion, you true to influence them and persuade them that your way is appropriate to try.&amp;#160; As soon as you try pressuring people the partnership is gone.&amp;#160; And, in my case, I start resorting to my stock answers of &amp;quot;no&amp;quot; and &amp;quot;you must be kidding&amp;quot;.&lt;/p&gt;  &lt;p&gt;Partnerships.&amp;#160; Give them a try and you'll be amazed at what you can do.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-496091986341863736?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/496091986341863736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=496091986341863736' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/496091986341863736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/496091986341863736'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/09/short-tempered.html' title='Short tempered'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-8069322264728312752</id><published>2008-09-10T15:47:00.001-06:00</published><updated>2008-09-10T15:47:30.755-06:00</updated><title type='text'>Debugging</title><content type='html'>&lt;p&gt;Don't blame the Deployment Team if your application fails and you can't figure out why.&lt;/p&gt;  &lt;p&gt;Increasingly we have seen project teams with problems in Production (or UAT for that matter) and they are at a loss to explain what the problem is.&amp;#160; Sometimes there is a cryptic error message in one of the event logs along the lines of &amp;quot;&lt;em&gt;Object reference not set to an instance of an object&lt;/em&gt;&amp;quot;.&amp;#160; &amp;lt;sarcasm&amp;gt; Now &lt;em&gt;that&lt;/em&gt; is a descriptive error message. &amp;lt;/sarcasm&amp;gt;&lt;/p&gt;  &lt;p&gt;There are a number of things you can do to make your life easier:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The various .NET languages come with a feature called a &lt;em&gt;Try...Catch&lt;/em&gt; block.&amp;#160; Where you &lt;em&gt;try&lt;/em&gt; something and if things don't work you &lt;em&gt;catch&lt;/em&gt; the exception.&amp;#160; Amazing how that works.&amp;#160; If you haven't put &lt;em&gt;Try...Catch&lt;/em&gt; blocks in your code, particularly around any code that is calling a service outside of your control (SHR, EPS, DMS, PRS, etc.), then you score -5 points on the attention to detail rating.&lt;/li&gt;    &lt;li&gt;Did you know that &lt;em&gt;if&lt;/em&gt; you catch an exception you can add your own information?&amp;#160; Yes, if you've &lt;em&gt;caught&lt;/em&gt; something you can add information such as what you were doing when you got the exception or copies of the data used in the method so that people don't have to guess at what went wrong.&amp;#160; If you just rethrow the exception without adding any information, deduct 5 points from your &amp;quot;value added&amp;quot; score.&lt;/li&gt;    &lt;li&gt;Did you know that there is a &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.trace.aspx"&gt;Trace&lt;/a&gt; class in .NET?&amp;#160; It can do all sorts of things for you, such as allowing you to dump out detailed trace information (that is if you've written detailed trace information in your application) by changing a config file or even dynamically through code.&amp;#160; This is a very handy feature when used in combination with &lt;a href="http://www.wordspy.com/words/breadcrumbing.asp"&gt;breadcrumbing&lt;/a&gt; so that you can see the complete route that an application has taken and, if you've added it, the data used throughout the process.&amp;#160; If you've never used Trace then how do you ever expect to trace anything in Production?&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There are lots of things you can do to make your life easier when it comes to resolving problems in Production.&amp;#160; Simple things that can be useful in any environment.&amp;#160; Simple things that you should know how to use and how to use effectively.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-8069322264728312752?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/8069322264728312752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=8069322264728312752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/8069322264728312752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/8069322264728312752'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/09/debugging.html' title='Debugging'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-3911111538207797427</id><published>2008-08-22T10:08:00.001-06:00</published><updated>2008-08-22T10:08:12.500-06:00</updated><title type='text'>Introduction to an old friend</title><content type='html'>&lt;p&gt;I'd like to introduce to you, an old friend of mine.&amp;#160; The PRINT statement.&amp;#160; Granted, he's not as fancy as a GUI Debugger, nor as sexy as ANT or AVICODE, but he's still really useful.&amp;#160; Have anyone thought of adding PRINT statements to their T-SQL that they are executing?&lt;/p&gt;  &lt;p&gt;For instance you could have something like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;(14 row(s) affected)&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;(14 row(s) affected)&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Or something like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Merge Learner Script       &lt;br /&gt;(14 row(s) affected)        &lt;br /&gt;Learner Merge - From SIN : 918728130 To SIN : 665171625        &lt;br /&gt;Start date - 2008-08-22 09:30:03.120        &lt;br /&gt;Create an Activity        &lt;br /&gt;Close the Activity        &lt;br /&gt;Learner Merge - From SIN : 999014679 To SIN : 654457258        &lt;br /&gt;Start date - 2008-08-22 09:30:03.420        &lt;br /&gt;Create an Activity        &lt;br /&gt;Close the Activity        &lt;br /&gt;Learner Merge - From SIN : 999011572 To SIN : 647141506        &lt;br /&gt;Start date - 2008-08-22 09:30:03.480        &lt;br /&gt;Create an Activity        &lt;br /&gt;Close the Activity        &lt;br /&gt;Learner Merge - From SIN : 917032336 To SIN : 661696161        &lt;br /&gt;Start date - 2008-08-22 09:30:03.527        &lt;br /&gt;Create an Activity        &lt;br /&gt;Close the Activity        &lt;br /&gt;(14 row(s) affected)        &lt;br /&gt;Done at 2008-08-22 09:30:03.590&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The second version looks much better as it is clearly describing what is occurring inside the script.&amp;#160; If you are trying to find out what is going on the second one is so much better.&amp;#160; If you have an auditor on your butt, the second one is so much better.&amp;#160; &lt;/p&gt;  &lt;p&gt;Why don't more people do this?&amp;#160; Well, it takes &lt;em&gt;effort&lt;/em&gt;.&amp;#160; Typing the characters can consume multiple seconds per statement.&amp;#160; &amp;lt;sarcasm&amp;gt; I mean, over the course of a year this could add up to an hour or more of your valuable time. &amp;lt;/sarcasm&amp;gt;&lt;/p&gt;  &lt;p&gt;I'd like to thank the SFS team and Janice Pyle for the second example above that clearly shows the advantages of the lowly PRINT statement.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-3911111538207797427?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/3911111538207797427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=3911111538207797427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/3911111538207797427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/3911111538207797427'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/08/introduction-to-old-friend.html' title='Introduction to an old friend'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-1112878876082155504</id><published>2008-08-20T16:22:00.001-06:00</published><updated>2008-08-20T16:22:56.699-06:00</updated><title type='text'>Using a hammer</title><content type='html'>&lt;p&gt;Have you ever seen &lt;a href="http://www.discoverychannel.ca/content/?pid=8343"&gt;Canada's Worst Handyman&lt;/a&gt;?&amp;#160; I must admit that I am all thumbs, but, even so, I'm better than these guys.&amp;#160; There are lots of things to look at in this show because so many of the items can be translated into almost any occupation, including the IT field.&amp;#160; One of my favorite things is watching the people, when confronted with a screw, pick up their hammer.&amp;#160; Or using any one of a dozen other tools in the wrong way.&lt;/p&gt;  &lt;p&gt;IT people have the same tendency.&amp;#160; We have a problem.&amp;#160; We have a tool.&amp;#160; We try to solve the problem with the tool, regardless of whether or not it is the right tool for the job.&amp;#160; Sometimes you have no tool, just a problem, and in that case &lt;em&gt;almost&lt;/em&gt; any help is worth the effort.&amp;#160; Well, maybe not.&amp;#160; Sometimes the effort that the tool saves is totally outweighed by the costs associated with using the tool.&amp;#160; Much like a carpenter that has a plethora of tools to help him do his job, IT people have a variety of tools to help them as well.&amp;#160; Our problem is that there is no simple guide saying &amp;quot;for this problem use this tool and for this problem use this tool&amp;quot;.&lt;/p&gt;  &lt;p&gt;That's not to say that if we had such a guide people would actually use it.&amp;#160; I mean, look at Canada's Worst Handyman, they were taught certain things and still ignored what was taught.&amp;#160; I have no fear that even if we told people to do X they would still end up doing Y.&lt;/p&gt;  &lt;p&gt;I'm not restricting myself to just tools, but methodologies as well.&amp;#160; Some people grab on to a methodology and use it like a life preserver.&amp;#160; Not necessarily a wise thing.&amp;#160; An all or nothing approach is inevitably a bad thing.&amp;#160; Even the Agile Methodology that people either hate or love (there we go with extremes again) understands this.&amp;#160; One of it's principles is:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&lt;/em&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Essentially, you evaluate what you are doing and adjust if necessary.&amp;#160; I guess my biggest fear is the life preserver mentality for methodologies.&amp;#160; A methodology is a tool and proper use of the tool depends upon proper understanding of the problem.&amp;#160; We sometimes adopt methodologies because they are &amp;quot;cool&amp;quot; or have the &amp;quot;agile&amp;quot; word somewhere in the title.&amp;#160; We don't always understand the problems that we are trying to solve with the methodology and are just so thrilled with using a new tool that we overlook some of the challenges that we have with the tool.&lt;/p&gt;  &lt;p&gt;Don't get me wrong, I love new tools, but how many times have you ever used a new tool incorrectly the first time.&amp;#160; If you are going to make a big leap to a new methodology/tool, make sure that you've tested it first and that it actually solves the problems that you need solved.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-1112878876082155504?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/1112878876082155504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=1112878876082155504' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/1112878876082155504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/1112878876082155504'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/08/using-hammer.html' title='Using a hammer'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-489617286773567191</id><published>2008-08-20T07:09:00.001-06:00</published><updated>2008-08-20T07:09:32.501-06:00</updated><title type='text'>Quality vs. Speed -- The Agile Way</title><content type='html'>&lt;p&gt;There has always been a debate over producing a quality application versus an application that is delivered on time.&amp;#160; Indeed, even within the quality camp there are divisions over what exactly constitutes quality.&amp;#160; There have been efforts in the past to merge quality and speed of delivery so that you can get a high quality application in as short a period of time as possible.&amp;#160; The Agile methodology tries to merge these two, to mixed results.&lt;/p&gt;  &lt;p&gt;Why mixed results?&amp;#160; Like everything else in life, more than just &lt;em&gt;how&lt;/em&gt; you do something determines the end result.&amp;#160; In the case of the Agile methodology (or should I say methodologie&lt;strong&gt;&lt;u&gt;&lt;em&gt;s&lt;/em&gt;&lt;/u&gt;&lt;/strong&gt;) there is more than one way to skin a cat.&amp;#160; The Agile methodology is so different from what people were taught in school that there are three large stumbling blocks that need to be overcome in order for Agile to be truly effective.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Organization.&amp;#160; There are forces at work in an organization to keep things moving forward.&amp;#160; Plans need to be made, followed and tracked.&amp;#160; The agile methodologies have the idea that &amp;quot;&lt;em&gt;responding to change over following a plan&lt;/em&gt;&amp;quot; is a better way to develop software.&amp;#160; And, while I personally believe this, organizations tend to want plans.&lt;/li&gt;    &lt;li&gt;Team. While Agile has come up with some basic philosophies behind how to develop software, the larger the team the more unlikely it is that these philosophies will be effective due to outside pressures: when is going to be done? It is difficult for project managers as they are measured on &lt;em&gt;progress&lt;/em&gt;.&amp;#160; Agile, because of its fundamental desire to respond to change, is havoc on plans, at least traditional &amp;quot;&lt;em&gt;we will have this functionality delivered by that date&lt;/em&gt;&amp;quot; type of plan.&lt;/li&gt;    &lt;li&gt;Individuals. Everyone comes to a project with baggage:&amp;#160; their old projects and the &amp;quot;&lt;em&gt;we did things this way&lt;/em&gt;&amp;quot; ideas.&amp;#160; Getting everyone on the same page, following the same ideas and concepts is very difficult.&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This is not to say that Agile will not work and that you will produce a quality application in less time.&amp;#160; The problem lies in being able to &lt;em&gt;show&lt;/em&gt; somebody that this will happen.&amp;#160; Without a proven track record it is hard to show people that it will work, but you need that acceptance so that you can build that track record.&amp;#160; And without the right people in the right places, Agile is never going to fully accepted, fully understood or fully implemented.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-489617286773567191?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/489617286773567191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=489617286773567191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/489617286773567191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/489617286773567191'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/08/quality-vs-speed-agile-way.html' title='Quality vs. Speed -- The Agile Way'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-6300004249191904049</id><published>2008-08-15T13:02:00.001-06:00</published><updated>2008-08-15T13:02:34.332-06:00</updated><title type='text'>Results vs. Methodology</title><content type='html'>&lt;p&gt;Sometimes it is a story that strikes a chord and makes me write one of these notes.&amp;#160; Sometimes it is an ad on tv.&amp;#160; In this case it is a newsletter from Bruce Schneier, the Chief Security Technology Officer of BT.&amp;#160; He said, that governments should:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;...legislate results and not methodologies.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;That immediately showed up on my internal radar screen.&amp;#160; While his examples were with regard to things like legislating securing personal data, but not legislating which technologies to use.&amp;#160; Using my own quirky logic I equated this to:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;...contract for the end result of the project, not how the project is going to get there ...&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;When a company puts out an RFP for a piece of work, they routinely say that the winner must &amp;quot;&lt;em&gt;... follow all standards and processes currently in place or that may be put in place during the course of the project...&lt;/em&gt;&amp;quot;.&amp;#160; We've all seen these as they are not specific to government.&amp;#160; But is it the right thing to do?&amp;#160; Let me go out on a limb and say &amp;quot;no&amp;quot;.&lt;/p&gt;  &lt;p&gt;In the long run, does it matter if the project team has detailed requirements tracing from the initial conceptual design stage straight through to production?&amp;#160; If you had two projects that delivered the same end result, does it really matter which route they took to get there?&amp;#160; If there are certain deliverables that you want then specify those deliverables in the contract.&amp;#160; Don't specify how you want them created, just that you want them created.&lt;/p&gt;  &lt;p&gt;Coming from a programmer background and having been introduced to one of the most document oriented methodologies in existence - Method/1 - I've seen both sides of the coin.&amp;#160; Method/1 was created, to be honest, to minimize liability should the client ever decide to sue.&amp;#160; Dozens, hundreds, thousands of documents are routinely created so that an audit trail could be created in the event that a law suit was launched.&amp;#160; Method/1 was created by auditors, for software development, to be used in the event of a law suit.&amp;#160; Not exactly a glowing endorsement of a methodology.&lt;/p&gt;  &lt;p&gt;Other methodologies are created for other purposes, but what it really comes down to is results.&amp;#160; You have certain expectation of results.&amp;#160; And whether the application was written people in blue suits with a document laden process or by a long haired geek who wrote it between episodes of &lt;a href="http://deathnote.viz.com/"&gt;Death Note&lt;/a&gt;, it shouldn't really matter, as long as the results required are achieved.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-6300004249191904049?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/6300004249191904049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=6300004249191904049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/6300004249191904049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/6300004249191904049'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/08/results-vs-methodology.html' title='Results vs. Methodology'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-3490195711243033296</id><published>2008-08-14T06:47:00.001-06:00</published><updated>2008-08-14T06:47:48.027-06:00</updated><title type='text'>Your Environment is Wrong</title><content type='html'>&lt;p&gt;&amp;quot;&lt;em&gt;But, it works when I do it, so your environment must be wrong.&lt;/em&gt;&amp;quot;&lt;/p&gt;  &lt;p&gt;When I first heard that comment I took it seriously.&amp;#160; What could be wrong with our environment?&amp;#160; Why couldn't we install the application?&amp;#160; &lt;/p&gt;  &lt;p&gt;Not &lt;em&gt;different&lt;/em&gt;, because our UAT and Production environments &lt;em&gt;are&lt;/em&gt; different than the development environments for a lot of reasons, but &lt;em&gt;wrong&lt;/em&gt;.&amp;#160; I searched for something wrong.&amp;#160; Occasionally, I did find something wrong, but as we put more and more applications on to our UAT and Production boxes the number of things that were &lt;em&gt;wrong&lt;/em&gt; obviously diminished to the point where their is not a whole heck of a lot that can be &lt;em&gt;wrong&lt;/em&gt;.&amp;#160; The differences, however, are still there.&amp;#160; Differences that may prevent the application from installing or working correctly.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;clustered environment - we operate in a clustered environment, so never, ever think that this is the only application that is being installed on this server and never, ever think that it is the only instance of your application which is running&lt;/li&gt;    &lt;li&gt;not a clean environment - the odds are that we've installed your application before - sometimes once or twice before and in some cases a hundred times before - never assume that the environment is &amp;quot;clean&amp;quot; because the odds are that there are remnants of other installs of yours left around&lt;/li&gt;    &lt;li&gt;multiple installs - never assume that just because there is some manual configuration at the end that needs to be done that it is &amp;quot;no big deal&amp;quot; because in our UAT and Production environments we need to do the installs multiple times so that &lt;em&gt;any&lt;/em&gt; manual configuration that needs to be done will be done multiple times, giving us plenty of opportunity to make a mistake&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;quot;Mistakes&amp;quot;?&amp;#160; Yes, we sometimes make mistakes when manually configuring an application.&amp;#160; Considering that in the UAT and Production environments we are going to be installing and manually configuring your application seven times or more, once we add more servers, this gives us seven chances to make a mistake.&amp;#160; Combine this with multiple releases to UAT and you've got a wonderful opportunity to introduce an unexpected bug, with the most likely problem being that the manual configuration was not saved on a specific machine.&amp;#160; Have the application self-configure itself where possible: prompt for data and complete the installation itself.&lt;/p&gt;  &lt;p&gt;Oh, I forgot, you're only going to UAT and Production once, right?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-3490195711243033296?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/3490195711243033296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=3490195711243033296' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/3490195711243033296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/3490195711243033296'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/08/your-environment-is-wrong.html' title='Your Environment is Wrong'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-8202209705084069983</id><published>2008-08-10T23:25:00.001-06:00</published><updated>2008-08-10T23:25:47.637-06:00</updated><title type='text'>More examples</title><content type='html'>&lt;p&gt;Going on vacation seems to give me plenty of ammunition for these notes.&amp;#160; The following example of what &lt;em&gt;not&lt;/em&gt; to do is based on a conversation with the Day Manager at the Sandman Inn in Calgary West.&lt;/p&gt;  &lt;p&gt;My wife and I needed to go to Calgary to drop our kids off with her sister.&amp;#160; They were going to horse riding camp for the week and we thought we'd start it off early by going to a hotel when we got there instead of sleeping at sister's place.&amp;#160; On the Friday before we went we reserved a room at the Calgary West Sandman Inn through the Sandman &lt;a href="http://www.sandman.ca"&gt;web site&lt;/a&gt;.&amp;#160; We got a room with a King sized bed and, most importantly, a confirmation number.&lt;/p&gt;  &lt;p&gt;When we got to the inn on Saturday, however, we were surprised because they did not have the room that we reserved.&amp;#160; They had a room in the same &amp;quot;class&amp;quot;, but they did not have any rooms with King sized beds.&amp;#160; I was a little surprised because I thought a confirmation from the hotel chain &lt;em&gt;guaranteed&lt;/em&gt; the room was available.&amp;#160; I was told by the clerk at the front desk that the Sandman web site and the computer system at the hotel &lt;em&gt;do not talk to each other&lt;/em&gt;.&amp;#160; And that they had been trying &lt;em&gt;all day&lt;/em&gt; to get hold of someone to have the web site stop booking rooms.&lt;/p&gt;  &lt;p&gt;I was, quite frankly, amazed at this revelation.&amp;#160; Imagine building a reservation system for a hotel chain, but not hooking it into the hotels reservation system!&amp;#160; So what did I do?&amp;#160; Well, there was nothing to do about the room as there were supposedly no other rooms in the hotel.&amp;#160; (They did give me a $3.00 discount for my inconvenience.&amp;#160; The pop in the pop machine was $2.50)&amp;#160; When I got to the room I immediately hooked up to their Internet connection and went to the Sandman web site and filled out a form with a complaint.&lt;/p&gt;  &lt;p&gt;After waiting 5 days for a response I called the 1-800 number for reservations.&amp;#160; I got the Manager of Reservations and she was going to call the Calgary West Sandman to see what the scoop was.&amp;#160; Three days later I got a call from the Day Manager.&amp;#160; She confirmed that the systems do not talk to each other and that in order to get the web site to stop reserving rooms the &lt;em&gt;general manager&lt;/em&gt; has to fill out a &lt;em&gt;form&lt;/em&gt; and send it in.&amp;#160; (He only works 9 - 5 on weekdays, so if something needs to be done outside of this timeframe, oh well.)&amp;#160; By the way, the 1-800 line uses the same system the web site does, so that does not guarantee you the room either.&amp;#160; You need to talk to the hotel itself.&amp;#160; Same thing is to be said with regard to Expedia or Travelocity.&lt;/p&gt;  &lt;p&gt;So what do we have?&amp;#160; A hotel chain with thirty five properties that reserves rooms without actually knowing whether or not the room is available and a form based system that is required to be filled out to stop selling rooms.&amp;#160; Does anyone see a problem here?&amp;#160; As I escalate this problem up the Sandman management tree I'll let you know if this is going to be changed.&amp;#160; If not, unless you call the hotel directly, don't bother reserving a room with Sandman.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-8202209705084069983?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/8202209705084069983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=8202209705084069983' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/8202209705084069983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/8202209705084069983'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/08/more-examples.html' title='More examples'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-1387255097300850109</id><published>2008-07-29T07:08:00.001-06:00</published><updated>2008-07-29T07:08:01.659-06:00</updated><title type='text'>Planning, ad nauseum</title><content type='html'>&lt;p&gt;OK, I've talked about planning in the past and I'm going to mention it again, but from a different perspective.&amp;#160; There are many different types of planning for many different types of people:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Programmers. &lt;/strong&gt;These people need to know what they are doing now and for the rest of the week.&amp;#160; To be honest, while they might like to know what they are doing next week, as long as they are confident that their boss knows, that is probably good enough.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Team Leads&lt;/strong&gt;.&amp;#160; With programmers reporting to them they need to have a much better grasp of what is currently going on and what is coming up.&amp;#160; A week isn't good enough.&amp;#160; A month may not be good enough depending on the project, so let's say that these people need 6 weeks of planning under their belt.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Project Managers.&lt;/strong&gt;&amp;#160; Ah, the brains behind the project.&amp;#160; For any particular project that&amp;#160; they are working on, they need to have a good idea of staffing requirements from beginning to end.&amp;#160; Yes, they need to know staffing for the entire project, because if they are short, it is their responsibility to get staff.&amp;#160; If they are going to be over staffed then it is their responsibility to see what other projects need help.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Program Managers.&lt;/strong&gt;&amp;#160; These people are responsible for the smooth execution of multiple projects within an overall program.&amp;#160; For example, you may have a Program that is composed of a lot of smaller initiatives, all of which are leading to a single vision, much like PASI.&amp;#160; Program Managers need to understand the interrelationship between the different projects and how they impact other projects and the program as a whole.&amp;#160; This sort of planning stretches into the years.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Organization.&lt;/strong&gt;&amp;#160; Different organizations use different benchmarks, but it is considered a good idea if an organization can tell you what they are going to be doing for the next three calendar years.&amp;#160; This will not be to a great deal of accuracy three years down the road, but the overall plan of the organization, the inter-relationships between ongoing programs and the intended implementation date of various projects should be at least plotted out so that both clients and staff have an idea as to what is currently happening and what the short and longer term goals are.&lt;/p&gt;  &lt;p&gt;As you can see, the level of detail goes from the microscopic, tactical information needed for day to day activities to the macroscopic, strategic information needed for long range plans.&amp;#160; Virtually everyone in an organization needs a different level of planning with a different focus, depending upon the roles that they are currently occupying.&amp;#160; The key to all of this, though, is that there needs to be someplace where all of this information can be stored.&amp;#160; Some place where the microscopic and macroscopic views can both find a home.&amp;#160; A place to go when information is needed and a place to go when you have new information.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-1387255097300850109?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/1387255097300850109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=1387255097300850109' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/1387255097300850109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/1387255097300850109'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/07/planning-ad-nauseum.html' title='Planning, ad nauseum'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-787940923774724029</id><published>2008-07-24T06:54:00.001-06:00</published><updated>2008-07-24T06:54:47.995-06:00</updated><title type='text'>Peer Review</title><content type='html'>&lt;p&gt;Why are some people against having their work reviewed by their peers?&lt;/p&gt;  &lt;p&gt;Commonly called a &amp;quot;peer review&amp;quot; in academia, the concept revolves around letting other people knowledge in the same field comment on your paper (design, theory or observation) prior to &amp;quot;publishing&amp;quot; it.&amp;#160; Specifically to the IT world a peer review is when a design is reviewed by knowledgeable people in an effort to determine any flaws in the design.&amp;#160; I will grant you that these reviews can be brutal on the ego, but aren't they the right thing to do anyway?&lt;/p&gt;  &lt;p&gt;One of our primary objectives in our job should be to produce quality work.&amp;#160; Now, the exact measurements behind defining quality are highly contentious, but in general, the idea is to produce something that accomplishes the objective and does it as efficiently as possible.&amp;#160; One of the keys to creating a quality product is having a good design, one that is as simple as possible yet still satisfies all of the objectives and goals.&lt;/p&gt;  &lt;p&gt;A good design.&amp;#160; How do you know if a design is good?&amp;#160; Well, one of the ways that the rest of the world&amp;#160; does it is through design reviews or peer reviews.&amp;#160; When a design has been completed it goes to someone else knowledgeable about the requirements so that they cam see if the design does indeed meet those requirements and does it in an efficient manner.&amp;#160; Seems pretty simple doesn't it?&amp;#160; So why don't we do it more often?&lt;/p&gt;  &lt;p&gt;The Enterprise Architecture Working Group (EAWG) did this, &lt;em&gt;to a very limited extent&lt;/em&gt;, when they reviewed the application architecture on various projects, but the problem was that at 50,000 feet everything looks blurry.&amp;#160; As a friend of mine used to say &amp;quot;&lt;em&gt;Good from far, but far from good&lt;/em&gt;&amp;quot;.&amp;#160; Understanding how someone is going to piece things together is important, but the details, the microscopic manipulations that occur on an individual program level are completely oblivious to everyone except for the designer and programmer.&lt;/p&gt;  &lt;p&gt;Every critical piece should be peer reviewed to ensure that it is designed properly.&amp;#160; This means that if you are writing something that manipulates funds it &lt;em&gt;needs&lt;/em&gt; to be peer reviewed.&amp;#160; If you are writing a mission critical import/export/reporting piece, it&lt;em&gt; needs&lt;/em&gt; to be peer reviewed.&amp;#160; If you are writing a security component, it &lt;em&gt;needs&lt;/em&gt; to be peer reviewed.&lt;/p&gt;  &lt;p&gt;If it's never bee peer reviewed, never had an objective review of it's design, how are you every going to know if you designed something properly?&amp;#160; Is it fear that is stopping you?&amp;#160; Fear of people pointing out mistakes?&amp;#160; Or is it &lt;a href="http://en.wikipedia.org/wiki/Narcissism"&gt;narcissistic&lt;/a&gt; in nature?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-787940923774724029?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/787940923774724029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=787940923774724029' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/787940923774724029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/787940923774724029'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/07/peer-review.html' title='Peer Review'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-4905571333657857580</id><published>2008-07-10T14:13:00.001-06:00</published><updated>2008-07-10T14:13:39.773-06:00</updated><title type='text'>GUIDS and Clustered Indexes</title><content type='html'>&lt;p&gt;GUIDS should never ever be used as a clustered index.&lt;/p&gt;  &lt;p&gt;Wrong.&amp;#160; GUIDS can be used as a clustered index if they are not an MBUN: meaningless but unique number&amp;#160; I've talked about this before, but it seems to be difficult for people to understand so I'm going to take this slowly and give some examples.&amp;#160; For these examples, let's assume that you are running an online bookstore.&lt;/p&gt;  &lt;p&gt;Naturally you want to keep track of orders and you have a table in SQL Server that does just this.&amp;#160; For each order you assign a GUID.&amp;#160; Should you cluster on this GUID?&amp;#160; Probably not and the reason is that the GUID, in this table, is meaningless.&amp;#160; It has no context with any other data and as a result it is truly an MBUN.&amp;#160; Indeed, you would probably want to sort on the customer number instead as you are more likely to retrieve all of a customers orders than you are sequential GUIDs.&lt;/p&gt;  &lt;p&gt;Hmmmm.&amp;#160; We're keeping track of orders, but not the items on the orders.&amp;#160; Let's have an OrderItem table.&amp;#160; In order to connect the rows in the OrderItem table with the Order table we would probably link them via the GUID that you assigned to the Order itself.&amp;#160; To show the individual items within the order we would need to create another column, let's call it an ItemNumber.&amp;#160; This could be a GUID, but it makes more sense just to make it an integer.&amp;#160; For this table the clustered index should be the Order GUID &lt;strong&gt;and&lt;/strong&gt; the ItemNumber.&lt;/p&gt;  &lt;p&gt;Why?&amp;#160; Well,. when we create a clustered index we are telling the database that we want records that appear next to each other in the index to actually be stored next to each on the disk.&amp;#160; In the first example, using the GUID made no sense as there was no reason for the records to appear next to each other.&amp;#160; In the second example it makes perfect sense to use the GUID because we want all of the items for an order to appear next to each other on the disk.&amp;#160; This speeds up the retrieval of data and makes more effective use of memory.&amp;#160; In the second case the GUID is no longer an MBUN as it actually has meaning: it is the order number that we are tracking.&lt;/p&gt;  &lt;p&gt;So you see, if the GUID has meaning it can be part of the clustered index.&amp;#160; If the GUID has no meaning, don't put it in the clustered index.&amp;#160; Any questions?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-4905571333657857580?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/4905571333657857580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=4905571333657857580' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/4905571333657857580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/4905571333657857580'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/07/guids-and-clustered-indexes.html' title='GUIDS and Clustered Indexes'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-1357024501412880693</id><published>2008-07-08T16:30:00.001-06:00</published><updated>2008-07-08T16:30:22.412-06:00</updated><title type='text'>Database Design</title><content type='html'>&lt;p&gt;How much time do you spend designing your database?&amp;#160; Twenty percent of your overall design time?&amp;#160; Ten percent?&amp;#160; Five percent?&amp;#160; Two percent?&amp;#160; Design?&lt;/p&gt;  &lt;p&gt;Well, the magic number should be 15%, or thereabouts, and can be determined by the juxtaposition of the solar days as they are related to the cardinality of the days of the week, the overage as attributed to project management style and the variability imposed by Pantone colours as they are blended on a surreal palette of olives and daisies.&amp;#160; Just kidding, there is no magic number.&lt;/p&gt;  &lt;p&gt;Good database developers require less time to develop a well structured and functional database.&amp;#160; A smaller application with a more focused purpose requires less time as do re-writes of existing systems and applications for which there is a wealth of knowledge available.&amp;#160; Conversely, applications that are new to the organization, new to the designers or are complex in nature require considerably more time in the design phase.&lt;/p&gt;  &lt;p&gt;Database design, contrary to what many people believe (and contrary to what I've seen implemented) is a complex task.&amp;#160; Understanding the data access paths that the application takes, the appropriate indices to create and how to optimize that access is difficult for anything more complex than a simple inventory system.&amp;#160; Why?&amp;#160; Well, if you have a column that contains two values &amp;quot;YES&amp;quot; and &amp;quot;NO&amp;quot;, with approximately 100 &amp;quot;NO&amp;quot; for every &amp;quot;YES&amp;quot;,&amp;#160; and you create an index on that column, will SQL Server use it?&amp;#160; That depends on how many rows are in the table.&amp;#160; SQL Server will make the determination, at some point, that the index in its current form is useless.&amp;#160; How about if the column contains four values, will that help?&amp;#160; It will delay the inevitable, but regardless, SQL Server will, at some point, say &amp;quot;To heck with it&amp;quot; and not use the index.&amp;#160; The cardinality of the columns in an index is as important as the index itself, yet very few people understand this rule and as a result, indexes are created that may work well today or tomorrow or even for months.&amp;#160; One day, however, the house of cards will collapse.&lt;/p&gt;  &lt;p&gt;Take some extra time and work on the design up front and I'm sure you'll be pleasantly surprised by how little pain you feel when it goes in.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-1357024501412880693?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/1357024501412880693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=1357024501412880693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/1357024501412880693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/1357024501412880693'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/07/database-design.html' title='Database Design'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-8776089934241075696</id><published>2008-06-25T15:13:00.001-06:00</published><updated>2008-06-25T15:13:33.640-06:00</updated><title type='text'>Interrupted ... Again</title><content type='html'>&lt;p&gt;OK, now that you've taken a look at your own life, realized that you are totally unproductive due to interruptions, what can you do to become productive again?&lt;/p&gt;  &lt;p&gt;Work at home, or at least, away from the office..&amp;#160; Seriously.&amp;#160; Talk to your boss and see if there is a way for you to spend every second Monday/Tuesday/etc. at home to do your work.&amp;#160; For some of you this isn't going to work due to the work that you do.&amp;#160; For others, those that producing tomes, need some time to plan the next great project or even, goodness gracious, catch up on that documentation you forgot to do - six months ago - spending some solid time working on these items can be a tremendous benefit.&amp;#160; Now, you don't necessarily have to be at home.&amp;#160; Some people find that working at home is not as rewarding as it could be due to hundreds of other distractions.&amp;#160; An alternative location is the key.&amp;#160; Whether this means you book a meeting room for all day, find an abandoned office that no one is using or even use the desk/office of someone who is on vacation, getting away from your desk, the spot where people find you, is key.&lt;/p&gt;  &lt;p&gt;Another step?&amp;#160; Flush your Crackberry down the toilet.&amp;#160; Figuratively.&amp;#160; Unclip it from your belt and put it in your briefcase/deskl/backpack and bring it out every hour and see what you missed.&amp;#160; The constant buzzing of new messages, the incessant weight just totally p***** me off sometimes and I need to just get away from it.&amp;#160; Why check every hour?&amp;#160; Well, research has shown that people work most effectively if they take a five minute break every hour.&amp;#160; Go to the bathroom, get something to drink, check your voicemail, etc.&amp;#160; Just remember that this is a five minute break and not the start of five minutes of &lt;em&gt;different&lt;/em&gt; work.&lt;/p&gt;  &lt;p&gt;Turn off email notification (thanks Garth).&amp;#160; You know that little window that comes up and says &amp;quot;You've got new mail and here is the subject line and who it is from...&amp;quot;&amp;#160; Turn that off or even shutdown Outlook when you don't need it.&amp;#160; Just remember the five minute rule once an away.&lt;/p&gt;  &lt;p&gt;Take a look at sites like &lt;a href="http://lifehacker.com/"&gt;Lifehacker&lt;/a&gt; (Tech tricks, tips and downloads for getting things done).&amp;#160; (On your spare time, of course)&amp;#160; This site contains some useful and some useless tips on how to keep organized and get your life back together.&lt;/p&gt;  &lt;p&gt;Unfortunately, for some of the people reading this note none of the solutions are going to work.&amp;#160; You know who you are:&amp;#160; support personnel.&amp;#160; Those people who support other people and who, quite frankly, need to be in constant touch because their clients need help.&amp;#160; An email about the best way to re-engineer a COM+ application can be done later.&amp;#160; An email about a crashed system needs to be handled &lt;strong&gt;&lt;em&gt;NOW&lt;/em&gt;&lt;/strong&gt;.&amp;#160; So, while many of you can take advantage of these and other tips, others ... oops, have to go, later.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-8776089934241075696?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/8776089934241075696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=8776089934241075696' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/8776089934241075696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/8776089934241075696'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/06/interrupted-again.html' title='Interrupted ... Again'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-8705037201681089901</id><published>2008-06-19T13:51:00.001-06:00</published><updated>2008-06-19T13:51:40.777-06:00</updated><title type='text'>Environment Building on ten cents a day ....</title><content type='html'>&lt;p&gt;I have been giving project team members a hard time about advance notice.&amp;#160; You know what I mean, giving the Deployment Team more than 15 minutes notice that they need a deployment done.&amp;#160; Well, I'm not going to bug developers in this note, I'm heading higher up the &lt;a href="http://www.developer.com/img/articles/2005/06/09/Fullorgchart.gif"&gt;food chain&lt;/a&gt; for the project managers.&lt;/p&gt;  &lt;p&gt;I've talked about how we are short on space and short on power.&amp;#160; Apparently many project managers (and I am talking about a good dozen or more at the moment) think that these facts don't apply to them because they are &lt;em&gt;special.&lt;/em&gt;&amp;#160; You know what?&amp;#160; &lt;em&gt;Everyone&lt;/em&gt; is special.&amp;#160; When there are so many &lt;em&gt;special&lt;/em&gt; projects, the &lt;a href="http://wordnet.princeton.edu/perl/webwn?s=appellation"&gt;appellation&lt;/a&gt; is meaningless.&amp;#160; So, let's talk &lt;a href="http://www.thejump.net/turkeyhunting/sounds/gobble.wav"&gt;turkey&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;I want a performance test environment, and I need it next Monday&lt;/em&gt;.&amp;#160; OK, to be honest I haven't heard this .. too often.&amp;#160; Most projects give us a lot more warning, although sometimes there is not a lot I can do for them.&amp;#160; (Did you miss my notes on &lt;a href="http://randommadness.blogspot.com/2008/06/no-space-at-inn.html"&gt;not having space&lt;/a&gt; and being &lt;a href="http://randommadness.blogspot.com/2008/06/loss-of-power.html"&gt;electrically challenged&lt;/a&gt;?)&amp;#160; Let's take a look at a typical application and see what a performance test environment entails.&amp;#160; A smallish application that access Stakeholder Registry.&lt;/p&gt;  &lt;p&gt;So, what do we need for this performance test environment?&amp;#160; Well, we could go with clustered web servers, but let's give ourselves some leeway and just pick one.&amp;#160; We then need a SQL Server box for SHR and a SQL Server box for the application database.&amp;#160; Wait, in Production these are SAN attached, should we duplicate that?&amp;#160; Well, that would mean buying another SAN and the storage and configuring it, etc., so for the purposes of our example let's not go there.&amp;#160; Oh, wait, in order for this to be even remotely representative we need to emulate the existing servers, not buy new ones.&amp;#160; So now we need Dell 6850s, but they're not made anymore.&amp;#160; Have no fear, &lt;a href="http://search.ebay.ca/search/search.dll?from=R40&amp;amp;_trksid=m37&amp;amp;satitle=dell+6850&amp;amp;category0="&gt;eBay&lt;/a&gt; is here!!&amp;#160; Oh, darn, that reminds me, we need to get an Dell 1850 for the web server.&amp;#160; I hope we haven't gotten rid of all of them yet.&amp;#160; &lt;/p&gt;  &lt;p&gt;OK, we done yet?&amp;#160; No?&amp;#160; What else do we need?&amp;#160; Well, if we are using SHR we need to hook in ISM, which requires another license for &lt;a href="http://www.identitysystems.com/is_ssa.html"&gt;SSA-NAME3&lt;/a&gt; as well as a Dell 2650.&amp;#160; (Remember eBay?&amp;#160; It's your friend.)&amp;#160; Here is an interesting fact for you:&amp;#160; If you restore the SHR database, you need to rebuild the database that SSA uses for searching.&amp;#160; This probably isn't more than a six hour job these days, but it might be longer.&amp;#160; I guess this means that if you run a test at 9:00 AM in the morning we might be able to rebuild everything for a 3:30 PM test.&lt;/p&gt;  &lt;p&gt;I'm pretty sure that you're not going to be using the stopwatch facility on your Timex watch to record everything, so that means we need some tools for testing and recording.&amp;#160; Let's assume that we have these, but the tools we might need are Intercept Studio licenses (aka Avicode) to pinpoint some performance issues for us.&amp;#160; These are not necessary, but they have proven themselves to be quite valuable in the past.&lt;/p&gt;  &lt;p&gt;There are some other infrastructure things like backup tapes, disk space for intermediate backups&lt;/p&gt;  &lt;p&gt;So what do we have?&amp;#160; Four computers that need to be purchased, refurbished and installed in a computer room where we are already short on space and power.&amp;#160; Additional licenses for software we don't have.&amp;#160; A lot of effort on part of a lot of different people just to get things in place.&amp;#160; Just think what would happen if we needed PRS (Oracle server and license) or perhaps CGES (two servers and SharePoint) or, heaven forbid, all of those, &lt;em&gt;plus more&lt;/em&gt;!!!!&lt;/p&gt;  &lt;p&gt;Or, *shudder*, you have multiple projects coming to you at the same time with the identical requirements.&amp;#160; Welcome to my world.&lt;/p&gt;  &lt;p&gt;Setting up a performance testing environment is very expensive in terms of hardware, software and sheer manpower needed to set it up and keep it running.&amp;#160; The question is, what are your really trying to test?&lt;/p&gt;  &lt;p&gt;Don't get me wrong, I like the fact that you &lt;em&gt;want&lt;/em&gt; to performance test.&amp;#160; I guess what we really need to understand is &lt;em&gt;what&lt;/em&gt; you are trying to test.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-8705037201681089901?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/8705037201681089901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=8705037201681089901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/8705037201681089901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/8705037201681089901'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/06/environment-building-on-ten-cents-day.html' title='Environment Building on ten cents a day ....'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-1421637188287799840</id><published>2008-06-19T06:53:00.001-06:00</published><updated>2008-06-19T06:53:38.661-06:00</updated><title type='text'>Loss of Power</title><content type='html'>&lt;p&gt;Electricity.&amp;#160; It lights our houses, cooks our food and allows us to watch and listen to events that occur half way around the globe.&amp;#160; It powers our watches and allows us to pick up a phone and call someone a thousand miles away.&amp;#160; It powers our lives.&lt;/p&gt;  &lt;p&gt;It powers our computers.&lt;/p&gt;  &lt;p&gt;The idea was that computers would become smaller, cheaper, more efficient at doing work for us.&amp;#160; Guess what?&amp;#160; In order to do this they consume more power.&amp;#160; The average Dell &amp;quot;high end&amp;quot; server is smaller, faster, more capable of doing fantastic things, but it also consumes about 20% more energy than its predecessor.&amp;#160; Unlike everything else that becomes smaller, faster, better, the power consumption of computers has gone up. People have always expected a higher density for server rooms (more computers in the same space) and server rooms that are constantly growing in size, but for the same number of computers to chew up more power?&amp;#160; In many respects that slipped by peoples radar.&lt;/p&gt;  &lt;p&gt;Server rooms have always been built with some excess capacity and ours is no problem.&amp;#160; Indeed, if our server racks were filled to the brim with hardware from three years ago, I think we wouldn't be having this conversation.&amp;#160; But, power requirements for an individual server have gone up and as a result our ability to add more hardware is limited by the capacity of our server room.&amp;#160; We're short on capacity.&amp;#160; Indeed, I don't think we can add all of the new hardware we have without seriously overloading every circuit we have.&amp;#160; &lt;/p&gt;  &lt;p&gt;Let's look at some examples and cry:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Example 1:&amp;#160; a Dell 2650 consumes 357 watts while a Dell 2850 consumes 524 watts.&amp;#160; That is almost a 50% increase, even though the amount of space consumed is the same.&amp;#160; &lt;/p&gt;    &lt;p&gt;Example 2: a Dell 2950 consumes 307 watts and takes up 2 U of space, approximately 154 watts per U.&amp;#160; A Dell 1850 consumes 444 watts in a single U.&amp;#160; So while we consume half the space we almost &lt;em&gt;triple&lt;/em&gt; the power consumption per U.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Newer machines are greener, consuming less power per U of space, but we don't have a lot of the &lt;em&gt;latest&lt;/em&gt; generation of machines, those that are efficient with their use of electricity.&amp;#160; In the past we've upgraded machines to give clients the power they need and we've accidentally hampered out ability to expand.&amp;#160; The Dell '8' series (1850/2850) are huge millstones around our neck as we're trying to stay afloat in the electricity ocean.&amp;#160; So what are we doing?&amp;#160; Replacing as many 1850s/2850s as we can.&amp;#160; (See yesterdays note on virtualizing, evergreening and replacing).&lt;/p&gt;  &lt;p&gt;So, we don't have a lot of room and the servers that we do have are consuming huge amounts of power.&amp;#160; Can't get any worse, can it?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-1421637188287799840?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/1421637188287799840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=1421637188287799840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/1421637188287799840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/1421637188287799840'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/06/loss-of-power.html' title='Loss of Power'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-6719902870324819137</id><published>2008-06-17T08:44:00.001-06:00</published><updated>2008-06-17T08:44:03.642-06:00</updated><title type='text'>No space at the inn</title><content type='html'>&lt;p&gt;OK, for a number of months now I have been using the explanation &amp;quot;&lt;em&gt;Sorry, but we have no room at fulfill that request&lt;/em&gt;.&amp;quot;&amp;#160; Many of you have been the recipient of this sort of email and you may be thinking that I have just been using this as an excuse.&amp;#160; While there are many things that impact the &amp;quot;room&amp;quot; that is available, let me just talk about &lt;em&gt;physical&lt;/em&gt; room today.&lt;/p&gt;  &lt;p&gt;Within our server room we have a number of racks.&amp;#160; These racks are industry standard racks for holding rack mounted servers.&amp;#160; (Hence the name similarity).&amp;#160; These racks contain 42 U of space. and we have 17 of these racks in place. That's a lot of space.&amp;#160; We are also about 80% full. Theoretically we have enough room for about 70 servers or so, based our own current 2 U standard server.&lt;/p&gt;  &lt;p&gt;That was &lt;em&gt;theoretically&lt;/em&gt;. In practice we do not have this much usable space. Due to the fact that the older servers had a wide range of sizes, the fact that we put more than just servers in the racks (storage enclosures, load balancers, etc), the amount of usable space where we can install our standard server is about 72 U in size; or about 36 servers. This is pretty close to the number of servers that we need to install, but this gives us absolutely no room for growth. (Based upon meetings I've had recently, we &lt;em&gt;are&lt;/em&gt; going to be growing.)&lt;/p&gt;  &lt;p&gt;So, how do we free up space? Virtual machines.&lt;/p&gt;  &lt;p&gt;We have converted about 40 machines to the virtual variety in the past few months. We want/need, to do more and we are going to that. My personal goal is to free up another 50 U of space in the next couple of months. so, that we can have that room for growth. We need some help from Microsoft at this point as we are having problems with one of their &amp;quot;P2V&amp;quot; (physical to virtual) tools that is making this transition a lot easier.&amp;#160; They have managed to replicate our problem and are working on a solution.&lt;/p&gt;  &lt;p&gt;We are currently in the process of mapping out precisely what is in our server room, which rack it sits in and exactly where in the rack it is taking up space.&amp;#160; Based upon this very detailed map we will be able to plan out where new machines should go and what we need to do in order to consolidate some of our fragmented free space.&amp;#160; (Much like a disk defragmenter, but on a much larger scale.) &lt;/p&gt;  &lt;p&gt;This is not the final solution, however, as a larger battle still looms and we will discuss that tomorrow.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-6719902870324819137?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/6719902870324819137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=6719902870324819137' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/6719902870324819137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/6719902870324819137'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/06/no-space-at-inn.html' title='No space at the inn'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-2763087579012543733</id><published>2008-06-12T09:35:00.001-06:00</published><updated>2008-06-12T09:35:03.565-06:00</updated><title type='text'>Budgeting</title><content type='html'>&lt;p&gt;I'm not really a big fan of budgets.&amp;#160; My wife and I try to make them and then we blow them out of the water within a month.&amp;#160; For projects, however, budgets are important as they lay down some limitations on what can and cannot be done.&amp;#160; Sometimes, however, we don't set the budget properly.&amp;#160; Let me give you an example:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;You walk into your bosses office and they tell you that they have a new project for you.&amp;#160; They tell you what the end result of the project is going to be and what your budget for the project is.&amp;#160; The problem is that there has not been any detailed analysis done so the size of the project is totally unknown, but not the budget.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I'm sure that most of you have been there before, even in a somewhat different perspective.&amp;#160; Imagine if you will, going up to your team lead and have them tell you about a new feature you are going to implement -- in one weeks time. &lt;/p&gt;  &lt;p&gt;it is important to understand that budget does not necessarily limit itself to dollars as budget can also be equated as people time.&amp;#160; If you have X dollars that equates to Y days of effort. Whether you use the top down approach to budgeting, the bottom up approach or the throw a dart at the dart board approach, you &lt;em&gt;need&lt;/em&gt; to understand &lt;em&gt;what&lt;/em&gt; you are going to build and &lt;em&gt;how&lt;/em&gt; you are going to build it.&amp;#160; Once you figure out that you can come up with an estimate.&amp;#160; Based on that estimate you also include a certain percentage of time for documentation, testing, UAT support, project management, internal technimcal support and &lt;strong&gt;deployment&lt;/strong&gt; time and even post implementation support.&amp;#160; &lt;/p&gt;  &lt;p&gt;I know, you normally don't do this.&amp;#160; Maybe that explains why you feel so stressed about being late?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-2763087579012543733?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/2763087579012543733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=2763087579012543733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/2763087579012543733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/2763087579012543733'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/06/budgeting.html' title='Budgeting'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-3462941733766959097</id><published>2008-06-12T07:11:00.001-06:00</published><updated>2008-06-12T07:11:15.347-06:00</updated><title type='text'>Process and DJ</title><content type='html'>&lt;p&gt;I am a great believer in following &amp;quot;the law&amp;quot;, not because it's the &amp;quot;right&amp;quot; thing to do, but because without a standard basis upon which to rest our morals and beliefs we descend into anarchy.&amp;#160; But you know what?&amp;#160; Going too far the other way is just as bad.&lt;/p&gt;  &lt;p&gt;This is also true for IT projects.&amp;#160; For instance, the &lt;a href="http://www.pmi.org/Pages/default.aspx"&gt;Project Management Institute&lt;/a&gt; offers all sorts of guidance on how to manage projects.&amp;#160; The have produced a Book of Knowledge that contains much useful information.&amp;#160; &lt;strong&gt;BUT&lt;/strong&gt;, it is not the understanding of this information that makes a project manager effective, nor is it merely have the PMP certification that makes a project manager good at his job, it is understanding when to use the tools at their disposal and the reasons for doing so.&lt;/p&gt;  &lt;p&gt;Over-managing a project is almost as bad as under-managing.&amp;#160; (Depending upon your perspective it may actually be worse, but I digress.)&amp;#160; Over-managing puts too much rigor into a process that does not require that rigor and that is where the skill of a good project manager comes into play.&amp;#160; Like a poker play you need to know &amp;quot;&lt;em&gt;when to hold 'em, know when to fold 'em, kown when to walk away&lt;/em&gt;&amp;quot;.&amp;#160; The effective application of the tool is the difference between a good project manager and someone who just follows the rules.&lt;/p&gt;  &lt;p&gt;Am I being too harsh on project managers?&amp;#160; Maybe, but considering the wide range of project styles that I have seen and been victim to, probably not.&amp;#160; The project manager has more influence over the end result of the project than anyone else.&amp;#160; Don't influence in the wrong direction.&amp;#160; Give the team the freedom to innovate, the freedom to get their job done while at the same time putting in place the structure necessary to do that.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-3462941733766959097?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/3462941733766959097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=3462941733766959097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/3462941733766959097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/3462941733766959097'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/06/process-and-dj.html' title='Process and DJ'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-4493255108660666895</id><published>2008-06-11T07:05:00.001-06:00</published><updated>2008-06-11T07:05:31.058-06:00</updated><title type='text'>Picking on Managers ... again</title><content type='html'>&lt;p&gt;It's been said that I've been picking on programmers too much recently, so I thought I would skip the low hanging fruit and go after something higher up on the tree.&amp;#160; Let's start with one of my favourite slogans:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Failure to plan on your part does not constitute an emergency on my part.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;A project manager has a specific role on a project team:&amp;#160; planning and coordinating the activities of the team members.&amp;#160; On larger projects this may actually be the delegation of this responsibility to other members of the team.&amp;#160; On a large 75+ person project I worked on there was one Project Manager who ran the entire project, but four other managers who actually did the planning.&amp;#160; Please note that this 75+ person project had a total of 5 managers.&amp;#160; There were a number of team leads on the project as well bringing down the ratio to 1 to 5 for supervisors to staff.&amp;#160; This is by many standards a fairly low ratio, but it was typical in the organization I was with, with many of the supervisors spending only a portion of their time supervising and the rest of the time working on different tasks that needed to be done.&lt;/p&gt;  &lt;p&gt;Each team lead knew what was expected of their team in the short term and what the long term objectives were.&amp;#160; Every week there were meetings amongst team leads and their respective manager and every week the managers got together to discuss the status of the project.&lt;/p&gt;  &lt;p&gt;This same type of organization is applicable in smaller projects.&amp;#160; Planning is one of the key factors:&amp;#160; know what needs to be done now and in the future.&amp;#160; Too often have I seen and read about projects that do not have a clear understanding of what is required and the usual impact of this is larger, more complex projects than is required and the resulting cost and timetable impacts this has.&lt;/p&gt;  &lt;p&gt;Worst of all, from my perspective right now, this has a tremendous impact on the Deployment Team.&amp;#160; Too often have we had requests like &lt;em&gt;&amp;quot;...but the user needs it now, do we have to give you five minutes advance notice? ...&amp;quot;&lt;/em&gt; or &amp;quot;&lt;em&gt;... it's just a small change, but we need to recompile everything and send you a complete package, if we get it done by midnight can you have it in place by 12:01? ...&lt;/em&gt;&amp;quot;.&amp;#160; T&lt;/p&gt;  &lt;p&gt;he reason we ask for advance notice on migrations is so that we have the opportunity to plan our own work.&amp;#160; If you don't give us advance notice we can't plan and that annoys me.&amp;#160; And everyone knows what happens when I get annoyed.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-4493255108660666895?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/4493255108660666895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=4493255108660666895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/4493255108660666895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/4493255108660666895'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/06/picking-on-managers-again.html' title='Picking on Managers ... again'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-2288720122591987993</id><published>2008-06-09T15:20:00.001-06:00</published><updated>2008-06-09T15:20:26.887-06:00</updated><title type='text'>It's not always a technical solution ...</title><content type='html'>&lt;p&gt;One of the interesting things I learned at NAIT was that technology is not always the best solution.&amp;#160; Sometimes simple, every day solutions, non-technological solutions, are actually better.&amp;#160; For instance:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;I take the bus to and from work.&amp;#160; While on the bus if I get a brilliant idea, or even a not-so-brilliant idea for a daily migration note I need to capture the idea so that I can later cogitate on it and then spew it forth.&amp;#160; I carry with me, a Blackberry.&amp;#160; Seems like the appropriate thing would be to type it into the Blackberry using my thumbs, but I've found that, for me, it is the wrong solution.&amp;#160; A pen and a small notepad are what I need.&amp;#160; Faster.&amp;#160; More intuitive.&amp;#160; And I'm less prone to correct my spelling.&amp;#160; Later I can look at it and determine if I want to save it electronically.&amp;#160; Initially though, paper is king.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;While I consider myself a geek, I also consider myself to be open to alternatives and, quite frankly, paper is a valid alternative for me.&amp;#160; While I like electronic toys and I like building little applications that do &lt;em&gt;something&lt;/em&gt;, I also understand that sometimes pen and paper, a new process, or even revised expectations, are all valid solutions to a problem.&amp;#160; What we, as IT professionals, need to understand is that when a client comes to us with a problem it is in our best interest to come up with a proper solution, regardless of what technology we are or are not using.&lt;/p&gt;  &lt;p&gt;If you talk to a user and persuade them to change their process to resolve a problem, rather than create an entirely new system, then you will have done everyone a service.&amp;#160; Over fifteen years ago I was asked to build a system for a client that did some inventory work for them.&amp;#160; Our recommendation was that they change one of their existing processes to handle the requirement, but the client was adamant that he wanted a new computer system built.&amp;#160; We built it in VB4 in about 20 hours.&amp;#160; It didn't have any error handling and the interface was kind of clunky, but it did everything he wanted.&amp;#160; Within two weeks of rolling it out to his staff they changed their business process and dumped the application.&amp;#160; Sometimes you need to experience the pain to understand the truth.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-2288720122591987993?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/2288720122591987993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=2288720122591987993' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/2288720122591987993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/2288720122591987993'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/06/it-not-always-technical-solution.html' title='It&amp;#39;s not always a technical solution ...'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-3802942219192201124</id><published>2008-06-09T07:01:00.001-06:00</published><updated>2008-06-09T07:01:25.391-06:00</updated><title type='text'>Casual clothes = casual work?</title><content type='html'>&lt;p&gt;I was watching a report on CNN that talked about &amp;quot;Casual Fridays&amp;quot; in England - London to be specific - and how people did not want to &amp;quot;dress down&amp;quot; for work.&amp;#160; The reason that was given was that having a dress code made it simpler to know what was required and actually made things easier for the worker.&lt;/p&gt;  &lt;p&gt;There is another underlying fear, as made quite evident from my days with Andersen Consulting, that if employees dress casually, they will take their work casually and not produce the same quality of work they would otherwise.&amp;#160; While one of the unwritten rules was that you were to follow your clients standards with regard to what you wore, another unwritten rule was that you would wear a tie at all times.&amp;#160; So, while you could dress casually (i.e. take your jacket off), too casually was a no-no.&lt;/p&gt;  &lt;p&gt;Being part of the generation that grew up with suits and has subsequently ushered in the &amp;quot;Casual-era&amp;quot;, I've seen both sides of the coin.&amp;#160; While I believe that going casual has reduced some of the discipline that is required, I believe it has been more than made up for by the atmosphere in which we work.&amp;#160; A suit and tie impose a certain level of discipline when you're working and losing those pieces of clothing has, apparently, reduced the level of discipline that people seem to have. (Please note that there is a limit to being casual, a limit that some people just don't understand.)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;However&lt;/strong&gt;, I also think that the work atmosphere now is more conducive to change, more willing to accept new challenges and new ideas and, well, more &lt;em&gt;fun&lt;/em&gt; than it used to be.&amp;#160; The fact that I don't wear a suit and tie makes me more comfortable at work and, as a result, makes me more attentive and able to focus on a problem.&amp;#160; (Who can fix something when you're convinced that the next time you cough your tie is going to spontaneously tighten itself around your throat and stop you from breathing?)&lt;/p&gt;  &lt;p&gt;Back in the suit and tie world the Internet would never have been a success: it breeds contempt for boring; offers success for being different; allows people to do things in amazingly different ways; and was built by people without ties.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-3802942219192201124?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/3802942219192201124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=3802942219192201124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/3802942219192201124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/3802942219192201124'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/06/casual-clothes-casual-work.html' title='Casual clothes = casual work?'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-2276901240341272868</id><published>2008-06-04T23:33:00.001-06:00</published><updated>2008-06-04T23:33:17.862-06:00</updated><title type='text'>The kids nowadays ...</title><content type='html'>&lt;p&gt;I was talking with someone the other day and we were both commenting on how we both had high expectations of developers.&amp;#160; Perhaps too high.&lt;/p&gt;  &lt;p&gt;When I was just starting out in this business the mainframe was still the big thing.&amp;#160; I remember going to the launch of the IBM PC that IBM had in town and thinking that if they did this right IBM had a gold mine on their hands.&amp;#160; Well, they blew it, but the industry did not let the personal computer drop and the world was changed.&amp;#160; I learned lots of stuff on the mainframe and then applied it to the PC world.&amp;#160; I learned how to debug properly when you could only do one compile per day.&amp;#160; I learned how to design things properly when you had 4K of memory to use for your application before you had to start worrying about addressing problems.&amp;#160; I learned how to adapt the mainframe mindset and use it in an intelligent fashion on the PC.&lt;/p&gt;  &lt;p&gt;Kids these days don't do that.&amp;#160; Schools don't teach it and the kids have no opportunity to learn what I learned.&amp;#160; While I may have owned my first computer before some of you were born (March 15, 1981 was when I bought my Apple ][+) I've had so much more varied opportunities.&amp;#160; I've worked on large mainframe applications, large PC applications, large web applications,&amp;#160; I've worked on machines were space was at a premium, both disk space and memory and you were challenged to be as efficient as possible.&lt;/p&gt;  &lt;p&gt;The kids these days are challenged to be efficient.&amp;#160; If it works on their dekstop then it must work on the server for hundreds of people and, if not, it's the deployment team that needs to make it work.&lt;/p&gt;  &lt;p&gt;I think it's a shame that mainframes are being relegated to the back room because I think the lessons that they taught are still applicable today, but there is an entire generation that will not learn those lessons.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-2276901240341272868?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/2276901240341272868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=2276901240341272868' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/2276901240341272868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/2276901240341272868'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/06/kids-nowadays.html' title='The kids nowadays ...'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-3049890304003702120</id><published>2008-06-03T06:45:00.001-06:00</published><updated>2008-06-03T06:45:45.890-06:00</updated><title type='text'>Integrity</title><content type='html'>&lt;p&gt;One thing that continually amazes me about Hollywood, I guess about their writers, is that they sometimes choose the most idiotic, but convenient plot devices because it saves them the effort of actually thinking about something.&amp;#160; In this case what I am talking about is the infamous &amp;quot;back door&amp;quot;.&amp;#160; &lt;/p&gt;  &lt;p&gt;You know what I'm talking about:&amp;#160; a hacker mysteriously manages to access a top secret application through a simple userid and password that he hard coded into the application when he built five years ago.&amp;#160; You can imagine the sort of code that he put into the application:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;if userid = &amp;quot;Fred&amp;quot; and password = &amp;quot;flintstone&amp;quot; then       &lt;br /&gt;access = &amp;quot;SuperAdmin&amp;quot;        &lt;br /&gt;endif&lt;/em&gt;      &lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The trouble is most access systems work this way.&amp;#160; Any access system for a top secret application is not going to use something that the programmer wrote because they want it to be more secure than what they're paying this guy who is later going to hack into their system.&lt;/p&gt;  &lt;p&gt;But the thing that annoys me most is the idea that this is commonplace in the IT industry.&amp;#160; I have never written such code for a production application, neither do I know of anyone who has written such code.&amp;#160; I've been involved with systems that dealt with hundreds of millions of dollars in payments, yet there were no secret back doors into the system.&amp;#160; I am annoyed by the fact that Hollywood, and the image they present of the IT industry, is that of a bunch of cowboys with no integrity.&amp;#160; Why don't they show social engineering in action?&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Hacker: Excuse me, ma'am, but I'm from the IT department and we've noticed that there is a problem with your ID.&amp;#160; Could you please tell me your password and when we've resolved the problem we'll reset your password and you can go back to your job.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Social engineering is by far the easiest way to gain access to a system because people fall for the lines quite easily.&amp;#160; If you don't believe me just look around and you'll see stories about hundreds, thousands of people who have fallen for the &lt;a href="http://www.scambusters.org/NigerianFee.html"&gt;Nigerian 419 scam&lt;/a&gt;.&amp;#160; So instead of showing how innocent people can be easily duped they decide to show that the bad guy was evil long before the movie started.&amp;#160; Yeah, like &lt;em&gt;I'm&lt;/em&gt; evil.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-3049890304003702120?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/3049890304003702120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=3049890304003702120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/3049890304003702120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/3049890304003702120'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/06/integrity.html' title='Integrity'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3708975.post-2091004952001279846</id><published>2008-05-29T06:48:00.001-06:00</published><updated>2008-05-29T06:48:00.748-06:00</updated><title type='text'>Quality</title><content type='html'>&lt;p&gt;My wife is constantly reminding our kids that they need to follow all of the directions when doing their projects and make sure that all of the objectives of the project are met.&amp;#160; But it that quality? I guess that really depends on whether you want to measure quality during the build process or whether you want to measure quality as at the end of the process.&amp;#160; I'm going to argue that in the IT field we need to measure it &lt;strong&gt;both&lt;/strong&gt; ways.&lt;/p&gt;  &lt;p&gt;Quality at the end of the process - the delivery of the application to the business client - is very important as this is how IT is predominantly measured by the client:&amp;#160; were my needs met and if they were met how well were they met?&amp;#160; If you don't meet the needs of the client it doesn't matter whether you built it ahead of schedule and under budget because the client is not going to be satisfied.&amp;#160; We don't do JD Power &amp;amp; Associates surveys of all of our work, but maybe we should.&lt;/p&gt;  &lt;p&gt;Quality during the build isn't something that the client concerns themselves with, that much, but it has a direct impact on time and budget.&amp;#160; Fewer mistakes during the build process means a faster time to finish and a lower cost.&amp;#160; So, while it may not seem important it has a vital role in the cost of the product at the end of the process.&amp;#160; To be honest, this is where most projects fail to perform any measuring and this is where the most important information about the build process can be found.&amp;#160; Measuring the end result is fine for final reports and is something that you can parade around on your business card, but it doesn't tell you how well the job was done on a daily basis, just on an overall basis.&lt;/p&gt;  &lt;p&gt;In my opinion, understanding how well the project is doing on a daily basis, the quality of the work that each person creates each day, is just as important as the end result.&amp;#160; But, hey, that's just my perspective.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3708975-2091004952001279846?l=randommadness.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommadness.blogspot.com/feeds/2091004952001279846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3708975&amp;postID=2091004952001279846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/2091004952001279846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3708975/posts/default/2091004952001279846'/><link rel='alternate' type='text/html' href='http://randommadness.blogspot.com/2008/05/quality.html' title='Quality'/><author><name>Donald Jessop</name><uri>http://www.blogger.com/profile/01777737601033459276</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11344753856062446096'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>