<?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:blogger='http://schemas.google.com/blogger/2008' 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-667582413309466842</id><updated>2024-09-13T13:13:41.637-05:00</updated><category term="design"/><category term="practices"/><category term="principles"/><category term="cloud"/><category term="performance"/><category term="scalability"/><category term="sdlc"/><category term=".net"/><category term="7habits"/><category term="Cube"/><category term="SP2"/><category term="SQL Server"/><category term="addin"/><category term="addinexpress"/><category term="application"/><category term="architect"/><category term="architecture"/><category term="availability"/><category term="basketball"/><category term="cache"/><category term="coaching"/><category term="data"/><category term="database"/><category term="developer"/><category term="devops"/><category term="dotnet"/><category term="effective"/><category term="exceldna"/><category term="finance"/><category term="innovation"/><category term="leadership"/><category term="lean"/><category term="msoffice"/><category term="network"/><category term="peopleware"/><category term="process"/><category term="security"/><category term="training"/><category term="vsto"/><category term="webapi"/><category term="xbrl"/><title type='text'>Neoclassical Narratives</title><subtitle type='html'>Musings on economics, history, and technology.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tyrisias.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://tyrisias.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>bt</name><uri>http://www.blogger.com/profile/09804796424177219390</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV2JH5aRHTSZKfbBbTRzjITAVYHi2-hvAPjgL1WZpRaiMCF3MH4K_8tmeyy7VH83qZ79SSPCqQyQPTtoXoBG0vwX1NJlCH4whGxC6bqSECZ5BSeqZeoD5r5-1KyOLeRlg/s220/tabbaab-young-faded.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-667582413309466842.post-8395706268879368056</id><published>2017-08-26T15:17:00.001-05:00</published><updated>2017-08-26T15:17:56.667-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="application"/><category scheme="http://www.blogger.com/atom/ns#" term="availability"/><category scheme="http://www.blogger.com/atom/ns#" term="cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="design"/><category scheme="http://www.blogger.com/atom/ns#" term="practices"/><category scheme="http://www.blogger.com/atom/ns#" term="principles"/><category scheme="http://www.blogger.com/atom/ns#" term="scalability"/><category scheme="http://www.blogger.com/atom/ns#" term="security"/><title type='text'>Principles and Practices of Cloud Applications</title><content type='html'>&lt;p class=MsoNormal&gt;&lt;span lang=EN&gt;This article summarizes the essential
principles, patterns, and practices of cloud application architecture and
design that can increase organizational innovation and decrease long-term
system maintenance costs.&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;My primary
sources are the architecture teams at &lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;u&gt;Amazon
Web Services&lt;/u&gt;&lt;/b&gt; and &lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;u&gt;Microsoft
Azure&lt;/u&gt;&lt;/b&gt; as well as my professional experience daily applying these ideas
to production systems.&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;Subsequent
articles will focus on processes and technologies specific to AWS and Azure.&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=EN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=EN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;table class=a border=1 cellspacing=0 cellpadding=0 width=675 style=&#39;margin-left:
 -.25pt;border-collapse:collapse;mso-table-layout-alt:fixed;border:none;
 mso-border-alt:solid black 1.0pt;mso-yfti-tbllook:1536;mso-padding-alt:5.0pt 5.0pt 5.0pt 5.0pt;
 mso-border-insideh:1.0pt solid black;mso-border-insidev:1.0pt solid black&#39;&gt;
 &lt;tr style=&#39;mso-yfti-irow:0;mso-yfti-firstrow:yes&#39;&gt;
  &lt;td valign=top style=&#39;border:solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal align=center style=&#39;text-align:center;line-height:normal;
  mso-pagination:none&#39;&gt;&lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;span lang=EN&gt;Principles&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border:solid black 1.0pt;border-left:none;mso-border-left-alt:
  solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal align=center style=&#39;text-align:center;line-height:normal;
  mso-pagination:none&#39;&gt;&lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;span lang=EN&gt;Patterns&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border:solid black 1.0pt;border-left:none;mso-border-left-alt:
  solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal align=center style=&#39;text-align:center;line-height:normal;
  mso-pagination:none&#39;&gt;&lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;span lang=EN&gt;Practices&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:1&#39;&gt;
  &lt;td valign=top style=&#39;border:solid black 1.0pt;border-top:none;mso-border-top-alt:
  solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;b
  style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;span lang=EN&gt;Scalability&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid black 1.0pt;
  border-right:solid black 1.0pt;mso-border-top-alt:solid black 1.0pt;
  mso-border-left-alt:solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Decomposition&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Partitioning&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Stateless&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Elasticity&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Caching&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;CDN&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Queue Worker&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Pipes and Filters&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Encapsulation&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Materialized View&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Eventual Consistency&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid black 1.0pt;
  border-right:solid black 1.0pt;mso-border-top-alt:solid black 1.0pt;
  mso-border-left-alt:solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Understand customer SLA for performance.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Measure and profile performance with load benchmarks.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Partition and decompose workloads into discrete units.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Partition around data, network, and compute limits.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Design for horizontal scalability (scaling out/in vs. up/down).&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Ensure applications and services are stateless.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Avoid client affinity and server-side session state.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Minimize coordination and shared state.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Queue I/O and CPU intensive requests as background tasks.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Distribute background tasks across multiple workers. &lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Cache items that don’t change much.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Use CDN for caching static data.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Reduce chatty interactions between components.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Build golden component images using Docker.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Leverage PAAS auto-scaling features with golden images.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Consider compression and binary format for DTO transfer.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Optimize SQL indexes and queries.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Consider document DB or de-normalizing data model.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Avoid locking &lt;span class=GramE&gt;database&lt;span
  style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;resources&lt;/span&gt;.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Prefer optimistic concurrency and eventual consistency.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Minimize time that connections and resources are in use.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Minimize number of connections required.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:2&#39;&gt;
  &lt;td valign=top style=&#39;border:solid black 1.0pt;border-top:none;mso-border-top-alt:
  solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;b
  style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;span lang=EN&gt;Resiliency&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid black 1.0pt;
  border-right:solid black 1.0pt;mso-border-top-alt:solid black 1.0pt;
  mso-border-left-alt:solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Redundancy&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Load Balancing&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Retry&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Circuit Breaker&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Replication&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  class=SpellE&gt;&lt;span lang=EN&gt;Healthchecks&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Telemetry&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid black 1.0pt;
  border-right:solid black 1.0pt;mso-border-top-alt:solid black 1.0pt;
  mso-border-left-alt:solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Understand customer SLA for availability.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Analyze system to identify failures, impact, and recovery.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Use redundant components to minimize single point of failure.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Use load balancing to distribute requests.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Handle transient failures with limited retries and &lt;span
  class=SpellE&gt;backoff&lt;/span&gt;.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Handle persistent failures with circuit breaker that falls back to
  reasonable action while dependency is unavailable.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Use multiple availability zones.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Monitor health of dependencies and endpoints.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Checkpoint long-running transactions.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Design for failure and self-healing.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Understand replication methods for data sources.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Automate persistent data backup.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Document failover/failback processes and test them.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Throttle excessively active clients.&lt;span style=&#39;mso-spacerun:yes&#39;&gt; 
  &lt;/span&gt;Block bad actors (DDoS).&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Perform fault injection testing to verify system resiliency.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:3&#39;&gt;
  &lt;td valign=top style=&#39;border:solid black 1.0pt;border-top:none;mso-border-top-alt:
  solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;b
  style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;span lang=EN&gt;Security&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid black 1.0pt;
  border-right:solid black 1.0pt;mso-border-top-alt:solid black 1.0pt;
  mso-border-left-alt:solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Defense in Depth&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Least Privilege&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Traceability&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Federated Identity&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Gatekeeper&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Compartmentalize&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid black 1.0pt;
  border-right:solid black 1.0pt;mso-border-top-alt:solid black 1.0pt;
  mso-border-left-alt:solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Apply defense in depth; secure all resources - not just edges.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Secure weakest link. Trust reluctantly and verify. Fail securely.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Pay attention to data privacy and residency requirements.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Protect data at rest (storage encryption) and in transit (SSL).&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Mitigate DDoS using cloud platform’s network layer.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Enforce ACL’s at network, application, and data layers.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Conduct vulnerability analysis and penetration tests.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Manage keys carefully and secure with hardware tokens.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Use SSO, multi-factor authentication, and federated identity.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Use anti-virus and anti-malware for network and host nodes.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Simplify BCDR through PaaS centric, automated backup and recovery.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Integrate diagnostics of network, application, and data layers to
  have monitor system and correlate enterprise intrusions.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Prefer connectivity from cloud to on-&lt;span class=SpellE&gt;prem&lt;/span&gt;
  resources using dedicated, private WAN links vs. VPN tunnels over public
  links.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:4&#39;&gt;
  &lt;td valign=top style=&#39;border:solid black 1.0pt;border-top:none;mso-border-top-alt:
  solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;b
  style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;span lang=EN&gt;Application Design&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid black 1.0pt;
  border-right:solid black 1.0pt;mso-border-top-alt:solid black 1.0pt;
  mso-border-left-alt:solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;High Cohesion&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Loose Coupling&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Single Responsibility&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Open/Closed&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Interface Segregation&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Dependency Inversion&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;DDD&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;CQRS&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;RESTful Web API&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Messaging&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid black 1.0pt;
  border-right:solid black 1.0pt;mso-border-top-alt:solid black 1.0pt;
  mso-border-left-alt:solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Design with the organization goals and end-user in mind.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Design for evolution and change.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Prefer loosely-coupled components whose communication is asynchronous
  that can evolve, heal, and scale smarter.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Separate infrastructure logic from domain logic.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Prefer RESTful Web API’s for external communication.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Prefer asynchronous messaging for internal communication.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:5;mso-yfti-lastrow:yes&#39;&gt;
  &lt;td valign=top style=&#39;border:solid black 1.0pt;border-top:none;mso-border-top-alt:
  solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;b
  style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;span lang=EN&gt;Management&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid black 1.0pt;
  border-right:solid black 1.0pt;mso-border-top-alt:solid black 1.0pt;
  mso-border-left-alt:solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Telemetry&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Automation&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Source Control&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Agile&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid black 1.0pt;
  border-right:solid black 1.0pt;mso-border-top-alt:solid black 1.0pt;
  mso-border-left-alt:solid black 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Design for IT Ops (Deploy, Monitor, Investigate, Secure)&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Document system release process and use change control.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Automate system build and deployment processes.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Implement logging and alerting into systems.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Instrument to analyze root cause of errors.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Instrument to monitor availability, performance, and health.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Standardize log formats and metrics.&lt;span style=&#39;mso-spacerun:yes&#39;&gt; 
  &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Inventory, inspect, and audit cloud assets.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Use distributed tracing (asynchronous, Correlation ID).&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Version and control configuration like other system artifacts.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  lang=EN&gt;Use Agile project methodology for iterative development. &lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=EN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;span lang=EN&gt;References&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;mso-add-space:auto;
text-indent:-.25in;mso-list:l0 level1 lfo1&#39;&gt;&lt;![if !supportLists]&gt;&lt;span lang=EN&gt;&lt;span
style=&#39;mso-list:Ignore&#39;&gt;&amp;#9679;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span lang=EN&gt;&lt;a
href=&quot;https://aws.amazon.com/architecture/&quot;&gt;&lt;span style=&#39;color:#1155CC&#39;&gt;https://aws.amazon.com/architecture/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormalCxSpLast style=&#39;margin-left:.5in;mso-add-space:auto;
text-indent:-.25in;mso-list:l0 level1 lfo1&#39;&gt;&lt;![if !supportLists]&gt;&lt;span lang=EN&gt;&lt;span
style=&#39;mso-list:Ignore&#39;&gt;&amp;#9679;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span lang=EN&gt;&lt;a
href=&quot;https://docs.microsoft.com/en-us/azure/architecture/&quot;&gt;&lt;span
style=&#39;color:#1155CC&#39;&gt;https://docs.microsoft.com/en-us/azure/architecture/&lt;/span&gt;&lt;/a&gt;
&lt;/span&gt;&lt;/p&gt;

