<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tai Tran</title>
    <description>The latest articles on DEV Community by Tai Tran (@morganvuongtrandevto).</description>
    <link>https://dev.to/morganvuongtrandevto</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3958431%2Fe3e249b8-4506-4bcb-86e1-472afb0600f0.jpg</url>
      <title>DEV Community: Tai Tran</title>
      <link>https://dev.to/morganvuongtrandevto</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/morganvuongtrandevto"/>
    <language>en</language>
    <item>
      <title>Treating configuration as a product with architecture, not as “just settings.”</title>
      <dc:creator>Tai Tran</dc:creator>
      <pubDate>Fri, 29 May 2026 13:19:05 +0000</pubDate>
      <link>https://dev.to/morganvuongtrandevto/treating-configuration-as-a-product-with-architecture-not-as-just-settings-1e8o</link>
      <guid>https://dev.to/morganvuongtrandevto/treating-configuration-as-a-product-with-architecture-not-as-just-settings-1e8o</guid>
      <description>&lt;p&gt;Most production software systems become unmanageable because configuration grows faster than the core codebase itself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;documentation&lt;/li&gt;
&lt;li&gt;ownership&lt;/li&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;mental models&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The fix is not “less config.”&lt;br&gt;
The fix is &lt;strong&gt;controlled configuration evolution&lt;/strong&gt;.&lt;/p&gt;


&lt;h3&gt;
  
  
  The Real Root Cause
&lt;/h3&gt;

&lt;p&gt;Configuration systems fail when they become:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Too expressive&lt;/td&gt;
&lt;td&gt;Config behaves like a programming language&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Too distributed&lt;/td&gt;
&lt;td&gt;Rules spread across files/services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Too dynamic&lt;/td&gt;
&lt;td&gt;Runtime behavior impossible to trace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Too layered&lt;/td&gt;
&lt;td&gt;Overrides + inheritance + flags + templates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unowned&lt;/td&gt;
&lt;td&gt;Nobody governs the schema&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Untestable&lt;/td&gt;
&lt;td&gt;No simulation/debugging tools&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h3&gt;
  
  
  What You Should Do NOW (Before It Gets Bad)
&lt;/h3&gt;
&lt;h4&gt;
  
  
  1. Define Configuration Levels
&lt;/h4&gt;

&lt;p&gt;Not all config should have equal power.&lt;br&gt;
Create tiers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Tier 1 → Simple constants
Tier 2 → Feature toggles
Tier 3 → Business rules
Tier 4 → Dynamic execution logic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Only a few people can create Tier 4 configs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h5&gt;
  
  
  Example
&lt;/h5&gt;

&lt;p&gt;Good:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;discount_percent&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dangerous:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="s"&gt;customer.is_vip == &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="s"&gt; &amp;amp;&amp;amp; region == "EU"&lt;/span&gt;
&lt;span class="na"&gt;then&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;invoke&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;dynamic_discount_engine&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second one is basically hidden software.&lt;/p&gt;




&lt;h4&gt;
  
  
  2. Limit Configuration Expressiveness
&lt;/h4&gt;

&lt;p&gt;The biggest mistake:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Turning config into a programming language.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Avoid:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;embedded scripts&lt;/li&gt;
&lt;li&gt;arbitrary conditions&lt;/li&gt;
&lt;li&gt;recursive templates&lt;/li&gt;
&lt;li&gt;unlimited nesting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bad:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;rules&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;execute_python&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
      &lt;span class="s"&gt;if customer.balance &amp;gt; 500:&lt;/span&gt;
          &lt;span class="s"&gt;return "VIP"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now your config system became an interpreter.&lt;/p&gt;

&lt;p&gt;Good:&lt;br&gt;
Use declarative constraints only:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;segment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;VIP&lt;/span&gt;
&lt;span class="na"&gt;minimum_balance&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;500&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h4&gt;
  
  
  3. Create a “Configuration Budget”
&lt;/h4&gt;

