<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://skysigal.com/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://skysigal.com/feed.php">
        <title>Notes it:ad:patterns</title>
        <description></description>
        <link>https://skysigal.com/</link>
        <image rdf:resource="https://skysigal.com/lib/tpl/bootstrap3/images/favicon.ico" />
       <dc:date>2026-04-19T11:14:07+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/adapter?rev=1699068518&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/antipatterns_high_coupling?rev=1699068520&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/antipatterns?rev=1699137138&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/app_settings_host_settings_user_settings_strategy?rev=1699068521&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/apphost_strategy?rev=1699137139&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/appsettings_are_dead_strategy?rev=1699068520&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/bridge?rev=1699137139&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/builder?rev=1699068522&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/cache_is_king_strategy?rev=1699137141&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/cache_like_crazy_strategy?rev=1699137141&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/command_pattern?rev=1699068522&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/complex_is_not_complicated_strategy?rev=1699068523&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/composite_application_strategy?rev=1699068524&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/contract_first_development_strategy?rev=1699068525&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/controlled_admin_access_strategy?rev=1699068525&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/convention_over_configuration_strategy?rev=1699068526&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/ddd?rev=1699068526&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/dependency_injection_strategy?rev=1699137142&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/dependency_wrapping_strategy?rev=1699068527&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/designing_from_the_ui_will_kill_your_company?rev=1699068528&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/don_t_drop_your_pants_strategy?rev=1699068529&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/dry_strategy?rev=1699068529&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/dto_strategy?rev=1699068530&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/dual_access_to_data?rev=1699137142&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/egg_yolk_strategy?rev=1699068530&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/enums_mapped_to_code_tables_strategy?rev=1699068531&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/enums_start_with_undefined_strategy?rev=1699068531&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/extension_methods_strategy?rev=1699068532&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/gawd_classes?rev=1699068533&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/gift_package_strategy?rev=1699068534&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/head_last_pattern?rev=1699068534&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/help_is_for_failures_strategy?rev=1699068535&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/home?rev=1699068535&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/identitymap?rev=1699068536&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/it_s_all_hierarchical_after_all?rev=1699068536&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/kiss_strategy?rev=1699068537&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/less_is_more_strategy?rev=1699068538&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/localisable_data_strategy?rev=1699137143&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/lowest_framework_profile?rev=1699068539&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/many_assemblies_strategy?rev=1699068539&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/minimal_dependency_cardinality?rev=1699068540&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/ms_is_a_vendor_strategy?rev=1699068540&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/ms_sells_vs_not_good_practices_strategy?rev=1699068541&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/mvc?rev=1699068542&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/mvp?rev=1699068542&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/namespace_as_problem_boundary_strategy?rev=1699068543&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/naming_strategies?rev=1699068544&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/objects_as_messages_strategy?rev=1699068544&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/ot?rev=1699068545&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/page_number_isn_t_a_search_criteria_strategy?rev=1699068545&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/prototype?rev=1699068546&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/public_apis_ain_t_ui_apis_strategy?rev=1699068546&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/reference_data_strategy?rev=1699068547&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/reference_downwards_only?rev=1699068549&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/repository_pattern?rev=1699068550&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/sass?rev=1699137144&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/secure_the_line_strategy?rev=1699068551&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/security_is_an_application_concern?rev=1699068553&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/service_pattern?rev=1699068553&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/single_page_website_strategy?rev=1699068554&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/single_sign_on_strategy?rev=1699068554&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/soc?rev=1699068555&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/solid_dip?rev=1699068556&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/solid_lsp?rev=1699068557&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/solid_ocp?rev=1699068558&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/solid_srp?rev=1699068558&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/solid?rev=1699068555&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/specification_pattern?rev=1699068559&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/tier_strategy?rev=1699068559&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/triplea_s_strategy?rev=1699068560&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/unitofwork_pattern?rev=1699068560&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/vendors_suck_strategy?rev=1699068561&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/version_your_messages_strategy?rev=1699068562&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/views_are_not_screens_strategy?rev=1699068563&amp;do=diff"/>
                <rdf:li rdf:resource="https://skysigal.com/it/ad/patterns/wimp?rev=1699137148&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://skysigal.com/lib/tpl/bootstrap3/images/favicon.ico">
        <title>Notes</title>
        <link>https://skysigal.com/</link>
        <url>https://skysigal.com/lib/tpl/bootstrap3/images/favicon.ico</url>
    </image>
    <item rdf:about="https://skysigal.com/it/ad/patterns/adapter?rev=1699068518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Adapter</title>
        <link>https://skysigal.com/it/ad/patterns/adapter?rev=1699068518&amp;do=diff</link>
        <description>IT:AD:Patterns:Adapter

	* (UP)
patterns index



Notes

* Has similar traits to IT:AD:Patterns:Adapter

	*  The difference is that the IT:AD:Patterns:Adapter is usually designed afterwards, to get things to work, whereas the IT:AD:Patterns:Adapter is usually designed beforehand, to allow for future independent change.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/antipatterns_high_coupling?rev=1699068520&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:AntiPatterns:HighCoupling</title>
        <link>https://skysigal.com/it/ad/patterns/antipatterns_high_coupling?rev=1699068520&amp;do=diff</link>
        <description>IT:AD:Patterns:AntiPatterns:HighCoupling

	* (UP)