</content><link rel='replies' type='application/atom+xml' href='http://tyrisias.blogspot.com/feeds/8395706268879368056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/667582413309466842/8395706268879368056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/8395706268879368056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/8395706268879368056'/><link rel='alternate' type='text/html' href='http://tyrisias.blogspot.com/2017/08/principles-and-practices-of-cloud.html' title='Principles and Practices of Cloud Applications'/><author><name>bt</name><uri>http://www.blogger.com/profile/09804796424177219390</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV2JH5aRHTSZKfbBbTRzjITAVYHi2-hvAPjgL1WZpRaiMCF3MH4K_8tmeyy7VH83qZ79SSPCqQyQPTtoXoBG0vwX1NJlCH4whGxC6bqSECZ5BSeqZeoD5r5-1KyOLeRlg/s220/tabbaab-young-faded.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-667582413309466842.post-4206028412176974721</id><published>2017-07-04T21:50:00.000-05:00</published><updated>2017-08-26T15:16:52.947-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="7habits"/><category scheme="http://www.blogger.com/atom/ns#" term="architect"/><category scheme="http://www.blogger.com/atom/ns#" term="developer"/><category scheme="http://www.blogger.com/atom/ns#" term="effective"/><category scheme="http://www.blogger.com/atom/ns#" term="sdlc"/><title type='text'>7 Habits of Highly Effective Architects and Developers</title><content type='html'>&lt;p class=MsoNormal&gt;&lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;Independence (Self)&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;mso-add-space:auto;
text-indent:-.25in;mso-list:l0 level1 lfo1&#39;&gt;&lt;![if !supportLists]&gt;&lt;span
style=&#39;mso-list:Ignore&#39;&gt;1.&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;u&gt;Understand
Technology Holistically&lt;/u&gt;&lt;/b&gt;.&lt;span style=&#39;mso-spacerun:yes&#39;&gt; 
&lt;/span&gt;Delivering technology solutions requires more than choices about just a
programming language, system library, or infrastructure provider.&lt;span
style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;It means having a comprehensive vision
aligned with organizational capability and thinking about security, performance,
databases, operating systems, infrastructure (cloud vs. on-premise),
availability, resiliency, networking, user interfaces, device access,
monitoring, reporting, testing, product/project management, testing, support,
customer requirements, change management, and much more. The whole matters
beyond the sum of the parts.&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;mso-add-space:auto;
text-indent:-.25in;mso-list:l0 level1 lfo1&#39;&gt;&lt;![if !supportLists]&gt;&lt;span
style=&#39;mso-list:Ignore&#39;&gt;2.&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;u&gt;Get Things
Done&lt;/u&gt;&lt;/b&gt;.&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;Balancing principle and
practice is an art, not a science.&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;This
balance is situation dependent; focusing on delivering value to customers
(doing the right thing at the right time) whilst giving attention to the
system’s evolving architectural quality (doing things the right way).&lt;span
style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;Where there is technical debt, be mindful and
make plans to pay it off per some reasonable schedule.&lt;span
style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;Prioritize what is important and weight tasks
by “bang for the buck”; some call this being Agile or common sense.&lt;span
style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;For frequently urgent or distracting matters,
resolve the root cause so primary focus can return to what is truly important.&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;mso-add-space:auto;
text-indent:-.25in;mso-list:l0 level1 lfo1&#39;&gt;&lt;![if !supportLists]&gt;&lt;span
style=&#39;mso-list:Ignore&#39;&gt;3.&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;u&gt;Work
Efficiently&lt;/u&gt;&lt;/b&gt;.&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;Use advanced CASE
and IDE tools.&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;Automate repetitive tasks
such as regression tests, builds, and deployments.&lt;span
style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;Communicate effectively by email, telephone,
IM, and also in person by facilitating and presenting information in
groups.&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;Use wikis to share information;
use online backlogs to manage projects and tasks across the team.&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;Interdependence
(Others)&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;mso-add-space:auto;
text-indent:-.25in;mso-list:l0 level1 lfo1&#39;&gt;&lt;![if !supportLists]&gt;&lt;span
style=&#39;mso-list:Ignore&#39;&gt;4.&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;u&gt;Care about
Customers&lt;/u&gt;&lt;/b&gt;.&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;Customers and the
organizations we serve give us a purpose and are the reason we are compensated
for what we do.&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;We must listen to users,
show empathy, understand their requirements, especially those expressed and
obvious, but also surface those in which intent is uncertain and less well
known.&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;Once we understand, then we also
need to be understood through careful communication about our designs and
projects in language and symbols that are precise, mostly visual, and jargon
free.&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;mso-add-space:auto;
text-indent:-.25in;mso-list:l0 level1 lfo1&#39;&gt;&lt;![if !supportLists]&gt;&lt;span
style=&#39;mso-list:Ignore&#39;&gt;5.&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;u&gt;Collaborate&lt;/u&gt;&lt;/b&gt;.&lt;span
style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;The concept of the lone coder as a hero is
mostly a myth.&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;Big, important problems
in most organizations require collaboration amongst different stakeholders and
a win-win mentality rooted in the common values and practices of respect,
humility, integrity, change, articulated decision rights and incentives.&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;mso-add-space:auto;
text-indent:-.25in;mso-list:l0 level1 lfo1&#39;&gt;&lt;![if !supportLists]&gt;&lt;span
style=&#39;mso-list:Ignore&#39;&gt;6.&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;u&gt;Keep Things
as Simple as Possible&lt;/u&gt;&lt;/b&gt;.&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;Systems
and People (and Life) can be complicated, but it does not have to be.&lt;span
style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;By emphasizing core values over rigid rules,
we can allow important systems and relationships to remain strong, flexible,
and still aligned around what is important.&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;Continuous
Improvement&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;mso-add-space:auto;
text-indent:-.25in;mso-list:l0 level1 lfo1&#39;&gt;&lt;![if !supportLists]&gt;&lt;span
style=&#39;mso-list:Ignore&#39;&gt;7.&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;&lt;u&gt;Passion&lt;/u&gt;&lt;/b&gt;.&lt;span
style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;Great developers and architects love what
they do.&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;You cannot teach it, fake it,
or hide it.&lt;span style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;They enjoy sharpening their
saw, improving themselves and others around them.&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;References&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;a
href=&quot;https://blogs.msdn.microsoft.com/johnwpowell/2008/05/22/the-7-habits-of-highly-effective-developers/&quot;&gt;&lt;span
style=&#39;font-size:10.0pt;line-height:115%;color:white&#39;&gt;https://blogs.msdn.microsoft.com/johnwpowell/2008/05/22/the-7-habits-of-highly-effective-developers/&lt;/span&gt;&lt;/a&gt;&lt;span
style=&#39;font-size:10.0pt;line-height:115%&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;a href=&quot;https://www.stephencovey.com/7habits/7habits.php&quot;&gt;&lt;span
style=&#39;font-size:10.0pt;line-height:115%;color:white&#39;&gt;https://www.stephencovey.com/7habits/7habits.php&lt;/span&gt;&lt;/a&gt;&lt;span
style=&#39;font-size:10.0pt;line-height:115%&#39;&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;a href=&quot;http://www.goodprofit.com&quot;&gt;&lt;span style=&#39;font-size:
10.0pt;line-height:115%;color:white&#39;&gt;http://www.goodprofitbook.com&lt;/span&gt;&lt;/a&gt;&lt;span
style=&#39;font-size:10.0pt;line-height:115%&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;a
href=&quot;http://tyrisias.blogspot.com/2016/12/principles-and-practices-sdlc.html&quot;&gt;&lt;span
style=&#39;font-size:10.0pt;line-height:115%;color:white&#39;&gt;http://tyrisias.blogspot.com/2016/12/principles-and-practices-sdlc.html&lt;/span&gt;&lt;/a&gt;&lt;span
style=&#39;font-size:10.0pt;line-height:115%&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;a
href=&quot;https://medium.com/@bishr_tabbaa/7-habits-of-highly-effective-software-architects-and-developers-510feaf998ad&quot;&gt;&lt;span
style=&#39;font-size:10.0pt;line-height:115%;color:white&#39;&gt;7 Habits of Highly Effective Architects and Developers&lt;/span&gt;&lt;/a&gt;&lt;span
style=&#39;font-size:10.0pt;line-height:115%&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tyrisias.blogspot.com/feeds/4206028412176974721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/667582413309466842/4206028412176974721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/4206028412176974721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/4206028412176974721'/><link rel='alternate' type='text/html' href='http://tyrisias.blogspot.com/2017/07/7-habits-of-highly-effective-architects.html' title='7 Habits of Highly Effective Architects and Developers'/><author><name>bt</name><uri>http://www.blogger.com/profile/09804796424177219390</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV2JH5aRHTSZKfbBbTRzjITAVYHi2-hvAPjgL1WZpRaiMCF3MH4K_8tmeyy7VH83qZ79SSPCqQyQPTtoXoBG0vwX1NJlCH4whGxC6bqSECZ5BSeqZeoD5r5-1KyOLeRlg/s220/tabbaab-young-faded.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-667582413309466842.post-5523850982213007694</id><published>2017-02-13T22:24:00.001-06:00</published><updated>2017-08-26T14:30:20.353-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="coaching"/><category scheme="http://www.blogger.com/atom/ns#" term="leadership"/><category scheme="http://www.blogger.com/atom/ns#" term="training"/><title type='text'>Book Summary | The Coach</title><content type='html'>&lt;p class=MsoNormal&gt;This article summarizes the key takeaways of the &lt;span
class=SpellE&gt;&lt;b style=&#39;mso-bidi-font-weight:normal;font-color: white&#39;&gt;&lt;a href=&quot;http://a.co/1ghBpxB&quot;&gt;The Coach, Creating Partnerships for
Competitive Edge&lt;/a&gt;&lt;/b&gt;&lt;/span&gt; by Steven Sowell and Matt &lt;span class=SpellE&gt;Starcevich&lt;/span&gt;.&lt;span
style=&#39;mso-spacerun:yes&#39;&gt;  &lt;/span&gt;Rich with useful, psychological insight into
how to genuinely improve relationships between leaders and employees in service
of organizational advantage and excellence, I highly recommend reading this
evidence-based book and putting it into daily practice.&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;table class=a border=1 cellspacing=0 cellpadding=0 width=616 style=&#39;border-collapse:
 collapse;mso-table-layout-alt:fixed;border:none;mso-border-alt:solid white 1.0pt;
 mso-yfti-tbllook:1536;mso-padding-alt:0in 5.4pt 0in 5.4pt;mso-border-insideh:
 1.0pt solid white ;mso-border-insidev:1.0pt solid white&#39;&gt;
 &lt;tr style=&#39;mso-yfti-irow:0;mso-yfti-firstrow:yes&#39;&gt;
  &lt;td width=112 valign=top style=&#39;width:84.0pt;border:solid white 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;b
  style=&#39;mso-bidi-font-weight:normal&#39;&gt;8 Step Model&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=504 valign=top style=&#39;width:5.25in;border:solid white 1.0pt;
  border-left:none;mso-border-left-alt:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Step 1: Be
  Supportive … assist, empathize, understand, listen, encourage&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Step 2:
  Define the Topic and Needs … focus on present, 1-2 items/session&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Step 3:
  Establish Impact … talk costs and benefits, mirror as role model&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Step 4:
  Initiate a Plan … who, what, when, where; set SMART goals&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Step 5: Get
  a Commitment … get clear answer and verbal/written agreement&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Step 6:
  Confront Excuses and Resistance … focus on what can be done&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Step 7:
  Clarify Consequences, do not Punish … focus on +, explain -&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Step 8: Do
  not Give Up … persist, establish follow up time/place&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:1&#39;&gt;
  &lt;td width=112 valign=top style=&#39;width:84.0pt;border:solid white 1.0pt;
  border-top:none;mso-border-top-alt:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;b
  style=&#39;mso-bidi-font-weight:normal&#39;&gt;5 Levels of Coaching&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=504 valign=top style=&#39;width:5.25in;border-top:none;border-left:
  none;border-bottom:solid white 1.0pt;border-right:solid white 1.0pt;
  mso-border-top-alt:solid white 1.0pt;mso-border-left-alt:solid white 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Linking and
  Bonding - spend most of your time here, daily&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Reviewing -
  monthly 1-on-1&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Mentoring -
  continuous&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Confronting
  - if and only if needed&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Choosing
  and Developing - quarterly, annually&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:2&#39;&gt;
  &lt;td width=112 valign=top style=&#39;width:84.0pt;border:solid white 1.0pt;
  border-top:none;mso-border-top-alt:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;b
  style=&#39;mso-bidi-font-weight:normal&#39;&gt;Management Models&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=504 valign=top style=&#39;width:5.25in;border-top:none;border-left:
  none;border-bottom:solid white 1.0pt;border-right:solid white 1.0pt;
  mso-border-top-alt:solid white 1.0pt;mso-border-left-alt:solid white 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Adversarial
  / Hierarchy - traditional, &lt;span class=SpellE&gt;Tayloristic&lt;/span&gt; view,
  control&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Patriarchy
  / Matriarchy - ineffective&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Silence -
  ineffective&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Entrepreneurial
  - building effective partnerships with employees (Koch MBM)&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:3&#39;&gt;
  &lt;td width=112 valign=top style=&#39;width:84.0pt;border:solid white 1.0pt;
  border-top:none;mso-border-top-alt:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;b
  style=&#39;mso-bidi-font-weight:normal&#39;&gt;Definition of Partnership&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=504 valign=top style=&#39;width:5.25in;border-top:none;border-left:
  none;border-bottom:solid white 1.0pt;border-right:solid white 1.0pt;
  mso-border-top-alt:solid white 1.0pt;mso-border-left-alt:solid white 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Teamwork&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Common
  interests and goals&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Equal
  status&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Mutual
  consent&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Respect&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;span
  class=SpellE&gt;Honesty&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:4&#39;&gt;
  &lt;td width=112 valign=top style=&#39;width:84.0pt;border:solid white 1.0pt;
  border-top:none;mso-border-top-alt:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;b
  style=&#39;mso-bidi-font-weight:normal&#39;&gt;Process of Guided Change&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=504 valign=top style=&#39;width:5.25in;border-top:none;border-left:
  none;border-bottom:solid white 1.0pt;border-right:solid white 1.0pt;
  mso-border-top-alt:solid white 1.0pt;mso-border-left-alt:solid white 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Stage 1:
  Preliminary Events … detect, pinch + pressure, decide&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Stage 2:
  Support-Initiate using 8 Step Model&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Stage 3:
  Follow Up Coaching … refine + reinforce, feedback + support&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:5&#39;&gt;
  &lt;td width=112 valign=top style=&#39;width:84.0pt;border:solid white 1.0pt;
  border-top:none;mso-border-top-alt:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;b
  style=&#39;mso-bidi-font-weight:normal&#39;&gt;Supporting Skills&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=504 valign=top style=&#39;width:5.25in;border-top:none;border-left:
  none;border-bottom:solid white 1.0pt;border-right:solid white 1.0pt;
  mso-border-top-alt:solid white 1.0pt;mso-border-left-alt:solid white 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Be forward
  looking … focus on improving future, not pathology about past&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Give
  employees credit for recognizing the problem and designing soln.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Start
  light, indirect in communication style (ask questions, listen, probe,
  restate, encourage); then and only then get direct if needed.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Focus on
  the concern or problem … not the person.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Set clear
  expectations (Koch RRE).&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Shift to
  silence when done speaking to put ball in employee court.&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:6&#39;&gt;
  &lt;td width=112 valign=top style=&#39;width:84.0pt;border:solid white 1.0pt;
  border-top:none;mso-border-top-alt:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;b
  style=&#39;mso-bidi-font-weight:normal&#39;&gt;How to Better Coach&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=504 valign=top style=&#39;width:5.25in;border-top:none;border-left:
  none;border-bottom:solid white 1.0pt;border-right:solid white 1.0pt;
  mso-border-top-alt:solid white 1.0pt;mso-border-left-alt:solid white 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Be
  assertive.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Be
  realistic.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Trust the
  process.&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:7&#39;&gt;
  &lt;td width=112 valign=top style=&#39;width:84.0pt;border:solid white 1.0pt;
  border-top:none;mso-border-top-alt:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;b
  style=&#39;mso-bidi-font-weight:normal&#39;&gt;Coaching&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=504 valign=top style=&#39;width:5.25in;border-top:none;border-left:
  none;border-bottom:solid white 1.0pt;border-right:solid white 1.0pt;
  mso-border-top-alt:solid white 1.0pt;mso-border-left-alt:solid white 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Is a
  process… not an event.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Coaches are
  catalysts and conductors … not commanders.&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:8&#39;&gt;
  &lt;td width=112 valign=top style=&#39;width:84.0pt;border:solid white  1.0pt;
  border-top:none;mso-border-top-alt:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;b
  style=&#39;mso-bidi-font-weight:normal&#39;&gt;Sports&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=504 valign=top style=&#39;width:5.25in;border-top:none;border-left:
  none;border-bottom:solid white 1.0pt;border-right:solid white 1.0pt;
  mso-border-top-alt:solid white 1.0pt;mso-border-left-alt:solid white 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;John Wooden
  .. UCLA College Basketball Coach&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Barbara &lt;span
  class=SpellE&gt;Bramblett&lt;/span&gt; - my tennis coach&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:9;mso-yfti-lastrow:yes&#39;&gt;
  &lt;td width=112 valign=top style=&#39;width:84.0pt;border:solid white 1.0pt;
  border-top:none;mso-border-top-alt:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;b
  style=&#39;mso-bidi-font-weight:normal&#39;&gt;Positive Development&lt;/b&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;&lt;b
  style=&#39;mso-bidi-font-weight:normal&#39;&gt;Process&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=504 valign=top style=&#39;width:5.25in;border-top:none;border-left:
  none;border-bottom:solid white 1.0pt;border-right:solid white 1.0pt;
  mso-border-top-alt:solid white 1.0pt;mso-border-left-alt:solid white 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Trust
  employees more.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Give them
  more responsibility and variety.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Defer to
  them more.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Surrender
  more control to them as mutual business partners.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal;mso-pagination:none&#39;&gt;Allow them
  space and creativity.&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;

