<?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' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-28751042</id><updated>2011-04-21T22:09:22.185-04:00</updated><title type='text'>Doc's Thoughts</title><subtitle type='html'>My thoughts and observations on life, family, software development, and whatever is in my craw.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-28751042.post-6963223623405906689</id><published>2007-01-28T09:20:00.000-05:00</published><updated>2007-01-28T10:18:11.783-05:00</updated><title type='text'>Plans are for wussies</title><content type='html'>Several months ago, I posted some statements I heard from "professionals" regarding testing, standards, and code review. Since then, I've heard several more gems and here are a few on planning that I thought worth noting.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;These statements are from the same person &lt;em&gt;on the same day &lt;u&gt;pertaining to the same project:&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;"We have a plan. The problem is not a lack of plan. The problem is our &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;communication&lt;/span&gt;."&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;"We don't need a written plan for this (release of a new product). We are experienced professionals and we know what to do. Writing out a plan is to make other people happy; people who don't have to do the work and don't know how to do it."&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"You can't plan for something like this. Things come up and you just take care of them."&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;So let me see if I got this one right.... You have a plan for the thing that can't be planned, but since you are professionals you don't need to communicate the plan for the thing that can't be planned because only ignorant observers need plans? Is that it?&lt;br /&gt;&lt;br /&gt;Let me share with you some common challenges within this environment:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Team members have differing expectations of what is to be done, by whom, and when&lt;/li&gt;&lt;li&gt;Team members have no idea what other people on their team are working on&lt;/li&gt;&lt;li&gt;Almost all projects are late due to &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;unforeseen&lt;/span&gt; circumstances such as the code that was written won't run in the target environment (actually happened)&lt;/li&gt;&lt;li&gt;Projects get delayed because other departments are "uncooperative "&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Other departments don't know what is going on&lt;/li&gt;&lt;li&gt;Other departments want justification for the tasks they are told to do&lt;/li&gt;&lt;li&gt;Other departments require more heads up on simple tasks like configuring a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3" onclick="BLOG_clickHandler(this)"&gt;VLAN&lt;/span&gt; and building all the servers to the unwritten specification that is needed immediately&lt;/li&gt;&lt;li&gt;Other departments won't violate security standards or other documented practices in order to "get it done"&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Once a project "feels" like it is about half-way complete, it is "almost done". Sometimes projects are "almost done" two or three times as long as any other project phase.&lt;/li&gt;&lt;li&gt;Completed work sits on the stage server for months or even years because nobody tests it and certifies it to go to live.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Final note - lack of planning != Agile&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-6963223623405906689?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/6963223623405906689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=6963223623405906689' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/6963223623405906689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/6963223623405906689'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2007/01/plans-are-for-losers.html' title='Plans are for wussies'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-3564555353765205760</id><published>2007-01-14T14:28:00.000-05:00</published><updated>2007-01-28T11:58:31.550-05:00</updated><title type='text'>Getting Some Help</title><content type='html'>I'm not talking about seeing a phychologist or psychiatrist. I'm not talking about a 12-step program. And I'm certainly not talking about booking a stint on Dr. Phil. I'm talking about reaching outo to your team for input, for feedback, and for another pair of hands. I'm talking about actual teamwork.&lt;br /&gt;&lt;br /&gt;Developers who struggle with the same piece of code, won't leave their cube, won't acknowledge a problem, and refuse to get anyone else involved. They sometimes become paniced or desparate. They stay extra hours alone, suffering under their self-assigned yolk, blaming others for what is happening.&lt;br /&gt;&lt;br /&gt;Managers who can't deliver a project on time and whose staff is unmotivated. Half of the staff know nothing about the project, tasks are not getting done, and new unforseen issues keep popping up. But the manager will tell you they're doing everything they can while they refuse anyone's help. They too become paniced or desparate, putting in heroic effort when it is all but too late, suffering under their self-assigned yolk, blaming others for what is happening.&lt;br /&gt;&lt;br /&gt;I've seen this all too often. I've been these people.&lt;br /&gt;&lt;br /&gt;As a manager, it is not your job to know every last detail of the project. As a manager, it is not your job to assign every task. You are not supposed to have all the answers or even understand every part of the solution. As a manager, it is your job to enable the team, solicit their input, guide them, direct them, clear their obsticles, and let them do their jobs well. This doesn't mean you aren't in control. You set the standards, you set the expectations, you monitor what is happening, you address the issues, and you participate without dictating.&lt;br /&gt;&lt;br /&gt;So why did I call this post "Getting Some Help"?&lt;br /&gt;&lt;br /&gt;Because the help you need comes from your team. As a team member or as a manager, unless you are literally a team of one, help is always available. Ask your fellow programmer to take a look at the code that haunts you. Ask your team to review the plan or ask your team to help put together the plan.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-3564555353765205760?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/3564555353765205760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=3564555353765205760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/3564555353765205760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/3564555353765205760'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2007/01/getting-some-help.html' title='Getting Some Help'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-6420533988768068107</id><published>2007-01-11T22:01:00.000-05:00</published><updated>2007-01-11T22:08:19.009-05:00</updated><title type='text'>What does it mean to be Agile?</title><content type='html'>What is Agile?&lt;br /&gt;&lt;br /&gt;Is it XP, SCRUM, or some other process? If you are using all of the SCRUM mechanisms, are you Agile?&lt;br /&gt;&lt;br /&gt;Agile is a philosophy, NOT a set of practices. This is not to say that those that use SCRUM mechanisms are not Agile. It is only to say that implementation of mechanisms does not make you Agile. And most certainly, failure to implement certain mechanisms does not mean you are not Agile.&lt;br /&gt;&lt;br /&gt;I've heard on several occassions statements such as "Oh, you don't do pair programming? Then you're not doing Agile." Pair programming could be replaced with standing meetings, weekly iterations, monthly iterations, test driven development, or any other mechanism.&lt;br /&gt;&lt;br /&gt;I intend to discuss more about Agile in this Blog. What do I think it is and what have I learned about it.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-6420533988768068107?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/6420533988768068107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=6420533988768068107' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/6420533988768068107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/6420533988768068107'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2007/01/what-does-it-mean-to-be-agile.html' title='What does it mean to be Agile?'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-115520854104614654</id><published>2006-08-10T06:42:00.000-04:00</published><updated>2006-08-10T18:41:29.623-04:00</updated><title type='text'>Statements I have recently heard</title><content type='html'>I had an conversation recently with a number of folks; all of whom are having fairly consistent problems with their system's stability. Each of these statements come from individuals who make their living as a senior level developer or a manager of a team of developers.&lt;br /&gt;&lt;br /&gt;Can you tell them why they are having problems?&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;These statements are from the same person:&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;"We don't have the time to test thoroughly and meet out deadlines. Besides the users are supposed to test."&lt;/em&gt;&lt;br /&gt;&lt;em&gt;"We test the application every which way from Sunday. Testing wouldn't have caught the [run-time] error."&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;As a note - the error was fundamental and a standard regression test of the module explicitly changed would have caught it (in my opinion).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Other great statements:&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;"Standards are just loose guidelines. As long as I can read the code and it works, it's good. I don't need to be picky." &lt;/em&gt;- responsible for team of 7 developers working on the same code base. The week prior to this statement, the system had crashed due to use of poorly scoped variables (something you often see covered in standards)&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"Patterns (such as the GoF patterns) are a great theory, but we code in the real world." -&lt;/em&gt;&lt;strong&gt; HUH?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"We like to make fun of [insert name here]. He's a real stickler for standards and stuff."&lt;/em&gt; - responsible for team of 20+ developers all working on the same application - making reference to one of their own employees.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"We almost had to quit doing code reviews... people kept criticising each other's code." - &lt;/em&gt;one of my personal favorites&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-115520854104614654?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/115520854104614654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=115520854104614654' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115520854104614654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115520854104614654'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/08/statements-i-have-recently-heard.html' title='Statements I have recently heard'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-115498647417549629</id><published>2006-08-07T16:37:00.000-04:00</published><updated>2006-08-07T17:34:34.500-04:00</updated><title type='text'>Code Naming Conventions</title><content type='html'>There is a pretty good (albeit brief) series on Code Naming Conventions by The Igloo Coder:&lt;br /&gt;&lt;a href="http://igloocoder.com/archive/2006/07/04/394.aspx"&gt;http://igloocoder.com/archive/2006/07/04/394.aspx&lt;/a&gt;&lt;br /&gt;&lt;p&gt;The series first looks at the need for conventions and essentially makes the argument that consistency is paramount to good team coding. I agree.&lt;br /&gt;&lt;br /&gt;He then covers Local Variable, Module Variables, Functions, Methods, Parameters, Properties, Classes, Interfaces, Super (and Base) Classes, UI Controls, and SQL Server Objects (also applicable to Oracle, MySQL, etc.)&lt;br /&gt;&lt;br /&gt;I happen to agree with his observations as well as his conclusions. These are the same standards I use when something else is not mandated.&lt;br /&gt;&lt;br /&gt;The following is a brief summary. Do read the series; there is more detail. It's an easy read.&lt;br /&gt;&lt;table width="100%" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Local Variables&lt;/td&gt;&lt;td&gt;strHungarian (Yes, seriously, Hungarian Notation) &lt;i&gt;strEmployeeName&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Module Variables&lt;/td&gt;&lt;td&gt;_strHungarian &lt;i&gt;_intRecordCount&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Functions&lt;/td&gt;&lt;td&gt;PascalCase (Verb-Noun) &lt;i&gt;DeterminePrice()&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Methods&lt;/td&gt;&lt;td&gt;PascalCase (Verb-Noun) &lt;i&gt;PoundSalt()&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Parameters&lt;/td&gt;&lt;td&gt;camelCase &lt;i&gt;DoThing(bool isGoodBoy)&lt;/i&gt; * He actually makes note to avoid bool and use enum instead&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Properties&lt;/td&gt;&lt;td&gt;PascalCase &lt;a href="http://igloocoder.com/archive/2006/07/14/415.aspx"&gt;read his blurb for more details&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Classes&lt;/td&gt;&lt;td&gt;PascalCase&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Interfaces&lt;/td&gt;&lt;td&gt;IPascalCase &lt;i&gt;ICanPontificate&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Super(Base) Classes&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://igloocoder.com/archive/2006/07/18/435.aspx"&gt;Read his blurb&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;UI Controls&lt;/td&gt;&lt;td&gt;strHungarian &lt;i&gt;txtUserName&lt;/i&gt; * Alternate is to prefix HTML controls with 'h' =&gt; htxtUserName&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SQL Server Objects&lt;/td&gt;&lt;td&gt;PascalCase (Noun-Verb) &lt;i&gt;EmployeeAdd&lt;/i&gt; * The Noun-Verb is specific to Stored Procedures&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-115498647417549629?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/115498647417549629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=115498647417549629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115498647417549629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115498647417549629'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/08/code-naming-conventions.html' title='Code Naming Conventions'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-115461929993069585</id><published>2006-08-03T11:34:00.000-04:00</published><updated>2006-08-08T06:44:06.293-04:00</updated><title type='text'>JSR 168, WSRP, Portlets &amp; Enterprise Portal</title><content type='html'>Decent Blog on the general Portal Market, the emerging standards, and the players:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://portlets.blogspot.com/"&gt;JSR 168, WSRP, Portlets &amp;amp; Enterprise Portal&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-115461929993069585?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/115461929993069585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=115461929993069585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115461929993069585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115461929993069585'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/08/jsr-168-wsrp-portlets-enterprise.html' title='JSR 168, WSRP, Portlets &amp; Enterprise Portal'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-115439708173490154</id><published>2006-07-31T20:31:00.000-04:00</published><updated>2006-07-31T21:53:12.040-04:00</updated><title type='text'>Heartbreaker</title><content type='html'>My wife and I have decided to sell off one of our small side businesses. The effort is too great with our full time careers. This site would make a nice part time job for somebody. The potential is far greater for the right person.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Candles and Accessories Web Site for Sale&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sitepoint.com/marketplace/auction/642"&gt;http://www.sitepoint.com/marketplace/auction/642&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-115439708173490154?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/115439708173490154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=115439708173490154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115439708173490154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115439708173490154'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/07/heartbreaker.html' title='Heartbreaker'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-115439090589551088</id><published>2006-07-31T20:05:00.000-04:00</published><updated>2006-07-31T20:08:25.903-04:00</updated><title type='text'>Good Article</title><content type='html'>I am literally weeks behind on my Blog. I have nearly one dozen items I am working on that I have not posted yet. But today I ran across an article I had tagged and almost neglected to read.&lt;br /&gt;&lt;br /&gt;I was impressed with this article. Not only because it bestows the values I believe an organization should genuinely hold and suport, but because it comes from one with a very impressive track record. A man, who for all practical purpose, had no reason to doubt his ways.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fastcompany.com/magazine/02/meyerson.html"&gt;http://www.fastcompany.com/magazine/02/meyerson.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-115439090589551088?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/115439090589551088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=115439090589551088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115439090589551088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115439090589551088'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/07/good-article.html' title='Good Article'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-115341314690080093</id><published>2006-07-18T20:13:00.000-04:00</published><updated>2006-08-07T22:58:51.266-04:00</updated><title type='text'>AD World - Day 2</title><content type='html'>&lt;span style="font-family:lucida grande;font-size:130%;"&gt;Update on Unified Process&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;"Idea that each team should follow the same process is a great theory, but is impossible in practice. Goal should be to have all teams using similar processes." – presenter’s opinion&lt;br /&gt;"Firehose" Presentation – lots of data fast&lt;br /&gt;Speaker has done the gambit on project management – strict to Agile. Has drafted industry standards.&lt;br /&gt;First public release of RUP was June 1998. Slow activity through late 90s. Much work on application of Agile w/in RUP over past six months.&lt;br /&gt;http://www.enterpriseunifiedprocess.com/essays/history.html&lt;br /&gt;UP is a framework from which system processes are instantiated&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;Spirit of the UP&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;· Attack risks early (or they will attack you)&lt;br /&gt;· Deliver value to the customer&lt;br /&gt;· Focus on executable software&lt;br /&gt;· Accommodate change early in the project&lt;br /&gt;· Baseline an executable architecture early on&lt;br /&gt;· Build with components&lt;br /&gt;· Work together as one team&lt;br /&gt;· Communicate early and often&lt;br /&gt;· Make quality a way of life&lt;br /&gt;There will be a new version of RUP released later this year&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;RUP Universal Principles&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;· Adapt the process&lt;br /&gt;· Balance stakeholder priorities&lt;br /&gt;· Collaborate across teams&lt;br /&gt;· Demonstrate value interactively&lt;br /&gt;· Elevate the level of abstraction&lt;br /&gt;· Focus continuously on Quality&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;LOOK AT AGILE 2.0&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Working with Legacy Code – book on evolving legacy systems over time&lt;br /&gt;Refactoring Databases – book on improving legacy database schemas&lt;br /&gt;RUP original six best practices are now encompassed w/in the Universal Principles&lt;br /&gt;http://www-128.ibm.com/developerworks/rational/library/5823.html - Extending the RUP&lt;br /&gt;Eclipse Process Framework – &lt;/span&gt;&lt;a href="http://www.eclipse.org/epf"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;www.eclipse.org/epf&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;OpenUP &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;open source version of UP. Modification of RUP material. Brief description of RUP (overview). Easy to use and available for free. Anybody can use it. Currently in BETA. "looks like crap – user interface challenges"&lt;br /&gt;A Method Framework is a framework based on a common set of principles.&lt;br /&gt;RUP – gives you everything and you choose what you need&lt;br /&gt;OpenUP – gives you the base and you can add on what you need&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;Agile UP (AUP) – worth looking at&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;"The only true measure of progress in a software development project is working software"&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:lucida grande;"&gt;Essential UP (Ess UP) – worth looking at&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.ivarjacobson.com/"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;www.ivarjacobson.com&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Lightweight&lt;br /&gt;Agile&lt;br /&gt;Freely available&lt;br /&gt;Easy to use&lt;br /&gt;Open source process&lt;br /&gt;Only the "essential" practices&lt;br /&gt;Agile 2.0 process&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Enterprise Unified Process &lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;– wraps UP into a wider scope process that includes support and enterprise concerns. Change management, project management, operations, support, Portfolio Management, Strategic reuse, People Management, Enterprise Admin, Software Process Improvement, etc.&lt;br /&gt;"Architect also codes" – speaker is a firm believer in this pattern – you need to be involved with the team.&lt;br /&gt;Developers will not read white papers and look at models. Developers will download code. Model your designs in code for developers to use. Make sure examples are high quality. Developers do not respect architects who do not write code.&lt;br /&gt;Speaker believes the industry suffers from too much theory and not enough reality. Discuss how it "should" be done, but do not observe how it is actually done. Example – how many books are there on how to model on paper and white boards? The books are on how to model using tools.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;Strategic Reuse &lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;– almost always fails. You need to have a reuse plan and encourage it. Charge-back plans for reuse will kill the effort (if one department/team uses components/service from other teams, the developer team charges the consumer internal funny money). Monitor what your teams are doing and when something looks like it could be made reusable, do so. Do not design with the intent of reuse in mind; distracts from the project needs.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Agile UP is the lightest of the options&lt;br /&gt;EAP is the heaviest&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;AUP and Open UP are emerging – gaining acceptance and support&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Suggests we take Open UP seriously – main editing tool is eclipse, but it is NOT eclipse specific&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;US Department of Defense has belief that all processes can be broken down into granular repeatable steps. US Department of Defense is statistically one of the least successful software development team anywhere.&lt;br /&gt;&lt;br /&gt;Scott W. Ambler&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.ambysoft.com/scottAmbler.html"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;www.ambysoft.com/scottAmbler.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.agiledata.org/feedback.html"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;www.agiledata.org/feedback.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.agilemodeling.com/feedback.html"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;www.agilemodeling.com/feedback.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;font-size:130%;"&gt;Architect Soup - EA, SOA, EDA, SCA, MDA&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Mike Rosen – architect for ~15 years&lt;br /&gt;EA – enterprise architecture&lt;br /&gt;SOA – service oriented&lt;br /&gt;EDA – Enterprise Driven&lt;br /&gt;SCA – Service Component&lt;br /&gt;MDA – Model Driven&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;&lt;strong&gt;Enterprise Architecture&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;About enabling and managing change&lt;br /&gt;Goal is to align IT systems with business goals and strategy&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Secondary goals &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Reduce IT expenditures &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Run IT as a business &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Support portfolio management &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Support outsourcing &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Provide governance framework &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Enable SOA &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;Zachman&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Usually implemented with a framework – Zachman is most commonly implemented.&lt;br /&gt;"Technology is not the solution to IT problems, Architecture is." - Zachman&lt;br /&gt;States Zachman is a great way to start, but it is not a THE solution&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:lucida grande;"&gt;Federal Enterprise Architecture Framework&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Implemented by US Federal Government&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:lucida grande;"&gt;&lt;strong&gt;Service Oriented Architecture&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Most SOA definitions are technology focused, but only address a small part of SOA&lt;br /&gt;Web Services are a good technology for implementing SOA, but not the only. Can use CORBA, Java, .NET&lt;br /&gt;NOT new – CORBA and Tuxedo have been successfully used tools. Many other attempts failed.&lt;br /&gt;Web Services are not SOA&lt;br /&gt;Architecture commonly fails at the delivery of standards and architecture to the developers. Drafting a white paper and other documentation is not as affective as delivering samples and templates.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;font-size:130%;"&gt;&lt;strong&gt;Event-Driven Architecture&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Any app that reacts intelligently to changes in the environmental conditions – failure on a hard drive, sudden change in sales demand&lt;br /&gt;Publish/Subscribe services (Event Management)&lt;br /&gt;Event/Sponsor/Response systems&lt;br /&gt;Applications constructed entirely from "state machine" modules&lt;br /&gt;One where we think about communication between different parts of a business in terms of the occurrence of an event&lt;br /&gt;Workflow needs to be addressed as part of the architecture.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:lucida grande;"&gt;&lt;strong&gt;Service Component Architecture&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Doesn’t see this getting much traction&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;&lt;strong&gt;Model Based Development&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Major initiative from Microsoft and IBM &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;A side effect of UML Standardization &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Create models at business, application, and implementation levels. Write code to support all views of the model. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;Model &lt;/strong&gt;- is a representation of the system&lt;br /&gt;&lt;strong&gt;Formal model &lt;/strong&gt;- is a model that applies to stringent rules.&lt;br /&gt;&lt;strong&gt;Model Compiler &lt;/strong&gt;– can take a formal model and produce transformational output &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;MDA tools/compilers can generate code for us&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Challenge with test generation tools for MDA is they generate TOO Many tests – not all are necessary, but tools can’t discern value of the tests. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Theoretically, models allows you to not be concerned with technology changes. For example, move from .NET 1.1 to 2.0 would be "easy" – build new code base from models for the new platform and you are done.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;Introduction to UML &lt;/h1&gt;&lt;br /&gt;&lt;p&gt;Ok. You might ask why I took this class. First of all, it is immediately after lunch and I am tired; not sure I could take on another heady subject. Secondarily, although I use UML fairly regularly, I’ve never taken a course or read a book on it. I thought maybe I should.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;UML is the standard language for visualizing, specifying, construction and documenting the artifacts of a system&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.omg.org/"&gt;http://www.omg.org/&lt;/a&gt; – can download UML from site&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;The importance of modeling &lt;/h2&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Smaller projects may not require modeling&lt;/li&gt;&lt;ul&gt;&lt;li&gt;easy to build a dog house&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Larger projects require modeling&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Difficult to build a two-story, five bedroom colonial&lt;/li&gt;&lt;li&gt;Very difficult to build an office complex&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h2&gt;Why we model &lt;/h2&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Communication&lt;/li&gt;&lt;li&gt;Manage complexity&lt;/li&gt;&lt;li&gt;Makes people think&lt;/li&gt;&lt;li&gt;To help understand requirements&lt;/li&gt;&lt;li&gt;To drive implementation&lt;/li&gt;&lt;li&gt;To understand the impact of change&lt;/li&gt;&lt;li&gt;To ensure resources are deployed efficiently&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h2&gt;Activity Diagrams &lt;/h2&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Is a flow chart&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Used to show flow of control&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Usually used early on in the process&lt;/li&gt;&lt;li&gt;Good for business rules&lt;/li&gt;&lt;li&gt;Flow within a use case&lt;/li&gt;&lt;li&gt;UML 2.0 allows for the interruption of an activity&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h2&gt;Use Case Diagrams &lt;/h2&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Visualization between use cases and actors&lt;/li&gt;&lt;li&gt;Start with Actors&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Someone or some thing that must interact with the system under development&lt;/li&gt;&lt;li&gt;Rendered as a stick person (usually)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Use Cases&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Why the actor wants to use the system&lt;/li&gt;&lt;li&gt;A pattern of behavior the system exhibits&lt;/li&gt;&lt;li&gt;“A sequence of functions where the outcome makes the actor happy”&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Interaction with an ATM is likely one use case&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Deposit, withdrawal, transfer, balance inquiry all one use case&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Use case diagrams can have includes and extends&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Includes – one use case or piece of a use case includes another&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Make reservation includes search for flight&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Extends – one use case or piece can be extended by another&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Select seating location extends Make reservation&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Do not overuse these&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Can lead to functional decomposition&lt;/li&gt;&lt;li&gt;If not sure, create separate use cases&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Nothing new in UML 2.0&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;h2&gt;Interaction Diagrams&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Show dynamics of the system&lt;/p&gt;&lt;p&gt;Show communication between things&lt;/p&gt;&lt;p&gt;Includes Sequence Diagrams&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Sequence Diagrams&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Should show distribution of behavior between objects&lt;/li&gt;&lt;li&gt;Should not have a lot of sequences pointing to one object&lt;/li&gt;&lt;li&gt;Can get large very fast&lt;/li&gt;&lt;li&gt;Does not represent conditionals very well (if, then, else)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Addition of frames allows me to make composite diagrams – one sequence diagram can include another by reference&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Looping and Breaking are now represented well (better)&lt;/li&gt;&lt;li&gt;Negatives, assertions, and critical regions are available&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Communication Diagrams&lt;/u&gt;&lt;/strong&gt; – changed in 2.0 – was called something else&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Timing Diagrams&lt;/u&gt;&lt;/strong&gt; – added in 2.0&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Interaction overview diagram&lt;/u&gt;&lt;/strong&gt; – flow between interactions. Could be represented by activity and sequence diagrams. Not sure they are needed….&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Class diagrams&lt;/u&gt;&lt;/strong&gt; – show static structure&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Collection of objects&lt;/li&gt;&lt;li&gt;Want to have standards for naming of classes&lt;/li&gt;&lt;li&gt;Classes should have all operations&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Look at sequence diagrams to determine required operations&lt;/li&gt;&lt;li&gt;Known operations not in a sequence diagram = missing sequence diagram&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Classes have attributes&lt;/li&gt;&lt;li&gt;Classes have relationships&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Not required, but a system with classes and no relationships is not possible&lt;/li&gt;&lt;li&gt;Association, aggregation, composition, dependency&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Model all as association first&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Relationships are discovered by examining interaction diagrams&lt;/li&gt;&lt;li&gt;Multiplicity&lt;/li&gt;&lt;ul&gt;&lt;li&gt;How many objects participate in a relationship&lt;/li&gt;&lt;ul&gt;&lt;li&gt;One to one&lt;/li&gt;&lt;li&gt;One to many&lt;/li&gt;&lt;li&gt;One to zero or more&lt;/li&gt;&lt;li&gt;Etc.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Navigation&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Indicates directionality of communication&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Arrow states uni-directional&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Want to have as many as you can uni-directional&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Inheritance&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Relationship between class and subclass&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Realization&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;No change in UML 2.0&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Composite Structure Diagrams – new in 2.0&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;State Diagrams &lt;/h2&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Shows life history of a given class&lt;/li&gt;&lt;li&gt;For objects with significant dynamic behavior&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h2&gt;Component Diagrams &lt;/h2&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Components can be logical or physical&lt;/li&gt;&lt;li&gt;UML 2.0 – components can have ports and notation has changed&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Artifacts are new to UML 2.0 – represents a physical entity&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;UML Extension &lt;/h2&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You can extend the UML for things like Databases, business processes, web pages, etc.&lt;/li&gt;&lt;li&gt;Stereotype&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Martin Fowlers UML books are good&lt;/p&gt;&lt;p&gt;Scott Amblers process books are good&lt;/p&gt;&lt;p&gt;Has heard UML 2.0 in a nutshell is good – not fond of UML 2.0 for dummies&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-115341314690080093?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/115341314690080093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=115341314690080093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115341314690080093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115341314690080093'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/07/ad-world-day-2.html' title='AD World - Day 2'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-115313855476810495</id><published>2006-07-17T08:08:00.000-04:00</published><updated>2006-07-17T17:39:02.253-04:00</updated><title type='text'>AD World - Day 1</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;&lt;span style="font-family:lucida grande;"&gt;Registration&lt;/span&gt;&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Ok, registration actually took place yesterday. We arrived early and decided to go ahead and pre-register to make things easier on ourselves.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Talk about easy... they did not ask for any form of ID. We walked up to the counter, looked down at the name tags all layed out and easy to read, said a name, and were handed a lanyard, badge, bag, shirt, and CDs. No questions asked. Nothing to sign. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Not a great first impression.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;span style="font-family:lucida grande;"&gt;&lt;span style="font-size:100%;"&gt;Designing Service Oriented Applications &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:verdana;"&gt;Service Oriented Architecture&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SOA History&lt;br /&gt;&lt;/strong&gt;CORBA, Tuxedo – prior platforms/tools that SOA has been implemented in. Many other attempts with other tools (and these) failed. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;Case Study (loose)&lt;br /&gt;Created a group called the Business Objects Service Group and they were assigned the task of creating reusable services. Service talented developers were put into BOSG. Other (front-end) developers placed in business units to create apps that consume services.&lt;br /&gt;&lt;br /&gt;Separation of Function from Interface put the company at a competitive advantage – able to react to change in the market place much faster (took time to build library of services) Doesn’t happen overnight.&lt;br /&gt;&lt;br /&gt;System developed in CORBA – now in EJB. Handles 2 Billion transactions/month&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Proper architecture requires more than one architectural view&lt;br /&gt;Make it easy to enable the developers to build applications that follow the architectural standards&lt;br /&gt;&lt;br /&gt;SOA is concerned with the independent construction of services that can be combined together&lt;br /&gt;&lt;br /&gt;Service – encapsulates a unit of work, made available through a service contract&lt;br /&gt;Dynamic Binding, Loose Coupling, Modular and self contained, composable&lt;br /&gt;&lt;br /&gt;BPEL – Business Process Execution Language – used inside a business service; usually provided by the technology platform&lt;br /&gt;&lt;br /&gt;Business Process Level (BPM) – manage process; checkpoint, auditing, security, etc. also determine sequence/series of services changed together to achieve a need&lt;br /&gt;&lt;br /&gt;Salesforce.com, eBay, Amazon, WebSuite – provide third party Web services&lt;br /&gt;&lt;br /&gt;Majority of corporate expenditure for application development is on Maintenance. Next highest number is on Integration. Last is on New development.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Coupling&lt;br /&gt;&lt;/strong&gt;Loose Coupling – Want to make it possible for the creator of the service to make adjustments without requiring the consumer to alter their use of the service. Decouple the life cycle of the consumer from the life cycle of the provider.&lt;br /&gt;&lt;br /&gt;Synchronous vs. Asynchronous – not really significant in SOA. These terms are more specific to the requirements of the system, but not specific to SOA and decoupling. Most SOA implementations will use both.&lt;br /&gt;&lt;br /&gt;Interface and Implementation – allows a service to change without requiring changes of the service consumers. Important in an SOA architecture. SOA ensures the interface contract is the ONLY means of interaction.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Publication, Discovery and Binding&lt;br /&gt;&lt;/strong&gt;Registry exists as a broker&lt;br /&gt;Service is published as a service definition to the Registry&lt;br /&gt;Service Provider registers as a provider of an implementation&lt;br /&gt;Consumer requests a service from the registry&lt;br /&gt;Registry makes a decision and provides “handle” to the service.&lt;br /&gt;Consumer then connects to service&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SOA integration&lt;br /&gt;&lt;/strong&gt;Integrate Once, use many, consistent access, lower total cost&lt;br /&gt;Adaptable to change&lt;br /&gt;Incremental approach – start small, add new integration services over time as part of specific projects&lt;br /&gt;Flexibility increases with each new service&lt;br /&gt;&lt;br /&gt;SOA and Web Services by Eric Newcommer – “Not a bad book” – decent book RE: Web services, but weak regarding SOA overall. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Best Practices in SOA Development&lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;MDA Overview&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Model Driven Architecture&lt;br /&gt;&lt;br /&gt;Business Model -&gt; Application Model -&gt; Implementation Model -&gt; Code&lt;br /&gt;&lt;br /&gt;Model – a representation of the system. A model describes part of the function, structure and/or behavior of a system.&lt;br /&gt;&lt;br /&gt;Formal Model – a representation of the system conforming to rigorous rules All Model Based Development models are formal&lt;br /&gt;&lt;br /&gt;Model should be platform independent – independent of the language/technology used to build it. Also independent of any hardware.&lt;br /&gt;&lt;br /&gt;PSM – platform specific&lt;br /&gt;&lt;br /&gt;PIM – Platform independent&lt;br /&gt;&lt;br /&gt;Tools exist that can generate code based on well defined models. Use of these tools is convenient and saves cost, but regardless, the process of building models accurately (theoretically) makes app dev/maintenance easier and more flexible.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Applying MDA to SOA&lt;br /&gt;&lt;/em&gt;More SOA app initiatives are bottom up rather than top down. Top Down is based on a Business Process Model. Bottom Up is trying to leverage an existing service or service enable legacy systems. Best approach is “middle out”&lt;br /&gt;&lt;br /&gt;Process Overview&lt;br /&gt;· Understand Use Cases – not too detailed&lt;br /&gt;· Specify Scenarios – show flow of use cases with actors&lt;br /&gt;· Design/Align Information Model&lt;br /&gt;· Understand Overall Context&lt;br /&gt;· Look for appropriate patterns&lt;br /&gt;· Identify Service and Interface Style&lt;br /&gt;· Define Documents&lt;br /&gt;· Define Service Implementation&lt;br /&gt;· Look for appropriate patterns&lt;br /&gt;· Information Transformation follows data flow&lt;br /&gt;&lt;br /&gt;SOA should implement the most important things first; shared information and shared functions.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;Threat Modeling: Creating Secure Applications &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Agenda is based on two books:&lt;br /&gt;Writing Secure Code and Threat Modeling&lt;br /&gt;&lt;br /&gt;Threat Modeling (book) – good place to start, but getting long in the tooth. Great if you are just getting started.&lt;br /&gt;&lt;br /&gt;void main() {&lt;br /&gt;char buf[512];&lt;br /&gt;gets(buf);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The above is vulnerable to a buffer overflow.&lt;br /&gt;&lt;br /&gt;Java Principle – As you work on an application, it gets better and better.&lt;br /&gt;This is a fallacy. The likelihood of bugs is no more or less with each release.&lt;br /&gt;&lt;br /&gt;“Security is all about data. Attacks are via data. What they are looking for is data.” therefore&lt;br /&gt;“The ultimate safe program is one that takes in no data and produces no results.”&lt;br /&gt;&lt;br /&gt;What are threat personas?&lt;br /&gt;A systems’ anti-users&lt;br /&gt;- based on real-world data. There are five behaviors and eight actual personas&lt;br /&gt;&lt;br /&gt;“One person’s feature is another person’s exploit”&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Author&lt;br /&gt;Vandal – Curiosity; usually script kiddie&lt;br /&gt;Trespasser – after personal fame – want to make a mark and get credit for it - usually hobbyist/hacker&lt;br /&gt;Personal Gain – Thief – actually after the data to take advantage of it – usually hobbyist, but many expert&lt;br /&gt;National Interest – spy – experts and specialists&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;&lt;u&gt;Some Important Definitions&lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;&lt;em&gt;Threat Agents &lt;/em&gt;– someone who could do harm to a system (adversary)&lt;br /&gt;&lt;em&gt;Threat &lt;/em&gt;– An adversary’s goal&lt;br /&gt;&lt;em&gt;Threat Tree &lt;/em&gt;– A graphical representation of security-relevant pre-conditions in a system&lt;br /&gt;&lt;em&gt;Vulnerability &lt;/em&gt;– a flaw in the system that could be exploited&lt;br /&gt;&lt;em&gt;Asset &lt;/em&gt;– Something of value to the valid users and adversaries alike&lt;br /&gt;&lt;em&gt;Attack &lt;/em&gt;– When a motivated and sufficiently skilled threat agent takes advantage of a vulnerability&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Threat Model &lt;/em&gt;– describes a system’s threat profile&lt;br /&gt;&lt;br /&gt;Classic Threat Modeling&lt;br /&gt;Collect Background Information -&gt; Model the System -&gt; Determine Threats&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Collect Background Information&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Identify Scenarios&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;how the system is intended to be used (or not intended) in deployment&lt;br /&gt;Help us understand what was considered in security model in the first place&lt;br /&gt;Identify External Dependencies&lt;br /&gt;Dependencies / requirements outside of our system/model&lt;br /&gt;Implementation Assumptions&lt;br /&gt;Assumptions should be validated on completion of implementation&lt;br /&gt;Identify external security notes&lt;br /&gt;Counterpart to external dependencies&lt;br /&gt;Identify internal security notes&lt;br /&gt;Makes model more clear&lt;br /&gt;Explain tradeoff made in design or implementation of the system that affect security&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Model the System&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;Modeling is critical to determining threats; helps us understand adversary’s view of the system; helps team understand internal workings&lt;br /&gt;Identify Entry Points&lt;br /&gt;Define the boundaries of the system being modeled&lt;br /&gt;List all places where the system consumes or provides data including actions on behalf of third parties&lt;br /&gt;Often obvious, but may not be. Reading files from the system is an entry point.&lt;br /&gt;Identify Assets&lt;br /&gt;Those things (concrete and abstract) that could be targets of an attack by an adversary&lt;br /&gt;Assets should be nouns&lt;br /&gt;Assets can be widely varies; data in a database, network coherency on a peer to peer application&lt;br /&gt;Identify Trust Levels&lt;br /&gt;Have preconditions (authentication)&lt;br /&gt;Trust levels characterize either entry points or assets&lt;br /&gt;Trust level specific to the entry point of asset&lt;br /&gt;Create flow diagrams / process models&lt;br /&gt;Describe processing on the threat path&lt;br /&gt;Threat Path is the processing that occurs based on the input to the enumerated entry points&lt;br /&gt;Follow the processing from entry point – determine what it does (or can do to data)&lt;br /&gt;Create Data Flow Diagrams&lt;br /&gt;Context Diagram&lt;br /&gt;Keep modeling until there are no more multi-processes&lt;br /&gt;Building a DFD&lt;br /&gt;Identify the actors and where data moves in and out&lt;br /&gt;Break-down HOW data moves in and out&lt;br /&gt;Keep these at the high level&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;&lt;em&gt;Determine Threats&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;Enumerate threats – creates a threat profile&lt;br /&gt;Threats with valid attack paths are vulnerabilities&lt;br /&gt;Threats are verbs&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;STRIDE&lt;/strong&gt; – types of threats to a system (all known threats to date fall into these types)&lt;br /&gt;&lt;strong&gt;S&lt;/strong&gt;poofing – pose as another user&lt;br /&gt;&lt;strong&gt;T&lt;/strong&gt;ampering – modification of data&lt;br /&gt;&lt;strong&gt;R&lt;/strong&gt;epudiation – deniability of malicious acts&lt;br /&gt;&lt;strong&gt;I&lt;/strong&gt;nformation (disclosure)&lt;br /&gt;&lt;strong&gt;D&lt;/strong&gt;enial of Service&lt;br /&gt;&lt;strong&gt;E&lt;/strong&gt;levation of Privilege&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;DREAD&lt;/strong&gt; – means of characterizing the risk associated with a vulnerability&lt;br /&gt;&lt;strong&gt;D&lt;/strong&gt;amage Potential – extent of possible damage&lt;br /&gt;&lt;strong&gt;R&lt;/strong&gt;eproducibility – how easy is it repeat the attack with success&lt;br /&gt;&lt;strong&gt;E&lt;/strong&gt;xploitability – Effort required to execute the attack in the first place&lt;br /&gt;&lt;strong&gt;A&lt;/strong&gt;ffected Users –ratio of installed instances affected is exploit is widely available&lt;br /&gt;&lt;strong&gt;D&lt;/strong&gt;iscoverability – how likely the unpatched exploit is to be found by others&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CIA&lt;/strong&gt; – &lt;strong&gt;C&lt;/strong&gt;onfidentiality / &lt;strong&gt;I&lt;/strong&gt;ntegrity / &lt;strong&gt;A&lt;/strong&gt;vailability&lt;br /&gt;&lt;br /&gt;Threat models should include review from outside parties.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;font-size:130%;"&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;So far, so good. The SOA class was too slow to start and too quick at the end. Bored me and then lost me. Security course was very good. Lots of useful tools and examples. Nice exercise. I'm definitely growing more and more interested in this aspect of our field....&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-115313855476810495?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/115313855476810495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=115313855476810495' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115313855476810495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115313855476810495'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/07/ad-world-day-1.html' title='AD World - Day 1'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-115188773975292250</id><published>2006-07-02T20:48:00.000-04:00</published><updated>2007-01-11T21:50:26.466-05:00</updated><title type='text'>Writing Secure Code - Authentication</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;There are numerous authentication mechanisms to choose from. If not correctly selected and implemented, the authentication mechanism can expose vulnerabilities that attackers can use to gain access to your system.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;font-size:130%;"&gt;Vulnerabilities &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;Network Eavesdropping &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;If authentication credentials are passed in plaintext, an attacker armed with basic network monitoring software on a host on the same network can capture traffic and obtain user names and passwords.&lt;br /&gt;Note: This type of attack implies the network has already been compromised.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;Brute Force Attacks&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Brute force attacks rely on computational power to crack hashed passwords or other secrets secured with hashing and encryption. Brute force attacks typically involve trying to work through all possible key combinations to decrypt a string and are, therefore, difficult to accomplish. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;Dictionary Attacks &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;This attack is used to obtain passwords held as hashes. On such systems, users are authenticated by re-computing the hash based on the user-supplied password value and comparing it against the system-stored hash value. If an attacker manages to obtain the list of hashed passwords, a brute force attack can be used to crack the password hashes.&lt;br /&gt;With the dictionary attack, an attacker uses a program to iterate through all of the words in a dictionary and computes the hash for each word. The resultant hash is compared with values in the data store. Weak passwords such as “Yankees” or “Mustang” will be cracked quickly. Stronger passwords such as “RuN4PhuN”, are less likely to be cracked.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="_Toc138834456"&gt;&lt;span style="font-family:lucida grande;"&gt;Cookie Replay Attacks&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;span style="font-family:lucida grande;font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;With this type of attack, the attacker captures the user’s authentication cookie using monitoring software and replays it to the application to gain access under a false identity. See Session Hijacking and Replay and Man in the Middle Attacks for more information.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="_Toc138834457"&gt;&lt;span style="font-family:lucida grande;"&gt;Credential Theft&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;span style="font-family:lucida grande;font-size:100%;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;If your application implements its own user store containing user account names and passwords, compare its security to the credential stores provided by the platform, for example, a Microsoft Active Directory® service user store. Current implementation uses Active Directory® as the user store, but Gemstone should not rely solely on the fortitude of the chosen user store.&lt;br /&gt;Browser history and cache also store user login information for future use. If the terminal is accessed by someone other than the user who logged on, and the same page is hit, the saved login will be available. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a name="_Toc138834458"&gt;&lt;span style="font-family:lucida grande;"&gt;Recommendations&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:lucida grande;font-size:100%;"&gt; &lt;/span&gt;&lt;br /&gt;· Secure the channel&lt;br /&gt;· Encrypt it&lt;br /&gt;· Strong authentication requirements&lt;br /&gt;· Avoid holding long sessions&lt;br /&gt;· Re-Authenticate&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-115188773975292250?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/115188773975292250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=115188773975292250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115188773975292250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115188773975292250'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/07/writing-secure-code-authentication.html' title='Writing Secure Code - Authentication'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-115188660989024225</id><published>2006-07-02T19:45:00.000-04:00</published><updated>2006-07-02T20:42:46.126-04:00</updated><title type='text'>Writing Secure Code - Input Validation</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;There are a number of attacks an intruder can use that take advantage of the common assumption that data supplied by users while filling out a Web form is safe. Improper checks against data supplied by users can make the site vulnerable to a number of different attacks.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;font-size:180%;"&gt;Vulnerabilities&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Buffer Overflows&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Buffer overflow attacks have been around for decades. A buffer overflow attack can either result in a denial of service or it can cause code injected by the attacker to be run on the server. .NET code is not as susceptible to buffer overflows because the code base is better managed and array bounds are checked before arrays are accessed. Even .NET sites can be susceptible where unmanaged APIs or COM objects are involved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Cross Site Scripting&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;In Cross Site Scripting (XSS), an attacker takes advantage of poor handling of data either at entry or display. This technique can be used to gather confidential user information or to impersonate users and achieve access to the Web application with the same rights as the impersonated user. Cross Site Scripting is a technique commonly associated with phishing.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;SQL Injection&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;In SQL Injection, and attacker takes advantage of poorly handled data and weakly constructed queries to a SQL Database. Most commonly, this is on screens where developers are relying on input from the end user to filter or sort data and then the data provided by the end users is not properly validated.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;font-size:180%;"&gt;Recommendations&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Validate all input all the time&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Assume all input is malicious, regardless of source and handle it as such. You can’t be certain that a service, file share, or database you work with has not been compromised. You absolutely can’t be certain that a user is who they claim they are or has good intentions.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Do not assume that data validation only need to take place at a single layer of the application. Verify data at all levels of the application. If any one layer is circumvented or compromised, the remaining layers must perform their due diligence to assure the integrity of the system.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;font-size:100%;"&gt;Use common validation routines&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Make input validation a core element of your application development strategy. Create shared validation routines for all common routines such as email, zip code, phone numbers, etc. This ensures validation is consistent and makes maintenance much easier.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Be careful about page or module specific validation. Make sure this approach is truly necessary and then attempt to leverage as much of the common routines as possible.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Constrain and sanitize&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;em&gt;Constrain&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;To constrain data is to allow only expected characters or patterns to be submitted. This is commonly accomplished through the application or regular expressions. However it is applied, the idea is to check the data for type, length, format, and range, considering all data that fails to meet the criteria as bad. We would check string patterns and reject any that did not match our specific rules. This not only eliminates errant characters, but further assures the accuracy of the data stored.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;In the case of an age field, for example, the length would be at least one and no more than three and only digits would be acceptable. Any string not matching this pattern would be rejected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;/^[0-9]{1,3}$/&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;An email address would be more complicated. The following pattern is good for most email addresses. It must start with a character, followed by any number of word characters, dots, or hyphens, followed by either a character or digit, followed by “@”, followed by either an IP Address or a character, followed by any series of word characters, dots, or hyphens, followed by either a character or a digit, followed by a dot, and two to four characters.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@([0-9]{2,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})([a-zA-Z][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z]{2,4})$&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;em&gt;Sanitize&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;To sanitize data is to transform the data into a safe format. This is different than constraint. In constraint, we do not allow data that does not match our patterns. In sanitization, we alter the data to ensure it is not harmful. This may include stripping nulls or other extended characters from strings or escaping out values so they are treated as literals.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;In the simple example shown below, we remove the characters, whereas in actual code, we may choose to replace the characters with displayable representations, such as replacing “&lt;” with “&amp;lt;”.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;function RemoveBad(InStr){&lt;br /&gt;InStr = InStr.replace(/\&lt;/G,""); InStr="InStr.replace(/\"&gt;/g,"");&lt;br /&gt;InStr = InStr.replace(/\"/g,"");&lt;br /&gt;InStr = InStr.replace(/\'/g,"");&lt;br /&gt;InStr = InStr.replace(/\%/g,"");&lt;br /&gt;InStr = InStr.replace(/\;/g,"");&lt;br /&gt;InStr = InStr.replace(/\(/g,"");&lt;br /&gt;InStr = InStr.replace(/\)/g,"");&lt;br /&gt;InStr = InStr.replace(/\&amp;/g,"");&lt;br /&gt;InStr = InStr.replace(/\+/g,"");&lt;br /&gt;&lt;br /&gt;return InStr;&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;The HTMLEncode method will escape out HTML Characters and the URLEncode method will ensure a URL is a valid URI request. These should be a required part of your standard input/output data handling.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Set the Character Set&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;If the character set of a page is not explicitly defined, the server is unable to determine which characters are special. This ambiguity can be exploited by hackers because filters for special characters are that much more difficult to create.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Character coding for HTML and HTTP was intended to default to ISO-8859-1, but many browsers did not support this encoding by default. Version 4 of the HTML standard now allows for any character encoding to be used, unless explicitly indicated in the page header.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Recommendation is to set all pages to the same character set, consistent with the server. The following shows a simple example of how to set the character set to ISO-8859-1 in an HTML page. This can be done through a more universal means such as a standard include file for all page headers or use of page templates.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;HTML SAMPLE&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;This is a sample HTML page&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-115188660989024225?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/115188660989024225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=115188660989024225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115188660989024225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115188660989024225'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/07/writing-secure-code-input-validation.html' title='Writing Secure Code - Input Validation'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-115188049896823536</id><published>2006-07-02T18:25:00.000-04:00</published><updated>2006-07-02T18:48:19.006-04:00</updated><title type='text'>Wine and Friends</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;For those of you who know me, you know I am not much of a sophisticate. In fact, I am to sophisticate as Keanu Reeves is to extraordinary thespian. If you don't know any better, you might mistake either of us as our respective pairing.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;This past weekend was a wonderful experience for my wife and me. Some friends invited us out to dinner and a wine tasting. Now, as fairly recent graduates from the school of "White Zinfandel is the only wine I know", we were in over our heads. And I was intimidated. We were to meet a third couple for the dinner. Both of the other couples are quite well versed in wines. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;We explained very early in the evening that we knew little, if anything, about wine. Once confessed, I felt better. At least I didn't have to pretend. But much to our delight, they were more than happy to help us learn. Through the entire five course meal, they explained the origins of the various wines, the flavors, and the proper pairings with particular foods. They showed us how to take in the boquet, swirl, sample the boquet again, and finally taste.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Of course one evening does not make us experts. This is certainly an area of knowledge where the more you know, the more you realize how little you know. It takes years to develop a proper pallet and decades to become an expert.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;But it took only one evening to make good friends.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-115188049896823536?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/115188049896823536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=115188049896823536' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115188049896823536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115188049896823536'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/07/wine-and-friends.html' title='Wine and Friends'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-115188960153543872</id><published>2006-07-01T14:32:00.000-04:00</published><updated>2006-07-03T01:21:56.993-04:00</updated><title type='text'>Zoho Writer</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Most of you have heard of &lt;/span&gt;&lt;a href="http://spreadsheets.google.com/"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Google Spreadsheets&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;. If you haven't, you should certainly check them out. For the Excel officianado (Mr. oz108us, you know who you are), the Google sheets will be nothing but an exercise in frustration and limited functionality. But for us commoners who don't do much beyond keep lists and 0ccassionally SUM() or AVG() a column, they rock! And they are far more affordable than Excel.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Now I've found &lt;/span&gt;&lt;a href="http://www.nytimes.com/2006/06/17/technology/17money.html?ex=1308196800&amp;en=4ebab743f01863c5&amp;amp;ei=5088&amp;partner=rssnyt&amp;amp;emc=rss"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Zoho Writer&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;. Currently a free service, Zoho Writer allows you to draft documents on-line with nothing but a browser. I took a document I had written in Word, copied and pasted it into Zoho and the content transferred perfectly, formatting, style definitions, and ALL. Very nice.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-115188960153543872?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/115188960153543872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=115188960153543872' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115188960153543872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115188960153543872'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/07/zoho-writer.html' title='Zoho Writer'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-115085625665100163</id><published>2006-06-20T21:57:00.000-04:00</published><updated>2006-06-20T22:21:34.676-04:00</updated><title type='text'>Something is wrong with the system!</title><content type='html'>Once again inspired by something I found on &lt;a href="http://thedailywtf.com/forums/thread/74323.aspx"&gt;the Daily WTF.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A few years ago, I worked with a team of developers on their in-house order entry system. The system had been written over the course of several years with no real architectural plan. Just build it as they ask for it. Of course, the system was wrought with issues. But, it did the job well enough and the company was convinced they were so unique in the way they took and filled orders, that this piece of custom software was the ONLY solution they would ever be able to use.&lt;br /&gt;&lt;br /&gt;When I got involved, the team was in a maintenance phase between projects. They were slowly ticking away at the literally thousands of bug reports from customers; addressing them one at a time in no particular order.&lt;br /&gt;&lt;br /&gt;We decided to take a slightly different approach and look at the bug lists from a 10,000 foot view. We lumped bugs together into various categories and discovered that record locking was the root cause of MANY of the issues. So we set about creating a standard for record locking and transaction management. We then tackled this one problem everywhere it existed, starting with the most critical code first.&lt;br /&gt;&lt;br /&gt;After some time, we had made a significant dent in the code and our tests were looking good. In fact, CPU utilization in the test and QA environments appeared lower.  But the real test would be Production.&lt;br /&gt;&lt;br /&gt;We rolled the first wave of changes out to Production, and as was tradition, the developers crossed their fingers, waited for the phone calls, and readied themselves to do battle, real-time, with code in Production.&lt;br /&gt;&lt;br /&gt;Hours passed without a single complaint. Finally, near the end of the day, helpdesk received a call from order entry.&lt;br /&gt;&lt;br /&gt;"Something is wrong with the system." the caller reported, "I think we're losing orders!"&lt;br /&gt;&lt;br /&gt;"What makes you think orders are lost?" asked the helpdesk staffer.&lt;br /&gt;&lt;br /&gt;"Well", explained the caller, "we usually get a message every hour or so telling us the order table can't be updated because somebody else is using it. This happens anytime several of us are taking calls. We just wait a minute and then hit 'OK' again and it works"&lt;br /&gt;&lt;br /&gt;"Yes...?"&lt;br /&gt;&lt;br /&gt;"Well, I checked with the other folks here and nobody got the message today. Not one of us. But we were all taking calls and placing orders. The system must be losing some of the orders if it doesn't know we're all putting them in."&lt;br /&gt;&lt;br /&gt;Yes, folks, the system was "broken" because it wasn't generating enough errors.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-115085625665100163?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/115085625665100163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=115085625665100163' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115085625665100163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115085625665100163'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/06/something-is-wrong-with-system.html' title='Something is wrong with the system!'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-115085470916875161</id><published>2006-06-20T21:42:00.000-04:00</published><updated>2006-06-20T21:51:49.180-04:00</updated><title type='text'>Staffing for Web Development</title><content type='html'>I just read a decent article on &lt;a href="http://www.alistapart.com/articles/manpoweronawebteam"&gt;how to plan the size of your team for Web development.&lt;/a&gt; The article discusses the atributes of a site that can be used as indicators of staffing needs; size, complexity, and activity. Of course, a large, transactional site with millions of visitors per day would need a large staff to keep it running.&lt;br /&gt;&lt;br /&gt;It occurred to me as I was reading the article, that I have never worked anywhere that provided adequate staffing for the continued development and maintenance of their Web sites.&lt;br /&gt;&lt;br /&gt;One employer had over 100 people on staff dedicated to a single site. That sounds like enough, but the truth was we struggled to keep up with the demand for new development much less had time to do maintenance and refactoring correctly.&lt;br /&gt;&lt;br /&gt;It seems to me that this very phenomenon is a root cause for the number of sites vulnerable to hacks months if not years after they've been made public and standards have been written to block against them. One can still get into some pretty serious sites with basic Cross Site Scripting.&lt;br /&gt;&lt;br /&gt;But, I digress... I think. My original point was simply that companies regularly understaff their Web efforts. &lt;a href="http://www.alistapart.com/articles/manpoweronawebteam"&gt;Shane Diffily's article&lt;/a&gt; may help you build your case for the extra staffing you know you so desparately need.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-115085470916875161?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/115085470916875161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=115085470916875161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115085470916875161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115085470916875161'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/06/staffing-for-web-development.html' title='Staffing for Web Development'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-115085756646306925</id><published>2006-06-11T20:39:00.000-04:00</published><updated>2006-07-03T05:25:57.480-04:00</updated><title type='text'>Interesting Stances on Enterprise Architects</title><content type='html'>&lt;div id="idOWAReplyText8004" dir="ltr"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Setting Values versus Enforcing Standards&lt;br /&gt;&lt;/span&gt;&lt;a href="http://scottmark.blogspot.com/2006/02/setting-values-versus-enforcing.html"&gt;&lt;u&gt;&lt;span style="font-family:verdana;font-size:85%;color:#0000ff;"&gt;http://scottmark.blogspot.com/2006/02/setting-values-versus-enforcing.html&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Enterprise Architects Versus The World&lt;br /&gt;&lt;/span&gt;&lt;a href="http://enterprisearchitect.typepad.com/ea/2006/04/enterprise_arch.html"&gt;&lt;u&gt;&lt;span style="font-family:verdana;font-size:85%;color:#0000ff;"&gt;http://enterprisearchitect.typepad.com/ea/2006/04/enterprise_arch.html&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Differences Between 'What' &amp;amp; 'How' in Enterprise Architecture&lt;br /&gt;&lt;/span&gt;&lt;a href="http://enterprisearchitect.typepad.com/ea/2006/03/differences_bet.html"&gt;&lt;u&gt;&lt;span style="font-family:verdana;font-size:85%;color:#0000ff;"&gt;http://enterprisearchitect.typepad.com/ea/2006/03/differences_bet.html&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-115085756646306925?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/115085756646306925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=115085756646306925' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115085756646306925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115085756646306925'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/06/interesting-stances-on-enterprise.html' title='Interesting Stances on Enterprise Architects'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-115085767527190567</id><published>2006-06-06T19:53:00.000-04:00</published><updated>2006-06-20T22:43:08.396-04:00</updated><title type='text'>Resources</title><content type='html'>&lt;div id="idOWAReplyText64983" dir="ltr"&gt;&lt;div dir="ltr"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;A list of resources provided by my friend Eric.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Blogs:&lt;/span&gt; &lt;ul&gt;&lt;p&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Andrew Hunt (agile manifesto signer &amp; pragmatic programmer)  &lt;/span&gt;&lt;a href="http://"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt; &lt;/span&gt;&lt;a href="file://www.toolshed.com/blog/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;www.toolshed.com/blog/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Dave Thomas (agile manifesto signer &amp; pragmatic programmer)  &lt;/span&gt;&lt;a href="http://blogs.pragprog.com/cgi-bin/pragdave.cgi"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://blogs.pragprog.com/cgi-bin/pragdave.cgi&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Char Fowler   &lt;/span&gt;&lt;a href="http://www.chadfowler.com/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.chadfowler.com/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Scott Guthrie (manager for VS2005, IIS and ASP.NET)   &lt;/span&gt;&lt;a href="http://weblogs.asp.net/scottgu/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://weblogs.asp.net/scottgu/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Nikhil Kothari (one of Scott G's minions working on Atlas)   &lt;/span&gt;&lt;a href="http://www.nikhilk.net/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.nikhilk.net/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Rockford Lhotka   &lt;/span&gt;&lt;a href="http://www.lhotka.net/WeBlog/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.lhotka.net/WeBlog/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Martin Fowler  (agile manifest signer &amp; software architect)   &lt;/span&gt;&lt;a href="http://martinfowler.com/bliki/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://martinfowler.com/bliki/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Eric Sink   &lt;/span&gt;&lt;a href="http://software.ericsink.com/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://software.ericsink.com/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;David Hayden   &lt;/span&gt;&lt;a href="http://www.davidhayden.com/davidhayden/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.davidhayden.com/davidhayden/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Joel Spolski   &lt;/span&gt;&lt;a href="http://www.joelonsoftware.com"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.joelonsoftware.com&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Darrell Norton   &lt;/span&gt;&lt;a href="http://codebetter.com/blogs/darrell.norton/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://codebetter.com/blogs/darrell.norton/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Scott Hansel   &lt;/span&gt;&lt;a href="http://www.hanselminutes.com/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.hanselminutes.com/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;TestDriven.NET Blog   &lt;/span&gt;&lt;a href="http://weblogs.asp.net/NUnitAddin/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://weblogs.asp.net/NUnitAddin/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Looks Good Works Well   &lt;/span&gt;&lt;a href="http://looksgoodworkswell.blogspot.com/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://looksgoodworkswell.blogspot.com/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Don Smith (Dev Consultant at Microsoft specializing in Web Services)  &lt;/span&gt;&lt;a href="http://blogs.msdn.com/donsmith/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://blogs.msdn.com/donsmith/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Technology Architecture &amp; Projects   &lt;/span&gt;&lt;a href="http://enterprisearchitect.typepad.com/ea/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://enterprisearchitect.typepad.com/ea/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Nick Malik (Enterprise Architect for Microsoft)   &lt;/span&gt;&lt;a href="http://blogs.msdn.com/nickmalik/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://blogs.msdn.com/nickmalik/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Dominic Baier (.NET security oriented stuff)   &lt;/span&gt;&lt;a href="http://www.leastprivilege.com/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.leastprivilege.com/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;General Info:&lt;/span&gt; &lt;ul&gt;&lt;p&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;TheServerSide.NET  &lt;/span&gt;&lt;a href="http://www.theserverside.net"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.theserverside.net&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;O'Reilly Windows DevCenter   &lt;/span&gt;&lt;a href="http://www.windowsdevcenter.com/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.windowsdevcenter.com/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;.NET Architecture Center: SOA   &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/architecture/soa/default.aspx"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://msdn.microsoft.com/architecture/soa/default.aspx&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;PatternShare Community   &lt;/span&gt;&lt;a href="http://patternshare.org/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://patternshare.org/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;SOA Hub   &lt;/span&gt;&lt;a href="http://www.soahub.com/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.soahub.com/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Tools:&lt;/span&gt; &lt;ul&gt;&lt;p&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Vil (provides metrics, visualization, querying, and analysis of .NET assemblies, classes, and methods)   &lt;/span&gt;&lt;a href="http://www.1bot.com/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.1bot.com/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Simian (similarity analyzer reporting)   &lt;/span&gt;&lt;a href="http://www.redhillconsulting.com.au/products/simian/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.redhillconsulting.com.au/products/simian/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;NCover (unit test code coverage reporting)   &lt;/span&gt;&lt;a href="http://ncover.org/site/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://ncover.org/site/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;NDepend (code dependency reporting/visualization)   &lt;/span&gt;&lt;a href="http://www.ndepend.com/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.ndepend.com/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;TestDriven.NET (formerly NUnitAddin)   &lt;/span&gt;&lt;a href="http://www.testdriven.net/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.testdriven.net/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Refactor Pro (killer refactoring tool)   &lt;/span&gt;&lt;a href="http://www.devexpress.com/Products/NET/Refactor/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.devexpress.com/Products/NET/Refactor/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;NAnt (build tool like BusyBee but supported by the author)   &lt;/span&gt;&lt;a href="http://nant.sourceforge.net/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://nant.sourceforge.net/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;CruiseControl.NET (continuous integration engine)   &lt;/span&gt;&lt;a href="http://ccnet.thoughtworks.com/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://ccnet.thoughtworks.com/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;GhostDoc (inline doc helper)   &lt;/span&gt;&lt;a href="http://www.roland-weigelt.de/ghostdoc/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.roland-weigelt.de/ghostdoc/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Rhino Mocks (fantastic mock object engine)   &lt;/span&gt;&lt;a href="http://www.ayende.com/projects/rhino-mocks.aspx"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.ayende.com/projects/rhino-mocks.aspx&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Selenium (automated web app testing tool)   &lt;/span&gt;&lt;a href="http://www.openqa.org/selenium/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.openqa.org/selenium/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;IeUnit   &lt;/span&gt;&lt;a href="http://ieunit.sourceforge.net/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://ieunit.sourceforge.net/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;PesterCat (automated web app testing)   &lt;/span&gt;&lt;a href="http://www.pestercat.com/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.pestercat.com/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;SW Explorer Automation (automate IE to run web app testing)   &lt;/span&gt;&lt;a href="http://home.comcast.net/~furmana/SWIEAutomation.htm"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://home.comcast.net/~furmana/SWIEAutomation.htm&lt;/span&gt;&lt;/u&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Libraries:&lt;/span&gt; &lt;ul&gt;&lt;p&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;AJAX &amp; Effects (specifically Javascript) Related:&lt;/span&gt; &lt;ul&gt;&lt;p&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Prototype (javascript framework)   &lt;/span&gt;&lt;a href="http://prototype.conio.net/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://prototype.conio.net/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Dojo (like Prototype, but different approach)   &lt;/span&gt;&lt;a href="http://dojotoolkit.org/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://dojotoolkit.org/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Javascript Windows   &lt;/span&gt;&lt;a href="http://blogus.xilinus.com/pages/javawin"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://blogus.xilinus.com/pages/javawin&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;OpenRico (behavior/effect library works with Prototype)   &lt;/span&gt;&lt;a href="http://openrico.org/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://openrico.org/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Script.aculo.us (behavior/effect library works with Prototype)   &lt;/span&gt;&lt;a href="http://script.aculo.us/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://script.aculo.us/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;AJAX Libraries tracker:  &lt;/span&gt;&lt;a href="http://mail.interaktonline.com/ajax/libs/index.php"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://mail.interaktonline.com/ajax/libs/index.php&lt;/span&gt;&lt;/u&gt;&lt;/a&gt; &lt;/p&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;AJAX (server side) Related:&lt;/span&gt; &lt;ul&gt;&lt;p&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;AJAX.NET Professional   &lt;/span&gt;&lt;a href="http://www.schwarz-interactive.de/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.schwarz-interactive.de/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Microsoft Atlas   &lt;/span&gt;&lt;a href="http://weblogs.asp.net/atlas"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://weblogs.asp.net/atlas&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Microsoft Atlas related   &lt;/span&gt;&lt;a href="http://www.nikhilk.net/"&gt;&lt;u&gt;&lt;span style="font-family:Arial;font-size:85%;color:#0000ff;"&gt;http://www.nikhilk.net/&lt;/span&gt;&lt;/u&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-115085767527190567?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/115085767527190567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=115085767527190567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115085767527190567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/115085767527190567'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/06/resources.html' title='Resources'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-114912407674043708</id><published>2006-05-31T20:49:00.000-04:00</published><updated>2006-05-31T21:07:56.750-04:00</updated><title type='text'>Correcting Browser Image Flicker</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;I was reading Slash Dot today and noticed that any time I ran the mouse over the logo, it flashed; how annoying.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I asked a colleague about it and he suggested I change the settings on my browser, because it had to do with image cache. While I could adjust my browser, it seemed there must be another way.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;It turns out you can &lt;/span&gt;&lt;a href="http://www.aspnetresources.com/blog/cache_control_extensions.aspx"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;adjust the settings on your server&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt; to set default caching requirements for graphics and this will fix the problem, but it didn't seem right that I would have to ask my hosting provider to change server settings either....&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;So a little more searching and I found the solution (assuming you're using ASP.NET). You can create an HTTP handler for images. I'm not going to go into the details here, since &lt;/span&gt;&lt;a href="http://www.groovybits.com/leftoverbits/flickerfix.aspx"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;this article is all you need.&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-114912407674043708?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/114912407674043708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=114912407674043708' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114912407674043708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114912407674043708'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/05/correcting-browser-image-flicker.html' title='Correcting Browser Image Flicker'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-114912173099429698</id><published>2006-05-31T20:18:00.000-04:00</published><updated>2006-05-31T20:37:17.836-04:00</updated><title type='text'>How to make that change</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;If you want to change something in your life, it's common to try to stop the behaviors you don't like. While this certainly seems logical, it seldom works. The reason is simple - you create a vacuum where the old behaviors used to be. Since nature hates a vacuum it will fill the new void with anything it can find - typically the very behaviors you're trying to stop (since they're so familiar). Instead of stopping certain behaviors, try focusing on what you want to create and begin using the new behaviors. Over time, the old behaviors will be replaced by the new.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;One place this idea can be important is in changing your management style. If you are abrupt or abrasive with employees and WANT to change the behavior, focus on being patient and pleasant rather than focusing on stopping the undersireable behavior. &lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;What about weight loss? How many people focus on what they have to stop doing in order to lose that extra weight; quit snacking so much, don't eat such large meals, no snacks before bed, etc. Focus on what you should do instead; eat smaller meals more often during the day, eat fresh fruits, eat fresh vegetables, etc.&lt;/p&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Try it yourself: &lt;/strong&gt;&lt;br /&gt;1. Identify something in your life you feel you've got to stop doing.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;2. Think about what you need to start doing in that area.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;3. Be specific and write down the specific new behaviors.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;4. Don't punish yourself for the old behaviors. Stay committed to the new ones and the old ones will eventually disappear.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-114912173099429698?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/114912173099429698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=114912173099429698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114912173099429698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114912173099429698'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/05/how-to-make-that-change.html' title='How to make that change'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-114895399497643003</id><published>2006-05-30T21:52:00.000-04:00</published><updated>2006-05-31T20:29:27.393-04:00</updated><title type='text'>Real Fight Clubs</title><content type='html'>&lt;p&gt;URL: &lt;a class="blines2" title="Link to another page in this blog" href="http://www.bloglines.com/preview?siteid=957722&amp;amp;itemid=11913" target="_blank"&gt;Techies beat each other bloody at fight club&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Wow. This is disturbing. I've met maybe five people in my 15+ years in IT that I suspect would willingly attend one of these events. And I am sorry, but I do not believe this is a latent behavior learned from video games nor do I think this is anything close to normal. This isn't about being a man, this is something else entirely. Sparring with a trained karate partner is not the same as bare knuckle brawls for "fun."&lt;/p&gt;&lt;p&gt;I loved the movie Fight Club. It was edgy and a great fantasy. But it was fantasy and nothing more. If I recall, the guy that started the whole thing ended up to be a nut job who killed himself. Not your typical hero.&lt;/p&gt;&lt;p&gt;This, ultimately, is few dozen men in serious need of therapy.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-114895399497643003?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/114895399497643003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=114895399497643003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114895399497643003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114895399497643003'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/05/real-fight-clubs.html' title='Real Fight Clubs'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-114895212929984415</id><published>2006-05-29T21:16:00.000-04:00</published><updated>2006-05-29T21:22:09.300-04:00</updated><title type='text'>Happy Birthday</title><content type='html'>Happy Birthday to my wonderful wife!&lt;br /&gt;&lt;br /&gt;Today is my wife's birthday. We did not do much celebrating as we spent the day driving home from Chicago where we visited with my parents and grand parents. I drive for a few hours, my wife drove for a couple, and our daughter drove for a couple. I think the last part, where my daughter drove (she's 16), was most taxing on my wife.&lt;br /&gt;&lt;br /&gt;Anyway, I wanted to tell my wife in front of witnesses and the cyber world just how much she means to me. We've been married for 17 years and I look forward to seeing her every day. She is my strength, my lighthouse in the storm. She always provides me the right path, no matter how lost I feel and she is with me even in my lonliest moments.&lt;br /&gt;&lt;br /&gt;Jennifer, you are most precious to me. And I love you.&lt;br /&gt;&lt;br /&gt;Always.&lt;br /&gt;&lt;br /&gt;Michael&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-114895212929984415?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/114895212929984415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=114895212929984415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114895212929984415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114895212929984415'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/05/happy-birthday.html' title='Happy Birthday'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-114860122809158680</id><published>2006-05-27T19:50:00.000-04:00</published><updated>2006-06-18T21:42:14.743-04:00</updated><title type='text'>Interesting Take On Gender</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Thank you to my friend Leonid for sharing this one.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;One of Leonid's customers has a home-grown CRM system. They asked him to perform some analysis on the database for code inefficiencies, vulnerabilities, etc. While reviewing the system, he came across a table named "SEX_TBL" and, of course, was just too curious.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;A simple query showed four rows in the table:&lt;br /&gt;Male&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Female&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Unknown&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Group&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Male and Female seem self-explanatory. Even unknown in these modern times makes sense, but &lt;em&gt;Group Sex&lt;/em&gt; always meant something entirely different to me....&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-114860122809158680?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/114860122809158680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=114860122809158680' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114860122809158680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114860122809158680'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/05/interesting-take-on-gender.html' title='Interesting Take On Gender'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-114860216374450002</id><published>2006-05-26T05:58:00.000-04:00</published><updated>2006-05-26T06:10:41.723-04:00</updated><title type='text'>ReSharper 2.0 Released!</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Ok, so I'm a little slow on this one....&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;JetBrains has released the 2.0 version of their Visual Studio add-in. For those of you who are unfamiliar with ReSharper, it provides error highlighting, unit test integration, and support for code refactoring all from the Visual Studio IDE&lt;span style="font-family:verdana;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; Certainly worth a look.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;You can download a 30-day trial from &lt;/span&gt;&lt;a href="http://www.jetbrains.com/resharper/index.html"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;the JetBrains site&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-114860216374450002?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/114860216374450002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=114860216374450002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114860216374450002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114860216374450002'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/05/resharper-20-released.html' title='ReSharper 2.0 Released!'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-114860139397150469</id><published>2006-05-25T19:54:00.000-04:00</published><updated>2006-05-25T19:58:37.850-04:00</updated><title type='text'>Injection Rejection</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;I've been studying Cross-Site Scripting and SQL Injection lately for a security project I am working on. I found this article on one of my favorite "free time" sites and thought I would share.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Thanks to Alex Papadimoulis for his site &lt;/span&gt;&lt;a class="blines3" title="Link outside of this blog" href="http://thedailywtf.com/" target="_blank"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;The Daily WTF&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:0;"&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;URL: &lt;/span&gt;&lt;/span&gt;&lt;a class="blines2" title="Link to another page in this blog" href="http://www.bloglines.com/preview?siteid=231683&amp;amp;itemid=732" target="_blank"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Injection Rejection&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-114860139397150469?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/114860139397150469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=114860139397150469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114860139397150469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114860139397150469'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/05/injection-rejection.html' title='Injection Rejection'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-114860098343003205</id><published>2006-05-25T19:48:00.000-04:00</published><updated>2006-05-25T19:49:43.433-04:00</updated><title type='text'>ASP Impersonation</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Had an interesting challenge over the weekend. I received a call from an individual who is running a web site written in ASP. The site started out as a simple HTML site, but slowly grew into something more and is now a form of revenue for him. I won't get into any more detail than this about the specific site - for his own protection. ;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Again, skipping some details, the site authenticates users against a database and then sets a cookie to indicate the user is authenticated. The challenge was that a specific page in the site needed elevated rights in order to update some text files within the site - think of it as one web page writing another.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Anyway, this posed a serious problem for him. The users are not actually authenticated against the server as NT users, so everything they do is under the IUSR_MACHINE user account. In order to be able to update text files, he elevated the rights of the IUSR_MACHINE user. he then was concerned he may have granted all of his pages too much access to his machine.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;So how to get around this?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;In ASP.NET, it is relatively easy, but with ASP, we have a challenge.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;After some digging, I found a simple way to write a DLL that does the lifting for you and allows you to temporarily act as another user.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;We implemented the spiffy new DLL, lowered the rights of IUSR_MACHINE and created a separate user with the rights desired. The page now impersonates the desired user and then reverts back to IUSR_MACHINE when done.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;This post will help you get started:&lt;br /&gt;&lt;/span&gt;&lt;a class="blines3" title="Link outside of this blog" href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;248187" target="_blank"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;http://support.microsoft.com/default.aspx?scid=kb;EN-US;248187&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-114860098343003205?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/114860098343003205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=114860098343003205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114860098343003205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114860098343003205'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/05/asp-impersonation.html' title='ASP Impersonation'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-114859468950336310</id><published>2006-05-23T17:59:00.000-04:00</published><updated>2006-05-26T06:11:26.163-04:00</updated><title type='text'>Excellent Series on Management</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Prior to my new assignment of Senior Application Architect, I was a Software Development Manager. I loved that job and I took it quite seriously. Having been recently hired into a tumultuous environment where upper and middle management was changing every 2 months (I was unaware of this phenomena until AFTER I was hired), I found myself with a relatively new and dysfunctional team. I struggled for a bit, trying to get them to come together as a unit, but I discovered a series of books written by Patrick Lencioni that helped a great deal.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;These books may seem too simple at first. As a manager, you are faced with complex problems. A simple parable with simple lessons could not possibly hold the answers to your unique and difficult situation. The lessons learned in these books are not new and they are quite simple. Most important, they are effective.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Anyway, I recommend them for a read.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://search.barnesandnoble.com/booksearch/isbnInquiry.asp?z=y&amp;isbn=0739332570&amp;amp;itm=9"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;T&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;he Five Dysfunctions of a Team&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="blines3" title="Link outside of this blog" href="http://search.barnesandnoble.com/booksearch/isbnInquiry.asp?z=y&amp;isbn=0787976377&amp;amp;itm=5" target="_blank"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Overcoming the Five Dysfunctions of a Team&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="blines3" title="Link outside of this blog" href="http://search.barnesandnoble.com/booksearch/isbnInquiry.asp?z=y&amp;isbn=0787944335&amp;amp;itm=3" target="_blank"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Death By Meeting&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;a href="http://search.barnesandnoble.com/booksearch/isbnInquiry.asp?z=y&amp;isbn=0787944335&amp;amp;itm=3"&gt;The Five Temptations of a CEO&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;He has others, but I have yet to read them.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I will be concentrating more on technology and less on people as my new role demands. I do hope someday (soon) I will be able to put my focus on people once again. Perhaps I will find an employer who truly values people and recognizes that it is through leadership, not management, that the best results are achieved.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-114859468950336310?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/114859468950336310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=114859468950336310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114859468950336310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114859468950336310'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/05/excellent-series-on-management.html' title='Excellent Series on Management'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28751042.post-114859538912920294</id><published>2006-05-22T20:15:00.000-04:00</published><updated>2006-05-26T06:14:18.150-04:00</updated><title type='text'>How Would You Feel?</title><content type='html'>&lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:85%;"&gt;About a week ago, I was informed that my bright shiny and rewarding job of Software Development Manager was being eliminated in an organizational flattening. This was a "no fault" move - I had done nothing wrong, the organization was simply too management heavy. As a result, I was being provided the opportunity to select from any one of three different jobs to fulfill; Lead Software Developer, Lead Project Manager, or Senior Application Architect. I was to receive the same compensation for the new role.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:85%;"&gt;Many of you may say, "That is unfortunate, but at least you are still employed and did not get a cut in pay." While I recognize both of these factors, I struggle to find genuine tiding in the situation and certainly no comfort.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:85%;"&gt;Less than one month prior to this flattening of the organization, a new manager was moved into our group. There was no requisition open. We had no need. He brought with him only two employees and no defined set of responsibility. He had, however, been with the company for ten years compared to my one. He had been a manager in another division of IT, but had grown weary of the struggles of the role and asked that he be placed somewhere else. This gentleman is now my boss and has inherited my 17 person organization as his own.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:85%;"&gt;It is the orchestration of these events that trouble me. There was no open position or need in our group for another manager. We were already manager heavy and we knew it. He was unhappy in his role and wanted something else. I suspect he makes a great deal more than I and could not have been easily moved into a lower pay-grade without a salary adjustment or extremely limited opportunity for raises and incentives.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:85%;"&gt;Should they reward his loyalty? Certainly. Should I or anyone else have to lose their position because he elected to step down from his own? I think not. And to add insult to injury, he is now my boss.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:85%;"&gt;I will work to fulfill my new role to the best of my abilities. But for this company to ask or expect my loyalty from this point forward is perverted.&lt;/span&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-1618666766387470";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28751042-114859538912920294?l=docs-thoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://docs-thoughts.blogspot.com/feeds/114859538912920294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28751042&amp;postID=114859538912920294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114859538912920294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28751042/posts/default/114859538912920294'/><link rel='alternate' type='text/html' href='http://docs-thoughts.blogspot.com/2006/05/how-would-you-feel.html' title='How Would You Feel?'/><author><name>Doc Logic</name><uri>http://www.blogger.com/profile/13995478618622729688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