patterns index



Example

Diagramatically, I think the image below is pretty descriptive...  the situation is that everything has a dependency to just about everything else. There&#039;s nothing that you can move without having to test a whole bunch of other things it could have affected, and so on</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/antipatterns?rev=1699137138&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T22:32:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:AntiPatterns</title>
        <link>https://skysigal.com/it/ad/patterns/antipatterns?rev=1699137138&amp;do=diff</link>
        <description>IT:AD:Patterns:AntiPatterns

	* (UP)
patterns index</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/app_settings_host_settings_user_settings_strategy?rev=1699068521&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:App Settings != Host Settings != User Settings Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/app_settings_host_settings_user_settings_strategy?rev=1699068521&amp;do=diff</link>
        <description>IT:AD:Patterns:App Settings != Host Settings != User Settings Strategy

	* (UP)
patterns index



Settings are Serious business. 

Taken way too lightly in most cases.

Notes

Application Settings

Application Settings are setting that are set for the whole application, across all the load balanced web servers.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/apphost_strategy?rev=1699137139&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T22:32:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:AppHost Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/apphost_strategy?rev=1699137139&amp;do=diff</link>
        <description>IT:AD:Patterns:AppHost Strategy

	* UP
	* See also:
		* IT:AD:Patterns:Head Last Pattern


Summary

The AppHost strategy is one where a thin *.exe (or other entry point to your application) is used host another assembly that contains the application logic.

The strategy of designing your app to be a</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/appsettings_are_dead_strategy?rev=1699068520&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:AppSettings Are Dead Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/appsettings_are_dead_strategy?rev=1699068520&amp;do=diff</link>
        <description>IT:AD:Patterns:AppSettings Are Dead Strategy

	* (UP)

Summary

I have a real thing against .NET AppSettings, and hate their use for a couple of reasons. 

First of all, AppSettings were deprecated 10 years ago in favour for .NET20&#039;s typed+defaultSettingCapable</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/bridge?rev=1699137139&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T22:32:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Adapter</title>
        <link>https://skysigal.com/it/ad/patterns/bridge?rev=1699137139&amp;do=diff</link>
        <description>IT:AD:Patterns:Adapter

	* (UP)
patterns index



	* Used to work around incompatibilities in two libs.
	* Often accomplised by wrapping.
		* eg: wrapping OtherLib (eg: MailLibrary) within a class of ours (SmtpService), that implements our interface (eg: IMessageService).</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/builder?rev=1699068522&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Builder</title>
        <link>https://skysigal.com/it/ad/patterns/builder?rev=1699068522&amp;do=diff</link>
        <description>IT:AD:Patterns:Builder

	* (UP)
patterns index



Builders focus on constructing and configuring complex aggregate objects.

Notes

Designs often start simply, only needing a , and evolve towards an , IT:AD:Patterns:Prototype or IT:AD:Patterns:Builder as the developer discovers where more flexibiility is required.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/cache_is_king_strategy?rev=1699137141&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T22:32:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Cache Is King Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/cache_is_king_strategy?rev=1699137141&amp;do=diff</link>
        <description>IT:AD:Patterns:Cache Is King Strategy

	* (UP)
patterns index



Communicating over the wire between tiers in any shape or form -- whether it be from the web browser in the Client Tier to the Presentation Tier, or from the Presentation Tier to the Application Logic Tier, or from the Application layer to the DBMS, is</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/cache_like_crazy_strategy?rev=1699137141&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T22:32:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Cache Like Crazy Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/cache_like_crazy_strategy?rev=1699137141&amp;do=diff</link>
        <description>IT:AD:Patterns:Cache Like Crazy Strategy

	* (UP)
patterns index



Summary

See: IT:AD:Patterns:Cache Is King Strategy</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/command_pattern?rev=1699068522&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Command Pattern</title>
        <link>https://skysigal.com/it/ad/patterns/command_pattern?rev=1699068522&amp;do=diff</link>
        <description>IT:AD:Patterns:Command Pattern

	* (UP)
patterns index


	* See also:
		* IT:AD:Patterns:CQRS
		* IT:AD:Patterns &lt;- operational transformation
		* &lt;http://www.pluralsight.com/courses/aspdotnet-undo&gt;
			* Not exactly Command Pattern, but close enough.



The *Classic* ICommand

The basic Command pattern is as old as the hills. Characteristics of the ICommandpatterns index</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/complex_is_not_complicated_strategy?rev=1699068523&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Complex is not Complicated Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/complex_is_not_complicated_strategy?rev=1699068523&amp;do=diff</link>
        <description>IT:AD:Patterns:Complex is not Complicated Strategy

	* (UP)
patterns index



You&#039;ll often hear the statement &#039;Keep it Simple&#039;. (see IT:AD:Patterns:KISS Strategy). 

