{"id":1020,"date":"2014-07-06T15:20:26","date_gmt":"2014-07-06T15:20:26","guid":{"rendered":"https:\/\/trouble.org\/?p=1020"},"modified":"2016-04-04T15:54:27","modified_gmt":"2016-04-04T15:54:27","slug":"the-dynamic-and-depreciating-value-of-computers","status":"publish","type":"post","link":"https:\/\/trouble.org\/?p=1020","title":{"rendered":"The Dynamic and Depreciating Value of Computers"},"content":{"rendered":"<p>I wrote this while I was at my company Elemental, and was meant for engineers to implement, so despite\u00a0some of the very specific language for implementation purposes\u00a0it\u00a0was never meant to be dogmatic. I love the idea of calculating value based on&#8230; not much.<\/p>\n<p>I don&#8217;t know how accurate it is, but I can say that when run on systems (just before Elemental spontaneously combusted) it produced some really cool analysis.<\/p>\n<p><a href=\"https:\/\/trouble.org\/uploads\/2014\/07\/tunnel-o-bux.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-thumbnail wp-image-1023\" src=\"https:\/\/trouble.org\/uploads\/2014\/07\/tunnel-o-bux-150x150.jpg\" alt=\"bux\" width=\"150\" height=\"150\" srcset=\"https:\/\/trouble.org\/wp-content\/uploads\/2014\/07\/tunnel-o-bux-150x150.jpg 150w, https:\/\/trouble.org\/wp-content\/uploads\/2014\/07\/tunnel-o-bux-96x96.jpg 96w, https:\/\/trouble.org\/wp-content\/uploads\/2014\/07\/tunnel-o-bux-24x24.jpg 24w, https:\/\/trouble.org\/wp-content\/uploads\/2014\/07\/tunnel-o-bux-36x36.jpg 36w, https:\/\/trouble.org\/wp-content\/uploads\/2014\/07\/tunnel-o-bux-48x48.jpg 48w, https:\/\/trouble.org\/wp-content\/uploads\/2014\/07\/tunnel-o-bux-64x64.jpg 64w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<p><span style=\"font-weight: bold; font-style: italic;\">The Dynamic and Depreciating Value of Computers <\/span><\/p>\n<p>(written 1\/1\/2006-3\/1\/2006)<\/p>\n<p><span style=\"font-style: italic;\">Summary: an attempt at evaluating computers based on configuration and activity. The value changes over time in a modest attempt to deal with real-word changes in valuation. <\/span><\/p>\n<p>Irrespective if we actually could come up with a reasonable method, the thought of knowing how much money was tied up into our systems and how much effort or damage we\u2019d incur when problems befell is compelling. I believe that we can come up with an automatic and consistent method of quantifying the value of things that, while not claiming to be stunningly accurate, has an opportunity to give at least an interesting evaluation of a network, and one that I suspect won\u2019t be so wildly off that it would prove to be useless. Even that might not be too interesting \u2013 esp. if our estimates were really off \u2013 but when married with compliance and policy, and emphasizing the <span style=\"font-style: italic;\">rate of change <\/span>over time&#8230; that starts to sound good. And if we add in the thought that we could automatically depreciate things, so that more contemporary data and hardware has more value, things might be even better.<\/p>\n<p>Note the dollars here are simply used for estimating value; people have a visceral reaction to them that I find interesting.<\/p>\n<p><span>Here are some of the basic things of value that we can use to estimate the value of computers*:<\/span><\/p>\n<ul>\n<li>Hardware &amp; Software<\/li>\n<li>Document types and numbers present on a system<\/li>\n<li>ActivityIn addition users might have three bits of information that could be manually entered by someone who understands the organization or specific systems that would influence the calculations:<\/li>\n<\/ul>\n<ul>\n<li>Overall organizational (network\/computer) worth<\/li>\n<li>Estimated total hosts on the network<\/li>\n<li>The dollar value of an individual system<\/li>\n<\/ul>\n<p>I\u2019ll talk about each in turn, along with some implementation notes. But the basic premise is that for each computer you add up each area and come up with a dollar amount for that host. This is not exactly a replacement value, but instead some estimate of how much that host is worth if it were compromised or if (something like) the worst happened.The total value of an organization is simply all the individual values added up.<\/p>\n<p style=\"line-height: 1.5;\">* ONLY computers that are running an agent or detected on the network by agents are to be counted. This assumes fairly deep penetration and perhaps over counts a bit; contractors and guests will be part of the equation \u2013 but this is hopefully a small aberration on a SWAG anyway ;-)<\/p>\n<p>As an admin option the user can tell the system to use \u201ccredits\u201d instead of \u201cdollars\u201d, but it only changes the label\/titles, not the calculations. You can alternately check the \u201cdo not show dollars\/credits\u201d option and you\u2019ll never see any values (this is for people who do not believe in the method and think that when auditors see this they\u2019ll be screwed or something!)<\/p>\n<p><span style=\"font-weight: bold; font-style: italic;\">Organizational Value <\/span><\/p>\n<p><span style=\"font-weight: bold;\">I. Overall network\/computer worth <\/span><\/p>\n<p>An admin user also has the option (in the configuration section or some other area) to assert that their entire network is worth X dollars. The calculations are then performed for all individual systems as per usual, but the individual values are adjusted as follows:<\/p>\n<p>Assume the overall value of the network is valued at N dollars by the user; the adjusted value is multiplied by:<\/p>\n<p>(X\/ (X % N))<\/p>\n<p>For instance, if the network was estimated to be worth $100M by the user and ECS found a total value of $50M, you would multiply the value of individual systems by:<\/p>\n<p>100M * (100M % 50M) = 2<br \/>\nObviously this could elevate or diminish the value of the network or individual hosts.<\/p>\n<p><span style=\"font-weight: bold;\">II. Estimated hosts on the network <\/span><\/p>\n<p>If we don\u2019t have good penetration into the organization\u2019s network, values seen are less accurate and should be adjusted. The admin user may optionally enter (in the configuration section or some other area) how many hosts they think they have; if we have seen less than that in the \u201cInside\u201d host group than we multiply the aggregate network worth by the ratio of what we have seen vs. what they claim. For instance, if they say there are 10K hosts and we have only seen 5K in the inside group, multiply the calculated worth of the network by .5.<\/p>\n<p>This is (not-very ;-)) analogous to the dark matter in the universe and the calculations of mass; it\u2019s out there somewhere, we just don\u2019t know where.<\/p>\n<p>This calculation is done after any \u201coverall network\/computer worth\u201d adjustments are performed.<\/p>\n<p><span style=\"font-weight: bold; font-style: italic;\">Individual Host Values <\/span><\/p>\n<p><span style=\"font-weight: bold;\">I. The dollar value of an individual system <\/span><\/p>\n<p>For certain key systems no automated analysis would be sufficient to calculate a reasonable value. For instance a source code repository that held all of a company\u2019s intellectual property might be valued at ten million dollars or more.<\/p>\n<p>A user should be able to manually enter in a dollar figure for the additional worth of a system above and beyond what is calculated. This number will simply be added to the calculated value for that system in question (a negative value will cause the value of the system to drop, but not below zero value.)<\/p>\n<p>The estimated dollar amount should not be changed by organizational multipliers \u2013 it is an unadulterated estimate of the computer\u2019s value, and this shouldn\u2019t be influenced by other calculations.<\/p>\n<p><span style=\"font-weight: bold;\">II. Hardware &amp; Software <\/span><\/p>\n<p>There are two methods that can be used \u2013 the EZ and the long forms. The EZ method should be OK for the first implementation of this report, while the long form is a work in progress and was started in an earlier version of this document.<\/p>\n<p><span style=\"font-weight: bold; font-style: italic;\">EZ form <\/span><\/p>\n<p>Hosts get a value assigned to them based on some gross characteristics; these are either calculated from group membership or from host attributes:<\/p>\n<table>\n<colgroup>\n<col \/>\n<col \/> <\/colgroup>\n<tbody>\n<tr>\n<td>\nAgents \u2013 AIX\n<\/td>\n<td>\n$20000\n<\/td>\n<\/tr>\n<tr>\n<td>\nAgents \u2013 HP\n<\/td>\n<td>\n$10000\n<\/td>\n<\/tr>\n<tr>\n<td>\nAgents \u2013 Mac OS X\n<\/td>\n<td>\n$5000\n<\/td>\n<\/tr>\n<tr>\n<td>\nAgents \u2013 Sun Solaris\n<\/td>\n<td>\n$10000\n<\/td>\n<\/tr>\n<tr>\n<td>\nAgents \u2013 Windows 2000\n<\/td>\n<td>\n$8000\n<\/td>\n<\/tr>\n<tr>\n<td>\nAgents \u2013 Windows 2003\n<\/td>\n<td>\n$10000\n<\/td>\n<\/tr>\n<tr>\n<td>\nAgents \u2013 Windows XP\n<\/td>\n<td>\n$5000\n<\/td>\n<\/tr>\n<tr>\n<td>\nAgents \u2013 Red Hat Linux\n<\/td>\n<td>\n$7500\n<\/td>\n<\/tr>\n<tr>\n<td>\nOther\/unknown\n<\/td>\n<td>\n$3000\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>There are modifiers as well; if a system falls into one of these categories add this cost.<\/p>\n<table>\n<colgroup>\n<col \/>\n<col \/> <\/colgroup>\n<tbody>\n<tr>\n<td>\nEnterprise Agent\n<\/td>\n<td>\n+100% of base cost\n<\/td>\n<\/tr>\n<tr>\n<td>\nLaptop\n<\/td>\n<td>\n+$1000\n<\/td>\n<\/tr>\n<tr>\n<td>\nMultiple CPUs\n<\/td>\n<td>\nEach CPU adds %50 of the base cost\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>There are other host groups that effect the cost, but they will be factored in other sections.<\/p>\n<p>Hosts that do not run the agent should take a different approach to this calculation. If the OS or hardware type is known than the price (in this section) for an average agent with the same OS or hardware type should be used. If even this isn\u2019t know about a host than the average overall cost for an agent should be used.<\/p>\n<p><span style=\"font-weight: bold;\">III. Documents <\/span><\/p>\n<p><span style=\"font-style: italic;\">[This section only impacts agents running Windows. It might be expanded in later versions.] <\/span><\/p>\n<p>I\u2019m guessing that the more starched of the white collars probably have more .DOC, .XLS, and .PPT files than others; perhaps the higher up you go (up to a point) the more you see? These documents often contain IP or company secrets you don\u2019t want others to see. Here\u2019s another SWAG for each unique document that you find on an individual\u2019s computer (ONLY in their personal area) the enterprise2:<\/p>\n<table>\n<colgroup>\n<col \/>\n<col \/> <\/colgroup>\n<tbody>\n<tr>\n<td>\nDocument type\n<\/td>\n<td>\nValue per document\n<\/td>\n<\/tr>\n<tr>\n<td>\n.PPT\n<\/td>\n<td>\n$1000\n<\/td>\n<\/tr>\n<tr>\n<td>\n.DOC\n<\/td>\n<td>\n$1500\n<\/td>\n<\/tr>\n<tr>\n<td>\n.XLS\n<\/td>\n<td>\n$2500\n<\/td>\n<\/tr>\n<tr>\n<td>\n.FM (FrameMaker document)\n<\/td>\n<td>\n$5000\n<\/td>\n<\/tr>\n<tr>\n<td>\n.DWG, .DWF (AutoCad)\n<\/td>\n<td>\n$5000\n<\/td>\n<\/tr>\n<tr>\n<td>\nEtcetera\n<\/td>\n<td>\n&#8230;.\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>I\u2019d do a position-in-the-organization multiplier (are a CEO\u2019s docs worth more than an engineers, I wonder? ;-)), but that\u2019s pretty much impossible to get without outside input.. Not sure how to do this for programmers (how much is a line of code worth, where is it, etc.), but I\u2019m thinking about it.<\/p>\n<p>Documents generally are less valuable as time goes on, Shakespeare notwithstanding. I assign a half-life of 90 days to a document, which means that after it was created or the last modification that it halves in value every 90 days. So that MS word document that is a year old (roughly 360 days, or four halvings of value) is worth 1500\/(2*2*2*2) = $187.50.<\/p>\n<p>To calculate these values a new policy will have to be written that sums up these values for an agent and return this to the server.<\/p>\n<p>Hosts that do not run the agent should take a different approach to this calculation. If the OS or hardware type is known than the price (in this section) for an average agent with<\/p>\n<p>2 <span style=\"color: rgb(0.000000%, 0.000000%, 100.000000%);\">http:\/\/www.ace.net.nz\/tech\/TechFileFormat.html <\/span>has a billion different extensions, if we want more.<\/p>\n<p>the same OS or hardware type should be used. If even this isn\u2019t know about a host than the average overall cost for an agent should be used.<\/p>\n<p><span style=\"font-weight: bold;\">IV. Activity <\/span><\/p>\n<p>Enough about the hypothetical, let\u2019s talk about the real&#8230; well, the virtual real, at least. Here we\u2019ll talk about the activity levels of computers \u2013 for now we can use the last day of measurements.<\/p>\n<p>Machines that get requests and send information out in response to others can be generally thought of as an interesting class of hosts. And the more activity and more systems they talk to the more important they are, for a variety of reasons. Let\u2019s try to quantify this.<\/p>\n<p>I\u2019ve split the type of activity into three types \u2013 total number of inbound sessions, number of bytes sent out, and the number of different hosts talking to the system. To get the activity value you add up all three values (cumulative values follow the Fibonacci pattern \u2013 hey, if it\u2019s good enough for seashells and sunflowers, it\u2019s good enough for us!):<\/p>\n<p><span style=\"font-weight: bold;\">Total inbound connections: <\/span><\/p>\n<table>\n<colgroup>\n<col \/>\n<col \/>\n<col \/> <\/colgroup>\n<tbody>\n<tr>\n<td>\n<span style=\"font-weight: bold;\"># of sessions <\/span>\n<\/td>\n<td>\n<span style=\"font-weight: bold;\">Value per connections ($) <\/span>\n<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\n1-20,000\n<\/td>\n<td>\n0.50\n<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\n20,001-100K\n<\/td>\n<td>\n0.125\n<\/td>\n<td>\n$10K + this value\n<\/td>\n<\/tr>\n<tr>\n<td>\n100,001-500K\n<\/td>\n<td>\n0.025\n<\/td>\n<td>\n$20K\n<\/td>\n<\/tr>\n<tr>\n<td>\n500,001-2M\n<\/td>\n<td>\n0.0067\n<\/td>\n<td>\n$30K\n<\/td>\n<\/tr>\n<tr>\n<td>\n2M+1 \u2013 10M\n<\/td>\n<td>\n0.002\n<\/td>\n<td>\n$50K\n<\/td>\n<\/tr>\n<tr>\n<td>\n10M+1 \u2013 100M\n<\/td>\n<td>\n0.0003\n<\/td>\n<td>\n$80K\n<\/td>\n<\/tr>\n<tr>\n<td>\n100M+\n<\/td>\n<td>\n0.00005\n<\/td>\n<td>\n$130K\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: bold;\">Total bytes\/day outbound: <\/span><\/p>\n<table>\n<colgroup>\n<col \/>\n<col \/>\n<col \/> <\/colgroup>\n<tbody>\n<tr>\n<td>\n<span style=\"font-weight: bold;\"># bytes <\/span>\n<\/td>\n<td>\n<span style=\"font-weight: bold;\">$ per K\/bytes <\/span>\n<\/td>\n<td>\n<p><span style=\"font-weight: bold;\">Cumulative value <\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n10MB-40MB\n<\/td>\n<td>\n0.25\n<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\n40-100MB\n<\/td>\n<td>\n0.1667\n<\/td>\n<td>\n$10K + this value\n<\/td>\n<\/tr>\n<tr>\n<td>\n100MB &#8211; 691.2 MB (64 Kbs)\n<\/td>\n<td>\n0.0169\n<\/td>\n<td>\n$20K\n<\/td>\n<\/tr>\n<tr>\n<td>\n&lt; 2.7648 GB (256 Kbs)\n<\/td>\n<td>\n0.0067\n<\/td>\n<td>\n$30K\n<\/td>\n<\/tr>\n<tr>\n<td>\n&lt; 16.675 GB (1.544 Mbs \u2013 T1))\n<\/td>\n<td>\n0.0014\n<\/td>\n<td>\n$50K\n<\/td>\n<\/tr>\n<tr>\n<td>\n&lt; 108 GB (10Mbs)\n<\/td>\n<td>\n0.0003\n<\/td>\n<td>\n$80K\n<\/td>\n<\/tr>\n<tr>\n<td>\n&lt; 1.08 TB + (100Mbs)\n<\/td>\n<td>\n0.00005\n<\/td>\n<td>\n$130K\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: bold;\">Unique [prefer only inbound] hosts communicating: <\/span><\/p>\n<table>\n<colgroup>\n<col \/>\n<col \/>\n<col \/> <\/colgroup>\n<tbody>\n<tr>\n<td>\n<span style=\"font-weight: bold;\"># hosts <\/span>\n<\/td>\n<td>\n<span style=\"font-weight: bold;\">$ per host <\/span>\n<\/td>\n<td>\n<span style=\"font-weight: bold;\">Cumulative value <\/span>\n<\/td>\n<\/tr>\n<tr>\n<td>\n1-1000\n<\/td>\n<td>\n0.10\n<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\n1001-2500\n<\/td>\n<td>\n0.04\n<\/td>\n<td>\n$10K + this value\n<\/td>\n<\/tr>\n<tr>\n<td>\n2501-10,000\n<\/td>\n<td>\n0.01\n<\/td>\n<td>\n$20K\n<\/td>\n<\/tr>\n<tr>\n<td>\n10,001-50,000\n<\/td>\n<td>\n0.002\n<\/td>\n<td>\n$30K\n<\/td>\n<\/tr>\n<tr>\n<td>\n50,001-250,000\n<\/td>\n<td>\n0.0004\n<\/td>\n<td>\n$50K\n<\/td>\n<\/tr>\n<tr>\n<td>\n250,001-1,000,000\n<\/td>\n<td>\n0.00001\n<\/td>\n<td>\n$80K\n<\/td>\n<\/tr>\n<tr>\n<td>\n&gt; 1,000,000\n<\/td>\n<td>\n0.000001\n<\/td>\n<td>\n$130K\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>In addition certain types of servers suggest the host is more valuable than the mere traffic patterns. A bit more of the back of the envelope some value propositions (simply multiply the numbers above by this), along with some guesses as to how relevant the above numbers would be to the specific type of server listed; these are looked up based on the host group of the system in question:<\/p>\n<table>\n<colgroup>\n<col \/>\n<col \/>\n<col \/>\n<col \/>\n<col \/> <\/colgroup>\n<tbody>\n<tr>\n<td>\n<span style=\"font-weight: bold;\">Host Group <\/span>\n<\/td>\n<td>\n<span style=\"font-weight: bold;\">Multiplier <\/span>\n<\/td>\n<td>\n<span style=\"font-weight: bold;\">Raw # <\/span>\n<\/td>\n<td>\n<span style=\"font-weight: bold;\">Traffic Volume <\/span>\n<\/td>\n<td>\n<span style=\"font-weight: bold;\">Unique hosts <\/span>\n<\/td>\n<\/tr>\n<tr>\n<td>\nHosts &#8211; Name Server (e.g. DNS, Active Directory, NIS)\n<\/td>\n<td>\n1.5 (pretty darn important)\n<\/td>\n<td>\nHigh\n<\/td>\n<td>\nLow\n<\/td>\n<td>\nHigh\n<\/td>\n<\/tr>\n<tr>\n<td>\nHosts \u2013 Web Server\n<\/td>\n<td>\n1.0\n<\/td>\n<td>\nHigh\n<\/td>\n<td>\nHigh\n<\/td>\n<td>\nMed\n<\/td>\n<\/tr>\n<tr>\n<td>\nHosts \u2013 Secure Web Server\n<\/td>\n<td>\n2.0\n<\/td>\n<td>\nLow\n<\/td>\n<td>\nMed\n<\/td>\n<td>\nHigh\n<\/td>\n<\/tr>\n<tr>\n<td>\nHosts \u2013 Mail Server\n<\/td>\n<td>\n1.3 (moderately high volume, but really important)\n<\/td>\n<td>\nMed\n<\/td>\n<td>\nMed\n<\/td>\n<td>\nMed\n<\/td>\n<\/tr>\n<tr>\n<td>\nHosts &#8211; DB (port 1521\/oracle, 523\/DB2, 5432\/postgres + mysql)\n<\/td>\n<td>\n2.0 (perhaps the most valuable kind?)\n<\/td>\n<td>\nLow\n<\/td>\n<td>\nMed\n<\/td>\n<td>\nLow\n<\/td>\n<\/tr>\n<tr>\n<td>\nHosts \u2013 DHCP\n<\/td>\n<td>\n1.5 (low volume, high value)\n<\/td>\n<td>\nLow\n<\/td>\n<td>\nLow\n<\/td>\n<td>\nLow\n<\/td>\n<\/tr>\n<tr>\n<td>\nHosts \u2013 File Servers\n<\/td>\n<td>\n1.2\n<\/td>\n<td>\nHigh\n<\/td>\n<td>\nMed\n<\/td>\n<td>\nLow\n<\/td>\n<\/tr>\n<tr>\n<td>\nOther (no above groups)\n<\/td>\n<td>\n1.0 (as listed)\n<\/td>\n<td>\n???\n<\/td>\n<td>\n???\n<\/td>\n<td>\n???\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>I suppose you can simply multiply them if they\u2019re the same box \u2013 if someone is foolish enough to put their web, mail, SQL, etc. on the same machine \u2013 since if they do that the traffic shouldn\u2019t be too high so the valuation will all come out OK.<\/p>\n<p>So, for example, a corporate mail server that delivers 50K documents a day, each mail message averaging about 5K per doc to 1000 recipients would be worth $60,170.5 ($13,750 (connections) + 22,535 (traffic) + 10,000 (unique hosts) * 1.3 (mail server multiplier.)) That doesn\u2019t seem ridiculous; the highest volume servers might be worth some hundreds of thousands of dollars, which, if anything, is an underestimate.<\/p>\n<p>Hosts that do not run the agent should take a different approach to this calculation. It\u2019s safe to assume that there is a good chance that we don\u2019t have complete traffic stats for the system in question. In order to compensate for this we apply a multiplier. This is determined by:<\/p>\n<p>(1-X) * 10 + 1<\/p>\n<p>Where X is a percentage; either divide the \u201cestimated hosts on the network\u201d or the \u201cInside hosts observed\u201d host group (whichever is greater) by the population in the \u201cAgents \u2013 Inside\u201d host group.<\/p>\n<p>This will give you a multiplier from 1-11 (if you have 100% penetration the system in question will be running an agent as well, so you ignore this calculation, but it approaches this.)<\/p>\n<p><span style=\"font-weight: bold;\">III. Total Value <\/span><\/p>\n<p>Add up the individual systems, applying any host or network modifications, and that\u2019s the estimated value of the network. The overall network value is in a separate report, along with the adjustments and final adjusted #, with the hosts and how much they contribute in a one-per-line as-per-usual report; the standard host line with one additional number, that being the adjusted $$$ of the system in question.<\/p>\n<p>It might be simplest to do the calculations on a host group basis, and then report on that (individual HG\u2019s could have a line in the SOV like the SHV.)<\/p>\n<p>There should be an adjusted $$$ over time graph for both the individual host and the organization.<\/p>\n<p><span style=\"font-weight: bold;\">IV. Implementation Note <\/span><\/p>\n<p>Obviously this isn\u2019t an exact science. Major Hint &#8211; it would be extraordinarily useful to have all the tables and calculations in a configuration file that could be modified by an SE, so adjustments\/tweaks could be made to better reflect reality as we move forward. E.g. if you don\u2019t do this by a data\/conf\/table-driven approach you\u2019ll be sorry.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I wrote this while I was at my company Elemental, and was meant for engineers to implement, so despite\u00a0some of the very specific language for implementation purposes\u00a0it\u00a0was never meant to be dogmatic. I love the idea of calculating value based on&#8230; not much. I don&#8217;t know how accurate it is, but I can say that [&hellip;]<\/p>\n","protected":false},"author":44,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[211,81,19,4,6],"tags":[283,280,281,282],"class_list":["post-1020","post","type-post","status-publish","format-standard","hentry","category-audit","category-data","category-philosophy","category-security","category-tech","tag-crazy","tag-out-of-left-field","tag-strange","tag-wild-idea"],"_links":{"self":[{"href":"https:\/\/trouble.org\/index.php?rest_route=\/wp\/v2\/posts\/1020","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trouble.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trouble.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trouble.org\/index.php?rest_route=\/wp\/v2\/users\/44"}],"replies":[{"embeddable":true,"href":"https:\/\/trouble.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1020"}],"version-history":[{"count":7,"href":"https:\/\/trouble.org\/index.php?rest_route=\/wp\/v2\/posts\/1020\/revisions"}],"predecessor-version":[{"id":1174,"href":"https:\/\/trouble.org\/index.php?rest_route=\/wp\/v2\/posts\/1020\/revisions\/1174"}],"wp:attachment":[{"href":"https:\/\/trouble.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1020"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trouble.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1020"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trouble.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1020"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}