CINXE.COM
Ken Shirriff's blog: July 2011
<!DOCTYPE html> <html class='v2' dir='ltr' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'> <head> <link href='https://www.blogger.com/static/v1/widgets/3566091532-css_bundle_v2.css' rel='stylesheet' type='text/css'/> <meta content='width=1100' name='viewport'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='blogger' name='generator'/> <link href='http://www.righto.com/favicon.ico' rel='icon' type='image/x-icon'/> <link href='http://www.righto.com/2011/07/' rel='canonical'/> <link rel="alternate" type="application/atom+xml" title="Ken Shirriff's blog - Atom" href="http://www.righto.com/feeds/posts/default" /> <link rel="alternate" type="application/rss+xml" title="Ken Shirriff's blog - RSS" href="http://www.righto.com/feeds/posts/default?alt=rss" /> <link rel="service.post" type="application/atom+xml" title="Ken Shirriff's blog - Atom" href="https://www.blogger.com/feeds/6264947694886887540/posts/default" /> <!--Can't find substitution for tag [blog.ieCssRetrofitLinks]--> <meta content='http://www.righto.com/2011/07/' property='og:url'/> <meta content='Ken Shirriff's blog' property='og:title'/> <meta content='Computer history, restoring vintage computers, IC reverse engineering, and whatever' property='og:description'/> <title>Ken Shirriff's blog: July 2011</title> <style type='text/css'>@font-face{font-family:'Play';font-style:normal;font-weight:400;font-display:swap;src:url(//fonts.gstatic.com/s/play/v19/6aez4K2oVqwIvtU2Gw.eot);}</style> <style id='page-skin-1' type='text/css'><!-- /* ----------------------------------------------- Blogger Template Style Name: Simple Designer: Blogger URL: www.blogger.com ----------------------------------------------- */ /* Variable definitions ==================== <Variable name="keycolor" description="Main Color" type="color" default="#66bbdd"/> <Group description="Page Text" selector="body"> <Variable name="body.font" description="Font" type="font" default="normal normal 12px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> <Variable name="body.text.color" description="Text Color" type="color" default="#222222"/> </Group> <Group description="Backgrounds" selector=".body-fauxcolumns-outer"> <Variable name="body.background.color" description="Outer Background" type="color" default="#66bbdd"/> <Variable name="content.background.color" description="Main Background" type="color" default="#ffffff"/> <Variable name="header.background.color" description="Header Background" type="color" default="transparent"/> </Group> <Group description="Links" selector=".main-outer"> <Variable name="link.color" description="Link Color" type="color" default="#2288bb"/> <Variable name="link.visited.color" description="Visited Color" type="color" default="#888888"/> <Variable name="link.hover.color" description="Hover Color" type="color" default="#33aaff"/> </Group> <Group description="Blog Title" selector=".header h1"> <Variable name="header.font" description="Font" type="font" default="normal normal 60px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> <Variable name="header.text.color" description="Title Color" type="color" default="#3399bb" /> </Group> <Group description="Blog Description" selector=".header .description"> <Variable name="description.text.color" description="Description Color" type="color" default="#777777" /> </Group> <Group description="Tabs Text" selector=".tabs-inner .widget li a"> <Variable name="tabs.font" description="Font" type="font" default="normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> <Variable name="tabs.text.color" description="Text Color" type="color" default="#999999"/> <Variable name="tabs.selected.text.color" description="Selected Color" type="color" default="#000000"/> </Group> <Group description="Tabs Background" selector=".tabs-outer .PageList"> <Variable name="tabs.background.color" description="Background Color" type="color" default="#f5f5f5"/> <Variable name="tabs.selected.background.color" description="Selected Color" type="color" default="#eeeeee"/> </Group> <Group description="Post Title" selector="h3.post-title, .comments h4"> <Variable name="post.title.font" description="Font" type="font" default="normal normal 22px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> </Group> <Group description="Date Header" selector=".date-header"> <Variable name="date.header.color" description="Text Color" type="color" default="#222222"/> <Variable name="date.header.background.color" description="Background Color" type="color" default="transparent"/> <Variable name="date.header.font" description="Text Font" type="font" default="normal bold 11px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> <Variable name="date.header.padding" description="Date Header Padding" type="string" default="inherit"/> <Variable name="date.header.letterspacing" description="Date Header Letter Spacing" type="string" default="inherit"/> <Variable name="date.header.margin" description="Date Header Margin" type="string" default="inherit"/> </Group> <Group description="Post Footer" selector=".post-footer"> <Variable name="post.footer.text.color" description="Text Color" type="color" default="#666666"/> <Variable name="post.footer.background.color" description="Background Color" type="color" default="#f9f9f9"/> <Variable name="post.footer.border.color" description="Shadow Color" type="color" default="#eeeeee"/> </Group> <Group description="Gadgets" selector="h2"> <Variable name="widget.title.font" description="Title Font" type="font" default="normal bold 11px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> <Variable name="widget.title.text.color" description="Title Color" type="color" default="#000000"/> <Variable name="widget.alternate.text.color" description="Alternate Color" type="color" default="#999999"/> </Group> <Group description="Images" selector=".main-inner"> <Variable name="image.background.color" description="Background Color" type="color" default="#ffffff"/> <Variable name="image.border.color" description="Border Color" type="color" default="#eeeeee"/> <Variable name="image.text.color" description="Caption Text Color" type="color" default="#222222"/> </Group> <Group description="Accents" selector=".content-inner"> <Variable name="body.rule.color" description="Separator Line Color" type="color" default="#eeeeee"/> <Variable name="tabs.border.color" description="Tabs Border Color" type="color" default="#eeeeee"/> </Group> <Variable name="body.background" description="Body Background" type="background" color="#f6fbf6" default="$(color) none repeat scroll top left"/> <Variable name="body.background.override" description="Body Background Override" type="string" default=""/> <Variable name="body.background.gradient.cap" description="Body Gradient Cap" type="url" default="url(https://resources.blogblog.com/blogblog/data/1kt/simple/gradients_light.png)"/> <Variable name="body.background.gradient.tile" description="Body Gradient Tile" type="url" default="url(https://resources.blogblog.com/blogblog/data/1kt/simple/body_gradient_tile_light.png)"/> <Variable name="content.background.color.selector" description="Content Background Color Selector" type="string" default=".content-inner"/> <Variable name="content.padding" description="Content Padding" type="length" default="10px" min="0" max="100px"/> <Variable name="content.padding.horizontal" description="Content Horizontal Padding" type="length" default="10px" min="0" max="100px"/> <Variable name="content.shadow.spread" description="Content Shadow Spread" type="length" default="40px" min="0" max="100px"/> <Variable name="content.shadow.spread.webkit" description="Content Shadow Spread (WebKit)" type="length" default="5px" min="0" max="100px"/> <Variable name="content.shadow.spread.ie" description="Content Shadow Spread (IE)" type="length" default="10px" min="0" max="100px"/> <Variable name="main.border.width" description="Main Border Width" type="length" default="0" min="0" max="10px"/> <Variable name="header.background.gradient" description="Header Gradient" type="url" default="none"/> <Variable name="header.shadow.offset.left" description="Header Shadow Offset Left" type="length" default="-1px" min="-50px" max="50px"/> <Variable name="header.shadow.offset.top" description="Header Shadow Offset Top" type="length" default="-1px" min="-50px" max="50px"/> <Variable name="header.shadow.spread" description="Header Shadow Spread" type="length" default="1px" min="0" max="100px"/> <Variable name="header.padding" description="Header Padding" type="length" default="30px" min="0" max="100px"/> <Variable name="header.border.size" description="Header Border Size" type="length" default="1px" min="0" max="10px"/> <Variable name="header.bottom.border.size" description="Header Bottom Border Size" type="length" default="0" min="0" max="10px"/> <Variable name="header.border.horizontalsize" description="Header Horizontal Border Size" type="length" default="0" min="0" max="10px"/> <Variable name="description.text.size" description="Description Text Size" type="string" default="140%"/> <Variable name="tabs.margin.top" description="Tabs Margin Top" type="length" default="0" min="0" max="100px"/> <Variable name="tabs.margin.side" description="Tabs Side Margin" type="length" default="30px" min="0" max="100px"/> <Variable name="tabs.background.gradient" description="Tabs Background Gradient" type="url" default="url(https://resources.blogblog.com/blogblog/data/1kt/simple/gradients_light.png)"/> <Variable name="tabs.border.width" description="Tabs Border Width" type="length" default="1px" min="0" max="10px"/> <Variable name="tabs.bevel.border.width" description="Tabs Bevel Border Width" type="length" default="1px" min="0" max="10px"/> <Variable name="post.margin.bottom" description="Post Bottom Margin" type="length" default="25px" min="0" max="100px"/> <Variable name="image.border.small.size" description="Image Border Small Size" type="length" default="2px" min="0" max="10px"/> <Variable name="image.border.large.size" description="Image Border Large Size" type="length" default="5px" min="0" max="10px"/> <Variable name="page.width.selector" description="Page Width Selector" type="string" default=".region-inner"/> <Variable name="page.width" description="Page Width" type="string" default="auto"/> <Variable name="main.section.margin" description="Main Section Margin" type="length" default="15px" min="0" max="100px"/> <Variable name="main.padding" description="Main Padding" type="length" default="15px" min="0" max="100px"/> <Variable name="main.padding.top" description="Main Padding Top" type="length" default="30px" min="0" max="100px"/> <Variable name="main.padding.bottom" description="Main Padding Bottom" type="length" default="30px" min="0" max="100px"/> <Variable name="paging.background" color="#ffffff" description="Background of blog paging area" type="background" default="transparent none no-repeat scroll top center"/> <Variable name="footer.bevel" description="Bevel border length of footer" type="length" default="0" min="0" max="10px"/> <Variable name="mobile.background.overlay" description="Mobile Background Overlay" type="string" default="transparent none repeat scroll top left"/> <Variable name="mobile.background.size" description="Mobile Background Size" type="string" default="auto"/> <Variable name="mobile.button.color" description="Mobile Button Color" type="color" default="#ffffff" /> <Variable name="startSide" description="Side where text starts in blog language" type="automatic" default="left"/> <Variable name="endSide" description="Side where text ends in blog language" type="automatic" default="right"/> */ /* Content ----------------------------------------------- */ body { font: normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif; color: #222222; background: #f6fbf6 none repeat scroll top left; padding: 0 40px 40px 40px; } html body .region-inner { min-width: 0; max-width: 100%; width: auto; } h2 { font-size: 22px; } a:link { text-decoration:none; color: #121fb3; } a:visited { text-decoration:none; color: #121fb3; } a:hover { text-decoration:underline; color: #1a00ff; } .body-fauxcolumn-outer .fauxcolumn-inner { background: transparent url(//www.blogblog.com/1kt/simple/body_gradient_tile_light.png) repeat scroll top left; _background-image: none; } .body-fauxcolumn-outer .cap-top { position: absolute; z-index: 1; height: 400px; width: 100%; } .body-fauxcolumn-outer .cap-top .cap-left { width: 100%; background: transparent url(//www.blogblog.com/1kt/simple/gradients_light.png) repeat-x scroll top left; _background-image: none; } .content-outer { -moz-box-shadow: 0 0 40px rgba(0, 0, 0, .15); -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .15); -goog-ms-box-shadow: 0 0 10px #333333; box-shadow: 0 0 40px rgba(0, 0, 0, .15); margin-bottom: 1px; } .content-inner { padding: 10px 10px; } .content-inner { background-color: #ffffff; } /* Header ----------------------------------------------- */ .header-outer { background: #f6fbf7 url(//www.blogblog.com/1kt/simple/gradients_light.png) repeat-x scroll 0 -400px; _background-image: none; } .Header h1 { font: normal normal 42px Play; color: #666666; text-shadow: 1px 2px 3px rgba(0, 0, 0, .2); } .Header h1 a { color: #666666; } .Header .description { font-size: 140%; color: #666666; } .header-inner .Header .titlewrapper { padding: 22px 30px; } .header-inner .Header .descriptionwrapper { padding: 0 30px; } /* Tabs ----------------------------------------------- */ .tabs-inner .section:first-child { border-top: 0 solid #eeeeee; } .tabs-inner .section:first-child ul { margin-top: -0; border-top: 0 solid #eeeeee; border-left: 0 solid #eeeeee; border-right: 0 solid #eeeeee; } .tabs-inner .widget ul { background: #f5f5f5 url(//www.blogblog.com/1kt/simple/gradients_light.png) repeat-x scroll 0 -800px; _background-image: none; border-bottom: 1px solid #eeeeee; margin-top: 0; margin-left: -30px; margin-right: -30px; } .tabs-inner .widget li a { display: inline-block; padding: .6em 1em; font: normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif; color: #999999; border-left: 1px solid #ffffff; border-right: 1px solid #eeeeee; } .tabs-inner .widget li:first-child a { border-left: none; } .tabs-inner .widget li.selected a, .tabs-inner .widget li a:hover { color: #000000; background-color: #eeeeee; text-decoration: none; } /* Columns ----------------------------------------------- */ .main-outer { border-top: 0 solid #eeeeee; } .fauxcolumn-left-outer .fauxcolumn-inner { border-right: 1px solid #eeeeee; } .fauxcolumn-right-outer .fauxcolumn-inner { border-left: 1px solid #eeeeee; } /* Headings ----------------------------------------------- */ div.widget > h2, div.widget h2.title { margin: 0 0 1em 0; font: normal bold 11px Arial, Tahoma, Helvetica, FreeSans, sans-serif; color: #000000; } /* Widgets ----------------------------------------------- */ .widget .zippy { color: #999999; text-shadow: 2px 2px 1px rgba(0, 0, 0, .1); } .widget .popular-posts ul { list-style: none; } /* Posts ----------------------------------------------- */ h2.date-header { font: normal bold 11px Arial, Tahoma, Helvetica, FreeSans, sans-serif; } .date-header span { background-color: transparent; color: transparent; padding: inherit; letter-spacing: inherit; margin: inherit; } .main-inner { padding-top: 30px; padding-bottom: 30px; } .main-inner .column-center-inner { padding: 0 15px; } .main-inner .column-center-inner .section { margin: 0 15px; } .post { margin: 0 0 25px 0; } h3.post-title, .comments h4 { font: normal normal 22px Arial, Tahoma, Helvetica, FreeSans, sans-serif; margin: .75em 0 0; } .post-body { font-size: 110%; line-height: 1.4; position: relative; } .post-body img, .post-body .tr-caption-container, .Profile img, .Image img, .BlogList .item-thumbnail img { padding: 2px; background: #ffffff; border: 1px solid #ffffff; -moz-box-shadow: 1px 1px 5px rgba(0, 0, 0, .1); -webkit-box-shadow: 1px 1px 5px rgba(0, 0, 0, .1); box-shadow: 1px 1px 5px rgba(0, 0, 0, .1); } .post-body img, .post-body .tr-caption-container { padding: 5px; } .post-body .tr-caption-container { color: #222222; } .post-body .tr-caption-container img { padding: 0; background: transparent; border: none; -moz-box-shadow: 0 0 0 rgba(0, 0, 0, .1); -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, .1); box-shadow: 0 0 0 rgba(0, 0, 0, .1); } .post-header { margin: 0 0 1.5em; line-height: 1.6; font-size: 90%; } .post-footer { margin: 20px -2px 0; padding: 5px 10px; color: #666666; background-color: #f9f9f9; border-bottom: 1px solid #eeeeee; line-height: 1.6; font-size: 90%; } #comments .comment-author { padding-top: 1.5em; border-top: 1px solid #eeeeee; background-position: 0 1.5em; } #comments .comment-author:first-child { padding-top: 0; border-top: none; } .avatar-image-container { margin: .2em 0 0; } #comments .avatar-image-container img { border: 1px solid #ffffff; } /* Comments ----------------------------------------------- */ .comments .comments-content .icon.blog-author { background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sLFwMeCjjhcOMAAAD+SURBVDjLtZSvTgNBEIe/WRRnm3U8RC1neQdsm1zSBIU9VVF1FkUguQQsD9ITmD7ECZIJSE4OZo9stoVjC/zc7ky+zH9hXwVwDpTAWWLrgS3QAe8AZgaAJI5zYAmc8r0G4AHYHQKVwII8PZrZFsBFkeRCABYiMh9BRUhnSkPTNCtVXYXURi1FpBDgArj8QU1eVXUzfnjv7yP7kwu1mYrkWlU33vs1QNu2qU8pwN0UpKoqokjWwCztrMuBhEhmh8bD5UDqur75asbcX0BGUB9/HAMB+r32hznJgXy2v0sGLBcyAJ1EK3LFcbo1s91JeLwAbwGYu7TP/3ZGfnXYPgAVNngtqatUNgAAAABJRU5ErkJggg==); } .comments .comments-content .loadmore a { border-top: 1px solid #999999; border-bottom: 1px solid #999999; } .comments .comment-thread.inline-thread { background-color: #f9f9f9; } .comments .continue { border-top: 2px solid #999999; } /* Accents ---------------------------------------------- */ .section-columns td.columns-cell { border-left: 1px solid #eeeeee; } .blog-pager { background: transparent none no-repeat scroll top center; } .blog-pager-older-link, .home-link, .blog-pager-newer-link { background-color: #ffffff; padding: 5px; } .footer-outer { border-top: 0 dashed #bbbbbb; } /* Mobile ----------------------------------------------- */ body.mobile { background-size: auto; } .mobile .body-fauxcolumn-outer { background: transparent none repeat scroll top left; } .mobile .body-fauxcolumn-outer .cap-top { background-size: 100% auto; } .mobile .content-outer { -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, .15); box-shadow: 0 0 3px rgba(0, 0, 0, .15); } .mobile .tabs-inner .widget ul { margin-left: 0; margin-right: 0; } .mobile .post { margin: 0; } .mobile .main-inner .column-center-inner .section { margin: 0; } .mobile .date-header span { padding: 0.1em 10px; margin: 0 -10px; } .mobile h3.post-title { margin: 0; } .mobile .blog-pager { background: transparent none no-repeat scroll top center; } .mobile .footer-outer { border-top: none; } .mobile .main-inner, .mobile .footer-inner { background-color: #ffffff; } .mobile-index-contents { color: #222222; } .mobile-link-button { background-color: #121fb3; } .mobile-link-button a:link, .mobile-link-button a:visited { color: #ffffff; } .mobile .tabs-inner .section:first-child { border-top: none; } .mobile .tabs-inner .PageList .widget-content { background-color: #eeeeee; color: #000000; border-top: 1px solid #eeeeee; border-bottom: 1px solid #eeeeee; } .mobile .tabs-inner .PageList .widget-content .pagelist-arrow { border-left: 1px solid #eeeeee; } .content-outer { max-width: 1400px !important; } /* fix header */ #header-inner { width: 100% !important; background-position: right !important; } .titlewrapper { padding: 11px 30px 0 !important; } .descriptionwrapper { margin-bottom: 0 !important; } .description { font-size: 120% !important; } /* suppress things */ .date-header { display: none; } #Attribution1 { display: none; } .post-author, .post-timestamp, .reaction-buttons { display: none; } /* h2: sidebar titles */ /* h3: post title */ .post-title , .entry-title { font-size: 180% !important; margin-top: 0 !important; } .entry-title a:link, .entry-title a:visited, .entry-title a:active{ color: #a03; } #main h2 { color:#333; margin-bottom:.4em; margin-top: 13px; font-size:140%; } #main h3 { color:#333; margin-bottom:.4em; margin-top: 13px; font-size:110%; } #main h4 { color:#333; margin-bottom:.5em; } #sidebar-right-1 a:link, #sidebar-right-1 a:visited, #sidebar-right-1 a:active { color: #666; } #sidebar-right-1 h2 { font-size: 100%; color: #666; } /* disable image box */ element.style { } table.chargers img { height: 18px; } table.chargers img { height: 18px; } .post-body img, .post-body .tr-caption-container { padding: 5px; } .post-body img, .post-body .tr-caption-container, .Profile img, .Image img, .BlogList .item-thumbnail img { padding: 0; background: #ffffff; border: none; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; } /* Special items */ a:link img.hilite, a:visited img.hilite { color: #fff; } a:hover img.hilite, a:hover img.hilite2 { color: #f66; } a:active img.hilite { color: #33c; } .hilite {cursor:zoom-in} pre {color:#000000;border:1px solid #000000;} pre.repl { background-color:#e0e0f0; font-size:120%;} pre.arc { background-color:#e0e0f0; font-size:120%;} pre.code { background-color:#e0f0e0; font-size:120%; white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;text-wrap:unrestricted;} code { font-size: 100%;} blockquote { font-size: 110%; background: transparent url("//static.righto.com/images/blockquote.gif") no-repeat 0 0; margin: 20px 0px; padding: 0px 40px;} div.cite {font-size: .8em;.; font-style: italic; color: #888; margin-bottom: 9px;} a.ref { color: gray;vertical-align: super; text-decoration: none; font-size:60%;margin-left: 2px;} a img.hilite { border: 1px solid; color: #888; z-index: 2; } a img.hilite2, a:active img.hilite2 { border: 1px solid; color: #f6fbf6; } table.chargers { border-width: 1px; border-spacing: 2px; border-style: outset; border-color: gray; border-collapse: collapse; background-color: white; } table.chargers th.maker { padding-right: 5px; text-align: right; } table.chargers th { border-width: 1px; padding: 3px; border-style: inset; border-color: gray; background-color: white; text-align: center; } table.chargers img { height: 18px; } table.chargers td { text-align: center; border-width: 1px; padding: 2px 8px; border-style: inset; border-color: gray; background-color: white; } --></style> <style id='template-skin-1' type='text/css'><!-- body { min-width: 750px; } .content-outer, .content-fauxcolumn-outer, .region-inner { min-width: 750px; max-width: 750px; _width: 750px; } .main-inner .columns { padding-left: 0px; padding-right: 240px; } .main-inner .fauxcolumn-center-outer { left: 0px; right: 240px; /* IE6 does not respect left and right together */ _width: expression(this.parentNode.offsetWidth - parseInt("0px") - parseInt("240px") + 'px'); } .main-inner .fauxcolumn-left-outer { width: 0px; } .main-inner .fauxcolumn-right-outer { width: 240px; } .main-inner .column-left-outer { width: 0px; right: 100%; margin-left: -0px; } .main-inner .column-right-outer { width: 240px; margin-right: -240px; } #layout { min-width: 0; } #layout .content-outer { min-width: 0; width: 800px; } #layout .region-inner { min-width: 0; width: auto; } --></style> <meta content='width=device-width, initial-scale=1.0, maximum-scale=12.0, minimum-scale=.25, user-scalable=yes' name='viewport'/> <meta content='mw8ww70r3jW0GzXY6j1d' name='follow_it-verification-code'/> <link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=6264947694886887540&zx=9fd07c5f-ec4a-4b2d-a7e6-460a1730316b' media='none' onload='if(media!='all')media='all'' rel='stylesheet'/><noscript><link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=6264947694886887540&zx=9fd07c5f-ec4a-4b2d-a7e6-460a1730316b' rel='stylesheet'/></noscript> <meta name='google-adsense-platform-account' content='ca-host-pub-1556223355139109'/> <meta name='google-adsense-platform-domain' content='blogspot.com'/> </head> <body class='loading'> <div class='navbar no-items section' id='navbar'> </div> <div class='body-fauxcolumns'> <div class='fauxcolumn-outer body-fauxcolumn-outer'> <div class='cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left'> <div class='fauxborder-right'></div> <div class='fauxcolumn-inner'> </div> </div> <div class='cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </div> <div class='content'> <div class='content-fauxcolumns'> <div class='fauxcolumn-outer content-fauxcolumn-outer'> <div class='cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left'> <div class='fauxborder-right'></div> <div class='fauxcolumn-inner'> </div> </div> <div class='cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </div> <div class='content-outer'> <div class='content-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left content-fauxborder-left'> <div class='fauxborder-right content-fauxborder-right'></div> <div class='content-inner'> <header> <div class='header-outer'> <div class='header-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left header-fauxborder-left'> <div class='fauxborder-right header-fauxborder-right'></div> <div class='region-inner header-inner'> <div class='header section' id='header'><div class='widget Header' data-version='1' id='Header1'> <div id='header-inner' style='background-image: url("https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-4KXwYe0lQ4HFzhAye9vvRlij2ZYvMbfPCnqEE__1o85Fjo3XgefxJQhWRdwR3EzNWNMWT3yMaj2QZaT9GazqQx3C6oWa3-hBNlRHG7f-Oib-lv1Wq_C2_A0rt8xZgs87iNqzRVKK7H0A/s800/background.jpg"); background-position: left; width: 550px; min-height: 105px; _height: 105px; background-repeat: no-repeat; '> <div class='titlewrapper' style='background: transparent'> <h1 class='title' style='background: transparent; border-width: 0px'> <a href='http://www.righto.com/'> Ken Shirriff's blog </a> </h1> </div> <div class='descriptionwrapper'> <p class='description'><span>Computer history, restoring vintage computers, IC reverse engineering, and whatever</span></p> </div> </div> </div></div> </div> </div> <div class='header-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </header> <div class='tabs-outer'> <div class='tabs-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left tabs-fauxborder-left'> <div class='fauxborder-right tabs-fauxborder-right'></div> <div class='region-inner tabs-inner'> <div class='tabs no-items section' id='crosscol'></div> <div class='tabs no-items section' id='crosscol-overflow'></div> </div> </div> <div class='tabs-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <div class='main-outer'> <div class='main-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left main-fauxborder-left'> <div class='fauxborder-right main-fauxborder-right'></div> <div class='region-inner main-inner'> <div class='columns fauxcolumns'> <div class='fauxcolumn-outer fauxcolumn-center-outer'> <div class='cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left'> <div class='fauxborder-right'></div> <div class='fauxcolumn-inner'> </div> </div> <div class='cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <div class='fauxcolumn-outer fauxcolumn-left-outer'> <div class='cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left'> <div class='fauxborder-right'></div> <div class='fauxcolumn-inner'> </div> </div> <div class='cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <div class='fauxcolumn-outer fauxcolumn-right-outer'> <div class='cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left'> <div class='fauxborder-right'></div> <div class='fauxcolumn-inner'> </div> </div> <div class='cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <!-- corrects IE6 width calculation --> <div class='columns-inner'> <div class='column-center-outer'> <div class='column-center-inner'> <div class='main section' id='main'><div class='widget Blog' data-version='1' id='Blog1'> <div class='blog-posts hfeed'> <div class="date-outer"> <div class="date-posts"> <div class='post-outer'> <div class='post hentry' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='http://www.assoc-amazon.com/e/ir?t=&l=as2&o=1&a=0815341059&camp=217145&creative=399369' itemprop='image_url'/> <meta content='6264947694886887540' itemprop='blogId'/> <meta content='4427802731416594115' itemprop='postId'/> <a name='4427802731416594115'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='http://www.righto.com/2011/07/cells-are-very-fast-and-crowded-places.html'>Cells are very fast and crowded places</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-4427802731416594115' itemprop='description articleBody'> I recently learned that cells are extremely crowded and busy places. I knew there's a lot of activity in cells, but I didn't realize just how much until I was reading <a href="https://www.amazon.com/gp/product/0815341059/ref=as_li_ss_tl?ie=UTF8&tag=rightocom&linkCode=as2&camp=217145&creative=399369&creativeASIN=0815341059">Molecular Biology of the Cell</a><img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=&l=as2&o=1&a=0815341059&camp=217145&creative=399369" style="border:none !important; margin:0px !important;" width="1" />. I was reading this molecular biology textbook to find out what's happened in molecular biology in the last decade or so, and found I had some misconceptions about how fast things happen inside cells. <style type="text/css"> div.cite {font-size: .8em;.; font-style: italic; color: #888; margin-bottom: 9px;} </style> <p> You may have seen the amazing "Inner Life of a Cell" video, which has spectacular animations of the activities inside a cell as a whilte blood cell responding to inflammation. (There's also a <a href="http://multimedia.mcb.harvard.edu/anim_innerlife.html">longer narrated version</a> at the <a href="http://multimedia.mcb.harvard.edu/">BioVisions</a> website.) <p> <iframe width="560" height="315" src="https://www.youtube.com/embed/wJyUtbn0O5Y" frameborder="0" allowfullscreen></iframe> <h3>Cells are very crowded</h3> I imagined cells as big open spaces with lots of stuff happening, perhaps something like Central Park. From the "Inner Life of a Cell" video, or the typical drawing of a cell, it looks like a lot of empty space. But it turns out that cells are crammed full of stuff, more like New Year's Eve at Times Squares. Proteins are packed tightly into cells. The following picture is a representation of how crowded cells really are, with blue RNAs, green ribosomes, and red proteins. <br/> <img src="http://www.ncbi.nlm.nih.gov/books/NBK21068/bin/ch2fu1.jpg"/> <div class="cite">Image: "<a href="http://www.ncbi.nlm.nih.gov/books/NBK26838/figure/A253/?report=objectonly">The structure of the cytoplasm</a>" from Molecular Biology of the Cell. Adapted from D.S. Goodsell, Trends Biochem. Sci. 16:203-206, 1991.</div> I came across another interesting representation of how crowded cells are. This diagram shows a synaptic vesicle, which is the part of a neuron that releases neurotransmitters from one neuron to another. When I saw this diagram, I assumed that the authors crammed all the different proteins into the picture so they could create a nice illustration of the different membrane proteins. But in fact, the diagram below omits 1/3 of the proteins so real membranes are even more crowded. The <a href="http://www.mpibpc.mpg.de/groups/de_groot/pdf/Takamori_Cell_2006.pdf">paper</a> containing this diagram states that instead of thinking of membranes with proteins floating in them like icebergs, we should think of membranes as packed with proteins like a cobblestone pavement. <br/> <img alt="A neural vesicle studded with proteins" src="http://static.righto.com/images/cell-vesicle.png"/> <div class="cite">Image: "<a href="http://www.ncbi.nlm.nih.gov/books/NBK26838/figure/A253/?report=objectonly">Molecular Model of an Average SV</a>" from <a href="http://www.mpibpc.mpg.de/groups/de_groot/pdf/Takamori_Cell_2006.pdf">Molecular Anatomy of a Trafficking Organelle</a>, Takamori et al, Cell. 2006 Nov 17;127(4):831-46. </div> <h3>Molecules move very very fast</h3> You may wonder how things get around inside cells if they are so crowded. It turns out that molecules move unimaginably quickly due to thermal motion. A small molecule such as glucose is cruising around a cell at about 250 miles per hour, while a large protein molecule is moving at <a href="https://books.google.com/books?id=yd61229NHUgC&pg=PA4&dq=%22instantaneous+velocity%22+solution+diffusion&hl=en&ei=9J8OTve_EoS8sQOMn_GWDg&sa=X&oi=book_result&ct=result&resnum=5&ved=0CD8Q6AEwBA#v=onepage&q=%22instantaneous%20velocity%22%20solution%20diffusion&f=true">20 miles per hour</a>. Note that these are actual speeds inside the cell, not scaled-up speeds. I'm not talking about driving through a crowded Times Square at 20 miles per hour; to scale this would be more like driving through Times Square at 20 million miles per hour! <p> Because cells are so crowded, molecules can't get very far without colliding with something. In fact, a molecule will collide with something billions of times a second and bounce off in a different direction. Because of this, molecules are doing a random walk through the cell and diffusing all around. A small molecule can get from one side of a cell to the other in 1/5 of a second. <p> As a result of all this random motion, a typical enzyme can collide with something to react with 500,000 times every second. Watching the video, you might wonder how the different pieces just happen to move to the right place. In reality, they are covering so much ground in the cell so fast that they will be in the "right place" very frequently just by chance. <p> In addition, a typical protein is tumbling around, a million times per second. Imagine proteins crammed together, each rotating at 60 million RPM, with molecules slamming into them billions of times a second. This is what's going on inside a cell. <p> I'm not blaming the makers of "Inner Life of a Cell" for slowing down the action in a cell. If the video were totally realistic, you wouldn't see anything, since the action would be too fast to even see a blur. But keeping the real speed of the cell in mind can clear up a lot of things, such as how molecules find their way around. <p> The incredible speed and density of cells also helps explain why it's so difficult to simulate what's happening inside a cell. Even with a supercomputer, there's way too much going on inside a cell to simulate it without major simplifications. Even <a href="http://www.lanl.gov/news/index.php?fuseaction=home.story&story_id=7428">simulating a single ribosome</a> is a huge computational challenge. <h3>Molecular motors sprint, not walk</h3> Another thing that surprised me about cells is how fast the motors inside cells move. Like a mechanical robot with two lumbering feet, a kinesin motor protein can be seen in the video at the 2 minute mark dragging a monstrous bag-like vesicle along a microtubule track. (This should be what you see in the YouTube preview frame at the top of the page.) These motor proteins move cargo through the cell if diffusion isn't fast enough to get things to their destination, which is especially important in extremely long cells such as neurons. Kinesin motors also help separate cells that are dividing. <p> It's remarkable enough that cells contain these mechanical walkers, but I recently learned that they aren't plodding along, but actually sprint at <a href="http://news.stanford.edu/pr/03/kinesinproof1210.html">100 steps per second</a>. If you watch the video again, imagine it sped up to that rate. <h3>Cells are powered by electric motors spinning at 40,000 rpm</h3> <p> <a href="https://en.wikipedia.org/wiki/Mitochondrion">Mitochondria</a> also provide a fascinating look at just how fast things are inside cells. You may know that mitochondria are the power plants of cells; they take in food molecules, process it through the famous citric acid cycle, and then use oxygen to extract more energy, which is provided to the rest of the cell through molecules of ATP, the cell's "energy currency". <p> <img height="400" src="https://static.righto.com/images/ATPsynthase.gif" /> <div class="cite">Image from <a href="https://pdb101.rcsb.org/motm/72">David Goodsell</a>, ATP Synthase, December 2005 Molecule of the Month </div> Mitochondria have many strange features - such as their own DNA separate from the cell's - but one of their strangest features is they use electric motors to produce ATP. Mitochondria use the energy from oxidizing food to pump protons out of the cell, creating a voltage of 170mV across the cell. This voltage causes a complex enzyme to spin, and the mechanical energy of this spinning enzyme creates the ATP molecules that energize the rest of the cell. <p> The same Harvard group that created "Inner Life of a Cell" also created a two minute sequel, "Powering the Cell: Mitochondria", which shows mitochondria in action. Around the 1:10 mark, the video shows the rotating ATP synthase enzymes creating glowing ATP molecules. <p> <iframe width="560" height="349" src="https://www.youtube.com/embed/RrS2uROUjK4" frameborder="0" allowfullscreen></iframe> <p> Watching the leisurely turning enzymes illustrates one of the amazingly complex mechanisms in a cell. But what really surprised me was to learn that in real life, these enzymes spin at up to <a href="http://www.jbc.org/content/281/7/4126.full">700 revolutions per second</a>, which is faster than a jet engine. As I said earlier, cells are really, really fast. <p> If you're interested in more about this mechanical motor, you'll probably enjoy PDB's <A href="http://www.rcsb.org/pdb/101/motm.do?momID=72">molecule of the month</a> article. <h3>Conclusions</h3> The molecules inside a cell are moving almost unimaginably fast. Understanding this speed helped me comprehend how cells could carry out all their tasks, and how the different components of a cell could manage to be in the right place at the right time. <p> The BioVisions videos are very interesting, and I highly recommend watching them. (I also found Molecular Biology of the Cell very interesting and readable, but as it is a 1200+ page text, I don't imagine many people would read it unless they had to. But if you're still reading this article, maybe you're one of those people.) <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'><span class='post-comment-link'> <a class='comment-link' href='https://www.blogger.com/comment/fullpage/post/6264947694886887540/4427802731416594115' onclick=''> 12 comments: </a> </span> <span class='post-icons'> <span class='item-action'> <a href='https://www.blogger.com/email-post/6264947694886887540/4427802731416594115' title='Email Post'> <img alt='' class='icon-action' height='13' src='http://img1.blogblog.com/img/icon18_email.gif' width='18'/> </a> </span> <span class='item-control blog-admin pid-1138732533'> <a href='https://www.blogger.com/post-edit.g?blogID=6264947694886887540&postID=4427802731416594115&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <span class='post-backlinks post-comment-link'> </span> <div class='post-share-buttons goog-inline-block'> <a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=4427802731416594115&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=4427802731416594115&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=4427802731416594115&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=4427802731416594115&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=4427802731416594115&target=pinterest' target='_blank' title='Share to Pinterest'><span class='share-button-link-text'>Share to Pinterest</span></a> </div> </div> <div class='post-footer-line post-footer-line-2'><span class='post-labels'> Labels: <a href='http://www.righto.com/search/label/genome' rel='tag'>genome</a> </span> </div> <div class='post-footer-line post-footer-line-3'></div> </div> </div> </div> </div></div> <div class="date-outer"> <div class="date-posts"> <div class='post-outer'> <div class='post hentry' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='http://latex.codecogs.com/gif.latex?\fn_phv&space;P(m,n)&space;=&space;\frac{P(m+1,n)&space;+&space;P(m,n+1)}{2}' itemprop='image_url'/> <meta content='6264947694886887540' itemprop='blogId'/> <meta content='6355405232359488656' itemprop='postId'/> <a name='6355405232359488656'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='http://www.righto.com/2011/07/mathematics-of-volleyball.html'>The Mathematics of Volleyball</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-6355405232359488656' itemprop='description articleBody'> Recently I was at a multi-day volleyball tournament, which gave me plenty of time to ponder the mathematics of the game. At different points in the game, I'd wonder what the odds were of each team winning. And when a team gained or lost a point, I'd wonder how important that point was. Clearly, if the score was 24-24, gaining a point made a huge difference. But how much difference did getting one point at the beginning of the game matter? It seemed like it didn't matter much, but did it? <p> I decided to analyze the game mathematically. I made the simplifying assumption that each team had 50-50 odds of winning each point. I found the analysis interesting, and it turns out to have close ties to Pascal's Triangle, so I'm posting it here in case anyone else is interested. <p> Volleyball games are scored using the <a href="https://en.wikipedia.org/wiki/Volleyball#Scoring">rally point system</a>, which means that one team gets a point on every serve. (Back in the olden days, volleyball used side-out scoring, which meant that only the serving team could get a point. Fortunately, rally point scoring is more mathematically tractable. Rally point scoring also keeps the game advancing faster.) The winner of each match is the best out of three sets (a set is the same as a game). In the league I was watching, the winner of a game is the first team to get 25 points and be ahead by at least 2. (Except if a third tiebreaker game is needed, it only goes to 15 points instead of 25.) <p> A few cases are easy to analyze mathematically. If we assume each team has a 50-50 chance of scoring each point and the score is tied, each team obviously has a 50% chance of winning the game. (With side-out scoring, it makes a difference which team is serving, but for rally point scoring we avoid that complication.) The second obvious case is if a team has 25 points and the other team has 23 or fewer points, the first team has 100% chance of winning (since they already won). <p> I will use the notation P(m,n) for the chance of the first team wining if the score is m to n. From above, P(n, n) = 50%, P(25, n) = 100% for n <= 23, and P(m, 25) = 0% for m <= 23. <p> The chance of winning in other cases can be calculated from the assumption that a team has a 50% chance of winning the point, and a 50% chance of losing: the chance of winning is the average of these two circumstances. Mathematically, we get the simple recurrence: <p> <img src="http://latex.codecogs.com/gif.latex?\fn_phv&space;P(m,n)&space;=&space;\frac{P(m+1,n)&space;+&space;P(m,n+1)}{2}"> <p> For instance, if the score is 25-24, if the first team scores, they win. If the second team scores, then the score is tied. In the first (winning) case, the first team wins 100%, and in the second (tied) case, the first team wins 50%. Thus, on average they will win 75% of the time from a 25-24 lead. That is, P(25, 24) = 75%, and by symmetry P(24, 25) = 25%. (Surprisingly, these are the only scores where the requirement to win by 2 points changes the odds.) <p> Likewise, if the score is 24-23, half the time the first team will score a point and win, and half the time the second team will score a point and tie. So the first team has 1/2 * 100% + 1/2 * 50% = 75% chance of winning, and P(24, 23) = 75%. <p> More interesting is if the score is 24-22, half the time the first team will score a point and win, and half the time the second team will score, making the score 24-23. We know from above that the first team has a 75% chance of winning from 24-23, so P(24, 22) = 1/2 * 100% + 1/2 * 75% = 87.5%. <p> We can use the recurrence to work backwards and find the probability of winning from any score. The following table shows the probability of winning for each score. The first team has the score on the left, and the second team has the score on the top. <h4>Table with odds of winning when the score is m to n</h4> <style type='text/css'> table.volleyball {border-collapse: collapse; font-size: .7em; z-index:2} table.volleyball td {border: 1px solid #ddd; padding: 2px; text-align: right;} </style> <table class="volleyball"><tr><th></th><th>0</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th><th>10</th><th>11</th><th>12</th><th>13</th><th>14</th><th>15</th><th>16</th><th>17</th><th>18</th><th>19</th><th>20</th><th>21</th><th>22</th><th>23</th><th>24</th><th>25</th></tr><tr><th>0</th><td style="background: #808080">50%</td><td style="background: #8e7180">44%</td><td style="background: #9d6280">39%</td><td style="background: #ab5480">33%</td><td style="background: #b94680">28%</td><td style="background: #c53a80">23%</td><td style="background: #d12e80">18%</td><td style="background: #db2480">14%</td><td style="background: #e41b80">11%</td><td style="background: #eb1480">8%</td><td style="background: #f10e80">5%</td><td style="background: #f60980">4%</td><td style="background: #f90680">2%</td><td style="background: #fb0480">1%</td><td style="background: #fd0280">1%</td><td style="background: #fe0180">0%</td><td style="background: #fe0180">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>1</th><td style="background: #718e80">56%</td><td style="background: #808080">50%</td><td style="background: #8e7180">44%</td><td style="background: #9d6280">38%</td><td style="background: #ac5380">33%</td><td style="background: #ba4580">27%</td><td style="background: #c73880">22%</td><td style="background: #d32c80">17%</td><td style="background: #dd2280">13%</td><td style="background: #e61980">10%</td><td style="background: #ed1280">7%</td><td style="background: #f20d80">5%</td><td style="background: #f70880">3%</td><td style="background: #fa0580">2%</td><td style="background: #fc0380">1%</td><td style="background: #fd0280">1%</td><td style="background: #fe0180">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>2</th><td style="background: #629d80">61%</td><td style="background: #718e80">56%</td><td style="background: #808080">50%</td><td style="background: #8f7080">44%</td><td style="background: #9e6180">38%</td><td style="background: #ad5280">32%</td><td style="background: #bb4480">27%</td><td style="background: #c83780">21%</td><td style="background: #d42b80">17%</td><td style="background: #de2180">13%</td><td style="background: #e71880">9%</td><td style="background: #ee1180">7%</td><td style="background: #f40b80">4%</td><td style="background: #f80780">3%</td><td style="background: #fb0480">2%</td><td style="background: #fc0380">1%</td><td style="background: #fe0180">1%</td><td style="background: #fe0180">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>3</th><td style="background: #54ab80">67%</td><td style="background: #629d80">62%</td><td style="background: #708f80">56%</td><td style="background: #808080">50%</td><td style="background: #8f7080">44%</td><td style="background: #9f6080">38%</td><td style="background: #ae5180">32%</td><td style="background: #bc4380">26%</td><td style="background: #ca3580">21%</td><td style="background: #d62980">16%</td><td style="background: #e01f80">12%</td><td style="background: #e91680">9%</td><td style="background: #f00f80">6%</td><td style="background: #f50a80">4%</td><td style="background: #f90680">3%</td><td style="background: #fb0480">1%</td><td style="background: #fd0280">1%</td><td style="background: #fe0180">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>4</th><td style="background: #46b980">72%</td><td style="background: #53ac80">67%</td><td style="background: #619e80">62%</td><td style="background: #708f80">56%</td><td style="background: #808080">50%</td><td style="background: #8f7080">44%</td><td style="background: #9f6080">37%</td><td style="background: #af5080">31%</td><td style="background: #be4180">26%</td><td style="background: #cb3480">20%</td><td style="background: #d72880">16%</td><td style="background: #e21d80">11%</td><td style="background: #ea1580">8%</td><td style="background: #f10e80">6%</td><td style="background: #f60980">4%</td><td style="background: #fa0580">2%</td><td style="background: #fc0380">1%</td><td style="background: #fd0280">1%</td><td style="background: #fe0180">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>5</th><td style="background: #3ac580">77%</td><td style="background: #45ba80">73%</td><td style="background: #52ad80">68%</td><td style="background: #609f80">62%</td><td style="background: #708f80">56%</td><td style="background: #808080">50%</td><td style="background: #906f80">44%</td><td style="background: #a05f80">37%</td><td style="background: #b04f80">31%</td><td style="background: #bf4080">25%</td><td style="background: #cd3280">20%</td><td style="background: #d92680">15%</td><td style="background: #e41b80">11%</td><td style="background: #ec1380">7%</td><td style="background: #f20d80">5%</td><td style="background: #f70880">3%</td><td style="background: #fa0580">2%</td><td style="background: #fd0280">1%</td><td style="background: #fe0180">0%</td><td style="background: #fe0180">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>6</th><td style="background: #2ed180">82%</td><td style="background: #38c780">78%</td><td style="background: #44bb80">73%</td><td style="background: #51ae80">68%</td><td style="background: #609f80">63%</td><td style="background: #6f9080">56%</td><td style="background: #808080">50%</td><td style="background: #906f80">43%</td><td style="background: #a15e80">37%</td><td style="background: #b24d80">30%</td><td style="background: #c13e80">24%</td><td style="background: #cf3080">19%</td><td style="background: #db2480">14%</td><td style="background: #e51a80">10%</td><td style="background: #ee1180">7%</td><td style="background: #f40b80">4%</td><td style="background: #f80780">3%</td><td style="background: #fb0480">1%</td><td style="background: #fd0280">1%</td><td style="background: #fe0180">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>7</th><td style="background: #24db80">86%</td><td style="background: #2cd380">83%</td><td style="background: #37c880">79%</td><td style="background: #43bc80">74%</td><td style="background: #50af80">69%</td><td style="background: #5fa080">63%</td><td style="background: #6f9080">57%</td><td style="background: #808080">50%</td><td style="background: #916e80">43%</td><td style="background: #a25d80">36%</td><td style="background: #b34c80">30%</td><td style="background: #c33c80">24%</td><td style="background: #d12e80">18%</td><td style="background: #dd2280">13%</td><td style="background: #e71880">9%</td><td style="background: #ef1080">6%</td><td style="background: #f50a80">4%</td><td style="background: #f90680">2%</td><td style="background: #fc0380">1%</td><td style="background: #fe0180">1%</td><td style="background: #fe0180">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>8</th><td style="background: #1be480">89%</td><td style="background: #22dd80">87%</td><td style="background: #2bd480">83%</td><td style="background: #35ca80">79%</td><td style="background: #41be80">74%</td><td style="background: #4fb080">69%</td><td style="background: #5ea180">63%</td><td style="background: #6e9180">57%</td><td style="background: #808080">50%</td><td style="background: #916e80">43%</td><td style="background: #a35c80">36%</td><td style="background: #b44b80">29%</td><td style="background: #c53a80">23%</td><td style="background: #d32c80">17%</td><td style="background: #df2080">12%</td><td style="background: #e91680">8%</td><td style="background: #f10e80">5%</td><td style="background: #f70880">3%</td><td style="background: #fb0480">2%</td><td style="background: #fd0280">1%</td><td style="background: #fe0180">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>9</th><td style="background: #14eb80">92%</td><td style="background: #19e680">90%</td><td style="background: #21de80">87%</td><td style="background: #29d680">84%</td><td style="background: #34cb80">80%</td><td style="background: #40bf80">75%</td><td style="background: #4db280">70%</td><td style="background: #5da280">64%</td><td style="background: #6e9180">57%</td><td style="background: #808080">50%</td><td style="background: #926d80">43%</td><td style="background: #a45b80">36%</td><td style="background: #b64980">29%</td><td style="background: #c73880">22%</td><td style="background: #d52a80">16%</td><td style="background: #e21d80">11%</td><td style="background: #ec1380">8%</td><td style="background: #f30c80">5%</td><td style="background: #f80780">3%</td><td style="background: #fc0380">1%</td><td style="background: #fd0280">1%</td><td style="background: #fe0180">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>10</th><td style="background: #0ef180">95%</td><td style="background: #12ed80">93%</td><td style="background: #18e780">91%</td><td style="background: #1fe080">88%</td><td style="background: #28d780">84%</td><td style="background: #32cd80">80%</td><td style="background: #3ec180">76%</td><td style="background: #4cb380">70%</td><td style="background: #5ca380">64%</td><td style="background: #6d9280">57%</td><td style="background: #808080">50%</td><td style="background: #936c80">43%</td><td style="background: #a65980">35%</td><td style="background: #b84780">28%</td><td style="background: #c93680">21%</td><td style="background: #d82780">15%</td><td style="background: #e41b80">11%</td><td style="background: #ee1180">7%</td><td style="background: #f50a80">4%</td><td style="background: #fa0580">2%</td><td style="background: #fd0280">1%</td><td style="background: #fe0180">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>11</th><td style="background: #09f680">96%</td><td style="background: #0df280">95%</td><td style="background: #11ee80">93%</td><td style="background: #16e980">91%</td><td style="background: #1de280">89%</td><td style="background: #26d980">85%</td><td style="background: #30cf80">81%</td><td style="background: #3cc380">76%</td><td style="background: #4bb480">71%</td><td style="background: #5ba480">64%</td><td style="background: #6c9380">57%</td><td style="background: #808080">50%</td><td style="background: #936c80">42%</td><td style="background: #a75880">35%</td><td style="background: #ba4580">27%</td><td style="background: #cb3480">20%</td><td style="background: #da2580">14%</td><td style="background: #e71880">9%</td><td style="background: #f00f80">6%</td><td style="background: #f70880">3%</td><td style="background: #fb0480">2%</td><td style="background: #fd0280">1%</td><td style="background: #fe0180">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>12</th><td style="background: #06f980">98%</td><td style="background: #08f780">97%</td><td style="background: #0bf480">96%</td><td style="background: #0ff080">94%</td><td style="background: #15ea80">92%</td><td style="background: #1be480">89%</td><td style="background: #24db80">86%</td><td style="background: #2ed180">82%</td><td style="background: #3ac580">77%</td><td style="background: #49b680">71%</td><td style="background: #59a680">65%</td><td style="background: #6c9380">58%</td><td style="background: #808080">50%</td><td style="background: #946b80">42%</td><td style="background: #a95680">34%</td><td style="background: #bc4380">26%</td><td style="background: #ce3180">19%</td><td style="background: #dd2280">13%</td><td style="background: #ea1580">8%</td><td style="background: #f30c80">5%</td><td style="background: #f90680">2%</td><td style="background: #fc0380">1%</td><td style="background: #fe0180">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>13</th><td style="background: #04fb80">99%</td><td style="background: #05fa80">98%</td><td style="background: #07f880">97%</td><td style="background: #0af580">96%</td><td style="background: #0ef180">94%</td><td style="background: #13ec80">93%</td><td style="background: #1ae580">90%</td><td style="background: #22dd80">87%</td><td style="background: #2cd380">83%</td><td style="background: #38c780">78%</td><td style="background: #47b880">72%</td><td style="background: #58a780">65%</td><td style="background: #6b9480">58%</td><td style="background: #808080">50%</td><td style="background: #956a80">42%</td><td style="background: #aa5580">33%</td><td style="background: #bf4080">25%</td><td style="background: #d12e80">18%</td><td style="background: #e11e80">12%</td><td style="background: #ed1280">7%</td><td style="background: #f50a80">4%</td><td style="background: #fb0480">2%</td><td style="background: #fd0280">1%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>14</th><td style="background: #02fd80">99%</td><td style="background: #03fc80">99%</td><td style="background: #04fb80">98%</td><td style="background: #06f980">97%</td><td style="background: #09f680">96%</td><td style="background: #0df280">95%</td><td style="background: #11ee80">93%</td><td style="background: #18e780">91%</td><td style="background: #20df80">88%</td><td style="background: #2ad580">84%</td><td style="background: #36c980">79%</td><td style="background: #45ba80">73%</td><td style="background: #56a980">66%</td><td style="background: #6a9580">58%</td><td style="background: #808080">50%</td><td style="background: #966980">41%</td><td style="background: #ac5380">32%</td><td style="background: #c23d80">24%</td><td style="background: #d52a80">17%</td><td style="background: #e41b80">11%</td><td style="background: #f00f80">6%</td><td style="background: #f80780">3%</td><td style="background: #fc0380">1%</td><td style="background: #fe0180">0%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>15</th><td style="background: #01fe80">100%</td><td style="background: #02fd80">99%</td><td style="background: #03fc80">99%</td><td style="background: #04fb80">99%</td><td style="background: #05fa80">98%</td><td style="background: #08f780">97%</td><td style="background: #0bf480">96%</td><td style="background: #10ef80">94%</td><td style="background: #16e980">92%</td><td style="background: #1de280">89%</td><td style="background: #27d880">85%</td><td style="background: #34cb80">80%</td><td style="background: #43bc80">74%</td><td style="background: #55aa80">67%</td><td style="background: #699680">59%</td><td style="background: #808080">50%</td><td style="background: #976880">41%</td><td style="background: #af5080">31%</td><td style="background: #c53a80">23%</td><td style="background: #d92680">15%</td><td style="background: #e81780">9%</td><td style="background: #f30c80">5%</td><td style="background: #fa0580">2%</td><td style="background: #fe0180">1%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>16</th><td style="background: #01fe80">100%</td><td style="background: #01fe80">100%</td><td style="background: #01fe80">99%</td><td style="background: #02fd80">99%</td><td style="background: #03fc80">99%</td><td style="background: #05fa80">98%</td><td style="background: #07f880">97%</td><td style="background: #0af580">96%</td><td style="background: #0ef180">95%</td><td style="background: #13ec80">92%</td><td style="background: #1be480">89%</td><td style="background: #25da80">86%</td><td style="background: #31ce80">81%</td><td style="background: #40bf80">75%</td><td style="background: #53ac80">68%</td><td style="background: #689780">59%</td><td style="background: #808080">50%</td><td style="background: #996680">40%</td><td style="background: #b24d80">30%</td><td style="background: #c93680">21%</td><td style="background: #dd2280">13%</td><td style="background: #ec1380">7%</td><td style="background: #f70880">3%</td><td style="background: #fc0380">1%</td><td style="background: #ff0080">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>17</th><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #01fe80">100%</td><td style="background: #01fe80">100%</td><td style="background: #02fd80">99%</td><td style="background: #02fd80">99%</td><td style="background: #04fb80">99%</td><td style="background: #06f980">98%</td><td style="background: #08f780">97%</td><td style="background: #0cf380">95%</td><td style="background: #11ee80">93%</td><td style="background: #18e780">91%</td><td style="background: #22dd80">87%</td><td style="background: #2ed180">82%</td><td style="background: #3dc280">76%</td><td style="background: #50af80">69%</td><td style="background: #669980">60%</td><td style="background: #808080">50%</td><td style="background: #9a6580">40%</td><td style="background: #b54a80">29%</td><td style="background: #ce3180">19%</td><td style="background: #e21d80">11%</td><td style="background: #f10e80">5%</td><td style="background: #fa0580">2%</td><td style="background: #fe0180">0%</td><td style="background: #ff0080">0%</td></tr><tr><th>18</th><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #01fe80">100%</td><td style="background: #01fe80">100%</td><td style="background: #02fd80">99%</td><td style="background: #03fc80">99%</td><td style="background: #04fb80">98%</td><td style="background: #07f880">97%</td><td style="background: #0af580">96%</td><td style="background: #0ff080">94%</td><td style="background: #15ea80">92%</td><td style="background: #1ee180">88%</td><td style="background: #2ad580">83%</td><td style="background: #3ac580">77%</td><td style="background: #4db280">70%</td><td style="background: #659a80">60%</td><td style="background: #808080">50%</td><td style="background: #9c6380">39%</td><td style="background: #b94680">27%</td><td style="background: #d32c80">17%</td><td style="background: #e81780">9%</td><td style="background: #f60980">4%</td><td style="background: #fd0280">1%</td><td style="background: #ff0080">0%</td></tr><tr><th>19</th><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #01fe80">100%</td><td style="background: #01fe80">100%</td><td style="background: #01fe80">99%</td><td style="background: #02fd80">99%</td><td style="background: #03fc80">99%</td><td style="background: #05fa80">98%</td><td style="background: #08f780">97%</td><td style="background: #0cf380">95%</td><td style="background: #12ed80">93%</td><td style="background: #1be480">89%</td><td style="background: #26d980">85%</td><td style="background: #36c980">79%</td><td style="background: #4ab580">71%</td><td style="background: #639c80">61%</td><td style="background: #808080">50%</td><td style="background: #9f6080">38%</td><td style="background: #be4180">25%</td><td style="background: #da2580">14%</td><td style="background: #ef1080">6%</td><td style="background: #fb0480">2%</td><td style="background: #ff0080">0%</td></tr><tr><th>20</th><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #01fe80">100%</td><td style="background: #01fe80">100%</td><td style="background: #02fd80">99%</td><td style="background: #02fd80">99%</td><td style="background: #04fb80">98%</td><td style="background: #06f980">98%</td><td style="background: #0af580">96%</td><td style="background: #0ff080">94%</td><td style="background: #17e880">91%</td><td style="background: #22dd80">87%</td><td style="background: #31ce80">81%</td><td style="background: #46b980">73%</td><td style="background: #609f80">62%</td><td style="background: #808080">50%</td><td style="background: #a25d80">36%</td><td style="background: #c53a80">23%</td><td style="background: #e31c80">11%</td><td style="background: #f70880">3%</td><td style="background: #ff0080">0%</td></tr><tr><th>21</th><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #01fe80">100%</td><td style="background: #01fe80">100%</td><td style="background: #02fd80">99%</td><td style="background: #03fc80">99%</td><td style="background: #04fb80">98%</td><td style="background: #07f880">97%</td><td style="background: #0cf380">95%</td><td style="background: #13ec80">93%</td><td style="background: #1de280">89%</td><td style="background: #2cd380">83%</td><td style="background: #41be80">75%</td><td style="background: #5da280">64%</td><td style="background: #808080">50%</td><td style="background: #a75880">34%</td><td style="background: #cf3080">19%</td><td style="background: #ef1080">6%</td><td style="background: #ff0080">0%</td></tr><tr><th>22</th><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #01fe80">100%</td><td style="background: #01fe80">100%</td><td style="background: #02fd80">99%</td><td style="background: #03fc80">99%</td><td style="background: #05fa80">98%</td><td style="background: #08f780">97%</td><td style="background: #0ef180">95%</td><td style="background: #17e880">91%</td><td style="background: #25da80">86%</td><td style="background: #3ac580">77%</td><td style="background: #58a780">66%</td><td style="background: #808080">50%</td><td style="background: #af5080">31%</td><td style="background: #df2080">12%</td><td style="background: #ff0080">0%</td></tr><tr><th>23</th><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #01fe80">100%</td><td style="background: #01fe80">99%</td><td style="background: #03fc80">99%</td><td style="background: #05fa80">98%</td><td style="background: #09f680">96%</td><td style="background: #10ef80">94%</td><td style="background: #1ce380">89%</td><td style="background: #30cf80">81%</td><td style="background: #50af80">69%</td><td style="background: #808080">50%</td><td style="background: #bf4080">25%</td><td style="background: #ff0080">0%</td></tr><tr><th>24</th><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #01fe80">100%</td><td style="background: #02fd80">99%</td><td style="background: #04fb80">98%</td><td style="background: #08f780">97%</td><td style="background: #10ef80">94%</td><td style="background: #20df80">88%</td><td style="background: #40bf80">75%</td><td style="background: #808080">50%</td><td style="background: #bf4080">25%</td></tr><tr><th>25</th><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #00ff80">100%</td><td style="background: #40bf80">75%</td><td style="background: #808080">50%</td></tr></table> <p> Any particular chance of winning can be easily read from the table. For instance, if the score is 15-7, look where row 15 and column 7 meet, and you'll find that the first team has a 94% chance of winning. (This is P(15, 7) in my notation.) <p> The table illustrates several interesting characteristics of scores. The odds fall away from 50% pretty rapidly as you move away from the diagonal (i.e. away from a tied score). Points matter a lot more near the end of the game, though: you've only got a 1% chance of winning from an 18-24 position, while being six points behind at the beginning (0-6) still gives you an 18% chance of winning. However, a big deficit is almost insurmountable - if you're behind 0-15, you have less than a 1% chance of catching up and winning. (Note that 0% and 100% in the table are not exactly 0% and 100%, because there's always some chance to win or lose.) <p> Note that each score is the average of the score below and the score to the right - these are the cases where the first team gets the point and the second team gets the point. This corresponds directly to the equation above. <p> The table could be extended arbitrarily far if neither team gets a two point lead, but those cases are not particularly interesting. <h3>Generating the score table with dynamic programming</h3> To generate the table, I wrote a simple Arc program to solve the recurrence equation using <a href="https://en.wikipedia.org/wiki/Dynamic_programming">dynamic programming</a>: <pre class="code"> (def scorePercent (s1 s2 max) (if (and (>= s1 max) (>= s1 (+ s2 2))) 100. (and (>= s2 max) (>= s2 (+ s1 2))) 0 (is s1 s2) 50. (/ (+ (scorePercent s1 (+ s2 1) max) (scorePercent (+ s1 1) s2 max)) 2))) </pre> The first two arguments are the current score, and the last argument is the amount to win (25 in this case). For instance: <pre> arc> (scorePercent 24 22 25) 87.5 arc> (scorePercent 20 22 25) 22.65625 </pre> Unfortunately, the straightforward way of solving the problem has a severe performance problem. For instance, computing (scorePercent 5 7 25) takes hours and hours. The problem is that evaluating P(5, 7) requires calculating two cases: P(6, 7) and P(5, 8). Each of those requires two cases, each of which requires two cases, and so on. The result is an exponential number of evaluations, which takes a very very long time as the scores get lower. Most of these evaluations calculate the same values over and over, which is just wasted work. For instance, P(6, 8) is computed in order to compute P(6, 7) and P(6, 8) is computed again in order to compute P(5, 8). <p> There are a couple ways to improve performance. The hard way of solving the dynamic programming problem without this exponential blowup is to carefully determine an order in which each value can be calculated exactly once by working backwards, until you end up with the desired value. For instance, if the values are calculated going up the columns from right to left, each value can be computed immediately from two values that have already been computed, until we end up efficiently computing the whole table in approximately 25*25 steps. This requires careful coding to step through the table in the right order and to save each result as it is calculated. It's not too hard, but there's a much easier way. <p> The easy way of solving the problem is with <a href="https://en.wikipedia.org/wiki/Memoization">memoization</a> - when an intermediate value is calculated, remember its value in case you need it again, instead of calculating it over and over. With memoization, we can compute the results in any order we want, and automatically each result will only be computed once. <p> In Arc, memoization can be implemented simply by defining a function with <a href="http://files.arcfn.com/doc/variables.html#defmemo">defmemo</a>, which will automatically memoize the results of the function evaluation: <pre class="code"> (defmemo scorePercent (s1 s2 max) (if (and (>= s1 max) (>= s1 (+ s2 2))) 100. (and (>= s2 max) (>= s2 (+ s1 2))) 0 (is s1 s2) 50. (/ (+ (scorePercent s1 (+ s2 1) max) (scorePercent (+ s1 1) s2 max)) 2))) </pre> With this simple change, results are nearly instantaneous, rather than taking hours. <p> The above function generates a single entry in the table. To generate the full table in HTML with colored cells, I used a simple loop and Arc's <a href="http://files.arcfn.com/doc/html.html">HTML generating operations</a>. If you're interested in <a href="http://arclanguage.org">Arc programming</a>, the full code can be downloaded <a href="http://static.righto.com/files/volley.arc">here</a>. <h3>Mathematical analysis</h3> Instead of computing the probabilities through dynamic programming, it is possible to come up with a mathematical solution. After studying the values for a while, I realized rather surprisingly that the probabilities are closely tied to <a href="https://en.wikipedia.org/wiki/Pascal%27s_triangle">Pascal's Triangle</a>. You may be familiar with Pascal's Triangle, where each element is the sum of the two elements above it (with 1's along the edges), forming a table of binomial coefficients: <h4>Pascal's Triangle</h4> <img alt="Pascal's triangle" src="http://static.righto.com/images/volleyball-pascal.gif"> <p> The game probabilities come from the triangle of partial sums of binomial coefficients, which is a lesser-known sequence that is easily derived from Pascal's Triangle. This sequence, T(n, k) is formed by summing the first k elements in the corresponding row of Pascal's Triangle. That is, the first element is the first element in the same row of Pascal's triangle, the second is the sum of the first two elements in Pascal's triangle, the third is the sum of the first three, etc. <h4>T - the partial row sums of Pascal's Triangle</h4> <img alt="Partial row sums in Pascal's triangle" src="http://static.righto.com/images/volleyball-t.gif"> <br/> Mathematically, this triangle T(n, k) is defined by: <p/> <img src="http://latex.codecogs.com/gif.latex?\fn_phv T(n, k) =\sum_{i=0}^{k}\binom{n}{i}" title="\fn_phv T(n, k) =\sum_{i=0}^{k}\binom{n}{i}" /> <br/> As with Pascal's Triangle, each element is the sum of the two above it, but now the right-hand border is powers of 2. This triangle is discussed in detail in the <a href="https://oeis.org/A008949">Online Encyclopedia of Integer Sequences</a>. Surprisingly, this triangle is closely connected with distances in a hypercube, <a href="https://en.wikipedia.org/wiki/Reed%E2%80%93Muller_code">error-correcting codes</a>, and <a href="https://en.wikipedia.org/wiki/Lazy_caterer's_sequence">how many pieces</a> an n-dimensional cake can be cut into. <p> With function T defined above, the volleyball winning probabilities are given simply by: <p/> <img src="http://latex.codecogs.com/gif.latex?\fn_phv P(25-a, 25-b) = \frac{T(a+b-1,b-1)}{2^{a+b-1}} = \frac {\sum_{i=0}^{b-1}\binom{a+b-1}{i}}{2^{a+b-1}}" title="\fn_phv P(25-a, 25-b) = \frac{T(a+b-1,b-1)}{2^{a+b-1}} = \frac {\sum_{i=0}^{b-1}\binom{a+b-1}{i}}{2^{a+b-1}}" /> <p> For example, P(23,20) = T(6, 4)/2^6 = 89.0625%, which matches the table. <p> Intuitively, it makes sense that the probabilities are related to Pascal's Triangle, because each entry in Pascal's Triangle is the sum of the two values above, while each probability entry is the average of the value above and the value to the right in the table. Because taking the average divides by 2 in each step, an exponent of 2 appears in the denominator. The equation can be proved straightfowardly by induction. <h3>The importance of a point</h3> Suppose the score is m to n. How important is the next point? I'll consider the importance of the point to be how much more likely the team is to win the game if they win the point versus losing the point. For instance, suppose the score is 18-12, so the first team has a 92% chance of winning (from the previous table). If they win the next point, their chance goes up to 95%, while if they lose the point, their chance drops to 88%. Thus, we'll consider the importance to be 7%. Mathematically, if the score is m to n, I define the importance as P(m+1, n) - P(m, n+1). <h4>Table with importance of the next point when the score is m to n</h4> <table class="volleyball"><tr><th></th><th>0</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th><th>10</th><th>11</th><th>12</th><th>13</th><th>14</th><th>15</th><th>16</th><th>17</th><th>18</th><th>19</th><th>20</th><th>21</th><th>22</th><th>23</th><th>24</th><th>25</th></tr><tr><th>0</th><td style="background: #baba45">11%</td><td style="background: #baba45">11%</td><td style="background: #b9b947">11%</td><td style="background: #b6b649">11%</td><td style="background: #b3b34d">10%</td><td style="background: #aeae51">9%</td><td style="background: #a9a957">8%</td><td style="background: #a3a35d">7%</td><td style="background: #9d9d63">6%</td><td style="background: #979769">5%</td><td style="background: #92926e">4%</td><td style="background: #8d8d73">3%</td><td style="background: #898977">2%</td><td style="background: #86867a">1%</td><td style="background: #84847c">1%</td><td style="background: #82827e">0%</td><td style="background: #81817f">0%</td><td style="background: #81817f">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td></tr><tr><th>1</th><td style="background: #baba45">11%</td><td style="background: #bbbb44">12%</td><td style="background: #bbbb44">12%</td><td style="background: #baba45">11%</td><td style="background: #b7b748">11%</td><td style="background: #b4b44c">10%</td><td style="background: #afaf51">9%</td><td style="background: #a9a957">8%</td><td style="background: #a3a35d">7%</td><td style="background: #9d9d63">6%</td><td style="background: #979769">4%</td><td style="background: #91916f">3%</td><td style="background: #8c8c74">2%</td><td style="background: #888877">2%</td><td style="background: #85857a">1%</td><td style="background: #83837d">1%</td><td style="background: #82827e">0%</td><td style="background: #81817f">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td></tr><tr><th>2</th><td style="background: #b9b947">11%</td><td style="background: #bbbb44">12%</td><td style="background: #bdbd43">12%</td><td style="background: #bdbd43">12%</td><td style="background: #bbbb44">12%</td><td style="background: #b9b947">11%</td><td style="background: #b4b44b">10%</td><td style="background: #afaf50">9%</td><td style="background: #a9a957">8%</td><td style="background: #a3a35d">7%</td><td style="background: #9c9c64">6%</td><td style="background: #96966a">4%</td><td style="background: #909070">3%</td><td style="background: #8b8b74">2%</td><td style="background: #888878">2%</td><td style="background: #85857b">1%</td><td style="background: #83837d">1%</td><td style="background: #81817f">0%</td><td style="background: #81817f">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td></tr><tr><th>3</th><td style="background: #b6b649">11%</td><td style="background: #baba45">11%</td><td style="background: #bdbd43">12%</td><td style="background: #bebe41">12%</td><td style="background: #bebe41">12%</td><td style="background: #bdbd43">12%</td><td style="background: #baba46">11%</td><td style="background: #b5b54a">10%</td><td style="background: #b0b050">9%</td><td style="background: #a9a957">8%</td><td style="background: #a2a25d">7%</td><td style="background: #9b9b64">5%</td><td style="background: #95956b">4%</td><td style="background: #8f8f71">3%</td><td style="background: #8a8a75">2%</td><td style="background: #878779">1%</td><td style="background: #84847c">1%</td><td style="background: #82827e">0%</td><td style="background: #81817f">0%</td><td style="background: #80807f">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td></tr><tr><th>4</th><td style="background: #b3b34d">10%</td><td style="background: #b7b748">11%</td><td style="background: #bbbb44">12%</td><td style="background: #bebe41">12%</td><td style="background: #c0c040">13%</td><td style="background: #c0c040">13%</td><td style="background: #bebe41">12%</td><td style="background: #bbbb45">12%</td><td style="background: #b6b64a">11%</td><td style="background: #b0b050">9%</td><td style="background: #a9a957">8%</td><td style="background: #a2a25e">7%</td><td style="background: #9b9b65">5%</td><td style="background: #94946c">4%</td><td style="background: #8e8e72">3%</td><td style="background: #898976">2%</td><td style="background: #86867a">1%</td><td style="background: #83837d">1%</td><td style="background: #82827e">0%</td><td style="background: #81817f">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td></tr><tr><th>5</th><td style="background: #aeae51">9%</td><td style="background: #b4b44c">10%</td><td style="background: #b9b947">11%</td><td style="background: #bdbd43">12%</td><td style="background: #c0c040">13%</td><td style="background: #c1c13e">13%</td><td style="background: #c1c13e">13%</td><td style="background: #c0c040">13%</td><td style="background: #bcbc44">12%</td><td style="background: #b7b749">11%</td><td style="background: #b0b04f">10%</td><td style="background: #a9a957">8%</td><td style="background: #a1a15e">7%</td><td style="background: #9a9a66">5%</td><td style="background: #93936d">4%</td><td style="background: #8d8d73">3%</td><td style="background: #888878">2%</td><td style="background: #85857b">1%</td><td style="background: #83837d">1%</td><td style="background: #81817f">0%</td><td style="background: #81817f">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td></tr><tr><th>6</th><td style="background: #a9a957">8%</td><td style="background: #afaf51">9%</td><td style="background: #b4b44b">10%</td><td style="background: #baba46">11%</td><td style="background: #bebe41">12%</td><td style="background: #c1c13e">13%</td><td style="background: #c3c33c">13%</td><td style="background: #c3c33c">13%</td><td style="background: #c1c13e">13%</td><td style="background: #bdbd42">12%</td><td style="background: #b8b848">11%</td><td style="background: #b1b14f">10%</td><td style="background: #a9a957">8%</td><td style="background: #a1a15f">6%</td><td style="background: #999967">5%</td><td style="background: #92926e">3%</td><td style="background: #8c8c74">2%</td><td style="background: #878779">1%</td><td style="background: #84847c">1%</td><td style="background: #82827e">0%</td><td style="background: #81817f">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td></tr><tr><th>7</th><td style="background: #a3a35d">7%</td><td style="background: #a9a957">8%</td><td style="background: #afaf50">9%</td><td style="background: #b5b54a">10%</td><td style="background: #bbbb45">12%</td><td style="background: #c0c040">13%</td><td style="background: #c3c33c">13%</td><td style="background: #c5c53a">14%</td><td style="background: #c5c53a">14%</td><td style="background: #c3c33d">13%</td><td style="background: #bfbf41">12%</td><td style="background: #b9b947">11%</td><td style="background: #b1b14f">10%</td><td style="background: #a9a957">8%</td><td style="background: #a0a060">6%</td><td style="background: #989868">5%</td><td style="background: #90906f">3%</td><td style="background: #8a8a75">2%</td><td style="background: #86867a">1%</td><td style="background: #83837d">1%</td><td style="background: #81817f">0%</td><td style="background: #81817f">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td></tr><tr><th>8</th><td style="background: #9d9d63">6%</td><td style="background: #a3a35d">7%</td><td style="background: #a9a957">8%</td><td style="background: #b0b050">9%</td><td style="background: #b6b64a">11%</td><td style="background: #bcbc44">12%</td><td style="background: #c1c13e">13%</td><td style="background: #c5c53a">14%</td><td style="background: #c7c738">14%</td><td style="background: #c7c738">14%</td><td style="background: #c5c53b">14%</td><td style="background: #c0c03f">13%</td><td style="background: #baba46">11%</td><td style="background: #b1b14e">10%</td><td style="background: #a8a857">8%</td><td style="background: #9f9f61">6%</td><td style="background: #96966a">4%</td><td style="background: #8f8f71">3%</td><td style="background: #898977">2%</td><td style="background: #85857b">1%</td><td style="background: #82827e">0%</td><td style="background: #81817f">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td></tr><tr><th>9</th><td style="background: #979769">5%</td><td style="background: #9d9d63">6%</td><td style="background: #a3a35d">7%</td><td style="background: #a9a957">8%</td><td style="background: #b0b050">9%</td><td style="background: #b7b749">11%</td><td style="background: #bdbd42">12%</td><td style="background: #c3c33d">13%</td><td style="background: #c7c738">14%</td><td style="background: #c9c936">14%</td><td style="background: #c9c936">14%</td><td style="background: #c7c739">14%</td><td style="background: #c2c23e">13%</td><td style="background: #baba45">12%</td><td style="background: #b1b14e">10%</td><td style="background: #a8a858">8%</td><td style="background: #9e9e62">6%</td><td style="background: #95956b">4%</td><td style="background: #8d8d73">3%</td><td style="background: #888878">1%</td><td style="background: #84847c">1%</td><td style="background: #82827e">0%</td><td style="background: #81817f">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td></tr><tr><th>10</th><td style="background: #92926e">4%</td><td style="background: #979769">4%</td><td style="background: #9c9c64">6%</td><td style="background: #a2a25d">7%</td><td style="background: #a9a957">8%</td><td style="background: #b0b04f">10%</td><td style="background: #b8b848">11%</td><td style="background: #bfbf41">12%</td><td style="background: #c5c53b">14%</td><td style="background: #c9c936">14%</td><td style="background: #cccc33">15%</td><td style="background: #cccc33">15%</td><td style="background: #c9c936">14%</td><td style="background: #c3c33c">13%</td><td style="background: #bbbb44">12%</td><td style="background: #b1b14e">10%</td><td style="background: #a7a759">8%</td><td style="background: #9c9c64">6%</td><td style="background: #93936d">4%</td><td style="background: #8b8b75">2%</td><td style="background: #86867a">1%</td><td style="background: #83837d">1%</td><td style="background: #81817f">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td></tr><tr><th>11</th><td style="background: #8d8d73">3%</td><td style="background: #91916f">3%</td><td style="background: #96966a">4%</td><td style="background: #9b9b64">5%</td><td style="background: #a2a25e">7%</td><td style="background: #a9a957">8%</td><td style="background: #b1b14f">10%</td><td style="background: #b9b947">11%</td><td style="background: #c0c03f">13%</td><td style="background: #c7c739">14%</td><td style="background: #cccc33">15%</td><td style="background: #cfcf31">15%</td><td style="background: #cfcf31">15%</td><td style="background: #cccc34">15%</td><td style="background: #c5c53a">14%</td><td style="background: #bcbc43">12%</td><td style="background: #b1b14e">10%</td><td style="background: #a6a65a">7%</td><td style="background: #9a9a66">5%</td><td style="background: #91916f">3%</td><td style="background: #898977">2%</td><td style="background: #84847c">1%</td><td style="background: #82827e">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td></tr><tr><th>12</th><td style="background: #898977">2%</td><td style="background: #8c8c74">2%</td><td style="background: #909070">3%</td><td style="background: #95956b">4%</td><td style="background: #9b9b65">5%</td><td style="background: #a1a15e">7%</td><td style="background: #a9a957">8%</td><td style="background: #b1b14f">10%</td><td style="background: #baba46">11%</td><td style="background: #c2c23e">13%</td><td style="background: #c9c936">14%</td><td style="background: #cfcf31">15%</td><td style="background: #d2d22d">16%</td><td style="background: #d2d22d">16%</td><td style="background: #cece31">15%</td><td style="background: #c7c738">14%</td><td style="background: #bdbd42">12%</td><td style="background: #b1b14f">10%</td><td style="background: #a4a45c">7%</td><td style="background: #989868">5%</td><td style="background: #8e8e72">3%</td><td style="background: #878779">1%</td><td style="background: #83837d">1%</td><td style="background: #81817f">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td></tr><tr><th>13</th><td style="background: #86867a">1%</td><td style="background: #888877">2%</td><td style="background: #8b8b74">2%</td><td style="background: #8f8f71">3%</td><td style="background: #94946c">4%</td><td style="background: #9a9a66">5%</td><td style="background: #a1a15f">6%</td><td style="background: #a9a957">8%</td><td style="background: #b1b14e">10%</td><td style="background: #baba45">12%</td><td style="background: #c3c33c">13%</td><td style="background: #cccc34">15%</td><td style="background: #d2d22d">16%</td><td style="background: #d5d52a">17%</td><td style="background: #d5d52a">17%</td><td style="background: #d1d12e">16%</td><td style="background: #c9c936">14%</td><td style="background: #bebe42">12%</td><td style="background: #b0b050">9%</td><td style="background: #a2a25e">7%</td><td style="background: #95956b">4%</td><td style="background: #8b8b75">2%</td><td style="background: #85857b">1%</td><td style="background: #81817e">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td></tr><tr><th>14</th><td style="background: #84847c">1%</td><td style="background: #85857a">1%</td><td style="background: #888878">2%</td><td style="background: #8a8a75">2%</td><td style="background: #8e8e72">3%</td><td style="background: #93936d">4%</td><td style="background: #999967">5%</td><td style="background: #a0a060">6%</td><td style="background: #a8a857">8%</td><td style="background: #b1b14e">10%</td><td style="background: #bbbb44">12%</td><td style="background: #c5c53a">14%</td><td style="background: #cece31">15%</td><td style="background: #d5d52a">17%</td><td style="background: #dada26">18%</td><td style="background: #dada26">18%</td><td style="background: #d5d52b">17%</td><td style="background: #cbcb34">15%</td><td style="background: #bebe41">12%</td><td style="background: #afaf51">9%</td><td style="background: #9f9f61">6%</td><td style="background: #92926e">3%</td><td style="background: #888878">2%</td><td style="background: #83837d">1%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td></tr><tr><th>15</th><td style="background: #82827e">0%</td><td style="background: #83837d">1%</td><td style="background: #85857b">1%</td><td style="background: #878779">1%</td><td style="background: #898976">2%</td><td style="background: #8d8d73">3%</td><td style="background: #92926e">3%</td><td style="background: #989868">5%</td><td style="background: #9f9f61">6%</td><td style="background: #a8a858">8%</td><td style="background: #b1b14e">10%</td><td style="background: #bcbc43">12%</td><td style="background: #c7c738">14%</td><td style="background: #d1d12e">16%</td><td style="background: #dada26">18%</td><td style="background: #dede21">19%</td><td style="background: #dede21">19%</td><td style="background: #d9d927">17%</td><td style="background: #cece32">15%</td><td style="background: #bebe41">12%</td><td style="background: #acac53">9%</td><td style="background: #9b9b64">5%</td><td style="background: #8e8e72">3%</td><td style="background: #85857b">1%</td><td style="background: #81817f">0%</td><td style="background: #808080">0%</td></tr><tr><th>16</th><td style="background: #81817f">0%</td><td style="background: #82827e">0%</td><td style="background: #83837d">1%</td><td style="background: #84847c">1%</td><td style="background: #86867a">1%</td><td style="background: #888878">2%</td><td style="background: #8c8c74">2%</td><td style="background: #90906f">3%</td><td style="background: #96966a">4%</td><td style="background: #9e9e62">6%</td><td style="background: #a7a759">8%</td><td style="background: #b1b14e">10%</td><td style="background: #bdbd42">12%</td><td style="background: #c9c936">14%</td><td style="background: #d5d52b">17%</td><td style="background: #dede21">19%</td><td style="background: #e4e41b">20%</td><td style="background: #e4e41b">20%</td><td style="background: #dddd22">18%</td><td style="background: #d0d030">16%</td><td style="background: #bdbd42">12%</td><td style="background: #a9a957">8%</td><td style="background: #96966a">4%</td><td style="background: #898977">2%</td><td style="background: #82827e">0%</td><td style="background: #808080">0%</td></tr><tr><th>17</th><td style="background: #81817f">0%</td><td style="background: #81817f">0%</td><td style="background: #81817f">0%</td><td style="background: #82827e">0%</td><td style="background: #83837d">1%</td><td style="background: #85857b">1%</td><td style="background: #878779">1%</td><td style="background: #8a8a75">2%</td><td style="background: #8f8f71">3%</td><td style="background: #95956b">4%</td><td style="background: #9c9c64">6%</td><td style="background: #a6a65a">7%</td><td style="background: #b1b14f">10%</td><td style="background: #bebe42">12%</td><td style="background: #cbcb34">15%</td><td style="background: #d9d927">17%</td><td style="background: #e4e41b">20%</td><td style="background: #eaea15">21%</td><td style="background: #eaea15">21%</td><td style="background: #e2e21d">19%</td><td style="background: #d2d22e">16%</td><td style="background: #bcbc44">12%</td><td style="background: #a4a45c">7%</td><td style="background: #909070">3%</td><td style="background: #84847c">1%</td><td style="background: #808080">0%</td></tr><tr><th>18</th><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #81817f">0%</td><td style="background: #81817f">0%</td><td style="background: #82827e">0%</td><td style="background: #83837d">1%</td><td style="background: #84847c">1%</td><td style="background: #86867a">1%</td><td style="background: #898977">2%</td><td style="background: #8d8d73">3%</td><td style="background: #93936d">4%</td><td style="background: #9a9a66">5%</td><td style="background: #a4a45c">7%</td><td style="background: #b0b050">9%</td><td style="background: #bebe41">12%</td><td style="background: #cece32">15%</td><td style="background: #dddd22">18%</td><td style="background: #eaea15">21%</td><td style="background: #f3f30c">23%</td><td style="background: #f3f30c">23%</td><td style="background: #e8e817">21%</td><td style="background: #d3d32c">16%</td><td style="background: #b8b848">11%</td><td style="background: #9c9c64">5%</td><td style="background: #888878">2%</td><td style="background: #808080">0%</td></tr><tr><th>19</th><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #80807f">0%</td><td style="background: #81817f">0%</td><td style="background: #81817f">0%</td><td style="background: #82827e">0%</td><td style="background: #83837d">1%</td><td style="background: #85857b">1%</td><td style="background: #888878">1%</td><td style="background: #8b8b75">2%</td><td style="background: #91916f">3%</td><td style="background: #989868">5%</td><td style="background: #a2a25e">7%</td><td style="background: #afaf51">9%</td><td style="background: #bebe41">12%</td><td style="background: #d0d030">16%</td><td style="background: #e2e21d">19%</td><td style="background: #f3f30c">23%</td><td style="background: #fdfd02">25%</td><td style="background: #fdfd02">25%</td><td style="background: #efef10">22%</td><td style="background: #d3d32c">16%</td><td style="background: #b0b050">9%</td><td style="background: #909070">3%</td><td style="background: #808080">0%</td></tr><tr><th>20</th><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #81817f">0%</td><td style="background: #81817f">0%</td><td style="background: #81817f">0%</td><td style="background: #82827e">0%</td><td style="background: #84847c">1%</td><td style="background: #86867a">1%</td><td style="background: #898977">2%</td><td style="background: #8e8e72">3%</td><td style="background: #95956b">4%</td><td style="background: #9f9f61">6%</td><td style="background: #acac53">9%</td><td style="background: #bdbd42">12%</td><td style="background: #d2d22e">16%</td><td style="background: #e8e817">21%</td><td style="background: #fdfd02">25%</td><td style="background: #ffe700">27%</td><td style="background: #ffe700">27%</td><td style="background: #f7f708">23%</td><td style="background: #cfcf30">16%</td><td style="background: #a0a060">6%</td><td style="background: #808080">0%</td></tr><tr><th>21</th><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #81817f">0%</td><td style="background: #81817f">0%</td><td style="background: #82827e">0%</td><td style="background: #83837d">1%</td><td style="background: #84847c">1%</td><td style="background: #878779">1%</td><td style="background: #8b8b75">2%</td><td style="background: #92926e">3%</td><td style="background: #9b9b64">5%</td><td style="background: #a9a957">8%</td><td style="background: #bcbc44">12%</td><td style="background: #d3d32c">16%</td><td style="background: #efef10">22%</td><td style="background: #ffe700">27%</td><td style="background: #ffbf00">31%</td><td style="background: #ffbf00">31%</td><td style="background: #ffff00">25%</td><td style="background: #c0c040">12%</td><td style="background: #808080">0%</td></tr><tr><th>22</th><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #81817f">0%</td><td style="background: #81817f">0%</td><td style="background: #82827e">0%</td><td style="background: #83837d">1%</td><td style="background: #85857b">1%</td><td style="background: #888878">2%</td><td style="background: #8e8e72">3%</td><td style="background: #96966a">4%</td><td style="background: #a4a45c">7%</td><td style="background: #b8b848">11%</td><td style="background: #d3d32c">16%</td><td style="background: #f7f708">23%</td><td style="background: #ffbf00">31%</td><td style="background: #ff8000">38%</td><td style="background: #ff8000">38%</td><td style="background: #ffff00">25%</td><td style="background: #808080">0%</td></tr><tr><th>23</th><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #81817f">0%</td><td style="background: #81817e">0%</td><td style="background: #83837d">1%</td><td style="background: #85857b">1%</td><td style="background: #898977">2%</td><td style="background: #909070">3%</td><td style="background: #9c9c64">5%</td><td style="background: #b0b050">9%</td><td style="background: #cfcf30">16%</td><td style="background: #ffff00">25%</td><td style="background: #ff8000">38%</td><td style="background: #ff0000">50%</td><td style="background: #ff0000">50%</td><td style="background: #ffff00">25%</td></tr><tr><th>24</th><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #81817f">0%</td><td style="background: #82827e">0%</td><td style="background: #84847c">1%</td><td style="background: #888878">2%</td><td style="background: #909070">3%</td><td style="background: #a0a060">6%</td><td style="background: #c0c040">12%</td><td style="background: #ffff00">25%</td><td style="background: #ff0000">50%</td><td style="background: #ff0000">50%</td><td style="background: #ff0000">50%</td></tr><tr><th>25</th><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #808080">0%</td><td style="background: #ffff00">25%</td><td style="background: #ff0000">50%</td><td style="background: #ff0000">50%</td></tr></table> <p> The values in the table make intuitive sense. If one team is winning by a lot, one more point doesn't make much difference. But if the scores are close, then each point counts. Each point counts a lot more near the end of the game than at the beginning. The first point only makes an 11% difference in the odds of winning, while the if the score is 23-23, the point makes a 50% difference (75% chance of winning if you get the point vs 25% if you miss the point). This table is sort of a derivative of the first table, showing where the values are changing most rapidly. <p> The importance of a point as defined above closely matches the behavior of the spectators. If the score is very close at the end of the game, the audience becomes much more animated compared to earlier in the game. <p> The "importance" is mathematically simpler than the probability of winning derived earlier. If the current score is 25-a, 25-b, then the importance is given by the simple equation: <br/> <img src="http://latex.codecogs.com/gif.latex?\fn_phv \frac {\binom{a+b-2}{a-1}}{2^{a+b-2}}" title="\fn_phv \frac {\binom{a+b-2}{a-1}}{2^{a+b-2}}" /> <br/> This can proved straighforwardly from the equation for P(x, y). For example, if the score is 18-12, the importance is C(7+13-2, 6) / 2^(7+13-2) = 18564 / 262144 = 7.08%. <h3>Conclusions</h3> How useful is this model? Well, it depends on the assumption that each team has an equal chance of winning each point. Of course, most teams are not evenly matched. Even more important is the fact that if a team has a good server, they can quickly rack up 10 points in a row, which throws the model out the window. <p> However, I think the model is still useful, since it provides some quantitative answers to the original questions, and confirms some intuitions. In addition, the mathematics turned out to be more interesting than I was expecting, with the surprising connection to Pascal's Triangle. <h3>Python version</h3> P.S. The code above is in Arc, an obscure language. Here's a version of the code in Python that will be more useful: <pre> solved = {} # Remember values that have been solved # Compute probability of team 1 wining when score is s1 to s2. # Max is the points needed to win (typically 25) # This routine is just a wrapper around scorePercentInt to # remember values that have been computed. def scorePercent(s1, s2, max): if (s1, s2, max) not in solved: solved[s1, s2, max] = scorePercentInt(s1, s2, max) return solved[s1, s2, max] # This routine does the actual calculation def scorePercentInt(s1, s2, max): if s1 >= max and s1 >= s2 + 2: return 100 if s2 >= max and s2 >= s1 + 2: return 0 if s1 == s2: return 50 return (scorePercent(s1, s2+1, max) + scorePercent(s1+1, s2, max)) / 2. for i in range(0, 26): for j in range(0, 26): print '%.3f' % scorePercent(i, j, 25), print </pre> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'><span class='post-comment-link'> <a class='comment-link' href='https://www.blogger.com/comment/fullpage/post/6264947694886887540/6355405232359488656' onclick=''> 16 comments: </a> </span> <span class='post-icons'> <span class='item-action'> <a href='https://www.blogger.com/email-post/6264947694886887540/6355405232359488656' title='Email Post'> <img alt='' class='icon-action' height='13' src='http://img1.blogblog.com/img/icon18_email.gif' width='18'/> </a> </span> <span class='item-control blog-admin pid-1138732533'> <a href='https://www.blogger.com/post-edit.g?blogID=6264947694886887540&postID=6355405232359488656&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <span class='post-backlinks post-comment-link'> </span> <div class='post-share-buttons goog-inline-block'> <a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=6355405232359488656&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=6355405232359488656&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=6355405232359488656&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=6355405232359488656&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=6355405232359488656&target=pinterest' target='_blank' title='Share to Pinterest'><span class='share-button-link-text'>Share to Pinterest</span></a> </div> </div> <div class='post-footer-line post-footer-line-2'><span class='post-labels'> Labels: <a href='http://www.righto.com/search/label/arc' rel='tag'>arc</a>, <a href='http://www.righto.com/search/label/math' rel='tag'>math</a>, <a href='http://www.righto.com/search/label/random' rel='tag'>random</a> </span> </div> <div class='post-footer-line post-footer-line-3'></div> </div> </div> </div> </div></div> </div> <div class='blog-pager' id='blog-pager'> <span id='blog-pager-newer-link'> <a class='blog-pager-newer-link' href='http://www.righto.com/search?updated-max=2012-11-01T19:41:00-07:00&max-results=7&reverse-paginate=true' id='Blog1_blog-pager-newer-link' title='Newer Posts'>Newer Posts</a> </span> <span id='blog-pager-older-link'> <a class='blog-pager-older-link' href='http://www.righto.com/search?updated-max=2011-07-03T22:54:00-07:00&max-results=7' id='Blog1_blog-pager-older-link' title='Older Posts'>Older Posts</a> </span> <a class='home-link' href='http://www.righto.com/'>Home</a> </div> <div class='clear'></div> </div></div> </div> </div> <div class='column-left-outer'> <div class='column-left-inner'> <aside> </aside> </div> </div> <div class='column-right-outer'> <div class='column-right-inner'> <aside> <div class='sidebar section' id='sidebar-right-1'><div class='widget HTML' data-version='1' id='HTML2'> <div class='widget-content'> <style> @import url('https://fonts.googleapis.com/css?family=Montserrat:300,400,500,700'); .form-preview { display: flex; flex-direction: column; justify-content: center; margin-top: 30px; padding: clamp(17px, 5%, 40px) clamp(17px, 7%, 50px); max-width: 350px; min-height: 200px; border-radius: 6px; box-shadow: 0 5px 25px rgba(34, 60, 47, 0.25); } .form-preview, .form-preview *{ box-sizing: border-box; } .form-preview .preview-heading { width: 100%; } .form-preview .preview-heading h5{ margin-top: 0; margin-bottom: 0; } .form-preview .preview-input-field { margin-top: 20px; width: 100%; } .form-preview .preview-input-field input { width: 100%; height: 40px; border-radius: 6px; border: 2px solid #e9e8e8; background-color: #fff; outline: none; } .form-preview .preview-input-field input::placeholder, .form-preview .preview-input-field input { opacity: 0.5; color: #000; font-family: "Montserrat"; font-size: 14px; font-weight: 500; line-height: 20px; text-align: center; } .form-preview .preview-submit-button { margin-top: 10px; width: 100%; } .form-preview .preview-submit-button button { width: 100%; height: 40px; border: 0; border-radius: 6px; line-height: 0px; } .form-preview .preview-submit-button button:hover { cursor: pointer; } </style><form data-v-4c58e686="" action="https://api.follow.it/subscription-form/U3NBTmZKVkI1YVpCa000a0RCZHFiQ3FYMko1cWRTZTN6K3hJdWM2QWxJbE1uVXdXUHZZVzJVQzVLZGh5Y0RCVXB2d2JSTzBobGhuY0FsZnlHbVdFZ2VTN2Q4Vy84RnIxUTgzVlcrbXNIR0Y0aW93d3REM2J6VS9RL0gxWURnV1d8ZWN0YStwUWdWWUFiOTIyWDVGWjdYYVdGZEVNcC9qODZacjlwWXRIcEJQRT0=/8" method="post"><div data-v-4c58e686="" class="form-preview" style="background-color: rgb(255, 255, 255); border-style: solid; border-width: 1px; border-color: rgb(204, 204, 204); position: relative;"><div data-v-4c58e686="" class="preview-heading"><h5 data-v-4c58e686="" style="font-family: Montserrat; font-weight: bold; color: rgb(0, 0, 0); font-size: 12px; text-align: center;">Get new posts by email:</h5></div> <div data-v-4c58e686="" class="preview-input-field"><input data-v-4c58e686="" type="email" name="email" placeholder="Enter your email" spellcheck="false" /></div> <div data-v-4c58e686="" class="preview-submit-button"><button data-v-4c58e686="" type="submit" style="font-family: Montserrat; font-weight: bold; color: rgb(255, 255, 255); font-size: 12px; text-align: center; background-color: rgb(0, 0, 0);">Subscribe</button></div></div></form> </div> <div class='clear'></div> </div><div class='widget HTML' data-version='1' id='HTML3'> <h2 class='title'>About the site</h2> <div class='widget-content'> <a href="https://www.righto.com/p/index.html">Contact info and site index</a> </div> <div class='clear'></div> </div><div class='widget PopularPosts' data-version='1' id='PopularPosts1'> <h2>Popular Posts</h2> <div class='widget-content popular-posts'> <ul> <li> <div class='item-thumbnail-only'> <div class='item-thumbnail'> <a href='http://www.righto.com/2025/02/origin-of-mainframe-term.html' target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_s76SmKZ3b89fyk9OxyZAbWAXxZuHywDpYaFvK2B1nRB2tsVYdDmsc-4Fdyyu4y1vFRJojQ_BguDPxDPgATSo6gd8-093ftlVmKNQMEC2s0DPnqHN4x2MrgwCpu_PE-V-1VfA=w72-h72-p-k-no-nu'/> </a> </div> <div class='item-title'><a href='http://www.righto.com/2025/02/origin-of-mainframe-term.html'>The origin and unexpected evolution of the word "mainframe"</a></div> </div> <div style='clear: both;'></div> </li> <li> <div class='item-thumbnail-only'> <div class='item-thumbnail'> <a href='http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html' target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_sYkHaECDPaEHtBmwV2jwWW038ZpBbsqP_65JEUZEWY4S1zrYaqrjE4OFqEMYcXfum_gPdzCoiIa9GAXJf5kE6_BzkfXVj2lM3TiJWNHHpB8WM=w72-h72-p-k-no-nu'/> </a> </div> <div class='item-title'><a href='http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html'>A Multi-Protocol Infrared Remote Library for the Arduino</a></div> </div> <div style='clear: both;'></div> </li> <li> <div class='item-thumbnail-only'> <div class='item-thumbnail'> <a href='http://www.righto.com/2024/05/blog-post.html' target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_s3461mvHxk6xFTvW-4rT49dsxcRDC7Kf3L0zpzuyEshDI-frFqssSDRiXpdcFFG__JXx3kUtkdjJoIuMe5APxlC8Fpa2HfJdLYyuaIkVgutK3Fpgatj0hOym6iwjl_v8s4ZR_cyCj8TY5Nha36QCyl=w72-h72-p-k-no-nu'/> </a> </div> <div class='item-title'><a href='http://www.righto.com/2024/05/blog-post.html'>Inside a vintage aerospace navigation computer of uncertain purpose</a></div> </div> <div style='clear: both;'></div> </li> <li> <div class='item-thumbnail-only'> <div class='item-thumbnail'> <a href='http://www.righto.com/2012/05/apple-iphone-charger-teardown-quality.html' target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_tzQ8rt_0WEOrnicjqQ-hbM-4zuFkq_9XgpHSkHw7b1sLTb67dEsb74J_dkuEFqyCcQw39GAqZmCEB618B3Rxl2ngSThxVWFIf8c8Qug0rIGsXl-jTtSwbdoIu3nFnadUDtBZiAzSOeI04HGag4DolzRcA=w72-h72-p-k-no-nu'/> </a> </div> <div class='item-title'><a href='http://www.righto.com/2012/05/apple-iphone-charger-teardown-quality.html'>Apple iPhone charger teardown: quality in a tiny expensive package</a></div> </div> <div style='clear: both;'></div> </li> <li> <div class='item-thumbnail-only'> <div class='item-thumbnail'> <a href='http://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html' target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_uI7Ji75pIedsBFwdmDu9LMgenwgFLTHs_cyYzqTI9142gyX2aS8fRjr27edmatVpj_qcn6SnrgvZRW-wvx64gnNVXKlK5yXCZ4uV-YOuxhQbt9lay_ZVGyRueqpFD9C2M1=w72-h72-p-k-no-nu'/> </a> </div> <div class='item-title'><a href='http://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html'>Mining Bitcoin with pencil and paper: 0.67 hashes per day</a></div> </div> <div style='clear: both;'></div> </li> <li> <div class='item-thumbnail-only'> <div class='item-thumbnail'> <a href='http://www.righto.com/2012/10/a-dozen-usb-chargers-in-lab-apple-is.html' target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_vfDBRdZvD7CjiV0Ukna-tzH9A0LTMfAOctJrG10nJ-kVOk3G1_exdILdJ8dvGsJiOVmDfWWDZqVi8nGDC7hFnvlgcy3UW8zbmq_2lQeQJ09ZveLsNhOADxxuEeXsg=w72-h72-p-k-no-nu'/> </a> </div> <div class='item-title'><a href='http://www.righto.com/2012/10/a-dozen-usb-chargers-in-lab-apple-is.html'>A dozen USB chargers in the lab: Apple is very good, but not quite the best</a></div> </div> <div style='clear: both;'></div> </li> <li> <div class='item-thumbnail-only'> <div class='item-thumbnail'> <a href='http://www.righto.com/2014/12/inside-intel-1405-die-photos-of-shift.html' target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_v418oIiYA4hTxQl8hVLyeLuir7nWw3czk6UfNH_67GSRN2uQXPandvZazZjphZv4j2hl9ntSKQ3smqthedGtPrYX0TtmOCCOp3KFuSI9e0woeea2qGTGeRYSKsNzToSw=w72-h72-p-k-no-nu'/> </a> </div> <div class='item-title'><a href='http://www.righto.com/2014/12/inside-intel-1405-die-photos-of-shift.html'>Inside the Intel 1405: die photos of a shift register memory from 1970</a></div> </div> <div style='clear: both;'></div> </li> <li> <div class='item-thumbnail-only'> <div class='item-thumbnail'> <a href='http://www.righto.com/2025/01/its-time-to-abandon-cargo-cult-metaphor.html' target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_sFlAhdTBqS14GtZybGHsKNhKnZb5E4M-LFHGALPJnXVP1jKKbnjzKu8--VQt4L1Euaaamhgj4eH3b8IN02dbAsykkJG2zT9mHrEBgcE2nWGKXmCenqNbbrOa1wYHXZOA=w72-h72-p-k-no-nu'/> </a> </div> <div class='item-title'><a href='http://www.righto.com/2025/01/its-time-to-abandon-cargo-cult-metaphor.html'>The origin of the cargo cult metaphor</a></div> </div> <div style='clear: both;'></div> </li> </ul> <div class='clear'></div> </div> </div><div class='widget BlogSearch' data-version='1' id='BlogSearch1'> <h2 class='title'>Search This Blog</h2> <div class='widget-content'> <div id='BlogSearch1_form'> <form action='http://www.righto.com/search' class='gsc-search-box' target='_top'> <table cellpadding='0' cellspacing='0' class='gsc-search-box'> <tbody> <tr> <td class='gsc-input'> <input autocomplete='off' class='gsc-input' name='q' size='10' title='search' type='text' value=''/> </td> <td class='gsc-search-button'> <input class='gsc-search-button' title='search' type='submit' value='Search'/> </td> </tr> </tbody> </table> </form> </div> </div> <div class='clear'></div> </div><div class='widget Label' data-version='1' id='Label1'> <h2>Labels</h2> <div class='widget-content cloud-label-widget-content'> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/386'>386</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href='http://www.righto.com/search/label/6502'>6502</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/8008'>8008</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href='http://www.righto.com/search/label/8085'>8085</a> </span> <span class='label-size label-size-4'> <a dir='ltr' href='http://www.righto.com/search/label/8086'>8086</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/8087'>8087</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/8088'>8088</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href='http://www.righto.com/search/label/aerospace'>aerospace</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href='http://www.righto.com/search/label/alto'>alto</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href='http://www.righto.com/search/label/analog'>analog</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href='http://www.righto.com/search/label/Apollo'>Apollo</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href='http://www.righto.com/search/label/apple'>apple</a> </span> <span class='label-size label-size-4'> <a dir='ltr' href='http://www.righto.com/search/label/arc'>arc</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href='http://www.righto.com/search/label/arduino'>arduino</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href='http://www.righto.com/search/label/arm'>arm</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/beaglebone'>beaglebone</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href='http://www.righto.com/search/label/bitcoin'>bitcoin</a> </span> <span class='label-size label-size-1'> <a dir='ltr' href='http://www.righto.com/search/label/c%23'>c#</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/cadc'>cadc</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/calculator'>calculator</a> </span> <span class='label-size label-size-4'> <a dir='ltr' href='http://www.righto.com/search/label/chips'>chips</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/css'>css</a> </span> <span class='label-size label-size-1'> <a dir='ltr' href='http://www.righto.com/search/label/datapoint'>datapoint</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/dx7'>dx7</a> </span> <span class='label-size label-size-5'> <a dir='ltr' href='http://www.righto.com/search/label/electronics'>electronics</a> </span> <span class='label-size label-size-1'> <a dir='ltr' href='http://www.righto.com/search/label/f%23'>f#</a> </span> <span class='label-size label-size-1'> <a dir='ltr' href='http://www.righto.com/search/label/fairchild'>fairchild</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/fpga'>fpga</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/fractals'>fractals</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/genome'>genome</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/globus'>globus</a> </span> <span class='label-size label-size-1'> <a dir='ltr' href='http://www.righto.com/search/label/haskell'>haskell</a> </span> <span class='label-size label-size-1'> <a dir='ltr' href='http://www.righto.com/search/label/HP'>HP</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/html5'>html5</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href='http://www.righto.com/search/label/ibm'>ibm</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href='http://www.righto.com/search/label/ibm1401'>ibm1401</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/ibm360'>ibm360</a> </span> <span class='label-size label-size-4'> <a dir='ltr' href='http://www.righto.com/search/label/intel'>intel</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/ipv6'>ipv6</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href='http://www.righto.com/search/label/ir'>ir</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/java'>java</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/javascript'>javascript</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href='http://www.righto.com/search/label/math'>math</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href='http://www.righto.com/search/label/microcode'>microcode</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/oscilloscope'>oscilloscope</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/Pentium'>Pentium</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/photo'>photo</a> </span> <span class='label-size label-size-4'> <a dir='ltr' href='http://www.righto.com/search/label/power%20supply'>power supply</a> </span> <span class='label-size label-size-4'> <a dir='ltr' href='http://www.righto.com/search/label/random'>random</a> </span> <span class='label-size label-size-5'> <a dir='ltr' href='http://www.righto.com/search/label/reverse-engineering'>reverse-engineering</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/sheevaplug'>sheevaplug</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href='http://www.righto.com/search/label/snark'>snark</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href='http://www.righto.com/search/label/space'>space</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/spanish'>spanish</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/synth'>synth</a> </span> <span class='label-size label-size-4'> <a dir='ltr' href='http://www.righto.com/search/label/teardown'>teardown</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/theory'>theory</a> </span> <span class='label-size label-size-1'> <a dir='ltr' href='http://www.righto.com/search/label/unicode'>unicode</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href='http://www.righto.com/search/label/Z-80'>Z-80</a> </span> <div class='clear'></div> </div> </div><div class='widget BlogArchive' data-version='1' id='BlogArchive1'> <h2>Blog Archive</h2> <div class='widget-content'> <div id='ArchiveList'> <div id='BlogArchive1_ArchiveList'> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2025/'> 2025 </a> <span class='post-count' dir='ltr'>(5)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2025/02/'> February </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2025/01/'> January </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2024/'> 2024 </a> <span class='post-count' dir='ltr'>(21)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2024/12/'> December </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2024/11/'> November </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2024/10/'> October </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2024/09/'> September </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2024/08/'> August </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2024/07/'> July </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2024/06/'> June </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2024/05/'> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2024/04/'> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2024/03/'> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2024/02/'> February </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2024/01/'> January </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2023/'> 2023 </a> <span class='post-count' dir='ltr'>(35)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2023/12/'> December </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2023/11/'> November </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2023/10/'> October </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2023/09/'> September </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2023/08/'> August </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2023/07/'> July </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2023/05/'> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2023/04/'> April </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2023/03/'> March </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2023/02/'> February </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2023/01/'> January </a> <span class='post-count' dir='ltr'>(8)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2022/'> 2022 </a> <span class='post-count' dir='ltr'>(18)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2022/11/'> November </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2022/08/'> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2022/07/'> July </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2022/06/'> June </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2022/05/'> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2022/04/'> April </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2022/03/'> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2022/02/'> February </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2022/01/'> January </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2021/'> 2021 </a> <span class='post-count' dir='ltr'>(26)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2021/12/'> December </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2021/11/'> November </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2021/09/'> September </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2021/08/'> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2021/07/'> July </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2021/06/'> June </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2021/05/'> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2021/04/'> April </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2021/03/'> March </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2021/02/'> February </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2021/01/'> January </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2020/'> 2020 </a> <span class='post-count' dir='ltr'>(33)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2020/12/'> December </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2020/11/'> November </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2020/10/'> October </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2020/09/'> September </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2020/08/'> August </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2020/07/'> July </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2020/06/'> June </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2020/05/'> May </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2020/04/'> April </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2020/03/'> March </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2020/01/'> January </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2019/'> 2019 </a> <span class='post-count' dir='ltr'>(18)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2019/11/'> November </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2019/10/'> October </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2019/09/'> September </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2019/08/'> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2019/07/'> July </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2019/04/'> April </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2019/02/'> February </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2019/01/'> January </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2018/'> 2018 </a> <span class='post-count' dir='ltr'>(17)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2018/12/'> December </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2018/09/'> September </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2018/08/'> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2018/06/'> June </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2018/05/'> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2018/04/'> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2018/03/'> March </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2018/02/'> February </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2018/01/'> January </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2017/'> 2017 </a> <span class='post-count' dir='ltr'>(21)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2017/12/'> December </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2017/11/'> November </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2017/10/'> October </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2017/08/'> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2017/07/'> July </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2017/06/'> June </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2017/04/'> April </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2017/03/'> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2017/02/'> February </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2017/01/'> January </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2016/'> 2016 </a> <span class='post-count' dir='ltr'>(34)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2016/12/'> December </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2016/10/'> October </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2016/09/'> September </a> <span class='post-count' dir='ltr'>(8)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2016/08/'> August </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2016/07/'> July </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2016/06/'> June </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2016/05/'> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2016/04/'> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2016/03/'> March </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2016/02/'> February </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2016/01/'> January </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2015/'> 2015 </a> <span class='post-count' dir='ltr'>(12)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2015/12/'> December </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2015/11/'> November </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2015/10/'> October </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2015/08/'> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2015/05/'> May </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2015/03/'> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2015/02/'> February </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2014/'> 2014 </a> <span class='post-count' dir='ltr'>(13)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2014/12/'> December </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2014/10/'> October </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2014/09/'> September </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2014/05/'> May </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2014/03/'> March </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2014/02/'> February </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2013/'> 2013 </a> <span class='post-count' dir='ltr'>(24)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2013/11/'> November </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2013/09/'> September </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2013/08/'> August </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2013/07/'> July </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2013/06/'> June </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2013/04/'> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2013/03/'> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2013/02/'> February </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2013/01/'> January </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2012/'> 2012 </a> <span class='post-count' dir='ltr'>(10)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2012/12/'> December </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2012/11/'> November </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2012/10/'> October </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2012/05/'> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2012/03/'> March </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2012/02/'> February </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate expanded'> <a class='toggle' href='javascript:void(0)'> <span class='zippy toggle-open'> ▼  </span> </a> <a class='post-count-link' href='http://www.righto.com/2011/'> 2011 </a> <span class='post-count' dir='ltr'>(11)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2011/12/'> December </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate expanded'> <a class='toggle' href='javascript:void(0)'> <span class='zippy toggle-open'> ▼  </span> </a> <a class='post-count-link' href='http://www.righto.com/2011/07/'> July </a> <span class='post-count' dir='ltr'>(2)</span> <ul class='posts'> <li><a href='http://www.righto.com/2011/07/cells-are-very-fast-and-crowded-places.html'>Cells are very fast and crowded places</a></li> <li><a href='http://www.righto.com/2011/07/mathematics-of-volleyball.html'>The Mathematics of Volleyball</a></li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2011/05/'> May </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2011/04/'> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2011/03/'> March </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2011/02/'> February </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2010/'> 2010 </a> <span class='post-count' dir='ltr'>(22)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2010/12/'> December </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2010/11/'> November </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2010/10/'> October </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2010/08/'> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2010/06/'> June </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2010/05/'> May </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2010/04/'> April </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2010/03/'> March </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2010/01/'> January </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2009/'> 2009 </a> <span class='post-count' dir='ltr'>(22)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2009/12/'> December </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2009/11/'> November </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2009/09/'> September </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2009/08/'> August </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2009/07/'> July </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2009/06/'> June </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2009/04/'> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2009/03/'> March </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2009/02/'> February </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2009/01/'> January </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2008/'> 2008 </a> <span class='post-count' dir='ltr'>(27)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2008/07/'> July </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2008/06/'> June </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2008/05/'> May </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2008/04/'> April </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2008/03/'> March </a> <span class='post-count' dir='ltr'>(10)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='http://www.righto.com/2008/02/'> February </a> <span class='post-count' dir='ltr'>(6)</span> </li> </ul> </li> </ul> </div> </div> <div class='clear'></div> </div> </div></div> </aside> </div> </div> </div> <div style='clear: both'></div> <!-- columns --> </div> <!-- main --> </div> </div> <div class='main-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <footer> <div class='footer-outer'> <div class='footer-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left footer-fauxborder-left'> <div class='fauxborder-right footer-fauxborder-right'></div> <div class='region-inner footer-inner'> <div class='foot no-items section' id='footer-1'></div> <table border='0' cellpadding='0' cellspacing='0' class='section-columns columns-2'> <tbody> <tr> <td class='first columns-cell'> <div class='foot no-items section' id='footer-2-1'></div> </td> <td class='columns-cell'> <div class='foot no-items section' id='footer-2-2'></div> </td> </tr> </tbody> </table> <!-- outside of the include in order to lock Attribution widget --> <div class='foot section' id='footer-3'><div class='widget Attribution' data-version='1' id='Attribution1'> <div class='widget-content' style='text-align: center;'> Powered by <a href='https://www.blogger.com' target='_blank'>Blogger</a>. </div> <div class='clear'></div> </div></div> </div> </div> <div class='footer-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </footer> <!-- content --> </div> </div> <div class='content-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </div> <script type='text/javascript'> window.setTimeout(function() { document.body.className = document.body.className.replace('loading', ''); }, 10); </script> <script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/2725212210-widgets.js"></script> <script type='text/javascript'> window['__wavt'] = 'AOuZoY642nHmlUEcnYMtaOZ9936VEft8lw:1740868222382';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d6264947694886887540','//www.righto.com/2011/07/','6264947694886887540'); _WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '6264947694886887540', 'title': 'Ken Shirriff\x27s blog', 'url': 'http://www.righto.com/2011/07/', 'canonicalUrl': 'http://www.righto.com/2011/07/', 'homepageUrl': 'http://www.righto.com/', 'searchUrl': 'http://www.righto.com/search', 'canonicalHomepageUrl': 'http://www.righto.com/', 'blogspotFaviconUrl': 'http://www.righto.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': true, 'httpsEnabled': false, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': 'UA-3782444-1', 'encoding': 'UTF-8', 'locale': 'en', 'localeUnderscoreDelimited': 'en', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Ken Shirriff\x26#39;s blog - Atom\x22 href\x3d\x22http://www.righto.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22Ken Shirriff\x26#39;s blog - RSS\x22 href\x3d\x22http://www.righto.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Ken Shirriff\x26#39;s blog - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/6264947694886887540/posts/default\x22 /\x3e\n', 'meTag': '', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': false, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/dbeedc0fc9862cb8', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Get link', 'key': 'link', 'shareMessage': 'Get link', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Share to Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Share to X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Share to Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en\x27};\x3c/script\x3e'}, 'hasCustomJumpLinkMessage': false, 'jumpLinkMessage': 'Read more', 'pageType': 'archive', 'pageName': 'July 2011', 'pageTitle': 'Ken Shirriff\x27s blog: July 2011'}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Edit', 'linkCopiedToClipboard': 'Link copied to clipboard!', 'ok': 'Ok', 'postLink': 'Post Link'}}, {'name': 'template', 'data': {'name': 'custom', 'localizedName': 'Custom', 'isResponsive': false, 'isAlternateRendering': false, 'isCustom': true}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'Ken Shirriff\x27s blog', 'description': 'Computer history, restoring vintage computers, IC reverse engineering, and whatever', 'url': 'http://www.righto.com/2011/07/', 'type': 'feed', 'isSingleItem': false, 'isMultipleItems': true, 'isError': false, 'isPage': false, 'isPost': false, 'isHomepage': false, 'isArchive': true, 'isLabelSearch': false, 'archive': {'year': 2011, 'month': 7, 'rangeMessage': 'Showing posts from July, 2011'}}}]); _WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'main', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML2', 'sidebar-right-1', document.getElementById('HTML2'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML3', 'sidebar-right-1', document.getElementById('HTML3'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_PopularPostsView', new _WidgetInfo('PopularPosts1', 'sidebar-right-1', document.getElementById('PopularPosts1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogSearchView', new _WidgetInfo('BlogSearch1', 'sidebar-right-1', document.getElementById('BlogSearch1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_LabelView', new _WidgetInfo('Label1', 'sidebar-right-1', document.getElementById('Label1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'sidebar-right-1', document.getElementById('BlogArchive1'), {'languageDirection': 'ltr', 'loadingMessage': 'Loading\x26hellip;'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_AttributionView', new _WidgetInfo('Attribution1', 'footer-3', document.getElementById('Attribution1'), {}, 'displayModeFull')); </script> </body> </html>