Yet I&#039;d propose that Simple isn&#039;t something you should automatically be striving for. It depends on the field (Management yes, Development</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/composite_application_strategy?rev=1699068524&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Composite Application Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/composite_application_strategy?rev=1699068524&amp;do=diff</link>
        <description>IT:AD:Patterns:Composite Application Strategy

	* (UP)

The Composite Application Block is a well known framework for developing WPF and Silverlight applications, that demonstrates how to deliver modular software.

Most of the strategies used within this desktop framework are portable to a Web application as well.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/contract_first_development_strategy?rev=1699068525&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Contract First Development Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/contract_first_development_strategy?rev=1699068525&amp;do=diff</link>
        <description>IT:AD:Patterns:Contract First Development Strategy

	* (UP)
patterns index



	&quot;&quot;If I had eight hours to chop down a tree, I&#039;d spend six sharpening the axe&quot; &quot;

Abraham Lincoln

&lt;http://en.wikipedia.org/wiki/Design_by_contract&gt;

Resources

	* http://msdn.microsoft.com/en-us/magazine/ee335699.aspx</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/controlled_admin_access_strategy?rev=1699068525&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Controlled Admin Access Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/controlled_admin_access_strategy?rev=1699068525&amp;do=diff</link>
        <description>IT:AD:Patterns:Controlled Admin Access Strategy

	* (UP)
patterns index



Summary

There&#039;s a big difference between using a service and administering a service. Not everybody needs eccess to the later.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/convention_over_configuration_strategy?rev=1699068526&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Convention Over Configuration Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/convention_over_configuration_strategy?rev=1699068526&amp;do=diff</link>
        <description>IT:AD:Patterns:Convention Over Configuration Strategy

	* (UP)
patterns index



Pattern

	&quot;Convention over configuration (also known as coding by convention) is a software design paradigm which seeks to decrease the number of decisions that developers need to make, gaining simplicity, but not necessarily losing flexibility.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/ddd?rev=1699068526&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:DDD</title>
        <link>https://skysigal.com/it/ad/patterns/ddd?rev=1699068526&amp;do=diff</link>
        <description>IT:AD:Patterns:DDD

	* (UP)
patterns index



## Domain Oriented Design ##
* THe app&#039;s architecture is oriented/dominated by focus on encapsulating the Domain (the Client&#039;s Biz) isolating it from technology (perishable).
* Notice the word Oriented: the app is skewed (if you will) towards the Domain, not the Technology.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/dependency_injection_strategy?rev=1699137142&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T22:32:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Dependency Injection Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/dependency_injection_strategy?rev=1699137142&amp;do=diff</link>
        <description>IT:AD:Patterns:Dependency Injection Strategy

	* (UP)
patterns index



----------</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/dependency_wrapping_strategy?rev=1699068527&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Dependency Wrapping Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/dependency_wrapping_strategy?rev=1699068527&amp;do=diff</link>
        <description>IT:AD:Patterns:Dependency Wrapping Strategy

	* (UP)
patterns index



The worst thing you can do for the portability and longevity of your code is to tie to a vendor of some kind (IT:AD:Patterns:Vendors Suck Strategy). 

The reason is that everything gets stale at point. DbConnections have had a long lifespan, and lasted a good 15 years, but even they are looking stale in an era of NoSql, etc.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/designing_from_the_ui_will_kill_your_company?rev=1699068528&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Designing from the UI will kill your company</title>
        <link>https://skysigal.com/it/ad/patterns/designing_from_the_ui_will_kill_your_company?rev=1699068528&amp;do=diff</link>
        <description>IT:AD:Patterns:Designing from the UI will kill your company

	* (UP)
patterns index



Managers are not supposed to know how to develop or put together the architecture of an application. If they did, they would still be developers, and not managers. Even if they did develop at some point in the past, it&#039;s doubtful that they were</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/don_t_drop_your_pants_strategy?rev=1699068529&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Don&#039;t Drop your pants Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/don_t_drop_your_pants_strategy?rev=1699068529&amp;do=diff</link>
        <description>IT:AD:Patterns:Don&#039;t Drop your pants Strategy

	* (UP)
patterns index



Security is hard with a capital H. 

Mainly because there&#039;s only a handful of you developing the walls, while there&#039;s a whole horde of people banging away at your ports.

So you want to ensure that you don&#039;t give them the</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/dry_strategy?rev=1699068529&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:DRY Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/dry_strategy?rev=1699068529&amp;do=diff</link>
        <description>IT:AD:Patterns:DRY Strategy

	* (UP)
patterns index



“Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.”

Notes

As opposed to the AntiPattern: IT:AD:Design:AntiPatterns/Copy/Paste/Compile Pattern</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/dto_strategy?rev=1699068530&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:DTO Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/dto_strategy?rev=1699068530&amp;do=diff</link>
        <description>IT:AD:Patterns:DTO Strategy

	* (UP)
patterns index



Summary

