PageSourceSearch

https://www.deadprogrammer.com/

html deadprogrammer.com collected 2026-09-26 06:39:53 UTC 134,656 bytes, 1,036 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-US">
3<head>
4	<meta charset="UTF-8" />
5	<meta name="viewport" content="width=device-width, initial-scale=1" />
6<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
7<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 7-8
7
8<script async src="https://www.googletagmanager.com/gtag/js?id=
8G-MEF9E395KJ
vendor: 13 bytes, line 8
8"></script>
9<script>
10  
vendor: 138 bytes, lines 10-14
10window.dataLayer = window.dataLayer || [];
11  function gtag(){dataLayer.push(arguments);}
12  gtag('js', new Date());
13
14  gtag('config', '
14G-MEF9E395KJ
vendor: 5 bytes, line 14
14');
15</script>
15
16
17	<!-- CJ Custom Header Code -->
18	
19	<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https://yoast.com/product/yoast-seo-wordpress/ -->
20	<meta name="description" content="Blogging since 2002" />
21	<link rel="canonical" href="https://www.deadprogrammer.com/" />
22	<link rel="next" href="https://www.deadprogrammer.com/page/2" />
23	<meta property="og:locale" content="en_US" />
24	<meta property="og:type" content="website" />
25	<meta property="og:title" content="Dead Programmer&#039;s Cafe" />
26	<meta property="og:description" content="Blogging since 2002" />
27	<meta property="og:url" content="https://www.deadprogrammer.com/" />
28	<meta property="og:site_name" content="Dead Programmer&#039;s Cafe" />
29	<meta name="twitter:card" content="summary_large_image" />
30	
30<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","@id":"https://www.deadprogrammer.com/","url":"https://www.deadprogrammer.com/","name":"Dead Programmer&#039;s Cafe - Blogging since 2002","isPartOf":{"@id":"https://www.deadprogrammer.com/#website"},"description":"Blogging since 2002","breadcrumb":{"@id":"https://www.deadprogrammer.com/#breadcrumb"},"inLanguage":"en-US"},{"@type":"BreadcrumbList","@id":"https://www.deadprogrammer.com/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home"}]},{"@type":"WebSite","@id":"https://www.deadprogrammer.com/#website","url":"https://www.deadprogrammer.com/","name":"Dead Programmer's Cafe","description":"Blogging since 2002","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.deadprogrammer.com/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}</script>
30
31	<!-- / Yoast SEO plugin. -->
32
33
34<title>Dead Programmer&#039;s Cafe - Blogging since 2002</title>
35<link rel='dns-prefetch' href='//stats.wp.com' />
36<link rel='dns-prefetch' href='//www.googletagmanager.com' />
37<link rel='dns-prefetch' href='//pagead2.googlesyndication.com' />
38<link rel="alternate" type="application/rss+xml" title="Dead Programmer&#039;s Cafe &raquo; Feed" href="https://www.deadprogrammer.com/feed" />
39<style id='wp-img-auto-sizes-contain-inline-css'>
40img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
41/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
42</style>
43<style id='wp-block-site-title-inline-css'>
44.wp-block-site-title{box-sizing:border-box}.wp-block-site-title :where(a){color:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;text-decoration:inherit}
45/*# sourceURL=https://www.deadprogrammer.com/wp-includes/blocks/site-title/style.min.css */
46</style>
47<style id='wp-block-navigation-link-inline-css'>
48.wp-block-navigation .wp-block-navigation-item__label{overflow-wrap:break-word}.wp-block-navigation .wp-block-navigation-item__description{display:none}.link-ui-tools{outline:1px solid #f0f0f0;padding:8px}.link-ui-block-inserter{padding-top:8px}.link-ui-block-inserter__back{margin-left:8px;text-transform:uppercase}
49/*# sourceURL=https://www.deadprogrammer.com/wp-includes/blocks/navigation-link/style.min.css */
50</style>
51<style id='wp-block-navigation-inline-css'>
52.wp-block-navigation{position:relative}.wp-block-navigation ul{margin-bottom:0;margin-left:0;margin-top:0;padding-left:0}.wp-block-navigation ul,.wp-block-navigation ul li{list-style:none;padding:0}.wp-block-navigation .wp-block-navigation-item{align-items:center;background-color:inherit;display:flex;position:relative}.wp-block-navigation .wp-block-navigation-item .wp-block-navigation__submenu-container:empty{display:none}.wp-block-navigation .wp-block-navigation-item__content{display:block;z-index:1}.wp-block-navigation .wp-block-navigation-item__content.wp-block-navigation-item__content{color:inherit}.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content,.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content:active,.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content:focus{text-decoration:underline}.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content,.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content:active,.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content:focus{text-decoration:line-through}.wp-block-navigation :where(a),.wp-block-navigation :where(a:active),.wp-block-navigation :where(a:focus){text-decoration:none}.wp-block-navigation .wp-block-navigation__submenu-icon{align-self:center;background-color:inherit;border:none;color:currentColor;display:inline-block;font-size:inherit;height:.6em;line-height:0;margin-left:.25em;padding:0;width:.6em}.wp-block-navigation .wp-block-navigation__submenu-icon svg{display:inline-block;stroke:currentColor;height:inherit;margin-top:.075em;width:inherit}.wp-block-navigation{--navigation-layout-justification-setting:flex-start;--navigation-layout-direction:row;--navigation-layout-wrap:wrap;--navigation-layout-justify:flex-start;--navigation-layout-align:center}.wp-block-navigation.is-vertical{--navigation-layout-direction:column;--navigation-layout-justify:initial;--navigation-layout-align:flex-start}.wp-block-navigation.no-wrap{--navigation-layout-wrap:nowrap}.wp-block-navigation.items-justified-center{--navigation-layout-justification-setting:center;--navigation-layout-justify:center}.wp-block-navigation.items-justified-center.is-vertical{--navigation-layout-align:center}.wp-block-navigation.items-justified-right{--navigation-layout-justification-setting:flex-end;--navigation-layout-justify:flex-end}.wp-block-navigation.items-justified-right.is-vertical{--navigation-layout-align:flex-end}.wp-block-navigation.items-justified-space-between{--navigation-layout-justification-setting:space-between;--navigation-layout-justify:space-between}.wp-block-navigation .has-child .wp-block-navigation__submenu-container{align-items:normal;background-color:inherit;color:inherit;display:flex;flex-direction:column;opacity:0;position:absolute;z-index:2}@media not (prefers-reduced-motion){.wp-block-navigation .has-child .wp-block-navigation__submenu-container{transition:opacity .1s linear}}.wp-block-navigation .has-child .wp-block-navigation__submenu-container{height:0;overflow:hidden;visibility:hidden;width:0}.wp-block-navigation .has-child .wp-block-navigation__submenu-container>.wp-block-navigation-item>.wp-block-navigation-item__content{display:flex;flex-grow:1;padding:.5em 1em}.wp-block-navigation .has-child .wp-block-navigation__submenu-container>.wp-block-navigation-item>.wp-block-navigation-item__content .wp-block-navigation__submenu-icon{margin-left:auto;margin-right:0}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation-item__content{margin:0}.wp-block-navigation .has-child .wp-block-navigation__submenu-container{left:-1px;top:100%}@media (min-width:782px){.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:100%;top:-1px}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container:before{background:#0000;content:"";display:block;height:100%;position:absolute;right:100%;width:.5em}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-icon{margin-right:.25em}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-icon svg{transform:rotate(-90deg)}}.wp-block-navigation .has-child .wp-block-navigation-submenu__toggle[aria-expanded=true]~.wp-block-navigation__submenu-container,.wp-block-navigation .has-child:not(.open-on-click):hover>.wp-block-navigation__submenu-container,.wp-block-navigation .has-child:not(.open-on-click):not(.open-on-hover-click):focus-within>.wp-block-navigation__submenu-container{height:auto;
52min-width:200px;opacity:1;overflow:visible;visibility:visible;width:auto}.wp-block-navigation.has-background .has-child .wp-block-navigation__submenu-container{left:0;top:100%}@media (min-width:782px){.wp-block-navigation.has-background .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:100%;top:0}}.wp-block-navigation-submenu{display:flex;position:relative}.wp-block-navigation-submenu .wp-block-navigation__submenu-icon svg{stroke:currentColor}button.wp-block-navigation-item__content{background-color:initial;border:none;color:currentColor;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;text-align:left;text-transform:inherit}.wp-block-navigation-submenu__toggle{cursor:pointer}.wp-block-navigation-submenu__toggle[aria-expanded=true]+.wp-block-navigation__submenu-icon>svg,.wp-block-navigation-submenu__toggle[aria-expanded=true]>svg{transform:rotate(180deg)}.wp-block-navigation-item.open-on-click .wp-block-navigation-submenu__toggle{padding-left:0;padding-right:.85em}.wp-block-navigation-item.open-on-click .wp-block-navigation-submenu__toggle+.wp-block-navigation__submenu-icon{margin-left:-.6em;pointer-events:none}.wp-block-navigation-item.open-on-click button.wp-block-navigation-item__content:not(.wp-block-navigation-submenu__toggle){padding:0}.wp-block-navigation .wp-block-page-list,.wp-block-navigation__container,.wp-block-navigation__responsive-close,.wp-block-navigation__responsive-container,.wp-block-navigation__responsive-container-content,.wp-block-navigation__responsive-dialog{gap:inherit}:where(.wp-block-navigation.has-background .wp-block-navigation-item a:not(.wp-element-button)),:where(.wp-block-navigation.has-background .wp-block-navigation-submenu a:not(.wp-element-button)){padding:.5em 1em}:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item a:not(.wp-element-button)),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-submenu a:not(.wp-element-button)),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-submenu button.wp-block-navigation-item__content),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-pages-list__item button.wp-block-navigation-item__content){padding:.5em 1em}.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container{left:auto;right:0}.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:-1px;right:-1px}@media (min-width:782px){.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:auto;right:100%}}.wp-block-navigation:not(.has-background) .wp-block-navigation__submenu-container{background-color:#fff;border:1px solid #00000026}.wp-block-navigation.has-background .wp-block-navigation__submenu-container{background-color:inherit}.wp-block-navigation:not(.has-text-color) .wp-block-navigation__submenu-container{c
52olor:#000}.wp-block-navigation__container{align-items:var(--navigation-layout-align,initial);display:flex;flex-direction:var(--navigation-layout-direction,initial);flex-wrap:var(--navigation-layout-wrap,wrap);justify-content:var(--navigation-layout-justify,initial);list-style:none;margin:0;padding-left:0}.wp-block-navigation__container .is-responsive{display:none}.wp-block-navigation__container:only-child,.wp-block-page-list:only-child{flex-grow:1}@keyframes overlay-menu__fade-in-animation{0%{opacity:0;transform:translateY(.5em)}to{opacity:1;transform:translateY(0)}}.wp-block-navigation__responsive-container{bottom:0;display:none;left:0;position:fixed;right:0;top:0}.wp-block-navigation__responsive-container :where(.wp-block-navigation-item a){color:inherit}.wp-block-navigation__responsive-container .wp-block-navigation__responsive-container-content{align-items:var(--navigation-layout-align,initial);display:flex;flex-direction:var(--navigation-layout-direction,initial);flex-wrap:var(--navigation-layout-wrap,wrap);justify-content:var(--navigation-layout-justify,initial)}.wp-block-navigation__responsive-container:not(.is-menu-open.is-menu-open){background-color:inherit!important;color:inherit!important}.wp-block-navigation__responsive-container.is-menu-open{background-color:inherit;display:flex;flex-direction:column}@media not (prefers-reduced-motion){.wp-block-navigation__responsive-container.is-menu-open{animation:overlay-menu__fade-in-animation .1s ease-out;animation-fill-mode:forwards}}.wp-block-navigation__responsive-container.is-menu-open{overflow:auto;padding:clamp(1rem,var(--wp--style--root--padding-top),20rem) clamp(1rem,var(--wp--style--root--padding-right),20rem) clamp(1rem,var(--wp--style--root--padding-bottom),20rem) clamp(1rem,var(--wp--style--root--padding-left),20rem);z-index:100000}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content{align-items:var(--navigation-layout-justification-setting,inherit);display:flex;flex-direction:column;flex-wrap:nowrap;overflow:visible;
52padding-top:calc(2rem + 24px)}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-page-list{justify-content:flex-start}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-icon{display:none}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .has-child .wp-block-navigation__submenu-container{border:none;height:auto;min-width:200px;opacity:1;overflow:initial;padding-left:2rem;padding-right:2rem;position:static;visibility:visible;width:auto}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container{gap:inherit}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container{padding-top:var(--wp--style--block-gap,2em)}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item__content{padding:0}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-page-list{align-items:var(--navigation-layout-justification-setting,initial);display:flex;flex-direction:column}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item .wp-block-navigation__submenu-container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-page-list{background:#0000!important;color:inherit!important}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container{left:auto;right:auto}@media (min-width:600px){.wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open){background-color:inherit;display:block;position:relative;width:100%;z-index:auto}.wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) .wp-block-navigation__responsive-container-close{display:none}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container{left:0}}.wp-block-navigation:not(.has-background) .wp-block-navigation__responsive-container.is-menu-open{background-color:#fff}.wp-block-navigation:not(.has-text-color) .wp-block-navigation__responsive-container.is-menu-open{color:#000}.wp-block-navigation__toggle_button_label{font-size:1rem;font-weight:700}.wp-block-navigation__responsive-container-close,.wp-block-navigation__responsive-container-open{background:#0000;border:none;color:currentColor;cursor:pointer;margin:0;padding:0;text-transform:inherit;vertical-align:middle}.wp-block-navigation__responsive-container-close svg,.wp-block-navigation__responsive-container-open svg{fill:currentColor;display:block;height:24px;pointer-events:none;width:24px}.wp-block-navigation__responsive-container-open{display:flex}.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open{font-family:inherit;font-size:inherit;font-weight:inherit}@media (min-width:600px){.wp-block-navigation__responsive-container-open:not(.always-shown){display:none}}.wp-block-navigation__responsive-container-close{position:absolute;right:0;top:0;z-index:2}.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close{font-family:inherit;font-size:inherit;font-weight:inherit}.wp-block-navigation__responsive-close{width:100%}.has-modal-open .wp-block-navigation__responsive-close{margin-left:auto;margin-right:auto;max-width:var(--wp--style--global--wide-size,100%)}.wp-block-navigation__responsive-close:focus{outline:none}.is-menu-open .wp-block-navigation__responsive-close,.is-menu-open .wp-block-navigation__responsive-container-content,.is-menu-open .wp-block-navigation__responsive-dialog{box-sizing:border-box}.wp-block-navigation__responsive-dialog{position:relative}.has-modal-open .admin-bar .is-menu-open .wp-block-navigation__responsive-dialog{margin-top:46px}@media (min-width:782px){.has-modal-open .admin-bar .is-menu-open .wp-block-navigation__responsive-dialog{margin-top:32px}}html.has-modal-open{overflow:hidden}
53/*# sourceURL=https://www.deadprogrammer.com/wp-includes/blocks/navigation/style.min.css */
54</style>
55<style id='wp-block-group-inline-css'>
56.wp-block-group{box-sizing:border-box}:where(.wp-block-group.wp-block-group-is-layout-constrained){position:relative}
57/*# sourceURL=https://www.deadprogrammer.com/wp-includes/blocks/group/style.min.css */
58</style>
59<style id='wp-block-heading-inline-css'>
60h1:where(.wp-block-heading).has-background,h2:where(.wp-block-heading).has-background,h3:where(.wp-block-heading).has-background,h4:where(.wp-block-heading).has-background,h5:where(.wp-block-heading).has-background,h6:where(.wp-block-heading).has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg}
61/*# sourceURL=https://www.deadprogrammer.com/wp-includes/blocks/heading/style.min.css */
62</style>
63<style id='wp-block-post-title-inline-css'>
64.wp-block-post-title{box-sizing:border-box;word-break:break-word}.wp-block-post-title :where(a){display:inline-block;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;text-decoration:inherit}
65/*# sourceURL=https://www.deadprogrammer.com/wp-includes/blocks/post-title/style.min.css */
66</style>
67<style id='wp-block-paragraph-inline-css'>
68.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg}
69/*# sourceURL=https://www.deadprogrammer.com/wp-includes/blocks/paragraph/style.min.css */
70</style>
71<style id='wp-block-list-inline-css'>
72ol,ul{box-sizing:border-box}:root :where(.wp-block-list.has-background){padding:1.25em 2.375em}
73
74				ul.is-style-checkmark-list {
75					list-style-type: "\2713";
76				}
77
78				ul.is-style-checkmark-list li {
79					padding-inline-start: 1ch;
80				}
81/*# sourceURL=wp-block-list-inline-css */
82</style>
83<style id='wp-block-embed-inline-css'>
84.wp-block-embed.alignleft,.wp-block-embed.alignright,.wp-block[data-align=left]>[data-type="core/embed"],.wp-block[data-align=right]>[data-type="core/embed"]{max-width:360px;width:100%}.wp-block-embed.alignleft .wp-block-embed__wrapper,.wp-block-embed.alignright .wp-block-embed__wrapper,.wp-block[data-align=left]>[data-type="core/embed"] .wp-block-embed__wrapper,.wp-block[data-align=right]>[data-type="core/embed"] .wp-block-embed__wrapper{min-width:280px}.wp-block-cover .wp-block-embed{min-height:240px;min-width:320px}.wp-block-embed{overflow-wrap:break-word}.wp-block-embed :where(figcaption){margin-bottom:1em;margin-top:.5em}.wp-block-embed iframe{max-width:100%}.wp-block-embed__wrapper{position:relative}.wp-embed-responsive .wp-has-aspect-ratio .wp-block-embed__wrapper:before{content:"";display:block;padding-top:50%}.wp-embed-responsive .wp-has-aspect-ratio iframe{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.wp-embed-responsive .wp-embed-aspect-21-9 .wp-block-embed__wrapper:before{padding-top:42.85%}.wp-embed-responsive .wp-embed-aspect-18-9 .wp-block-embed__wrapper:before{padding-top:50%}.wp-embed-responsive .wp-embed-aspect-16-9 .wp-block-embed__wrapper:before{padding-top:56.25%}.wp-embed-responsive .wp-embed-aspect-4-3 .wp-block-embed__wrapper:before{padding-top:75%}.wp-embed-responsive .wp-embed-aspect-1-1 .wp-block-embed__wrapper:before{padding-top:100%}.wp-embed-responsive .wp-embed-aspect-9-16 .wp-block-embed__wrapper:before{padding-top:177.77%}.wp-embed-responsive .wp-embed-aspect-1-2 .wp-block-embed__wrapper:before{padding-top:200%}
85/*# sourceURL=https://www.deadprogrammer.com/wp-includes/blocks/embed/style.min.css */
86</style>
87<style id='wp-block-image-inline-css'>
88.wp-block-image>a,.wp-block-image>figure>a{display:inline-block}.wp-block-image img{box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom}@media not (prefers-reduced-motion){.wp-block-image img.hide{visibility:hidden}.wp-block-image img.show{animation:show-content-image .4s}}.wp-block-image[style*=border-radius] img,.wp-block-image[style*=border-radius]>a{border-radius:inherit}.wp-block-image.has-custom-border img{box-sizing:border-box}.wp-block-image.aligncenter{text-align:center}.wp-block-image.alignfull>a,.wp-block-image.alignwide>a{width:100%}.wp-block-image.alignfull img,.wp-block-image.alignwide img{height:auto;width:100%}.wp-block-image .aligncenter,.wp-block-image .alignleft,.wp-block-image .alignright,.wp-block-image.aligncenter,.wp-block-image.alignleft,.wp-block-image.alignright{display:table}.wp-block-image .aligncenter>figcaption,.wp-block-image .alignleft>figcaption,.wp-block-image .alignright>figcaption,.wp-block-image.aligncenter>figcaption,.wp-block-image.alignleft>figcaption,.wp-block-image.alignright>figcaption{caption-side:bottom;display:table-caption}.wp-block-image .alignleft{float:left;margin:.5em 1em .5em 0}.wp-block-image .alignright{float:right;margin:.5em 0 .5em 1em}.wp-block-image .aligncenter{margin-left:auto;margin-right:auto}.wp-block-image :where(figcaption){margin-bottom:1em;margin-top:.5em}.wp-block-image.is-style-circle-mask img{border-radius:9999px}@supports ((-webkit-mask-image:none) or (mask-image:none)) or (-webkit-mask-image:none){.wp-block-image.is-style-circle-mask img{border-radius:0;-webkit-mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-mode:alpha;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}}:root :where(.wp-block-image.is-style-rounded img,.wp-block-image .is-style-rounded img){border-radius:9999px}.wp-block-image figure{margin:0}.wp-lightbox-container{display:flex;flex-direction:column;position:relative}.wp-lightbox-container img{cursor:zoom-in}.wp-lightbox-container img:hover+button{opacity:1}.wp-lightbox-container button{align-items:center;backdrop-filter:blur(16px) saturate(180%);background-color:#5a5a5a40;border:none;border-radius:4px;cursor:zoom-in;display:flex;height:20px;justify-content:center;opacity:0;padding:0;position:absolute;right:16px;text-align:center;top:16px;width:20px;z-index:100}@media not (prefers-reduced-motion){.wp-lightbox-container button{transition:opacity .2s ease}}.wp-lightbox-container button:focus-visible{outline:3px auto #5a5a5a40;outline:3px auto -webkit-focus-ring-color;outline-offset:3px}.wp-lightbox-container button:hover{cursor:pointer;opacity:1}.wp-lightbox-container button:focus{opacity:1}.wp-lightbox-container button:focus,.wp-lightbox-container button:hover,.wp-lightbox-container button:not(:hover):not(:active):not(.has-background){background-color:#5a5a5a40;border:none}.wp-lightbox-overlay{box-sizing:border-box;
88cursor:zoom-out;height:100vh;left:0;overflow:hidden;position:fixed;top:0;visibility:hidden;width:100%;z-index:100000}.wp-lightbox-overlay .close-button{align-items:center;cursor:pointer;display:flex;justify-content:center;min-height:40px;min-width:40px;padding:0;position:absolute;right:calc(env(safe-area-inset-right) + 16px);top:calc(env(safe-area-inset-top) + 16px);z-index:5000000}.wp-lightbox-overlay .close-button:focus,.wp-lightbox-overlay .close-button:hover,.wp-lightbox-overlay .close-button:not(:hover):not(:active):not(.has-background){background:none;border:none}.wp-lightbox-overlay .lightbox-image-container{height:var(--wp--lightbox-container-height);left:50%;overflow:hidden;position:absolute;top:50%;transform:translate(-50%,-50%);transform-origin:top left;width:var(--wp--lightbox-container-width);z-index:9999999999}.wp-lightbox-overlay .wp-block-image{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;margin:0;position:relative;transform-origin:0 0;width:100%;z-index:3000000}.wp-lightbox-overlay .wp-block-image img{height:var(--wp--lightbox-image-height);min-height:var(--wp--lightbox-image-height);min-width:var(--wp--lightbox-image-width);width:var(--wp--lightbox-image-width)}.wp-lightbox-overlay .wp-block-image figcaption{display:none}.wp-lightbox-overlay button{background:none;border:none}.wp-lightbox-overlay .scrim{background-color:#fff;height:100%;opacity:.9;position:absolute;width:100%;z-index:2000000}.wp-lightbox-overlay.active{visibility:visible}@media not (prefers-reduced-motion){.wp-lightbox-overlay.active{animation:turn-on-visibility .25s both}.wp-lightbox-overlay.active img{animation:turn-on-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active){animation:turn-off-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active) img{animation:turn-off-visibility .25s both}.wp-lightbox-overlay.zoom.active{animation:none;opacity:1;visibility:visible}.wp-lightbox-overlay.zoom.active .lightbox-image-container{animation:lightbox-zoom-in .4s}.wp-lightbox-overlay.zoom.active .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.active .scrim{animation:turn-on-visibility .4s forwards}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active){animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container{animation:lightbox-zoom-out .4s}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .scrim{animation:turn-off-visibility .4s forwards}}@keyframes show-content-image{0%{visibility:hidden}99%{visibility:hidden}to{visibility:visible}}@keyframes turn-on-visibility{0%{opacity:0}to{opacity:1}}@keyframes turn-off-visibility{0%{opacity:1;visibility:visible}99%{opacity:0;visibility:visible}to{opacity:0;visibility:hidden}}@keyframes lightbox-zoom-in{0%{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale))}to{transform:translate(-50%,-50%) scale(1)}}@keyframes lightbox-zoom-out{0%{transform:translate(-50%,-50%) scale(1);visibility:visible}99%{visibility:visible}to{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale));visibility:hidden}}
89/*# sourceURL=https://www.deadprogrammer.com/wp-includes/blocks/image/style.min.css */
90</style>
91<style id='wp-block-post-content-inline-css'>
92.wp-block-post-content{display:flow-root}
93/*# sourceURL=https://www.deadprogrammer.com/wp-includes/blocks/post-content/style.min.css */
94</style>
95<style id='wp-block-post-date-inline-css'>
96.wp-block-post-date{box-sizing:border-box}
97/*# sourceURL=https://www.deadprogrammer.com/wp-includes/blocks/post-date/style.min.css */
98</style>
99<style id='wp-block-quote-inline-css'>
100.wp-block-quote{box-sizing:border-box;overflow-wrap:break-word}
100.wp-block-quote.is-large:where(:not(.is-style-plain)),.wp-block-quote.is-style-large:where(:not(.is-style-plain)){margin-bottom:1em;padding:0 1em}.wp-block-quote.is-large:where(:not(.is-style-plain)) p,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) p{font-size:1.5em;font-style:italic;line-height:1.6}.wp-block-quote.is-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-large:where(:not(.is-style-plain)) footer,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) footer{font-size:1.125em;text-align:right}.wp-block-quote>cite{display:block}
101/*# sourceURL=https://www.deadprogrammer.com/wp-includes/blocks/quote/style.min.css */
102</style>
103<style id='wp-block-post-template-inline-css'>
104.wp-block-post-template{box-sizing:border-box;list-style:none;margin-bottom:0;margin-top:0;max-width:100%;padding:0}.wp-block-post-template.is-flex-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:1.25em}.wp-block-post-template.is-flex-container>li{margin:0;width:100%}@media (min-width:600px){.wp-block-post-template.is-flex-container.is-flex-container.columns-2>li{width:calc(50% - .625em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-3>li{width:calc(33.33333% - .83333em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-4>li{width:calc(25% - .9375em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-5>li{width:calc(20% - 1em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-6>li{width:calc(16.66667% - 1.04167em)}}@media (max-width:600px){.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid{grid-template-columns:1fr}}.wp-block-post-template-is-layout-constrained>li>.alignright,.wp-block-post-template-is-layout-flow>li>.alignright{float:right;margin-inline-end:0;margin-inline-start:2em}.wp-block-post-template-is-layout-constrained>li>.alignleft,.wp-block-post-template-is-layout-flow>li>.alignleft{float:left;margin-inline-end:2em;margin-inline-start:0}.wp-block-post-template-is-layout-constrained>li>.aligncenter,.wp-block-post-template-is-layout-flow>li>.aligncenter{margin-inline-end:auto;margin-inline-start:auto}
105/*# sourceURL=https://www.deadprogrammer.com/wp-includes/blocks/post-template/style.min.css */
106</style>
107<style id='wp-block-query-pagination-inline-css'>
108.wp-block-query-pagination.is-content-justification-space-between>.wp-block-query-pagination-next:last-of-type{margin-inline-start:auto}.wp-block-query-pagination.is-content-justification-space-between>.wp-block-query-pagination-previous:first-child{margin-inline-end:auto}.wp-block-query-pagination .wp-block-query-pagination-previous-arrow{display:inline-block;margin-right:1ch}.wp-block-query-pagination .wp-block-query-pagination-previous-arrow:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-query-pagination .wp-block-query-pagination-next-arrow{display:inline-block;margin-left:1ch}.wp-block-query-pagination .wp-block-query-pagination-next-arrow:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-query-pagination.aligncenter{justify-content:center}
109/*# sourceURL=https://www.deadprogrammer.com/wp-includes/blocks/query-pagination/style.min.css */
110</style>
111<style id='wp-block-spacer-inline-css'>
112.wp-block-spacer{clear:both}
113/*# sourceURL=https://www.deadprogrammer.com/wp-includes/blocks/spacer/style.min.css */
114</style>
115<style id='wp-block-library-inline-css'>
116: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}
116: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;--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)}.has-text-align-center{text-align:center}.has-text-align-left{text-align:left}.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;padding:0;position:absolute;width:1px;word-wrap: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-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([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}}
117/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */
118</style>
119<style id='global-styles-inline-css'>
120: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: #ffffff;--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--base: #FFFFFF;--wp--preset--color--contrast: #111111;--wp--preset--color--accent-1: #FFEE58;--wp--preset--color--accent-2: #F6CFF4;--wp--preset--color--accent-3: #503AA8;--wp--preset--color--accent-4: #686868;--wp--preset--color--accent-5: #FBFAF3;--wp--preset--color--accent-6: color-mix(in srgb, currentColor 20%, transparent);--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,
1200) 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: 0.875rem;--wp--preset--font-size--medium: clamp(1rem, 1rem + ((1vw - 0.2rem) * 0.196), 1.125rem);--wp--preset--font-size--large: clamp(1.125rem, 1.125rem + ((1vw - 0.2rem) * 0.392), 1.375rem);--wp--preset--font-size--x-large: clamp(1.75rem, 1.75rem + ((1vw - 0.2rem) * 0.392), 2rem);--wp--preset--font-size--xx-large: clamp(2.15rem, 2.15rem + ((1vw - 0.2rem) * 1.333), 3rem);--wp--preset--font-family--manrope: Manrope, sans-serif;--wp--preset--font-family--fira-code: "Fira Code", monospace;--wp--preset--spacing--20: 10px;--wp--preset--spacing--30: 20px;--wp--preset--spacing--40: 30px;--wp--preset--spacing--50: clamp(30px, 5vw, 50px);--wp--preset--spacing--60: clamp(30px, 7vw, 70px);--wp--preset--spacing--70: clamp(50px, 7vw, 90px);--wp--preset--spacing--80: clamp(70px, 10vw, 140px);--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);}:root { --wp--style--global--content-size: 645px;--wp--style--global--wide-size: 1340px; }:where(body) { margin: 0; }.wp-site-blocks { padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom); }.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); }.has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) { padding-right: 0; padding-left: 0; }.has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) > .alignfull { margin-left: 0; margin-right: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 1.2rem; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }:root { --wp--style--block-gap: 1.2rem; }:root :where(.is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.is-layout-flow) > *{margin-block-start: 1.2rem;margin-block-end: 0;}:root :where(.is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.is-layout-constrained) > *{margin-block-start: 1.2rem;margin-block-end: 0;}:root :where(.is-layout-flex){gap: 1.2rem;}:root :where(.is-layout-grid){gap: 1.2rem;}.is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained >
120 :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}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{background-color: var(--wp--preset--color--base);color: var(--wp--preset--color--contrast);font-family: var(--wp--preset--font-family--manrope);font-size: var(--wp--preset--font-size--large);font-weight: 300;letter-spacing: -0.1px;line-height: 1.4;--wp--style--root--padding-top: 0px;--wp--style--root--padding-right: var(--wp--preset--spacing--50);--wp--style--root--padding-bottom: 0px;--wp--style--root--padding-left: var(--wp--preset--spacing--50);}a:where(:not(.wp-element-button)){color: currentColor;text-decoration: underline;}:root :where(a:where(:not(.wp-element-button)):hover){text-decoration: none;}h1, h2, h3, h4, h5, h6{font-weight: 400;letter-spacing: -0.1px;line-height: 1.125;}h1{font-size: var(--wp--preset--font-size--xx-large);}h2{font-size: var(--wp--preset--font-size--x-large);}h3{font-size: var(--wp--preset--font-size--large);}h4{font-size: var(--wp--preset--font-size--medium);}h5{font-size: var(--wp--preset--font-size--small);letter-spacing: 0.5px;}h6{font-size: var(--wp--preset--font-size--small);font-weight: 700;letter-spacing: 1.4px;text-transform: uppercase;}:root :where(.wp-element-button, .wp-block-button__link){background-color: var(--wp--preset--color--contrast);border-width: 0;color: var(--wp--preset--color--base);font-family: inherit;font-size: var(--wp--preset--font-size--medium);font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: 1rem;padding-right: 2.25rem;padding-bottom: 1rem;padding-left: 2.25rem;text-decoration: none;text-transform: inherit;}:root :where(.wp-element-button:hover, .wp-block-button__link:hover){background-color: color-mix(in srgb, var(--wp--preset--color--contrast) 85%, transparent);border-color: transparent;color: var(--wp--preset--color--base);}:root :where(.wp-element-button:focus, .wp-block-button__link:focus){outline-color: var(--wp--preset--color--accent-4);outline-offset: 2px;}:root :where(.wp-element-caption, .wp-block-audio figcaption, .wp-block-embed figcaption, .wp-block-gallery figcaption, .wp-block-image figcaption, .wp-block-table figcaption, .wp-block-video figcaption){font-size: var(--wp--preset--font-size--small);line-height: 1.4;}.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-base-color{color: var(--wp--preset--color--base) !important;}.has-contrast-color{color: var(--wp--preset--color--contrast) !important;}.has-accent-1-color{color: var(--wp--preset--color--accent-1) !important;}.has-accent-2-color{color: var(--wp--preset--color--accent-2) !important;}.has-accent-3-color{color: var(--wp--preset--color--accent-3) !important;}.has-accent-4-color{color: var(--wp--preset--color--accent-4) !important;}.has-accent-5-color{color: var(--wp--preset--color--accent-5) !important;}.has-accent-6-color{color: var(--wp--preset--color--accent-6) !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-base-background-color{background-color: var(--wp--preset--color--base) !important;}.has-contrast-background-color{background-color: var(--wp--preset--color--contrast) !important;}.has-accent-1-background-color{background-color: var(--wp--preset--color--accent-1) !important;}.has-accent-2-background-color{background-color: var(--wp--preset--color--accent-2) !important;}.has-accent-3-background-color{background-color: var(--wp--preset--color--accent-3) !important;}.has-accent-4-background-color{background-color: var(--wp--preset--color--accent-4) !important;}.has-accent-5-background-color{background-color: var(--wp--preset--color--accent-5) !important;}.has-accent-6-background-color{background-color: var(--wp--preset--color--accent-6) !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-base-border-color{border-color: var(--wp--preset--color--base) !important;}.has-contrast-border-color{border-color: var(--wp--preset--color--contrast) !important;}.has-accent-1-border-color{border-color: var(--wp--preset--color--accent-1) !important;}.has-accent-2-border-color{border-color: var(--wp--preset--color--accent-2) !important;}.has-accent-3-border-color{border-color: var(--wp--preset--color--accent-3) !important;}.has-accent-4-border-color{border-color: var(--wp--preset--color--accent-4) !important;}.has-accent-5-border-color{border-color: var(--wp--preset--color--accent-5) !important;}.has-accent-6-border-color{border-color: var(--wp--preset--color--accent-6) !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;}
120.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-xx-large-font-size{font-size: var(--wp--preset--font-size--xx-large) !important;}.has-manrope-font-family{font-family: var(--wp--preset--font-family--manrope) !important;}.has-fira-code-font-family{font-family: var(--wp--preset--font-family--fira-code) !important;}
121:root :where(.wp-block-post-date){color: var(--wp--preset--color--accent-4);font-size: var(--wp--preset--font-size--small);}
122:root :where(.wp-block-post-date a:where(:not(.wp-element-button))){color: var(--wp--preset--color--accent-4);text-decoration: none;}
123:root :where(.wp-block-post-date a:where(:not(.wp-element-button)):hover){text-decoration: underline;}
124:root :where(.wp-block-post-title a:where(:not(.wp-element-button))){text-decoration: none;}
125:root :where(.wp-block-post-title a:where(:not(.wp-element-button)):hover){text-decoration: underline;}
126:root :where(.wp-block-quote){border-color: currentColor;border-width: 0 0 0 2px;border-style: solid;font-size: var(--wp--preset--font-size--large);font-weight: 300;margin-right: 0;margin-left: 0;padding-top: var(--wp--preset--spacing--30);padding-right: var(--wp--preset--spacing--40);padding-bottom: var(--wp--preset--spacing--30);padding-left: var(--wp--preset--spacing--40);}:root :where(.wp-block-quote-is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.wp-block-quote-is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.wp-block-quote-is-layout-flow) > *{margin-block-start: var(--wp--preset--spacing--30);margin-block-end: 0;}:root :where(.wp-block-quote-is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.wp-block-quote-is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.wp-block-quote-is-layout-constrained) > *{margin-block-start: var(--wp--preset--spacing--30);margin-block-end: 0;}:root :where(.wp-block-quote-is-layout-flex){gap: var(--wp--preset--spacing--30);}:root :where(.wp-block-quote-is-layout-grid){gap: var(--wp--preset--spacing--30);}:root :where(.wp-block-quote.has-text-align-right ){border-width: 0 2px 0 0;}:root :where(.wp-block-quote.has-text-align-center ){border-width: 0;border-inline: 0; padding-inline: 0;}
127:root :where(.wp-block-quote cite){font-size: var(--wp--preset--font-size--small);font-style: normal;font-weight: 300;}:root :where(.wp-block-quote cite sub){font-size: 0.65em}
128:root :where(.wp-block-query-pagination){font-size: var(--wp--preset--font-size--medium);font-weight: 500;}
129:root :where(.wp-block-site-title){font-weight: 700;letter-spacing: -.5px;}
130:root :where(.wp-block-site-title a:where(:not(.wp-element-button))){text-decoration: none;}
131:root :where(.wp-block-site-title a:where(:not(.wp-element-button)):hover){text-decoration: underline;}
132:root :where(.wp-block-navigation){font-size: var(--wp--preset--font-size--medium);}
133:root :where(.wp-block-navigation a:where(:not(.wp-element-button))){text-decoration: none;}
134:root :where(.wp-block-navigation a:where(:not(.wp-element-button)):hover){text-decoration: underline;}
135:root :where(.wp-block-list li){margin-top: 0.5rem;}
136/*# sourceURL=global-styles-inline-css */
137</style>
138<style id='core-block-supports-inline-css'>
139.wp-container-core-navigation-is-layout-fc306653{justify-content:flex-end;}.wp-container-core-group-is-layout-f4c28e8b{flex-wrap:nowrap;gap:var(--wp--preset--spacing--10);justify-content:flex-end;}.wp-container-core-group-is-layout-8165f36a{flex-wrap:nowrap;justify-content:space-between;}.wp-container-core-query-pagination-is-layout-b2891da8{justify-content:space-between;}
140/*# sourceURL=core-block-supports-inline-css */
141</style>
142<style id='wp-block-template-skip-link-inline-css'>
143
144		.skip-link.screen-reader-text {
145			border: 0;
146			clip-path: inset(50%);
147			height: 1px;
148			margin: -1px;
149			overflow: hidden;
150			padding: 0;
151			position: absolute !important;
152			width: 1px;
153			word-wrap: normal !important;
154		}
155
156		.skip-link.screen-reader-text:focus {
157			background-color: #eee;
158			clip-path: none;
159			color: #444;
160			display: block;
161			font-size: 1em;
162			height: auto;
163			left: 5px;
164			line-height: normal;
165			padding: 15px 23px 14px;
166			text-decoration: none;
167			top: 5px;
168			width: auto;
169			z-index: 100000;
170		}
171/*# sourceURL=wp-block-template-skip-link-inline-css */
172</style>
173<style id='twentytwentyfive-style-inline-css'>
174a{text-decoration-thickness:1px!important;text-underline-offset:.1em}:where(.wp-site-blocks :focus){outline-style:solid;outline-width:2px}.wp-block-navigation .wp-block-navigation-submenu .wp-block-navigation-item:not(:last-child){margin-bottom:3px}.wp-block-navigation .wp-block-navigation-item .wp-block-navigation-item__content{outline-offset:4px}.wp-block-navigation .wp-block-navigation-item ul.wp-block-navigation__submenu-container .wp-block-navigation-item__content{outline-offset:0}blockquote,caption,figcaption,h1,h2,h3,h4,h5,h6,p{text-wrap:pretty}.more-link{display:block}:where(pre){overflow-x:auto}
175/*# sourceURL=https://www.deadprogrammer.com/wp-content/themes/twentytwentyfive/style.min.css */
176</style>
177<style id="dp-house-ad-css">.dp-house-ad-rail{width:100%;padding:0 1.25rem;box-sizing:border-box}.dp-house-ad{position:relative;overflow:hidden;display:flex;align-items:center;gap:1rem;max-width:800px;margin:2rem auto;padding:1rem 1.2rem;border-radius:10px;background:linear-gradient(160deg,rgba(76,29,149,.09),rgba(194,65,12,.07));border:1px solid rgba(124,58,237,.35);box-shadow:0 6px 22px rgba(76,29,149,.16)}.dp-house-ad::before{content:'';position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(rgba(124,58,237,.5) 1px,transparent 1px),radial-gradient(rgba(194,65,12,.4) 1px,transparent 1px);background-size:34px 34px,22px 22px;background-position:0 0,11px 17px;opacity:.35}.dp-house-ad-img{position:relative;width:132px;height:99px;object-fit:cover;border-radius:8px;flex:0 0 auto;box-shadow:0 2px 6px rgba(0,0,0,.3)}.dp-house-ad-body{position:relative;flex:1 1 auto;min-width:0;font-size:1rem;line-height:1.5}.dp-house-ad-label{display:block;font-family:ui-monospace,'SF Mono',Menlo,Consolas,monospace;font-size:.72rem;font-weight:600;letter-spacing:.02em;color:#7c3aed;margin:0 0 .4rem;text-transform:lowercase}.dp-house-ad-label::before{content:'// '}.dp-house-ad-cta{position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:.4rem;margin-top:.55rem;padding:.5rem 1.05rem;border-radius:999px;color:#fff;font-weight:600;font-size:.88rem;text-decoration:none;background:linear-gradient(135deg,#4c1d95,#c2410c);animation:dp-house-ad-pulse 2.6s ease-in-out infinite;transition:transform .15s}.dp-house-ad-cta:hover{transform:translateY(-1px) scale(1.04)}.dp-house-ad-cta::after{content:'';position:absolute;inset:0;background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.6) 50%,transparent 70%);transform:translateX(-120%);animation:dp-house-ad-shine 3.2s ease-in-out infinite}.dp-house-ad-cta-arrow{display:inline-block;transition:transform .2s}.dp-house-ad-cta:hover .dp-house-ad-cta-arrow{transform:translateX(3px)}@keyframes dp-house-ad-shine{0%{transform:translateX(-120%)}35%{transform:translateX(220%)}100%{transform:translateX(220%)}}@keyframes dp-house-ad-pulse{0%,100%{box-shadow:0 2px 8px rgba(76,29,149,.4)}50%{box-shadow:0 4px 20px rgba(194,65,12,.65)}}@media(prefers-reduced-motion:reduce){.dp-house-ad-cta::after,.dp-h
177ouse-ad-cta{animation:none}}@media(max-width:520px){.dp-house-ad{flex-direction:column;align-items:flex-start}.dp-house-ad-img{width:100%;height:auto;max-height:180px}}@media(prefers-color-scheme:dark){.dp-house-ad{background:linear-gradient(160deg,rgba(124,58,237,.16),rgba(234,88,12,.12));border-color:rgba(167,139,250,.4)}.dp-house-ad-label{color:#a78bfa}}</style>
178<meta name="generator" content="Site Kit by Google 1.174.0" />	<style>img#wpstats{display:none}</style>
179		
179<script type="importmap" id="wp-importmap">
180{"imports":{"@wordpress/interactivity":"https://www.deadprogrammer.com/wp-includes/js/dist/script-modules/interactivity/index.min.js?ver=66c613f68580994bb00a"}}
181</script>
181
182<link rel="modulepreload" href="https://www.deadprogrammer.com/wp-includes/js/dist/script-modules/interactivity/index.min.js?ver=66c613f68580994bb00a" id="@wordpress/interactivity-js-modulepreload" fetchpriority="low">
183
184<!-- Google AdSense meta tags added by Site Kit -->
185<meta name="google-adsense-platform-account" content="ca-host-pub-2644536267352236">
186<meta name="google-adsense-platform-domain" content="sitekit.withgoogle.com">
187<!-- End Google AdSense meta tags added by Site Kit -->
188
189<!-- Google AdSense snippet added by Site Kit -->
190<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3138446715164040&amp;host=ca-host-pub-2644536267352236" crossorigin="anonymous"></script>
190
191
192<!-- End Google AdSense snippet added by Site Kit -->
193<style class='wp-fonts-local'>
194@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:fallback;src:url('https://www.deadprogrammer.com/wp-content/themes/twentytwentyfive/assets/fonts/manrope/Manrope-VariableFont_wght.woff2') format('woff2');}
195@font-face{font-family:"Fira Code";font-style:normal;font-weight:300 700;font-display:fallback;src:url('https://www.deadprogrammer.com/wp-content/themes/twentytwentyfive/assets/fonts/fira-code/FiraCode-VariableFont_wght.woff2') format('woff2');}
196</style>
197</head>
198
199<body class="home blog wp-embed-responsive wp-theme-twentytwentyfive">
200<div class="dp-house-ad-rail"><div class="dp-house-ad" data-placement="header"><img class="dp-house-ad-img" src="https://www.deadprogrammer.com/wp-content/mu-plugins/assets/mars2-soviet-stamp.jpg" width="520" height="389" loading="lazy" decoding="async" alt="1972 Soviet postage stamp commemorating the Mars 2 probe"><div class="dp-house-ad-body"><p class="dp-house-ad-label">worth a read</p><p><strong>Mars For The Rest of Us</strong> &mdash; a weekly-or-more deep dive on the technical side of Mars exploration: rocket propulsion, microbiology, mission architecture, and everything in between. Written by Maciej Ceglowski.<
200/p><a class="dp-house-ad-cta" href="https://mceglowski.substack.com/?utm_source=deadprogrammer.com&#038;utm_medium=house_ad&#038;utm_campaign=sitewide" rel="nofollow noopener" target="_blank">Read it on Substack <span class="dp-house-ad-cta-arrow">&rarr;</span></a></div></div></div>
201<div class="wp-site-blocks"><header class="wp-block-template-part">
202<div class="wp-block-group alignfull is-layout-flow wp-block-group-is-layout-flow">
203	
204	<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
205		
206		<div class="wp-block-group alignwide is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-8165f36a wp-block-group-is-layout-flex" style="padding-top:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30)">
207			<p class="wp-block-site-title"><a href="https://www.deadprogrammer.com" target="_self" rel="home" aria-current="page">Dead Programmer&#039;s Cafe</a></p>
208			
209			<div class="wp-block-group is-content-justification-right is-nowrap is-layout-flex wp-container-core-group-is-layout-f4c28e8b wp-block-group-is-layout-flex">
210				<nav class="is-responsive items-justified-right wp-block-navigation is-content-justification-right is-layout-flex wp-container-core-navigation-is-layout-fc306653 wp-block-navigation-is-layout-flex" 
211		 data-wp-interactive="core/navigation" data-wp-context='{"overlayOpenedBy":{"click":false,"hover":false,"focus":false},"type":"overlay","roleAttribute":"","ariaLabel":"Menu"}'><button aria-haspopup="dialog" aria-label="Open menu" class="wp-block-navigation__responsive-container-open" 
212				data-wp-on--click="actions.openMenuOnClick"
213				data-wp-on--keydown="actions.handleMenuKeydown"
214			><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M4 7.5h16v1.5H4z"></path><path d="M4 15h16v1.5H4z"></path></svg></button>
215				<div class="wp-block-navigation__responsive-container  has-text-color has-contrast-color has-background has-base-background-color"  id="modal-1" 
216				data-wp-class--has-modal-open="state.isMenuOpen"
217				data-wp-class--is-menu-open="state.isMenuOpen"
218				data-wp-watch="callbacks.initMenu"
219				data-wp-on--keydown="actions.handleMenuKeydown"
220				data-wp-on--focusout="actions.handleMenuFocusout"
221				tabindex="-1"
222			>
223					<div class="wp-block-navigation__responsive-close" tabindex="-1">
224						<div class="wp-block-navigation__responsive-dialog" 
225				data-wp-bind--aria-modal="state.ariaModal"
226				data-wp-bind--aria-label="state.ariaLabel"
227				data-wp-bind--role="state.roleAttribute"
228			>
229							<button aria-label="Close menu" class="wp-block-navigation__responsive-container-close" 
230				data-wp-on--click="actions.closeMenuOnClick"
231			><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" focusable="false"><path d="m13.06 12 6.47-6.47-1.06-1.06L12 10.94 5.53 4.47 4.47 5.53 10.94 12l-6.47 6.47 1.06 1.06L12 13.06l6.47 6.47 1.06-1.06L13.06 12Z"></path></svg></button>
232							<div class="wp-block-navigation__responsive-container-content" 
233				data-wp-watch="callbacks.focusFirstElement"
234			 id="modal-1-content">
235								<ul class="wp-block-navigation__container is-responsive items-justified-right wp-block-navigation"><li class=" wp-block-navigation-item  menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home wp-block-navigation-link"><a class="wp-block-navigation-item__content"  href="http://www.deadprogrammer.com/" title=""><span class="wp-block-navigation-item__label">Home</span></a></li><li class=" wp-block-navigation-item  menu-item menu-item-type-post_type menu-item-object-page wp-block-navigation-link"><a class="wp-block-navigation-item__content"  href="https://www.deadprogrammer.com/about-this-site" title=""><span class="wp-block-navigation-item__label">About This Site</span></a></li><li class=" wp-block-navigation-item  menu-item menu-item-type-post_type menu-item-object-page wp-block-navigation-link"><a class="wp-block-navigation-item__content"  href="https://www.deadprogrammer.com/about-the-author" title=""><span class="wp-block-navigation-item__label">About the Author</span></a></li></ul>
236							</div>
237						</div>
238					</div>
239				</div></nav>
240			</div>
241			
242		</div>
243		
244	</div>
245	
246</div>
247
248
249</header>
250
251
252<main class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="margin-top:var(--wp--preset--spacing--60)">
253	
254<h1 class="wp-block-heading has-text-align-left">Blog</h1>
255
256
257	
258<div class="wp-block-query alignfull is-layout-flow wp-block-query-is-layout-flow">
259	<ul class="alignfull wp-block-post-template is-layout-flow wp-block-post-template-is-layout-flow"><li class="wp-block-post post-3005 post type-post status-publish format-standard hentry category-uncategorized">
260		
261		<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)">
262			
263			<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://www.deadprogrammer.com/you-should-become-a-fan-of-sumo-part-i" target="_self" >You Should Become a Fan of Sumo Part I</a></h2>
264			<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained">
265<p>Ranked by popularity, here&#8217;s a list of sports in America: </p>
266
267
268
269<ul class="wp-block-list">
270<li>Football</li>
271
272
273
274<li>Baseball</li>
275
276
277
278<li>Basketball</li>
279
280
281
282<li>Ice Hockey</li>
283
284
285
286<li>Soccer</li>
287
288
289
290<li>Tennis</li>
291
292
293
294<li>Golf</li>
295
296
297
298<li>Wrestling</li>
299
300
301
302<li>NASCAR</li>
303
304
305
306<li>Badminton</li>
307
308
309
310<li>Whining on Twitter</li>
311</ul>
312
313
314
315<p>We were promised rollerball and hunger games, but instead soccer is rising in popularity.  Boxing and chess were popular when I was a kid, but now deteriorated so much that nobody even knows who is the current world champion.</p>
316
317
318
319<p>I feel that to be watchable a sport needs to have following things:</p>
320
321
322
323<ul class="wp-block-list">
324<li>A ritualistic, meditative aspect</li>
325
326
327
328<li>Strategy</li>
329
330
331
332<li>Skill</li>
333
334
335
336<li>Violence</li>
337
338
339
340<li>Fast pace of scoring</li>
341
342
343
344<li>Drama </li>
345
346
347
348<li>Fashion</li>
349
350
351
352<li>Strong, relatable personalities</li>
353</ul>
354
355
356
357<p>All of these sports have something going for them. Football is rightly at the top of the list: it is chess that is played by giant men giving each other concussions. Baseball is highly meditative: watching overweight men scratch themselves and spit on the ground is somehow very calming. Hockey is also good because of violence and the quick pace. Basketball provides quick action with a lot of scoring. Tennis is also fast paced, with a lot of grunting and weird noises. Soccerists run around a lot, but there is no scoring. They do get injured a lot and roll on the ground, but sometimes injuries are faked. Golf is a game of incredible skill, but not much else. NASCAR has fiery explosions. Wrestling has all the drama, strong (if fake) personalities, and also explosions. Badminton does not belong on this list, it&#8217;s stupid.</p>
358
359
360
361<p>Now, let me introduce you to the world of Grand Sumo. It has e-ve-ry-thing. It is the perfect sport to follow. You should become a fan, and here&#8217;s why.</p>
362
363
364
365<p>If you have some past perceptions of what sumo is like given to you by the American media, forget them. Let&#8217;s start with some basics, which you probably know, but not exactly.</p>
366
367
368
369<p>Firstly, sumo is performed on something called a dohyo. Dohyo is a clay mound meticulously put together by artisans for every competition known as &#8220;basho&#8221;.  It is a sacred place within which lives a deity. A special snack of dried squid and sacred sake is placed in the hole in the center of the dohyo during the consecration ceremony. Above the dohyo floats a magnificent temple structure, a true marvel of engineering.</p>
370
371
372
373<p>Here is how dohyo is constructed by yobidashi (special sumo porters and announcers). It is really worth a look, the level of craftsmanship is out of this world.  My favorite part is that they traditionally use beer bottles to form the straw bales. </p>
374
375
376
377<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
378<iframe title="Making the Sumo Dohyo" width="500" height="281" src="https://www.youtube.com/embed/3C9kCScVr5k?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture;
378 web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
379</div></figure>
380
381
382
383<p>You might find that beer bottles are used in other sumo tasks, like ironing the mawashi belts. Sometimes they are involved in less <a href="https://www.thesun.co.uk/sport/4913885/sumo-wrestler-smashes-rival-with-beer-bottle-fractured-skull/">wholesome ways</a> (there is a lot of drama in the sumo world). But beer is important, because, you see, <strong>the whole thing is a giant fertility festival</strong>.</p>
384
385
386
387<p>Sumo wrestlers are amazing athletes, but they are also magical strongmen and good luck charms.  They look like giant babies in their outfits, and are often given crying babies to hold for good luck. A handshake from a sumo champion transfers powerful magical energy.</p>
388
389
390
391<figure class="wp-block-image"><img fetchpriority="high" decoding="async" width="786" height="556" src="https://www.deadprogrammer.com/wp-content/uploads/2019/07/2019-07-05_23-31-10.png" alt="" class="wp-image-3006" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/07/2019-07-05_23-31-10.png 786w, https://www.deadprogrammer.com/wp-content/uploads/2019/07/2019-07-05_23-31-10-300x212.png 300w, https://www.deadprogrammer.com/wp-content/uploads/2019/07/2019-07-05_23-31-10-768x543.png 768w" sizes="(max-width: 786px) 100vw, 786px" /></figure>
392
393
394
395<p> Unlike lazy American athletes, rikishi constantly work to keep bad luck and evil spirits out, and to ensure a good harvest. They perform an endless stream of ceremonies, that are simply hypnotic. First, there is dohyo iri, the ring entering ceremony. It is performed by all active yokozunas &#8212; the grand champions of the sport and vessels for powerful kami spirits that live in their belts. The crowd yells &#8220;yosh&#8221;, a word of encouragment meaning &#8220;all right, let&#8217;s go&#8221; that is usually uttered when somebody is about to do something difficult, when the yokozuna stamps his feet to drive out evil spirits that live in the ground.</p>
396
397
398
399<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
400<iframe title="Dohyo iri, Yokozuna Hakuho" width="500" height="375" src="https://www.youtube.com/embed/fH5hZv_t468?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
401</div></figure>
402
403
404
405<p>At the end, a specialist called a yumitori performs a bow twirling ceremony.  If those evil spirits made their way back into the ground, they will surely be gone when the yumitori will dig them out with his bow. It is my favorite part of all the demon fighting.</p>
406
407
408
409<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
410<iframe loading="lazy" title="Bow-twirling ceremony at the end of sumo" width="500" height="281" src="https://www.youtube.com/embed/GvWPnLAWBOE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
411</div></figure>
412
413
414
415<p>To make sure that the ground and aerial evil demons are properly oppressed, sumo wrestlers stomp their feet, throw salt, and clap their hands before each bout. They also sip and spit special power water and cover their mouths with special power paper.  You will feel your mind calming down as those demons run away in terror.</p>
416
417
418
419<p>The salt throwing itself is amazing: all wrestlers have different styles. Some throw a huge amount, some a very small, some have an insanely elegant throw. </p>
420
421
422
423<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
424<iframe loading="lazy" title="salt fairy terutsuyoshi being extra." width="500" height="281" src="https://www.youtube.com/embed/lFUPgksNloU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture;
424 web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
425</div></figure>
426
427
428
429<p>Now that we are done with fighting demons, let&#8217;s talk about the bouts themselves. By the way, there are sumo streams that cut out most of the ceremony, so you can concentrate on the fighting.</p>
430
431
432
433<p>Let me say this: this sport is brutal. To begin, wrestlers simultaneously launch at each other from a crouching position, like the American football players. All of this takes place on a terrifyingly high clay platform. You are allowed to slap, trip, and throw your opponent. You are not allowed to punch, poke, head-butt,  or grab hair, but that is all. </p>
434
435
436
437<p>Some wrestlers that are typically not expected to rise in the ranks often perform a highly choreographed comical skit explaining the forbidden moves.</p>
438
439
440
441<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
442<iframe loading="lazy" title="Comic sumo gags explained" width="500" height="281" src="https://www.youtube.com/embed/uUeUXbeXXbU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
443</div></figure>
444
445
446
447<p>Wrestlers are generally either belt fighters or pusher-thrusters, but some are all around technicians. The slaps of pusher thrusters are particularly terrifying &#8212; they often knock wrestlers out.  Think Honda from Street Fighter, but for real, like in those slapping competition videos. Also, it&#8217;s done with both hands, not one animated one.</p>
448
449
450
451<figure class="wp-block-image"><img loading="lazy" decoding="async" width="572" height="462" src="https://www.deadprogrammer.com/wp-content/uploads/2019/07/2019-07-06_00-16-55.png" alt="" class="wp-image-3007" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/07/2019-07-06_00-16-55.png 572w, https://www.deadprogrammer.com/wp-content/uploads/2019/07/2019-07-06_00-16-55-300x242.png 300w" sizes="auto, (max-width: 572px) 100vw, 572px" /></figure>
452
453
454
455<p>To win you must either push your opponent out of the ring, or make them touch the ground with anything other than the soles of their feet. This is why sumotori usually consider chicken to be a lucky food. Two legs good, four legs bad!</p>
456
457
458
459<p>The winning ways known as kimarite are highly codified. Special ringside judges announce not only who won, but also how.  Some winning techniques are very difficult and rare, some are commonplace. There is a special technical prize for fighters who display the most kimarite during the basho. Some ways of winning are considered to be cheap, like the slapdown. One move &#8212; jumping out of the way of the attacker known as &#8220;henka&#8221; is particularly frowned upon and villified, unless practiced by a much smaller wrestler against a giant opponent, and even then it&#8217;s considered not entirely honorable, but entirely legal.</p>
460
461
462
463<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
464<iframe loading="lazy" title="Kimarite demonstration" width="500" height="375" src="https://www.youtube.com/embed/DYRJqa87-nw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
465</div></figure>
466
467
468
469<p>Now let&#8217;s address the elephant in the room. There are no weight categories in Grand Sumo. But it is not just a sport of giants. There are plenty of very popular diminutive wrestlers. </p>
470
471
472
473<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
474<iframe loading="lazy" title="Chiyonokuni vs Takanoyama - Part 2" width="500" height="281" src="https://www.youtube.com/embed/0uUHG6jUaRE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture;
474 web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
475</div></figure>
476
477
478
479<p>To be continued in Part II</p>
480</div>
481			<div style="margin-top:var(--wp--preset--spacing--40);" class="wp-block-post-date has-small-font-size"><time datetime="2019-07-06T04:36:15+00:00"><a href="https://www.deadprogrammer.com/you-should-become-a-fan-of-sumo-part-i">July 6, 2019</a></time></div>
482		</div>
483		
484	</li><li class="wp-block-post post-3137 post type-post status-publish format-standard hentry">
485		
486		<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)">
487			
488			<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://www.deadprogrammer.com/rhyme-buster-rap-generator-rhyming-dictionary" target="_self" >Rhyme Buster: A Rap Generator and Rhyming Dictionary</a></h2>
489			<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained"><p>Back in 2012, my friend Alex Muravyov and I built a toy called <a href="https://rhymebuster.com">Rhyme Buster</a> — a rap lyrics generator that mashes together rhyming lines from real songs into new verses. You pick a genre (hip-hop, Shakespeare sonnets, or nursery rhymes), hit generate, and it stitches together lines that rhyme with each other. The results are usually hilarious and occasionally accidentally brilliant.</p>
490<p>The engine searches a database of real song lyrics and finds lines whose last words rhyme, then combines them into couplets. You can edit individual lines, regenerate the ones you don&#8217;t like, and copy the whole thing when you&#8217;re done. It&#8217;s surprisingly addictive.</p>
491<p>We also built a <a href="https://rhymebuster.com/finder">rhyming dictionary</a> with over 130,000 word pairs, a <a href="https://rhymebuster.com/dictionary">word definition lookup</a>, a <a href="https://rhymebuster.com/thesaurus">thesaurus</a>, a <a href="https://rhymebuster.com/scrabble">Scrabble word finder</a>, and even a database of over 1,000 <a href="https://rhymebuster.com/nursery">nursery rhymes</a> with full lyrics. The <a href="https://rhymebuster.com/syllable-counter">syllable counter</a> is probably the most practically useful tool — it breaks any word into syllables, which is handy for writing haiku or matching meter in poetry.</p>
492<p>The whole thing runs on PHP, MySQL, and SphinxSearch. The rhyme matching uses phonetic analysis from the CMU Pronouncing Dictionary, and the quality ranking is refined by community votes. It&#8217;s one of those side projects where we kept adding features until it turned into a full suite of word tools.</p>
493<p>If you write lyrics, poetry, or even just play Scrabble, give <a href="https://rhymebuster.com">rhymebuster.com</a> a try.</p>
494</div>
495			<div style="margin-top:var(--wp--preset--spacing--40);" class="wp-block-post-date has-small-font-size"><time datetime="2019-05-15T14:30:00+00:00"><a href="https://www.deadprogrammer.com/rhyme-buster-rap-generator-rhyming-dictionary">May 15, 2019</a></time></div>
496		</div>
497		
498	</li><li class="wp-block-post post-2990 post type-post status-publish format-standard hentry category-uncategorized">
499		
500		<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)">
501			
502			<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://www.deadprogrammer.com/the-soviet-cloning-machine" target="_self" >The Soviet Cloning Machine</a></h2>
503			<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained">
504<p>Recently I saw this meme on twitter:</p>
505
506
507
508<p></p>
509
510
511
512<figure class="wp-block-image"><img loading="lazy" decoding="async" width="582" height="682" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_18-40-18.png" alt="" class="wp-image-2991" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_18-40-18.png 582w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_18-40-18-256x300.png 256w" sizes="auto, (max-width: 582px) 100vw, 582px" /></figure>
513
514
515
516<p>The genius who ripped this meme from Reddit also brought up Soviet cars as examples of originality, and that really annoyed me.  For you see, one of the hallmarks of the Soviet socialism was flagrant disregard for intellectual property. To this day people of my generation are constantly surprised when they discover what exactly was copied and from what.</p>
517
518
519
520<p>Here&#8217;s a exhaustive list of very iconic Soviet things and their capitalist counterparts. </p>
521
522
523
524<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="317" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_18-50-49-1024x317.png" alt="" class="wp-image-2992" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_18-50-49-1024x317.png 1024w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_18-50-49-300x93.png 300w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_18-50-49-768x238.png 768w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_18-50-49.png 1538w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Volga Gaz and Ford Customline </figcaption></figure>
525
526
527
528<figure class="wp-block-image"><img loading="lazy" decoding="async" width="659" height="307" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_18-54-36.png" alt="" class="wp-image-2993" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_18-54-36.png 659w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_18-54-36-300x14
5280.png 300w" sizes="auto, (max-width: 659px) 100vw, 659px" /><figcaption>Lada and Fiat</figcaption></figure>
529
530
531
532<figure class="wp-block-image"><img loading="lazy" decoding="async" width="800" height="274" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_18-56-51.png" alt="" class="wp-image-2995" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_18-56-51.png 800w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_18-56-51-300x103.png 300w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_18-56-51-768x263.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /><figcaption>Zaporozhets and Fiat 600</figcaption></figure>
533
534
535
536<p></p>
537
538
539
540<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="260" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-01-41-1024x260.png" alt="" class="wp-image-2994" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-01-41-1024x260.png 1024w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-01-41-300x76.png 300w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-01-41-768x195.png 768w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-01-41.png 1917w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Concorde and Tu-144 aka Conkordsky</figcaption></figure>
541
542
543
544<figure class="wp-block-image"><img loading="lazy" decoding="async" width="984" height="702" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-08-04.png" alt="" class="wp-image-2996" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-08-04.png 984w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-08-04-300x214.png 300w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-08-04-768x548.png 768w" sizes="auto, (max-width: 984px) 100vw, 984px" /><figcaption>AK 47 and Sturmgewehr 44</figcaption></figure>
545
546
547
548<p></p>
549
550
551
552<figure class="wp-block-image"><img loading="lazy" decoding="async" width="898" height="381" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-10-35.png" alt="" class="wp-image-2997" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-10-35.png 898w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-10-35-300x127.png 300w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-10-35-768x326.png 768w" sizes="auto, (max-width: 898px) 100vw, 898px" /><figcaption><a href="https://www.nzeldes.com/HOC/IronFelix.htm">&#8220;Iron Felix&#8221; and the Odhner calculator</a></figcaption></figure>
553
554
555
556<figure class="wp-block-image"><img loading="lazy" decoding="async" width="543" height="483" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-15-04.png" alt="" class="wp-image-2998" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-15-04.png 543w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-15-04-300x267.png 300w" sizes="auto, (max-width: 543px) 100vw, 543px" /><figcaption>Soviet clone of Parker 51 and Parker 51 fountain pen</figcaption></figure>
557
558
559
560<figure class="wp-block-image is-resized"><img loading="lazy" decoding="async" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-19-08.png" alt="" class="wp-image-2999" width="543" height="429" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-19-08.png 470w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-19-08-300x237.png 300w" sizes="auto, (max-width: 543px) 100vw, 543px" /><figcaption>Buran/Energiya and the Space Shuttle (not to scale)</figcaption></figure>
561
562
563
564<figure class="wp-block-image"><img loading="lazy" decoding="async" width="851" height="307" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-32-24.png" alt="" class="wp-image-3000" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-32-24.png 851w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-32-24-300x108.png 300w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-32-24-768x277.png 768w" sizes="auto, (max-width: 851px) 100v
564w, 851px" /><figcaption><a href="http://www.phantom.sannata.ru/konkurs/2008/kt0829.shtml">Casio and Elektronica</a></figcaption></figure>
565
566
567
568<figure class="wp-block-image"><img loading="lazy" decoding="async" width="959" height="471" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-38-47.png" alt="" class="wp-image-3001" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-38-47.png 959w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-38-47-300x147.png 300w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-38-47-768x377.png 768w" sizes="auto, (max-width: 959px) 100vw, 959px" /><figcaption>Hasselblad and Kiev 88</figcaption></figure>
569
570
571
572<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="383" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-43-38-1024x383.png" alt="" class="wp-image-3002" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-43-38-1024x383.png 1024w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-43-38-300x112.png 300w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-43-38-768x287.png 768w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-43-38.png 1115w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Milton Bradley Big Trak / Elektronika Lunokhod</figcaption></figure>
573
574
575
576<p></p>
577
578
579
580<figure class="wp-block-image"><img loading="lazy" decoding="async" width="800" height="374" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-47-30.png" alt="" class="wp-image-3003" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-47-30.png 800w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-47-30-300x140.png 300w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_19-47-30-768x359.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /><figcaption>Municipal Building in NYC and one of the &#8220;7 Sisters&#8221; buildings in Moscow</figcaption></figure>
581
582
583
584<p>I&#8217;d actually like to build a more exhaustive list of these, but for now this will do. </p>
585</div>
586			<div style="margin-top:var(--wp--preset--spacing--40);" class="wp-block-post-date has-small-font-size"><time datetime="2019-03-25T23:55:54+00:00"><a href="https://www.deadprogrammer.com/the-soviet-cloning-machine">March 25, 2019</a></time></div>
587		</div>
588		
589	</li><li class="wp-block-post post-2983 post type-post status-publish format-standard hentry category-uncategorized">
590		
591		<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)">
592			
593			<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://www.deadprogrammer.com/victorian-echoes" target="_self" >Victorian Echoes</a></h2>
594			<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained">
595<p>It&#8217;s story time, kids. As many of you know, I grew up in the Soviet Union in the 1970s and 80s. Cutting edge technology at the time was a decade or two behind the rest of the world, but I&#8217;m not going to bore you with tales of reel-to-reel audio, rotary phones, giant computers, record players, super 8 home movies and the rest of hipster-friendly junk. I want to tell you about the remnants of Victorian tech that I remember, ghostly things that still held on a little in the collective memory of Soviet people. These were all ingenious things, the iPhone-level tech of the time.</p>
596
597
598
599<p>When I started school, fountain pens were mandatory. The pen itself is interesting enough &#8212; it was a poorly made, cheap Soviet clone of a Parker 51, a futuristic looking pen with a hooded nib, an ingenious design that is not seen much in modern fountain pens. When you think of a typical fountain pen it has a large, exposed nib that dries out very quickly. There&#8217;s a joke about the aesthetics of circumcision in there somewhere, but that&#8217;s not the point that I was trying to make at all.</p>
600
601
602
603<figure class="wp-block-image"><img loading="lazy" decoding="async" width="668" height="749" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_13-22-07.png" alt="" class="wp-image-2984" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_13-22-07.png 668
603w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_13-22-07-268x300.png 268w" sizes="auto, (max-width: 668px) 100vw, 668px" /></figure>
604
605
606
607<p>The point is that my desk still had inkwells for dip pens, an archaic bit of technology. My father, who went to the same school actually learned how to write with these dip pens. Steel nibs allow for a much finer penmanship (look up some examples of Spencerian and Copperplate calligraphy styles on YouTube &#8212; you won&#8217;t be disappointed).</p>
608
609
610
611<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
612<iframe loading="lazy" title="How to Write Copperplate" width="500" height="375" src="https://www.youtube.com/embed/en9y2yj6P74?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
613</div></figure>
614
615
616
617<p>Soviet post offices still used to provide these inkwells and steel pens well into the 1980s. Weirdly enough, I think these persisted in post offices in America into the 80s as well. I can&#8217;t find any evidence to that online, but I&#8217;ve seen a cartoon in Mad magazine about it.</p>
618
619
620
621<p></p>
622
623
624
625<figure class="wp-block-image"><img loading="lazy" decoding="async" width="629" height="946" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_13-37-29.png" alt="" class="wp-image-2985" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_13-37-29.png 629w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_13-37-29-199x300.png 199w" sizes="auto, (max-width: 629px) 100vw, 629px" /></figure>
626
627
628
629<p>Next up is an opera hat. I, of course, have never seen one in person, but <a href="https://en.wikipedia.org/wiki/Shapoklyak">Old Lady Shapoklyak</a>, the sworn enemy of the <a href="https://en.wikipedia.org/wiki/Cheburashka">Soviet Pokemon Cheburashka</a> wore one and was named after it.  Here she is wearing what might look like a normal old lady hat, but it is a chapeau claque, a collapsed opera hat, the one that makes a satisfying sound when it expands.</p>
630
631
632
633<figure class="wp-block-image"><img loading="lazy" decoding="async" width="416" height="566" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_13-42-58.png" alt="" class="wp-image-2986" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_13-42-58.png 416w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_13-42-58-220x300.png 220w" sizes="auto, (max-width: 416px) 100vw, 416px" /></figure>
634
635
636
637<p>It&#8217;s more of a fwooomp than a clack, but OMG what a crazy piece of tech. I badly want to actually take one of these to the opera, expand it afterwards and hear that sound. </p>
638
639
640
641<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
642<iframe loading="lazy" title="Vintage black silk top hat, size 6 7/8 (56)" width="500" height="375" src="https://www.youtube.com/embed/aRXQLGh4qVw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
643</div></figure>
644
645
646
647<p>Then there&#8217;s another children&#8217;s character, the terrifying <a href="https://en.wikipedia.org/wiki/Moydodyr">Moydodyr</a>. These days he&#8217;s a friendly modern sink that promotes good hygiene. Sometimes he carries around a giant toothbrush, just like our future president, Vermin Supreme. But not in my time! Oh no, he used to be a terrifying Victorian-style washbasin.</p>
648
649
650
651<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="578" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_12-21-25-1024x578.png" alt="" class="wp-image-2987" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_12-21-25-1024x578.png 1024w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_12-21-25-300x169.png 300w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_12-21-25-768x433.png 768w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_12-21-25.png 1037w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
652
653
654
655<p>It bears explaining on how this piece of furniture used to work. In the days before indoor plumbing  (many Soviet households in the 1960s fell into that category) would have what looked like a normal sink, but water would be stored in a little tank with a spring-loaded plunger at the bottom. You&#8217;d press on this plunger and water would drip down on your hands, down into the sink, and into a bucket that was under it. I have seen a similarly designed soap dispensers in old buildings in NYC.  You might ask &#8212; but how did people shower? Well, they did not. Once a week they&#8217;d visit a bath if they were lucky. They&#8217;d also had shirts with detachable cuffs and collars, and sometimes even whole shirt fronts &#8212; the ones that you can see roll up comically in old cartoons.</p>
656
657
658
659<figure class="wp-block-image"><img loading="lazy" decoding="async" width="441" height="608" src="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_14-04-47.png" alt="" class="wp-image-2988" srcset="https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_14-04-47.png 441w, https://www.deadprogrammer.com/wp-content/uploads/2019/03/2019-03-25_14-04-47-218x300.png 218w" sizes="auto, (max-width: 441px) 100v
659w, 441px" /></figure>
660
661
662
663<p>It&#8217;s also worth mentioning that my dad&#8217;s generation did not have proper gas stoves &#8212; all the food was prepared on Primus burners. I&#8217;ve only read about these in books, but with the magic of YouTube we can see how they worked. Cooking on pressurized kerosine is pretty hardcore.</p>
664
665
666
667<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
668<iframe loading="lazy" title="How to Light and Operate a Vintage Kerosene Stove" width="500" height="281" src="https://www.youtube.com/embed/Z_zRgcmSWh0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
669</div></figure>
670
671
672
673<p>I&#8217;ve also seen a lot of oil lamps converted to electricity. It is pretty interesting to see that the technology of these things became so refined that Aladdin lamps are still being made. Actually seeing how one works is very interesting &#8211; I am fascinated by the design of that glass chimney that makes it glow so bright.</p>
674
675
676
677<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
678<iframe loading="lazy" title="Aladdin Oil Lamp : Running your lamp effectively" width="500" height="375" src="https://www.youtube.com/embed/QPIHU9VTTY4?start=148&#038;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
679</div></figure>
680
681
682
683<p>Everything old is new again: WeWork is bringing back <a href="https://en.wikipedia.org/wiki/Communal_apartment">communal apartments</a>, maybe <a href="https://en.wikipedia.org/wiki/Galoshes">galoshes</a> will become all the rage in Williamsburg.</p>
684</div>
685			<div style="margin-top:var(--wp--preset--spacing--40);" class="wp-block-post-date has-small-font-size"><time datetime="2019-03-25T18:30:52+00:00"><a href="https://www.deadprogrammer.com/victorian-echoes">March 25, 2019</a></time></div>
686		</div>
687		
688	</li><li class="wp-block-post post-2936 post type-post status-publish format-standard hentry category-uncategorized">
689		
690		<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)">
691			
692			<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://www.deadprogrammer.com/the-dummy-transistor-effect" target="_self" >The Dummy Transistor Effect</a></h2>
693			<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained">
694<p>Marketing technology is a dirty job. One pattern emerges over and over: hyping up the presence of  some technology whether it makes sense or not, as long as it sways some consumers.</p>
695
696
697
698<p>Early transistor radios always prominently featured the number of transistors everywhere, and I&#x27;ve heard the tales of Japanese companies including extra ones just to up the count.  </p>
699
700
701
702<figure class="wp-block-image"><img decoding="async" src="https://www.deadprogrammer.com/wp-content/uploads/2018/02/2018-02-05_21-05-37.png" /></figure>
703
704
705
706<p>I always thought that was just a legend, but a quick search <a href="https://books.google.com/books?id=VCgEAAAAMBAJ&amp;pg=PA88&amp;lpg=PA88&amp;dq=extra+transistors+for+marketing&amp;source=bl&amp;ots=0An8lYfZY_&amp;sig=ws44W6k9m7J7XY9azJCdrOnV4mE&amp;hl=en&amp;sa=X&amp;ved=0ahUKEwi62-SllpDZAhUQulMKHTCMAuQQ6AEINzAD#v=onepage&amp;q=extra%20transistors%20for%20marketing&amp;f=false">turned up this amazing article from Billboard</a>. In 1967 the FTC held hearings on the subject:</p>
707
708
709
710<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
711    <p>
711The clearest thing to come out of the Commission’s recent oral hearing on the “wild numbers rat race” in transistor advertising was that the whole issue is pretty cloudy. It also appeared that future developments in the complexities of engineering and design will make it even more so.</p>
712    <p>&#8230;</p>
713    <p>At the Oct. 4 oral hearing, Harry Gelbert, of Excello American Industries, a New York importer who sells to chain stores, department stores, retailers and wholesalers, said his company had to discontinue sales of “fraudulently” stamped transistor sets from a certain Japanese firm which stamped sets as having 14 transistors, when they had only six. Some had “dummy” and “tandem” transistors, some did not even bother to include dummies.</p>
714    <p>Gelbert said his retailer and wholesaler customers, deceived by numbers claims, complained when discounters would advertise a 14-transistor set for $2.95, when Gelbert’s firm had to charge $3.20 for a six-transistor set. A spokesman for EIA’s Japanese affiliate said the Japanese government had “censured” the offending firm, that standards were continually being raised on Japanese product, and he was sure there would be very little of this kind of trouble in the future.</p>
715    <p>But importer Gelbert said the &quot;fraudulently&quot; stamped sets were still pouring in “by the thousands” from Korea, Hong Kong and Okinawa.</p><cite>Billboard, October 28 1967</cite></blockquote>
716
717
718
719<p>I bet Mr. Gelbert sported wicked sideburns and the &quot;censuring&quot; by the Japanese government was most severe.</p>
720
721
722
723<p>Another case in point is this amazing article from Wikipedia about the <a href="https://en.wikipedia.org/wiki/Mechanical_watch">Jewel Inflation of 1960s</a>.</p>
724
725
726
727<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
728    <p>It is doubtful whether adding jewels in addition to the ones listed above is really useful in a watch. It does not increase accuracy, since the only wheels which have an effect on the balance wheel, those in the <a href="https://en.wikipedia.org/wiki/Going_train">going train</a>, are already jeweled. <a href="https://en.wikipedia.org/wiki/Marine_chronometer">Marine chronometers</a>, the most accurate portable timepieces, often have only 7 jewels. Nor does jeweling additional wheel bearings increase the useful life of the movement; as mentioned above most of the other wheels do not get enough wear to need them.However, by the early 20th century watch movements had been standardized to the point that there was little difference between their mechanisms, besides quality of workmanship. So watch manufacturers made the number of jewels, one of the few metrics differentiating quality watches, a major advertising point, listing it prominently on the watch&#x27;s face. Consumers, with little else to go on, learned to equate more jewels with more quality in a watch. Although initially this was a good measure of quality, it gave manufacturers an incentive to increase the jewel count. Around the 1960s this &#x27;jewel craze&#x27; reached new heights, and manufacturers made watches with 41, 53, 75, or even 100 jewels. Most of these additional jewels were totally nonfunctional; they never contacted moving parts, and were included just to increase the jewel count. For example, the Waltham 100 jewel watch consisted of an ordinary 17 jewel movement, with 83 tiny pieces of ruby mounted around the automatic winding rotor</p><cite>Wikipedia</cite></blockquote>
729
730
731
732<p></p>
733
734
735
736<figure class="wp-block-image"><img decoding="async" src="https://www.deadprogrammer.com/wp-content/uploads/2018/02/2018-02-08_13-12-13.png" />
737    <figcaption>Bling bling</figcaption>
738</figure>
739
740
741
742<p>Adding gratuitous jewels to watches or transistors to radios might seem quaintly outdated, but I&#x27;ve encountered this technique in technology over and over in my career.</p>
743
744
745
746<p>Once I was told of a project where the boss was enamored with a Microsoft product called BizTalk Server. I was never able to figure out what exactly it did back then (it appeared to be an XSLT transform engine of some kind), but it was marketed with gusto by Microsoft reps. It seems to exist today, and by jingo it has everything that you could want out of a piece of software: connect seamlessly, extend to the cloud, and go beyond integration. You wouldn&#x27;t want a seamy connection, or extend a little lower than the cloud cover, or dammit, just simply reach integration and stop there. </p>
747
748
749
750<figure class="wp-block-image"><img decoding="async" src="https://www.deadprogrammer.com/wp-content/uploads/2018/02/2018-02-08_13-32-55.png" /></figure>
751
752
753
754<p>The Microsoft consultants who actually had to do the work used normal Microsoft products, like SQL Server and .NET to accomplish the tasks that they needed, but at the end they simply installed BizTalk and left it sitting there, not doing anything.</p>
755
756
757
758<p>At the time I had to work with Microsoft SharePoint Server, an awful, awful monolithic conglomerate of awfulness. Developing native code for SharePoint was ridiculously difficult. But it had one component that everybody used to get out of having to write native code: an iframe that would let you write a little web app outside of Sharepoint and seamlessly bring it inside. Seamlessly, like BizTalk.</p>
759
760
761
762<p>There&#x27;s no limit to how much you can manjazzle your product these days. Cloud, Big Data, AI, Blockchain, Augmented Reality. I just think we need to start counting the clouds, and the datas, and say exactly how many crypto links are there in the block chains. The singularity is nearer and nearer with each day.</p>
763</div>
764			<div style="margin-top:var(--wp--preset--spacing--40);" class="wp-block-post-date has-small-font-size"><time datetime="2018-02-08T18:56:15+00:00"><a href="https://www.deadprogrammer.com/the-dummy-transistor-effect">February 8, 2018</a></time></div>
765		</div>
766		
767	</li><li class="wp-block-post post-2896 post type-post status-publish format-standard hentry category-uncategorized">
768		
769		<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)">
770			
771			<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://www.deadprogrammer.com/elevator-wisdom-part-2-elevators-from-first-principles-or-the-fractal-of-underestimation" target="_self" >Elevator Wisdom Part 2: Elevators From First Principles or The Fractal of Underestimation</a></h2>
772			<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained">
773<p>Behold this Twitter exchange. If you read <a href="https://www.deadprogrammer.com/elevator-wisdom-part-1-the-fear-ouroboros">my previous post</a>, you can spot the surety of someone who thinks he knows something, but kinda does not.</p>
774
775
776
777<figure class="wp-block-image"><img decoding="async" src="https://www.deadprogrammer.com/wp-content/uploads/2018/02/2018-02-02_02-28-51.png" /></figure>
778
779
780
781<figure class="wp-block-image alignright" style="max-width:50%"><img decoding="async" src="https://www.deadprogrammer.com/wp-content/uploads/2018/02/2018-02-02_02-43-26.png" /></figure>
782
783
784
785<p>Manual elevators do not have a throttle and a brake in the same sense a car does. They have what&#x27;s known as a deadman, a spring-loaded lever that can move the car up or down at two speeds and stop is when returned to the middle position. It&#x27;s not like driving a car or even a bike.</p>
786
787
788
789<p>Secondly it is indeed true that the skill could be learned in a few hours. You can start your training in the morning, and by the end of the day do it well enough to work through a shift. But by no means does it mean that you can master this esoteric skill in a day. Mastering this skill takes years, decades, in fact.</p>
790
791
792
793<p>Here&#x27;s a typical elevator operator. Watch how smoothly he operates the controls, how he does not need to adjust the floor level several times, how practiced he is. To learn to smoothly stop level with the floor 99% of the time takes a lot of practice, and even when missing the mark, correcting smoothly is a hard skill to learn. You can stop higher, you can stop lower, you can miss the floor entirely. There are two speeds, you can switch to a lower speed too soon, or you can jolt the car by stopping too abruptly. Muscle memory does not develop in a few hours.</p>
794
795
796
797<figure class="wp-block-embed">
798    https://www.youtube.com/watch?v=Gg7apPThw08
799</figure>
800
801
802
803<p>Beyond that, there are esoteric skills that are best not attempted by amateurs. For instance, the faster way to stop the elevator is to open the inner accordion door. You can time this maneuver with exact lining up off the floor and the car, and very elegantly increase the overall speed of operation without sacrificing the smoothness of the ride. A rougher, but more impressive maneuver involves stopping by reversing the lever &#8212; it is the fastest way to stop, but it supposedly damages the cables, although I saw oldtimers perform that trick from time to time. But most mind boggling is the consistency with which someone with 40 years of experience can stop the car exactly level every single time while keeping up the conversation and keeping an eye on the annunciator.</p>
804
805
806
807<p>A skill seems complicated to someone who&#x27;s ignorant of it, it seems too simple to someone with cursory knowledge, and complicated again to someone who has a good deal of experience with it. It&#x27;s like some kind of a bike shedding fractal, I swear.</p>
808</div>
809			<div style="margin-top:var(--wp--preset--spacing--40);" class="wp-block-post-date has-small-font-size"><time datetime="2018-02-02T08:22:46+00:00"><a href="https://www.deadprogrammer.com/elevator-wisdom-part-2-elevators-from-first-principles-or-the-fractal-of-underestimation">February 2, 2018</a></time></div>
810		</div>
811		
812	</li><li class="wp-block-post post-2836 post type-post status-publish format-standard hentry category-uncategorized tag-elevator">
813		
814		<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)">
815			
816			<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://www.deadprogrammer.com/elevator-wisdom-part-1-the-fear-ouroboros" target="_self" >Elevator Wisdom Part 1: The Fear Ouroboros</a></h2>
817			<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained">
818<figure class="wp-block-image"><img decoding="async" src="https://www.deadprogrammer.com/wp-content/uploads/2018/02/2018-02-02_01-31-06.png" />
819    <figcaption>&quot;Futurama&quot; Mars University (TV Episode 1999)</figcaption>
820</figure>
821
822
823
824<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
825    <p>
825Ignorance is bliss, and knowledge brings fear. Or sometimes it&#x27;s the other way around.</p>
826</blockquote>
827
828
829
830<p>There are three levels of fearing or not-fearing something: out of ignorance, out of shallow knowledge, and out of deeper knowledge and experience.</p>
831
832
833
834<p>I was once afraid of entering or exiting an elevator that did not come to a stop exactly level with the floor. If such a thing happened, it would stand to reason that the elevator was malfunctioning, and could possibly start moving once again when I&#x27;d be half-way in or out. My mind would paint gruesome pictures of being cut in half.</p>
835
836
837
838<figure class="wp-block-image alignright" style="width:260px"><img loading="lazy" decoding="async" src="https://www.deadprogrammer.com/wp-content/uploads/2018/02/2018-02-02_00-24-01.png" width="260" height="333" />
839    <figcaption>Elisha Graves Otis</figcaption>
840</figure>
841
842
843
844<p>Then, when I was in college, I worked as a manual elevator operator. I was in charge of a hulking Otis elevator that was built some time in the 1920s. In the course of my training I learned about Elisha Otis&#x27; ingenious safety mechanism.</p>
845
846
847
848<p>This <a href="https://en.wikipedia.org/wiki/Elisha_Otis">finely bearded gentleman</a> invented an extremely simple mechanism. An elevator would have a spring-loaded device that would extend special claws into the notched guide rails if the elevator would fall too quickly. In addition to that, a safety switch turned off power to the motor when the doors were open. In the following years I was not afraid of being cut in half, and bravely dismounted my elevator in any position. </p>
849
850
851
852<figure class="wp-block-embed">
853    <iframe loading="lazy" title="Make Inventions: Otis Safety Elevator" width="500" height="281" src="https://www.youtube.com/embed/sSjJjKcoNRk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
854</figure>
855
856
857
858<p>Later on, working an office job in Midtown, I heard <a href="http://www.nytimes.com/2011/12/15/nyregion/elevator-accident-kills-a-woman-in-a-madison-avenue-building.html">horrible news</a>. An advertising executive tried to &quot;catch&quot; an already closing elevator by forcing her body inside. Instead of remaining motionless, the cab lifted her and squished her against the shaft, nearly cutting her body in half. The elevator remained jammed for several hours with two more people inside.</p>
859
860
861
862<p>My first reaction was &#8212; this is impossible! The cutoff circuit, the safety device &#8212; what happened? What I learned, of course, was that technicians are able to override safety setting with jumper wires and put the elevator into a manual mode. Of course, sometimes they forget to remove the jumper wires, and an elevator can squish you as a bug if you try to force your way in. Now I am terrified of elevators once again, but for a different reason, of course.</p>
863
864
865
866<p><a href="https://blog.codinghorror.com/mort-elvis-einstein-and-you/">Out of the three types of engineers</a>,  Mort is fearful because he&#x27;s ignorant, Elvis is overconfident because he thinks he knows things, and Einstein is fearful and paranoid because he has an idea about how the sausage is made.</p>
867
868
869
870<figure class="wp-block-image"><img decoding="async" src="https://www.deadprogrammer.com/wp-content/uploads/2018/02/2018-02-02_01-30-00.png" />
871    <figcaption>47-50th Street Subway tower has an automatic routing system that promises to give you exactly what you punch into it.</figcaption>
872</figure>
873
874
875
876<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
877    <p>In UNIX, I learned with power-greedy pleasure that you could kill a system right out from under yourself with a single command. This power was almost the first thing anyone teaches you not to do, then, with a devilish glee, tells you exactly how to: run as the user with complete systems permissions, go to the root level of the disk directory, then type in rm -rf *.</p><cite>Ullman, Ellen. <a href="https://www.amazon.com/Life-Code-Personal-History-Technology/dp/0374534519">Life in Code: A Personal History of Technology</a> (p. 43). </cite></blockquote>
878
879
880
881<p>The second blog post in this series will focus on the very non-obvious learning curve of driving a manual elevator.</p>
882</div>
883			<div style="margin-top:var(--wp--preset--spacing--40);" class="wp-block-post-date has-small-font-size"><time datetime="2018-02-02T06:53:17+00:00"><a href="https://www.deadprogrammer.com/elevator-wisdom-part-1-the-fear-ouroboros">February 2, 2018</a></time></div>
884		</div>
885		
886	</li><li class="wp-block-post post-2829 post type-post status-publish format-standard hentry category-uncategorized">
887		
888		<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)">
889			
890			<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://www.deadprogrammer.com/the-mystery-of-the-arizona-tea-girl" target="_self" >The mystery of the Arizona Tea Girl</a></h2>
891			<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained">
892<p>Who drew it better &#8212; Utamaro or the artist who did Arizona&#x27;s graphics?</p>
893
894
895
896<figure class="wp-block-image"><img decoding="async" src="https://www.deadprogrammer.com/wp-content/uploads/2018/01/2018-01-14_00-14-45.png" />
897    <figcaption>Utamaro on the left</figcaption>
898</figure>
899</div>
900			<div style="margin-top:var(--wp--preset--spacing--40);" class="wp-block-post-date has-small-font-size"><time datetime="2018-01-14T05:31:29+00:00"><a href="https://www.deadprogrammer.com/the-mystery-of-the-arizona-tea-girl">January 14, 2018</a></time></div>
901		</div>
902		
903	</li><li class="wp-block-post post-3114 post type-post status-publish format-standard hentry category-100-views-of-the-empire-state-building">
904		
905		<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)">
906			
907			<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://www.deadprogrammer.com/one-hundred-views-of-the-empire-state-building-56" target="_self" >One Hundred Views of the Empire State Building #56</a></h2>
908			<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained">
909<figure class="wp-block-image size-full"><a href="https://www.deadprogrammer.com/wp-content/uploads/2023/05/2023-05-30_13-31-03.png"><img loading="lazy" decoding="async" width="496" height="730" src="https://www.deadprogrammer.com/wp-content/uploads/2023/05/2023-05-30_13-31-03.png" alt="" class="wp-image-3115" srcset="https://www.deadprogrammer.com/wp-content/uploads/2023/05/2023-05-30_13-31-03.png 496w, https://www.deadprogrammer.com/wp-content/uploads/2023/05/2023-05-30_13-31-03-204x300.png 204w" sizes="auto, (max-width: 496px) 100v
909w, 496px" /></a></figure>
910</div>
911			<div style="margin-top:var(--wp--preset--spacing--40);" class="wp-block-post-date has-small-font-size"><time datetime="2015-05-30T17:31:33+00:00"><a href="https://www.deadprogrammer.com/one-hundred-views-of-the-empire-state-building-56">May 30, 2015</a></time></div>
912		</div>
913		
914	</li><li class="wp-block-post post-3111 post type-post status-publish format-standard hentry category-100-views-of-the-empire-state-building">
915		
916		<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)">
917			
918			<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://www.deadprogrammer.com/one-hundred-views-of-the-empire-state-building-55" target="_self" >One Hundred Views of the Empire State Building #55</a></h2>
919			<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained">
920<figure class="wp-block-image size-full"><a href="https://www.deadprogrammer.com/wp-content/uploads/2023/05/2023-05-30_13-28-14.png"><img loading="lazy" decoding="async" width="504" height="686" src="https://www.deadprogrammer.com/wp-content/uploads/2023/05/2023-05-30_13-28-14.png" alt="" class="wp-image-3112" srcset="https://www.deadprogrammer.com/wp-content/uploads/2023/05/2023-05-30_13-28-14.png 504w, https://www.deadprogrammer.com/wp-content/uploads/2023/05/2023-05-30_13-28-14-220x300.png 220w" sizes="auto, (max-width: 504px) 100vw, 504px" /></a></figure>
921</div>
922			<div style="margin-top:var(--wp--preset--spacing--40);" class="wp-block-post-date has-small-font-size"><time datetime="2015-05-30T17:29:09+00:00"><a href="https://www.deadprogrammer.com/one-hundred-views-of-the-empire-state-building-55">May 30, 2015</a></time></div>
923		</div>
924		
925	</li></ul>
926	
927	<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)">
928		
929	</div>
930	
931	
932	<div class="wp-block-group alignwide has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
933		<nav class="alignwide wp-block-query-pagination is-content-justification-space-between is-layout-flex wp-container-core-query-pagination-is-layout-b2891da8 wp-block-query-pagination-is-layout-flex" aria-label="Pagination">
934			
935			<div class="wp-block-query-pagination-numbers"><span aria-current="page" class="page-numbers current">1</span>
936<a class="page-numbers" href="https://www.deadprogrammer.com/page/2">2</a>
937<a class="page-numbers" href="https://www.deadprogrammer.com/page/3">3</a>
938<span class="page-numbers dots">&hellip;</span>
939<a class="page-numbers" href="https://www.deadprogrammer.com/page/128">128</a></div>
940			<a href="https://www.deadprogrammer.com/page/2" class="wp-block-query-pagination-next">Next Page<span class='wp-block-query-pagination-next-arrow is-arrow-arrow' aria-hidden='true'>→</span></a>
941		</nav>
942	</div>
943	
944</div>
945
946
947</main>
948
949
950<footer class="wp-block-template-part">
951<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--50)">
952<div class="wp-block-group alignwide is-layout-flow wp-block-group-is-layout-flow">
953<div style="height:var(--wp--preset--spacing--60)" aria-hidden="true" class="wp-block-spacer"></div>
954</div>
955</div>
956</footer>
957</div>
958<!-- Appzi: Capture Insightful Feedback -->
959
960<script async src="https://app.appzi.io/bootstrap/bundle.js?token=7328A078-F87E-4D90-8845-3C113BDE2E34"></script>
960
961
962<!-- End Appzi -->	<!-- CJ Custom Footer Code -->
963	
963<script type="speculationrules">
964{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/twentytwentyfive/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
965</script>
vendor: 1 bytes, line 965
965
966<script type="module" src="https://www.deadprogrammer.com/wp-includes/js/dist/script-modules/block-library/navigation/view.min.js?ver=b0f909c3ec791c383210" id="@wordpress/block-library/navigation/view-js-module" fetchpriority="low" data-wp-router-options="{&quot;loadOnClientNavigation&quot;:true}"></script>
vendor: 1 bytes, line 966
966
967<script id="wp-block-template-skip-link-js-after">
968	( function() {
969		var skipLinkTarget = document.querySelector( 'main' ),
970			sibling,
971			skipLinkTargetID,
972			skipLink;
973
974		// Early exit if a skip-link target can't be located.
975		if ( ! skipLinkTarget ) {
976			return;
977		}
978
979		/*
980		 * Get the site wrapper.
981		 * The skip-link will be injected in the beginning of it.
982		 */
983		sibling = document.querySelector( '.wp-site-blocks' );
984
985		// Early exit if the root element was not found.
986		if ( ! sibling ) {
987			return;
988		}
989
990		// Get the skip-link target's ID, and generate one if it doesn't exist.
991		skipLinkTargetID = skipLinkTarget.id;
992		if ( ! skipLinkTargetID ) {
993			skipLinkTargetID = 'wp--skip-link--target';
994			skipLinkTarget.id = skipLinkTargetID;
995		}
996
997		// Create the skip link.
998		skipLink = document.createElement( 'a' );
999		skipLink.classList.add( 'skip-link', 'screen-reader-text' );
1000		skipLink.id = 'wp-skip-link';
1001		skipLink.href = '#' + skipLinkTargetID;
1002		skipLink.innerText = 'Skip to content';
1003
1004		// Inject the skip link.
1005		sibling.parentElement.insertBefore( skipLink, sibling );
1006	}() );
1007	
1008//# sourceURL=wp-block-template-skip-link-js-after
1009</script>
vendor: 1 bytes, line 1009
1009
1010<script id="jetpack-stats-js-before">
1011_stq = window._stq || [];
1012_stq.push([ "view", {"v":"ext","blog":"36773721","post":"0","tz":"0","srv":"www.deadprogrammer.com","arch_home":"1","j":"1:15.6"} ]);
1013_stq.push([ "clickTrackerInit", "36773721", "0" ]);
1014//# sourceURL=jetpack-stats-js-before
1015</script>
vendor: 1 bytes, line 1015
1015
1016<script src="https://stats.wp.com/e-202639.js" id="jetpack-stats-js" defer data-wp-strategy="defer"></script>
1016
1017<div class="dp-house-ad-rail"><div class="dp-house-ad" data-placement="footer"><img class="dp-house-ad-img" src="https://www.deadprogrammer.com/wp-content/mu-plugins/assets/mars2-soviet-stamp.jpg" width="520" height="389" loading="lazy" decoding="async" alt="1972 Soviet postage stamp commemorating the Mars 2 probe"><div class="dp-house-ad-body"><p class="dp-house-ad-label">worth a read</p><p><strong>Mars For The Rest of Us</strong> &mdash; a weekly-or-more deep dive on the technical side of Mars exploration: rocket propulsion, microbiology, mission architecture, and everything in between. Written by Maciej Ceglowski.</p><a class="dp-house-ad-cta" href="https://mceglowski.substack.com/?utm_source=deadprogrammer.com&#038;utm_medium=house_ad&#038;utm_campaign=sitewide" rel="nofollow noopener" target="_blank">Read it on Substack <span class="dp-house-ad-cta-arrow">&rarr;</span></a></div></div></div>
1017<script>
1018(function(){
1019  document.addEventListener('click', function(e){
1020    var a = e.target.closest('.dp-house-ad-cta'); if (!a) return;
1021    var box = a.closest('.dp-house-ad');
1022    try{
1023      if (typeof posthog !== 'undefined') {
1024        posthog.capture('house_ad_click', {
1025          page: location.pathname,
1026          target: 'mceglowski_substack',
1027          url: a.href,
1028          placement: box ? box.getAttribute('data-placement') : 'unknown'
1029        });
1030      }
1031    }catch(err){}
1032  });
1033})();
1034</script>
1034
1035</body>
1036</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.