&lt;p&gt;Just like performance budgets.&lt;br&gt;
Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;max nesting depth = 3&lt;/li&gt;
&lt;li&gt;max inheritance layers = 2&lt;/li&gt;
&lt;li&gt;max rule conditions = 5&lt;/li&gt;
&lt;li&gt;max config file size = 1000 lines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When limits exceeded:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;redesign architecture&lt;/li&gt;
&lt;li&gt;split domains&lt;/li&gt;
&lt;li&gt;simplify abstractions&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;
  
  
  4. Enforce Strong Schemas
&lt;/h4&gt;

&lt;p&gt;Never allow “free-form” configuration.&lt;br&gt;
Use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JSON Schema&lt;/li&gt;
&lt;li&gt;Pydantic&lt;/li&gt;
&lt;li&gt;Protocol Buffers&lt;/li&gt;
&lt;li&gt;OpenAPI&lt;/li&gt;
&lt;li&gt;typed YAML validation&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;
  
  
  Example in Python
&lt;/h5&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;pydantic&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;BaseModel&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;DiscountRule&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BaseModel&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;segment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;
    &lt;span class="n"&gt;discount_percent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;
    &lt;span class="n"&gt;min_purchase&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;autocomplete&lt;/li&gt;
&lt;li&gt;discoverability&lt;/li&gt;
&lt;li&gt;safer refactoring&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;
  
  
  5. Make Configuration Observable
&lt;/h4&gt;

&lt;p&gt;People panic when configs affect behavior invisibly.&lt;br&gt;
You need:&lt;/p&gt;
&lt;h5&gt;
  
  
  A. Config tracing
&lt;/h5&gt;

&lt;p&gt;Show:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;text
WHY did customer receive 15% discount?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Answer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;text
Rule matched:
vip_discount.yaml → line 42
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h5&gt;
  
  
  B. Config diff history
&lt;/h5&gt;

&lt;p&gt;Track:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;who changed what&lt;/li&gt;
&lt;li&gt;when&lt;/li&gt;
&lt;li&gt;why&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;audit logs&lt;/li&gt;
&lt;li&gt;change approval workflows&lt;/li&gt;
&lt;/ul&gt;




&lt;h4&gt;
  
  
  6. Separate Business Rules from System Configuration
&lt;/h4&gt;

&lt;p&gt;One of the biggest architecture mistakes is mixing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Infrastructure config
+
Business policy
+
Workflow logic
+
Feature flags
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;into one system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separate them.
&lt;/h2&gt;

&lt;h5&gt;
  
  
  Example
&lt;/h5&gt;

&lt;h6&gt;
  
  
  Infrastructure Config
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;database_pool_number&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  Business Rule
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;vip_discounts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;15&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  Workflow Definition
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;when_signup&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;send_email&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;create_trial&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Different owners.&lt;br&gt;
Different validation.&lt;br&gt;
Different lifecycles.&lt;/p&gt;


&lt;h4&gt;
  
  
  7. Build Configuration Visualization Tools
&lt;/h4&gt;

&lt;p&gt;If humans cannot SEE the system,&lt;br&gt;
they cannot reason about it.&lt;br&gt;
Create:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;dependency graphs&lt;/li&gt;
&lt;li&gt;rule trees&lt;/li&gt;
&lt;li&gt;override chains&lt;/li&gt;
&lt;li&gt;execution flow diagrams&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;
  
  
  8. Introduce Configuration Governance
&lt;/h4&gt;

&lt;p&gt;At scale, configs need architecture review.&lt;br&gt;
Create:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;config review process&lt;/li&gt;
&lt;li&gt;schema evolution process&lt;/li&gt;
&lt;li&gt;deprecation policy&lt;/li&gt;
&lt;li&gt;ownership registry&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;
  
  
  Example
&lt;/h5&gt;

&lt;p&gt;Every config must have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;owner&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;pricing-team&lt;/span&gt;
&lt;span class="na"&gt;created_at&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2026-01-10&lt;/span&gt;
&lt;span class="na"&gt;expires_at&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2027-01-10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yes — configs should expire.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dead config is one of the biggest complexity multipliers.
&lt;/h2&gt;

&lt;h4&gt;
  
  
  9. Prefer “Opinionated Systems” Over Infinite Flexibility