It/all/depends/on/how/you/architect/your/application.  If you have a complex business model, you may want to look into domain-driven-design.  If your model is simplistic maybe a simple 2 or 3-layer (UI,BLL,DAL) will be sufficient. If your model can easily be reflected in your UI then maybe look into NakedObjects.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/dual_access_to_data?rev=1699137142&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T22:32:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:DualAccessToData</title>
        <link>https://skysigal.com/it/ad/patterns/dual_access_to_data?rev=1699137142&amp;do=diff</link>
        <description>IT:AD:Patterns:DualAccessToData

	* (UP)
patterns index



----------

Most Apps do either:

	* Visualize (Querying and Reporting)
	*  Do not need up to the second information.
		*  Have little to nothing to do with Business Rules.
				*  Do have Authorisation, but that is Infrastructure.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/egg_yolk_strategy?rev=1699068530&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Egg Yolk Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/egg_yolk_strategy?rev=1699068530&amp;do=diff</link>
        <description>IT:AD:Patterns:Egg Yolk Strategy

	* (UP)
patterns index



Summary

See: IT:AD:Patterns:Dependency Wrapping Strategy</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/enums_mapped_to_code_tables_strategy?rev=1699068531&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Enums Mapped to Code Tables Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/enums_mapped_to_code_tables_strategy?rev=1699068531&amp;do=diff</link>
        <description>IT:AD:Patterns:Enums Mapped to Code Tables Strategy

	* (UP)
patterns index



Relational data (ie lookup tables) can be that categorised as either:

	* immutable: static/unchanging throughout the foreseable future, and
	* mutable: addable by the end user, support, etc.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/enums_start_with_undefined_strategy?rev=1699068531&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Enums Start with Undefined Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/enums_start_with_undefined_strategy?rev=1699068531&amp;do=diff</link>
        <description>IT:AD:Patterns:Enums Start with Undefined Strategy

	* (UP)
patterns index



Process

Consider 



Much as you don&#039;t want to admit it...zero&#039;s are a common source of bugs. So if your code somehow ends up setting a property to:



You&#039;ll be surprised to know that it won&#039;t complain, even if 0 is not a member of the enum list.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/extension_methods_strategy?rev=1699068532&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Extension Methods Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/extension_methods_strategy?rev=1699068532&amp;do=diff</link>
        <description>IT:AD:Patterns:Extension Methods Strategy

	* (UP)
patterns index



Summary

See IT:AD:Patterns:Objects as Messages (using ExtensionMethods)</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/gawd_classes?rev=1699068533&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:GAWD Classes</title>
        <link>https://skysigal.com/it/ad/patterns/gawd_classes?rev=1699068533&amp;do=diff</link>
        <description>IT:AD:Patterns:GAWD Classes

	* (UP)

Summary

Gawd Awful Witless Development
Gigantic Aweful ...</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/gift_package_strategy?rev=1699068534&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Gift Package Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/gift_package_strategy?rev=1699068534&amp;do=diff</link>
        <description>IT:AD:Patterns:Gift Package Strategy

	* (UP)

The first experience a client has of your work is not the UI. 

In many cases, it&#039;s the Installation Package.

Packages show you are meticulous and value your customer. When delivering a birthday gift, you take the time to wrap it up. Not wrapping it, gives the recipient the idea that your deliverable is an afterthought, of less import.  It devalues your work.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/head_last_pattern?rev=1699068534&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Head Last Pattern</title>
        <link>https://skysigal.com/it/ad/patterns/head_last_pattern?rev=1699068534&amp;do=diff</link>
        <description>IT:AD:Patterns:Head Last Pattern

	* (UP)
patterns index



----------

Summary

Really it&#039;s just a strategy and not a pattern, but i couldn&#039;t resist the pun on the Head First Patterns Book.

The UI is the closest link to the  -- and therefore what a good manager will push for you to deliver the functionality in this release on time, on budget,</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/help_is_for_failures_strategy?rev=1699068535&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Help is for Failures Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/help_is_for_failures_strategy?rev=1699068535&amp;do=diff</link>
        <description>IT:AD:Patterns:Help is for Failures Strategy

	* (UP)
patterns index



If the app you design requires a Help Doc or an online failure, it&#039;s an admission of failure as to your UI. Plain and simple.

If you had really wrestled with UX principles in order to express 

	*</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/home?rev=1699068535&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns</title>
        <link>https://skysigal.com/it/ad/patterns/home?rev=1699068535&amp;do=diff</link>
        <description>IT:AD:Patterns

	* (UP)
patterns index


	* See also:
		* IT:AD:Principles
		* IT:AD:Design
		* Business:Concepts:Pattern

	* &lt;http://skysigal.com/blogs/sigal/sky/errata/entries/patterns_to_thrive._always&gt;



Essential Patterns

They&#039;re all important! But if one had to hone in on essential ones to understand before attempting resilient software, I&#039;d propose starting with getting the following under your belt:</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/identitymap?rev=1699068536&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:IdentityMap</title>
        <link>https://skysigal.com/it/ad/patterns/identitymap?rev=1699068536&amp;do=diff</link>
        <description>IT:AD:Patterns:IdentityMap

	* (UP)
patterns index



----------

Ensures that each object gets loaded only once by keeping every loaded object in a map. Looks up objects using the map when referring to them.

Sequence Diagram

