https://ian.wold.guru/

Submitted URL:
https://ian.wold.guru/
Report Finished:

The outgoing links identified from the page

JavaScript Variables · 5 found

Global JavaScript variables loaded on the window object of a page, are variables declared outside of functions and accessible from anywhere in the code within the current scope

Console log messages · 0 found

Messages logged to the web console

HTML

The raw HTML body of the page

<!DOCTYPE html><html lang="en"><head>
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<meta charset="UTF-8">
		<meta name="description" content="Ian Wold is a Software Engineer, Architect, and Team Leader in Minneapolis.">
		<meta name="”robots”" content="index, follow">
		<meta name="google-site-verification" content="bnAFrga8yOgj-ZnQFrYEjV-geaJn-WHjeDg6WZkzoAc">
		<meta name="msvalidate.01" content="3BFFA0F7DF4045C0DF2CBCB917387111">

		<link rel="stylesheet" href="site.css">
		<link rel="preconnect" href="https://fonts.googleapis.com">
		<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="">
		
			<link href="https://fonts.googleapis.com/css2?family=Rubik:wght@300;500&amp;display=swap&amp;text=AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789%21%40%23%24%25%5E%26%2A%28%29%22%3B%3A%2C.%2F%3F%2B-%3D" rel="stylesheet">
			<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@800&amp;display=swap&amp;text=IAN%20WOLD" rel="stylesheet">
			<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro&amp;display=swap&amp;text=.0123456789" rel="stylesheet">
		

		<link rel="webmention" href="https://webmention.io/ian.wold.guru/webmention">

		
			<link rel="canonical" href="https://ian.wold.guru/">
		

		<title>
			Ian Wold | Software Engineer, Architect, and Team Leader 
		</title>

		
			<script type="application/ld+json">
				
			</script>
		

		<script defer="" src="https://umami-production-2e18.up.railway.app/script.js" data-website-id="df5b434a-847c-4372-88d4-33bc64349044"></script>
	</head>
	<body>
		<button id="dark-mode-toggle"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-sun"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg></button>

		<nav class="content">
			<div class="headshot">
				<svg xmlns="http://www.w3.org/2000/svg" id="hero" height="165.41" width="150" viewBox="0 0 605 579"><path d="m485 574-1-5-4-2c-8 0-11-7-6-13 2-3 8-4 8-2l6 1c7-1 9 1 6 6l-4 5c-2 2-3 3-2 8 1 7-1 8-3 2zm-3-11c2-2 2-7-1-7l-1-2c0-2-1-2-3 1-3 2-3 6-1 8s2 2 6 0zm8-3c3-2 2-5-1-5-2 0-3 1-3 4s2 4 4 1zm-166 15-13-2c-1 1-8-1-17-2-8-2-22-4-30-4l-32-4c-25-4-46-5-49-2h-3c-2-3-22-4-40-1l-15 1c-1-1 2-2 9-3l9-3c1-1 0-1-6-1h-7c-1-1-6-2-14-1-16 0-19 0-19-2l12-2h-5c-14 0-20 1-25 2-9 3-9 3-9 1v-2l-8 2c-8 2-10 2-10 1 0-2 16-5 40-7 27-3 29-4 26-5l-5-2 6-1 7-1-3-5c-4-3-10-13-10-16 0-4 2-2 4 3 1 3 2 4 2 2 1-4 3-2 3 3 0 3 1 5 4 7l3 3v-3c0-2-1-3-3-3-3 0-3-1-1-3 3-3 0-9-3-8s-5-2-3-4c2-3 9 1 9 6l2 5 3 5a8 8 0 0 0 5 4c4 1 2 4-2 3h-4c0 2 5 3 9 2 4-2 9-10 16-24l6-14-1-10a92 92 0 0 1-2-29v-7a34 34 0 0 0-6 8c-6 10-14 20-15 19l3-5 4-5 1-4v-4l1-3v-3c0-1-2 0-3 2a33 33 0 0 1-7 6c-2 1-4 4-5 8l-2 6-6 12a9825 9825 0 0 1-6 18c0 2-2 2-4 2-2-1-2-2 1-7 4-7 13-29 13-32a59 59 0 0 1 12-14c18-18 25-30 26-45 0-4-3-7-7-5-1 0-2 0-2-2l-6-2c-3 0-7 0-10-2l-9-2c-5 0-9-5-10-12l-2-6a24 24 0 0 0-8-5c-3-1-3-3-1-3v-2c-1-1-2-3-1-4l-4-7a55 55 0 0 1-7-9l-2-3v4l-2 8c-2 4-7 7-7 5l2-2 2-3c-1-1 0-3 1-5 1-4 1-4-2-8a23 23 0 0 1-3-7c-1-3-4-6-8-7-6-1-5-3 1-3l6 2 4 5 1-5v-5l1 5 3 10c3 4 10 12 12 12v-14c-2-4-2-4 2-5 3-1 3-1 3 3v2l2 1c0 3 3 4 6 3l2 1-6 1c-5-1-6 0-7 2-1 4 3 9 6 9l3 1c0 2-2 2-6 0h-1l3 4 4 4 4 3h14c4 0 4 0-1-5a24 24 0 0 0-8-6c-6-1-7-4-1-3 5 2 14 9 14 12s11 1 14-1l6-4c3-1 4-2 4-4s1-2 3-2l4-4c1-5 4-8 4-5l-1 2c-1 0-2 2-1 4 0 3 0 3 6-3 3-3 5-6 5-8 0-5-1-5-4-2-2 2-2 1 1-5a77 77 0 0 0 4-18c1-8 1-10-1-10l-2-1c1-2-6-5-14-6a193 193 0 0 1-34-6c-1-2 2-1 16 1l17 2 11 3c6 2 7 2 5-2-1-2-3-3-8-3-8 0-9-2-2-3h5l-6-2a99 99 0 0 0-47-2c-10 2-19 7-15 8a177 177 0 0 0 36 7c3-1 4 0 4 1l3 3c3 1-3 1-19 1-25 1-32 0-33-3-1-1 0-2 2-1 5 2 20 4 27 3l7-1-11-3a49 49 0 0 0-26-3c-3 1-4 1-3-1l-1-2-2 2-3 4c-2 2-3 3-2 4 1 3 3 2 4-1s2-2 1 4v8c0 2-8 4-12 4s-10-4-10-6c0-1-1-2-4-2-4 1-5 1-4 3 2 4 2 8 0 8l-1-2-3-6c-6-5-15-3-10 2l2 8c0 6-1 5-2-1 0-5-2-8-6-7-3 1-4 1-3 5 1 3 0 3-1 3s-2-1-2-3v-2l-2 3-5 3-5 2c-3 4-3-2 0-7 4-8 4-17 0-21l-4-4-4-1-4-2-3-1 3 7 2 8c-2 3 1 6 5 6 3 0 3 1 2 2-1 2-2 2-5 1-4-2-5-2-6 1s0 6 3 6l3 1c0 2-7 2-7 0-1-2-5 7-5 10l3 1 3 1-3 1c-3 0-3 1-3 4s-1 4-2 4c-1 1-1 1 1 2h12c1 1 2 1 3-1 2-2 4-3 4-1l-4 6-5 5h4l7-2 4 1-4 2c-3 0-3 1-2 2 3 2 7 1 6 0 0-1 0-2 2-2 5 0 15-8 15-12l1-3 2 2v3c2 0 9-5 10-6 5-6 9 1 6 10l-3 5-6 4-4 4 4 1c2 1 9 2 16 1 11 0 14 1 17 3l5 4c0 2 2 4 5 5s4 3 3 3l-8-3-12-4-7-3 3-1 7 1 4 1-4-2c-4-2-10-2-12-1l-9 2-10 2c-1 0-3 0-5-2a8 8 0 0 0-7-3c-4 1-5 0-2-2 1-1 2-2 1-5l-1-3-5 2a52 52 0 0 1-14 3c-10 1-10 1-15-3a26 26 0 0 1-7-9c-3-9-1-24 4-30 2-3 2-5-1-5-5 0-3-5 2-9 7-3 7-7 3-12-4-3-4-3-1-6s16-5 19-2l6 5c3 2 4 4 4 7l2 6c2 2 2 2 12-1a828 828 0 0 1 12-3h5c3 1 6 0 15-4a96 96 0 0 1 13-6l6-5c2-2 6-6 9-7l4-3-4-2c-5-2-12-2-13 1l-3 1c-2 0-2-1-1-4l2-4 1-6c0-4-2-6-8-13-6-6-7-7-5-8 2 0 3 1 6 4a58 58 0 0 0 31 23c1-1-4-14-7-19-2-3-5-8-8-10l-3-5c1-1-7-11-9-11-1 0-2-1-2-3l-6-4c-5-1-6-1-9 1l-3 6c1 2 0 5-1 7s-1 3 1 4 3 5 1 5l-16-8 1-4c2-1 2-1 0-5-3-4-2-5 5-3 4 1 5 1 9-3 8-8 13-7 24 4 6 6 8 7 13 7l9 2 6 2 7 1 7 2c3 1 4 0 3-1l-2-2c-1 1-2 0-2-1 0-2-3-3-7-2s-5-3 0-7l4-4 6 4c7 3 11 3 9 0v-4c1-2 1-2 4 0 2 2 4 2 4 1s-2-3-4-3c-4-2-4-3-2-12 0-3 0-10-2-17a401 401 0 0 1-7-33c0-4 0-5 2-4s6-3 6-7c0-3 4-3 4 1 0 2-3 6-5 7-2 0 0 13 1 13l1-1c0-2 12-5 16-4l6-1c1-1 2-1 3 1s10 3 16 1c3-1 8-9 12-21 2-8 2-10-1-7l-9 1a43 43 0 0 0-28 9c-6 5-8 5-8 0 0-4-3-7-8-6-6 0-8 2-8 7l-1 3-2-4c0-5 4-9 9-9l8-1 7-3 12-5 9-4v-10c1-9 1-10 2-8 2 2 3 2 6 0 3-1 3-2 3-4v-6c1-2 1-4-1-8-3-6-7-9-7-5l-2 3c-2 1-2 5 0 11v3l-3-6c-1-5-3-6-5-6s-1-1 2-3c3-1 5-4 5-5l2-3 6-4 5-3-2 3c-2 2 3 7 5 5 3-2 3-4 0-6-2-2-3-4-1-4l5 5 3 5c0-3 4-4 7-2 4 5 6 1 2-3a10 10 0 0 1-3-5l-1-4 2-1c1 0 2 1 2 3-1 3 7-2 8-6 1-3 1-2 1 4l-1 7-1-3c0-2-1-2-4 0-2 2-2 2-1 4 3 1 2 4 0 10-2 4-3 5-5 4-8 0-15 6-12 10l1 11 1 9c3 0 8-4 8-6a37 37 0 0 1 13-16c4-2 10-6 13-11l2-5-6-1c-4 0-6 0-4-1a124 124 0 0 1 26-2c2 1-4 3-8 3-3 0-3 1-3 3 1 2 0 4-3 7-6 6-8 10-7 12 0 2 1 2 4 0l5-4c3-3 4-2 4 1l1 1a7 7 0 0 1 3-3l2-6 4-10 3-8c-1-2-1-3 1-1l4 1 1 1 1 2 1 2h-2c-3-2-8 3-9 8l-1 7c-1 1 0 2 2 2l3 1 2 1c5 0 8 9 5 16-2 5-12 15-15 15-5 0-16 18-17 28l-1 6c-3 5 12 40 19 45 4 3 5 6 3 6a94 94 0 0 1-11-5l-10-5 3 10a73 73 0 0 0 5 13l3 9 3 10c3 6 1 9-4 8h-4c0 1 2 2 5 2 6 0 8 1 6 3-1 2-1 2 1 3 3 2 7 11 6 13l-1 3-1 3-1 2h2l6 1c2 0 4 0 3 1 0 2 10 8 14 8l14 5c15 6 27 8 53 7 15 0 24 2 30 6l10 6c6 3 8 5 14 15l4 4c2 1 4 2 4 4a14 14 0 0 0 4 5l1 5c-1 3 4 11 8 13 8 4 15 10 16 13 3 5 13 7 42 9 17 1 15 0 24 18a63 63 0 0 0 7 11c1 0 21-20 23-24 2-3 2-4-3-15a4138 4138 0 0 1-10-22l-4-11-21 1a367 367 0 0 0-32 2c-9 2-14 1-12 0 2-2 37-5 49-5s14 0 13-3a161 161 0 0 0-19-34c-3-3-4-5-3-6 3-1 11 11 19 27l7 16h27a90 90 0 0 0-4-14c-11-29-20-64-15-59l1 4a484 484 0 0 0 24 74 346 346 0 0 0 17 45c2 1 8-6 9-11 1-3 2-4 3-2 2 1-3 10-7 15-3 4-3 4 0 9l3 6-1 1-3-6c-3-6-2-7-13 7l-7 8 4 10c5 10 7 13 7 10l1-3v6c0 4-2 7-7 12-4 3-6 6-5 7 2 1 1 3-3 3s-3-2 4-11l8-8-4-11a107 107 0 0 0-6-11s-4 2-7 6l-12 13a57 57 0 0 0-5 7c0 3 11 24 13 24l5 4 4 2-3 2c-3 2-3 3-2 6 2 5 2 7-1 2l-2-5-4 5c-4 5-5 6-1 6 3 0 12 4 14 6l5 2c2 0 3 3 1 4-1 1-1 2 1 2 5 0 10 3 8 4h-2c-3-2-7-2-10 1s-5 1-1-3c2-3 2-3-2-2a137 137 0 0 0-40 19c-1 0-2 1-1 3 2 6 2 7-1 8-5 1-6 0-6-4 1-3 2-4-17 10-8 6-13 8-10 4a141 141 0 0 1 21-16c3-1 5-3 5-4l-7-1c-6-1-8 0-11 3s-4 2-2-2c3-4 18-6 21-3s2 0-2-7a165 165 0 0 0-5-8l-19 17a154 154 0 0 1-29 23c-4 1-4-3 0-5 10-4 39-30 36-32-4-1-30 15-46 30l-8 7c-3 0 0-4 4-7 4-4 5-4 2-5-2-1-3-2-2-4s-3 0-10 8c-7 7-13 12-16 13-7 2-4 3 10 4s21 2 20 4l-2 1a35 35 0 0 0-4-1c-2-1-2 0 1 1 2 0 2 2 2 2-2 3-13 7-24 9-15 3-18 2-4-1 18-4 18-5 0-5-12 0-15 0-14 2 2 2 2 7 0 5h-36c-3 1-4 2-4 4 1 3 0 3-11 3l-22-1zm32-2-5-2a223 223 0 0 0-47-1l16 2c15 2 36 2 36 1zm-33-9c1-1 1-1 0 0h-9c-5-1-6-1-4-2s1-1-2-1h-4c0-2-4-2-5 0h-8c-8-2-39-4-39-3l28 7c11 1 42 1 43-1zm32 1-22-2c0 2 6 2 17 2h5zm39 0c0-2-11-4-16-4-1 0-2 0-3 2 0 1-3 2-8 2l10 1 17-1zm-146-5c-10-2-17-3-18-1s13 4 22 4c6 0 6 0-4-3zm124 2c1-2-8-2-12 0-2 1 0 1 5 1l7-1zm63-3-7-2a327 327 0 0 1-12-1h-4l4 2 4 1c1 1 14 2 15 0zm-284-6-5 1h3l2-1zm280 1h-4c-2 1-1 1 1 1l3-1zm-153-2h-3 3zm125-6h3c3 0 16-8 14-9-3-1-2-3 1-3 2 1 5-6 5-13l-4-19a108 108 0 0 1-6-25l-1-5-3 4c-4 4-10 7-10 5l2-2 6-4 5-5-2-14c-1-10-2-13 0-14 1 0 2-10 0-13-2-4-5 0-6 9-2 9-5 21-7 20a26 26 0 0 1 2-8l4-14 1-6h-6l-5 3c-1 2-3 1-3-1l10-5c8-2 8-2 3-2h-4l6-2c7 0 11-4 6-6-2 0-2-1 0-3 3-3 2-6-1-5l-3-1 3-1c2 0 3-1 3-2 0-3-1-3-4-2-5 1-5 1-5 5l-1 3-1-3-2-4h-1c2-1 4-6 4-8-1-1-2-2-7-1l-7 1 4-1 9-3 5-2h2l3-1c4 0 6-1 6-4l-1-4c-1 0-2-2-2-5v-4l-1 5-4 6-1-2c2-3-3-2-4 1-1 1-2 2-3 0-1-1-5 0-17 3a666 666 0 0 1-17 5l-1 5c-1 6 1 7 10 4l8-2-8 3-10 3-1 7-1 3v-7l-3-1c-2 0-2-1 1-2l1-2-5 2c-3 3-4 3-4 2s2-3 5-4c4-2 4-3 5-8 1-12 4-23 7-30 2-5 2-6 4-3s3 5 0 3c-1-1-2 0-4 6l-3 12c-1 5 0 5 3 5l30-7v-4c0-3-1-4-8-4h-15l3-2c3-1 3-2 1-2l-2-1c0-2 0-2 5 0l8 1c8-2 6-11-6-24l-14-16a26 26 0 0 0-6-6l1 2 1 2c-1 1-2 0-3-2-3-4-8-5-16-2-7 3-26 5-26 3 0-1 4-3 9-3 10-2 20-5 11-4-4 1-7 0-7-2l4-1c7 2 5-1-2-3l-14-5-25-6c-3 0-9-1-13-3-6-1-8-2-10 0v5l-1-2-3-1c-3 0-5-2-3-3 1-1 2 0 2 1h1l2-1v-1a6 6 0 0 0-2-3l-9-5c-7-4-11-4-11 0h3c4-1 5 1 1 3-3 2-8 0-8-3-1-4-10-8-19-8h-8c0 1 14 7 17 7l11 7 9 7c7 2 9 4 8 11l-1 6 4-3c3-2 3-2 2 0-2 2-1 5 1 5 1 0 3-5 3-8l3-2c4-1 4 0 1 4l-1 4 2 2c1 2 1 2 4-2l5-3-5 7-9 12a25 25 0 0 1-4 7v-3l2-5c-2-2-6 7-6 13-1 7-2 7-4 0-1-3-6 1-5 4l-1 2c-4-1-2-5 2-8 3-1 5-3 5-4l3-6 5-7c1-4 1-4-2-5-5-1-10-4-10-5l-5-6a34 34 0 0 1-6-9l-5-7c-4-3-5-3-11-2l-6-1c1-2-7-5-13-5-5 0-3 2 4 4 6 1 9 3 6 6-1 1-3 0-7-1l-7-2h-3c-2-2-7 0-7 2l-4 3-6 5v16c1 11 0 14-2 21a63 63 0 0 1-17 25c-5 5-7 7-5 7 2 1 9 24 9 30l1 3 1 4 2 4c2 1 2 2 1 3-1 4 8 28 12 33l4 5c-1 1 0 5 2 8l4 11 5 16 6 29c3 13 4 16 6 16l3 1 11 1c6 0 11 1 11 2 1 2 3 1 8-3l5-3 3-6c3-7 6-10 9-7s1 5-1 3c-3-2-4 0-7 8l-2 6-3 4-2 3 30-1h30v-4l1-5c1-1 0-2-1-2-1-1 0-1 1-1 2 0 2-2 3-6 1-10 3-17 5-17a42 42 0 0 0 2-13c2-11 1-13-1-14v-4c1-1 1-2-1-4s-2-4 0-4 2-1 1-8c0-6-1-8-3-10l-2-4c2-1 3-7 1-7l-1-1c1-1-1-2-4-3h-6c0 1-3 1-9-1-10-3-14-4-15-1a409 409 0 0 1-46 2c-3 0-5 0-6 2-2 2-4 3-3 1l-1-2c-2-1 0-10 3-10 1 0 2-1 2-3l2-3v-1c-1-2-1-4 2-10l2-7-1-2-2-7c-4-5-5-18-2-18v3c-1 7 6 21 10 18a78 78 0 0 0 11-22l-2-4c-2-2-3-6 0-6l3-2c1-2 1-2 4 0 2 3 1 5-2 5s-3 0 0 7c3 5 3 7 2 9-2 4-1 4 3 6l4 2c0 1 2 0 3-2a123 123 0 0 0 13-21l12-24c2-2 2-5 1-5a5 5 0 0 1-1-4h2c1 1 2 1 3-1 2-2 1-3-1-3v-1l3 1a54 54 0 0 0 15 8l1-2 1-3 1 3c0 4 0 4 7 7 6 2 7 2 8 0 1-1 1-1 1 2l2 5c1 1 1 2-1 2-2 1-4 4-7 13l-7 20-2 7-10 3-15 6-6 2 6 1c4 1 10 0 18-2 12-2 16-1 9 2-3 1-4 2-2 2l9-2c10-1 10 2 1 3-4 0-7 2-7 3-1 1 0 2 9 1h10l-2 2c-4 0-1 17 4 23l3 4c-2 1 0 5 6 11l5 8c0 1 2 4 5 6l4 6 7 15c7 15 9 24 9 39 0 9 0 9 4 10l8-1c3-1 5-1 8 1 6 3 4 5-1 3s-10-1-11 3c-2 4-5 3-4-2l-2-1-3 4c0 3 1 4 3 4 4 1 11 0 11-1zm-162-16c2-2 3-3 2-6l-3-3-2-2h2c2 0 2 0 2-4l-2-7a13 13 0 0 1-2-7l-4-11c-7-10-11-20-10-28v-6c-2-1-2-3 0-3 3 1 5 8 5 14a42 42 0 0 0 7 21c2 3 6 11 10 25l4 11c2 3 2 5 0 6l-6 1c-5 0-5 0-3-1zm-14-67-1 2 1 1v-3zm81 67 4-1c3 0 6-4 5-6l-7-4-5-3c0-5-10-4-12 1-1 3-4 3-4 0-1-4-9-4-12-1l-4 2 6-8a679 679 0 0 0 35-37c1 1-4 8-14 18-11 12-15 17-15 19s6 3 10 1c6-3 8-3 12 1 1 2 5 4 7 5l6 5c1 3 1 4-2 6-4 3-11 5-10 2zm-49-2-2-5-3-7c-1-3-2-4-2-1-1 3-4-9-5-17l-2-8-8-26a57 57 0 0 0-4-12l-1-3v-4c-2-3-1-3 0-3s3 2 3 4a868 868 0 0 0 13 45l2 10 4 9 3 5 4-6 5-5c1 0 5-3 9-8 11-11 15-16 13-15h-2c0-2 15-13 16-12s-8 12-28 32a313 313 0 0 0-16 18l2 4c1 2 2 5 1 6s-1 1-2-1zm139-58 5-7c5-6 5-4 0 4-3 4-5 6-5 3zm-15-42c-1-1 3-6 5-6l-1 2c-3 3-1 4 6 2h5c-1 1-14 3-15 2zm-172-7c-5-9-6-12-5-14 0-2 1-1 3 3l3 9c4 4 3-15 0-21a71 71 0 0 0-22-23c-8-5-6-7 2-2a65 65 0 0 1 23 26c2 7 2 17 0 22l-2 4zm158 0 4-2a48 48 0 0 0 7-3l4-2-3 2c-4 3-12 6-12 5zm37-7 2-1 1 1-1 1-2-1zm-205-16a36 36 0 0 0-12-5l-10-5c-1-3 2-10 4-11 2 0 2 0 0 4-3 5-2 7 6 9 8 1 13 4 15 8 2 3 0 3-3 0zm177-28 2-2v1c-1 2-2 3-2 1zm-167-2c-1-2-1-3 1-3 2 1 4-1 5-5 1-2 1-2 1 1l-2 5c-3 3-3 3-5 2zm27-9 2-5c1-1 0-3-2-5-2-1-4-3-3-4s3 1 7 5c3 3 3 3 5-4 1-4-2-13-5-18-4-6-5-6-5-1l-2 4-1-5c1-6 0-7-11-16-6-6-8-7-13-7s-9-1-9-2c0-2 18-1 19 1l11 6 1-2c2 0 2 1 2 5 0 3 2 5 5 9a40 40 0 0 1 11 19l-3 15-5 5c-4 5-5 6-4 0zm12 1 7-4 7-2-3 2c-5 3-11 5-11 4zm-43-19-1-4c1-2 1-2 2 1s1 5-1 3zm117-24c0-3 2-6 4-7 3-2 3-2 1 2-3 3-3 3 1 3 3 0 3 1 2 2h-8zm-20-4 7-8c1 0 3 0 4 2 2 2 2 2-1 2l-5 1c-2 1-2 2 0 3 1 0 1 1-2 1l-3-1zm-60-5-6-2-2-1c-1-1 8 1 11 3 5 2 3 2-3 0zm52 0c-5-1-6-2-7-5l1-2 1 2 6 3a30 30 0 0 1 7 3c2 1-1 1-8-1zm-34-14c-2-2 0-3 2-1v2l-2-1zM116 546l-3-1c-2 0-2 0 0 1 3 2 3 2 3 0zm36 1a94 94 0 0 0-25-3c-7 2-3 3 11 3h14zm232-2c0-2-1-3-3-3s-3-1-4-3l-2-2-3 2c-2 3-6 4-6 2s3-4 8-7c6-3 7-3 6 2-1 4 1 4 3 0 5-10 3-30-3-43l-3-8-3 5c-2 3-4 7-4 10l-2 14a31 31 0 0 0-1 10 45 45 0 0 1-6 19l-1-3 4-18 3-15-4-4-1-1c5 4 6 3 6-3 0-3-1-5-2-5l-1 2c2 3-1 2-4 0-2-2-3-2-4-1-2 1-2 2 0 2l1 1h-2c-2-2-4-1-9 1s-7 2-8 1c-3-2-7 2-7 7l-2 7c-1 2-3 6-3 10-1 6-1 6 1 6h2l3 5 3 4 2 2 4 1c2 1 23 4 39 5 2 0 3-1 3-2zm-40-14 2-7c2-7 2-9-1-13-3-3-3-4-1-4s6 6 6 10l-2 8c-2 3-2 6-2 7l-1 1-1-2zm-130 11h-7c-2 1-1 1 3 1l4-1zm22 0h-3c-1 1-1 1 1 1s3 0 2-1zm9 0h-3c-1 1-1 1 1 1l2-1zm84 0c0 2 1 2 4 0 1-1 1-2-2-5-3-4-8-6-6-2l-2 4c-2 3-2 3 0 3h6zm-143-2c12-2 26-2 24-1-1 1-1 2 2 2s3-1 3-3c-1-2 0-3 1-3l2-2c0-5-5-32-8-42a281 281 0 0 1-5-17l-3-7-1-2c0-2-5-8-6-6s1 6 2 5 1 0 1 2-7 9-8 7c-2-1-6 4-6 8-1 2-2 3-3 2-2 0-3 1-3 3l-4 7c-6 7-6 10-4 19s2 12 1 12l-2-6-2-8c-1-2-6 5-6 9l-2 2-3 4-2 5-5 5-3 4h5c11-2 21-3 21-1l-3 1-2 1c1 2 8 1 19 0zm-17-7 8-6a445 445 0 0 0 12-8c4-2 8-3 8-1l-6 4-13 7c-7 5-9 6-9 4zm18-1 18-13c3 0 0 3-8 9-9 6-15 8-10 4zm10 9a11 11 0 0 0-5 0l2 1 3-1zm39-2-2-1-3 1c0 1 1 2 3 2l2-2zm-12-1-2-1-1 1 2 1c1 0 2 0 1-1zm208-11c1-3 3-5 4-5l4-4c2-4 5-5 9-5l3-2c0-3 7-9 11-10 3 0 5-2 7-6l7-7 7-6c2-4 2-4 0-7l-2-4-16 17a183 183 0 0 1-17 16c0-2 5-8 19-21 10-11 13-14 12-17-1-4-4-4-10 1-7 6-8 7-8 4l2-2c3 0 1-3-3-3-9-2-8-2-10 3-1 5-1 5-6 5l-9 3-4 4c-1 0 0-3 2-5 2-3 4-4 11-5 3-1 4-2 4-4 0-4 3-6 8-5 8 2 13 2 15-2 2-3 2-4-3-13a478 478 0 0 0-6-10l-18 17-18 16 17-19 17-17-5-7c-6-8-7-9-4-9l5 6a38 38 0 0 0 5 7l5-7 4-5c1 1-1 5-3 9l-3 7 5 9 7 9 9-10 17-19 10-12c1-1-2-7-7-15-6-11-8-13-11-13h-9c0 2 6 5 10 4 3 0 4 0 3 1-1 3-7 3-14 0a29 29 0 0 0-7-3 297 297 0 0 0-27-5 97 97 0 0 1-17-4 12 12 0 0 0-5-2c-3 0-3-1-3-4 0-2-1-5-3-7l-2-3 1 5 1 18 1 14c1 1 1 2-1 2-2 1-3 2-3 7a47 47 0 0 1-3 17 502 502 0 0 0 5 67 41 41 0 0 1 3 9l3 13v18l4-4zm18-1c4-4 4-4 2-7-3-6-11-2-9 4l-1 4c-2 0-2 1-2 2 2 2 6 1 10-3zm64 1-1-2-1 1 1 1h1zm-48-13 15-9a33 33 0 0 0 9-4c0-2-6-10-8-10l-4 5c-3 4-3 4-2 0 1-5-3-3-4 2-1 4-2 5-5 5-5 1-13 6-13 9l4 7a77 77 0 0 0 8-5zm54 0 21-11a63 63 0 0 0 13-7c0-2-11-6-16-6h-5l3-4 2-6-7 3c-5 3-6 4-4 5 4 3 6 11 3 14-3 2-4 0-2-3 1-2 1-3-1-6-4-6-6-6-18 3l-7 5 4 7 7 10 7-4zm-26-23a32 32 0 0 0-6-9l-3 3c-1 2-1 3 4 8l5 9c0 2 1 2 3 0s1-3-3-11zm14 2 3-3c-2 0-10 5-10 6s2 1 7-3zm5-6c11-4 31-13 31-15l-3-5c-2-2-4-2-10-1-8 0-9 0-10-2-2-3-7-4-7-2s-3 2-4-1c-2-3-4-2-12 8l-8 9 3 7c5 9 5 9 9 7a47 47 0 0 1 11-5zm-147 0-3-1-1 1 2 2c2 0 2-1 2-2zm-21 0-1-2-2 1 2 1h1zm-175-4-1-1-1 1 1 2 1-2zm200 0-3-3c-2-1-2-1-1 1l4 2zm132-24h-6l-1 3v3l-2-3c-1-2-3-4-7-5h-7c0 1 0 3 2 5l2 4 3-3 3-3-1 3-2 5v4l2 4 7-8 7-9zm-326 13v-1l-2 2c0 2 1 1 2-1zm372-2c1-1 0-1-1-1l-2 1 1 1 2-1zm-206-1-4-4c-4-2-5-3-5-1l4 4c3 2 5 2 5 1zm-166-9c-1-5-2-4-2 1 0 2 1 3 2 3v-4zm361 1c1-1-6-17-8-17l-2 2h-2l1-4c2-1 1-7-1-6-2 0-15 18-15 20s1 2 5 1c4 0 5 0 8 3 2 3 3 3 8 2l6-1zm-204-5c-1-1-1-1-1 2 0 2 0 3 1 1v-3zm169-2c6-1 6-1 15-13l7-10-4-7-4-8-9 7-25 30a26 26 0 0 0 12 3l8-2zm-157 1-4-4-5-3 4 4 5 3zm11-1c1-1-5-7-6-7v3c1 4 5 7 6 4zm-194-5-2 2c0 2 0 2 1 1s2-2 1-3zm185 1a3 3 0 0 0-2-1v1h2zm-173-6-1 2c0 2 1 2 1 1v-3zm368-20a65 65 0 0 0 11-14l-10-24-9 9-13 13-4 5 4 7c2 4 3 6 4 4 0-3 4-3 4 0a12 12 0 0 1-1 5c-2 2 0 9 2 9l12-13zm-211 10-2-1-1 1 3 1v-1zm-21-1a9 9 0 0 0-4-2v2l4 1c2 0 2 0 0-1zm34-4a28 28 0 0 0-1-5h-11l5 2c3 1 4 2 3 4 0 2 2 4 4 4v-5zm-83 0c-2-2-4-3-6-2-2 0-3 1-3 2l9 4h3l-3-4zm13-2-2-1c-2 0-2 0 0 1 2 2 2 2 2 0zm11 0c1 0 1-1-1-2-4-2-7-2-8 1 0 1 3 3 6 2l3-1zm22 0-2-1c-1 1-1 1 1 1 1 0 2 0 1-1zm-18-3c-4-2-7-2-3 0l4 2c2 0 1-1-1-2zm11 1-4-2c-2 0-2 0 0 2l4 1h3l-3-1zm24 0a8 8 0 0 0-4-2c-2 0-1 1 0 2h4zm18-8c-1-1-3-2-7-1l-12 1-4 1 12 1c10 0 11 0 11-2zm-95-4 2-7c-1-1-2-1-3 3-4 8-3 11 1 3zm59 2c2-1 2-1 0-1l-4 1v2l4-2zm21-3c1-2 1-2-5-1-9 1-12 2-11 3 3 1 14 0 16-2zm-153 1-1-2-1 2v1l2-1zm114-2 7-2c2 0 3-1 3-2-2-2-5-1-12 2-5 3-6 4-4 4l6-2zm23-2h-2c-1 1-1 1 1 1 1 0 2 0 1-1zm-50-9c6-8 6-8 3-12-1-2-2-2-5 5-4 8-6 17-4 15l6-8zm9 4c5-3 6-6 3-6l-9 8c-3 4-1 3 6-2zm47 4h-3c-1 0-1 1 1 1l2-1zm255-20-6-15a586 586 0 0 1-14-33c-1-2-27-5-27-3a703 703 0 0 0 17 41c0 2 1 2 4 0 4-3 5 0 2 2l-3 3 3 7 5 13 3 6 8-10 8-11zm-294 15h-2l-2 2h2l2-2zm-103-4c-1-2-1-2-2-1v3c2 3 3 2 2-2zm79-2 2-4-3 3a12 12 0 0 0-3 6c0 3 3 0 4-4zm-99 3 1-9-1-6c-3 0-4-3-1-4 2 0 3-2 3-2 0-3-7-1-11 2-1 2-4 2-8 2s-6 1-6 2c0 2 6 11 10 14 5 3 12 4 13 1zm142-8c0-2-1-2-5 1a2298 2298 0 0 1-7 4l-3 3 8-2c6-3 8-5 8-6zm1 8 2-2-4 2-2 2 4-2zm117 0v-4c-1-4-6-5-6-2l-1 5c-1 3 0 3 3 2l4-1zm5-7c0-2-1-3-2-3l-1 2v4c0 3 0 3 1 2l2-5zm-286 3-3-4-2-3c1-1-3-6-4-6-2 0 1 10 3 12 3 3 7 4 6 1zm150-2 10-6 5-3 6-7 15-33a56 56 0 0 0-13-4c-1 0-22 37-22 40l2-1c4-3 6-4 7-2 0 0-4 5-10 9l-9 10c1 1 2 1 9-3zm41-6c-1-1-5 1-11 3-14 7-14 7 0 3 7-3 12-5 11-6zm-162 4v-4c-1-2-1-2-2 0l-1 4c0 3 2 2 3 0zm162-10c3 0 5-2 8-14 6-17 5-22-6-22h-4l-12 23-11 23 11-5a81 81 0 0 1 14-5zm-151 6-2-7c0-3-1-4-2-3-3 3-4 7-2 6s2 0 2 2c0 3 1 4 2 4 2 0 2-1 2-2zm-28-10c2-1 1-1-4-1h-11c-8-2-9 0-3 2a20 20 0 0 0 18-1zm268-7c1-10-9-34-13-34l-2-3c0-2-2-3-3-3l-6-4a28 28 0 0 0-9-6c-5-1-5-1-4 1l11 14c9 12 13 14 11 7-1-1 0-2 1-2s2 1 1 5l1 1c1-1 6 11 6 15 0 2 1 3 3 3h3l-3 1c-5 2-4 13 0 12 2-1 3-3 3-7zm30 6-4-2c-3 0-3 1-2 2h6zm-293-4h3l6-2 5-4c0-1 0-2-9 2-7 2-17 4-25 4l-3 1c2 2 19 2 23-1zm280-2-3-1-2 1 3 2c2 0 3-1 2-2zm11 0c-1-2-5-5-7-5l7 7v-2zm-38-2-2-1-2 1 2 1 2-1zm-354-6-2-2v2c1 3 3 3 2 0zm366-6-2-4 1 4 1 6v4l1-4-1-6zm-393 5h-2c-1 1-1 1 1 1 1 0 2 0 1-1zm33-4c0-2-3-2-4 1 0 1 0 2 2 2l2-2zm-47 0-2-3c-2-3-2-3 0 1 1 3 2 4 2 2zm395-5-1-4v6l2 4-1-6zm-385 0c1-1 0-2-3-1-5 1-6 2-4 4 1 2 2 2 4 0l3-3zm32 0-1 2v1c1-1 2-2 1-3zm14-1c2-5 1-6-3-3l-2 5c2 4 3 3 5-2zm-60-9c-1-1-1 0-1 2s0 2 1 1v-3zm311-4c-5-2-8-3-8-1l5 2c7 2 8 2 3-1zm93 0-3-4c-3-1-3 0 0 4s5 4 3 0zm-215-10c0-4 0-5-1-4l-2 13 3-9zm-5 2h-1l-2 3c0 2 1 2 2 0a8 8 0 0 0 1-3zm94-12c-1 0-3 3-3 5l2-1 1-4zm-194-3c3-3 3-6 0-7s-8 2-8 5c0 4 3 5 8 2zm306 1-3-2c-3-1-3 0-2 1 2 2 6 3 5 1zm-31-1c-2-3-7-3-8-1 0 1 1 2 5 2l3-1zm-300-3-2-2c-2 0-2 1-2 2l2 1 2-1zm320-2c-4-3-11-7-16-7-7-1-5 0 7 5 11 5 14 5 9 2zm-115-5-3-3h-2l2 3c0 3 3 2 3 0zm84-1h3c0-1-7-2-15-2h-13l9 3c7 2 9 2 10 0l6-1zm-319-1-1 1 1 2v-3zm70-9c2-2 0-3-2 0-3 1-3 2-1 2s3-1 3-2zm-78-1a8 8 0 0 0-4-1l1 1h3zm174-1c1-1 0-2-3-2h-4c0 4 4 5 7 2zm-25-7c-2-2-4-1-3 1l3 1c2-1 2-1 0-2zm-46-1-4 1h2c3 0 3-1 2-1zm-7-2c1-2-1-1-4 1s-3 2 0 1l4-2zm43 1-3-1-3 1c1 2 6 1 6 0zm29 0c0-1-1-2-3-2-4-1-5 2-1 3s4 1 4-1zm-40-1h-7l5 2c3 0 4-1 2-2zm26-1-2-1v1l1 1 1-1zm46 0c-4-2-5-2-5 0l4 1c3 0 3 0 1-1zm-94-1v-2l-4 2c-2 1-2 1 0 1l4-1zm41 0-5-3-6-4c-1-3-6-4-16-3-6 1-13 3-13 5a77 77 0 0 0 25-1l13 7 2-1zm34-5 10-2c5 0 7-2 4-5-4-2-1-5 8-5 9-1 16-3 16-5l-2-7c-1-5-2-6-4-5-2 0-2 1-5-10-1-4-2-10-4-13l-3-7a174 174 0 0 0-6-12 57 57 0 0 1-5-11l-3-4a124 124 0 0 0-36-11l-8-2c-2-1-3 0-2 1l2 26c0 31 0 34 5 44 5 13 4 23-2 12l-5-13c-2-6-3-7-4-5s-2 3-4 3h-2c-1 1 5 9 13 18l6 6c0 3 7 7 16 8l9 1 6-2zm-72-9v-1c-2 0-6 3-6 4 0 2 5-1 6-3zm-3-2c6-3 18-4 24-1 4 2 6 2 4-1l-3-1-5-3a37 37 0 0 0-11-5l-11-4a5 5 0 0 0-3-1c-2 0-2 1-1 4v9l1 5 5-2zm122-7c-1-4-1-4-4-3l-2 4c0 2 0 3 3 3 3-1 3-1 2-4zm-102-17-1-1v2c1 2 2 1 1-1zm87-9-1 2c0 2 1 2 1 1v-3zm6-7c-1-4-4-6-4-3l5 9-1-5zm-84 3-1-1-2 2 2 1 1-2zm-91-1-2-2c-3-1-4-1-2 2 2 2 4 2 4 0zm151-31h-1v2l2 1-1-3zm9-8c-3-3-3-1-1 4 1 3 2 3 2 2 1-2 0-4-1-6zm12-4-2-3 4 10c1-1 0-3-2-7zm-21 2c0-2-1-2-3-2l-2 3 2 1c2 1 3 0 3-2zm-5-5-3-2c-3 0-3 0-1 1 2 2 4 2 4 1zm-23-4h-3c-1 0-1 1 1 1l2-1zm39-16-2 2-2 5 2-2 2-5zm-17 3 1-13c1-10 2-11 6-15l4-6-5 1c-3 2-5 4-8 11-4 9-6 20-5 23 1 2 6 1 7-1zm7-22-1-1-1 1v1l2-1zm41-32 2-5-3 4c-3 3-3 5-1 5l2-4zm-31 2c3-1 3-6 1-6-3 0-5 3-5 5s1 2 4 1zm-8-3-1-2-1 2v1l2-1zm-22-9c0-4 0-5-1-3-1 1 0 9 1 9v-6zm65-4c-1-2-4 0-3 2h3v-2zm-66-10h-1v2-2zm-3-8-3-2 4 6-1-4zm16 0c0-3 0-4-1-2l2 6-1-5zm168 492h9c2 1 0 1-5 1-4 0-6 0-4-1zm196-13c0-1 4-2 5 0l-2 1-3-1zm-9-1h2-2zm-122-2 6-2c3-1 4-1 2-2a9 9 0 0 0-5-1c-9 2-16 2-16 1l2-2 56-2a668 668 0 0 0 54-1l12-1 11 1v-6l-1-6-5 1c-5 0-6-1-1-3h6c3 1 4 3 4 7v6h7l26 3-40 1c-38 0-50 1-32 3 12 1 26 3 25 4l-15-2a386 386 0 0 0-96 1zm81-15h5c0 1-2 2-4 1-3 1-3 0-1-1zm-436-6c-4-3-6-7-3-9 3-1 7-1 7 1a2 2 0 0 1-2 2c-4 0-3 2 2 5 5 4 2 4-4 1zm5-4 1-2 2 2-1 1-2-1zm-8-9c0-1 4-2 5-1l1-3c0-2 1-3 3-3l3 1-1 1-2 3c0 3 0 3-4 3l-5-1zm36-8 2-2c2-2 2-2 1 0l-3 2zm451-25 2-3 4-6c1-3 2-4 3-3 1 3-3 10-7 12h-2zm10-15h3-3zm-17-6c3-6 5-8 6-8l1 1-6 8-1-1zm-465-78c-14-2-18-4-14-6 1-1 2-1 3 1 3 3 13 4 15 1 1-1 1-1 1 1 0 1 1 2 3 2 4 0 8 2 8 3 0 2-1 1-16-2zm-30-35 1-7c1-4 0-5-3-8-4-4-4-4-2-4 4 0 7 3 8 9a19 19 0 0 1-1 9c-2 4-5 4-3 1zm71-15 1-4c1-2 1-1 1 2-1 5-2 6-2 2zm-35-11c-3 0-3-4 1-6 3-2 3-2 3 0l-3 2v2h5l5 1c0 1-7 2-11 1zm51-11-9-4c0-1 1-1 11 1 16 5 14 6-2 3zm152-40c0-3 81-7 129-5l37 2c12 0 13 0 13 3a499 499 0 0 0-39-1 804 804 0 0 0-132 2c-6 1-8 1-8-1zm-39-44c3-2 23-3 23-1l-6 2h-13c-6 1-7 1-4-1zm-1-25c1-2 5-3 11-4 6 0 4 2-1 3a42 42 0 0 0-8 2c-2 1-2 1-2-1zm0-33 6-1c4 0 5 0 2 1-5 2-8 2-8 0zm1-102c-2-2-1-6 1-7 2 0 2-6-1-9v-3c1 0 3 2 4 5s3 5 4 5c2 0 2-1 0-5-2-1-2-3-1-3 3 0 1-3-5-8a26 26 0 0 0-7-4c-1 1 3 18 4 18l1 1-4 2c-3 0-4 0-3-2s0-3-2-3l-4-2-3-2c-2 0-6-9-5-13 1-2 0-3-1-4-3-1-2-2 1-2s3 1 4 6c0 4 1 7 2 7s1-2 1-5l1-5 1 3 3 11 2 2v-4l-1-8c0-4-3-7-9-10l-5-3-2-1c-2 0-6-4-6-6s4-1 7 1c2 2 3 2 4 0a31 31 0 0 1 8-6c9-6 19-14 17-16-2-4 14 5 21 12 6 5 4 8-2 3-6-4-7-4-8 1-1 10-3 16-5 17-1 1 0 7 2 7l3-6c1-3 3-7 5-8l4-5 3-1c2 1 2 2-1 5l-8 13-4 9 3 3c3 3 3 5 0 7l-2 2c1 3 0 4-4 4l-5 1-2 2c-2 0-3 1-3 2 1 2-2 3-3 2zm-72-8c0-2 6-5 8-5 3 0 2 3-1 3l-4 2h-3zm36-5c5-4 6-5 6-2l-5 4-5 3zm-8-5c-2-2-1-3 3-1 3 2 3 2 0 2l-3-1zm-2-7s2-2 5-2c2-1 6-3 7-5 3-3 5-4 5-2s-17 12-17 9z"></path></svg>
			</div>
			<div class="title">
				<a href="https://ian.wold.guru/" class="h-card" rel="me">Ian Wold</a>
			</div>
			<ul>
				<li><a href="about.html">About</a></li>
				<li><a href="now.html">Now</a></li>
				<li><a href="connect.html">Connect</a></li>
				<li><a href="https://buttondown.email/ianwold" target="_blank">Book Club</a></li>
			</ul>
		</nav>
		
		