</content><link rel='replies' type='application/atom+xml' href='http://tyrisias.blogspot.com/feeds/5523850982213007694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/667582413309466842/5523850982213007694' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/5523850982213007694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/5523850982213007694'/><link rel='alternate' type='text/html' href='http://tyrisias.blogspot.com/2017/02/book-summary-coach.html' title='Book Summary | The Coach'/><author><name>bt</name><uri>http://www.blogger.com/profile/09804796424177219390</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV2JH5aRHTSZKfbBbTRzjITAVYHi2-hvAPjgL1WZpRaiMCF3MH4K_8tmeyy7VH83qZ79SSPCqQyQPTtoXoBG0vwX1NJlCH4whGxC6bqSECZ5BSeqZeoD5r5-1KyOLeRlg/s220/tabbaab-young-faded.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-667582413309466842.post-1331709109988574196</id><published>2017-01-02T13:34:00.000-06:00</published><updated>2017-01-12T07:11:39.005-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="design"/><category scheme="http://www.blogger.com/atom/ns#" term="innovation"/><category scheme="http://www.blogger.com/atom/ns#" term="performance"/><category scheme="http://www.blogger.com/atom/ns#" term="practices"/><category scheme="http://www.blogger.com/atom/ns#" term="principles"/><category scheme="http://www.blogger.com/atom/ns#" term="webapi"/><title type='text'>Principles and Practices | Web API</title><content type='html'>
&lt;p class=MsoNormal&gt;This article enumerates the best principles and practices
for designing, deploying, and maintaining successful Web API’s that can drive
organizational innovation forward.  This document has borrowed and consolidated
ideas from Apigee (Bryan Mulloy), Microsoft, and Mulesoft (Mike Stowe); I
highly encourage the reader to also review these primary sources.  I will use
the fictional Acme company as an example throughout this article.&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;table class=a border=1 cellspacing=0 cellpadding=0 width=770 style=&#39;margin-left:
 -51.75pt;border-collapse:collapse;border:none&#39;&gt;
 &lt;tr&gt;
  &lt;td width=114 valign=top style=&#39;width:85.5pt;border:solid black 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Category&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=656 valign=top style=&#39;width:492.0pt;border:solid black 1.0pt;
  border-left:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Principles and Practices&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td width=114 valign=top style=&#39;width:85.5pt;border:solid black 1.0pt;
  border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Requirements&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=656 valign=top style=&#39;width:492.0pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Understand your &lt;b&gt;users&lt;/b&gt;. 
  What are the use cases? What technologies/services will be used?&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;What are the business &lt;b&gt;resources
  &lt;/b&gt;that need to be managed? What are their entity relationships?&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Acme Answer: Users are digital
  Builders and the key resources are Bricks&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td width=114 valign=top style=&#39;width:85.5pt;border:solid black 1.0pt;
  border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Design Strategy&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=656 valign=top style=&#39;width:492.0pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Think &lt;b&gt;long-term&lt;/b&gt;.  Not
  just release 1.  But think 2-3 years ahead.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Ensure the API is &lt;b&gt;platform
  independent&lt;/b&gt; to maximize API portability and usage.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Be &lt;b&gt;stateless&lt;/b&gt; to maximize
  scalability, increase cacheability, and reduce client/server dependencies.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Be &lt;b&gt;consistent&lt;/b&gt;.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Be &lt;b&gt;flexible&lt;/b&gt;.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Keep It &lt;b&gt;Simple &lt;/b&gt;and
  minimize complexity throughout.&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td width=114 valign=top style=&#39;width:85.5pt;border:solid black 1.0pt;
  border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Prefer Nouns, not Verbs&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=656 valign=top style=&#39;width:492.0pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Prefer &lt;b&gt;plural nouns&lt;/b&gt;,
  instead of verbs.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;a
  href=&quot;http://www.acme.com/api/v1/bricks&quot;&gt;&lt;span style=&#39;color:white&#39;&gt;http://acme.com/api/bricks&lt;/span&gt;&lt;/a&gt;
  [preferred] vs.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;a
  href=&quot;http://acme.com/api/v1/getbricks&quot;&gt;&lt;span style=&#39;color:white&#39;&gt;http://acme.com/api/getbricks&lt;/span&gt;&lt;/a&gt;
  [avoid, since this is more verbose and leads to complexity]&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Use verbs if you are
  implementing calculations or transformations that are unrelated to resources.&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td width=114 valign=top style=&#39;width:85.5pt;border:solid black 1.0pt;
  border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Map CRUD to HTTP verbs&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=656 valign=top style=&#39;width:492.0pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;DELETE, GET, PUT, and POST
  requests should be idempotent.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;a
  href=&quot;http://acme.com/api/v1/bricks/create&quot;&gt;&lt;span style=&#39;color:white&#39;&gt;http://acme.com/api/bricks&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Create =&amp;gt; POST&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Read =&amp;gt; GET&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Update =&amp;gt; PUT&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Delete =&amp;gt; DELETE&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td width=114 valign=top style=&#39;width:85.5pt;border:solid black 1.0pt;
  border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Map Errors to HTTP Status&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=656 valign=top style=&#39;width:492.0pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Handle errors &lt;b&gt;consistently&lt;/b&gt;,
  at least 5 of the 70-ish HTTP response status codes.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;200 - OK&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;400 - Bad Client Request Format&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;401 - Unauthorized Client
  Request&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;404 - No Resource&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;500 - Server Error&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;501 - Not Implemented&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;503 - Service Unavailable&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Map exception and detailed
  error messages into the response payload.&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td width=114 valign=top style=&#39;width:85.5pt;border:solid black 1.0pt;
  border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Version API&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=656 valign=top style=&#39;width:492.0pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Never release the API without a
  &lt;b&gt;version&lt;/b&gt;.  This is part of &lt;b&gt;managing change&lt;/b&gt; and &lt;b&gt;being flexible&lt;/b&gt;.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Prefer versioning in the base
  URI to be explicit instead of a request query or header parameter.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Prefer simple ordinal numbers
  over dot notation and timestamping.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Prefer &lt;b&gt;v1 &lt;/b&gt;instead of
  v1.0 or v2016-01-01.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;a
  href=&quot;http://acme.com/api/v1/bricks/create&quot;&gt;&lt;span style=&#39;color:white&#39;&gt;http://acme.com/api/v1/bricks&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td width=114 valign=top style=&#39;width:85.5pt;border:solid black 1.0pt;
  border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;IO Formats&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=656 valign=top style=&#39;width:492.0pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Default format for input and
  output should be &lt;b&gt;JSON&lt;/b&gt;.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Support multiple input and
  output formats.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Optionally support XML for
  input and output as well CSV for output.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Support content types specified
  in the URI:&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;GET /api/v1/bricks.&lt;b&gt;json&lt;/b&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;GET /api/v1/bricks&lt;b&gt;.xml&lt;/b&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Support content types specified
  in request header:&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Content-Type: application/json&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td width=114 valign=top style=&#39;width:85.5pt;border:solid black 1.0pt;
  border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Collection Navigation&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=656 valign=top style=&#39;width:492.0pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Provider filtering, sorting,
  field selection, and pagination of collections.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;GET /api/v1/bricks/?color=red&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;GET /api/v1/bricks/?sort=model&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;GET /api/v1/bricks/?limit=50&amp;amp;offset=10&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;GET
  /api/v1/bricks/?fields=id,model,color&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td width=114 valign=top style=&#39;width:85.5pt;border:solid black 1.0pt;
  border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Consolidate&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=656 valign=top style=&#39;width:492.0pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Consolidate all API services
  and requests into one domain.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Example: &lt;a
  href=&quot;http://api.acme.com/v1/&quot;&gt;&lt;span style=&#39;color:white&#39;&gt;http://api.acme.com/v1/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td width=114 valign=top style=&#39;width:85.5pt;border:solid black 1.0pt;
  border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Document&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=656 valign=top style=&#39;width:492.0pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Document your API and publish
  the specification online.  Use Swagger or RAML.&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td width=114 valign=top style=&#39;width:85.5pt;border:solid black 1.0pt;
  border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Security&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=656 valign=top style=&#39;width:492.0pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Authenticate and authorize all
  users.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Validate input requests.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Prefer declarative security on
  individual methods of service endpoints.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;For private intranets using
  Active Directory, assign permissions to roles consisting of AD groups.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;For public extranets, consider
  using OAuth 2 and SSL.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Throttle users that exceed API
  limits and generate 503 errors with Retry-After headers.&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td width=114 valign=top style=&#39;width:85.5pt;border:solid black 1.0pt;
  border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Deploy&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td width=656 valign=top style=&#39;width:492.0pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Log requests for
  troubleshooting and customer metering.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Support multiple channels for
  customer feedback: email list, online forum, Slack channel, etc.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Monitor API health, activity,
  and usage in Production.&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;Consider using 3rd party
  products for enterprise API management and standardization.&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;

&lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;References&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9679;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a
href=&quot;http://pages.apigee.com/rs/apigee/images/api-design-ebook-2012-03.pdf&quot;&gt;&lt;span
style=&#39;color:white&#39;&gt;Apigee&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9679;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a
href=&quot;https://docs.microsoft.com/en-us/azure/best-practices-api-design&quot;&gt;&lt;span
style=&#39;color:white&#39;&gt;Microsoft&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9679;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a
href=&quot;http://blogs.mulesoft.com/dev/api-dev/api-best-practices-series-plan/&quot;&gt;&lt;span
style=&#39;color:white&#39;&gt;Mulesoft &lt;/span&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9679;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a href=&quot;http://restcookbook.com&quot;&gt;&lt;span style=&#39;color:white&#39;&gt;Rest
Cookbook&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p class=MsoNormalCxSpLast style=&#39;margin-left:.5in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9679;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a href=&quot;https://mathieu.fenniak.net/the-api-checklist/&quot;&gt;&lt;span
style=&#39;color:white&#39;&gt;Mathieu Fenniak Checklist&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;

</content><link rel='replies' type='application/atom+xml' href='http://tyrisias.blogspot.com/feeds/1331709109988574196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/667582413309466842/1331709109988574196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/1331709109988574196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/1331709109988574196'/><link rel='alternate' type='text/html' href='http://tyrisias.blogspot.com/2017/01/principles-and-practices-web-api.html' title='Principles and Practices | Web API'/><author><name>bt</name><uri>http://www.blogger.com/profile/09804796424177219390</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV2JH5aRHTSZKfbBbTRzjITAVYHi2-hvAPjgL1WZpRaiMCF3MH4K_8tmeyy7VH83qZ79SSPCqQyQPTtoXoBG0vwX1NJlCH4whGxC6bqSECZ5BSeqZeoD5r5-1KyOLeRlg/s220/tabbaab-young-faded.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-667582413309466842.post-9000708403401322455</id><published>2016-12-28T07:20:00.001-06:00</published><updated>2016-12-28T07:20:55.031-06:00</updated><title type='text'>Excel Add-in Development | Portability</title><content type='html'>&lt;p class=MsoNormal&gt;Designing and developing &lt;b&gt;portable &lt;/b&gt;Excel add-ins
across different versions of Microsoft Office (2000-2016, x86-x64) is an
important goal for keeping maintenance costs low whilst enabling you to grow
and support as broad a Office customer base as possible.  This article
describes how to do just that by combining two open source .NET libraries:
Excel DNA and Net Office.&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal style=&gt;&lt;a href=&quot;https://exceldna.codeplex.com/&quot;&gt;&lt;b&gt;&lt;span
style=&#39;color:white&#39;&gt;Excel DNA&lt;/span&gt;&lt;/b&gt;&lt;/a&gt; is a .NET library whose API’s
simplify writing COM-free Add-ins with User Defined Functions, custom Ribbons,
RTD components, and VBA script friendly API’s for Office task automation.  The
project started by Govert van Drimmelen in 2005 has a broad user community
across the financial and scientific domains.&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;a href=&quot;https://netoffice.codeplex.com/&quot;&gt;&lt;b&gt;&lt;span
style=&#39;color:white&#39;&gt;Net Office&lt;/span&gt;&lt;/b&gt;&lt;/a&gt; is a .NET library whose API’s
allow one to target multiple versions of Office 2000-2016 without referencing
the platform specific PIA and VSTO assemblies as well as managing the COM proxy
objects.  The project started by Sebastian Lange in 2011 also has a large user
community across the Office platform.  The Net Office API allows one to
interact with the Excel object model (e.g. workbooks, worksheets,
ranges) in a Office platform independent manner.&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;Architecture&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal align=center style=&#39;text-align:center&#39;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTpmsI2sMTxGYQ-sCOX_xcI8xiAseJnGwXSYAcp2HB80g0igexnA6wZJxfFEnwGPfiRYycjJuG1qQb4bOWyhnFsT3rS0Bc1Byxz8HeNsQiQG5GtRPUPjWK6xjbHfeEhUhpOLf0urVlgrw/s1600/image001.gif&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTpmsI2sMTxGYQ-sCOX_xcI8xiAseJnGwXSYAcp2HB80g0igexnA6wZJxfFEnwGPfiRYycjJuG1qQb4bOWyhnFsT3rS0Bc1Byxz8HeNsQiQG5GtRPUPjWK6xjbHfeEhUhpOLf0urVlgrw/s320/image001.gif&quot; width=&quot;320&quot; height=&quot;218&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;Implementation&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;text-indent:-.25in&#39;&gt;1.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Create a
.NET class library in your preferred language (e.g. C#, F#, VB.NET).&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;text-indent:-.25in&#39;&gt;2.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Add
references to NuGet packages of Excel DNA and Net Office.&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in&#39;&gt;&lt;span
style=&#39;font-size:9.0pt;line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;a.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span
style=&#39;font-size:9.0pt;line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;ExcelDna.Integration&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in&#39;&gt;&lt;span
style=&#39;font-size:9.0pt;line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;b.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span
style=&#39;font-size:9.0pt;line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;ExcelDna.Addin&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in&#39;&gt;&lt;span
style=&#39;font-size:9.0pt;line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;c.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span
style=&#39;font-size:9.0pt;line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;NetOffice.Excel&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;text-indent:-.25in&#39;&gt;3.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Define a
class that implements &lt;b&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;
font-family:&quot;Courier New&quot;&#39;&gt;ExcelDna.Integration.IExcelAddIn&lt;/span&gt;&lt;/b&gt;
interface as well as the &lt;b&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;
font-family:&quot;Courier New&quot;&#39;&gt;System.IDisposable&lt;/span&gt;&lt;/b&gt; interface.&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in&#39;&gt;a.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Implement
the Singleton pattern.&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;            &lt;span style=&#39;font-size:9.0pt;line-height:115%;
font-family:&quot;Courier New&quot;&#39;&gt;public class MyAddIn : IExcelAddIn, IDisposable&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:9.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;       {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:9.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        // singleton variable&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:9.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        private static MyAddIn m_Instance = null;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:9.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        // instance variables&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:9.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        private object m_ComApplication;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:9.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        private Application m_ExcelApplication;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:9.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        private bool m_Disposed = false;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:9.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        static MyAddIn()&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:9.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:9.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;            m_Instance = new MyAddIn();&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:9.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:9.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        public MyAddIn() {}&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:9.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        public static MyAddIn Instance { get { return
m_Instance; } }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;text-indent:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;}&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in&#39;&gt;b.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Implement
the &lt;b&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;AutoOpen
&lt;/span&gt;&lt;/b&gt;and &lt;b&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;AutoClose &lt;/span&gt;&lt;/b&gt;methods.  These methods are invoked when
your Addin is first installed and then un-installed.&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in&#39;&gt;c.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Implement
new &lt;b&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;OnActivate
&lt;/span&gt;&lt;/b&gt;and &lt;b&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;OnDeactivate &lt;/span&gt;&lt;/b&gt;methods.  In the former, get a reference
to the root Application object from Excel DNA and connect to a Net Office
Application wrapper, and voila, you now have programmatic access to the Excel
object and event model through a platform independent API.&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:8.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;        &lt;/span&gt;&lt;span
style=&#39;font-size:9.0pt;line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;internal
void &lt;b&gt;OnActivate&lt;/b&gt;()&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;        {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;            if (m_ComApplication ==
null)&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;            {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                &lt;b&gt;m_ComApplication
= ExcelDnaUtil.Application;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;            }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;            if (m_ExcelApplication
== null)&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;            {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:1.0in;text-indent:.5in&#39;&gt;&lt;b&gt;&lt;span
style=&#39;font-size:9.0pt;line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;// glue
NetOffice + Excel DNA!&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                m_ExcelApplication
= new Application(null, m_ComApplication);&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;            }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;        }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;        internal void &lt;b&gt;OnDeactivate&lt;/b&gt;()&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;        {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;            Dispose();&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;            GC.Collect();&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;           
GC.WaitForPendingFinalizers();&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;            GC.Collect();&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;           
GC.WaitForPendingFinalizers();&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;        }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in&#39;&gt;d.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Implement
the &lt;span style=&#39;font-family:&quot;Courier New&quot;&#39;&gt;Dispose &lt;/span&gt;method and release
references to the root Net Office and Excel DNA application objects.  This will
prevent memory leaks and eliminate the “phantom” Excel process after your
program exits.&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;        public void &lt;b&gt;Dispose&lt;/b&gt;()&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;        {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;            Dispose(true);&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;        }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;        public void &lt;b&gt;Dispose&lt;/b&gt;(bool
disposing)&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;        {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;            try&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;            {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                if (m_Disposed)&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                    if (disposing)&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                    {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                        if
(m_ExcelApplication != null)&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                        {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                           &lt;b&gt; m_ExcelApplication.Quit();&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                           
m_ExcelApplication.Dispose();&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                        }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                    }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                    if
(m_ComApplication != null)&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                    {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                       
Marshal.ReleaseComObject(m_ComApplication);&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                    }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;            }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;            catch { }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;            finally&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;            {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                m_Disposed = true;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                m_ExcelApplication
= null;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;                m_ComApplication =
null;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;            }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&lt;span style=&#39;font-size:9.0pt;
line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;        }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;text-indent:.5in&#39;&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;text-indent:-.25in&#39;&gt;4.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Define a
class that either extends &lt;b&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;
font-family:&quot;Courier New&quot;&#39;&gt;ExcelDna.Integration.CustomUI.ExcelRibbon&lt;/span&gt;&lt;/b&gt;
or &lt;b&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;ExcelDna.Integration.ComAddin&lt;/span&gt;&lt;/b&gt;.&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in&#39;&gt;a.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Mark the
class with several &lt;span style=&#39;font-size:9.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;System.Runtime.InteroperServices&lt;/span&gt; attributes.&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.5in;text-indent:-1.5in&#39;&gt;&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;i.&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Mark &lt;span style=&#39;font-size:9.0pt;line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;ComVisible
&lt;/span&gt;as true.&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.5in;text-indent:-1.5in&#39;&gt;&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;ii.&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Set the &lt;span style=&#39;font-size:9.0pt;line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;ProgId
&lt;/span&gt;as some fixed string value.&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in&#39;&gt;b.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Override
the &lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;OnConnection
&lt;/span&gt;and &lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;OnDisconnection
&lt;/span&gt;methods and invoke the Addin’s &lt;span style=&#39;font-size:8.0pt;line-height:
115%;font-family:&quot;Courier New&quot;&#39;&gt;OnActivate &lt;/span&gt;and &lt;span style=&#39;font-size:
8.0pt;line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;OnDeactivate &lt;/span&gt;methods
through the singleton.&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-left:.5in&#39;&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;  &lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;  [ComVisible(true)]&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;    [ClassInterface(ClassInterfaceType.AutoDispatch)]&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;    [ProgId(&amp;quot;Athena.Excel.Sample.MyAddIn&amp;quot;)]&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;    public class MyRibbon : &lt;b&gt;ExcelRibbon&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;    {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        private MyVBAFacade vbaProxy = new MyVBAFacade();&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;       &lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        public override void OnConnection(object comApp,
ext_ConnectMode ConnectMode, object objAddin, ref Array custom)&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;            base.OnConnection(comApp, ConnectMode, objAddin, ref
custom);&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;            if (objAddin != null)&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;            {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;                dynamic excelAddin = objAddin;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;                excelAddin.Object = vbaProxy;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;            }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;            &lt;/span&gt;&lt;b&gt;&lt;span style=&#39;font-size:9.0pt;line-height:
115%;font-family:&quot;Courier New&quot;&#39;&gt;MyAddin.Instance.OnActivate();&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        public override void OnDisconnection(ext_DisconnectMode
RemoveMode, ref Array custom)&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;            base.OnDisconnection(RemoveMode, ref custom);&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;            MyAddin.Instance.OnDeactivate();&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        public void OnHello(IRibbonControl control)&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        {&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;            MessageBox.Show(&amp;quot;Hello, world!&amp;quot;);&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;        }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;    }&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style=&#39;font-size:8.0pt;line-height:115%;font-family:
&quot;Courier New&quot;&#39;&gt;}&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;text-indent:-.25in&#39;&gt;5.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Use the &lt;span
style=&#39;font-size:9.0pt;line-height:115%;font-family:&quot;Courier New&quot;&#39;&gt;Addin.Instance.Application&lt;/span&gt;
reference to interact with Excel API through Net Office in a platform
independent manner that works across Microsoft Office 2000-2016.  Example
scenarios include the following:&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in&#39;&gt;a.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Register
for Excel events such as file open/close and macro re-calculations.&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in&#39;&gt;b.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Manipulate
Excel cell ranges in response to user events and custom functions.&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in&#39;&gt;c.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Perform
context specific activity based on the active Excel workbook or cell.&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in&#39;&gt;d.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Prompt the
user for input from the Excel range reference dialog box.&lt;/p&gt;