[MF]</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/it_s_all_hierarchical_after_all?rev=1699068536&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:It&#039;s all Hierarchical After All</title>
        <link>https://skysigal.com/it/ad/patterns/it_s_all_hierarchical_after_all?rev=1699068536&amp;do=diff</link>
        <description>IT:AD:Patterns:It&#039;s all Hierarchical After All

	* (UP)
patterns index



Summary

All current 2D applications -- whether  based, or  based, are hierarchical in nature.

Strategy

In pure html terms (not talking about the abomination of ) that means that a web page is easily laid out as a series of elements within a UL/LI structure. The rest is just judicious use of</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/kiss_strategy?rev=1699068537&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:KISS Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/kiss_strategy?rev=1699068537&amp;do=diff</link>
        <description>IT:AD:Patterns:KISS Strategy

	* (UP)
patterns index



Keep It Simple, Stupid.

Simple code is:

	* Easy to read: simple code needs little to no additional documentation to be understood.
* Easy to use: whoever is using your code will find it intuitive to use your objects.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/less_is_more_strategy?rev=1699068538&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Less is More Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/less_is_more_strategy?rev=1699068538&amp;do=diff</link>
        <description>IT:AD:Patterns:Less is More Strategy

	* (UP)
patterns index



	&quot;Il semble que la perfection soit atteinte non quand il n’y a plus rien à ajouter, mais quand il n’y a plus rien à retrancher.’&quot;


