1<!doctype html> 2<html lang="en" dir="ltr"> 3 <head> 4 <!-- Google tag (gtag.js) -->
vendor: 68 bytes, lines 4-5
4 5 <script async src="https://www.googletagmanager.com/gtag/js?id=
5G-9YGGW3C8YT
vendor: 16 bytes, lines 5-6
5"></script> 6
6<script> 7
vendor: 148 bytes, lines 7-10
7window.dataLayer = window.dataLayer || []; 8 function gtag() { dataLayer.push(arguments); } 9 gtag('js', new Date()); 10 gtag('config', '
10G-9YGGW3C8YT
vendor: 8 bytes, lines 10-11
10'); 11
11</script>
11 12 13 <title> 14 Categories - Jeremy Daly 15 </title> 16 17 <!-- Meta --> 18 <meta name="description" content="Browse posts by topic â serverless, cloud computing, AI, and more."> 19 <meta name="keywords" content=""> 20 <meta charset="utf-8"> 21 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 22 <meta http-equiv="Content-Language" content="en"> 23 <meta name="viewport" content="width=device-width,initial-scale=1"> 24 25 <!-- Icons --> 26 <link rel="apple-touch-icon-precomposed" sizes="57x57" href="/apple-touch-icon-57x57.png"> 27 <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/apple-touch-icon-114x114.png"> 28 <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/apple-touch-icon-72x72.png"> 29 <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144x144.png"> 30 <link rel="apple-touch-icon-precomposed" sizes="60x60" href="/apple-touch-icon-60x60.png"> 31 <link rel="apple-touch-icon-precomposed" sizes="120x120" href="/apple-touch-icon-120x120.png"> 32 <link rel="apple-touch-icon-precomposed" sizes="76x76" href="/apple-touch-icon-76x76.png"> 33 <link rel="apple-touch-icon-precomposed" sizes="152x152" href="/apple-touch-icon-152x152.png"> 34 <link rel="icon" type="image/png" href="/favicon-196x196.png" sizes="196x196"> 35 <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96"> 36 <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"> 37 <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"> 38 <link rel="icon" type="image/png" href="/favicon-128.png" sizes="128x128"> 39 <meta name="application-name" content=" "> 40 <meta name="msapplication-TileColor" content="#FFFFFF"> 41 <meta name="msapplication-TileImage" content="/mstile-144x144.png"> 42 <meta name="msapplication-square70x70logo" content="/mstile-70x70.png"> 43 <meta name="msapplication-square150x150logo" content="/mstile-150x150.png"> 44 <meta name="msapplication-wide310x150logo" content="/mstile-310x150.png"> 45 <meta name="msapplication-square310x310logo" content="/mstile-310x310.png"> 46 47 <!-- Facebook --> 48 <meta property="og:title" content="Categories - Jeremy Daly"> 49 <meta property="og:type" content="website"> 50 <meta property="og:description" content="Browse posts by topic â serverless, cloud computing, AI, and more."> 51 <meta property="og:url" content="https://www.jeremydaly.com/categories/"> 52 <meta property="og:image" content="https://www.jeremydaly.com/images/uploads/2019/05/jeremy-daly-headshot-medium-300x300.jpg"> 53 54 <!-- Twitter --> 55 <meta name="twitter:card" content="summary_large_image"> 56 <meta name="twitter:site" content="@jeremy_daly"> 57 <meta name="twitter:title" content="Categories - Jeremy Daly"> 58 <meta name="twitter:description" content="Browse posts by topic â serverless, cloud computing, AI, and more."> 59 <meta name="twitter:creator" content="@jeremy_daly"> 60 <meta name="twitter:image" content="https://www.jeremydaly.com/images/uploads/2019/05/jeremy-daly-headshot-medium-300x300.jpg"> 61 <meta name="twitter:domain" content="https://www.jeremydaly.com"> 62 63 <!-- RSS --> 64 <link rel="alternate" type="application/rss+xml" title="JeremyDaly.com" href="https://www.jeremydaly.com/feed"> 65 66 <!-- Styles --> 67 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex/dist/katex.min.css"> 68 <link rel="stylesheet" href="/css/styles.css"> 69 70
70<script> 71 // Initialize dark mode before page renders to prevent flash 72 try { 73 if (localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) { 74 document.documentElement.classList.add('dark') 75 } else { 76 document.documentElement.classList.remove('dark') 77 } 78 } catch (_) { } 79 </script>
79 80 81 </head> 82 <body class="bg-warm-50 dark:bg-gray-900 text-warm-900 dark:text-gray-100 antialiased transition-colors"> 83 <div class="min-h-screen flex flex-col"> 84 <header class="bg-warm-50 dark:bg-gray-900 border-b border-warm-200 dark:border-gray-700 sticky top-0 px-4 py-6 z-50 backdrop-blur-sm bg-opacity-95 dark:bg-opacity-95 transition-colors"> 85 <div class="mx-auto max-w-6xl"> 86 <div class="flex items-center justify-between text-warm-900 dark:text-gray-100"> 87 <div class="flex-1"> 88 <a href="/" class="text-2xl font-light tracking-tight hover:text-blue-800 dark:hover:text-blue-400 transition-colors">Jeremy Daly</a> 89 </div> 90 91 <!-- Desktop Navigation --> 92 <nav class="hidden md:flex gap-8 text-lg items-center"> 93 <a href="/about" class="hover:text-blue-800 dark:hover:text-blue-400 transition-colors">About</a> 94 <a href="/posts" class="hover:text-blue-800 dark:hover:text-blue-400 transition-colors">Posts</a> 95 <a href="/talks" class="hover:text-blue-800 dark:hover:text-blue-400 transition-colors">Talks</a> 96 <a href="/categories" class="hover:text-blue-800 dark:hover:text-blue-400 transition-colors">Categories</a> 97 </nav> 98 99 <!-- Dark Mode Toggle --> 100 <button id="dark-mode-toggle" class="ml-8 p-2 rounded-lg hover:bg-warm-200 dark:hover:bg-gray-800 transition-colors" aria-label="Toggle dark mode"> 101 <svg class="w-6 h-6 hidden dark:block" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 102 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"></path> 103 </svg> 104 <svg class="w-6 h-6 block dark:hidden" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 105 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"></path> 106 </svg> 107 </button> 108 109 <!-- Mobile Menu Button --> 110 <button id="mobile-menu-button" class="md:hidden p-2 -mr-2 ml-2" aria-label="Toggle menu"> 111 <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 112 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path> 113 </svg> 114 </button> 115 </div> 116 </div> 117 118 <!-- Mobile Navigation --> 119 <nav id="mobile-menu" class="hidden fixed inset-x-0 top-[73px] bg-warm-50 dark:bg-gray-900 border-b border-warm-200 dark:border-gray-700 shadow-lg z-40 md:hidden"> 120 <div class="px-6 py-8 space-y-6 max-h-[calc(100vh-73px)] overflow-y-auto"> 121 <a href="/about" class="block text-xl text-warm-900 dark:text-gray-100 hover:text-blue-800 dark:hover:text-blue-400 transition-colors py-2">About</a> 122 <a href="/posts" class="block text-xl text-warm-900 dark:text-gray-100 hover:text-blue-800 dark:hover:text-blue-400 transition-colors py-2">Posts</a> 123 <a href="/talks" class="block text-xl text-warm-900 dark:text-gray-100 hover:text-blue-800 dark:hover:text-blue-400 transition-colors py-2">Talks</a> 124 <a href="/categories" class="block text-xl text-warm-900 dark:text-gray-100 hover:text-blue-800 dark:hover:text-blue-400 transition-colors py-2">Categories</a> 125 </div> 126 </nav> 127 </header> 128 <main class="flex-1"> 129 130<article class="max-w-[1080px] mx-auto my-16 px-3 md:px-6 border border-warm-200 dark:border-gray-700 rounded-xl transition-colors"> 131 <div class="text-center mb-12 pt-8 md:pt-12 max-w-3xl mx-auto"> 132 <h1 class="text-4xl md:text-5xl font-light tracking-tight text-warm-900 dark:text-gray-100 mb-4"> 133 Categories</h1> 134 </div> 135 <div> 136 137 <div class="px-3 md:px-12 pb-8 md:pb-12"> 138 <div class="prose prose-xl prose-warm dark:prose-invert max-w-3xl mx-auto md:px-5"> 139 140Below are the main topics I write about. You can also <a href="/posts/">view all</a> of my posts. 141 142<ul> 143 144 <li> <a href="/serverless">serverless</a> 145 146 </li><li> <a href="/writing">writing</a> 147 148 </li><li> <a href="/product-management">product-management</a> 149 150 </li><li> <a href="/programming">programming</a> 151 152 </li><li> <a href="/entrepreneurship">entrepreneurship</a> 153 154 </li><li> <a href="/how-to">how-to</a> 155 156 </li><li> <a href="/databases">databases</a> 157 158 </li><li> <a href="/data-api-client">data-api-client</a> 159 160 </li><li> <a href="/open-source">open-source</a> 161 162 </li><li> <a href="/random-thoughts">random-thoughts</a> 163 164 </li><li> <a href="/functional-programming">functional-programming</a> 165 166 </li><li> <a href="/lambda-api">lambda-api</a> 167 168 </li><li> <a href="/cloud">cloud</a> 169 170 </li><li> <a href="/ai">ai</a> 171 172 </li><li> <a href="/context-engineering">context-engineering</a> 173 174 </li><li> <a href="/agents">agents</a> 175 176 </li><li> <a href="/saas">saas</a> 177 178 </li><li> <a href="/cost-management">cost-management</a> 179 180 </li><li> <a href="/productivity">productivity</a> 181 182 </li><li> <a href="/serverless-cloudside-plugin">serverless-cloudside-plugin</a> 183 184 </li><li> <a href="/dynamodb">dynamodb</a> 185 186 </li><li> <a href="/personal">personal</a> 187 188 </li><li> <a href="/reviews">reviews</a> 189 190 </li><li> <a href="/serverless-stage-manager">serverless-stage-manager</a> 191 192 </li><li> <a href="/announcements">announcements</a> 193 194 </li><li> <a href="/misc">
194misc</a> 195 196 </li><li> <a href="/infrastructure">infrastructure</a> 197 198 </li><li> <a href="/serverless-mysql">serverless-mysql</a> 199 200 </li><li> <a href="/serverless-reference-architectures">serverless-reference-architectures</a> 201 202 </li><li> <a href="/automation">automation</a> 203 204</li></ul> 205 </div> 206 </div> 207 </div> 208</article> 209 </main> 210 <footer class="mt-20 py-12 bg-warm-100 dark:bg-gray-800 border-t border-warm-200 dark:border-gray-700 transition-colors"> 211 <div class="mx-auto max-w-6xl text-warm-700 dark:text-gray-300 text-center"> 212 Copyright 2015-2026 - Jeremy Daly — 213 <span class="whitespace-nowrap"> 214 <a href="http://www.linkedin.com/in/jeremydaly" target="_blank" rel="noopener" class="text-blue-700 dark:text-blue-400 hover:text-blue-900 dark:hover:text-blue-300 underline underline-offset-2 transition-colors">LinkedIn</a> 215 <span class="mx-2 text-warm-400">·</span> 216 <a href="https://bsky.app/profile/jeremydaly.com" target="_blank" rel="noopener" class="text-blue-700 dark:text-blue-400 hover:text-blue-900 dark:hover:text-blue-300 underline underline-offset-2 transition-colors">Bluesky</a> 217 <span class="mx-2 text-warm-400">·</span> 218 <a href="https://twitter.com/jeremy_daly" target="_blank" rel="noopener" class="text-blue-700 dark:text-blue-400 hover:text-blue-900 dark:hover:text-blue-300 underline underline-offset-2 transition-colors">X</a> 219 <span class="mx-2 text-warm-400">·</span> 220 <a href="https://github.com/jeremydaly" target="_blank" rel="noopener" class="text-blue-700 dark:text-blue-400 hover:text-blue-900 dark:hover:text-blue-300 underline underline-offset-2 transition-colors">GitHub</a> 221 </span> 222 </div> 223 </footer> 224 </div> 225
225<script src="/js/analytics.js"></script>
225 226
226<script src="/js/navigation.js"></script>
226 227
227<script src="/js/darkmode.js"></script>
227 228
228<script src="/js/copy-code.js"></script>
228 229 230
230<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
230 231 </body> 232</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.