&lt;p class=MsoNormalCxSpLast style=&#39;margin-left:1.0in;text-indent:-.25in&#39;&gt;e.&lt;span
style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Set the
Excel status bar.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://tyrisias.blogspot.com/feeds/9000708403401322455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/667582413309466842/9000708403401322455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/9000708403401322455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/9000708403401322455'/><link rel='alternate' type='text/html' href='http://tyrisias.blogspot.com/2016/12/excel-add-in-development-portability.html' title='Excel Add-in Development | Portability'/><author><name>bt</name><uri>http://www.blogger.com/profile/09804796424177219390</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV2JH5aRHTSZKfbBbTRzjITAVYHi2-hvAPjgL1WZpRaiMCF3MH4K_8tmeyy7VH83qZ79SSPCqQyQPTtoXoBG0vwX1NJlCH4whGxC6bqSECZ5BSeqZeoD5r5-1KyOLeRlg/s220/tabbaab-young-faded.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTpmsI2sMTxGYQ-sCOX_xcI8xiAseJnGwXSYAcp2HB80g0igexnA6wZJxfFEnwGPfiRYycjJuG1qQb4bOWyhnFsT3rS0Bc1Byxz8HeNsQiQG5GtRPUPjWK6xjbHfeEhUhpOLf0urVlgrw/s72-c/image001.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-667582413309466842.post-7951465445676385503</id><published>2016-12-15T06:26:00.001-06:00</published><updated>2017-08-26T14:02:53.466-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="design"/><category scheme="http://www.blogger.com/atom/ns#" term="devops"/><category scheme="http://www.blogger.com/atom/ns#" term="lean"/><category scheme="http://www.blogger.com/atom/ns#" term="peopleware"/><category scheme="http://www.blogger.com/atom/ns#" term="practices"/><category scheme="http://www.blogger.com/atom/ns#" term="principles"/><category scheme="http://www.blogger.com/atom/ns#" term="process"/><category scheme="http://www.blogger.com/atom/ns#" term="sdlc"/><title type='text'>Principles and Practices | SDLC</title><content type='html'>&lt;p class=MsoNormal&gt;This article summarizes some of the core principles, best
practices, and my common sense for governing the &lt;b&gt;Software Development Life
Cycle&lt;/b&gt;.  These SDLC ideas are applicable for both products and projects.  I
look forward to discussing these ideas with the wider community.&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&lt;/p&gt;