-

 Antoine de Saint Exupéry, Terre des Hommes, 1939, p. 60.

	&quot;(‘…perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away’</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/localisable_data_strategy?rev=1699137143&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T22:32:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Localisable Data Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/localisable_data_strategy?rev=1699137143&amp;do=diff</link>
        <description>IT:AD:Patterns:Localisable Data Strategy

	* (UP)
patterns index</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/lowest_framework_profile?rev=1699068539&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Lowest Framework Profile</title>
        <link>https://skysigal.com/it/ad/patterns/lowest_framework_profile?rev=1699068539&amp;do=diff</link>
        <description>IT:AD:Patterns:Lowest Framework Profile

	* (UP)
patterns index



For the maintainability of an application over the lifetime of it&#039;s business domain&#039;s usefulness, the software may need to ported to use a more current Presentation framework.

Whereas the software might require running on a server today, the application might be of use on a cellphone in the future, keeping the same business logic, but changing the Presentation Layer from ASP.MVC to Windows8 Silverlight, and the datastorage.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/many_assemblies_strategy?rev=1699068539&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:28:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Many Assemblies Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/many_assemblies_strategy?rev=1699068539&amp;do=diff</link>
        <description>IT:AD:Patterns:Many Assemblies Strategy

	* (UP)
patterns index



A hallmark of modular, testable, maintainable code is the use of as multiple assemblies in the application -- as many as possible being reusable library code.

Pros and Cons

Spoiler Alert: there are no Cons:</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/minimal_dependency_cardinality?rev=1699068540&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Minimal Dependency Cardinality</title>
        <link>https://skysigal.com/it/ad/patterns/minimal_dependency_cardinality?rev=1699068540&amp;do=diff</link>
        <description>IT:AD:Patterns:Minimal Dependency Cardinality

	* (UP)
patterns index



Writing portable code -- code that can be reused in as many different scenarios as possible -- is not difficult. It just needs planning up front (it&#039;s much much more costly trying to refactor it for portability later).</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/ms_is_a_vendor_strategy?rev=1699068540&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:MS Is A Vendor Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/ms_is_a_vendor_strategy?rev=1699068540&amp;do=diff</link>
        <description>IT:AD:Patterns:MS Is A Vendor Strategy

	* (UP)
patterns index



This is just a reminder that once you understand why IT:AD:Patterns:Vendors Suck Strategy, that you don&#039;t give a free pass to Microsoft. 

Especially because it&#039;s the provider of the most number of software components we use. They have even more of an inpact on our software development costs than any other provider:</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/ms_sells_vs_not_good_practices_strategy?rev=1699068541&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:MS Sells VS (not Good Practices) Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/ms_sells_vs_not_good_practices_strategy?rev=1699068541&amp;do=diff</link>
        <description>IT:AD:Patterns:MS Sells VS (not Good Practices) Strategy

	* (UP)
patterns index



There are times when Patterns and Good Practices seem to fly against what one has learnt from cutting one&#039;s teeth as a developer on Visual Studio.

I&#039;m going to let you in on a little secret: Microsoft doesn&#039;t make any money by making you into a good developer. It&#039;s not their focus.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/mvc?rev=1699068542&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:MVC</title>
        <link>https://skysigal.com/it/ad/patterns/mvc?rev=1699068542&amp;do=diff</link>
        <description>IT:AD:Patterns:MVC

	* (UP)
patterns index



----------

Summary</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/mvp?rev=1699068542&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:MVP</title>
        <link>https://skysigal.com/it/ad/patterns/mvp?rev=1699068542&amp;do=diff</link>
        <description>IT:AD:Patterns:MVP

	* (UP)
patterns index



----------

Summary</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/namespace_as_problem_boundary_strategy?rev=1699068543&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Namespace As Problem Boundary Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/namespace_as_problem_boundary_strategy?rev=1699068543&amp;do=diff</link>
        <description>IT:AD:Patterns:Namespace As Problem Boundary Strategy

	* (UP)
patterns index



It&#039;s true that Namespaces are for grouping common code together -- but that&#039;s not the entire picture.

Namespaces are &#039;problem boundaries&#039;.

Understanding only the first part -- the grouping part</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/naming_strategies?rev=1699068544&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Naming Strategies</title>
        <link>https://skysigal.com/it/ad/patterns/naming_strategies?rev=1699068544&amp;do=diff</link>
        <description>IT:AD:Patterns:Naming Strategies

	* (UP)
patterns index



About

A good name is worth its weight in ...Megabytes.

Notes

Consider using the following:

	* xxxProvider: something that provides something -- but doesn&#039;t handle. Usually expects a single argument.
		* Examples:</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/objects_as_messages_strategy?rev=1699068544&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Objects as Messages (using ExtensionMethods)</title>
        <link>https://skysigal.com/it/ad/patterns/objects_as_messages_strategy?rev=1699068544&amp;do=diff</link>
        <description>IT:AD:Patterns:Objects as Messages (using ExtensionMethods)

	* (UP)

Make no mistake about it, Extension Methods -- although no more than syntatic sugar -- are fundamental paradigm shifters in as much as they afford us the possibility of bridging the divide between OO design and Message design which is more appropriate in a multi-tiered secure web environment.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/ot?rev=1699068545&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns</title>
        <link>https://skysigal.com/it/ad/patterns/ot?rev=1699068545&amp;do=diff</link>
        <description>IT:AD:Patterns

	* (UP)
patterns index


	* See also:
		* IT:AD:Share.JS


Often comes up when discussing the handling of Command Pattern in an multi-user environment.

Resources

* &lt;http://en.wikipedia.org/wiki/Operational_transformation&gt;</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/page_number_isn_t_a_search_criteria_strategy?rev=1699068545&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Page Number Isn&#039;t A Search Criteria Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/page_number_isn_t_a_search_criteria_strategy?rev=1699068545&amp;do=diff</link>
        <description>IT:AD:Patterns:Page Number Isn&#039;t A Search Criteria Strategy

	* (UP)
patterns index



The following -- although common -- makes absolutely no sense: 

	&quot;The search criteria is &quot;John Smith, Page 3, row 2&quot;.&quot;

Stop Using Paging to render records!

It&#039;s a totally outdated design strategy required at the time as a work around to physical limitiations of the 80&#039;s.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/prototype?rev=1699068546&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Prototype</title>
        <link>https://skysigal.com/it/ad/patterns/prototype?rev=1699068546&amp;do=diff</link>
        <description>IT:AD:Patterns:Prototype

	* (UP)
patterns index



Notes

Designs often start simply, only needing a , and evolve towards an , IT:AD:Patterns:Prototype or IT:AD:Patterns:Builder as the developer discovers where more flexibiility is required.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/public_apis_ain_t_ui_apis_strategy?rev=1699068546&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>it:ad:patterns:public_apis_ain_t_ui_apis_strategy</title>
        <link>https://skysigal.com/it/ad/patterns/public_apis_ain_t_ui_apis_strategy?rev=1699068546&amp;do=diff</link>
        <description></description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/reference_data_strategy?rev=1699068547&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Reference Data Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/reference_data_strategy?rev=1699068547&amp;do=diff</link>
        <description>IT:AD:Patterns:Reference Data Strategy

	* (UP)
patterns index



Reference Data (Gender, Countries, InvoiceTypes, etc.) are always required by an application.

Strategy

Technical Requirements

The requirements that must be met are as follows:

* MUST: Reference data must be cached as close to usage as possible, in a format as near as possible to final usage.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/reference_downwards_only?rev=1699068549&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Reference Downward Only</title>
        <link>https://skysigal.com/it/ad/patterns/reference_downwards_only?rev=1699068549&amp;do=diff</link>
        <description>IT:AD:Patterns:Reference Downward Only

	* (UP)
patterns index



Software Circular Dependencies between modules are problematic due to the tight coupling of the mutually dependent modules which renders the separate re-use and testability of a single module impossible.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/repository_pattern?rev=1699068550&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Repository Pattern</title>
        <link>https://skysigal.com/it/ad/patterns/repository_pattern?rev=1699068550&amp;do=diff</link>
        <description>IT:AD:Patterns:Repository Pattern

	* (UP)
patterns index



----------

Mediates between the domain and data mapping layers using a collection-like interface for accessing domain objects.

[MF]

Facts

* [0] Implemented by EF 4.2 DbSet (DbContext implements UnitOfWork Pattern)</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/sass?rev=1699137144&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T22:32:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:SASS</title>
        <link>https://skysigal.com/it/ad/patterns/sass?rev=1699137144&amp;do=diff</link>
        <description>IT:AD:Patterns:SASS

	* (UP)
patterns index


	* Future proofing: The capabilities of the carrier networks and the devices on those networks are ever improving. It is a very expensive and time-consuming process for an enterprise to keep pace with and manage the change. SaaS supports rapid evolution because the cost of research and development is shared among all subscribers, not just one organization.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/secure_the_line_strategy?rev=1699068551&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Secure the Line Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/secure_the_line_strategy?rev=1699068551&amp;do=diff</link>
        <description>IT:AD:Patterns:Secure the Line Strategy

	* (UP)
patterns index



Summary

Using  is only a first line of defense (it does not provide end to end encryption -- only front server to front server encryption) but it is a good start.

Process

Therefore it&#039;s useful to have a way to ensure that all communications with the server are over HTTPS.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/security_is_an_application_concern?rev=1699068553&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Security is an Application concern</title>
        <link>https://skysigal.com/it/ad/patterns/security_is_an_application_concern?rev=1699068553&amp;do=diff</link>
        <description>IT:AD:Patterns:Security is an Application concern

	* (UP)
patterns index



 provides the AuthorizeAttribute, and IT:AD:WCF provides the PrincipalPermissionAttribute (see: IT:AD:WCF:HowTo:Use the PrincipalPermissionAttribute) that look nice and easy -- but should you use them?

Description

I understand the pull of using them...</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/service_pattern?rev=1699068553&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Service Pattern</title>
        <link>https://skysigal.com/it/ad/patterns/service_pattern?rev=1699068553&amp;do=diff</link>
        <description>IT:AD:Patterns:Service Pattern

	* (UP)
patterns index



In an app, it&#039;s surprising how little actually needs state.  I know that sounds weird at first...

Consider how many static methods, helper methods we have in most apps. 

Stuff like: DbHelper, AppSettingsHelper,</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/single_page_website_strategy?rev=1699068554&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Single Page WebSite Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/single_page_website_strategy?rev=1699068554&amp;do=diff</link>
        <description>IT:AD:Patterns:Single Page WebSite Strategy

	* (UP)
patterns index



See http://www.onextrapixel.com/2012/12/13/50-creative-and-inspirational-single-page-websites/ for examples.

The HTML based presentation system I use also follows that paradym:

	* Presentations

Reference

	* http://www.onextrapixel.com/2012/12/13/50-creative-and-inspirational-single-page-websites/</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/single_sign_on_strategy?rev=1699068554&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Single Sign On Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/single_sign_on_strategy?rev=1699068554&amp;do=diff</link>
        <description>IT:AD:Patterns:Single Sign On Strategy

	* (UP)
patterns index



Summary

It&#039;s simple...you can guarantee that you -- as a general application developer -- know far less about security than a hacker that spends his/her day with this subject matter as their only concern.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/soc?rev=1699068555&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:SOC</title>
        <link>https://skysigal.com/it/ad/patterns/soc?rev=1699068555&amp;do=diff</link>
        <description>IT:AD:Patterns:SOC

	* (UP)
patterns index



Separation of Concerns:  the idea that a software system must be decomposed into parts that overlap in functionality as little as possible.

The application of SOLID/Single Responsibility Pattern such that Services focus on their primary area of expertise/concern and delegate to other Services for specialized assistance, rather than use private helper methods. E.g: IActiveDirectoryService may specialize in using LDAP  to communicate with Active Direc…</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/solid_dip?rev=1699068556&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:SOLID/DIP</title>
        <link>https://skysigal.com/it/ad/patterns/solid_dip?rev=1699068556&amp;do=diff</link>
        <description>IT:AD:Patterns:SOLID/DIP

	* (UP)
patterns index



The notion that a class declare in its constructor arguments what services it will need, so that they can be instantiated and injected in.

See: &lt;http://lostechies.com/derickbailey/2011/09/22/dependency-injection-is-not-the-same-as-the-dependency-inversion-principle/&gt;

DIP

Constructors are totally under-appreciated things. 

A class that has a constructor that has no arguments is</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/solid_lsp?rev=1699068557&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:SOLID/LSP</title>
        <link>https://skysigal.com/it/ad/patterns/solid_lsp?rev=1699068557&amp;do=diff</link>
        <description>IT:AD:Patterns:SOLID/LSP

	* (UP)
patterns index



LSP

Interfaces! Everything in the real world is done by Contract (ie Interfaces). 
You buy a bus ticket…and have no idea who will be your bus driver today. 
So why should you classes be so tightly tied to a named class?</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/solid_ocp?rev=1699068558&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:SOLID/OCP</title>
        <link>https://skysigal.com/it/ad/patterns/solid_ocp?rev=1699068558&amp;do=diff</link>
        <description>IT:AD:Patterns:SOLID/OCP

	* (UP)
patterns index



Summary

The Open/Close Principle generally freaks out develops the first time they hear it (“*What do you mean never go back in and fix things?!”). 

That reaction totally makes sense if you generally develop  that do way too much. You’ll never get it right.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/solid_srp?rev=1699068558&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:SOLID/SRP</title>
        <link>https://skysigal.com/it/ad/patterns/solid_srp?rev=1699068558&amp;do=diff</link>
        <description>IT:AD:Patterns:SOLID/SRP

	* (UP)
patterns index



For software to be inexpensively a) maintable, b) enhanceable, it has to be simple enough to be understood by everyone on the team (not only the person who wrote it...) as well as modifyable in a riskless way (changes to one section of the code doesn&#039;t cause the app to break somewhere).</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/solid?rev=1699068555&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:SOLID</title>
        <link>https://skysigal.com/it/ad/patterns/solid?rev=1699068555&amp;do=diff</link>
        <description>IT:AD:Patterns:SOLID

	* (UP)
patterns index



For the moment take a second to view the slides I put together here:



SOLID is pure gold in terms of what it can do to the maintainability of your code. It’s an acronym of 5 other patterns: 

	* Single Resposibility Principle
	* Open Close Principle
	* Liskov&#039;s Substitution Principle
	* Interface Segragation Principle
	* Dependency Inversion Principle

SRP</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/specification_pattern?rev=1699068559&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Specification Pattern</title>
        <link>https://skysigal.com/it/ad/patterns/specification_pattern?rev=1699068559&amp;do=diff</link>
        <description>IT:AD:Patterns:Specification Pattern

	* (UP)
patterns index



Used extensively in .

It&#039;s separating  the  decision  as  to  which object types should be selected in a query from the object that makes the selection.
Writing code like this allows reusing a  Domain Layer Specification within a repository as a method for querying:</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/tier_strategy?rev=1699068559&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Tier Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/tier_strategy?rev=1699068559&amp;do=diff</link>
        <description>IT:AD:Patterns:Tier Strategy

	* (UP)
patterns index



----------

The Tier Strategy is one that uses physically different servers to address different concerns of the whole application.

Description

It&#039;s not a new concept, but years later, there&#039;s still no end of confusion for even seasoned enterprise developers as to what is a 3 tier application, as compared to an N-Tier (ie 4 or more tiers) application.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/triplea_s_strategy?rev=1699068560&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:TripleA&#039;s Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/triplea_s_strategy?rev=1699068560&amp;do=diff</link>
        <description>IT:AD:Patterns:TripleA&#039;s Strategy

	* (UP)
patterns index



Triple A stands for Authentication, Authorisation, Auditing.

Authentication

Never ever ever ever keep your user&#039;s authentication information (username/pwd/contactinfo/challenge) in your applicaition.  You can guarantee that you as a general application developer know far less about security than a hacker that spends his/her day with this subject matter as their only concern.   Use a</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/unitofwork_pattern?rev=1699068560&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:UnitOfWork Pattern</title>
        <link>https://skysigal.com/it/ad/patterns/unitofwork_pattern?rev=1699068560&amp;do=diff</link>
        <description>IT:AD:Patterns:UnitOfWork Pattern

	* (UP)
patterns index



----------

Sumary

According to M.F. a UoW “keeps track of everything you do during a business transaction that can affect the Db. When you&#039;re done, it figures out everything that needs to be done to alter the database as a result of your work.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/vendors_suck_strategy?rev=1699068561&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Vendors Suck Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/vendors_suck_strategy?rev=1699068561&amp;do=diff</link>
        <description>IT:AD:Patterns:Vendors Suck Strategy

	* (UP)
	* See also:
		* IT:AD:Patterns:Egg Yolk Strategy
		* IT:AD:Patterns:Dependency Wrapping Strategy


Vendors - every single last one of them - suck. 

They&#039;re a necessity of course, as they add value to your apps by making available the results of millions of pre-written lines of solution, but at the same time they end up sucking the blood of change/growth/future out of your apps.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/version_your_messages_strategy?rev=1699068562&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Version Your Messages Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/version_your_messages_strategy?rev=1699068562&amp;do=diff</link>
        <description>IT:AD:Patterns:Version Your Messages Strategy

	* (UP)

You can&#039;t get your message schemas back once others have invested time and effort into mapping them into their application. 



You&#039;ll simply get a lot of irate 3rd party developers. Probably vocal irate 3rd party developers.</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/views_are_not_screens_strategy?rev=1699068563&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T03:29:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:Views are not Screens Strategy</title>
        <link>https://skysigal.com/it/ad/patterns/views_are_not_screens_strategy?rev=1699068563&amp;do=diff</link>
        <description>IT:AD:Patterns:Views are not Screens Strategy

	* (UP)
patterns index



Summary

ASP.NET WebForms development, which has dominated the .NET web development landscape for over 10 years, has left it&#039;s mark -- and vocabulary -- on both developers and BA&#039;s. 

This vocabulary is not consistent with performant</description>
    </item>
    <item rdf:about="https://skysigal.com/it/ad/patterns/wimp?rev=1699137148&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-04T22:32:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IT:AD:Patterns:WIMP</title>
        <link>https://skysigal.com/it/ad/patterns/wimp?rev=1699137148&amp;do=diff</link>
        <description>IT:AD:Patterns:WIMP

	* Windows
	* Icons
	* Menus
	* Pointer

Versus: CUTE

	* Contextual 
	* Uncluttered 
	* Touch 
	* Enabled/Environment-Friendly (B/W)</description>
    </item>
</rdf:RDF>