<div class="content archive">
	
		<h1 style="display: none;">A blog about software engineering and architecture.</h1>
	

	
		
		
			<section id="2024">
				
					<div class="subheading">2024</div>
				
				<ul>
					
					
						<li>
							<em>10.11</em>
							<a href="Posts/guerrila_devex_testing.html">
								Guerrila DevEx Testing<small>Developer experience is subjective. Employ the 'hallway test' method to ascertain your code's quality.</small>
							</a>
						</li>
					
						<li>
							<em>10.05</em>
							<a href="Posts/postgres_use_views_to_refactor_to_soft_delete.html">
								Postgres: Use Views to Refactor to Soft Delete<small>Refactors are tough, database refactors are scary. Being a bit clever can save us a lot of pain!</small>
							</a>
						</li>
					
						<li>
							<em>09.30</em>
							<a href="Posts/ive_stopped_using_visual_studio.html">
								I've Stopped Using Visual Studio<small>... mostly. And so can you!</small>
							</a>
						</li>
					
						<li>
							<em>09.28</em>
							<a href="Posts/book_club_9-2024.html">
								Book Club 9/2024: Blogroll<small>I've been dying to ask you; I really want to know: where do you get your ideas from?</small>
							</a>
						</li>
					
						<li>
							<em>09.20</em>
							<a href="Posts/learn_the_old_languages.html">
								Learn the Old Languages<small>New languages are hip, old languages are erudite. Don't neglect these languages as you round out your skills.</small>
							</a>
						</li>
					
						<li>
							<em>09.09</em>
							<a href="Posts/why_i_have_this_blog.html">
								Why I Have This Blog<small>Reflecting on the last year of blogging.</small>
							</a>
						</li>
					
						<li>
							<em>09.02</em>
							<a href="Posts/book_club_8-2024.html">
								Book Club 8/2024: Labor<small>Using Labor Day as an excuse to wonder about some recent trends in the industry</small>
							</a>
						</li>
					
						<li>
							<em>08.30</em>
							<a href="Posts/theres_always_money_in_the_banana_stand.html">
								There's Always Money in the Banana Stand<small>Except the 'banana stand' is the transport layer and instead of saving the money for later you're just always setting it on fire.</small>
							</a>
						</li>
					
						<li>
							<em>08.23</em>
							<a href="Posts/there_is_one_admin.html">
								There Are Infinite Administrators<small>Yes, infinite, and they're inventing more each day! The larger the system, the greater the problem that nobody really knows how it all works.</small>
							</a>
						</li>
					
						<li>
							<em>07.29</em>
							<a href="Posts/book_club_6-7-2024.html">
								Book Club 6&amp;7/2024: Postgres<small>I have become further radicalized to the opinion that we should all just be using PostgreSQL</small>
							</a>
						</li>
					
						<li>
							<em>07.22</em>
							<a href="Posts/dont_retro_the_same_twice.html">
								Don't Retro the Same Twice<small>Different retrospective formats are mostly the same thing in different flavors - don't argue about them; try all the flavors (at least once)</small>
							</a>
						</li>
					
						<li>
							<em>07.13</em>
							<a href="Posts/the_case_for_single_reviewer_prs.html">
								The Case for Single-Reviewer PRs<small>Or, strengthening your team and its code with communication, professionalism, and trust.</small>
							</a>
						</li>
					
						<li>
							<em>06.28</em>
							<a href="Posts/deploying_your_prolog_api_with_docker.html">
								Deploying Your Prolog API with Docker<small>It can be tough living on the bleeding edge of modern technology. If you've jumped on the hype train and developed your latest API with Prolog only to find there aren't any tutorials to Dockerize it - look no further!</small>
							</a>
						</li>
					
						<li>
							<em>06.19</em>
							<a href="Posts/topology_doesnt_change.html">
								The Topologies They Are a-Changin'<small>Okay, dumb title, but could you really have done better? Shifting topologies have always presented problems for distributed computing, and modern infrastructure systems sometimes leave us worse off than ever before.</small>
							</a>
						</li>
					
						<li>
							<em>06.08</em>
							<a href="Posts/using_interfaces.html">
								Using Interfaces<small>I'm on a quest to make it happen less</small>
							</a>
						</li>
					
						<li>
							<em>06.05</em>
							<a href="Posts/scrum_is_not_agile.html">
								Scrum is not Agile<small>Taking a step back to try to be a bit more rigorous about these process terms we use.</small>
							</a>
						</li>
					
						<li>
							<em>05.30</em>
							<a href="Posts/the_network_is_secure.html">
								There's More to Network Security than the Network<small>Assuming a secure network in a distributed system loses sight of all the ways vulnerabilities can creep into our systems. Just as distributed computing makes our systems 10x more complex, the same effect is felt on security.</small>
							</a>
						</li>
					
						<li>
							<em>05.29</em>
							<a href="Posts/book_club_5-2024.html">
								Book Club 5/2024: SOLID<small>Is SOLID still relevant?</small>
							</a>
						</li>
					
						<li>
							<em>05.03</em>
							<a href="Posts/roll_your_own_csharp_results.html">
								Roll Your Own C# Results<small>C# doesn't have discriminated unions yet, but that shouldn't stop us from adopting the result pattern to strengthen and simplify our code. It's not complicated at all to create result objects that give us all the expressiveness and safety we want!</small>
							</a>
						</li>
					
						<li>
							<em>04.26</em>
							<a href="Posts/bandwidth_is_infinite_ly_troublesome.html">
								Bandwidth is Infinite ... ly Troublesome<small>The bandwidth of the world-wide web has increased dramatically, but so has its demand. There's an abolute limit to how much data we can all transmit, and working around that requires dilligence.</small>
							</a>
						</li>
					
						<li>
							<em>04.24</em>
							<a href="Posts/book_club_4-2024.html">
								Book Club 4/2024: I Don't Like ORMs<small>Object-relational mappers are more trouble than they're worth.</small>
							</a>
						</li>
					
						<li>
							<em>04.17</em>
							<a href="Posts/end_to_end_encryption_witn_blazor_wasm.html">
								Roll Your Own End-to-End Encryption in Blazor WASM<small>Using the SubtleCrypto API to get simple end-to-end encryption for a collaborative Blazor WASM app.</small>
							</a>
						</li>
					
						<li>
							<em>04.13</em>
							<a href="Posts/free_planning_poker.html">
								Thing I Made: FreePlanningPoker.io<small>I made a free planning poker tool and named it aptly.</small>
							</a>
						</li>
					
						<li>
							<em>04.01</em>
							<a href="Posts/ive_indiewebbed_my_site.html">
								I've IndieWebbed My Site<small>A small, loose collection of formats and protocols, IndieWeb is an interesting supplement (maybe alternative) to social media</small>
							</a>
						</li>
					
						<li>
							<em>03.29</em>
							<a href="Posts/lateny_is_zero.html">
								Latency is Zero and the Speed of Light is Getting Faster<small>Latency is a constant and unavoidable fact of nature, but we can plan for it, work around it, and respond to it.</small>
							</a>
						</li>
					
						<li>
							<em>03.27</em>
							<a href="Posts/farewell_twin_cities_code_camp.html">
								Farewell, Twin Cities Code Camp<small>Looking back on my favorite local conference.</small>
							</a>
						</li>
					
						<li>
							<em>03.25</em>
							<a href="Posts/book_club_3-2024.html">
								Book Club 3/2024: Simplicity<small>Everything is too complicated.</small>
							</a>
						</li>
					
						<li>
							<em>03.03</em>
							<a href="Posts/on_task_priority.html">
								On Task Priority<small>Some thoughts on assigning priority to our tasks.</small>
							</a>
						</li>
					
						<li>
							<em>02.24</em>
							<a href="Posts/book_club-2-2024.html">
								Book Club 2/2024: Recovering from TDD and Unit Tests<small>TDD and unit tests are overused and often misprescribed. What do we really hope to gain from our tests, and what testing practices support our goals?</small>
							</a>
						</li>
					
						<li>
							<em>02.21</em>
							<a href="Posts/the_network_is_reliable.html">
								The Network is Unreliable and Reliability is Scary<small>Indeed the network is unreliable, and this is especially concerning for modern, distributed system. The catch though is that it never can be 100% reliable, and we can't create systems that perfectly compensate for this.</small>
							</a>
						</li>
					
						<li>
							<em>02.15</em>
							<a href="Posts/its_better_to_be_consistently_incorrect_than_consistently_correct.html">
								It's Better to be Consistently Incorrect than Inconsistently Correct<small>On consistency in code and what it means for something to be 'incorrect'</small>
							</a>
						</li>
					
						<li>
							<em>02.14</em>
							<a href="Posts/develop_effective_coding_standards.html">
								Develop Effective Coding Standards<small>Bad coding standards are worse than no standards, and even good standards are sometimes unnecessary. What's the utility in coding standards, and what makes a good one?</small>
							</a>
						</li>
					
						<li>
							<em>02.12</em>
							<a href="Posts/consider_a_tiling_window_manager.html">
								Windows Users: Consider a Tiling Window Manager<small>Tiling window managers are what all the cool kids have been doing for 40 years, yet they're almost entirely overlooked on Windows.</small>
							</a>
						</li>
					
						<li>
							<em>02.04</em>
							<a href="Posts/four_deeply_ingrained_csharp_cliches.html">
								Four Deeply-Ingrained C# Cliches<small>There's a lot to love about C# and .NET, and there are some things that I don't love as much. Then there are four bad habbits that are so deeply ingrained they've become cliches within our codebases.</small>
							</a>
						</li>
					
						<li>
							<em>01.24</em>
							<a href="Posts/book_club_1-2024.html">
								Book Club 1/2024: What is a Software Architect?<small>A few meandering and maybe unhelpful thoughts on the title "Software Architect"</small>
							</a>
						</li>
					
						<li>
							<em>01.17</em>
							<a href="Posts/eight_maxims.html">
								Eight Maxims<small>A few principles for thoughtful software engineering.</small>
							</a>
						</li>
					
						<li>
							<em>01.13</em>
							<a href="Posts/just_use_postgresql.html">
								Just Use PostgreSQL<small>With a vast and growing ecosystem of database systems, data models, patterns, and paradigms, choosing the right one can be a long and complicated process. I prefer a simpler approach: Just use PostgreSQL.</small>
							</a>
						</li>
					
				</ul>
			</section>
		
	
		
		
			<section id="2023">
				
					<div class="subheading">2023</div>
				
				<ul>
					
					
						<li>
							<em>12.16</em>
							<a href="Posts/book_club_12-2023.html">
								Book Club 12/2023: Workflow, Process, and Agile<small>Some thoughts on how to organize software development and teams, and how non-technical factors help (or hinder) us developing better software.</small>
							</a>
						</li>
					
						<li>
							<em>12.13</em>
							<a href="Posts/reclaim_your_agile.html">
								Reclaim Your Agile: The One Clever Trick Agile Coaches Don't Want You to Know<small>What if I told you there's one trick to being able to reshape your team's development process without your company knowing it? What if I told you that you can achieve actual Agile even though you work in a Scrum firm?</small>
							</a>
						</li>
					
						<li>
							<em>12.09</em>
							<a href="Posts/my_continuing_descent_into_madness.html">
								My (Continuing) Descent Into Madness<small>It started simply enough, when I asked myself if I should try an IDE other than Visual Studio. Mere months later, I'm now using a tiling window manager. This is the story of my (continuing) descent into madness.</small>
							</a>
						</li>
					
						<li>
							<em>12.06</em>
							<a href="Posts/90_of_my_homepage_was_useless.html">
								90% of my Homepage was Useless<small>In a few days, I reduced the size of my homepage to 10% of what it had been, and sped it up by 50-66%.</small>
							</a>
						</li>
					
						<li>
							<em>12.03</em>
							<a href="Posts/clean_meetings_a_software_engineers_guide.html">
								Clean Meetings: A Software Engineer's Guide<small>If being in meetings all day isn't bad enough, spending more time thinking about them seems horrible. Here's a simple guide on making sure you're getting the most out of your meetings.</small>
							</a>
						</li>
					
						<li>
							<em>11.25</em>
							<a href="Posts/write_your_own_rdbms_versioned_migration_boilerplate.html">
								Write Your Own RDBMS Versioned Migration Boilerplate<small>Versioned migrations are an essential tool for systems using an RDBMS, and it's no work at all to start your applications the right way with this pattern.</small>
							</a>
						</li>
					
						<li>
							<em>11.22</em>
							<a href="Posts/book_club_11-2023.html">
								Book Club 11/2023: New .NET, New C#<small>The release of .NET 8 brings a lot of features I'm excited for!</small>
							</a>
						</li>
					
						<li>
							<em>11.14</em>
							<a href="Posts/should_i_learn_insert_some_tech_here.html">
								"Should I Learn (Insert Some Tech Here)?"<small>One of the most common questions - would it be good to learn this or that language, framework, database, etc? Taking even a little time to learn something new is good all around, but is it really worth making an investment in yourself to grow personally and professionally? Let's take a deep dive into this topic.</small>
							</a>
						</li>
					
						<li>
							<em>11.08</em>
							<a href="Posts/adding_a_database_to_our_railway_app.html">
								Adding a Database to our Railway App<small>Last time I looked at Railway, I got it up and running with a Blazor WASM app. Now, I'll look at adding a PostgreSQL database to it.</small>
							</a>
						</li>
					
						<li>
							<em>11.01</em>
							<a href="Posts/quick_and_dirty_sequential_ids_in_mongo.html">
								Quick &amp; Dirty Sequential IDs in MongoDB<small>Mongo doesn't natively support generating sequential IDs. Here's a quick &amp; dirty solution to get you up and going if you need sequential IDs.</small>
							</a>
						</li>
					
						<li>
							<em>10.27</em>
							<a href="Posts/book_club_10-2023.html">
								Book Club 10/2023: Functional Patterns in C#<small>This month I've focused on functional domain modeling and related patterns. We're just a few weeks away from the release of the next version of C#, and like each previous version it'll introduce even more functional features.</small>
							</a>
						</li>
					
						<li>
							<em>10.26</em>
							<a href="Posts/daily_grug.html">
								Daily Grug<small>Need inspiration start day, made API.</small>
							</a>
						</li>
					
						<li>
							<em>10.20</em>
							<a href="Posts/a_scrum_odyssey.html">
								A Scrum Odyssey<small>A journey away from daily scrum meetings, as a cycle of eight Shakespearean sonnets.</small>
							</a>
						</li>
					
						<li>
							<em>09.28</em>
							<a href="Posts/book_club_9-2023.html">
								Book Club 9/2023: Papers I Love<small>Reflecting on the final Strange Loop conference, having attended several 'Papers We Love' talks, I'm motivated to share five papers I love.</small>
							</a>
						</li>
					
						<li>
							<em>09.14</em>
							<a href="Posts/giscus_is_awesome.html">
								Giscus Is Awesome<small>I can add comments to my statically generated blog? Using GitHub Discussions?? For Free??? And it works????</small>
							</a>
						</li>
					
						<li>
							<em>09.05</em>
							<a href="Posts/deploying_aspdotnet_7_projects_with_railway.html">
								Deploying ASP.NET 7 Projects with Railway<small>Railway is a startup cloud infrastructure provider that has gained traction for being easy to use and cheap for hobbyists. Let's get a .NET 7 Blazor WASM app up and running with it!</small>
							</a>
						</li>
					
				</ul>
			</section>
		
	
		
		
	
		
		
	
		
		
	
		
		
	

	
		<section id="past-articles" class="past-articles">
			Looking for an earlier article? All of my past articles are <a href="https://ian.wold.guru/Series/past_articles.html">archived here</a>.
		</section>
	