&lt;table class=a border=1 cellspacing=0 cellpadding=0 width=718 style=&#39;margin-left:
 -20.25pt;border-collapse:collapse;border:none&#39;&gt;
 &lt;tr&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal align=center style=&#39;text-align:center;line-height:normal&#39;&gt;&lt;b&gt;Category&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-left:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal align=center style=&#39;text-align:center;line-height:normal&#39;&gt;&lt;b&gt;Principles
  and Practices&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Feasibility&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Identify
  the product/project &lt;b&gt;investors, &lt;/b&gt;business sponsor, and key stakeholders.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Establish
  &lt;b&gt;economic model&lt;/b&gt; with costs and benefits spanning average and best/worst
  cases.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Write
  a clear &lt;b&gt;mission and vision statement&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Requirements&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Document
  requirements for Minimum Viable Product (&lt;b&gt;MVP&lt;/b&gt;).&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Document
  &lt;b&gt;user &lt;/b&gt;stories, &lt;b&gt;data &lt;/b&gt;model, &lt;b&gt;3rd party&lt;/b&gt; &lt;b&gt;constraints&lt;/b&gt;,
  as well as the why, not just the what.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Prototype
  &lt;b&gt;UI &lt;/b&gt;and &lt;b&gt;MVP &lt;/b&gt;concepts; get feedback from key users and domain
  experts.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Project Management&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Define
  delivery of the project or product into large &lt;b&gt;milestones &lt;/b&gt;and smaller &lt;b&gt;iterations&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Use
  3-4 weeks per iteration and &lt;b&gt;sprint&lt;/b&gt;. Plan sprints as a team.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Schedule
  &lt;b&gt;daily &lt;/b&gt;scrums and &lt;b&gt;weekly &lt;/b&gt;meeting to review &lt;b&gt;progress&lt;/b&gt;, &lt;b&gt;obstacles&lt;/b&gt;,
  and &lt;b&gt;scope&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Define
  &lt;b&gt;change control process&lt;/b&gt; that connects stakeholders with cost/benefit
  tradeoffs of change.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Create
  &lt;b&gt;work breakdown structure&lt;/b&gt;; define and sequence activities.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Get
  labor and material &lt;b&gt;cost estimates&lt;/b&gt; from engineering - not management or
  marketing.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Establish
  a &lt;b&gt;single point of accountability&lt;/b&gt; for technology, process, and business
  matters.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Plan
  and distribute &lt;b&gt;communications&lt;/b&gt;.  Manage stakeholder expectations. 
  Report performance.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Identify
  top 10 project/product &lt;b&gt;risks&lt;/b&gt;.  Monitor and communicate risk assessment
  throughout.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Identify
  &lt;b&gt;core team&lt;/b&gt; of 3-5 &lt;b&gt;people &lt;/b&gt;(e.g. size of large pizza) including
  business, engineering, and QA.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Publish
  planning &lt;b&gt;documents &lt;/b&gt;for managing costs, risks, QA, team, procurement,
  and requirements.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Architecture&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Define
  major building blocks including their &lt;b&gt;responsibilities &lt;/b&gt;and &lt;b&gt;interfaces&lt;/b&gt;
  (Miller’s Law: &amp;lt; 9).&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Visualize
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;the solution architecture for
  shared understanding using &lt;b&gt;UML &lt;/b&gt;diagrams.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Design&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Single
  Responsibility&lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt; - components should
  have only 1 reason to change and exist.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Encapsulation
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;- share only what is needed; hide
  the details.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Cohesion
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;- gather and release related
  components, functions, and data together.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Dependency
  Inversion&lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt; - depend on abstractions,
  not concretions to manage change.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Simplicity
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;- make components/systems as simple
  as possible; minimize complexity.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Stability
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;- use stable abstractions,
  dependencies, and interfaces.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Consistency
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;- use consistent naming
  conventions, code styles, etc.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;DRY
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;- Do not Repeat Yourself.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;YAGNI
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;- You Ain’t Gonna Need It.  Things
  Change. Plans change. Avoid gold plating.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;KISS&lt;/span&gt;&lt;/b&gt;&lt;span
  style=&#39;font-size:10.0pt&#39;&gt; - Keep It as Simple as poSsible.  But no simpler.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Refactor
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;during maintenance iterations. 
  Design does not end in one phase.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Consider
  &lt;b&gt;domain specific languages&lt;/b&gt; to represent flexible logic and rules.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Consider
  &lt;b&gt;reflection&lt;/b&gt;, attribute-based programming for dynamic feature surfaces.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Consider
  &lt;b&gt;microservices &lt;/b&gt;to reduce monolithic system into modular components.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Consider
  &lt;b&gt;concurrency &lt;/b&gt;and scaling to multiple processors and machines.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Consider
  &lt;b&gt;portability &lt;/b&gt;and migration to other platform/infrastructure
  environments.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Consider
  &lt;b&gt;localization &lt;/b&gt;and internationalization.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Security&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;How
  is the solution secured?  Consider &lt;b&gt;users&lt;/b&gt;, &lt;b&gt;data&lt;/b&gt;, and &lt;b&gt;system &lt;/b&gt;itself.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;How
  are users &lt;b&gt;authenticated &lt;/b&gt;and &lt;b&gt;authorized&lt;/b&gt;?&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Does
  data need to be &lt;b&gt;encrypted &lt;/b&gt;in storage and transmission?&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Grant
  &lt;b&gt;minimum privileges&lt;/b&gt; to users and service accounts.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Use
  &lt;b&gt;enterprise identity management&lt;/b&gt; systems (e.g. Active Directory, ) that &lt;b&gt;federate&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Avoid
  inventing your own user/group/password management and encryption systems.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Database&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Is
  ACID necessary?  Then perhaps SQL/RDBMS.  Or does scalability suggest NoSQL?&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Visualize
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;logical &lt;b&gt;entities &lt;/b&gt;and their &lt;b&gt;relationships
  &lt;/b&gt;using diagrams.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Use
  primary keys and foreign keys for referential integrity.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Use
  default and check constraints for column data integrity.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Use
  indexes for large tables (1M+) and partitions for larger data sets (1B+).  &lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Use
  NoSQL, document oriented databases for very large data sets (1T+).&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Avoid
  cursors, triggers, and dynamic SQL.  Use them sparingly and consciously.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Secure
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;access through groups and roles.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Plan
  for &lt;b&gt;growth &lt;/b&gt;and &lt;b&gt;disaster recovery&lt;/b&gt;.  Stress test for &lt;b&gt;performance
  &lt;/b&gt;and &lt;b&gt;reliability&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Artifact Control&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Manage
  source code, binary references, and documentation using &lt;b&gt;Version Control
  System&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Prefer
  &lt;b&gt;GIT&lt;/b&gt;; TFS and Subversion are OK though.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Secure
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;access to artifacts through groups
  and roles.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Plan
  for several people working on system over time, perhaps at same time.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Source
  code is not owned by one person; it is &lt;b&gt;collectively owned&lt;/b&gt; by the team.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Quality Control&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Code
  defensively. Check parameters. Use assertions. No broken windows.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Are
  there tests for Correctness? Integration? Performance?  Security?  UX?&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Define
  &lt;b&gt;automated unit tests&lt;/b&gt; such as MSTest, NUnit, jUnit, or RUnit.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Assign
  manual beta testing driven by checklists to &lt;b&gt;independent &lt;/b&gt;group of power
  users.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Review
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;designs before coding.  &lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Review
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;code before production deployment.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Devops&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Where
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;will the solution run? desktops? 
  Mobile?  On Prem?  Cloud?&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;How
  will you deliver system updates and &lt;b&gt;changes over time&lt;/b&gt;?&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Maintain
  &lt;b&gt;separate environments&lt;/b&gt; for Development, Test, and Production.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;How
  do you &lt;b&gt;log &lt;/b&gt;system activity especially &lt;b&gt;errors &lt;/b&gt;and &lt;b&gt;end-user&lt;/b&gt;
  usage?&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Automate
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;builds and deployments using VSTS,
  Chef, Octopus, PowerShell, bash, etc.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Support&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;How
  will users &lt;b&gt;contact &lt;/b&gt;you regarding features and defects?&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Track
  past, present, and future work in an &lt;b&gt;online backlog&lt;/b&gt;.  &lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Use
  JIRA, VSTS, or a similar system.   Avoid spreadsheets and email.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Customers&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Delight
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;users. Under promise and over
  deliver. &lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Prioritize
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;system feedback from power users
  who influence others and are passionate.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Key
  users should be part of project and product teams and &lt;b&gt;available &lt;/b&gt;-
  onsite, daily.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Peopleware&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Align
  team member interests with work assignments.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Create
  &lt;b&gt;workspaces &lt;/b&gt;that support thoughtful, focused, un-interrupted work. 
  Avoid open offices.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Establish
  &lt;b&gt;accountability &lt;/b&gt;and responsibility for decisions by making people put
  skin in the game.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Take
  time to &lt;b&gt;celebrate &lt;/b&gt;achieving milestones and performing &lt;b&gt;post-mortems&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Metaphors &lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Cone&lt;/span&gt;&lt;/b&gt;&lt;span
  style=&#39;font-size:10.0pt&#39;&gt; of uncertainty - explore risk areas and learn to
  reduce uncertainty over lifecycle.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Triangle
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;of constraints - cost, scope, and
  quality. Pick 2 out of 3; it’s tough to have it all.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Tracer
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;bullets - use prototypes and
  feature spikes to find the moving target in the dark.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Microstones
  &lt;/span&gt;&lt;/b&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;- track progress on smaller units
  work to keep team focused within milestones.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;Proverbs&lt;/b&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;padding:5.0pt 5.0pt 5.0pt 5.0pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Work
  with users to think like a user.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Don’t
  gather requirements like scattered seeds; dig for them like buried treasure.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;You
  will fail, if there is no plan, no one following plan, and no change to plans
  when things change.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Abstractions
  live longer than details.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Test
  early, often, and automatically.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Provide
  options; don’t give lame excuses.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;The
  word of someone else’s mouth sells better than opening yours.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Good
  architectures with conceptual integrity should manage complexity and change.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Do
  not assume something to be true; try to prove it.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Sign
  your work; take pride in quality and craftsmanship.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;If
  you found it painful more than twice, then automate it.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;The
  cost of “quick and dirty” often lasts longer and gets dirtier than the quick
  win’s benefit.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;The
  best and the perfect are the enemy of the good.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;You
  don’t make money by developing software, but by delivering and selling
  software.&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt&#39;&gt;Leverage
  80/20 rule - finish 80% of requirements before design and 80% of design
  before coding.&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;

&lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;line-height:normal&#39;&gt;&lt;b&gt;&lt;u&gt;References&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9679;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;;color:white&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Feasibility/Requirements&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9675;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;;color:white&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a href=&quot;http://a.co/7e7x5ZG&quot;&gt;&lt;span style=&#39;;color:white&#39;&gt;Lean
Enterprise&lt;/span&gt;&lt;/a&gt; by Humble, Molesky, and O’Reilly&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9679;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Design/Construction&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9675;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;;color:white&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a href=&quot;http://a.co/aDgf7mz&quot;&gt;&lt;span style=&#39;;color:white&#39;&gt;Extreme
Programming&lt;/span&gt;&lt;/a&gt; by Kent Beck&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9675;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;;color:white&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a href=&quot;http://a.co/1UFiGs7&quot;&gt;&lt;span style=&#39;;color:white&#39;&gt;Pragmatic
Programmer&lt;/span&gt;&lt;/a&gt; by Andrew Hunt and Dave Thomas&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9675;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;;color:white&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a href=&quot;http://a.co/1LVRTLq&quot;&gt;&lt;span style=&#39;;color:white&#39;&gt;Code Complete&lt;/span&gt;&lt;/a&gt;
by Steve McConnell&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9675;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;;color:white&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a href=&quot;http://a.co/fQYBYSE&quot;&gt;&lt;span style=&#39;;color:white&#39;&gt;Design
Patterns&lt;/span&gt;&lt;/a&gt; by GoF&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9679;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;;color:white&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;DevOps&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9675;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;;color:white&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a href=&quot;http://a.co/f2b8QEr&quot;&gt;&lt;span style=&#39;;color:white&#39;&gt;Release It&lt;/span&gt;&lt;/a&gt;
by Michael Nygard&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9679;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;;color:white&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;Project Management&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9675;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;;color:white&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a href=&quot;http://a.co/0nAFgky&quot;&gt;&lt;span style=&#39;;color:white&#39;&gt;Essential
Scrum&lt;/span&gt;&lt;/a&gt; by Ken Rubin&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9675;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;;color:white&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;PMBOK by Project Management Institute&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:.5in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9679;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;;color:white&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;SDLC &lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9675;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;;color:white&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a href=&quot;http://a.co/20ASaMh&quot;&gt;&lt;span style=&#39;;color:white&#39;&gt;Software Project
Survival Guide&lt;/span&gt;&lt;/a&gt; by Steve McConnell&lt;/p&gt;

&lt;p class=MsoNormalCxSpMiddle style=&#39;margin-left:1.0in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9675;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;;color:white&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a href=&quot;http://a.co/dx12bVN&quot;&gt;&lt;span style=&#39;;color:white&#39;&gt;Peopleware&lt;/span&gt;&lt;/a&gt;
by Tom DeMarco and Tim Lister&lt;/p&gt;

&lt;p class=MsoNormalCxSpLast style=&#39;margin-left:1.0in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9675;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;;color:white&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a
href=&quot;https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/&quot;&gt;&lt;span
style=&#39;;color:white&#39;&gt;12 Steps to Great Code&lt;/span&gt;&lt;/a&gt; by Joel Spolsky&lt;/p&gt;

&lt;p class=MsoNormalCxSpLast style=&#39;margin-left:1.0in;text-indent:-.25in;
line-height:normal&#39;&gt;&amp;#9675;&lt;span style=&#39;font:7.0pt &quot;Times New Roman&quot;;color:white&#39;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;a
href=&quot;https://medium.com/@bishr_tabbaa/principles-and-practices-of-sdlc-5ea8b026b47d&quot;&gt;&lt;span
style=&#39;;color:white&#39;&gt;Principles and Practices of SDLC&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://tyrisias.blogspot.com/feeds/7951465445676385503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/667582413309466842/7951465445676385503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/7951465445676385503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/7951465445676385503'/><link rel='alternate' type='text/html' href='http://tyrisias.blogspot.com/2016/12/principles-and-practices-sdlc.html' title='Principles and Practices | SDLC'/><author><name>bt</name><uri>http://www.blogger.com/profile/09804796424177219390</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV2JH5aRHTSZKfbBbTRzjITAVYHi2-hvAPjgL1WZpRaiMCF3MH4K_8tmeyy7VH83qZ79SSPCqQyQPTtoXoBG0vwX1NJlCH4whGxC6bqSECZ5BSeqZeoD5r5-1KyOLeRlg/s220/tabbaab-young-faded.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-667582413309466842.post-2022555288148020169</id><published>2016-12-04T16:39:00.001-06:00</published><updated>2016-12-04T17:27:04.525-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".net"/><category scheme="http://www.blogger.com/atom/ns#" term="addin"/><category scheme="http://www.blogger.com/atom/ns#" term="addinexpress"/><category scheme="http://www.blogger.com/atom/ns#" term="dotnet"/><category scheme="http://www.blogger.com/atom/ns#" term="exceldna"/><category scheme="http://www.blogger.com/atom/ns#" term="msoffice"/><category scheme="http://www.blogger.com/atom/ns#" term="vsto"/><title type='text'>Excel Add-in Development | Framework Criteria</title><content type='html'>
&lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal&#39;&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;mso-fareast-font-family:
&quot;Times New Roman&quot;;color:white&#39;&gt;Although the desktop may be slowly dying as
phones, tablets, and other devices encroach; many businesses and
consumers remain loyal fans and active users of Microsoft Office and Excel.
According to Microsoft, there were &lt;b&gt;1.2 Billion&lt;/b&gt; users of Office as of
March 2016. &amp;nbsp;Excel’s core capabilities include a flexible tabular data
representation indexed by rows and columns, a charting module, a catalog of
built-in functions, and a rich programming model using VBA. &amp;nbsp;For heavy,
data intensive commercial and academic users of Excel, there is a need to
extend Excel’s core capabilities with custom calculations, new data sources,
real-time refresh, and embedded GUI’s.&lt;/span&gt;&lt;span style=&#39;font-size:12.0pt;
font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal&#39;&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;mso-fareast-font-family:
&quot;Times New Roman&quot;;color:white&#39;&gt;In this series, I will be covering several
topics.&lt;/span&gt;&lt;span style=&#39;font-size:12.0pt;font-family:&quot;Times New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&#39;margin-top:0in&#39; type=disc&gt;
 &lt;li class=MsoNormal style=&#39;color:white;margin-bottom:0in;margin-bottom:.0001pt;
     line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in;vertical-align:
     baseline&#39;&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;mso-fareast-font-family:
     &quot;Times New Roman&quot;&#39;&gt;Excel &lt;span class=SpellE&gt;Addin&lt;/span&gt; Framework Evaluation Criteria&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style=&#39;color:white;margin-bottom:0in;margin-bottom:.0001pt;
     line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in;vertical-align:
     baseline&#39;&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;mso-fareast-font-family:
     &quot;Times New Roman&quot;&#39;&gt;UDF&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style=&#39;color:white;margin-bottom:0in;margin-bottom:.0001pt;
     line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in;vertical-align:
     baseline&#39;&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;mso-fareast-font-family:
     &quot;Times New Roman&quot;&#39;&gt;Embedded GUI&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style=&#39;color:white;margin-bottom:0in;margin-bottom:.0001pt;
     line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in;vertical-align:
     baseline&#39;&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;mso-fareast-font-family:
     &quot;Times New Roman&quot;&#39;&gt;RTD&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style=&#39;color:white;margin-bottom:0in;margin-bottom:.0001pt;
     line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in;vertical-align:
     baseline&#39;&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;mso-fareast-font-family:
     &quot;Times New Roman&quot;&#39;&gt;Portability&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style=&#39;color:white;margin-bottom:0in;margin-bottom:.0001pt;
     line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in;vertical-align:
     baseline&#39;&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;mso-fareast-font-family:
     &quot;Times New Roman&quot;&#39;&gt;Deployment&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
 &lt;li class=MsoNormal style=&#39;color:white;margin-bottom:0in;margin-bottom:.0001pt;
     line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in;vertical-align:
     baseline&#39;&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;mso-fareast-font-family:
     &quot;Times New Roman&quot;&#39;&gt;Troubleshooting&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal&#39;&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;mso-fareast-font-family:
&quot;Times New Roman&quot;;color:white&#39;&gt;There are several criteria when evaluating which
Excel &lt;span class=SpellE&gt;addin&lt;/span&gt; framework to use.&lt;/span&gt;&lt;span
style=&#39;font-size:12.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
&quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal&#39;&gt;&lt;span style=&#39;font-size:12.0pt;font-family:&quot;Times New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
 style=&#39;border-collapse:collapse;mso-yfti-tbllook:1184&#39;&gt;
 &lt;tr style=&#39;mso-yfti-irow:0;mso-yfti-firstrow:yes&#39;&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal align=center style=&#39;margin-bottom:0in;margin-bottom:.0001pt;
  text-align:center;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Criteria&lt;/span&gt;&lt;/b&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-left:none;mso-border-left-alt:
  solid white .75pt;mso-border-alt:solid white .75pt;padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal align=center style=&#39;margin-bottom:0in;margin-bottom:.0001pt;
  text-align:center;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;&lt;a href=&quot;https://blogs.msdn.microsoft.com/vsto/&quot;&gt;VSTO&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-left:none;mso-border-left-alt:
  solid white .75pt;mso-border-alt:solid white .75pt;padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal align=center style=&#39;margin-bottom:0in;margin-bottom:.0001pt;
  text-align:center;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;&lt;a href=&quot;https://www.add-in-express.com/&quot;&gt;Add-in Express&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-left:none;mso-border-left-alt:
  solid white .75pt;mso-border-alt:solid white .75pt;padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal align=center style=&#39;margin-bottom:0in;margin-bottom:.0001pt;
  text-align:center;line-height:normal&#39;&gt;&lt;b&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;&lt;a href=&quot;http://exceldna.codeplex.com&quot;&gt;Excel DNA&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;span
  style=&#39;font-size:1.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-left:none;mso-border-left-alt:
  solid white .75pt;mso-border-alt:solid white .75pt;padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal align=center style=&#39;margin-bottom:0in;margin-bottom:.0001pt;
  text-align:center;line-height:normal&#39;&gt;&lt;span class=SpellE&gt;&lt;b&gt;&lt;span
  style=&#39;font-family:&quot;Arial&quot;,sans-serif;mso-fareast-font-family:&quot;Times New Roman&quot;;
  color:white&#39;&gt;&lt;a href=&quot;http://www.pyxll.com&quot;&gt;PyXLL&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&#39;font-size:10.0pt;font-family:
  &quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:1&#39;&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;mso-border-top-alt:
  solid white .75pt;mso-border-alt:solid white .75pt;padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Platform&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Microsoft COM, VSTO,
  C/C++, .NET, VBA&lt;/span&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;.NET&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;.NET, VBA&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Python v2.3-3.6&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:2&#39;&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;mso-border-top-alt:
  solid white .75pt;mso-border-alt:solid white .75pt;padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Price&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;MSDN&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Commercial.&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;$500-900/dev/&lt;span
  class=SpellE&gt;yr&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Free&lt;/span&gt;&lt;span
  style=&#39;font-size:12.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Commercial.&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;$100-200/dev/&lt;span
  class=SpellE&gt;yr&lt;/span&gt;&lt;/span&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:3&#39;&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;mso-border-top-alt:
  solid white .75pt;mso-border-alt:solid white .75pt;padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Portability&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;No. PIA version dependency.&lt;/span&gt;&lt;span style=&#39;font-size:10.0pt;
  font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Has portability layer
  for O2000-2016.&lt;/span&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Use with Net Office to
  support O2000-2016.&lt;/span&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Supports O2000-2016.&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:4&#39;&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;mso-border-top-alt:
  solid white .75pt;mso-border-alt:solid white .75pt;padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Open Source&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;No&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;No&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:5&#39;&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;mso-border-top-alt:
  solid white .75pt;mso-border-alt:solid white .75pt;padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Support&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes.&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:6&#39;&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;mso-border-top-alt:
  solid white .75pt;mso-border-alt:solid white .75pt;padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;UDF&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes. Native&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:7&#39;&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;mso-border-top-alt:
  solid white .75pt;mso-border-alt:solid white .75pt;padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Ribbon&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes. Native&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:8&#39;&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;mso-border-top-alt:
  solid white .75pt;mso-border-alt:solid white .75pt;padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;RTD&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes. Native&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:9&#39;&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;mso-border-top-alt:
  solid white .75pt;mso-border-alt:solid white .75pt;padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;GUI&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes. Native&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;No&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:10&#39;&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;mso-border-top-alt:
  solid white .75pt;mso-border-alt:solid white .75pt;padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Office Breadth&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Yes. Native&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Supports Excel, Word,
  and Outlook&lt;/span&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Only Excel&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;Only Excel&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style=&#39;mso-yfti-irow:11;mso-yfti-lastrow:yes&#39;&gt;
  &lt;td valign=top style=&#39;border:solid white 1.0pt;border-top:none;mso-border-top-alt:
  solid white .75pt;mso-border-alt:solid white .75pt;padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;History&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;1997&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;1998&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;2005&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
  &lt;td valign=top style=&#39;border-top:none;border-left:none;border-bottom:solid white 1.0pt;
  border-right:solid white 1.0pt;mso-border-top-alt:solid white .75pt;
  mso-border-left-alt:solid white .75pt;mso-border-alt:solid white .75pt;
  padding:5.25pt 5.25pt 5.25pt 5.25pt&#39;&gt;
  &lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal&#39;&gt;&lt;span style=&#39;font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
  mso-fareast-font-family:&quot;Times New Roman&quot;;color:white&#39;&gt;2010&lt;/span&gt;&lt;span
  style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
  &quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;


&lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal&#39;&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;mso-fareast-font-family:
&quot;Times New Roman&quot;;color:white&#39;&gt;If you are looking to build an Excel product
suite or family of add-ins, then I strongly encourage you to examine Add-in
Express or Excel DNA. &amp;nbsp;Both are fully featured and have broad language
support (unlike &lt;span class=SpellE&gt;PyXLL&lt;/span&gt;), and both are much easier to
use than the native Microsoft VSTO libraries. &amp;nbsp;Both have active user
communities with 1000’s of developers each. &amp;nbsp;&lt;/span&gt;&lt;span
style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
&quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;


&lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal&#39;&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;mso-fareast-font-family:
&quot;Times New Roman&quot;;color:white&#39;&gt;If you intend to support other Office products
such as Word or Outlook and are also not comfortable with using open source
software, then choosing Add-in Express makes wise sense from a long-term
maintenance, TCO perspective. &amp;nbsp;&lt;/span&gt;&lt;span style=&#39;font-size:10.0pt;
font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;


&lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal&#39;&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;mso-fareast-font-family:
&quot;Times New Roman&quot;;color:white&#39;&gt;If you are budget conscious and are developing a
&lt;span class=SpellE&gt;PoC&lt;/span&gt; or MVP for just Excel, then choosing Excel DNA
and Net Office is a solid starting point that you can build upon.&lt;/span&gt;&lt;span
style=&#39;font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:
&quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style=&#39;margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal&#39;&gt;&lt;span style=&#39;font-family:&quot;Arial&quot;,sans-serif;mso-fareast-font-family:
&quot;Times New Roman&quot;;color:white&#39;&gt;If you intend to develop Excel add-ins which use
native, platform features that are idiosyncratic to a specific version of
Office (which I do NOT recommend unless it offers durable competitive advantage
to your customers), then use VSTO.&lt;/span&gt;&lt;span style=&#39;font-size:10.0pt;
font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New Roman&quot;&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://tyrisias.blogspot.com/feeds/2022555288148020169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/667582413309466842/2022555288148020169' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/2022555288148020169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/2022555288148020169'/><link rel='alternate' type='text/html' href='http://tyrisias.blogspot.com/2016/12/excel-add-in-development-framework.html' title='Excel Add-in Development | Framework Criteria'/><author><name>bt</name><uri>http://www.blogger.com/profile/09804796424177219390</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV2JH5aRHTSZKfbBbTRzjITAVYHi2-hvAPjgL1WZpRaiMCF3MH4K_8tmeyy7VH83qZ79SSPCqQyQPTtoXoBG0vwX1NJlCH4whGxC6bqSECZ5BSeqZeoD5r5-1KyOLeRlg/s220/tabbaab-young-faded.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-667582413309466842.post-8836897023241548193</id><published>2016-12-03T21:00:00.000-06:00</published><updated>2016-12-04T12:09:43.333-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cache"/><category scheme="http://www.blogger.com/atom/ns#" term="cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="database"/><category scheme="http://www.blogger.com/atom/ns#" term="network"/><category scheme="http://www.blogger.com/atom/ns#" term="performance"/><category scheme="http://www.blogger.com/atom/ns#" term="scalability"/><title type='text'>Book Summary | Scalability Rules</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
This article is a reboot of my&amp;nbsp;blog. &amp;nbsp;Posts will consist of book reviews, informal musings on economics,&amp;nbsp;history, and software, as well as more formal, didactic articles on technology.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Here is a book summary and review of &lt;a href=&quot;http://a.co/2MJAqhl&quot; target=&quot;_blank&quot;&gt;Scalability Rules&lt;/a&gt; by Abbott and Fisher. &amp;nbsp;Practical. &amp;nbsp;Concise. &amp;nbsp;Packed with good advice on design, infrastructure, and organizational processes. &amp;nbsp;The latest edition includes stories that give context to the rules. &amp;nbsp;Highly recommended.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;WordSection1&quot;&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoTableGrid&quot; style=&quot;border: 1px solid white; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 1184;&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;mso-yfti-firstrow: yes; mso-yfti-irow: 0;&quot;&gt;
  &lt;td style=&quot;border: 1px solid white; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.25pt;&quot; valign=&quot;top&quot; width=&quot;90&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; text-align: center;&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;Category&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style=&quot;border: 1px solid white;  mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 400.25pt;&quot; valign=&quot;top&quot; width=&quot;534&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; text-align: center;&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;Rule&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-irow: 1;&quot;&gt;
  &lt;td style=&quot;border: 1px solid white;  mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.25pt;&quot; valign=&quot;top&quot; width=&quot;90&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;Design&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style=&quot;border: 1px solid white;  mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 400.25pt;&quot; valign=&quot;top&quot; width=&quot;534&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Do not over engineer the solution.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Design scale into solutions: design @ 20X, implement @ 3X,
  deploy @ 2X&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Avoid single point of failure.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Avoid sequencing components and systems in synchronous series.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Strive for statelessness.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
  &lt;/span&gt;Watch out for server affinity.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Communicate asynchronously as much as possible (prefer pub-sub to
  RPC).&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Design your application to be monitored.&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-irow: 2;&quot;&gt;
  &lt;td style=&quot;border: 1px solid white;  mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.25pt;&quot; valign=&quot;top&quot; width=&quot;90&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;Reduce&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style=&quot;border: 1px solid white;  mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 400.25pt;&quot; valign=&quot;top&quot; width=&quot;534&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Reduce object usage including DB, DNS, sockets, images, CPU, MEM,
  DISK, &lt;span class=&quot;SpellE&quot;&gt;etc&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-irow: 3;&quot;&gt;
  &lt;td style=&quot;border: 1px solid white;  mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.25pt;&quot; valign=&quot;top&quot; width=&quot;90&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;Cache&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style=&quot;border: 1px solid white;  mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 400.25pt;&quot; valign=&quot;top&quot; width=&quot;534&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Cache static, infrequently changing information and objects
  appropriately.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Use web page cache, image cache, application reference data cache,
  etc.&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-irow: 4;&quot;&gt;
  &lt;td style=&quot;border: 1px solid white;  mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.25pt;&quot; valign=&quot;top&quot; width=&quot;90&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;Scale&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style=&quot;border: 1px solid white;  mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 400.25pt;&quot; valign=&quot;top&quot; width=&quot;534&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Design to clone things on commodity hardware and network load
  balancer.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Design to split different and similar things.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Design your solution to scale out.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
  &lt;/span&gt;Use AKF scale cube.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Scale out your data centers.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Design to leverage the cloud, but be wary of scaling through 3&lt;sup&gt;rd&lt;/sup&gt;
  party.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;Details matter.&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-irow: 5;&quot;&gt;
  &lt;td style=&quot;border: 1px solid white;  mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.25pt;&quot; valign=&quot;top&quot; width=&quot;90&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;Platform&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style=&quot;border: 1px solid white;  mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 400.25pt;&quot; valign=&quot;top&quot; width=&quot;534&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Use database appropriately.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
  &lt;/span&gt;Need ACID (Atomic, Consistent, Isolated, Durable)?&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Use firewalls appropriately.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Use log files actively.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Do not double check your work… do not re-read your data after
  write.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Stop redirecting traffic.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Leverage Content Distribution Networks (CDN).&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Use expire headers in HTTP requests to reduce duplicates for static
  data.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Purge, archive, and cost justify storage.&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-irow: 6;&quot;&gt;
  &lt;td style=&quot;border: 1px solid white; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.25pt;&quot; valign=&quot;top&quot; width=&quot;90&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;Process&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style=&quot;border: 1px solid white;  mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 400.25pt;&quot; valign=&quot;top&quot; width=&quot;534&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Test.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;Measure.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;Rinse.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
  &lt;/span&gt;Repeat.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Learn aggressively and especially from failure through team
  discussion.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Do not rely on QA to find mistakes.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Design for rollback of code.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Be aware of costly relationships and dependencies (networks,
  databases, etc).&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-irow: 7;&quot;&gt;
  &lt;td style=&quot;border: 1px solid white;  mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.25pt;&quot; valign=&quot;top&quot; width=&quot;90&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;Database&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style=&quot;border: 1px solid white;  mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 400.25pt;&quot; valign=&quot;top&quot; width=&quot;534&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Understand object relationships.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Use the correct database lock.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Avoid multi-phase commit.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Avoid select for update.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Avoid select *.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Separate business intelligence from transaction processing.&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-irow: 8; mso-yfti-lastrow: yes;&quot;&gt;
  &lt;td style=&quot;border: 1px solid white;  mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.25pt;&quot; valign=&quot;top&quot; width=&quot;90&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;General&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;
  &lt;td style=&quot;border: 1px solid white;  mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 400.25pt;&quot; valign=&quot;top&quot; width=&quot;534&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Do not do anything more than once.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Do not do anything that is unnecessary.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
Get as much as in one request as possible.&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://tyrisias.blogspot.com/feeds/8836897023241548193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/667582413309466842/8836897023241548193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/8836897023241548193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/8836897023241548193'/><link rel='alternate' type='text/html' href='http://tyrisias.blogspot.com/2016/12/book-review-scalability-rules.html' title='Book Summary | Scalability Rules'/><author><name>bt</name><uri>http://www.blogger.com/profile/09804796424177219390</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV2JH5aRHTSZKfbBbTRzjITAVYHi2-hvAPjgL1WZpRaiMCF3MH4K_8tmeyy7VH83qZ79SSPCqQyQPTtoXoBG0vwX1NJlCH4whGxC6bqSECZ5BSeqZeoD5r5-1KyOLeRlg/s220/tabbaab-young-faded.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-667582413309466842.post-2465462591700930760</id><published>2008-07-09T23:35:00.005-05:00</published><updated>2008-12-11T00:11:09.013-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cube"/><category scheme="http://www.blogger.com/atom/ns#" term="SP2"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server"/><title type='text'>Cube Restore Chokes Without SQL Server 2005 SP2</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisspmejWB6gpiEC6_mQPGRmXckx_mg75AgwBh2CupuSpUzyBS8XzUsTkt6a62OzbG3l36EXD7hWMIPGQx4ORMg-na48QDRNlSYFE8VdQo4EBlGsGs-OreyjBmYiIz-vGzWPtaIvgApqYA/s1600-h/mssas_cube_restore_error_sp2install.PNG&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisspmejWB6gpiEC6_mQPGRmXckx_mg75AgwBh2CupuSpUzyBS8XzUsTkt6a62OzbG3l36EXD7hWMIPGQx4ORMg-na48QDRNlSYFE8VdQo4EBlGsGs-OreyjBmYiIz-vGzWPtaIvgApqYA/s200/mssas_cube_restore_error_sp2install.PNG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5221240584056237154&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;I just rebuilt my development machine&#39;s SQL Server 2005 instance and forgot to re-install SP2.  One of the quirky reminders to &quot;do the right thing&quot; and update/patch the base installation is transferring hypercubes between instances of SQL Server 2005.  See the screenshot on the right for an example of what the hand slap looks like.&lt;br /&gt;&lt;br /&gt;Veterans have experienced this minor flesh wound before.&lt;br /&gt;&lt;br /&gt;http://weblogs.asp.net/jgalloway/archive/2007/06/21/sql-server-analysis-services-quot-errors-in-the-metadata-manager-quot-when-restoring-a-backup.aspx</content><link rel='replies' type='application/atom+xml' href='http://tyrisias.blogspot.com/feeds/2465462591700930760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/667582413309466842/2465462591700930760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/2465462591700930760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/2465462591700930760'/><link rel='alternate' type='text/html' href='http://tyrisias.blogspot.com/2008/07/cube-restore-chokes-without-sql-server.html' title='Cube Restore Chokes Without SQL Server 2005 SP2'/><author><name>bt</name><uri>http://www.blogger.com/profile/09804796424177219390</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV2JH5aRHTSZKfbBbTRzjITAVYHi2-hvAPjgL1WZpRaiMCF3MH4K_8tmeyy7VH83qZ79SSPCqQyQPTtoXoBG0vwX1NJlCH4whGxC6bqSECZ5BSeqZeoD5r5-1KyOLeRlg/s220/tabbaab-young-faded.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisspmejWB6gpiEC6_mQPGRmXckx_mg75AgwBh2CupuSpUzyBS8XzUsTkt6a62OzbG3l36EXD7hWMIPGQx4ORMg-na48QDRNlSYFE8VdQo4EBlGsGs-OreyjBmYiIz-vGzWPtaIvgApqYA/s72-c/mssas_cube_restore_error_sp2install.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-667582413309466842.post-1289626882210212566</id><published>2008-06-29T19:32:00.004-05:00</published><updated>2008-06-29T19:51:33.149-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="finance"/><category scheme="http://www.blogger.com/atom/ns#" term="xbrl"/><title type='text'>SEC Approves XBRL Rule</title><content type='html'>If accounting is the language of business, then the SEC&#39;s recent vote requiring public companies to electronically file financial documents using XML within 3 years means that XBRL is a leading candidate as the language of e-business.&lt;br /&gt;&lt;br /&gt;What does it mean for the average agent (i.e. investor, creditor, regulator, etc) in the financial ecosystem? XML tags data, and XBRL defines financial taxonomies. Combined with gradual convergence of GAAP and IFRS, this ruling should catalyze financial information system integration.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.sec.gov/news/press/2008/2008-85.htm&quot;&gt;http://www.sec.gov/news/press/2008/2008-85.htm&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.xbrl.org/&quot;&gt;http://www.xbrl.org/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://tyrisias.blogspot.com/feeds/1289626882210212566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/667582413309466842/1289626882210212566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/1289626882210212566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/1289626882210212566'/><link rel='alternate' type='text/html' href='http://tyrisias.blogspot.com/2008/06/sec-approves-and-publishes-xbrl-rule.html' title='SEC Approves XBRL Rule'/><author><name>bt</name><uri>http://www.blogger.com/profile/09804796424177219390</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV2JH5aRHTSZKfbBbTRzjITAVYHi2-hvAPjgL1WZpRaiMCF3MH4K_8tmeyy7VH83qZ79SSPCqQyQPTtoXoBG0vwX1NJlCH4whGxC6bqSECZ5BSeqZeoD5r5-1KyOLeRlg/s220/tabbaab-young-faded.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-667582413309466842.post-7267873050813181503</id><published>2008-06-19T20:25:00.005-05:00</published><updated>2008-06-19T20:53:43.606-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="basketball"/><category scheme="http://www.blogger.com/atom/ns#" term="data"/><title type='text'>Dunking Data</title><content type='html'>&lt;span &gt;Only a former highschool basketball statistician would get excited amidst the NBA Finals hype to report about the National Basketball Association&#39;s state-of-the-art information system that monitors and reports its games.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The scoreboard, shotclock, referee whistles, and floor lighting system all connect to a LAN of laptops operated by staff who tap dance with the data before it is sent to the arena&#39;s Large Monitors and media outlets.  The data is sent onto NBA HQ in Secaucus, NJ where it is published to nba.com.  Video feeds are also tagged and fed into a database that is used by coaches to plan games and the league to review calls.  How cool is that?&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.eweek.com/c/a/Infrastructure/Data-Infrastructure-Drives-NBA-Finals/&quot;&gt;http://www.eweek.com/c/a/Infrastructure/Data-Infrastructure-Drives-NBA-Finals/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://tyrisias.blogspot.com/feeds/7267873050813181503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/667582413309466842/7267873050813181503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/7267873050813181503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/667582413309466842/posts/default/7267873050813181503'/><link rel='alternate' type='text/html' href='http://tyrisias.blogspot.com/2008/06/dunking-data.html' title='Dunking Data'/><author><name>bt</name><uri>http://www.blogger.com/profile/09804796424177219390</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV2JH5aRHTSZKfbBbTRzjITAVYHi2-hvAPjgL1WZpRaiMCF3MH4K_8tmeyy7VH83qZ79SSPCqQyQPTtoXoBG0vwX1NJlCH4whGxC6bqSECZ5BSeqZeoD5r5-1KyOLeRlg/s220/tabbaab-young-faded.jpg'/></author><thr:total>0</thr:total></entry></feed>