&lt;/h4&gt;

&lt;p&gt;The safest platforms intentionally restrict users.&lt;br&gt;
Good systems say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“You can only do these 5 supported things.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Bad systems say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“You can do anything.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;“Anything” eventually becomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;impossible debugging&lt;/li&gt;
&lt;li&gt;impossible onboarding&lt;/li&gt;
&lt;li&gt;impossible predictability&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;
  
  
  10. Periodically Delete Features
&lt;/h4&gt;

&lt;p&gt;Configuration complexity grows like entropy.&lt;br&gt;
You should have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cleanup sessions&lt;/li&gt;
&lt;li&gt;simplification sprints&lt;/li&gt;
&lt;li&gt;regular review periods&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which feature flags are no longer used?&lt;/li&gt;
&lt;li&gt;Which rules are outdated?&lt;/li&gt;
&lt;li&gt;Which parts can be combined?&lt;/li&gt;
&lt;li&gt;Which ideas made the system more confusing instead of helping?&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  The Most Important Principle
&lt;/h2&gt;
&lt;h4&gt;
  
  
  Configuration Should Describe Reality — Not Replace Code
&lt;/h4&gt;

&lt;p&gt;Good config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;tax_rate&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.20&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bad config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="s"&gt;region == "EU" &amp;amp;&amp;amp;&lt;/span&gt;
  &lt;span class="s"&gt;order.total &amp;gt; 100 &amp;amp;&amp;amp;&lt;/span&gt;
  &lt;span class="s"&gt;user.is_vip == &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="s"&gt; &amp;amp;&amp;amp;&lt;/span&gt;
  &lt;span class="s"&gt;inventory.dynamic() &amp;amp;&amp;amp;&lt;/span&gt;
  &lt;span class="s"&gt;seasonality.predict()&lt;/span&gt;
&lt;span class="na"&gt;then&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;execute&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;custom_tax_plugin&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At that point:&lt;/p&gt;

&lt;blockquote&gt;
&lt;h2&gt;
  
  
  you secretly rebuilt a programming language badly.
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  A Practical Strategy for Your Current Project
&lt;/h2&gt;

&lt;p&gt;If you are building something today:&lt;/p&gt;

&lt;h4&gt;
  
  
  Phase 1 — Keep It Hardcoded
&lt;/h4&gt;

&lt;p&gt;Early startup stage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;optimize for clarity&lt;/li&gt;
&lt;li&gt;not flexibility&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Phase 2 — Extract Stable Variability
&lt;/h4&gt;

&lt;p&gt;Only configurable things that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;change frequently&lt;/li&gt;
&lt;li&gt;differ by customer&lt;/li&gt;
&lt;li&gt;differ by environment&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Phase 3 — Introduce Typed Rules
&lt;/h4&gt;

&lt;p&gt;Use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;schemas&lt;/li&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;bounded rule systems&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Phase 4 — Add Governance BEFORE Scale
&lt;/h4&gt;

&lt;p&gt;Do not wait until chaos.&lt;br&gt;
Add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ownership&lt;/li&gt;
&lt;li&gt;reviews&lt;/li&gt;
&lt;li&gt;tooling&lt;/li&gt;
&lt;li&gt;tracing&lt;/li&gt;
&lt;li&gt;visualization early.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Golden Rule
&lt;/h2&gt;

&lt;p&gt;A good configuration system should answer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What changed?&lt;/li&gt;
&lt;li&gt;Why did this happen?&lt;/li&gt;
&lt;li&gt;Who owns this?&lt;/li&gt;
&lt;li&gt;What depends on this?&lt;/li&gt;
&lt;li&gt;Can I safely modify it?&lt;/li&gt;
&lt;li&gt;Can a new engineer understand it in 2 hours?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the answer becomes “no” then your configuration system is already facing toward collapse.&lt;/p&gt;

&lt;p&gt;BTW, feel free to follow me on &lt;a href="//www.linkedin.com/in/morgan-tran"&gt;Linkedin&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>software</category>
    </item>
  </channel>
</rss>