</div>


		<footer>
			<div class="content content-footer">
				<span>
					Copyright © Ian Wold. Built with <a href="https://www.github.com/IanWold/Metalsharp">Metalsharp</a>, <a href="https://torchlight.dev">Torchlight</a>, and <a href="https://ian.wold.guru/built_with.html">many more cool things</a>.
				</span>
				<div class="icon-links">
					<a href="https://github.com/ianwold" rel="me"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-github"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"></path></svg></a>
					<a href="mailto:[email protected]?subject=Hello" rel="me"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-mail"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg></a>
					<a href="https://ko-fi.com/ianwold" target="_blank" rel="me"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-coffee"><path d="M18 8h1a4 4 0 0 1 0 8h-1"></path><path d="M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z"></path><line x1="6" y1="1" x2="6" y2="4"></line><line x1="10" y1="1" x2="10" y2="4"></line><line x1="14" y1="1" x2="14" y2="4"></line></svg></a>
					<a href="https://buttondown.email/ianwold" target="_blank" rel="me"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-book"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"></path><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"></path></svg></a>
					<a href="https://ian.wold.guru/feed.xml" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-rss"><path d="M4 11a9 9 0 0 1 9 9"></path><path d="M4 4a16 16 0 0 1 16 16"></path><circle cx="5" cy="19" r="1"></circle></svg></a>
				</div>
			</div>
		</footer>

		<script>
			

			const darkModeToggle = document.getElementById("dark-mode-toggle");
			const body = document.body;


			function toggleDarkMode() {
				body.classList.toggle("dark");

				if (localStorage.getItem("dark") === "enabled") {
					localStorage.setItem("dark", "disabled");
				} else {
					localStorage.setItem("dark", "enabled");
				}
			}

			darkModeToggle.addEventListener("click", toggleDarkMode);

			if (localStorage.getItem("dark") === "enabled") {
				body.classList.toggle("dark");
			}
		</script>
	

</body></html>