PageSourceSearch

https://bryanduxbury.com/tag/painbox/

html bryanduxbury.com collected 2026-10-06 16:23:02 UTC 108,359 bytes, 1,039 lines download raw bytes

1<!DOCTYPE html>
2<!--[if IE 7]>
3<html class="ie ie7" lang="en">
4<![endif]-->
5<!--[if IE 8]>
6<html class="ie ie8" lang="en">
7<![endif]-->
8<!--[if !(IE 7) & !(IE 8)]><!-->
9<html lang="en">
10<!--<![endif]-->
11<head>
12<meta charset="UTF-8" />
13<meta name="viewport" content="width=device-width" />
14<title>painbox | Bryan Duxbury&#039;s Blog</title>
15<link rel="profile" href="https://gmpg.org/xfn/11" />
16<link rel="pingback" href="https://bryanduxbury.com/xmlrpc.php">
17<!--[if lt IE 9]>
18<script src="https://s2.wp.com/wp-content/themes/pub/twentytwelve/js/html5.js?m=1394055319i&amp;ver=3.7.0" type="text/javascript"></script>
18
19<![endif]-->
20<meta name='robots' content='max-image-preview:large' />
21
22<!-- Async WordPress.com Remote Login -->
23<script id="wpcom_remote_login_js">
24var wpcom_remote_login_extra_auth = '';
25function wpcom_remote_login_remove_dom_node_id( element_id ) {
26	var dom_node = document.getElementById( element_id );
27	if ( dom_node ) { dom_node.parentNode.removeChild( dom_node ); }
28}
29function wpcom_remote_login_remove_dom_node_classes( class_name ) {
30	var dom_nodes = document.querySelectorAll( '.' + class_name );
31	for ( var i = 0; i < dom_nodes.length; i++ ) {
32		dom_nodes[ i ].parentNode.removeChild( dom_nodes[ i ] );
33	}
34}
35function wpcom_remote_login_final_cleanup() {
36	wpcom_remote_login_remove_dom_node_classes( "wpcom_remote_login_msg" );
37	wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_key" );
38	wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_validate" );
39	wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_js" );
40	wpcom_remote_login_remove_dom_node_id( "wpcom_request_access_iframe" );
41	wpcom_remote_login_remove_dom_node_id( "wpcom_request_access_styles" );
42}
43
44// Watch for messages back from the remote login
45window.addEventListener( "message", function( e ) {
46	if ( e.origin === "https://r-login.wordpress.com" ) {
47		var data = {};
48		try {
49			data = JSON.parse( e.data );
50		} catch( e ) {
51			wpcom_remote_login_final_cleanup();
52			return;
53		}
54
55		if ( data.msg === 'LOGIN' ) {
56			// Clean up the login check iframe
57			wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_key" );
58
59			var id_regex = new RegExp( /^[0-9]+$/ );
60			var token_regex = new RegExp( /^.*|.*|.*$/ );
61			if (
62				token_regex.test( data.token )
63				&& id_regex.test( data.wpcomid )
64			) {
65				// We have everything we need to ask for a login
66				var script = document.createElement( "script" );
67				script.setAttribute( "id", "wpcom_remote_login_validate" );
68				script.src = '/remote-login.php?wpcom_remote_login=validate'
69					+ '&wpcomid=' + data.wpcomid
70					+ '&token=' + encodeURIComponent( data.token )
71					+ '&host=' + window.location.protocol
72					+ '//' + window.location.hostname
73					+ '&postid=271'
74					+ '&is_singular=';
75				document.body.appendChild( script );
76			}
77
78			return;
79		}
80
81		// Safari ITP, not logged in, so redirect
82		if ( data.msg === 'LOGIN-REDIRECT' ) {
83			window.location = 'https://wordpress.com/log-in?redirect_to=' + window.location.href;
84			return;
85		}
86
87		// Safari ITP, storage access failed, remove the request
88		if ( data.msg === 'LOGIN-REMOVE' ) {
89			var css_zap = 'html { -webkit-transition: margin-top 1s; transition: margin-top 1s; } /* 9001 */ html { margin-top: 0 !important; } * html body { margin-top: 0 !important; } @media screen and ( max-width: 782px ) { html { margin-top: 0 !important; } * html body { margin-top: 0 !important; } }';
90			var style_zap = document.createElement( 'style' );
91			style_zap.type = 'text/css';
92			style_zap.appendChild( document.createTextNode( css_zap ) );
93			document.body.appendChild( style_zap );
94
95			var e = document.getElementById( 'wpcom_request_access_iframe' );
96			e.parentNode.removeChild( e );
97
98			document.cookie = 'wordpress_com_login_access=denied; path=/; max-age=31536000';
99
100			return;
101		}
102
103		// Safari ITP
104		if ( data.msg === 'REQUEST_ACCESS' ) {
105			console.log( 'request access: safari' );
106
107			// Check ITP iframe enable/disable knob
108			if ( wpcom_remote_login_extra_auth !== 'safari_itp_iframe' ) {
109				return;
110			}
111
112			// If we are in a "private window" there is no ITP.
113			var private_window = false;
114			try {
115				var opendb = window.openDatabase( null, null, null, null );
116			} catch( e ) {
117				private_window = true;
118			}
119
120			if ( private_window ) {
121				console.log( 'private window' );
122				return;
123			}
124
125			var iframe = document.createElement( 'iframe' );
126			iframe.id = 'wpcom_request_access_iframe';
127			iframe.setAttribute( 'scrolling', 'no' );
128			iframe.setAttribute( 'sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin allow-top-navigation-by-user-activation' );
129			iframe.src = 'https://r-login.wordpress.com/remote-login.php?wpcom_remote_login=request_access&origin=' + encodeURIComponent( data.origin ) + '&wpcomid=' + encodeURIComponent( data.wpcomid );
130
131			var css = 'html { -webkit-transition: margin-top 1s; transition: margin-top 1s; } /* 9001 */ html { margin-top: 46px !important; } * html body { margin-top: 46px !important; } @media screen and ( max-width: 660px ) { html { margin-top: 71px !important; } * html body { margin-top: 71px !important; } #wpcom_request_access_iframe { display: block; height: 71px !important; } } #wpcom_request_access_iframe { border: 0px; height: 46px; position: fixed; top: 0; left: 0; width: 100%; min-width: 100%; z-index: 99999; background: #23282d; } ';
132
133			var style = document.createElement( 'style' );
134			style.type = 'text/css';
135			style.id = 'wpcom_request_access_styles';
136			style.appendChild( document.createTextNode( css ) );
137			document.body.appendChild( style );
138
139			document.body.appendChild( iframe );
140		}
141
142		if ( data.msg === 'DONE' ) {
143			wpcom_remote_login_final_cleanup();
144		}
145	}
146}, false );
147
148// Inject the remote login iframe after the page has had a chance to load
149// more critical resources
150window.addEventListener( "DOMContentLoaded", function( e ) {
151	var iframe = document.createElement( "iframe" );
152	iframe.style.display = "none";
153	iframe.setAttribute( "scrolling", "no" );
154	iframe.setAttribute( "id", "wpcom_remote_login_key" );
155	iframe.src = "https://r-login.wordpress.com/remote-login.php"
156		+ "?wpcom_remote_login=key"
157		+ "&origin=aHR0cHM6Ly9icnlhbmR1eGJ1cnkuY29t"
158		+ "&wpcomid=49932756"
159		+ "&time=" + Math.floor( Date.now() / 1000 );
160	document.body.appendChild( iframe );
161}, false );
162</script>
162
163<link rel='dns-prefetch' href='//s1.wp.com' />
164<link rel='dns-prefetch' href='//s2.wp.com' />
165<link rel='dns-prefetch' href='//fonts-api.wp.com' />
166<link rel='dns-prefetch' href='//s0.wp.com' />
167<link rel='dns-prefetch' href='//af.pubmine.com' />
168<link href='https://fonts.gstatic.com' crossorigin rel='preconnect' />
169<link rel="alternate" type="application/rss+xml" title="Bryan Duxbury&#039;s Blog &raquo; Feed" href="https://bryanduxbury.com/feed/" />
170<link rel="alternate" type="application/rss+xml" title="Bryan Duxbury&#039;s Blog &raquo; Comments Feed" href="https://bryanduxbury.com/comments/feed/" />
171<link rel="alternate" type="application/rss+xml" title="Bryan Duxbury&#039;s Blog &raquo; painbox Tag Feed" href="https://bryanduxbury.com/tag/painbox/feed/" />
172	
172<script type="text/javascript">
173		/* <![CDATA[ */
174		function addLoadEvent(func) {
175			var oldonload = window.onload;
176			if (typeof window.onload != 'function') {
177				window.onload = func;
178			} else {
179				window.onload = function () {
180					oldonload();
181					func();
182				}
183			}
184		}
185		/* ]]> */
186	</script>
186
187	<style id="wp-img-auto-sizes-contain-inline-css">
188img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
189/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
190</style>
191<link crossorigin='anonymous' rel='stylesheet' id='all-css-2-1' href='/wp-content/mu-plugins/widgets/eu-cookie-law/templates/style.css?m=1642463000i&cssminify=yes' type='text/css' media='all' />
192<style id="wp-emoji-styles-inline-css">
193
194	img.wp-smiley, img.emoji {
195		display: inline !important;
196		border: none !important;
197		box-shadow: none !important;
198		height: 1em !important;
199		width: 1em !important;
200		margin: 0 0.07em !important;
201		vertical-align: -0.1em !important;
202		background: none !important;
203		padding: 0 !important;
204	}
205/*# sourceURL=wp-emoji-styles-inline-css */
206</style>
207<style id="wp-block-library-inline-css">
208:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
208--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;overflow-wrap:normal!important;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
209
210/*# sourceURL=/wp-content/plugins/gutenberg-core/v24.1.0/build/styles/block-library/common.min.css */
211</style>
212<style id="wp-block-library-inline-css-extra">
213.has-text-align-justify {
214	text-align:justify;
215}
216.has-text-align-justify{text-align:justify;}
217/*# sourceURL=wp-block-library-inline-css */
218</style>
219
220<style id="classic-theme-styles-inline-css">
221.wp-block-button__link{background-color:#32373c;border-radius:9999px;box-shadow:none;color:#fff;font-size:1.125em;padding:calc(.667em + 2px) calc(1.333em + 2px);text-decoration:none}.wp-block-file__button{background:#32373c;color:#fff}.wp-block-accordion-heading{margin:0}.wp-block-accordion-heading__toggle{background-color:inherit!important;color:inherit!important}.wp-block-accordion-heading__toggle:not(:focus-visible){outline:none}.wp-block-accordion-heading__toggle:focus,.wp-block-accordion-heading__toggle:hover{background-color:inherit!important;border:none;box-shadow:none;color:inherit;padding:var(--wp--preset--spacing--20,1em) 0;text-decoration:none}.wp-block-accordion-heading__toggle:focus-visible{outline:auto;outline-offset:0}.wp-block-tab:not(.has-text-color){color:inherit!important}.wp-block-tab:not(.has-background){background-color:inherit!important}.wp-block-tab:focus,.wp-block-tab:hover{text-decoration:none}.wp-block-tab:focus-visible{outline:auto;outline-offset:0}
222/*# sourceURL=/wp-content/plugins/gutenberg-core/v24.1.0/build/styles/block-library/classic.min.css */
223</style>
224
225<style id="coblocks-inline-format-inline-css">
226.uppercase{text-transform:uppercase}
227/*# sourceURL=coblocks-inline-format-inline-css */
228</style>
229<link crossorigin='anonymous' rel='stylesheet' id='all-css-12-1' href='/_static/??-eJx9jEEOAiEQBD/kQECjeDC+ZWEnijIwYWA3/l72op689KFTVXplCCU3zE1z6reYRYfiUwlP0VYZpwxIJE4IFRd10HOU9iFA2iuhCiI7/ROiDt9WxfETT20jCOc4YUIa2D9t5eGA91xRBMZS7ATtPkTZvCtdzNEZt7f2fHq8Afl7R7w=&cssminify=yes' type='text/css' media='all' />
230<style id="global-styles-inline-css">
231:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #fff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--blue: #21759b;--wp--preset--color--dark-gray: #444;--wp--preset--color--medium-gray: #9f9f9f;--wp--preset--color--light-gray: #e6e6e6;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
2310) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-family--albert-sans: 'Albert Sans', sans-serif;--wp--preset--font-family--alegreya: Alegreya, serif;--wp--preset--font-family--arvo: Arvo, serif;--wp--preset--font-family--bodoni-moda: 'Bodoni Moda', serif;--wp--preset--font-family--bricolage-grotesque: 'Bricolage Grotesque', sans-serif;--wp--preset--font-family--cabin: Cabin, sans-serif;--wp--preset--font-family--chivo: Chivo, sans-serif;--wp--preset--font-family--commissioner: Commissioner, sans-serif;--wp--preset--font-family--cormorant: Cormorant, serif;--wp--preset--font-family--courier-prime: 'Courier Prime', monospace;--wp--preset--font-family--crimson-pro: 'Crimson Pro', serif;--wp--preset--font-family--dm-mono: 'DM Mono', monospace;--wp--preset--font-family--dm-sans: 'DM Sans', sans-serif;--wp--preset--font-family--dm-serif-display: 'DM Serif Display', serif;--wp--preset--font-family--domine: Domine, serif;--wp--preset--font-family--eb-garamond: 'EB Garamond', serif;--wp--preset--font-family--epilogue: Epilogue, sans-serif;--wp--preset--font-family--fahkwang: Fahkwang, sans-serif;--wp--preset--font-family--figtree: Figtree, sans-serif;--wp--preset--font-family--fira-sans: 'Fira Sans', sans-serif;--wp--preset--font-family--fjalla-one: 'Fjalla One', sans-serif;--wp--preset--font-family--fraunces: Fraunces, serif;--wp--preset--font-family--gabarito: Gabarito, system-ui;--wp--preset--font-family--ibm-plex-mono: 'IBM Plex Mono', monospace;--wp--preset--font-family--ibm-plex-sans: 'IBM Plex Sans', sans-serif;--wp--preset--font-family--ibarra-real-nova: 'Ibarra Real Nova', serif;--wp--preset--font-family--instrument-serif: 'Instrument Serif', serif;--wp--preset--font-family--inter: Inter, sans-serif;--wp--preset--font-family--josefin-sans: 'Josefin Sans', sans-serif;--wp--preset--font-family--jost: Jost, sans-serif;--wp--preset--font-family--libre-baskerville: 'Libre Baskerville', serif;--wp--preset--font-family--libre-franklin: 'Libre Franklin', sans-serif;--wp--preset--font-family--literata: Literata, serif;--wp--preset--font-family--lora: Lora, serif;--wp--preset--font-family--merriweather: Merriweather, serif;--wp--preset--font-family--montserrat: Montserrat, sans-serif;--wp--preset--font-family--newsreader: Newsreader, serif;--wp--preset--font-family--noto-sans-mono: 'Noto Sans Mono', sans-serif;--wp--preset--font-family--nunito: Nunito, sans-serif;--wp--preset--font-family--open-sans: 'Open Sans', sans-serif;--wp--preset--font-family--overpass: Overpass, sans-serif;--wp--preset--font-family--pt-serif: 'PT Serif', serif;--wp--preset--font-family--petrona: Petrona, serif;--wp--preset--font-family--piazzolla: Piazzolla, serif;--wp--preset--font-family--playfair-display: 'Playfair Display', serif;--wp--preset--font-family--plus-jakarta-sans: 'Plus Jakarta Sans', sans-serif;--wp--preset--font-family--poppins: Poppins, sans-serif;--wp--preset--font-family--raleway: Raleway, sans-serif;--wp--preset--font-family--roboto: Roboto, sans-serif;--wp--preset--font-family--roboto-slab: 'Roboto Slab', serif;--wp--preset--font-family--rubik: Rubik, sans-serif;--wp--preset--font-family--rufina: Rufina, serif;--wp--preset--font-family--sora: Sora, sans-serif;--wp--preset--font-family--source-sans-3: 'Source Sans 3', sans-serif;--wp--preset--font-family--source-serif-4: 'Source Serif 4', serif;--wp--preset--font-family--space-mono: 'Space Mono', monospace;--wp--preset--font-family--syne: Syne, sans-serif;--wp--preset--font-family--texturina: Texturina, serif;--wp--preset--font-family--urbanist: Urbanist, sans-serif;--wp--preset--font-family--work-sans: 'Work Sans', sans-serif;--wp--preset--text-shadow--light: 0.05em 0.05em 0.1em rgba(0, 0, 0, 0.3);--wp--preset--text-shadow--strong: 0.1em 0.1em 0.25em rgba(0, 0, 0, 0.5);--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-blue-color{color: var(--wp--preset--color--blue) !important;}.has-dark-gray-color{color: var(--wp--preset--color--dark-gray) !important;}.has-medium-gray-color{color: var(--wp--preset--color--medium-gray) !important;}.has-light-gray-color{color: var(--wp--preset--color--light-gray) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-blue-background-color{background-color: var(--wp--preset--color--blue) !important;}.has-dark-gray-background-color{background-color: var(--wp--preset--color--dark-gray) !important;}.has-medium-gray-background-color{background-color: var(--wp--preset--color--medium-gray) !important;}.has-light-gray-background-color{background-color: var(--wp--preset--color--light-gray) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-blue-border-color{border-color: var(--wp--preset--color--blue) !important;}.has-dark-gray-border-color{border-color: var(--wp--preset--color--dark-gray) !important;}.has-medium-gray-border-color{border-color: var(--wp--preset--color--medium-gray) !important;}.has-light-gray-border-color{border-color: var(--wp--preset--color--light-gray) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
231.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-albert-sans-font-family{font-family: var(--wp--preset--font-family--albert-sans) !important;}.has-alegreya-font-family{font-family: var(--wp--preset--font-family--alegreya) !important;}.has-arvo-font-family{font-family: var(--wp--preset--font-family--arvo) !important;}.has-bodoni-moda-font-family{font-family: var(--wp--preset--font-family--bodoni-moda) !important;}.has-bricolage-grotesque-font-family{font-family: var(--wp--preset--font-family--bricolage-grotesque) !important;}.has-cabin-font-family{font-family: var(--wp--preset--font-family--cabin) !important;}.has-chivo-font-family{font-family: var(--wp--preset--font-family--chivo) !important;}.has-commissioner-font-family{font-family: var(--wp--preset--font-family--commissioner) !important;}.has-cormorant-font-family{font-family: var(--wp--preset--font-family--cormorant) !important;}.has-courier-prime-font-family{font-family: var(--wp--preset--font-family--courier-prime) !important;}.has-crimson-pro-font-family{font-family: var(--wp--preset--font-family--crimson-pro) !important;}.has-dm-mono-font-family{font-family: var(--wp--preset--font-family--dm-mono) !important;}.has-dm-sans-font-family{font-family: var(--wp--preset--font-family--dm-sans) !important;}.has-dm-serif-display-font-family{font-family: var(--wp--preset--font-family--dm-serif-display) !important;}.has-domine-font-family{font-family: var(--wp--preset--font-family--domine) !important;}.has-eb-garamond-font-family{font-family: var(--wp--preset--font-family--eb-garamond) !important;}.has-epilogue-font-family{font-family: var(--wp--preset--font-family--epilogue) !important;}.has-fahkwang-font-family{font-family: var(--wp--preset--font-family--fahkwang) !important;}.has-figtree-font-family{font-family: var(--wp--preset--font-family--figtree) !important;}.has-fira-sans-font-family{font-family: var(--wp--preset--font-family--fira-sans) !important;}.has-fjalla-one-font-family{font-family: var(--wp--preset--font-family--fjalla-one) !important;}.has-fraunces-font-family{font-family: var(--wp--preset--font-family--fraunces) !important;}.has-gabarito-font-family{font-family: var(--wp--preset--font-family--gabarito) !important;}.has-ibm-plex-mono-font-family{font-family: var(--wp--preset--font-family--ibm-plex-mono) !important;}.has-ibm-plex-sans-font-family{font-family: var(--wp--preset--font-family--ibm-plex-sans) !important;}.has-ibarra-real-nova-font-family{font-family: var(--wp--preset--font-family--ibarra-real-nova) !important;}.has-instrument-serif-font-family{font-family: var(--wp--preset--font-family--instrument-serif) !important;}.has-inter-font-family{font-family: var(--wp--preset--font-family--inter) !important;}.has-josefin-sans-font-family{font-family: var(--wp--preset--font-family--josefin-sans) !important;}.has-jost-font-family{font-family: var(--wp--preset--font-family--jost) !important;}.has-libre-baskerville-font-family{font-family: var(--wp--preset--font-family--libre-baskerville) !important;}.has-libre-franklin-font-family{font-family: var(--wp--preset--font-family--libre-franklin) !important;}.has-literata-font-family{font-family: var(--wp--preset--font-family--literata) !important;}.has-lora-font-family{font-family: var(--wp--preset--font-family--lora) !important;}.has-merriweather-font-family{font-family: var(--wp--preset--font-family--merriweather) !important;}.has-montserrat-font-family{font-family: var(--wp--preset--font-family--montserrat) !important;}.has-newsreader-font-family{font-family: var(--wp--preset--font-family--newsreader) !important;}.has-noto-sans-mono-font-family{font-family: var(--wp--preset--font-family--noto-sans-mono) !important;}.has-nunito-font-family{font-family: var(--wp--preset--font-family--nunito) !important;}.has-open-sans-font-family{font-family: var(--wp--preset--font-family--open-sans) !important;}.has-overpass-font-family{font-family: var(--wp--preset--font-family--overpass) !important;}.has-pt-serif-font-family{font-family: var(--wp--preset--font-family--pt-serif) !important;}.has-petrona-font-family{font-family: var(--wp--preset--font-family--petrona) !important;}.has-piazzolla-font-family{font-family: var(--wp--preset--font-family--piazzolla) !important;}.has-playfair-display-font-family{font-family: var(--wp--preset--font-family--playfair-display) !important;}.has-plus-jakarta-sans-font-family{font-family: var(--wp--preset--font-family--plus-jakarta-sans) !important;}.has-poppins-font-family{font-family: var(--wp--preset--font-family--poppins) !important;}.has-raleway-font-family{font-family: var(--wp--preset--font-family--raleway) !important;}.has-roboto-font-family{font-family: var(--wp--preset--font-family--roboto) !important;}.has-roboto-slab-font-family{font-family: var(--wp--preset--font-family--roboto-slab) !important;}.has-rubik-font-family{font-family: var(--wp--preset--font-family--rubik) !important;}.has-rufina-font-family{font-family: var(--wp--preset--font-family--rufina) !important;}.has-sora-font-family{font-family: var(--wp--preset--font-family--sora) !important;}.has-source-sans-3-font-family{font-family: var(--wp--preset--font-family--source-sans-3) !important;}.has-source-serif-4-font-family{font-family: var(--wp--preset--font-family--source-serif-4) !important;}.has-space-mono-font-family{font-family: var(--wp--preset--font-family--space-mono) !important;}.has-syne-font-family{font-family: var(--wp--preset--font-family--syne) !important;}.has-texturina-font-family{font-family: var(--wp--preset--font-family--texturina) !important;}.has-urbanist-font-family{font-family: var(--wp--preset--font-family--urbanist) !important;}.has-work-sans-font-family{font-family: var(--wp--preset--font-family--work-sans) !important;}.has-light-text-shadow{text-shadow: var(--wp--preset--text-shadow--light) !important;}.has-strong-text-shadow{text-shadow: var(--wp--preset--text-shadow--strong) !important;}
232/*# sourceURL=global-styles-inline-css */
233</style>
234
235<link rel='stylesheet' id='twentytwelve-fonts-css' href='https://fonts-api.wp.com/css?family=Open+Sans%3A400italic%2C700italic%2C400%2C700&#038;subset=latin%2Clatin-ext&#038;display=fallback' media='all' />
236<link crossorigin='anonymous' rel='stylesheet' id='all-css-16-1' href='/_static/??-eJzTLy/QTc7PK0nNK9EvyUjNTS3WLyhN0i8pBwpUAsmcslT94pLKnFS95OJiHX0iVAPV6Sfl5CdnF4O02OfaGpqbWpibWJiZW2YBADBZKMU=&cssminify=yes' type='text/css' media='all' />
237<link crossorigin='anonymous' rel='stylesheet' id='all-css-18-1' href='/_static/??-eJx9i0EOwjAMBD+EcUEiggPiLW1k0iAnjmqnUX9PuLUXLqud1Q62Al6yUTa0mRIpljqhtT5sPXklVNuYoBUv6exVT7hzUoXCNcSsuNDEEnoN2F87/CcFEmDxo0XJB4A3j3H5qa/0vNyGh3PD1d0/X5shQdY=&cssminify=yes' type='text/css' media='all' />
238<style id="jetpack-global-styles-frontend-style-inline-css">
239:root { --font-headings: unset; --font-base: unset; --font-headings-default: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; --font-base-default: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;}
240/*# sourceURL=jetpack-global-styles-frontend-style-inline-css */
241</style>
242<link crossorigin='anonymous' rel='stylesheet' id='all-css-20-1' href='/wp-content/themes/h4/global.css?m=1420737423i&cssminify=yes' type='text/css' media='all' />
243<script id="wpcom-actionbar-placeholder-js-extra">
244var actionbardata = {"siteID":"49932756","postID":"0","siteURL":"https://bryanduxbury.com","xhrURL":"https://bryanduxbury.com/wp-admin/admin-ajax.php","nonce":"be4a31a26c","isLoggedIn":"","statusMessage":"","statusSubscribed":"","subsEmailDefault":"instantly","proxyScriptUrl":"https://s0.wp.com/wp-content/js/wpcom-proxy-request.js?m=1513050504i&amp;ver=20211021","i18n":{"followedText":"New posts from this site will now appear in your \u003Ca href=\"https://wordpress.com/reader\"\u003EReader\u003C/a\u003E","foldBar":"Collapse this bar","unfoldBar":"Expand this bar","shortLinkCopied":"Copied to clipboard."}};
245//# sourceURL=wpcom-actionbar-placeholder-js-extra
246</script>
vendor: 1 bytes, line 246
246
247<script id="jetpack-mu-wpcom-settings-js-before">
248var JETPACK_MU_WPCOM_SETTINGS = {"assetsUrl":"https://s1.wp.com/wp-content/mu-plugins/jetpack-mu-wpcom-plugin/sun/jetpack_vendor/automattic/jetpack-mu-wpcom/src/build/"};
249//# sourceURL=jetpack-mu-wpcom-settings-js-before
250</script>
vendor: 1 bytes, line 250
250
251<script crossorigin='anonymous' type='text/javascript'  src='/_static/??-eJyFjUEOwiAQRS/kdFSidWM8CwIhEBhwBlp7e9uoiTtXb/Ff3se5ginUHDWMgpwaVC7PZYiyw3ULZFK3TrYxPrrj5YMhB/orQQ6edXO/8vftnoqHmroPJDgXttoKmKRF3iGTK07HDUCFwNvKa+KWr4fxsj+dR6VUfAGZHkVc'></script>
vendor: 1 bytes, line 251
251
252<script id="rlt-proxy-js-after">
253	rltInitialize( {"token":null,"iframeOrigins":["https:\/\/widgets.wp.com"]} );
254//# sourceURL=rlt-proxy-js-after
255</script>
255
256<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://bryanduxbury.wordpress.com/xmlrpc.php?rsd" />
257<meta name="generator" content="WordPress.com" />
258
259<!-- Jetpack Open Graph Tags -->
260<meta property="og:type" content="website" />
261<meta property="og:title" content="painbox &#8211; Bryan Duxbury&#039;s Blog" />
262<meta property="og:url" content="https://bryanduxbury.com/tag/painbox/" />
263<meta property="og:site_name" content="Bryan Duxbury&#039;s Blog" />
264<meta property="og:image" content="https://s0.wp.com/i/blank.jpg?m=1383295312i" />
265<meta property="og:image:width" content="200" />
266<meta property="og:image:height" content="200" />
267<meta property="og:image:alt" content="" />
268<meta property="og:locale" content="en_US" />
269
270<!-- End Jetpack Open Graph Tags -->
271<link rel="shortcut icon" type="image/x-icon" href="https://s1.wp.com/i/favicon.ico?m=1713425267i" sizes="16x16 24x24 32x32 48x48" />
272<link rel="icon" type="image/x-icon" href="https://s1.wp.com/i/favicon.ico?m=1713425267i" sizes="16x16 24x24 32x32 48x48" />
273<link rel="apple-touch-icon" href="https://s2.wp.com/i/webclip.png?m=1713868326i" />
274<link rel='openid.server' href='https://bryanduxbury.com/?openidserver=1' />
275<link rel='openid.delegate' href='https://bryanduxbury.com/' />
276<link rel="search" type="application/opensearchdescription+xml" href="https://bryanduxbury.com/osd.xml" title="Bryan Duxbury&#039;s Blog" />
277<link rel="search" type="application/opensearchdescription+xml" href="https://s1.wp.com/opensearch.xml" title="WordPress.com" />
278<meta name="theme-color" content="#e6e6e6" />
279<meta name="description" content="Posts about painbox written by bryanduxbury" />
280<script>
281var wa_client = {}; wa_client.cmd = []; wa_client.config = { 'blog_id': 49932756, 'blog_language': 'en', 'is_wordads': false, 'hosting_type': 0, 'afp_account_id': null, 'afp_host_id': 5038568878849053, 'theme': 'pub/twentytwelve', '_': { 'title': 'Advertisement', 'privacy_settings': 'Privacy Settings' }, 'formats': [ 'belowpost', 'bottom_sticky', 'sidebar_sticky_right', 'sidebar', 'gutenberg_rectangle', 'gutenberg_leaderboard', 'gutenberg_mobile_leaderboard', 'gutenberg_skyscraper' ] };
282</script>
282
283		
283<script type="text/javascript">
284
285			window.doNotSellCallback = function() {
286
287				var linkElements = [
288					'a[href="https://wordpress.com/?ref=footer_blog"]',
289					'a[href="https://wordpress.com/?ref=footer_website"]',
290					'a[href="https://wordpress.com/?ref=vertical_footer"]',
291					'a[href^="https://wordpress.com/?ref=footer_segment_"]',
292				].join(',');
293
294				var dnsLink = document.createElement( 'a' );
295				dnsLink.href = 'https://wordpress.com/advertising-program-optout/';
296				dnsLink.classList.add( 'do-not-sell-link' );
297				dnsLink.rel = 'nofollow';
298				dnsLink.style.marginLeft = '0.5em';
299				dnsLink.textContent = 'Do Not Sell or Share My Personal Information';
300
301				var creditLinks = document.querySelectorAll( linkElements );
302
303				if ( 0 === creditLinks.length ) {
304					return false;
305				}
306
307				Array.prototype.forEach.call( creditLinks, function( el ) {
308					el.insertAdjacentElement( 'afterend', dnsLink );
309				});
310
311				return true;
312			};
313
314		</script>
314
315		
315<script type="text/javascript">
316	window.google_analytics_uacct = "UA-52447-2";
317</script>
317
318
319<script type="text/javascript">
320	var _gaq = _gaq || [];
321	_gaq.push(['_setAccount', 'UA-52447-2']);
322	_gaq.push(['_gat._anonymizeIp']);
323	_gaq.push(['_setDomainName', 'none']);
324	_gaq.push(['_setAllowLinker', true]);
325	_gaq.push(['_initData']);
326	_gaq.push(['_trackPageview']);
327
328	(function() {
329		var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
330		ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
331		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
332	})();
333</script>
333
334<link crossorigin='anonymous' rel='stylesheet' id='all-css-2-4' href='/_static/??-eJydzMsKAjEMheEXskaxoLMQH0VqJpbM9EbS2NcXQV2Ly/Nz+GA0h7V0Kh2yuZYsclFYqLeA63uDWoErF4Rbqrgq6OBGskXVDfwM5DpbIgUMUk0pfT+f8Kc3eI7UFaKER+hBXJN650Qv7pLP++O0O3k/HfzyBBdQWRQ=&cssminify=yes' type='text/css' media='all' />
335<link rel='stylesheet' id='gravatar-card-services-css' href='https://secure.gravatar.com/css/services.css?ver=202641d1133547e8a1f2801609f51cef12522abe7f6647d869e9fbc974fe356a37e613' media='all' />
336
337</head>
338
339<body class="archive tag tag-painbox tag-153370587 wp-embed-responsive wp-theme-pubtwentytwelve customizer-styles-applied custom-font-enabled single-author jetpack-reblog-enabled">
340<div id="page" class="hfeed site">
341	<header id="masthead" class="site-header">
342				<hgroup>
343			<h1 class="site-title"><a href="https://bryanduxbury.com/" title="Bryan Duxbury&#039;s Blog" rel="home">Bryan Duxbury&#039;s Blog</a></h1>
344			<h2 class="site-description">Making stuff and taking names. Well, making stuff, anyways.</h2>
345		</hgroup>
346
347		<nav id="site-navigation" class="main-navigation">
348			<button class="menu-toggle">Menu</button>
349			<a class="assistive-text" href="#content" title="Skip to content">Skip to content</a>
350			<div class="nav-menu"><ul>
351<li ><a href="https://bryanduxbury.com/">Home</a></li><li class="page_item page-item-1"><a href="https://bryanduxbury.com/about/">About Me</a></li>
352</ul></div>
353		</nav><!-- #site-navigation -->
354
355			</header><!-- #masthead -->
356
357	<div id="main" class="wrapper">
358	<section id="primary" class="site-content">
359		<div id="content" role="main">
360
361					<header class="archive-header">
362				<h1 class="archive-title">
363				Tag Archives: <span>painbox</span>				</h1>
364
365						</header><!-- .archive-header -->
366
367			
368	<article id="post-271" class="post-271 post type-post status-publish format-standard hentry category-electronics tag-painbox">
369				<header class="entry-header">
370			
371						<h1 class="entry-title">
372				<a href="https://bryanduxbury.com/2015/07/02/painbox-part-3-a-bunch-of-updates/" rel="bookmark">Painbox part 3: a bunch of&nbsp;updates</a>
373			</h1>
374										<div class="comments-link">
375					<a href="https://bryanduxbury.com/2015/07/02/painbox-part-3-a-bunch-of-updates/#comments">1 Reply</a>				</div><!-- .comments-link -->
376					</header><!-- .entry-header -->
377
378				<div class="entry-content">
379			<p>Since I last wrote about my Painbox project (<a href="https://bryanduxbury.com/2015/02/05/building-a-dune-pain-box-with-the-thermal-grill-illusion/">part 1</a>, <a href="https://bryanduxbury.com/2015/02/26/pain-box-part-2-when-in-doubt-add-watts/">part 2</a>), progress has been very lumpy. Here&#8217;s a bunch of short updates on various aspects of the project.</p>
380<h2>The grill</h2>
381<p><a href="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-18-22-39-51.jpg"><img data-attachment-id="279" data-permalink="https://bryanduxbury.com/2015/07/02/painbox-part-3-a-bunch-of-updates/2015-04-18-22-39-51/" data-orig-file="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-18-22-39-51.jpg" data-orig-size="2688,1520" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2&quot;,&quot;camera&quot;:&quot;HTC6500LVW&quot;,&quot;created_timestamp&quot;:&quot;1429396792&quot;,&quot;focal_length&quot;:&quot;3.82&quot;,&quot;iso&quot;:&quot;125&quot;,&quot;shutter_speed&quot;:&quot;0.00681&quot;,&quot;orientation&quot;:&quot;1&quot;,&quot;latitude&quot;:&quot;37.633132916667&quot;,&quot;longitude&quot;:&quot;-122.41615294444&quot;}" data-image-title="grill body uncapped" data-image-description="" data-image-caption="" data-large-file="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-18-22-39-51.jpg?w=625" class="alignnone size-medium wp-image-279" src="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-18-22-39-51.jpg?w=300&#038;h=170" alt="grill body uncapped" width="300" height="170" srcset="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-18-22-39-51.jpg?w=300 300w, https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-18-22-39-51.jpg?w=600 600w, https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-18-22-39-51.jpg?w=150 150w" sizes="(max-width: 300px) 100v
381w, 300px" /></a><a href="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-12-21-45.jpg"><img data-attachment-id="282" data-permalink="https://bryanduxbury.com/2015/07/02/painbox-part-3-a-bunch-of-updates/2015-04-19-12-21-45/" data-orig-file="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-12-21-45.jpg" data-orig-size="2688,1520" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2&quot;,&quot;camera&quot;:&quot;HTC6500LVW&quot;,&quot;created_timestamp&quot;:&quot;1429446105&quot;,&quot;focal_length&quot;:&quot;3.82&quot;,&quot;iso&quot;:&quot;125&quot;,&quot;shutter_speed&quot;:&quot;0.025&quot;,&quot;orientation&quot;:&quot;1&quot;,&quot;latitude&quot;:&quot;37.63316725&quot;,&quot;longitude&quot;:&quot;-122.41606902778&quot;}" data-image-title="grill body bottom uncapped" data-image-description="" data-image-caption="" data-large-file="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-12-21-45.jpg?w=625" class="alignnone size-medium wp-image-282" src="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-12-21-45.jpg?w=300&#038;h=170" alt="grill body bottom uncapped" width="300" height="170" srcset="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-12-21-45.jpg?w=300 300w, https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-12-21-45.jpg?w=600 600w, https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-12-21-45.jpg?w=150 150w" sizes="(max-width: 300px) 100vw, 300px" /></a><a href="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-21-20-19.jpg"><img data-attachment-id="280" data-permalink="https://bryanduxbury.com/2015/07/02/painbox-part-3-a-bunch-of-updates/2015-04-19-21-20-19/" data-orig-file="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-21-20-19.jpg" data-orig-size="2688,1520" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2&quot;,&quot;camera&quot;:&quot;HTC6500LVW&quot;,&quot;created_timestamp&quot;:&quot;1429478419&quot;,&quot;focal_length&quot;:&quot;3.82&quot;,&quot;iso&quot;:&quot;160&quot;,&quot;shutter_speed&quot;:&quot;0.008333&quot;,&quot;orientation&quot;:&quot;1&quot;,&quot;latitude&quot;:&quot;37.633178694444&quot;,&quot;longitude&quot;:&quot;-122.41609191667&quot;}" data-image-title="grill body bottom capped" data-image-description="" data-image-caption="" data-large-file="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-21-20-19.jpg?w=625" class="alignnone size-medium wp-image-280" src="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-21-20-19.jpg?w=300&#038;h=170" alt="grill body bottom capped" width="300" height="170" srcset="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-21-20-19.jpg?w=300 300w, https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-21-20-19.jpg?w=600 600w, https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-21-20-19.jpg?w=150 150w" sizes="(max-width: 300px) 100vw, 300px" /></a><a href="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-23-12-38.jpg"><img data-attachment-id="281" data-permalink="https://bryanduxbury.com/2015/07/02/painbox-part-3-a-bunch-of-updates/2015-04-19-23-12-38/" data-orig-file="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-23-12-38.jpg" data-orig-size="2688,1520" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2&quot;,&quot;camera&quot;:&quot;HTC6500LVW&quot;,&quot;created_timestamp&quot;:&quot;1429485158&quot;,&quot;focal_length&quot;:&quot;3.82&quot;,&quot;iso&quot;:&quot;125&quot;,&quot;shutter_speed&quot;:&quot;0.008333&quot;,&quot;orientation&quot;:&quot;1&quot;,&quot;latitude&quot;:&quot;37.633140555556&quot;,&quot;longitude&quot;:&quot;-122.41610716667&quot;}" data-image-title="finished grill" data-image-description="" data-image-caption="" data-large-file="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-23-12-38.jpg?w=625" loading="lazy" class="alignnone size-medium wp-image-281" src="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-23-12-38.jpg?w=300&#038;h=170" alt="finished grill" width="300" height="170" srcset="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19
381-23-12-38.jpg?w=300 300w, https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-23-12-38.jpg?w=600 600w, https://bryanduxbury.com/wp-content/uploads/2015/07/2015-04-19-23-12-38.jpg?w=150 150w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a>Replacing the clunky &#8220;copper tubes through a 2&#215;4&#8243; test grill was high on my list of priorities, so I tackled that first. I considered a number of different options, but settled on making a custom one-piece grill out of a 1/2&#8243; HDPE cutting board. Essentially, it&#8217;s like a two-sided PCB, except instead of copper traces and plated vias, I milled width-wise grooves into the top and length-wise grooves into the bottom with through-and-through holes connecting the two sides. The result is a sort of channel that snakes across the top, through to the bottom, over the neighboring groove, then back to the top. To make it capable of moving water, I capped the grooves with pieces of 0.025&#8221; aluminum sheet, also cut out on the Shapeoko 2. The first and last hole of each path are threaded to accept a hose barb.</p>
382<p>Other than the capping and sealing process, which was awkward and imprecise, the whole thing turned out really good. If I was going to do it again, I would use a piece of virgin HDPE instead of a cutting board so it would have a better surface finish. I&#8217;d also probably go with thicker stock, since that would improve durability and flatness while increasing the margin for error during machining.</p>
383<h2>Temperature sensors and reservoir design</h2>
384<p>In the last post, I talked about my success with immersing the sensors directly in the water. To try and make that more permanent, I drilled a small hole in the top of my reservoir caps, threaded a thermistor through the hole, and then tried to seal the whole thing up with some silicone glue stuff I had lying around.</p>
385<p>This did not work.</p>
386<p>Problem 1 &#8211; the water in the reservoirs does not really reach the thermistor, since they are not hanging down that low, and the water is not that high. Result: bad readings.</p>
387<p>Problem 2 &#8211; the silicone stuff is glue, not epoxy or sealant. While it appears to solidify into a rubbery plug, it turns out it really doesn&#8217;t like to cure solid when it&#8217;s in a big blob, and over time gravity will let it goop down and into the moving water, where it will ultimately foul your pump. I had to disassemble and clean out one of my aquarium pumps four times before I realized there was probably a loose blob trapped elsewhere in the system. Turned out it was hanging on to the fins inside the water block and would occasionally throw a clot or two after an hour of continuous running. After cleaning that out, problem solved.</p>
388<p>Problem 3 &#8211; trying to keep things simple, the connection style is just a long wire pair soldered to the thermistor. When manipulating the reservoir cap, that long wire wants to twist up unless it&#8217;s disconnected from the microcontroller, and even once it&#8217;s disconnected, it flops all over the place while you&#8217;ve got a wrench on it, making it pretty unwieldy.</p>
389<p>A related problem is that my reservoirs just don&#8217;t work that well. I&#8217;d previously decided to make them small so that there&#8217;d be less water volume in the system, but somehow at the same time I ended up with reservoirs that made it hard to fill or drain the whole system. Water just didn&#8217;t want to disseminate into the system when added to the tiny reservoir.</p>
390<p>Combined with the temp sensor issues, this lead me to change my reservoir design. Instead of a 3-way corner elbow, I&#8217;m using a 4-way tee as the base and adding appropriate threaded connectors and hose barbs. The inlet and outlet will be oriented such that the water will flow downward from the inlet to the outlet. Across from the inlet, I&#8217;ve added a dedicated port for the thermistor, which will still be connected to a threaded cap. However, this time I&#8217;m going to try to drill individual holes for each of the thermistor&#8217;s leads and use a minimum amount of actual sealant to make it waterproof. Since the sensor will now be level with the inlet, I can just fill the reservoir until the inlet is covered and know the sensor will also be immersed. With the legs exp
390osed on the outside, I&#8217;ll solder a tiny connector board on that allows for easy disconnection. The final branch of the 4-way tee will be the fill port, which will just have a plain cap in it. I might add a bleed valve of sorts to the top of the fill cap if I find the system needs help shedding bubbles.</p>
391<h2>TEC controller board</h2>
392<div data-shortcode="caption" id="attachment_296" style="width: 310px" class="wp-caption aligncenter"><a href="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-06-21-23-08-14-1.jpg"><img aria-describedby="caption-attachment-296" data-attachment-id="296" data-permalink="https://bryanduxbury.com/2015/07/02/painbox-part-3-a-bunch-of-updates/2015-06-21-23-08-14-1/" data-orig-file="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-06-21-23-08-14-1.jpg" data-orig-size="908,908" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2&quot;,&quot;camera&quot;:&quot;HTC6500LVW&quot;,&quot;created_timestamp&quot;:&quot;1434928094&quot;,&quot;focal_length&quot;:&quot;3.82&quot;,&quot;iso&quot;:&quot;100&quot;,&quot;shutter_speed&quot;:&quot;0.003958&quot;,&quot;orientation&quot;:&quot;1&quot;,&quot;latitude&quot;:&quot;37.631587972222&quot;,&quot;longitude&quot;:&quot;-122.42330169444&quot;}" data-image-title="2015-06-21 23.08.14-1" data-image-description="" data-image-caption="&lt;p&gt;Latest version of the TEC controller&lt;/p&gt;
393" data-large-file="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-06-21-23-08-14-1.jpg?w=625" loading="lazy" class="size-medium wp-image-296" src="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-06-21-23-08-14-1.jpg?w=300&#038;h=300" alt="Latest version of the TEC controller" width="300" height="300" srcset="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-06-21-23-08-14-1.jpg?w=300 300w, https://bryanduxbury.com/wp-content/uploads/2015/07/2015-06-21-23-08-14-1.jpg?w=600 600w, https://bryanduxbury.com/wp-content/uploads/2015/07/2015-06-21-23-08-14-1.jpg?w=150 150w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-296" class="wp-caption-text">Latest version of the TEC controller</p></div>
394<p>During earlier testing, I didn&#8217;t use any sort of closed-loop control scheme, which lead to, well, uncontrolled temperatures. To implement closed-loop control in this system, you need a sensor, a TEC controller, and the logic to control it. For the sensor, I&#8217;m using the aforementioned thermistors. The logic part is easy, and comes in the form of an Arduino PID library.</p>
395<p>The TEC controller, though, is where things get difficult. Coming from an Arduino, PWM is easy, but TEC efficiency is greatly reduced when controlled in this fashion. To get analog control of TEC current, I designed a PWM-to-constant-current converter board. The basic principle of operation is to use an op-amp, MOSFET, and power resistor to form a feedback-controlled current sink. Then, rather than using a potentiometer to set target current, I&#8217;m using the PWM output of an Arduino plugged into an RC lowpass filter. The filter converts the PWM into an analog voltage, which is converted into the target current by the op-amp feedback network.</p>
396<p>Simple enough scheme, but unfortunately I still had to go through a few revisions.</p>
397<p><a href="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_sch.png"><img data-attachment-id="284" data-permalink="https://bryanduxbury.com/2015/07/02/painbox-part-3-a-bunch-of-updates/tec_v2_sch/" data-orig-file="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_sch.png" data-orig-size="989,525" data-comments-opened="1" data-image-title="tec_v2_sch" data-image-description="" data-image-caption="" data-large-file="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_sch.png?w=625" loading="lazy" class="alignnone wp-image-284 size-medium" src="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_sch.png?w=300&#038;h=159" alt="tec_v2_sch" width="300" height="159" srcset="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_sch.png?w=300 300w, https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_sch.png?w=600 600w, https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_sch.png?w=150 150w" sizes="auto, (max-width: 300px) 100v
397w, 300px" /></a>  <a href="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_layout.png"><img data-attachment-id="285" data-permalink="https://bryanduxbury.com/2015/07/02/painbox-part-3-a-bunch-of-updates/tec_v2_layout/" data-orig-file="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_layout.png" data-orig-size="475,357" data-comments-opened="1" data-image-title="tec_v2_layout" data-image-description="" data-image-caption="" data-large-file="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_layout.png?w=475" loading="lazy" class="alignnone wp-image-285 size-medium" src="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_layout.png?w=300&#038;h=225" alt="tec_v2_layout" width="300" height="225" srcset="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_layout.png?w=300 300w, https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_layout.png?w=150 150w, https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_layout.png 475w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
398<p>In rev 1, I made a <del>small</del> order of magnitude math error and incorrectly sized my power resistor, thus dissipating about 10x my desired wattage in the resistor. (It&#8217;s hard to appreciate what it means when these things are rated as &#8220;fire proof&#8221; until your IR thermometer reads 300 degrees C.)</p>
399<p><a href="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_sch1.png"><img data-attachment-id="286" data-permalink="https://bryanduxbury.com/2015/07/02/painbox-part-3-a-bunch-of-updates/tec_v2_sch-2/" data-orig-file="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_sch1.png" data-orig-size="989,525" data-comments-opened="1" data-image-title="tec_v2_sch" data-image-description="" data-image-caption="" data-large-file="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_sch1.png?w=625" loading="lazy" class="alignnone wp-image-286 size-medium" src="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_sch1.png?w=300&#038;h=159" alt="tec_v2_sch" width="300" height="159" srcset="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_sch1.png?w=300 300w, https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_sch1.png?w=600 600w, https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v2_sch1.png?w=150 150w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a>  <a href="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v3_layout.png"><img data-attachment-id="287" data-permalink="https://bryanduxbury.com/2015/07/02/painbox-part-3-a-bunch-of-updates/tec_v3_layout/" data-orig-file="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v3_layout.png" data-orig-size="475,357" data-comments-opened="1" data-image-title="tec_v3_layout" data-image-description="" data-image-caption="" data-large-file="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v3_layout.png?w=475" loading="lazy" class="alignnone wp-image-287 size-medium" src="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v3_layout.png?w=300&#038;h=225" alt="tec_v3_layout" width="300" height="225" srcset="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v3_layout.png?w=300 300w, https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v3_layout.png?w=150 150w, https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v3_layout.png 475w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
400<p>After correcting that math, it turned out that I had my feedback dividers set in the wrong direction &#8211; I actually need to step the input voltage down, not the feedback voltage &#8211; so I spun another version of the board. This worked much better, but to my dismay I couldn&#8217;t get both the hot and cold channels to reach as much of a temperature difference as I wanted. After some head scratching, I determined that my power supply wasn&#8217;t beefy enough to drive two 10A loads at once and must be sagging, so I Amazon&#8217;d up a much bigger one. When I plugged that in and let it rip, things looked good until my tragically undersized +12V trace heated up to red-hot and blew like a fuse. In retrospect, of course that trace was too small&#8230; but I think I had been telling myself I would solder-fill it or something to increase carrying capacity.</p>
401<p><a href="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v4_layout.png"><img data-attachment-id="290" data-permalink="https://bryanduxbury.com/2015/07/02/painbox-part-3-a-bunch-of-updates/tec_v4_sch/" data-orig-file="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v4_sch.png" data-orig-size="659,540" data-comments-opened="1" data-image-title="tec_v4_sch" data-image-description="" data-image-caption="" data-large-file="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v4_sch.png?w=625" loading="lazy" class="alignnone wp-image-290 size-medium" src="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v4_sch.png?w=300&#038;h=246" alt="tec_v4_sch" width="300" height="246" srcset="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v4_sch.png?w=300 300w, https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v4_sch.png?w=600 600w, https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v4_sch.png?w=150 150w" sizes="auto, (max-width: 300px) 100v
401w, 300px" /> <img data-attachment-id="289" data-permalink="https://bryanduxbury.com/2015/07/02/painbox-part-3-a-bunch-of-updates/tec_v4_layout/" data-orig-file="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v4_layout.png" data-orig-size="402,386" data-comments-opened="1" data-image-title="tec_v4_layout" data-image-description="" data-image-caption="" data-large-file="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v4_layout.png?w=402" loading="lazy" class="alignnone wp-image-289 size-medium" src="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v4_layout.png?w=300&#038;h=288" alt="tec_v4_layout" width="300" height="288" srcset="https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v4_layout.png?w=300 300w, https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v4_layout.png?w=150 150w, https://bryanduxbury.com/wp-content/uploads/2015/07/tec_v4_layout.png 402w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
402<p>So we&#8217;re on to rev 3. This version solves all the problems I&#8217;ve come across so far: better connector strategy, better layout for the analog components around the opamp (fewer vias), smaller outline, and of course the fattest power traces I could pull off. I milled it out, riveted the vias, flooded the power traces with solder, and stuffed it full of components. I&#8217;m feeling pretty good about this one, but I won&#8217;t be able to test it until I get all my plumbing straightened out again.</p>
403<h2>Mounting brackets</h2>
404<div data-shortcode="caption" id="attachment_294" style="width: 310px" class="wp-caption aligncenter"><a href="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-06-29-23-12-44.jpg"><img aria-describedby="caption-attachment-294" data-attachment-id="294" data-permalink="https://bryanduxbury.com/2015/07/02/painbox-part-3-a-bunch-of-updates/2015-06-29-23-12-44/" data-orig-file="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-06-29-23-12-44.jpg" data-orig-size="2688,1520" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2&quot;,&quot;camera&quot;:&quot;HTC6500LVW&quot;,&quot;created_timestamp&quot;:&quot;1435619564&quot;,&quot;focal_length&quot;:&quot;3.82&quot;,&quot;iso&quot;:&quot;125&quot;,&quot;shutter_speed&quot;:&quot;0.033334&quot;,&quot;orientation&quot;:&quot;1&quot;,&quot;latitude&quot;:&quot;37.633132916667&quot;,&quot;longitude&quot;:&quot;-122.41621397222&quot;}" data-image-title="waterblock mount" data-image-description="" data-image-caption="&lt;p&gt;Waterblock, TEC, heatsink mounting bracket&lt;/p&gt;
405" data-large-file="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-06-29-23-12-44.jpg?w=625" loading="lazy" class="size-medium wp-image-294" src="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-06-29-23-12-44.jpg?w=300&#038;h=170" alt="Waterblock, TEC, heatsink mounting bracket" width="300" height="170" srcset="https://bryanduxbury.com/wp-content/uploads/2015/07/2015-06-29-23-12-44.jpg?w=300 300w, https://bryanduxbury.com/wp-content/uploads/2015/07/2015-06-29-23-12-44.jpg?w=600 600w, https://bryanduxbury.com/wp-content/uploads/2015/07/2015-06-29-23-12-44.jpg?w=150 150w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-294" class="wp-caption-text">Waterblock, TEC, heatsink mounting bracket</p></div>
406<p>I&#8217;m also tired of using zip ties to mount everything to my project board, so I started on the process of making permanent mounting brackets for the important parts.</p>
407<p>The first thing up is the hot-side waterblock, TEC, and heatsink. The design is very simple &#8211; just a sort of pocket that holds all the parts in a stack and a retainer that slips over the top. There are holes in the corners to bolt it down. This was the first time I&#8217;ve ever tried milling such a thick piece of plastic, and I found it be a bit challenging due to the debris evacuation aspects. I used a 1/8&#8243; upcut endmill, which worked fine for the main cavity, but in the continuous, thin, deep cut of the outline, chips accumulated, remelted, and ultimately bogged down the mill. I was able to rescue this part with some cowboy maneuvers, but overall the result wasn&#8217;t too great. I&#8217;ll be remaking this for sure with better tooling and/or process. I&#8217;ll make a similar version that mates with the giant CPU chiller I&#8217;m using on the cold side, too.</p>
408<h2>What&#8217;s next</h2>
409<p>As soon as I have brackets for remounting the main components, I&#8217;m going to start on a new project board and try to mount everything closer to what I&#8217;ll want it to look like in the final enclosure. Then I&#8217;ll transfer all the control electronics to a more permanent breakout board, and start to design the final enclosure. Still lots to do, but definitely inching along!</p>
410					</div><!-- .entry-content -->
411		
412		<footer class="entry-meta">
413			This entry was posted in <a href="https://bryanduxbury.com/category/electronics/" rel="category tag">Electronics</a> and tagged <a href="https://bryanduxbury.com/tag/painbox/" rel="tag">painbox</a> on <a href="https://bryanduxbury.com/2015/07/02/painbox-part-3-a-bunch-of-updates/" title="8:36 pm" rel="bookmark"><time class="entry-date" datetime="2015-07-02T20:36:59-07:00">July 2, 2015</time></a><span class="by-author"> by <span class="author vcard"><a class="url fn n" href="https://bryanduxbury.com/author/bryanduxbury/" title="View all posts by bryanduxbury" rel="author">bryanduxbury</a></span></span>.								</footer><!-- .entry-meta -->
414	</article><!-- #post -->
415
416		
417		</div><!-- #content -->
418	</section><!-- #primary -->
419
420
421			<div id="secondary" class="widget-area" role="complementary">
422						<aside id="grofile-2" class="widget widget-grofile grofile">			<img
423				src="https://1.gravatar.com/avatar/fb23bc8cd4030c526b0689276b34c8bd?s=320"
424				srcset="https://1.gravatar.com/avatar/fb23bc8cd4030c526b0689276b34c8bd?s=320 1x, https://1.gravatar.com/avatar/fb23bc8cd4030c526b0689276b34c8bd?s=480 1.5x, https://1.gravatar.com/avatar/fb23bc8cd4030c526b0689276b34c8bd?s=640 2x, https://1.gravatar.com/avatar/fb23bc8cd4030c526b0689276b34c8bd?s=960 3x, https://1.gravatar.com/avatar/fb23bc8cd4030c526b0689276b34c8bd?s=1280 4x"
425				class="grofile-thumbnail no-grav"
426				alt="bryanduxbury"
427				loading="lazy" />
428			<div class="grofile-meta">
429				<h4>
429<a href="https://gravatar.com/bryanduxbury">bryanduxbury</a></h4>
430				<p></p>
431			</div>
432
433			
434			<p><a href="https://gravatar.com/bryanduxbury" class="grofile-full-link">
435				View Full Profile &rarr;			</a></p>
436
437			</aside>
438		<aside id="recent-posts-2" class="widget widget_recent_entries">
439		<h3 class="widget-title">Recent Posts</h3>
440		<ul>
441											<li>
442					<a href="https://bryanduxbury.com/2015/07/02/painbox-part-3-a-bunch-of-updates/">Painbox part 3: a bunch of&nbsp;updates</a>
443									</li>
444											<li>
445					<a href="https://bryanduxbury.com/2015/06/22/minimum-viable-operational-overhead/">Minimum Viable Operational&nbsp;Overhead</a>
446									</li>
447											<li>
448					<a href="https://bryanduxbury.com/2015/04/01/custom-bench-for-shapeoko-2-upgrades/">Custom Bench for Shapeoko 2 (+&nbsp;Upgrades)</a>
449									</li>
450											<li>
451					<a href="https://bryanduxbury.com/2015/02/26/pain-box-part-2-when-in-doubt-add-watts/">Pain box part 2: When in doubt, add&nbsp;watts</a>
452									</li>
453											<li>
454					<a href="https://bryanduxbury.com/2015/02/05/building-a-dune-pain-box-with-the-thermal-grill-illusion/">Building a Dune &#8220;Pain Box&#8221; with the Thermal Grill&nbsp;Illusion</a>
455									</li>
456					</ul>
457
458		</aside><aside id="twitter-2" class="widget widget_twitter"><h3 class="widget-title">
458<a href='http://twitter.com/bryanduxbury'>Twitter Updates</a></h3><a class="twitter-timeline" data-height="600" data-dnt="true" href="https://twitter.com/bryanduxbury">Tweets by bryanduxbury</a></aside><aside id="archives-2" class="widget widget_archive"><h3 class="widget-title">Archives</h3>
459			<ul>
460					<li><a href='https://bryanduxbury.com/2015/07/'>July 2015</a></li>
461	<li><a href='https://bryanduxbury.com/2015/06/'>June 2015</a></li>
462	<li><a href='https://bryanduxbury.com/2015/04/'>April 2015</a></li>
463	<li><a href='https://bryanduxbury.com/2015/02/'>February 2015</a></li>
464	<li><a href='https://bryanduxbury.com/2014/05/'>May 2014</a></li>
465	<li><a href='https://bryanduxbury.com/2014/01/'>January 2014</a></li>
466	<li><a href='https://bryanduxbury.com/2013/12/'>December 2013</a></li>
467	<li><a href='https://bryanduxbury.com/2013/11/'>November 2013</a></li>
468	<li><a href='https://bryanduxbury.com/2013/09/'>September 2013</a></li>
469	<li><a href='https://bryanduxbury.com/2013/08/'>August 2013</a></li>
470	<li><a href='https://bryanduxbury.com/2013/07/'>July 2013</a></li>
471	<li><a href='https://bryanduxbury.com/2013/06/'>June 2013</a></li>
472	<li><a href='https://bryanduxbury.com/2013/04/'>April 2013</a></li>
473	<li><a href='https://bryanduxbury.com/2012/06/'>June 2012</a></li>
474	<li><a href='https://bryanduxbury.com/2012/05/'>May 2012</a></li>
475	<li><a href='https://bryanduxbury.com/2012/04/'>April 2012</a></li>
476	<li><a href='https://bryanduxbury.com/2012/03/'>March 2012</a></li>
477	<li><a href='https://bryanduxbury.com/2012/01/'>January 2012</a></li>
478			</ul>
479
480			</aside><aside id="categories-2" class="widget widget_categories"><h3 class="widget-title">Categories</h3>
481			<ul>
482					<li class="cat-item cat-item-7334"><a href="https://bryanduxbury.com/category/electronics/">Electronics</a>
483</li>
484	<li class="cat-item cat-item-1234386"><a href="https://bryanduxbury.com/category/open-source-hardware/">Open-Source Hardware</a>
485</li>
486	<li class="cat-item cat-item-1"><a href="https://bryanduxbury.com/category/uncategorized/">Uncategorized</a>
487</li>
488			</ul>
489
490			</aside><aside id="search-2" class="widget widget_search"><form role="search" method="get" id="searchform" class="searchform" action="https://bryanduxbury.com/">
491				<div>
492					<label class="screen-reader-text" for="s">Search for:</label>
493					<input type="text" value="" name="s" id="s" />
494					<input type="submit" id="searchsubmit" value="Search" />
495				</div>
496			</form></aside>		</div><!-- #secondary -->
497		</div><!-- #main .wrapper -->
498	<footer id="colophon" role="contentinfo">
499		<div class="site-info">
500									<a href="https://wordpress.com/?ref=footer_blog" rel="nofollow">Blog at WordPress.com.</a>
501		</div><!-- .site-info -->
502	</footer><!-- #colophon -->
503</div><!-- #page -->
504
505<!--  -->
506<script type="speculationrules">
507{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/files/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/pub/twentytwelve/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
508</script>
vendor: 1 bytes, line 508
508
509<script id="grofiles-cards-js" src="//0.gravatar.com/js/hovercards/hovercards.min.js?ver=202641d1133547e8a1f2801609f51cef12522abe7f6647d869e9fbc974fe356a37e613"></script>
vendor: 1 bytes, line 509
509
510<script id="wpgroho-js-extra">
511var WPGroHo = {"my_hash":""};
512//# sourceURL=wpgroho-js-extra
513</script>
vendor: 1 bytes, line 513
513
514<script crossorigin='anonymous' type='text/javascript'  src='/wp-content/mu-plugins/gravatar-hovercards/wpgroho.js?m=1610363240i'></script>
514
515
516	
516<script>
517		// Initialize and attach hovercards to all gravatars
518		( function() {
519			function init() {
520				if ( typeof Gravatar === 'undefined' ) {
521					return;
522				}
523
524				if ( typeof Gravatar.init !== 'function' ) {
525					return;
526				}
527
528				Gravatar.profile_cb = function ( hash, id ) {
529					WPGroHo.syncProfileData( hash, id );
530				};
531
532				Gravatar.my_hash = WPGroHo.my_hash;
533				Gravatar.init(
534					'body',
535					'#wp-admin-bar-my-account',
536					{
537						i18n: {
538							'Edit your profile →': 'Edit your profile →',
539							'View profile →': 'View profile →',
540							'Contact': 'Contact',
541							'Send money': 'Send money',
542							'Sorry, we are unable to load this Gravatar profile.': 'Sorry, we are unable to load this Gravatar profile.',
543							'Gravatar not found.': 'Gravatar not found.',
544							'Too Many Requests.': 'Too Many Requests.',
545							'Internal Server Error.': 'Internal Server Error.',
546							'Is this you?': 'Is this you?',
547							'Claim your free profile.': 'Claim your free profile.',
548							'Email': 'Email',
549							'Home Phone': 'Home Phone',
550							'Work Phone': 'Work Phone',
551							'Cell Phone': 'Cell Phone',
552							'Contact Form': 'Contact Form',
553							'Calendar': 'Calendar',
554						},
555					}
556				);
557			}
558
559			if ( document.readyState !== 'loading' ) {
560				init();
561			} else {
562				document.addEventListener( 'DOMContentLoaded', init );
563			}
564		} )();
565	</script>
565
566
567		<div style="display:none">
568	</div>
569		<!-- CCPA [start] -->
570		
570<script type="text/javascript">
571			( function () {
572
573				var setupPrivacy = function() {
574
575					// Minimal Mozilla Cookie library
576					// https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie/Simple_document.cookie_framework
577					var cookieLib = window.cookieLib = {getItem:function(e){return e&&decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null},setItem:function(e,o,n,t,r,i){if(!e||/^(?:expires|max\-age|path|domain|secure)$/i.test(e))return!1;var c="";if(n)switch(n.constructor){case Number:c=n===1/0?"; expires=Fri, 31 Dec 9999 23:59:59 GMT":"; max-age="+n;break;case String:c="; expires="+n;break;case Date:c="; expires="+n.toUTCString()}return"rootDomain"!==r&&".rootDomain"!==r||(r=(".rootDomain"===r?".":"")+document.location.hostname.split(".").slice(-2).join(".")),document.cookie=encodeURIComponent(e)+"="+encodeURIComponent(o)+c+(r?"; domain="+r:"")+(t?"; path="+t:"")+(i?"; secure":""),!0}};
578
579					// Implement IAB USP API.
580					window.__uspapi = function( command, version, callback ) {
581
582						// Validate callback.
583						if ( typeof callback !== 'function' ) {
584							return;
585						}
586
587						// Validate the given command.
588						if ( command !== 'getUSPData' || version !== 1 ) {
589							callback( null, false );
590							return;
591						}
592
593						// Check for GPC. If set, override any stored cookie.
594						if ( navigator.globalPrivacyControl ) {
595							callback( { version: 1, uspString: '1YYN' }, true );
596							return;
597						}
598
599						// Check for cookie.
600						var consent = cookieLib.getItem( 'usprivacy' );
601
602						// Invalid cookie.
603						if ( null === consent ) {
604							callback( null, false );
605							return;
606						}
607
608						// Everything checks out. Fire the provided callback with the consent data.
609						callback( { version: 1, uspString: consent }, true );
610					};
611
612					// Initialization.
613					document.addEventListener( 'DOMContentLoaded', function() {
614
615						// Internal functions.
616						var setDefaultOptInCookie = function() {
617							var value = '1YNN';
618							var domain = '.wordpress.com' === location.hostname.slice( -14 ) ? '.rootDomain' : location.hostname;
619							cookieLib.setItem( 'usprivacy', value, 365 * 24 * 60 * 60, '/', domain );
620						};
621
622						var setDefaultOptOutCookie = function() {
623							var value = '1YYN';
624							var domain = '.wordpress.com' === location.hostname.slice( -14 ) ? '.rootDomain' : location.hostname;
625							cookieLib.setItem( 'usprivacy', value, 24 * 60 * 60, '/', domain );
626						};
627
628						var setDefaultNotApplicableCookie = function() {
629							var value = '1---';
630							var domain = '.wordpress.com' === location.hostname.slice( -14 ) ? '.rootDomain' : location.hostname;
631							cookieLib.setItem( 'usprivacy', value, 24 * 60 * 60, '/', domain );
632						};
633
634						var setCcpaAppliesCookie = function( applies ) {
635							var domain = '.wordpress.com' === location.hostname.slice( -14 ) ? '.rootDomain' : location.hostname;
636							cookieLib.setItem( 'ccpa_applies', applies, 24 * 60 * 60, '/', domain );
637						}
638
639						var maybeCallDoNotSellCallback = function() {
640							if ( 'function' === typeof window.doNotSellCallback ) {
641								return window.doNotSellCallback();
642							}
643
644							return false;
645						}
646
647						// Look for usprivacy cookie first.
648						var usprivacyCookie = cookieLib.getItem( 'usprivacy' );
649
650						// Found a usprivacy cookie.
651						if ( null !== usprivacyCookie ) {
652
653							// If the cookie indicates that CCPA does not apply, then bail.
654							if ( '1---' === usprivacyCookie ) {
655								return;
656							}
657
658							// CCPA applies, so call our callback to add Do Not Sell link to the page.
659							maybeCallDoNotSellCallback();
660
661							// We're all done, no more processing needed.
662							return;
663						}
664
665						// We don't have a usprivacy cookie, so check to see if we have a CCPA applies cookie.
666						var ccpaCookie = cookieLib.getItem( 'ccpa_applies' );
667
668						// No CCPA applies cookie found, so we'll need to geolocate if this visitor is from California.
669						// This needs to happen client side because we do not have region geo data in our $SERVER headers,
670						// only country data -- therefore we can't vary cache on the region.
671						if ( null === ccpaCookie ) {
672
673							var request = new XMLHttpRequest();
674							request.open( 'GET', 'https://public-api.wordpress.com/geo/', true );
675
676							request.onreadystatechange = function () {
677								if ( 4 === this.readyState ) {
678									if ( 200 === this.status ) {
679
680										// Got a geo response. Parse out the region data.
681										var data = JSON.parse( this.response );
682										var region      = data.region ? data.region.toLowerCase() : '';
683										var ccpa_applies = ['california', 'colorado', 'connecticut', 'delaware', 'indiana', 'iowa', 'montana', 'new jersey', 'oregon', 'tennessee', 'texas', 'utah', 'virginia'].indexOf( region ) > -1;
684										// Set CCPA applies cookie. This keeps us from having to make a geo request too frequently.
685										setCcpaAppliesCookie( ccpa_applies );
686
687										// Check if CCPA applies to set the proper usprivacy cookie.
688										if ( ccpa_applies ) {
689											if ( maybeCallDoNotSellCallback() ) {
690												// Do Not Sell link added, so set default opt-in.
691												setDefaultOptInCookie();
692											} else {
693												// Failed showing Do Not Sell link as required, so default to opt-OUT just to be safe.
694												setDefaultOptOutCookie();
695											}
696										} else {
697											// CCPA does not apply.
698											setDefaultNotApplicableCookie();
699										}
700									} else {
701										// Could not geo, so let's assume for now that CCPA applies to be safe.
702										setCcpaAppliesCookie( true );
703										if ( maybeCallDoNotSellCallback() ) {
704											// Do Not Sell link added, so set default opt-in.
705											setDefaultOptInCookie();
706										} else {
707											// Failed showing Do Not Sell link as required, so default to opt-OUT just to be safe.
708											setDefaultOptOutCookie();
709										}
710									}
711								}
712							};
713
714							// Send the geo request.
715							request.send();
716						} else {
717							// We found a CCPA applies cookie.
718							if ( ccpaCookie === 'true' ) {
719								if ( maybeCallDoNotSellCallback() ) {
720									// Do Not Sell link added, so set default opt-in.
721									setDefaultOptInCookie();
722								} else {
723									// Failed showing Do Not Sell link as required, so default to opt-OUT just to be safe.
724									setDefaultOptOutCookie();
725								}
726							} else {
727								// CCPA does not apply.
728								setDefaultNotApplicableCookie();
729							}
730						}
731					} );
732				};
733
734				// Kickoff initialization.
735				if ( window.defQueue && defQueue.isLOHP && defQueue.isLOHP === 2020 ) {
736					defQueue.items.push( setupPrivacy );
737				} else {
738					setupPrivacy();
739				}
740
741			} )();
742		</script>
742
743
744		<!-- CCPA [end] -->
745		<div class="widget widget_eu_cookie_law_widget">
746<div
747	class="hide-on-button ads-active"
748	data-hide-timeout="30"
749	data-consent-expiration="180"
750	id="eu-cookie-law"
751	style="display: none"
752>
753	<form method="post">
754		<input type="submit" value="Close and accept" class="accept" />
755
756		Privacy &amp; Cookies: This site uses cookies. By continuing to use this website, you agree to their use. <br />
757To find out more, including how to control cookies, see here:
758				<a href="https://automattic.com/cookies/" rel="nofollow">
759			Cookie Policy		</a>
760 </form>
761</div>
762</div>			<div id="actionbar" dir="ltr" style="display: none;"
763				class="actnbr-pub-twentytwelve" role="region" aria-label="Site actions">
764			<span class="actnbr-live" aria-live="polite"></span>
765			<ul>
766										<li class="actnbr-btn actnbr-hidden">
767										<a class="actnbr-action actnbr-actn-follow " href="" role="button" aria-haspopup="dialog" aria-expanded="false">
768				<svg class="actnbr-icon actnbr-icon-bell" width="20" height="20" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" fill="currentColor"><path fill-rule="evenodd" clip-rule="evenodd" d="M17 11.5c0 1.353.17 2.368.976 3 .266.209.602.376 1.024.5v1H5v-1c.422-.124.757-.291 1.024-.5.806-.632.976-1.647.976-3V9c0-2.8 2.2-5 5-5s5 2.2 5 5v2.5ZM15.5 9v2.5c0 .93.066 1.98.515 2.897l.053.103H7.932a4.018 4.018 0 0 0 .053-.103c.449-.917.515-1.967.515-2.897V9c0-1.972 1.528-3.5 3.5-3.5s3.5 1.528 3.5 3.5Zm-5.492 9.008c0-.176.023-.346.065-.508h3.854A1.996 1.996 0 0 1 12 20c-1.1 0-1.992-.892-1.992-1.992Z"/></svg>				<span>Subscribe</span>
769			</a>
770			<a class="actnbr-action actnbr-actn-following  no-display" href="" role="button">
771				<svg class="actnbr-icon actnbr-icon-check" width="20" height="20" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" style="fill: none" stroke="currentColor" stroke-width="1.5"><path d="M7 12L10 15L17 8" vector-effect="non-scaling-stroke"/></svg>				<span>Subscribed</span>
772			</a>
773									<div class="actnbr-popover actnbr-panel actnbr-notice" id="follow-bubble" role="dialog" aria-label="Subscribe to Bryan Duxbury&#039;s Blog">
774								<div class="actnbr-follow-bubble">
775								<div class="actnbr-panel__group"><a class="actnbr-menu__item actnbr-sitename" href="https://bryanduxbury.com"><img loading='lazy' alt='' src='https://s-ssl.wordpress.com/i/logo/wpcom-gray-white.png?m=1479929237i' srcset='https://s-ssl.wordpress.com/i/logo/wpcom-gray-white.png 1x' class='avatar avatar-50' height='50' width='50' /><span class="actnbr-menu__label">Bryan Duxbury&#039;s Blog</span></a></div>																	<div class="actnbr-panel__group">
776										<div class="actnbr-message no-display" aria-live="polite"></div>
777										<form method="post" action="https://subscribe.wordpress.com" accept-charset="utf-8" class="no-display">
778																						<input type="email" name="email" placeholder="Want updates? Enter your email" class="actnbr-email-field" aria-label="Email address" />
779											<input type="hidden" name="action" value="subscribe" />
780											<input type="hidden" name="blog_id" value="49932756" />
781											<input type="hidden" name="source" value="https://bryanduxbury.com/tag/painbox/" />
782											<input type="hidden" name="sub-type" value="actionbar-follow" />
783											<input type="hidden" id="_wpnonce" name="_wpnonce" value="5255728a13" />											<button type="submit" class="actnbr-button">Sign me up</button>
784										</form>
785										<p class="actnbr-login-nudge">
786											Have a WordPress.com account? <a href="https://wordpress.com/log-in?redirect_to=https%3A%2F%2Fr-login.wordpress.com%2Fremote-login.php%3Faction%3Dlink%26back%3Dhttps%253A%252F%252Fbryanduxbury.com%252F2015%252F07%252F02%252Fpainbox-part-3-a-bunch-of-updates%252F">Log in now.</a>										</p>
787									</div>
788																	</div>
789							</div>
790						</li>
791									<li class="actnbr-ellipsis actnbr-hidden">
792					<button type="button" class="actnbr-more-toggle" aria-haspopup="true" aria-expanded="false" aria-label="More options">
793						<svg class="actnbr-icon actnbr-icon-more-horizontal" width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" fill="currentColor"><path d="M11 13h2v-2h-2v2zm-6 0h2v-2H5v2zm12-2v2h2v-2h-2z"/></svg>					</button>
794					<div class="actnbr-popover actnbr-menu" role="menu" aria-label="Site options">
795						<div class="actnbr-menu__group" role="group"><a role="menuitem" class="actnbr-menu__item actnbr-sitename" href="https://bryanduxbury.com"><img loading='lazy' alt='' src='https://s-ssl.wordpress.com/i/logo/wpcom-gray-white.png?m=1479929237i' srcset='https://s-ssl.wordpress.com/i/logo/wpcom-gray-white.png 1x' class='avatar avatar-50' height='50' width='50' /><span class="actnbr-menu__label">Bryan Duxbury&#039;s Blog</span></a></div><div class="actnbr-menu__group" role="group"><a role="menuitem" class="actnbr-menu__item actnbr-reader" href="https://wordpress.com/reader/feeds/19349172"><span class="actnbr-menu__label">View site in Reader</span></a></div><div class="actnbr-menu__group" role="group"><a role="menuitem" class="actnbr-menu__item actnbr-subs" href="https://subscribe.wordpress.com/"><span class="actnbr-menu__label">Manage subscriptions</span></a><a role="menuitem" class="actnbr-menu__item actnbr-signup" href="https://wordpress.com/start/"><span class="actnbr-menu__label">Sign up</span></a><a role="menuitem" class="actnbr-menu__item actnbr-login" href="https://wordpress.com/log-in?redirect_to=https%3A%2F%2Fr-login.wordpress.com%2Fremote-login.php%3Faction%3Dlink%26back%3Dhttps%253A%252F%252Fbryanduxbury.com%252F2015%252F07%252F02%252Fpainbox-part-3-a-bunch-of-updates%252F"><span class="actnbr-menu__label">Log in</span></a></div><div class="actnbr-menu__group" role="group"><a role="menuitem" class="actnbr-menu__item flb-report" href="https://wordpress.com/abuse/?report_url=https://bryanduxbury.com" target="_blank" rel="noopener noreferrer"><span class="actnbr-menu__label">Report this content</span><span class="actnbr-menu__icon"><svg class="actnbr-icon actnbr-icon-external" width="18" height="18" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" fill="currentColor"><path d="M19.5 4.5h-7V6h4.44l-5.97 5.97 1.06 1.06L18 7.06v4.44h1.5v-7Zm-13 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-3H17v3a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h3V5.5h-3Z"/></svg></span></a></div><div class="actnbr-menu__group" role="group"><a role="menuitem" class="actnbr-menu__item actnbr-fold" href=""><span class="actnbr-menu__label">Collapse this bar</span></a></div>					</div>
796				</li>
797			</ul>
798		</div>
799		
799<script>
800window.addEventListener( "DOMContentLoaded", function () {
801				var link = document.createElement( "link" );
802				link.href = "\/wp-content\/mu-plugins\/jetpack-plugin\/sun\/jetpack_vendor\/automattic\/jetpack-newsletter\/src\/..\/build\/action-bar.css?ver=35dd33285eb46dc308dd";
803				link.rel = "stylesheet";
804				document.head.appendChild( link );
805
806				var script = document.createElement( "script" );
807				script.src = "\/wp-content\/mu-plugins\/jetpack-plugin\/sun\/jetpack_vendor\/automattic\/jetpack-newsletter\/src\/..\/build\/action-bar.js?ver=35dd33285eb46dc308dd";
808				document.body.appendChild( script );
809			} );
810</script>
810
811<link rel="prefetch" href="/wp-content/mu-plugins/jetpack-plugin/sun/_inc/blocks/swiper.js" as="script" />
812		<div id="jp-carousel-loading-overlay" style="display: none;">
813			<div id="jp-carousel-loading-wrapper">
814				<span id="jp-carousel-library-loading"><svg class="jetpack-spinner" width="40" height="40" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><circle cx="50" cy="50" r="46" fill="none" stroke="#ddd" stroke-width="8"/><path d="M 50 4 A 46 46 0 0 1 96 50" fill="none" stroke="currentColor" stroke-width="8" stroke-linecap="round"><animateTransform attributeName="transform" type="rotate" dur="1.4s" from="0 50 50" to="360 50 50" repeatCount="indefinite"/></path></svg></span>
815			</div>
816		</div>
817		<div class="jp-carousel-overlay" style="display: none;">
818
819		<div class="jp-carousel-container">
820			<!-- The Carousel Swiper -->
821			<div
822				class="jp-carousel-wrap swiper jp-carousel-swiper-container jp-carousel-transitions"
823				itemscope
824				itemtype="https://schema.org/ImageGallery">
825				<div class="jp-carousel swiper-wrapper"></div>
826				<div class="jp-swiper-button-prev swiper-button-prev">
827					<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
828						<mask id="maskPrev" mask-type="alpha" maskUnits="userSpaceOnUse" x="8" y="6" width="9" height="12">
829							<path d="M16.2072 16.59L11.6496 12L16.2072 7.41L14.8041 6L8.8335 12L14.8041 18L16.2072 16.59Z" fill="white"/>
830						</mask>
831						<g mask="url(#maskPrev)">
832							<rect x="0.579102" width="23.8823" height="24" fill="#FFFFFF"/>
833						</g>
834					</svg>
835				</div>
836				<div class="jp-swiper-button-next swiper-button-next">
837					<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
838						<mask id="maskNext" mask-type="alpha" maskUnits="userSpaceOnUse" x="8" y="6" width="8" height="12">
839							<path d="M8.59814 16.59L13.1557 12L8.59814 7.41L10.0012 6L15.9718 12L10.0012 18L8.59814 16.59Z" fill="white"/>
840						</mask>
841						<g mask="url(#maskNext)">
842							<rect x="0.34375" width="23.8822" height="24" fill="#FFFFFF"/>
843						</g>
844					</svg>
845				</div>
846			</div>
847			<!-- The main close buton -->
848			<div class="jp-carousel-close-hint">
849				<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
850					<mask id="maskClose" mask-type="alpha" maskUnits="userSpaceOnUse" x="5" y="5" width="15" height="14">
851						<path d="M19.3166 6.41L17.9135 5L12.3509 10.59L6.78834 5L5.38525 6.41L10.9478 12L5.38525 17.59L6.78834 19L12.3509 13.41L17.9135 19L19.3166 17.59L13.754 12L19.3166 6.41Z" fill="white"/>
852					</mask>
853					<g mask="url(#maskClose)">
854						<rect x="0.409668" width="23.8823" height="24" fill="#FFFFFF"/>
855					</g>
856				</svg>
857			</div>
858			<!-- Image info, comments and meta -->
859			<div class="jp-carousel-info">
860				<div class="jp-carousel-info-footer">
861					<div class="jp-carousel-pagination-container">
862						<div class="jp-swiper-pagination swiper-pagination"></div>
863						<div class="jp-carousel-pagination"></div>
864					</div>
865					<div class="jp-carousel-photo-title-container">
866						<div class="jp-carousel-photo-caption"></div>
867					</div>
868					<div class="jp-carousel-photo-icons-container">
869						<a href="#" class="jp-carousel-icon-btn jp-carousel-icon-info" aria-label="Toggle photo metadata visibility">
870							<span class="jp-carousel-icon">
871								<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
872									<mask id="maskInfo" mask-type="alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="21" height="20">
873										<path fill-rule="evenodd" clip-rule="evenodd" d="M12.7537 2C7.26076 2 2.80273 6.48 2.80273 12C2.80273 17.52 7.26076 22 12.7537 22C18.2466 22 22.7046 17.52 22.7046 12C22.7046 6.48 18.2466 2 12.7537 2ZM11.7586 7V9H13.7488V7H11.7586ZM11.7586 11V17H13.7488V11H11.7586ZM4.79292 12C4.79292 16.41 8.36531 20 12.7537 20C17.142 20 20.7144 16.41 20.7144 12C20.7144 7.59 17.142 4 12.7537 4C8.36531 4 4.79292 7.59 4.79292 12Z" fill="white"/>
874									</mask>
875									<g mask="url(#maskInfo)">
876										<rect x="0.8125" width="23.8823" height="24" fill="#FFFFFF"/>
877									</g>
878								</svg>
879							</span>
880						</a>
881												<a href="#" class="jp-carousel-icon-btn jp-carousel-icon-comments" aria-label="Toggle photo comments visibility">
882							<span class="jp-carousel-icon">
883								<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
884									<mask id="maskComments" mask-type="alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="21" height="20">
885										<path fill-rule="evenodd" clip-rule="evenodd" d="M4.3271 2H20.2486C21.3432 2 22.2388 2.9 22.2388 4V16C22.2388 17.1 21.3432 18 20.2486 18H6.31729L2.33691 22V4C2.33691 2.9 3.2325 2 4.3271 2ZM6.31729 16H20.2486V4H4.3271V18L6.31729 16Z" fill="white"/>
886									</mask>
887									<g mask="url(#maskComments)">
888										<rect x="0.34668" width="23.8823" height="24" fill="#FFFFFF"/>
889									</g>
890								</svg>
891
892								<span class="jp-carousel-has-comments-indicator" aria-label="This image has comments."></span>
893							</span>
894						</a>
895											</div>
896				</div>
897				<div class="jp-carousel-info-extra">
898					<div class="jp-carousel-info-content-wrapper">
899						<div class="jp-carousel-photo-title-container">
900							<div class="jp-carousel-photo-title"></div>
901						</div>
902						<div class="jp-carousel-comments-wrapper">
903															<div id="jp-carousel-comments-loading">
904									<span>Loading Comments...</span>
905								</div>
906								<div class="jp-carousel-comments"></div>
907								<div id="jp-carousel-comment-form-container">
908									<span id="jp-carousel-comment-form-spinner"><svg class="jetpack-spinner" width="20" height="20" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><circle cx="50" cy="50" r="46" fill="none" stroke="#ddd" stroke-width="8"/><path d="M 50 4 A 46 46 0 0 1 96 50" fill="none" stroke="currentColor" stroke-width="8" stroke-linecap="round"><animateTransform attributeName="transform" type="rotate" dur="1.4s" from="0 50 50" to="360 50 50" repeatCount="indefinite"/></path></svg></span>
909									<div id="jp-carousel-comment-post-results"></div>
910																														<form id="jp-carousel-comment-form">
911												<label for="jp-carousel-comment-form-comment-field" class="screen-reader-text">Write a Comment...</label>
912												<textarea
913													name="comment"
914													class="jp-carousel-comment-form-field jp-carousel-comment-form-textarea"
915													id="jp-carousel-comment-form-comment-field"
916													placeholder="Write a Comment..."
917												></textarea>
918												<div id="jp-carousel-comment-form-submit-and-info-wrapper">
919													<div id="jp-carousel-comment-form-commenting-as">
920																													<fieldset>
921																<label for="jp-carousel-comment-form-email-field">Email (Required)</label>
922																<input type="text" name="email" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-email-field" />
923															</fieldset>
924															<fieldset>
925																<label for="jp-carousel-comment-form-author-field">Name (Required)</label>
926																<input type="text" name="author" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-author-field" />
927															</fieldset>
928															<fieldset>
929																<label for="jp-carousel-comment-form-url-field">Website</label>
930																<input type="text" name="url" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-url-field" />
931															</fieldset>
932																											</div>
933													<input
934														type="submit"
935														name="submit"
936														class="jp-carousel-comment-form-button"
937														id="jp-carousel-comment-form-button-submit"
938														value="Post Comment" />
939												</div>
940											</form>
941																											</div>
942													</div>
943						<div class="jp-carousel-image-meta">
944							<div class="jp-carousel-title-and-caption">
945								<div class="jp-carousel-photo-info">
946									<div class="jp-carousel-caption" itemprop="caption description"></div>
947								</div>
948
949								<div class="jp-carousel-photo-description"></div>
950							</div>
951							<a class="jp-carousel-image-download" href="#" aria-label="Download image" target="_blank" style="display: none;">
952								<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
953									<mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="3" y="3" width="19" height="18">
954										<path fill-rule="evenodd" clip-rule="evenodd" d="M5.84615 5V19H19.7775V12H21.7677V19C21.7677 20.1 20.8721 21 19.7775 21H5.84615C4.74159 21 3.85596 20.1 3.85596 19V5C3.85596 3.9 4.74159 3 5.84615 3H12.8118V5H5.84615ZM14.802 5V3H21.7677V10H19.7775V6.41L9.99569 16.24L8.59261 14.83L18.3744 5H14.802Z" fill="white"/>
955									</mask>
956									<g mask="url(#mask0)">
957										<rect x="0.870605" width="23.8823" height="24" fill="#FFFFFF"/>
958									</g>
959								</svg>
960								<span class="jp-carousel-download-text"></span>
961							</a>
962							<div class="jp-carousel-image-map" style="display: none;"></div>
963						</div>
964					</div>
965				</div>
966			</div>
967		</div>
968
969		</div>
970		
971	
971<script type="text/javascript">
972		(function () {
973			var wpcom_reblog = {
974				source: 'toolbar',
975
976				toggle_reblog_box_flair: function (obj_id, post_id) {
977
978					// Go to site selector. This will redirect to their blog if they only have one.
979					const postEndpoint = `https://wordpress.com/post`;
980
981					// Ideally we would use the permalink here, but fortunately this will be replaced with the 
982					// post permalink in the editor.
983					const originalURL = `${ document.location.href }?page_id=${ post_id }`; 
984					
985					const url =
986						postEndpoint +
987						'?url=' +
988						encodeURIComponent( originalURL ) +
989						'&is_post_share=true' +
990						'&v=5';
991
992					const redirect = function () {
993						if (
994							! window.open( url, '_blank' )
995						) {
996							location.href = url;
997						}
998					};
999
1000					if ( /Firefox/.test( navigator.userAgent ) ) {
1001						setTimeout( redirect, 0 );
1002					} else {
1003						redirect();
1004					}
1005				},
1006			};
1007
1008			window.wpcom_reblog = wpcom_reblog;
1009		})();
1010	</script>
vendor: 1 bytes, line 1010
1010
1011<script id="jetpack-carousel-js-extra">
1012var jetpackSwiperLibraryPath = {"url":"/wp-content/mu-plugins/jetpack-plugin/sun/_inc/blocks/swiper.js"};
1013var jetpackCarouselStrings = {"widths":[370,700,1000,1200,1400,2000],"is_logged_in":"","lang":"en","ajaxurl":"https://bryanduxbury.com/wp-admin/admin-ajax.php","nonce":"61e17ecf2e","display_exif":"1","display_comments":"1","single_image_gallery":"1","single_image_gallery_media_file":"","background_color":"black","comment":"Comment","post_comment":"Post Comment","write_comment":"Write a Comment...","loading_comments":"Loading Comments...","image_label":"Open image in full-screen.","download_original":"View full size \u003Cspan class=\"photo-size\"\u003E{0}\u003Cspan class=\"photo-size-times\"\u003E\u00d7\u003C/span\u003E{1}\u003C/span\u003E","no_comment_text":"Please be sure to submit some text with your comment.","no_comment_email":"Please provide an email address to comment.","no_comment_author":"Please provide your name to comment.","comment_post_error":"Sorry, but there was an error posting your comment. Please try again later.","comment_approved":"Your comment was approved.","comment_unapproved":"Your comment is in moderation.","camera":"Camera","aperture":"Aperture","shutter_speed":"Shutter Speed","focal_length":"Focal Length","copyright":"Copyright","comment_registration":"0","require_name_email":"1","login_url":"https://bryanduxbury.wordpress.com/wp-login.php?redirect_to=https%3A%2F%2Fbryanduxbury.com%2F2015%2F07%2F02%2Fpainbox-part-3-a-bunch-of-updates%2F","blog_id":"49932756","meta_data":["camera","aperture","shutter_speed","focal_length","copyright"],"stats_query_args":"blog=49932756&v=wpcom&tz=-7&user_id=0&arch_tag=painbox&arch_results=1&subd=bryanduxbury","is_public":"1"};
1014//# sourceURL=jetpack-carousel-js-extra
1015</script>
vendor: 1 bytes, line 1015
1015
1016<script crossorigin='anonymous' type='text/javascript'  src='/_static/??-eJx9jckOgkAMhl/IoagkxIPxUUwZGhzoLLEdiG/vkLiFg5cm/f4NlmRsDEpBoeM4mMR5cEFgifceezGWUYQExoJQ2cyHapQd/MR8/oZcP5AKUC5qnBwZxgWUfGJU2vBtj97IF0/KHehSwKNcnmldDji7AdXF8Gd8JE1op9cPkgNcXbDQZcc9WLzHLMQf2xtU3q2tF3/et6e6butj04xPn3Rn6A=='></script>
vendor: 1 bytes, line 1016
1016
1017<script id="twitter-widgets-js" src="https://platform.twitter.com/widgets.js?ver=20111117"></script>
vendor: 1 bytes, line 1017
1017
1018<script crossorigin='anonymous' type='text/javascript'  src='/wp-content/mu-plugins/carousel-wpcom/carousel-wpcom.js?m=1761899756i'></script>
vendor: 1 bytes, line 1018
1018
1019<script id="wp-emoji-settings" type="application/json">
1020{"baseUrl":"https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/","ext":".png","svgUrl":"https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/svg/","svgExt":".svg","source":{"concatemoji":"/wp-includes/js/wp-emoji-release.min.js?m=1783090810i&ver=7.2-alpha-63973"}}
1021</script>
vendor: 1 bytes, line 1021
1021
1022<script type="module">
1023/*! This file is auto-generated */
1024var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\udec8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
1025//# sourceURL=/wp-includes/js/wp-emoji-loader.min.js
1026</script>
vendor: 1 bytes, line 1026
1026
1027<script src="//stats.wp.com/w.js?69" defer></script>
1027 
1027<script type="text/javascript">
1028_tkq = window._tkq || [];
1029_stq = window._stq || [];
1030_tkq.push(['storeContext', {'blog_id':'49932756','blog_tz':'-7','user_lang':'en','blog_lang':'en','user_id':'0'}]);
1031		// Prevent sending pageview tracking from WP-Admin pages.
1032		_stq.push(['view', {'blog':'49932756','v':'wpcom','tz':'-7','user_id':'0','arch_tag':'painbox','arch_results':'1','subd':'bryanduxbury'}]);
1033		_stq.push(['extra', {'crypt':'UE5XaGUuOTlwaD85flAmcm1mcmZsaDhkV11YdWtpP0NsWnVkPS9sL0ViLndld3BlNW9wYkxrcS8wWVtjejFQNVYvZGs2T1ElL3AzRzNDWTYzaUJlPSZHSjdGbXJqbC04LDBmZlpTW2Y4SD1zYTZXcn4zV2NMQT1DZk9KLWZMPS9YTjhBZG12VUdwX04mWG5OaU5LcXgrOGJiUzB6UUYvM3BwJVlJQj9aRHdSaS5BbXdKT2s0M2lLVWJIJXhaRDNqT0E1QjM5LC9KW25Ddjh6Y2gzTVYuaH5XNHB1OWprMEtoXzBhMms/TiVtKywvQ0szOVVSOTgwTXM9TWIzeUpTLURGb2NlQ3ZbZHFZSi92bkhrcXpZMmxzbk4lajNjVituWTdJL2tUTVR1ZTYxZ3p+QT9yMjRiTXUyWXJzNy1+JXFjQTJoejI0Tko1ZmFKY0cueXlFSkFTL01qckVUYmZKaTdETQ=='}]);
1034_stq.push([ 'clickTrackerInit', '49932756', '0' ]);
1035</script>
1035
1036<noscript><img src="https://pixel.wp.com/b.gif?v=noscript" style="height:1px;width:1px;overflow:hidden;position:absolute;bottom:1px;" alt="" /></noscript>
1037<meta id="bilmur" property="bilmur:data" content="" data-provider="wordpress.com" data-service="simple" data-site-tz="America/Los_Angeles" data-custom-props="{&quot;enq_jquery&quot;:&quot;1&quot;,&quot;logged_in&quot;:&quot;0&quot;,&quot;wptheme&quot;:&quot;pub\/twentytwelve&quot;,&quot;wptheme_is_block&quot;:&quot;0&quot;}"   >
1038		
1038<script defer src="/wp-content/js/bilmur.min.js?i=19&amp;m=202641"></script>
1038 	</body>
1039</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.