1<!DOCTYPE HTML> 2<html lang="en" class="sidebar-visible no-js light"> 3 <head> 4 <!-- Book generated using mdBook --> 5 <meta charset="UTF-8"> 6 <title>About - Cedarland Blog</title> 7 8 9 <!-- Custom HTML head --> 10 11 <meta name="description" content=""> 12 <meta name="viewport" content="width=device-width, initial-scale=1"> 13 <meta name="theme-color" content="#ffffff" /> 14 15 <link rel="icon" href="favicon.svg"> 16 <link rel="shortcut icon" href="favicon.png"> 17 <link rel="stylesheet" href="css/variables.css"> 18 <link rel="stylesheet" href="css/general.css"> 19 <link rel="stylesheet" href="css/chrome.css"> 20 <link rel="stylesheet" href="css/print.css" media="print"> 21 22 <!-- Fonts --> 23 <link rel="stylesheet" href="FontAwesome/css/font-awesome.css"> 24 <link rel="stylesheet" href="fonts/fonts.css"> 25 26 <!-- Highlight.js Stylesheets --> 27 <link rel="stylesheet" href="highlight.css"> 28 <link rel="stylesheet" href="tomorrow-night.css"> 29 <link rel="stylesheet" href="ayu-highlight.css"> 30 31 <!-- Custom theme stylesheets --> 32 33 </head> 34 <body> 35 <div id="body-container"> 36 <!-- Provide site root to javascript --> 37
37<script> 38 var path_to_root = ""; 39 var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "navy" : "light"; 40 </script>
40 41 42 <!-- Work around some values being stored in localStorage wrapped in quotes --> 43
43<script> 44 try { 45 var theme = localStorage.getItem('mdbook-theme'); 46 var sidebar = localStorage.getItem('mdbook-sidebar'); 47 48 if (theme.startsWith('"') && theme.endsWith('"')) { 49 localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1)); 50 } 51 52 if (sidebar.startsWith('"') && sidebar.endsWith('"')) { 53 localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1)); 54 } 55 } catch (e) { } 56 </script>
56 57 58 <!-- Set the theme before any content is loaded, prevents flash --> 59
59<script> 60 var theme; 61 try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { } 62 if (theme === null || theme === undefined) { theme = default_theme; } 63 var html = document.querySelector('html'); 64 html.classList.remove('no-js') 65 html.classList.remove('light') 66 html.classList.add(theme); 67 html.classList.add('js'); 68 </script>
68 69 70 <!-- Hide / unhide sidebar before it is displayed --> 71
71<script> 72 var html = document.querySelector('html'); 73 var sidebar = null; 74 if (document.body.clientWidth >= 1080) { 75 try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { } 76 sidebar = sidebar || 'visible'; 77 } else { 78 sidebar = 'hidden'; 79 } 80 html.classList.remove('sidebar-visible'); 81 html.classList.add("sidebar-" + sidebar); 82 </script>
82 83 84 <nav id="sidebar" class="sidebar" aria-label="Table of contents"> 85 <div class="sidebar-scrollbox"> 86 <ol class="chapter"><li class="chapter-item expanded affix "><a href="about.html" class="active">About</a></li><li class="chapter-item expanded "><a href="design/introduction/content.html"><strong aria-hidden="true">1.</strong> Design History</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="design/why-cedar/content.html"><strong aria-hidden="true">1.1.</strong> Why was Cedar created?</a></li><li class="chapter-item expanded "><a href="design/why-no-regex/content.html"><strong aria-hidden="true">1.2.</strong> Why doesn't Cedar have regexes and string operators?</a></li><li class="chapter-item expanded "><a href="design/why-no-float/content.html"><strong aria-hidden="true">1.3.</strong> Why doesn't Cedar support floating point numbers?</a></li><li class="chapter-item expanded "><a href="design/why-no-entity-wildcards/content.html"><strong aria-hidden="true">1.4.</strong> Why doesn't Cedar allow wildcards in Entity Ids?</a></li><li class="chapter-item expanded "><a href="design/why-ignore-errors/content.html"><strong aria-hidden="true">1.5.</strong> Why does Cedar ignore policies that error?</a></li><li class="chapter-item expanded "><a href="design/why-semicolon/content.html"><strong aria-hidden="true">1.6.</strong> Why do Cedar policies end with a semi-colon?</a></li></ol></li><li class="chapter-item expanded "><a href="usage/introduction/content.html"><strong aria-hidden="true">2.</strong> Cedar Usage</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="usage/compression/content.html"><strong aria-hidden="true">2.1.</strong> How well do Cedar policies compress?</a></li><li class="chapter-item expanded "><a href="usage/partial-evaluation/content.html"><strong aria-hidden="true">2.2.</strong> A quick guide to partial evaluation</a></li></ol></li></ol> 87 </div> 88 <div id="sidebar-resize-handle" class="sidebar-resize-handle"></div> 89 </nav> 90 91 <div id="page-wrapper" class="page-wrapper"> 92 93 <div class="page"> 94 <div id="menu-bar-hover-placeholder"></div> 95 <div id="menu-bar" class="menu-bar sticky bordered"> 96 <div class="left-buttons"> 97 <button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar"> 98 <i class="fa fa-bars"></i> 99 </button> 100 <button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list"> 101 <i class="fa fa-paint-brush"></i> 102 </button> 103 <ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu"> 104 <li role="none"><button role="menuitem" class="theme" id="light">Light</button></li> 105 <li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li> 106 <li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li> 107 <li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li> 108 <li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li> 109 </ul> 110 <button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar"> 111 <i class="fa fa-search"></i> 112 </button> 113 </div> 114 115 <h1 class="menu-title">Cedarland Blog</h1> 116 117 <div class="right-buttons"> 118 <a href="print.html" title="Print this book" aria-label="Print this book"> 119 <i id="print-button" class="fa fa-print"></i> 120 </a> 121 122 </div> 123 </div> 124 125 <div id="search-wrapper" class="hidden"> 126 <form id="searchbar-outer" class="searchbar-outer"> 127 <input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header"> 128 </form> 129 <div id="searchresults-outer" class="searchresults-outer hidden"> 130 <div id="searchresults-header" class="searchresults-header"></div> 131 <ul id="searchresults"> 132 </ul> 133 </div> 134 </div> 135 136 <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM --> 137
137<script> 138 document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible'); 139 document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible'); 140 Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) { 141 link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1); 142 }); 143 </script>
143 144 145 <div id="content" class="content"> 146 <main> 147 <h2 id="its-not-about-the-tree"><a class="header" href="#its-not-about-the-tree">It's not about the tree...</a></h2> 148<html> 149<table style="border-collapse: collapse; padding: 0; margin: 0;"> 150 <tr> 151 <td style="border: none; width: 25%; vertical-align: top"> 152 <img src="./img/IllustratedCedarTree.jpeg" alt="Your Image" style="display: block; width: 100%; height: auto;"> 153 </td> 154 <td style="border: none; vertical-align: top"> 155 <p> 156 This is a blog about the <strong><a href="https://www.cedarpolicy.com/">Cedar Policy Language</a></strong>. 157 <p> 158 I'm Darin McAdams, Sr. Principal Engineer in Amazon Web Services and part of the team that originally built Cedar. 159 </p> 160 <p> 161 This is my personal blog covering Cedar topics such as the language design, usage patterns, and various other curiosities. All opinions are my own. All intelligent statements probably come from my teammates. 162 </p> 163 </td> 164 </tr> 165</table> 166</html> 167<h2 id="recent-posts"><a class="header" href="#recent-posts">Recent Posts</a></h2> 168<ul> 169<li><a href="./usage/partial-evaluation/content.html">December 5, 2023 - A quick guide to partial evaluation</a></li> 170<li><a href="./usage/compression/content.html">July 16, 2023 - How well do Cedar policies compress?</a></li> 171<li><a href="./design/why-no-entity-wildcards/content.html">June 27, 2023 - Why doesn't Cedar allow wildcards in Entity Ids?</a></li> 172<li><a href="./design/why-no-regex/content.html">June 25, 2023 - Why doesn't Cedar have regexes or string formatting operators?</a></li> 173<li><a href="./design/why-no-float/content.html">June 25, 2023 - Why doesn't Cedar support floating-point numbers?</a></li> 174<li><a href="./design/why-ignore-errors/content.html">June 25, 2023 - Why does Cedar ignore policies that error?</a></li> 175<li><a href="./design/why-semicolon/content.html">June 25, 2023 - Why do Cedar policies end with a semi-colon?</a></li> 176<li><a href="./design/why-cedar/content.html">June 12, 2023 - Why was Cedar created?</a></li> 177</ul> 178 179 </main> 180 181 <nav class="nav-wrapper" aria-label="Page navigation"> 182 <!-- Mobile navigation buttons --> 183 184 <a rel="next" href="design/introduction/content.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right"> 185 <i class="fa fa-angle-right"></i> 186 </a> 187 188 <div style="clear: both"></div> 189 </nav> 190 </div> 191 </div> 192 193 <nav class="nav-wide-wrapper" aria-label="Page navigation"> 194 195 <a rel="next" href="design/introduction/content.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right"> 196 <i class="fa fa-angle-right"></i> 197 </a> 198 </nav> 199 200 </div> 201 202 203 204 205
205<script> 206 window.playground_copyable = true; 207 </script>
207 208 209 210
210<script src="elasticlunr.min.js"></script>
210 211
211<script src="mark.min.js"></script>
211 212
212<script src="searcher.js"></script>
212 213 214
214<script src="clipboard.min.js"></script>
214 215
215<script src="highlight.js"></script>
215 216
216<script src="book.js"></script>
216 217 218 <!-- Custom JS scripts --> 219 220 221 </div> 222 </body> 223</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.