1<!DOCTYPE html> 2 3<html class="no-js" lang="en-GB"> 4 5 <head> 6 7 <meta charset="UTF-8"> 8 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 9 10 <link rel="profile" href="https://gmpg.org/xfn/11"> 11 12 <title>O.O'Brien – Thoughts on urban mobility services, digital cartography and data visualisation.</title> 13<meta name='robots' content='max-image-preview:large' /> 14<link rel='dns-prefetch' href='//www.googletagmanager.com' /> 15<link rel='dns-prefetch' href='//pagead2.googlesyndication.com' /> 16<link rel='dns-prefetch' href='//fundingchoicesmessages.google.com' /> 17<link rel="alternate" type="application/rss+xml" title="O.O'Brien » Feed" href="https://oobrien.com/feed/" /> 18<link rel="alternate" type="application/rss+xml" title="O.O'Brien » Comments Feed" href="https://oobrien.com/comments/feed/" />
19<script data-api-url="https://oobrien.com/wp-json/wordpress-popular-posts" data-debug="0" data-lang="0" data-post="0" data-sampling-rate="100" data-sampling="0" data-token="f7e47ec4f6" id="wpp-js" src="https://oobrien.com/wordpress/wp-content/plugins/wordpress-popular-posts/assets/js/wpp.min.js?ver=7.4.2"></script>
19 20<style id="wp-img-auto-sizes-contain-inline-css"> 21img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 22/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 23</style> 24<style id="wp-emoji-styles-inline-css"> 25 26 img.wp-smiley, img.emoji { 27 display: inline !important; 28 border: none !important; 29 box-shadow: none !important; 30 height: 1em !important; 31 width: 1em !important; 32 margin: 0 0.07em !important; 33 vertical-align: -0.1em !important; 34 background: none !important; 35 padding: 0 !important; 36 } 37/*# sourceURL=wp-emoji-styles-inline-css */ 38</style> 39<style id="wp-block-library-inline-css"> 40:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
40--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} 41 42/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 43</style> 44<style id="wp-block-heading-inline-css"> 45h1:where(.wp-block-heading).has-background,h2:where(.wp-block-heading).has-background,h3:where(.wp-block-heading).has-background,h4:where(.wp-block-heading).has-background,h5:where(.wp-block-heading).has-background,h6:where(.wp-block-heading).has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg} 46/*# sourceURL=https://oobrien.com/wordpress/wp-includes/blocks/heading/style.min.css */ 47</style> 48<style id="wp-block-image-inline-css"> 49.wp-block-image>a,.wp-block-image>figure>a{display:inline-block}.wp-block-image img{box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom}@media not (prefers-reduced-motion){.wp-block-image img.hide{visibility:hidden}.wp-block-image img.show{animation:show-content-image .4s}}.wp-block-image[style*=border-radius] img,.wp-block-image[style*=border-radius]>a{border-radius:inherit}.wp-block-image.has-custom-border img{box-sizing:border-box}.wp-block-image.aligncenter{text-align:center}.wp-block-image.alignfull>a,.wp-block-image.alignwide>a{width:100%}.wp-block-image.alignfull img,.wp-block-image.alignwide img{height:auto;width:100%}.wp-block-image .aligncenter,.wp-block-image .alignleft,.wp-block-image .alignright,.wp-block-image.aligncenter,.wp-block-image.alignleft,.wp-block-image.alignright{display:table}.wp-block-image .aligncenter>figcaption,.wp-block-image .alignleft>figcaption,.wp-block-image .alignright>figcaption,.wp-block-image.aligncenter>figcaption,.wp-block-image.alignleft>figcaption,.wp-block-image.alignright>figcaption{caption-side:bottom;display:table-caption}.wp-block-image .alignleft{float:left;margin:.5em 1em .5em 0}.wp-block-image .alignright{float:right;margin:.5em 0 .5em 1em}.wp-block-image .aligncenter{margin-left:auto;margin-right:auto}.wp-block-image :where(figcaption){margin-bottom:1em;margin-top:.5em}.wp-block-image.is-style-circle-mask img{border-radius:9999px}@supports ((-webkit-mask-image:none) or (mask-image:none)) or (-webkit-mask-image:none){.wp-block-image.is-style-circle-mask img{border-radius:0;-webkit-mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-mode:alpha;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}}:root :where(.wp-block-image.is-style-rounded img,.wp-block-image .is-style-rounded img){border-radius:9999px}.wp-block-image figure{margin:0}.wp-lightbox-container{display:flex;flex-direction:column;position:relative}.wp-lightbox-container img{cursor:zoom-in}.wp-lightbox-container img:hover+button{opacity:1}.wp-lightbox-container button{align-items:center;backdrop-filter:blur(16px) saturate(180%);background-color:rgba(90,90,90,.25);border:none;border-radius:4px;cursor:zoom-in;display:flex;height:20px;justify-content:center;opacity:0;padding:0;position:absolute;right:16px;text-align:center;top:16px;width:20px;z-index:100}@media not (prefers-reduced-motion){.wp-lightbox-container button{transition:opacity .2s ease}}.wp-lightbox-container button:focus-visible{outline:3px auto rgba(90,90,90,.25);outline:3px auto -webkit-focus-ring-color;outline-offset:3px}.wp-lightbox-container button:hover{cursor:pointer;opacity:1}.wp-lightbox-container button:focus{opacity:1}.wp-lightbox-container button:focus,.wp-lightbox-container button:hover,.wp-lightbox-container button:not(:hover):not(:active):not(.has-background){background-color:rgba(90,90,90,.25);border:none}.wp-lightbox-overlay{box-sizing:border-box;
49cursor:zoom-out;height:100vh;left:0;overflow:hidden;position:fixed;top:0;visibility:hidden;width:100%;z-index:100000}.wp-lightbox-overlay .wp-lightbox-close-button{align-items:center;cursor:pointer;display:flex;font-family:inherit;gap:8px;justify-content:center;line-height:1;min-height:40px;min-width:40px;padding:0 4px;position:absolute;right:calc(env(safe-area-inset-right) + 16px);top:calc(env(safe-area-inset-top) + 16px);z-index:5000000}.wp-lightbox-overlay .wp-lightbox-close-button:focus,.wp-lightbox-overlay .wp-lightbox-close-button:hover,.wp-lightbox-overlay .wp-lightbox-close-button:not(:hover):not(:active):not(.has-background){background:none;border:none}.wp-lightbox-overlay .wp-lightbox-close-button:has(.wp-lightbox-close-text:not([hidden])) .wp-lightbox-close-icon svg{height:1em;width:1em}.wp-lightbox-overlay .wp-lightbox-close-icon svg{display:block}.wp-lightbox-overlay .wp-lightbox-navigation-button-next,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{align-items:center;bottom:16px;cursor:pointer;display:flex;font-family:inherit;gap:4px;justify-content:center;line-height:1;min-height:40px;min-width:40px;padding:0 8px;position:absolute;z-index:2000002}.wp-lightbox-overlay .wp-lightbox-navigation-button-next[hidden],.wp-lightbox-overlay .wp-lightbox-navigation-button-prev[hidden]{display:none}@media (min-width:960px){.wp-lightbox-overlay .wp-lightbox-navigation-button-next,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{bottom:50%;transform:translateY(-50%)}}.wp-lightbox-overlay .wp-lightbox-navigation-button-next:focus,.wp-lightbox-overlay .wp-lightbox-navigation-button-next:hover,.wp-lightbox-overlay .wp-lightbox-navigation-button-next:not(:hover):not(:active):not(.has-background),.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:focus,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:hover,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:not(:hover):not(:active):not(.has-background){background:none;border:none;padding:0 8px}.wp-lightbox-overlay .wp-lightbox-navigation-button-next:has(.wp-lightbox-navigation-text:not([hidden])) .wp-lightbox-navigation-icon svg,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:has(.wp-lightbox-navigation-text:not([hidden])) .wp-lightbox-navigation-icon svg{display:block;height:1.5em;width:1.5em}.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{left:calc(env(safe-area-inset-left) + 16px)}.wp-lightbox-overlay .wp-lightbox-navigation-button-next{right:calc(env(safe-area-inset-right) + 16px)}.wp-lightbox-overlay .wp-lightbox-navigation-icon svg{vertical-align:middle}.wp-lightbox-overlay .lightbox-image-container{height:var(--wp--lightbox-container-height);left:50%;overflow:hidden;position:absolute;top:50%;transform:translate(-50%,-50%);transform-origin:top left;width:var(--wp--lightbox-container-width);z-index:2000001}.wp-lightbox-overlay .wp-block-image{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;margin:0;position:relative;transform-origin:0 0;width:100%;z-index:3000000}.wp-lightbox-overlay .wp-block-image img{height:var(--wp--lightbox-image-height);min-height:var(--wp--lightbox-image-height);min-width:var(--wp--lightbox-image-width);width:var(--wp--lightbox-image-width)}.wp-lightbox-overlay .wp-block-image figcaption{display:none}.wp-lightbox-overlay button{background:none;border:none}.wp-lightbox-overlay .scrim{background-color:#fff;height:100%;opacity:.9;position:absolute;width:100%;z-index:2000000}.wp-lightbox-overlay.active{visibility:visible}@media not (prefers-reduced-motion){.wp-lightbox-overlay.active{animation:turn-on-visibility .25s both}.wp-lightbox-overlay.active img{animation:turn-on-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active){animation:turn-off-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active) img{animation:turn-off-visibility .25s both}.wp-lightbox-overlay.zoom.active{animation:none;opacity:1;visibility:visible}.wp-lightbox-overlay.zoom.active .lightbox-image-container{animation:lightbox-zoom-in .4s}.wp-lightbox-overlay.zoom.active .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.active .scrim{animation:turn-on-visibility .4s forwards}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active){animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container{animation:lightbox-zoom-out .4s}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .scrim{animation:turn-off-visibility .4s forwards}}
49@keyframes show-content-image{0%{visibility:hidden}99%{visibility:hidden}to{visibility:visible}}@keyframes turn-on-visibility{0%{opacity:0}to{opacity:1}}@keyframes turn-off-visibility{0%{opacity:1;visibility:visible}99%{opacity:0;visibility:visible}to{opacity:0;visibility:hidden}}@keyframes lightbox-zoom-in{0%{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale))}to{transform:translate(-50%,-50%) scale(1)}}@keyframes lightbox-zoom-out{0%{transform:translate(-50%,-50%) scale(1);visibility:visible}99%{visibility:visible}to{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale));visibility:hidden}} 50/*# sourceURL=https://oobrien.com/wordpress/wp-includes/blocks/image/style.min.css */ 51</style> 52<style id="wp-block-list-inline-css"> 53ol,ul{box-sizing:border-box}:root :where(.wp-block-list.has-background){padding:1.25em 2.375em} 54/*# sourceURL=https://oobrien.com/wordpress/wp-includes/blocks/list/style.min.css */ 55</style> 56<style id="wp-block-paragraph-inline-css"> 57.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg} 58/*# sourceURL=https://oobrien.com/wordpress/wp-includes/blocks/paragraph/style.min.css */ 59</style> 60<style id="wp-block-video-inline-css"> 61.wp-block-video{box-sizing:border-box}.wp-block-video video{height:auto;vertical-align:middle;width:100%}@supports (position:sticky){.wp-block-video [poster]{-o-object-fit:cover;object-fit:cover}}.wp-block-video.aligncenter{text-align:center}.wp-block-video :where(figcaption){margin-bottom:1em;margin-top:.5em} 62/*# sourceURL=https://oobrien.com/wordpress/wp-includes/blocks/video/style.min.css */ 63</style> 64 65<style id="classic-theme-styles-inline-css"> 66/*! This file is auto-generated */ 67.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 68/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 69</style> 70 71<style id="global-styles-inline-css"> 72:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--accent: #e22658;--wp--preset--color--primary: #000000;--wp--preset--color--secondary: #6d6d6d;--wp--preset--color--subtle-background: #dbdbdb;--wp--preset--color--background: #ffffff;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
720) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 18px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 26.25px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-size--normal: 21px;--wp--preset--font-size--larger: 32px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-accent-color{color: var(--wp--preset--color--accent) !important;}.has-primary-color{color: var(--wp--preset--color--primary) !important;}.has-secondary-color{color: var(--wp--preset--color--secondary) !important;}.has-subtle-background-color{color: var(--wp--preset--color--subtle-background) !important;}.has-background-color{color: var(--wp--preset--color--background) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-accent-background-color{background-color: var(--wp--preset--color--accent) !important;}.has-primary-background-color{background-color: var(--wp--preset--color--primary) !important;}.has-secondary-background-color{background-color: var(--wp--preset--color--secondary) !important;}.has-subtle-background-background-color{background-color: var(--wp--preset--color--subtle-background) !important;}.has-background-background-color{background-color: var(--wp--preset--color--background) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-accent-border-color{border-color: var(--wp--preset--color--accent) !important;}.has-primary-border-color{border-color: var(--wp--preset--color--primary) !important;}.has-secondary-border-color{border-color: var(--wp--preset--color--secondary) !important;}.has-subtle-background-border-color{border-color: var(--wp--preset--color--subtle-background) !important;}.has-background-border-color{border-color: var(--wp--preset--color--background) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
72.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-normal-font-size{font-size: var(--wp--preset--font-size--normal) !important;}.has-larger-font-size{font-size: var(--wp--preset--font-size--larger) !important;} 73/*# sourceURL=global-styles-inline-css */ 74</style> 75 76<link rel='stylesheet' id='wordpress-popular-posts-css-css' href='https://oobrien.com/wordpress/wp-content/plugins/wordpress-popular-posts/assets/css/wpp.css?ver=7.4.2' media='all' /> 77<link rel='stylesheet' id='twentytwenty-style-css' href='https://oobrien.com/wordpress/wp-content/themes/twentytwenty/style.css?ver=3.2' media='all' /> 78<style id="twentytwenty-style-inline-css"> 79.color-accent,.color-accent-hover:hover,.color-accent-hover:focus,:root .has-accent-color,.has-drop-cap:not(:focus):first-letter,.wp-block-button.is-style-outline,a { color: #e22658; }blockquote,.border-color-accent,.border-color-accent-hover:hover,.border-color-accent-hover:focus { border-color: #e22658; }button,.button,.faux-button,.wp-block-button__link,.wp-block-file .wp-block-file__button,input[type="button"],input[type="reset"],input[type="submit"],.bg-accent,.bg-accent-hover:hover,.bg-accent-hover:focus,:root .has-accent-background-color,.comment-reply-link { background-color: #e22658; }.fill-children-accent,.fill-children-accent * { fill: #e22658; }:root .has-background-color,button,.button,.faux-button,.wp-block-button__link,.wp-block-file__button,input[type="button"],input[type="reset"],input[type="submit"],.wp-block-button,.comment-reply-link,.has-background.has-primary-background-color:not(.has-text-color),.has-background.has-primary-background-color *:not(.has-text-color),.has-background.has-accent-background-color:not(.has-text-color),.has-background.has-accent-background-color *:not(.has-text-color) { color: #ffffff; }:root .has-background-background-color { background-color: #ffffff; }body,.entry-title a,:root .has-primary-color { color: #000000; }:root .has-primary-background-color { background-color: #000000; }cite,figcaption,.wp-caption-text,.post-meta,.entry-content .wp-block-archives li,.entry-content .wp-block-categories li,.entry-content .wp-block-latest-posts li,.wp-block-latest-comments__comment-date,.wp-block-latest-posts__post-date,.wp-block-embed figcaption,.wp-block-image figcaption,.wp-block-pullquote cite,.comment-metadata,.comment-respond .comment-notes,.comment-respond .logged-in-as,.pagination .dots,.entry-content hr:not(.has-background),hr.styled-separator,:root .has-secondary-color { color: #6d6d6d; }:root .has-secondary-background-color { background-color: #6d6d6d; }pre,fieldset,input,textarea,table,table *,hr { border-color: #dbdbdb; }caption,code,code,kbd,samp,.wp-block-table.is-style-stripes tbody tr:nth-child(odd),:root .has-subtle-background-background-color { background-color: #dbdbdb; }.wp-block-table.is-style-stripes { border-bottom-color: #dbdbdb; }.wp-block-latest-posts.is-grid li { border-top-color: #dbdbdb; }:root .has-subtle-background-color { color: #dbdbdb; }body:not(.overlay-header) .primary-menu > li > a,body:not(.overlay-header) .primary-menu > li > .icon,.modal-menu a,.footer-menu a, .footer-widgets a:where(:not
79(.wp-block-button__link)),#site-footer .wp-block-button.is-style-outline,.wp-block-pullquote:before,.singular:not(.overlay-header) .entry-header a,.archive-header a,.header-footer-group .color-accent,.header-footer-group .color-accent-hover:hover { color: #e20842; }.social-icons a,#site-footer button:not(.toggle),#site-footer .button,#site-footer .faux-button,#site-footer .wp-block-button__link,#site-footer .wp-block-file__button,#site-footer input[type="button"],#site-footer input[type="reset"],#site-footer input[type="submit"] { background-color: #e20842; }.social-icons a,body:not(.overlay-header) .primary-menu ul,.header-footer-group button,.header-footer-group .button,.header-footer-group .faux-button,.header-footer-group .wp-block-button:not(.is-style-outline) .wp-block-button__link,.header-footer-group .wp-block-file__button,.header-footer-group input[type="button"],.header-footer-group input[type="reset"],.header-footer-group input[type="submit"] { color: #f7f7f7; }#site-header,.footer-nav-widgets-wrapper,#site-footer,.menu-modal,.menu-modal-inner,.search-modal-inner,.archive-header,.singular .entry-header,.singular .featured-media:before,.wp-block-pullquote:before { background-color: #f7f7f7; }.header-footer-group,body:not(.overlay-header) #site-header .toggle,.menu-modal .toggle { color: #000000; }body:not(.overlay-header) .primary-menu ul { background-color: #000000; }body:not(.overlay-header) .primary-menu > li > ul:after { border-bottom-color: #000000; }body:not(.overlay-header) .primary-menu ul ul:after { border-left-color: #000000; }.site-description,body:not(.overlay-header) .toggle-inner .toggle-text,.widget .post-date,.widget .rss-date,.widget_archive li,.widget_categories li,.widget cite,.widget_pages li,.widget_meta li,.widget_nav_menu li,.powered-by-wordpress,.footer-credits .privacy-policy,.to-the-top,.singular .entry-header .post-meta,.singular:not(.overlay-header) .entry-header .post-meta a { color: #686868; }.header-footer-group pre,.header-footer-group fieldset,.header-footer-group input,.header-footer-group textarea,.header-footer-group table,.header-footer-group table *,.footer-nav-widgets-wrapper,#site-footer,.menu-modal nav *,.footer-widgets-outer-wrapper,.footer-top { border-color: #d3d3d3; }.header-footer-group table caption,body:not(.overlay-header) .header-inner .toggle-wrapper::before { background-color: #d3d3d3; } 80/*# sourceURL=twentytwenty-style-inline-css */ 81</style> 82<link rel='stylesheet' id='twentytwenty-fonts-css' href='https://oobrien.com/wordpress/wp-content/themes/twentytwenty/assets/css/font-inter.css?ver=3.2' media='all' /> 83<link rel='stylesheet' id='twentytwenty-print-style-css' href='https://oobrien.com/wordpress/wp-content/themes/twentytwenty/print.css?ver=3.2' media='print' />
84<script data-wp-strategy="defer" defer id="twentytwenty-js-js" src="https://oobrien.com/wordpress/wp-content/themes/twentytwenty/assets/js/index.js?ver=3.2"></script>
84 85 86<!-- Google tag (gtag.js) snippet added by Site Kit --> 87<!-- Google Analytics snippet added by Site Kit -->
vendor: 80 bytes, lines 87-88
87 88<script id="google_gtagjs-js" src="https://www.googletagmanager.com/gtag/js?id=
88GT-KTBBGSV
vendor: 18 bytes, line 88
88" async></script>
89<script id="google_gtagjs-js-after"> 90window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);} 91gtag("set","linker",{"domains":["oobrien.com"]}); 92gtag("js", new Date()); 93gtag("set", "developer_id.dZTNiMT", true); 94gtag("config", "GT-KTBBGSV"); 95//# sourceURL=google_gtagjs-js-after 96</script>
96 97<link rel="https://api.w.org/" href="https://oobrien.com/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://oobrien.com/wordpress/xmlrpc.php?rsd" /> 98<meta name="generator" content="WordPress 7.1.2" /> 99<link type="text/css" rel="stylesheet" href="https://oobrien.com/wordpress/wp-content/plugins/category-specific-rss-feed-menu/wp_cat_rss_style.css" /> 100<meta name="generator" content="Site Kit by Google 1.188.0" /> <style id="wpp-loading-animation-styles">@-webkit-keyframes bgslide{from{background-position-x:0}to{background-position-x:-200%}}@keyframes bgslide{from{background-position-x:0}to{background-position-x:-200%}}.wpp-widget-block-placeholder,.wpp-shortcode-placeholder{margin:0 auto;width:60px;height:3px;background:#dd3737;background:linear-gradient(90deg,#dd3737 0%,#571313 10%,#dd3737 100%);background-size:200% auto;border-radius:3px;-webkit-animation:bgslide 1s infinite linear;animation:bgslide 1s infinite linear}</style> 101
101<script> 102document.documentElement.className = document.documentElement.className.replace( 'no-js', 'js' ); 103//# sourceURL=twentytwenty_no_js_class 104</script>
104 105 106<!-- Google AdSense meta tags added by Site Kit --> 107<meta name="google-adsense-platform-account" content="ca-host-pub-2644536267352236"> 108<meta name="google-adsense-platform-domain" content="sitekit.withgoogle.com"> 109<!-- End Google AdSense meta tags added by Site Kit --> 110<style>.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style><style id="custom-background-css"> 111body.custom-background { background-color: #ffffff; } 112</style> 113 114<!-- Google AdSense snippet added by Site Kit -->
115<script async crossorigin="anonymous" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3486529756444295&host=ca-host-pub-2644536267352236"></script>
115 116 117<!-- End Google AdSense snippet added by Site Kit --> 118 119<!-- Google AdSense Ad Blocking Recovery snippet added by Site Kit -->
120<script async src="https://fundingchoicesmessages.google.com/i/pub-3486529756444295?ers=1" nonce="zQwEBj6FapUiEG8B8xxXSQ"></script>
120<script nonce="zQwEBj6FapUiEG8B8xxXSQ">(function() {function signalGooglefcPresent() {if (!window.frames['googlefcPresent']) {if (document.body) {const iframe = document.createElement('iframe'); iframe.style = 'width: 0; height: 0; border: none; z-index: -1000; left: -1000px; top: -1000px;'; iframe.style.display = 'none'; iframe.name = 'googlefcPresent'; document.body.appendChild(iframe);} else {setTimeout(signalGooglefcPresent, 0);}}}signalGooglefcPresent();})();</script>
120 121<!-- End Google AdSense Ad Blocking Recovery snippet added by Site Kit --> 122 123<!-- Google AdSense Ad Blocking Recovery Error Protection snippet added by Site Kit -->
124<script>(function(){'use strict';function aa(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}}var ba="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a}; 125function ea(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("Cannot find global object");}var fa=ea(this);function ha(a,b){if(b)a:{var c=fa;a=a.split(".");for(var d=0;d<a.length-1;d++){var e=a[d];if(!(e in c))break a;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&ba(c,a,{configurable:!0,writable:!0,value:b})}} 126var ia="function"==typeof Object.create?Object.create:function(a){function b(){}b.prototype=a;return new b},l;if("function"==typeof Object.setPrototypeOf)l=Object.setPrototypeOf;else{var m;a:{var ja={a:!0},ka={};try{ka.__proto__=ja;m=ka.a;break a}catch(a){}m=!1}l=m?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+" is not extensible");return a}:null}var la=l; 127function n(a,b){a.prototype=ia(b.prototype);a.prototype.constructor=a;if(la)la(a,b);else for(var c in b)if("prototype"!=c)if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}else a[c]=b[c];a.A=b.prototype}function ma(){for(var a=Number(this),b=[],c=a;c<arguments.length;c++)b[c-a]=arguments[c];return b} 128var na="function"==typeof Object.assign?Object.assign:function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c];if(d)for(var e in d)Object.prototype.hasOwnProperty.call(d,e)&&(a[e]=d[e])}return a};ha("Object.assign",function(a){return a||na});/* 129 130 Copyright The Closure Library Authors. 131 SPDX-License-Identifier: Apache-2.0 132*/ 133var p=this||self;function q(a){return a};var t,u;a:{for(var oa=["CLOSURE_FLAGS"],v=p,x=0;x<oa.length;x++)if(v=v[oa[x]],null==v){u=null;break a}u=v}var pa=u&&u[610401301];t=null!=pa?pa:!1;var z,qa=p.navigator;z=qa?qa.userAgentData||null:null;function A(a){return t?z?z.brands.some(function(b){return(b=b.brand)&&-1!=b.indexOf(a)}):!1:!1}function B(a){var b;a:{if(b=p.navigator)if(b=b.userAgent)break a;b=""}return-1!=b.indexOf(a)};function C(){return t?!!z&&0<z.brands.length:!1}function D(){return C()?A("Chromium"):(B("Chrome")||B("CriOS"))&&!(C()?0:B("Edge"))||B("Silk")};var ra=C()?!1:B("Trident")||B("MSIE");!B("Android")||D();D();B("Safari")&&(D()||(C()?0:B("Coast"))||(C()?0:B("Opera"))||(C()?0:B("Edge"))||(C()?A("Microsoft Edge"):B("Edg/"))||C()&&A("Opera"));var sa={},E=null;var ta="undefined"!==typeof Uint8Array,ua=!ra&&"function"===typeof btoa;var F="function"===typeof Symbol&&"symbol"===typeof Symbol()?Symbol():void 0,G=F?function(a,b){a[F]|=b}:function(a,b){void 0!==a.g?a.g|=b:Object.defineProperties(a,{g:{value:b,configurable:!0,writable:!0,enumerable:!1}})};function va(a){var b=H(a);1!==(b&1)&&(Object.isFrozen(a)&&(a=Array.prototype.slice.call(a)),I(a,b|1))} 134var H=F?function(a){return a[F]|0}:function(a){return a.g|0},J=F?function(a){return a[F]}:function(a){return a.g},I=F?function(a,b){a[F]=b}:function(a,b){void 0!==a.g?a.g=b:Object.defineProperties(a,{g:{value:b,configurable:!0,writable:!0,enumerable:!1}})};function wa(){var a=[];G(a,1);return a}function xa(a,b){I(b,(a|0)&-99)}function K(a,b){I(b,(a|34)&-73)}function L(a){a=a>>11&1023;return 0===a?536870912:a};var M={};function N(a){return null!==a&&"object"===typeof a&&!Array.isArray(a)&&a.constructor===Object}var O,ya=[];I(ya,39);O=Object.freeze(ya);var P;function Q(a,b){P=b;a=new a(b);P=void 0;return a} 135function R(a,b,c){null==a&&(a=P);P=void 0;if(null==a){var d=96;c?(a=[c],d|=512):a=[];b&&(d=d&-2095105|(b&1023)<<11)}else{if(!Array.isArray(a))throw Error();d=H(a);if(d&64)return a;d|=64;if(c&&(d|=512,c!==a[0]))throw Error();a:{c=a;var e=c.length;if(e){var f=e-1,g=c[f];if(N(g)){d|=256;b=(d>>9&1)-1;e=f-b;1024<=e&&(za(c,b,g),e=1023);d=d&-2095105|(e&1023)<<11;break a}}b&&(g=(d>>9&1)-1,b=Math.max(b,e-g),1024<b&&(za(c,g,{}),d|=256,b=1023),d=d&-2095105|(b&1023)<<11)}}I(a,d);return a} 136function za(a,b,c){for(var d=1023+b,e=a.length,f=d;f<e;f++){var g=a[f];null!=g&&g!==c&&(c[f-b]=g)}a.length=d+1;a[d]=c};function Aa(a){switch(typeof a){case "number":return isFinite(a)?a:String(a);case "boolean":return a?1:0;case "object":if(a&&!Array.isArray(a)&&ta&&null!=a&&a instanceof Uint8Array){if(ua){for(var b="",c=0,d=a.length-10240;c<d;)b+=String.fromCharCode.apply(null,a.subarray(c,c+=10240));b+=String.fromCharCode.apply(null,c?a.subarray(c):a);a=btoa(b)}else{void 0===b&&(b=0);if(!E){E={};c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split("");d=["+/=","+/","-_=","-_.","-_"];for(var e= 1370;5>e;e++){var f=c.concat(d[e].split(""));sa[e]=f;for(var g=0;g<f.length;g++){var h=f[g];void 0===E[h]&&(E[h]=g)}}}b=sa[b];c=Array(Math.floor(a.length/3));d=b[64]||"";for(e=f=0;f<a.length-2;f+=3){var k=a[f],w=a[f+1];h=a[f+2];g=b[k>>2];k=b[(k&3)<<4|w>>4];w=b[(w&15)<<2|h>>6];h=b[h&63];c[e++]=g+k+w+h}g=0;h=d;switch(a.length-f){case 2:g=a[f+1],h=b[(g&15)<<2]||d;case 1:a=a[f],c[e]=b[a>>2]+b[(a&3)<<4|g>>4]+h+d}a=c.join("")}return a}}return a};function Ba(a,b,c){a=Array.prototype.slice.call(a);var d=a.length,e=b&256?a[d-1]:void 0;d+=e?-1:0;for(b=b&512?1:0;b<d;b++)a[b]=c(a[b]);if(e){b=a[b]={};for(var f in e)Object.prototype.hasOwnProperty.call(e,f)&&(b[f]=c(e[f]))}return a}
137function Da(a,b,c,d,e,f){if(null!=a){if(Array.isArray(a))a=e&&0==a.length&&H(a)&1?void 0:f&&H(a)&2?a:Ea(a,b,c,void 0!==d,e,f);else if(N(a)){var g={},h;for(h in a)Object.prototype.hasOwnProperty.call(a,h)&&(g[h]=Da(a[h],b,c,d,e,f));a=g}else a=b(a,d);return a}} 138function Ea(a,b,c,d,e,f){var g=d||c?H(a):0;d=d?!!(g&32):void 0;a=Array.prototype.slice.call(a);for(var h=0;h<a.length;h++)a[h]=Da(a[h],b,c,d,e,f);c&&c(g,a);return a}function Fa(a){return a.s===M?a.toJSON():Aa(a)};function Ga(a,b,c){c=void 0===c?K:c;if(null!=a){if(ta&&a instanceof Uint8Array)return b?a:new Uint8Array(a);if(Array.isArray(a)){var d=H(a);if(d&2)return a;if(b&&!(d&64)&&(d&32||0===d))return I(a,d|34),a;a=Ea(a,Ga,d&4?K:c,!0,!1,!0);b=H(a);b&4&&b&2&&Object.freeze(a);return a}a.s===M&&(b=a.h,c=J(b),a=c&2?a:Q(a.constructor,Ha(b,c,!0)));return a}}function Ha(a,b,c){var d=c||b&2?K:xa,e=!!(b&32);a=Ba(a,b,function(f){return Ga(f,e,d)});G(a,32|(c?2:0));return a};function Ia(a,b){a=a.h;return Ja(a,J(a),b)}function Ja(a,b,c,d){if(-1===c)return null;if(c>=L(b)){if(b&256)return a[a.length-1][c]}else{var e=a.length;
138if(d&&b&256&&(d=a[e-1][c],null!=d))return d;b=c+((b>>9&1)-1);if(b<e)return a[b]}}function Ka(a,b,c,d,e){var f=L(b);if(c>=f||e){e=b;if(b&256)f=a[a.length-1];else{if(null==d)return;f=a[f+((b>>9&1)-1)]={};e|=256}f[c]=d;e&=-1025;e!==b&&I(a,e)}else a[c+((b>>9&1)-1)]=d,b&256&&(d=a[a.length-1],c in d&&delete d[c]),b&1024&&I(a,b&-1025)} 139function La(a,b){var c=Ma;var d=void 0===d?!1:d;var e=a.h;var f=J(e),g=Ja(e,f,b,d);var h=!1;if(null==g||"object"!==typeof g||(h=Array.isArray(g))||g.s!==M)if(h){var k=h=H(g);0===k&&(k|=f&32);k|=f&2;k!==h&&I(g,k);c=new c(g)}else c=void 0;else c=g;c!==g&&null!=c&&Ka(e,f,b,c,d);e=c;if(null==e)return e;a=a.h;f=J(a);f&2||(g=e,c=g.h,h=J(c),g=h&2?Q(g.constructor,Ha(c,h,!1)):g,g!==e&&(e=g,Ka(a,f,b,e,d)));return e}function Na(a,b){a=Ia(a,b);return null==a||"string"===typeof a?a:void 0} 140function Oa(a,b){a=Ia(a,b);return null!=a?a:0}function S(a,b){a=Na(a,b);return null!=a?a:""};function T(a,b,c){this.h=R(a,b,c)}T.prototype.toJSON=function(){var a=Ea(this.h,Fa,void 0,void 0,!1,!1);return Pa(this,a,!0)};T.prototype.s=M;T.prototype.toString=function(){return Pa(this,this.h,!1).toString()}; 141function Pa(a,b,c){var d=a.constructor.v,e=L(J(c?a.h:b)),f=!1;if(d){if(!c){b=Array.prototype.slice.call(b);var g;if(b.length&&N(g=b[b.length-1]))for(f=0;f<d.length;f++)if(d[f]>=e){Object.assign(b[b.length-1]={},g);break}f=!0}e=b;c=!c;g=J(a.h);a=L(g);g=(g>>9&1)-1;for(var h,k,w=0;w<d.length;w++)if(k=d[w],k<a){k+=g;var r=e[k];null==r?e[k]=c?O:wa():c&&r!==O&&va(r)}else h||(r=void 0,e.length&&N(r=e[e.length-1])?h=r:e.push(h={})),r=h[k],null==h[k]?h[k]=c?O:wa():c&&r!==O&&va(r)}d=b.length;if(!d)return b; 142var Ca;if(N(h=b[d-1])){a:{var y=h;e={};c=!1;for(var ca in y)Object.prototype.hasOwnProperty.call(y,ca)&&(a=y[ca],Array.isArray(a)&&a!=a&&(c=!0),null!=a?e[ca]=a:c=!0);if(c){for(var rb in e){y=e;break a}y=null}}y!=h&&(Ca=!0);d--}for(;0<d;d--){h=b[d-1];if(null!=h)break;var cb=!0}if(!Ca&&!cb)return b;var da;f?da=b:da=Array.prototype.slice.call(b,0,d);b=da;f&&(b.length=d);y&&b.push(y);return b};function Qa(a){return function(b){if(null==b||""==b)b=new a;else{b=JSON.parse(b);if(!Array.isArray(b))throw Error(void 0);G(b,32);b=Q(a,b)}return b}};function Ra(a){this.h=R(a)}n(Ra,T);var Sa=Qa(Ra);var U;function V(a){this.g=a}V.prototype.toString=function(){return this.g+""};var Ta={};function Ua(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^Date.now()).toString(36)};function Va(a,b){b=String(b);"application/xhtml+xml"===a.contentType&&(b=b.toLowerCase());return a.createElement(b)}function Wa(a){this.g=a||p.document||document}Wa.prototype.appendChild=function(a,b){a.appendChild(b)};/* 143 144 SPDX-License-Identifier: Apache-2.0 145*/ 146function Xa(a,b){a.src=b instanceof V&&b.constructor===V?b.g:"type_error:TrustedResourceUrl";var c,d;(c=(b=null==(d=(c=(a.ownerDocument&&a.ownerDocument.defaultView||window).document).querySelector)?void 0:d.call(c,"script[nonce]"))?b.nonce||b.getAttribute("nonce")||"":"")&&a.setAttribute("nonce",c)};function Ya(a){a=void 0===a?document:a;return a.createElement("script")};function Za(a,b,c,d,e,f){try{var g=a.g,h=Ya(g);h.async=!0;Xa(h,b);g.head.appendChild(h);h.addEventListener("load",function(){e();d&&g.head.removeChild(h)});h.addEventListener("error",function(){0<c?Za(a,b,c-1,d,e,f):(d&&g.head.removeChild(h),f())})}catch(k){f()}};var $a=p.atob("aHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2ljb25zL21hdGVyaWFsL3N5c3RlbS8xeC93YXJuaW5nX2FtYmVyXzI0ZHAucG5n"),ab=p.atob("WW91IGFyZSBzZWVpbmcgdGhpcyBtZXNzYWdlIGJlY2F1c2UgYWQgb3Igc2NyaXB0IGJsb2NraW5nIHNvZnR3YXJlIGlzIGludGVyZmVyaW5nIHdpdGggdGhpcyBwYWdlLg=="),bb=p.atob("RGlzYWJsZSBhbnkgYWQgb3Igc2NyaXB0IGJsb2NraW5nIHNvZnR3YXJlLCB0aGVuIHJlbG9hZCB0aGlzIHBhZ2Uu");function db(a,b,c){this.i=a;this.l=new Wa(this.i);this.g=null;this.j=[];this.m=!1;this.u=b;this.o=c} 147function eb(a){if(a.i.body&&!a.m){var b=function(){fb(a);p.setTimeout(function(){return gb(a,3)},50)};Za(a.l,a.u,2,!0,function(){p[a.o]||b()},b);a.m=!0}} 148function fb(a){for(var b=W(1,5),c=0;c<b;c++){var d=X(a);a.i.body.appendChild(d);a.j.push(d)}b=X(a);b.style.bottom="0";b.style.left="0";b.style.position="fixed";b.style.width=W(100,110).toString()+"%";b.style.zIndex=W(2147483544,2147483644).toString();b.style["background-color"]=hb(249,259,242,252,219,229);b.style["box-shadow"]="0 0 12px #888";b.style.color=hb(0,10,0,10,0,10);b.style.display="flex";b.style["justify-content"]="center";b.style["font-family"]="Roboto, Arial";c=X(a);c.style.width=W(80, 14985).toString()+"%";c.style.maxWidth=W(750,775).toString()+"px";c.style.margin="24px";c.style.display="flex";c.style["align-items"]="flex-start";c.style["justify-content"]="center";d=Va(a.l.g,"IMG");d.className=Ua();d.src=$a;d.alt="Warning icon";d.style.height="24px";d.style.width="24px";d.style["padding-right"]="16px";var e=X(a),f=X(a);f.style["font-weight"]="bold";f.textContent=ab;var g=X(a);g.textContent=bb;Y(a,e,f);Y(a,e,g);Y(a,c,d);Y(a,c,e);Y(a,b,c);a.g=b;a.i.body.appendChild(a.g);b=W(1,5);for(c= 1500;c<b;c++)d=X(a),a.i.body.appendChild(d),a.j.push(d)}function Y(a,b,c){for(var d=W(1,5),e=0;e<d;e++){var f=X(a);b.appendChild(f)}b.appendChild(c);c=W(1,5);for(d=0;d<c;d++)e=X(a),b.appendChild(e)}function W(a,b){return Math.floor(a+Math.random()*(b-a))}function hb(a,b,c,d,e,f){return"rgb("+W(Math.max(a,0),Math.min(b,255)).toString()+","+W(Math.max(c,0),Math.min(d,255)).toString()+","+W(Math.max(e,0),Math.min(f,255)).toString()+")"}function X(a){a=Va(a.l.g,"DIV");a.className=Ua();return a} 151function gb(a,b){0>=b||null!=a.g&&0!=a.g.offsetHeight&&0!=a.g.offsetWidth||(ib(a),fb(a),p.setTimeout(function(){return gb(a,b-1)},50))} 152function ib(a){var b=a.j;var c="undefined"!=typeof Symbol&&Symbol.iterator&&b[Symbol.iterator];if(c)b=c.call(b);else if("number"==typeof b.length)b={next:aa(b)};else throw Error(String(b)+" is not an iterable or ArrayLike");for(c=b.next();!c.done;c=b.next())(c=c.value)&&c.parentNode&&c.parentNode.removeChild(c);a.j=[];(b=a.g)&&b.parentNode&&b.parentNode.removeChild(b);a.g=null};function jb(a,b,c,d,e){function f(k){document.body?g(document.body):0<k?p.setTimeout(function(){f(k-1)},e):b()}function g(k){k.appendChild(h);p.setTimeout(function(){h?(0!==h.offsetHeight&&0!==h.offsetWidth?b():a(),h.parentNode&&h.parentNode.removeChild(h)):a()},d)}var h=kb(c);f(3)}function kb(a){var b=document.createElement("div");b.className=a;b.style.width="1px";b.style.height="1px";b.style.position="absolute";b.style.left="-10000px";b.style.top="-10000px";b.style.zIndex="-10000";return b};function Ma(a){this.h=R(a)}n(Ma,T);function lb(a){this.h=R(a)}n(lb,T);var mb=Qa(lb);function nb(a){a=Na(a,4)||"";if(void 0===U){var b=null;var c=p.trustedTypes;if(c&&c.createPolicy){try{b=c.createPolicy("goog#html",{createHTML:q,createScript:q,createScriptURL:q})}catch(d){p.console&&p.console.error(d.message)}U=b}else U=b}a=(b=U)?b.createScriptURL(a):a;return new V(a,Ta)};function ob(a,b){this.m=a;this.o=new Wa(a.document);this.g=b;this.j=S(this.g,1);this.u=nb(La(this.g,2));this.i=!1;b=nb(La(this.g,13));this.l=new db(a.document,b,S(this.g,12))}ob.prototype.start=function(){pb(this)}; 153function pb(a){qb(a);Za(a.o,a.u,3,!1,function(){a:{var b=a.j;var c=p.btoa(b);
153if(c=p[c]){try{var d=Sa(p.atob(c))}catch(e){b=!1;break a}b=b===Na(d,1)}else b=!1}b?Z(a,S(a.g,14)):(Z(a,S(a.g,8)),eb(a.l))},function(){jb(function(){Z(a,S(a.g,7));eb(a.l)},function(){return Z(a,S(a.g,6))},S(a.g,9),Oa(a.g,10),Oa(a.g,11))})}function Z(a,b){a.i||(a.i=!0,a=new a.m.XMLHttpRequest,a.open("GET",b,!0),a.send())}function qb(a){var b=p.btoa(a.j);a.m[b]&&Z(a,S(a.g,5))};(function(a,b){p[a]=function(){var c=ma.apply(0,arguments);p[a]=function(){};b.apply(null,c)}})("__h82AlnkH6D91__",function(a){"function"===typeof window.atob&&(new ob(window,mb(window.atob(a)))).start()});}).call(this); 154 155window.__h82AlnkH6D91__("WyJwdWItMzQ4NjUyOTc1NjQ0NDI5NSIsW251bGwsbnVsbCxudWxsLCJodHRwczovL2Z1bmRpbmdjaG9pY2VzbWVzc2FnZXMuZ29vZ2xlLmNvbS9iL3B1Yi0zNDg2NTI5NzU2NDQ0Mjk1Il0sbnVsbCxudWxsLCJodHRwczovL2Z1bmRpbmdjaG9pY2VzbWVzc2FnZXMuZ29vZ2xlLmNvbS9lbC9BR1NLV3hVTnVIbDh5VHctR0FTLW5nNjZld2ZqaS00SGp1Q000ZmxMVDl5a3JsRHVQREY1WGExVkw1R2plaHl4SFdJTzFGRGNtVlNvbVRscy1aLVowOU1wdmFENGR3XHUwMDNkXHUwMDNkP3RlXHUwMDNkVE9LRU5fRVhQT1NFRCIsImh0dHBzOi8vZnVuZGluZ2Nob2ljZXNtZXNzYWdlcy5nb29nbGUuY29tL2VsL0FHU0tXeFZEQ1lWN09acFZfeVA2RWRnWHQtVzE5NXlheW9PZWpSZ25uMlE3RjVxR2t4ZmhJX1U1MGVzVXhkMXRlVGJHbXgyZkVwU1J5ZGtfY1R2eUltbnJwQXVFcndcdTAwM2RcdTAwM2Q/YWJcdTAwM2QxXHUwMDI2c2JmXHUwMDNkMSIsImh0dHBzOi8vZnVuZGluZ2Nob2ljZXNtZXNzYWdlcy5nb29nbGUuY29tL2VsL0FHU0tXeFd5cWZUNmZhZVc4SDZDUklMUzlPN2h1RmlBZkdGTENFd0JGWk05bWxZQWpVdW1sdkM0UV9YN2FfQk9JZE5TZ0diNEZWdVNlT1FoNlBTbmhtTFlUU0RzSHdcdTAwM2RcdTAwM2Q/YWJcdTAwM2QyXHUwMDI2c2JmXHUwMDNkMSIsImh0dHBzOi8vZnVuZGluZ2Nob2ljZXNtZXNzYWdlcy5nb29nbGUuY29tL2VsL0FHU0tXeFhldVJwVC1uZFIweW5fR0F2YUowMk5xWEttX1VsYzlqQ29ON0NrU1ZqLXhKNjRYRVhPU1M3ZXlHWWZyRW5NdjdvbWFqUGtCSElnYWFsRnp2YWZOcG1zZFFcdTAwM2RcdTAwM2Q/c2JmXHUwMDNkMiIsImRpdi1ncHQtYWQiLDIwLDEwMCwiY0hWaUxUTTBPRFkxTWprM05UWTBORFF5T1RVXHUwMDNkIixbbnVsbCxudWxsLG51bGwsImh0dHBzOi8vd3d3LmdzdGF0aWMuY29tLzBlbW4vZi9wL3B1Yi0zNDg2NTI5NzU2NDQ0Mjk1LmpzP3VzcXBcdTAwM2RDQXciXSwiaHR0cHM6Ly9mdW5kaW5nY2hvaWNlc21lc3NhZ2VzLmdvb2dsZS5jb20vZWwvQUdTS1d4WHpoOHB2MW45Z3duXzJLdXBycE40cTFobXVqZGlod1hmcVZ3SUV0UFg5LU9reW9NWGRlRklLU1Vacy1sQ3BzNEhjMVNmSVlkd2wtS3d0NXJ3S3BoOS1QQVx1MDAzZFx1MDAzZCJd");</script>
155 156<!-- End Google AdSense Ad Blocking Recovery Error Protection snippet added by Site Kit --> 157 158 </head> 159 160 <body class="home blog custom-background wp-embed-responsive wp-theme-twentytwenty enable-search-modal has-no-pagination showing-comments show-avatars footer-top-visible"> 161 162 <a class="skip-link screen-reader-text" href="#site-content">Skip to the content</a> 163 <header id="site-header" class="header-footer-group"> 164 165 <div class="header-inner section-inner"> 166 167 <div class="header-titles-wrapper"> 168 169 170 <button class="toggle search-toggle mobile-search-toggle" data-toggle-target=".search-modal" data-toggle-body-class="showing-search-modal" data-set-focus=".search-modal .search-field" aria-expanded="false"> 171 <span class="toggle-inner"> 172 <span class="toggle-icon"> 173 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="23" height="23" viewbox="0 0 23 23"><path d="M38.710696,48.0601792 L43,52.3494831 L41.3494831,54 L37.0601792,49.710696 C35.2632422,51.1481185 32.9839107,52.0076499 30.5038249,52.0076499
173C24.7027226,52.0076499 20,47.3049272 20,41.5038249 C20,35.7027226 24.7027226,31 30.5038249,31 C36.3049272,31 41.0076499,35.7027226 41.0076499,41.5038249 C41.0076499,43.9839107 40.1481185,46.2632422 38.710696,48.0601792 Z M36.3875844,47.1716785 C37.8030221,45.7026647 38.6734666,43.7048964 38.6734666,41.5038249 C38.6734666,36.9918565 35.0157934,33.3341833 30.5038249,33.3341833 C25.9918565,33.3341833 22.3341833,36.9918565 22.3341833,41.5038249 C22.3341833,46.0157934 25.9918565,49.6734666 30.5038249,49.6734666 C32.7048964,49.6734666 34.7026647,48.8030221 36.1716785,47.3875844 C36.2023931,47.347638 36.2360451,47.3092237 36.2726343,47.2726343 C36.3092237,47.2360451 36.347638,47.2023931 36.3875844,47.1716785 Z" transform="translate(-20 -31)" /></svg> </span> 174 <span class="toggle-text">Search</span> 175 </span> 176 </button><!-- .search-toggle --> 177 178 179 <div class="header-titles"> 180 181 <h1 class="site-title"><a href="https://oobrien.com/" aria-current="page" rel="home">O.O'Brien</a></h1><div class="site-description">Thoughts on urban mobility services, digital cartography and data visualisation.</div><!-- .site-description --> 182 </div><!-- .header-titles --> 183 184 <button class="toggle nav-toggle mobile-nav-toggle" data-toggle-target=".menu-modal" data-toggle-body-class="showing-menu-modal" aria-expanded="false" data-set-focus=".close-nav-toggle"> 185 <span class="toggle-inner"> 186 <span class="toggle-icon"> 187 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="26" height="7" viewbox="0 0 26 7"><path fill-rule="evenodd" d="M332.5,45 C330.567003,45 329,43.4329966 329,41.5 C329,39.5670034 330.567003,38 332.5,38 C334.432997,38 336,39.5670034 336,41.5 C336,43.4329966 334.432997,45 332.5,45 Z M342,45 C340.067003,45 338.5,43.4329966 338.5,41.5 C338.5,39.5670034 340.067003,38 342,38 C343.932997,38 345.5,39.5670034 345.5,41.5 C345.5,43.4329966 343.932997,45 342,45 Z M351.5,45 C349.567003,45 348,43.4329966 348,41.5 C348,39.5670034 349.567003,38 351.5,38 C353.432997,38 355,39.5670034 355,41.5 C355,43.4329966 353.432997,45 351.5,45 Z" transform="translate(-329 -38)" /></svg> </span> 188 <span class="toggle-text">Menu</span> 189 </span> 190 </button><!-- .nav-toggle --> 191 192 </div><!-- .header-titles-wrapper --> 193 194 <div class="header-navigation-wrapper"> 195 196 197 <nav class="primary-menu-wrapper" aria-label="Horizontal"> 198 199 <ul class="primary-menu reset-list-style"> 200 201 <li class="page_item page-item-1685"><a href="https://oobrien.com/about-me/">About</a></li> 202<li class="page_item page-item-2947"><a href="https://oobrien.com/bikesharemap/">Bike Share Map</a></li> 203<li class="page_item page-item-3168"><a href="https://oobrien.com/casa/">CASA</a></li> 204<li class="page_item page-item-815"><a href="https://oobrien.com/conferences/">Conferences</a></li> 205<li class="page_item page-item-4063"><a href="https://oobrien.com/datashine/">DataShine & CDRC</a></li> 206<li class="page_item page-item-8997"><a href="https://oobrien.com/city-race/">London City Race</a></li> 207<li class="page_item page-item-8999"><a href="https://oobrien.com/london-high-lines/">London High Lines</a></li> 208<li class="page_item page-item-833"><a href="https://oobrien.com/press/">Media</a></li> 209<li class="page_item page-item-8998"><a href="https://oobrien.com/munros/">Munros</a></li> 210<li class="page_item page-item-1690"><a href="https://oobrien.com/oomap/">OpenOrienteeringMap</a></li> 211<li class="page_item page-item-822"><a href="https://oobrien.com/papers/">Papers</a></li> 212<li class="page_item page-item-3"><a href="https://oobrien.com/privacy-policy/">Privacy Policy</a></li> 213<li class="page_item page-item-2335 page_item_has_children menu-item-has-children"><a href="https://oobrien.com/walking-cycling/">Walking & Cycling</a><span class="icon"></span> 214<ul class='children'> 215 <li class="page_item page-item-9346"><a href="https://oobrien.com/walking-cycling/london-loop/">London LOOP</a></li> 216 <li class="page_item page-item-8320"><a href="https://oobrien.com/walking-cycling/xengland/">X-England: Weston-super-Mare to Whitstable</a></li> 217 <li class="page_item page-item-1735 page_item_has_children menu-item-has-children"><a href="https://oobrien.com/walking-cycling/lelon/">Land’s End to London</a><span class="icon"></span> 218 <ul class='children'> 219 <li class="page_item page-item-1888"><a href="https://oobrien.com/walking-cycling/lelon/prologue/">Prologue: Land’s End</a></li> 220 <li class="page_item page-item-1890"><a href="https://oobrien.com/walking-cycling/lelon/day1/">Day 1: Land’s End and Lizard Point</a></li> 221 <li class="page_item page-item-8989"><a href="https://oobrien.com/walking-cycling/lelon/day2/">Day 2: Lizard Point to Golant</a></li> 222 <li class="page_item page-item-1899"><a href="https://oobrien.com/walking-cycling/lelon/day3/">Day 3: Golant to Boscastle</a></li> 223 </ul> 224</li> 225 <li class="page_item page-item-567"><a href="https://oobrien.com/walking-cycling/thurlon/">Thurso to London</a></li> 226</ul> 227</li> 228 229 </ul> 230 231 </nav><!-- .primary-menu-wrapper --> 232 233 234 <div class="header-toggles hide-no-js"> 235 236 237 <div class="toggle-wrapper search-toggle-wrapper"> 238 239 <button class="toggle search-toggle desktop-search-toggle" data-toggle-target=".search-modal" data-toggle-body-class="showing-search-modal" data-set-focus=".search-modal .search-field" aria-expanded="false"> 240 <span class="toggle-inner"> 241 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="23" height="23" viewbox="0 0 23 23"><path d="M38.710696,48.0601792 L43,52.3494831 L41.3494831,54 L37.0601792,49.710696 C35.2632422,51.1481185 32.9839107,52.0076499 30.5038249,52.0076499
241C24.7027226,52.0076499 20,47.3049272 20,41.5038249 C20,35.7027226 24.7027226,31 30.5038249,31 C36.3049272,31 41.0076499,35.7027226 41.0076499,41.5038249 C41.0076499,43.9839107 40.1481185,46.2632422 38.710696,48.0601792 Z M36.3875844,47.1716785 C37.8030221,45.7026647 38.6734666,43.7048964 38.6734666,41.5038249 C38.6734666,36.9918565 35.0157934,33.3341833 30.5038249,33.3341833 C25.9918565,33.3341833 22.3341833,36.9918565 22.3341833,41.5038249 C22.3341833,46.0157934 25.9918565,49.6734666 30.5038249,49.6734666 C32.7048964,49.6734666 34.7026647,48.8030221 36.1716785,47.3875844 C36.2023931,47.347638 36.2360451,47.3092237 36.2726343,47.2726343 C36.3092237,47.2360451 36.347638,47.2023931 36.3875844,47.1716785 Z" transform="translate(-20 -31)" /></svg> <span class="toggle-text">Search</span> 242 </span> 243 </button><!-- .search-toggle --> 244 245 </div> 246 247 248 </div><!-- .header-toggles --> 249 250 </div><!-- .header-navigation-wrapper --> 251 252 </div><!-- .header-inner --> 253 254 <div class="search-modal cover-modal header-footer-group" data-modal-target-string=".search-modal" role="dialog" aria-modal="true" aria-label="Search"> 255 256 <div class="search-modal-inner modal-inner"> 257 258 <div class="section-inner"> 259 260 <form role="search" aria-label="Search for:" method="get" class="search-form" action="https://oobrien.com/"> 261 <label for="search-form-1"> 262 <span class="screen-reader-text"> 263 Search for: </span> 264 <input type="search" id="search-form-1" class="search-field" placeholder="Search …" value="" name="s" /> 265 </label> 266 <input type="submit" class="search-submit" value="Search" /> 267</form> 268 269 <button class="toggle search-untoggle close-search-toggle fill-children-current-color" data-toggle-target=".search-modal" data-toggle-body-class="showing-search-modal" data-set-focus=".search-modal .search-field"> 270 <span class="screen-reader-text"> 271 Close search </span> 272 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewbox="0 0 16 16"><polygon fill="" fill-rule="evenodd" points="6.852 7.649 .399 1.195 1.445 .149 7.899 6.602 14.352 .149 15.399 1.195 8.945 7.649 15.399 14.102 14.352 15.149 7.899 8.695 1.445 15.149 .399 14.102" /></svg> </button><!-- .search-toggle --> 273 274 </div><!-- .section-inner --> 275 276 </div><!-- .search-modal-inner --> 277 278</div><!-- .menu-modal --> 279 280 </header><!-- #site-header --> 281 282 283<div class="menu-modal cover-modal header-footer-group" data-modal-target-string=".menu-modal"> 284 285 <div class="menu-modal-inner modal-inner"> 286 287 <div class="menu-wrapper section-inner"> 288 289 <div class="menu-top"> 290 291 <button class="toggle close-nav-toggle fill-children-current-color" data-toggle-target=".menu-modal" data-toggle-body-class="showing-menu-modal" data-set-focus=".menu-modal"> 292 <span class="toggle-text">Close Menu</span> 293 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewbox="0 0 16 16"><polygon fill="" fill-rule="evenodd" points="6.852 7.649 .399 1.195 1.445 .149 7.899 6.602 14.352 .149 15.399 1.195 8.945 7.649 15.399 14.102 14.352 15.149 7.899 8.695 1.445 15.149 .399 14.102" /></svg> </button><!-- .nav-toggle --> 294 295 296 <nav class="mobile-menu" aria-label="Mobile"> 297 298 <ul class="modal-menu reset-list-style"> 299 300 <li class="page_item page-item-1685"><div class="ancestor-wrapper"><a href="https://oobrien.com/about-me/">About</a></div><!-- .ancestor-wrapper --></li> 301<li class="page_item page-item-2947"><div class="ancestor-wrapper"><a href="https://oobrien.com/bikesharemap/">Bike Share Map</a></div><!-- .ancestor-wrapper --></li> 302<li class="page_item page-item-3168"><div class="ancestor-wrapper"><a href="https://oobrien.com/casa/">CASA</a></div><!-- .ancestor-wrapper --></li> 303<li class="page_item page-item-815"><div class="ancestor-wrapper"><a href="https://oobrien.com/conferences/">Conferences</a></div><!-- .ancestor-wrapper --></li> 304<li class="page_item page-item-4063"><div class="ancestor-wrapper"><a href="https://oobrien.com/datashine/">DataShine & CDRC</a></div><!-- .ancestor-wrapper --></li> 305<li class="page_item page-item-8997"><div class="ancestor-wrapper"><a href="https://oobrien.com/city-race/">London City Race</a></div><!-- .ancestor-wrapper --></li> 306<li class="page_item page-item-8999"><div class="ancestor-wrapper"><a href="https://oobrien.com/london-high-lines/">London High Lines</a></div><!-- .ancestor-wrapper --></li> 307<li class="page_item page-item-833"><div class="ancestor-wrapper"><a href="https://oobrien.com/press/">Media</a></div><!-- .ancestor-wrapper --></li> 308<li class="page_item page-item-8998"><div class="ancestor-wrapper"><a href="https://oobrien.com/munros/">Munros</a></div><!-- .ancestor-wrapper --></li> 309<li class="page_item page-item-1690"><div class="ancestor-wrapper"><a href="https://oobrien.com/oomap/">OpenOrienteeringMap</a></div><!-- .ancestor-wrapper --></li> 310<li class="page_item page-item-822"><div class="ancestor-wrapper"><a href="https://oobrien.com/papers/">Papers</a></div><!-- .ancestor-wrapper --></li> 311<li class="page_item page-item-3"><div class="ancestor-wrapper"><a href="https://oobrien.com/privacy-policy/">Privacy Policy</a></div><!-- .ancestor-wrapper --></li> 312<li class="page_item page-item-2335 page_item_has_children menu-item-has-children"><div class="ancestor-wrapper"><a href="https://oobrien.com/walking-cycling/">Walking & Cycling</a>
312<button class="toggle sub-menu-toggle fill-children-current-color" data-toggle-target=".menu-modal .page-item-2335 > ul" data-toggle-type="slidetoggle" data-toggle-duration="250" aria-expanded="false"><span class="screen-reader-text">Show sub menu</span><svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="20" height="12" viewbox="0 0 20 12"><polygon fill="" fill-rule="evenodd" points="1319.899 365.778 1327.678 358 1329.799 360.121 1319.899 370.021 1310 360.121 1312.121 358" transform="translate(-1310 -358)" /></svg></button></div><!-- .ancestor-wrapper --> 313<ul class='children'> 314 <li class="page_item page-item-9346"><div class="ancestor-wrapper"><a href="https://oobrien.com/walking-cycling/london-loop/">London LOOP</a></div><!-- .ancestor-wrapper --></li> 315 <li class="page_item page-item-8320"><div class="ancestor-wrapper"><a href="https://oobrien.com/walking-cycling/xengland/">X-England: Weston-super-Mare to Whitstable</a></div><!-- .ancestor-wrapper --></li> 316 <li class="page_item page-item-1735 page_item_has_children menu-item-has-children"><div class="ancestor-wrapper"><a href="https://oobrien.com/walking-cycling/lelon/">Land’s End to London</a><button class="toggle sub-menu-toggle fill-children-current-color" data-toggle-target=".menu-modal .page-item-1735 > ul" data-toggle-type="slidetoggle" data-toggle-duration="250" aria-expanded="false"><span class="screen-reader-text">Show sub menu</span><svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="20" height="12" viewbox="0 0 20 12"><polygon fill="" fill-rule="evenodd" points="1319.899 365.778 1327.678 358 1329.799 360.121 1319.899 370.021 1310 360.121 1312.121 358" transform="translate(-1310 -358)" /></svg></button></div><!-- .ancestor-wrapper --> 317 <ul class='children'> 318 <li class="page_item page-item-1888"><div class="ancestor-wrapper"><a href="https://oobrien.com/walking-cycling/lelon/prologue/">Prologue: Land’s End</a></div><!-- .ancestor-wrapper --></li> 319 <li class="page_item page-item-1890"><div class="ancestor-wrapper"><a href="https://oobrien.com/walking-cycling/lelon/day1/">Day 1: Land’s End and Lizard Point</a></div><!-- .ancestor-wrapper --></li> 320 <li class="page_item page-item-8989"><div class="ancestor-wrapper"><a href="https://oobrien.com/walking-cycling/lelon/day2/">Day 2: Lizard Point to Golant</a></div><!-- .ancestor-wrapper --></li> 321 <li class="page_item page-item-1899"><div class="ancestor-wrapper"><a href="https://oobrien.com/walking-cycling/lelon/day3/">Day 3: Golant to Boscastle</a></div><!-- .ancestor-wrapper --></li> 322 </ul> 323</li> 324 <li class="page_item page-item-567"><div class="ancestor-wrapper"><a href="https://oobrien.com/walking-cycling/thurlon/">Thurso to London</a></div><!-- .ancestor-wrapper --></li> 325</ul> 326</li> 327 328 </ul> 329 330 </nav> 331 332 333 </div><!-- .menu-top --> 334 335 <div class="menu-bottom"> 336 337 338 </div><!-- .menu-bottom --> 339 340 </div><!-- .menu-wrapper --> 341 342 </div><!-- .menu-modal-inner --> 343 344</div><!-- .menu-modal --> 345 346<main id="site-content"> 347 348 349<article class="post-9618 post type-post status-publish format-standard hentry category-london" id="post-9618"> 350 351 352<header class="entry-header has-text-align-center"> 353 354 <div class="entry-header-inner section-inner medium"> 355 356 357 <div class="entry-categories"> 358 <span class="screen-reader-text"> 359 Categories </span> 360 <div class="entry-categories-inner"> 361 <a href="https://oobrien.com/category/london/" rel="category tag">London</a> </div><!-- .entry-categories-inner --> 362 </div><!-- .entry-categories --> 363 364 <h2 class="entry-title heading-size-1"><a href="https://oobrien.com/2025/07/londons-misnamed-tube-stations/">London’s Misnamed Tube Stations</a></h2> 365 <div class="post-meta-wrapper post-meta-single post-meta-single-top"> 366 367 <ul class="post-meta"> 368 369 <li class="post-author meta-wrapper"> 370 <span class="meta-icon"> 371 <span class="screen-reader-text"> 372 Post author </span> 373 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="20" viewbox="0 0 18 20"><path fill="" d="M18,19 C18,19.5522847 17.5522847,20 17,20 C16.4477153,20 16,19.5522847 16,19 L16,17 C16,15.3431458 14.6568542,14 13,14 L5,14 C3.34314575,14 2,15.3431458 2,17 L2,19 C2,19.5522847 1.55228475,20 1,20 C0.44771525,20 0,19.5522847 0,19 L0,17 C0,14.2385763 2.23857625,12 5,12 L13,12 C15.7614237,12 18,14.2385763 18,17 L18,19 Z M9,10 C6.23857625,10 4,7.76142375 4,5 C4,2.23857625 6.23857625,0 9,0 C11.7614237,0 14,2.23857625 14,5 C14,7.76142375 11.7614237,10 9,10 Z M9,8 C10.6568542,8 12,6.65685425 12,5 C12,3.34314575 10.6568542,2 9,2 C7.34314575,2 6,3.34314575 6,5 C6,6.65685425 7.34314575,8 9,8 Z" /></svg> </span> 374 <span class="meta-text"> 375 By <a href="https://oobrien.com/author/admin/">Oliver O'Brien</a> </span> 376 </li> 377 <li class="post-date meta-wrapper"> 378 <span class="meta-icon"> 379 <span class="screen-reader-text"> 380 Post date </span> 381 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewbox="0 0 18 19"><path fill="" d="M4.60069444,4.09375 L3.25,4.09375 C2.47334957,4.09375 1.84375,4.72334957 1.84375,5.5 L1.84375,7.26736111 L16.15625,7.26736111 L16.15625,5.5 C16.15625,4.72334957 15.5266504,4.09375 14.75,4.09375 L13.3993056,4.09375 L13.3993056,4.55555556 C13.3993056,5.02154581 13.0215458,5.39930556 12.5555556,5.39930556 C12.0895653,5.39930556 11.7118056,5.02154581 11.7118056,4.55555556 L11.7118056,4.09375 L6.28819444,4.09375 L6.28819444,4.55555556 C6.28819444,5.02154581 5.9
381104347,5.39930556 5.44444444,5.39930556 C4.97845419,5.39930556 4.60069444,5.02154581 4.60069444,4.55555556 L4.60069444,4.09375 Z M6.28819444,2.40625 L11.7118056,2.40625 L11.7118056,1 C11.7118056,0.534009742 12.0895653,0.15625 12.5555556,0.15625 C13.0215458,0.15625 13.3993056,0.534009742 13.3993056,1 L13.3993056,2.40625 L14.75,2.40625 C16.4586309,2.40625 17.84375,3.79136906 17.84375,5.5 L17.84375,15.875 C17.84375,17.5836309 16.4586309,18.96875 14.75,18.96875 L3.25,18.96875 C1.54136906,18.96875 0.15625,17.5836309 0.15625,15.875 L0.15625,5.5 C0.15625,3.79136906 1.54136906,2.40625 3.25,2.40625 L4.60069444,2.40625 L4.60069444,1 C4.60069444,0.534009742 4.97845419,0.15625 5.44444444,0.15625 C5.9104347,0.15625 6.28819444,0.534009742 6.28819444,1 L6.28819444,2.40625 Z M1.84375,8.95486111 L1.84375,15.875 C1.84375,16.6516504 2.47334957,17.28125 3.25,17.28125 L14.75,17.28125 C15.5266504,17.28125 16.15625,16.6516504 16.15625,15.875 L16.15625,8.95486111 L1.84375,8.95486111 Z" /></svg> </span> 382 <span class="meta-text"> 383 <a href="https://oobrien.com/2025/07/londons-misnamed-tube-stations/">21 July 2025</a> 384 </span> 385 </li> 386 <li class="post-comment-link meta-wrapper"> 387 <span class="meta-icon"> 388 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="19" height="19" viewbox="0 0 19 19"><path d="M9.43016863,13.2235931 C9.58624731,13.094699 9.7823475,13.0241935 9.98476849,13.0241935 L15.0564516,13.0241935 C15.8581553,13.0241935 16.5080645,12.3742843 16.5080645,11.5725806 L16.5080645,3.44354839 C16.5080645,2.64184472 15.8581553,1.99193548 15.0564516,1.99193548 L3.44354839,1.99193548 C2.64184472,1.99193548 1.99193548,2.64184472 1.99193548,3.44354839 L1.99193548,11.5725806 C1.99193548,12.3742843 2.64184472,13.0241935 3.44354839,13.0241935 L5.76612903,13.0241935 C6.24715123,13.0241935 6.63709677,13.4141391 6.63709677,13.8951613 L6.63709677,15.5301903 L9.43016863,13.2235931 Z M3.44354839,14.766129 C1.67980032,14.766129 0.25,13.3363287 0.25,11.5725806 L0.25,3.44354839 C0.25,1.67980032 1.67980032,0.25 3.44354839,0.25 L15.0564516,0.25 C16.8201997,0.25 18.25,1.67980032 18.25,3.44354839 L18.25,11.5725806 C18.25,13.3363287 16.8201997,14.766129 15.0564516,14.766129 L10.2979143,14.766129 L6.32072889,18.0506004 C5.75274472,18.5196577 4.89516129,18.1156602 4.89516129,17.3790323 L4.89516129,14.766129 L3.44354839,14.766129 Z" /></svg> </span> 389 <span class="meta-text"> 390 <a href="https://oobrien.com/2025/07/londons-misnamed-tube-stations/#comments">11 Comments<span class="screen-reader-text"> on London’s Misnamed Tube Stations</span></a> </span> 391 </li> 392 393 </ul><!-- .post-meta --> 394 395 </div><!-- .post-meta-wrapper --> 396 397 398 </div><!-- .entry-header-inner --> 399 400</header><!-- .entry-header --> 401 402 <div class="post-inner thin "> 403 404 <div class="entry-content"> 405 406 407<p class="wp-block-paragraph">Many of London’s tube stations act as a focal point for the community they serve, and some times even give end up giving the area it’s name (Angel and Northwood Hills being two examples – one named after a pub/tea-house and one the winning entry in a competition). But some are just wrong and need to be renamed!</p> 408 409 410 411<p class="wp-block-paragraph">Here’s my list of offenders – I’ve looked at the Tube network itself, so this list includes a few tube stations that are beyond the London boundary:</p> 412 413 414 415<ul class="wp-block-list"> 416<li><strong>Watford</strong> – should be <strong>West Watford</strong> to reflect it only serves the suburb in the west part of this large town and in no way is near the centre (try Watford High Street for that). </li> 417 418 419 420<li><strong>Harrow & Wealdstone</strong> – is very definitely in, and so should be, <strong>Wealdstone</strong>, and it’s quite far from Harrow itself. Speaking of Harrow:</li> 421 422 423 424<li><strong>Harrow-on-the-Hill </strong>is very definitely at the bottom of the hill, which is its own distinct area. So, <strong>Harrow</strong> would be a much better name.</li> 425 426 427 428<li><strong>Turnham Green</strong> is far from Turnham Green (which is closer to Chiswick Park station). Ideally it would be called <strong>Chiswick</strong> but you’d maybe have to change the National Rail station of the same name too – maybe that could be Chiswick South?</li> 429 430 431 432<li><strong>Euston Square</strong> needs to get changed back to <strong>Gower Street</strong>. It’s on Gower Street and Warren Street is much closer to Euston Square. </li> 433 434 435 436<li><strong>Mansion House</strong> is nowhere near Mansion House and would better be called <strong>Bow Lane</strong>. </li> 437 438 439 440<li><strong>Hillingdon</strong> should be <strong>North Hillingdon</strong>. Hillingdon village is a long way to the south. </li> 441</ul> 442 443 444 445<p class="wp-block-paragraph"></p> 446 447 448 449<p class="wp-block-paragraph">Honorary mentions (not a tube station but on the tube map):</p> 450 451 452 453<ul class="wp-block-list"> 454<li><strong>West Drayton</strong> is actually in the urban centre of <strong>Yiewsley</strong> with West Drayton itself being some way to the south. </li> 455 456 457 458<li>Hayes & Harlington should be <strong>Hayes</strong> as Harlington is some distance away, and on the other side of the M4 too.</li> 459 460 461 462<li>Carpenter’s Park should be <strong>South Oxhey</strong> as this is much larger than the (older) development on the other side.</li> 463 464 465 466<li><strong>Bushey</strong> should be <strong>Oxhey</strong> – it did used to be called Bushey & Oxhey, but Bushey, while being much bigger, is a long way up the hill, while Oxhey village is adjacent. </li> 467</ul> 468 469 470 471<p class="wp-block-paragraph">Any more?</p> 472<div id="wp_fb_like_button" style="margin:5px 0 5px 5px;float:right;height:26px;">
472<script src="https://connect.facebook.net/en_US/all.js#xfbml=1"></script>
472<fb:like href="https://oobrien.com/2025/07/londons-misnamed-tube-stations/" send="true" layout="button_count" width="500" show_faces="false" font="arial" action="like" colorscheme="light"></fb:like></div> 473 </div><!-- .entry-content --> 474 475 </div><!-- .post-inner --> 476 477 <div class="section-inner"> 478 479 </div><!-- .section-inner --> 480 481 482</article><!-- .post --> 483<hr class="post-separator styled-separator is-style-wide section-inner" aria-hidden="true" /> 484<article class="post-9585 post type-post status-publish format-standard hentry category-hs2 category-london" id="post-9585"> 485 486 487<header class="entry-header has-text-align-center"> 488 489 <div class="entry-header-inner section-inner medium"> 490 491 492 <div class="entry-categories"> 493 <span class="screen-reader-text"> 494 Categories </span> 495 <div class="entry-categories-inner"> 496 <a href="https://oobrien.com/category/hs2/" rel="category tag">HS2</a> <a href="https://oobrien.com/category/london/" rel="category tag">London</a> </div><!-- .entry-categories-inner --> 497 </div><!-- .entry-categories --> 498 499 <h2 class="entry-title heading-size-1"><a href="https://oobrien.com/2024/10/the-colne-valley-viaduct-is-complete/">The Colne Valley Viaduct is Complete</a></h2> 500 <div class="post-meta-wrapper post-meta-single post-meta-single-top"> 501 502 <ul class="post-meta"> 503 504 <li class="post-author meta-wrapper"> 505 <span class="meta-icon"> 506 <span class="screen-reader-text"> 507 Post author </span> 508 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="20" viewbox="0 0 18 20"><path fill="" d="M18,19 C18,19.5522847 17.5522847,20 17,20 C16.4477153,20 16,19.5522847 16,19 L16,17 C16,15.3431458 14.6568542,14 13,14 L5,14 C3.34314575,14 2,15.3431458 2,17 L2,19 C2,19.5522847 1.55228475,20 1,20 C0.44771525,20 0,19.5522847 0,19 L0,17 C0,14.2385763 2.23857625,12 5,12 L13,12 C15.7614237,12 18,14.2385763 18,17 L18,19 Z M9,10 C6.23857625,10 4,7.76142375 4,5 C4,2.23857625 6.23857625,0 9,0 C11.7614237,0 14,2.23857625 14,5 C14,7.76142375 11.7614237,10 9,10 Z M9,8 C10.6568542,8 12,6.65685425 12,5 C12,3.34314575 10.6568542,2 9,2 C7.34314575,2 6,3.34314575 6,5 C6,6.65685425 7.34314575,8 9,8 Z" /></svg> </span> 509 <span class="meta-text"> 510 By <a href="https://oobrien.com/author/admin/">Oliver O'Brien</a> </span> 511 </li> 512 <li class="post-date meta-wrapper"> 513 <span class="meta-icon"> 514 <span class="screen-reader-text"> 515 Post date </span> 516 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewbox="0 0 18 19"><path fill="" d="M4.60069444,4.09375 L3.25,4.09375 C2.47334957,4.09375 1.84375,4.72334957 1.84375,5.5 L1.84375,7.26736111 L16.15625,7.26736111 L16.15625,5.5 C16.15625,4.72334957 15.5266504,4.09375 14.75,4.09375 L13.3993056,4.09375 L13.3993056,4.55555556 C13.3993056,5.02154581 13.0215458,5.39930556 12.5555556,5.39930556 C12.0895653,5.39930556 11.7118056,5.02154581 11.7118056,4.55555556 L11.7118056,4.09375 L6.28819444,4.09375 L6.28819444,4.55555556 C6.28819444,5.02154581 5.9104347,5.39930556 5.44444444,5.39930556 C4.97845419,5.39930556 4.60069444,5.02154581 4.60069444,4.55555556 L4.60069444,4.09375 Z M6.28819444,2.40625 L11.7118056,2.40625 L11.7118056,1 C11.7118056,0.534009742 12.0895653,0.15625 12.5555556,0.15625 C13.0215458,0.15625 13.3993056,0.534009742 13.3993056,1 L13.3993056,2.40625 L14.75,2.40625 C16.4586309,2.40625 17.84375,3.79136906 17.84375,5.5 L17.84375,15.875 C17.84375,17.5836309 16.4586309,18.96875 14.75,18.96875 L3.25,18.96875 C1.54136906,18.96875 0.15625,17.5836309 0.15625,15.875 L0.15625,5.5 C0.
51615625,3.79136906 1.54136906,2.40625 3.25,2.40625 L4.60069444,2.40625 L4.60069444,1 C4.60069444,0.534009742 4.97845419,0.15625 5.44444444,0.15625 C5.9104347,0.15625 6.28819444,0.534009742 6.28819444,1 L6.28819444,2.40625 Z M1.84375,8.95486111 L1.84375,15.875 C1.84375,16.6516504 2.47334957,17.28125 3.25,17.28125 L14.75,17.28125 C15.5266504,17.28125 16.15625,16.6516504 16.15625,15.875 L16.15625,8.95486111 L1.84375,8.95486111 Z" /></svg> </span> 517 <span class="meta-text"> 518 <a href="https://oobrien.com/2024/10/the-colne-valley-viaduct-is-complete/">25 October 2024</a> 519 </span> 520 </li> 521 <li class="post-comment-link meta-wrapper"> 522 <span class="meta-icon"> 523 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="19" height="19" viewbox="0 0 19 19"><path d="M9.43016863,13.2235931 C9.58624731,13.094699 9.7823475,13.0241935 9.98476849,13.0241935 L15.0564516,13.0241935 C15.8581553,13.0241935 16.5080645,12.3742843 16.5080645,11.5725806 L16.5080645,3.44354839 C16.5080645,2.64184472 15.8581553,1.99193548 15.0564516,1.99193548 L3.44354839,1.99193548 C2.64184472,1.99193548 1.99193548,2.64184472 1.99193548,3.44354839 L1.99193548,11.5725806 C1.99193548,12.3742843 2.64184472,13.0241935 3.44354839,13.0241935 L5.76612903,13.0241935 C6.24715123,13.0241935 6.63709677,13.4141391 6.63709677,13.8951613 L6.63709677,15.5301903 L9.43016863,13.2235931 Z M3.44354839,14.766129 C1.67980032,14.766129 0.25,13.3363287 0.25,11.5725806 L0.25,3.44354839 C0.25,1.67980032 1.67980032,0.25 3.44354839,0.25 L15.0564516,0.25 C16.8201997,0.25 18.25,1.67980032 18.25,3.44354839 L18.25,11.5725806 C18.25,13.3363287 16.8201997,14.766129 15.0564516,14.766129 L10.2979143,14.766129 L6.32072889,18.0506004 C5.75274472,18.5196577 4.89516129,18.1156602 4.89516129,17.3790323 L4.89516129,14.766129 L3.44354839,14.766129 Z" /></svg> </span> 524 <span class="meta-text"> 525 <a href="https://oobrien.com/2024/10/the-colne-valley-viaduct-is-complete/#respond">No Comments<span class="screen-reader-text"> on The Colne Valley Viaduct is Complete</span></a> </span> 526 </li> 527 528 </ul><!-- .post-meta --> 529 530 </div><!-- .post-meta-wrapper --> 531 532 533 </div><!-- .entry-header-inner --> 534 535</header><!-- .entry-header --> 536 537 <div class="post-inner thin "> 538 539 <div class="entry-content"> 540 541 542<figure class="wp-block-image size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858089731.jpg"><img fetchpriority="high" decoding="async" width="1600" height="1145" src="https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858089731.jpg" alt="" class="wp-image-9587" srcset="https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858089731.jpg 1600w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858089731-300x215.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858089731-1024x733.jpg 1024w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858089731-768x550.jpg 768w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858089731-1536x1099.jpg 1536w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858089731-1200x859.jpg 1200w" sizes="(max-width: 1600px) 100vw, 1600px" /></a></figure> 543 544 545 546<p class="wp-block-paragraph">Following on from its crossing of the Grand Union Canal this spring, the huge viaduct is finally built. The giant red “launching girder” which spent a couple of years crawling across the Colne Valley building the viaduct below itself, lies in pieces at the end of its journey, being packed up into shipping containers ready for its next project. The viaduct itself is having the pontoon sections of its haul road removed, while its parapet is also being added and other finishing works are taking place. </p> 547 548 549 550<figure class="wp-block-image size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858189404.jpg"><img decoding="async" width="1600" height="1201" src="https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858189404.jpg" alt="" class="wp-image-9590" srcset="https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858189404.jpg 1600w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858189404-300x225.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858189404-1024x769.jpg 1024w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858189404-768x576.jpg 768w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858189404-1536x1153.jpg 1536w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858189404-1200x901.jpg 1200w" sizes="(max-width: 1600px) 100v
550w, 1600px" /></a></figure> 551 552 553 554<p class="wp-block-paragraph">Quite soon, hopefully, there will be closer public access to more of its footprint, such as in Broadwater Lakes Natures Reserve, where a footbridge is promised to cross the River Colne beside where the viaduct does the same, although there is no sign of that being built yet.</p> 555 556 557 558<figure class="wp-block-image size-large"><a href="https://oobrien.com/wordpress/wp-content/uploads/2024/10/Screenshot-2024-10-28-at-23.31.59.png"><img decoding="async" width="1024" height="544" src="https://oobrien.com/wordpress/wp-content/uploads/2024/10/Screenshot-2024-10-28-at-23.31.59-1024x544.png" alt="" class="wp-image-9596" srcset="https://oobrien.com/wordpress/wp-content/uploads/2024/10/Screenshot-2024-10-28-at-23.31.59-1024x544.png 1024w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/Screenshot-2024-10-28-at-23.31.59-300x159.png 300w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/Screenshot-2024-10-28-at-23.31.59-768x408.png 768w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/Screenshot-2024-10-28-at-23.31.59.png 1152w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">From the HS2 website: The planned new River Colne footbridge, which will cross the river just a few metres upstream from the Colne Valley Viaduct itself. </figcaption></figure> 559 560 561 562<p class="wp-block-paragraph"> At a later stage, railway works will come along and add tracks, signaling and overhead power – for now, the viaduct itself becomes the “haul road” for the HS2 project across the valley, as tunnels at either end of the viaduct get completed themselves.</p> 563 564 565 566<figure class="wp-block-image size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858154517.jpg"><img loading="lazy" decoding="async" width="1600" height="1096" src="https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858154517.jpg" alt="" class="wp-image-9589" srcset="https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858154517.jpg 1600w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858154517-300x206.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858154517-1024x701.jpg 1024w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858154517-768x526.jpg 768w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858154517-1536x1052.jpg 1536w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858154517-1200x822.jpg 1200w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></a></figure> 567 568 569 570<p class="wp-block-paragraph">I was struck by the relatively low profile of the bridge and its small footprint – in contrast with the impact a major road bridge might have. The viaduct is rather graceful in places as it sweeps across the valley in a gentle curve. Construction impact on either side is being minimised and eventually it should blend in, just a blade of concrete floating above the apparently natural (albeit flooded historic gravel pits) landscape. </p> 571 572 573 574<figure class="wp-block-image size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2024/10/1730136711178.jpg"><img loading="lazy" decoding="async" width="2312" height="1736" src="https://oobrien.com/wordpress/wp-content/uploads/2024/10/1730136711178.jpg" alt="" class="wp-image-9594" srcset="https://oobrien.com/wordpress/wp-content/uploads/2024/10/1730136711178.jpg 2312w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1730136711178-300x225.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1730136711178-1024x769.jpg 1024w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1730136711178-768x577.jpg 768w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1730136711178-1536x1153.jpg 1536w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1730136711178-2048x1538.jpg 2048w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1730136711178-1200x901.jpg 1200w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1730136711178-1980x1487.jpg 1980w" sizes="auto, (max-width: 2312px) 100vw, 2312px" /></a></figure> 575 576 577 578<p class="wp-block-paragraph">Now that the line of cranes has gone, that wonderful, naturalistic view from The Old Orchard pub car-park is largely restored, with just a thin concrete line stretching right across. In time, tree growth will soften this further. </p> 579 580 581 582<figure class="wp-block-image size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858258468.jpg"><img loading="lazy" decoding="async" width="2400" height="960" src="https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858258468.jpg" alt="" class="wp-image-9588" srcset="https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858258468.jpg 2400w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858258468-300x120.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858258468-1024x410.jpg 1024w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858258468-768x307.jpg 768w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858258468-1536x614.jpg 1536w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858258468-2048x819.jpg 2048w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858258468-1200x480.jpg 1200w, https://oobrien.com/wordpress/wp-content/uploads/2024/10/1729858258468-1980x792.jpg 1980w" sizes="auto, (max-width: 2400px) 100v
582w, 2400px" /></a></figure> 583<div id="wp_fb_like_button" style="margin:5px 0 5px 5px;float:right;height:26px;">
583<script src="https://connect.facebook.net/en_US/all.js#xfbml=1"></script>
583<fb:like href="https://oobrien.com/2024/10/the-colne-valley-viaduct-is-complete/" send="true" layout="button_count" width="500" show_faces="false" font="arial" action="like" colorscheme="light"></fb:like></div> 584 </div><!-- .entry-content --> 585 586 </div><!-- .post-inner --> 587 588 <div class="section-inner"> 589 590 </div><!-- .section-inner --> 591 592 593</article><!-- .post --> 594<hr class="post-separator styled-separator is-style-wide section-inner" aria-hidden="true" /> 595<article class="post-9561 post type-post status-publish format-standard hentry category-hs2 category-london" id="post-9561"> 596 597 598<header class="entry-header has-text-align-center"> 599 600 <div class="entry-header-inner section-inner medium"> 601 602 603 <div class="entry-categories"> 604 <span class="screen-reader-text"> 605 Categories </span> 606 <div class="entry-categories-inner"> 607 <a href="https://oobrien.com/category/hs2/" rel="category tag">HS2</a> <a href="https://oobrien.com/category/london/" rel="category tag">London</a> </div><!-- .entry-categories-inner --> 608 </div><!-- .entry-categories --> 609 610 <h2 class="entry-title heading-size-1"><a href="https://oobrien.com/2024/03/the-colne-valley-viaduct-crosses-the-grand-union-canal/">The Colne Valley Viaduct Crosses The Grand Union Canal</a></h2> 611 <div class="post-meta-wrapper post-meta-single post-meta-single-top"> 612 613 <ul class="post-meta"> 614 615 <li class="post-author meta-wrapper"> 616 <span class="meta-icon"> 617 <span class="screen-reader-text"> 618 Post author </span> 619 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="20" viewbox="0 0 18 20"><path fill="" d="M18,19 C18,19.5522847 17.5522847,20 17,20 C16.4477153,20 16,19.5522847 16,19 L16,17 C16,15.3431458 14.6568542,14 13,14 L5,14 C3.34314575,14 2,15.3431458 2,17 L2,19 C2,19.5522847 1.55228475,20 1,20 C0.44771525,20 0,19.5522847 0,19 L0,17 C0,14.2385763 2.23857625,12 5,12 L13,12 C15.7614237,12 18,14.2385763 18,17 L18,19 Z M9,10 C6.23857625,10 4,7.76142375 4,5 C4,2.23857625 6.23857625,0 9,0 C11.7614237,0 14,2.23857625 14,5 C14,7.76142375 11.7614237,10 9,10 Z M9,8 C10.6568542,8 12,6.65685425 12,5 C12,3.34314575 10.6568542,2 9,2 C7.34314575,2 6,3.34314575 6,5 C6,6.65685425 7.34314575,8 9,8 Z" /></svg> </span> 620 <span class="meta-text"> 621 By <a href="https://oobrien.com/author/admin/">Oliver O'Brien</a> </span> 622 </li> 623 <li class="post-date meta-wrapper"> 624 <span class="meta-icon"> 625 <span class="screen-reader-text"> 626 Post date </span> 627 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewbox="0 0 18 19"><path fill="" d="M4.60069444,4.09375 L3.25,4.09375 C2.47334957,4.09375 1.84375,4.72334957 1.84375,5.5 L1.84375,7.26736111 L16.15625,7.26736111 L16.15625,5.5 C16.15625,4.72334957 15.5266504,4.09375 14.75,4.09375 L13.3993056,4.09375 L13.3993056,4.55555556 C13.3993056,5.02154581 13.0215458,5.39930556 12.5555556,5.39930556 C12.0895653,5.39930556 11.7118056,5.02154581 11.7118056,4.55555556 L11.7118056,4.09375 L6.28819444,4.09375 L6.28819444,4.55555556 C6.28819444,5.02154581 5.9104347,5.39930556 5.44444444,5.39930556 C4.97845419,5.39930556 4.60069444,5.02154581 4.60069444,4.55555556 L4.60069444,4.09375 Z M6.28819444,2.40625 L11.7118056,2.40625 L11.7118056,1 C11.7118056,0.534009742 12.0895653,0.15625 12.5555556,0.15625 C13.0215458,0.15625 13.3993056,0.534009742 13.3993056,1 L13.3993056,2.40625 L14.75,2.40625 C16.4586309,2.40625 17.84375,3.79136906 17.84375,5.5 L17.84375,15.875 C17.84375,17.5836309 16.4586309,18.96875 14.75,18.96875 L3.25,18.96875 C1.54136906,18.96875 0.15625,17.5836309 0.15625,15.875 L0.15625,5.5 C0.
62715625,3.79136906 1.54136906,2.40625 3.25,2.40625 L4.60069444,2.40625 L4.60069444,1 C4.60069444,0.534009742 4.97845419,0.15625 5.44444444,0.15625 C5.9104347,0.15625 6.28819444,0.534009742 6.28819444,1 L6.28819444,2.40625 Z M1.84375,8.95486111 L1.84375,15.875 C1.84375,16.6516504 2.47334957,17.28125 3.25,17.28125 L14.75,17.28125 C15.5266504,17.28125 16.15625,16.6516504 16.15625,15.875 L16.15625,8.95486111 L1.84375,8.95486111 Z" /></svg> </span> 628 <span class="meta-text"> 629 <a href="https://oobrien.com/2024/03/the-colne-valley-viaduct-crosses-the-grand-union-canal/">14 March 2024</a> 630 </span> 631 </li> 632 <li class="post-comment-link meta-wrapper"> 633 <span class="meta-icon"> 634 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="19" height="19" viewbox="0 0 19 19"><path d="M9.43016863,13.2235931 C9.58624731,13.094699 9.7823475,13.0241935 9.98476849,13.0241935 L15.0564516,13.0241935 C15.8581553,13.0241935 16.5080645,12.3742843 16.5080645,11.5725806 L16.5080645,3.44354839 C16.5080645,2.64184472 15.8581553,1.99193548 15.0564516,1.99193548 L3.44354839,1.99193548 C2.64184472,1.99193548 1.99193548,2.64184472 1.99193548,3.44354839 L1.99193548,11.5725806 C1.99193548,12.3742843 2.64184472,13.0241935 3.44354839,13.0241935 L5.76612903,13.0241935 C6.24715123,13.0241935 6.63709677,13.4141391 6.63709677,13.8951613 L6.63709677,15.5301903 L9.43016863,13.2235931 Z M3.44354839,14.766129 C1.67980032,14.766129 0.25,13.3363287 0.25,11.5725806 L0.25,3.44354839 C0.25,1.67980032 1.67980032,0.25 3.44354839,0.25 L15.0564516,0.25 C16.8201997,0.25 18.25,1.67980032 18.25,3.44354839 L18.25,11.5725806 C18.25,13.3363287 16.8201997,14.766129 15.0564516,14.766129 L10.2979143,14.766129 L6.32072889,18.0506004 C5.75274472,18.5196577 4.89516129,18.1156602 4.89516129,17.3790323 L4.89516129,14.766129 L3.44354839,14.766129 Z" /></svg> </span> 635 <span class="meta-text"> 636 <a href="https://oobrien.com/2024/03/the-colne-valley-viaduct-crosses-the-grand-union-canal/#comments">1 Comment<span class="screen-reader-text"> on The Colne Valley Viaduct Crosses The Grand Union Canal</span></a> </span> 637 </li> 638 639 </ul><!-- .post-meta --> 640 641 </div><!-- .post-meta-wrapper --> 642 643 644 </div><!-- .entry-header-inner --> 645 646</header><!-- .entry-header --> 647 648 <div class="post-inner thin "> 649 650 <div class="entry-content"> 651 652 653<figure class="wp-block-image size-large"><a href="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622880.jpg"><img loading="lazy" decoding="async" width="1024" height="769" src="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622880-1024x769.jpg" alt="" class="wp-image-9562" srcset="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622880-1024x769.jpg 1024w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622880-300x225.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622880-768x577.jpg 768w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622880-1536x1153.jpg 1536w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622880-2048x1538.jpg 2048w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622880-1200x901.jpg 1200w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622880-1980x1487.jpg 1980w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure> 654 655 656 657<p class="wp-block-paragraph">A quick visit to the Grand Union Canal between Harefield and Denham, at the point where the Colne Valley Viaduct, part of the HS2 railway, crosses it. </p> 658 659 660 661<figure class="wp-block-image size-large"><a href="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622806.jpg"><img loading="lazy" decoding="async" width="769" height="1024" src="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622806-769x1024.jpg" alt="" class="wp-image-9567" srcset="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622806-769x1024.jpg 769w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622806-225x300.jpg 225w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622806-768x1023.jpg 768w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622806-1153x1536.jpg 1153w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622806-1538x2048.jpg 1538w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622806-1200x1598.jpg 1200w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622806.jpg 1736w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></figure> 662 663 664 665<p class="wp-block-paragraph">The construction of the two-mile-long viaduct has been creeping towards the canal for the last two years, and new the red construction girder has slid across the canal itself, and is installing the concrete segments of the permanent structure below. </p> 666 667 668 669<figure class="wp-block-image size-large"><a href="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622932.jpg"><img loading="lazy" decoding="async" width="1024" height="769" src="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622932-1024x769.jpg" alt="" class="wp-image-9563" srcset="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622932-1024x769.jpg 1024w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622932-300x225.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622932-768x577.jpg 768w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622932-1536x1153.jpg 1536w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622932-2
669048x1538.jpg 2048w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622932-1200x901.jpg 1200w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622932-1980x1487.jpg 1980w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure> 670 671 672 673<p class="wp-block-paragraph">The construction means that the east bank (which is part of the London LOOP walk) is closed for a couple of weeks, while the towpath on the west bank has now reopened, but closes for 20-30 minutes several times a day for each concrete segment to pass over. The canal itself has been closed all winter to boaters but is tentatively going to start opening from tomorrow, daytime only.</p> 674 675 676 677<figure class="wp-block-image size-large"><a href="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622792.jpg"><img loading="lazy" decoding="async" width="1024" height="769" src="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622792-1024x769.jpg" alt="" class="wp-image-9564" srcset="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622792-1024x769.jpg 1024w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622792-300x225.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622792-768x577.jpg 768w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622792-1536x1153.jpg 1536w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622792-2048x1538.jpg 2048w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622792-1200x901.jpg 1200w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622792-1980x1487.jpg 1980w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure> 678 679 680 681<figure class="wp-block-image size-large"><a href="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622939.jpg"><img loading="lazy" decoding="async" width="1024" height="769" src="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622939-1024x769.jpg" alt="" class="wp-image-9565" srcset="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622939-1024x769.jpg 1024w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622939-300x225.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622939-768x577.jpg 768w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622939-1536x1153.jpg 1536w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622939-2048x1538.jpg 2048w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622939-1200x901.jpg 1200w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622939-1980x1487.jpg 1980w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure> 682 683 684 685<figure class="wp-block-image size-large"><a href="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622924.jpg"><img loading="lazy" decoding="async" width="1024" height="769" src="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622924-1024x769.jpg" alt="" class="wp-image-9566" srcset="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622924-1024x769.jpg 1024w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622924-300x225.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622924-768x577.jpg 768w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622924-1536x1153.jpg 1536w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622924-2048x1538.jpg 2048w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622924-1200x901.jpg 1200w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622924-1980x1487.jpg 1980w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure> 686 687 688 689<figure class="wp-block-image size-large"><a href="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622844.jpg"><img loading="lazy" decoding="async" width="1024" height="769" src="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622844-1024x769.jpg" alt="" class="wp-image-9568" srcset="https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622844-1024x769.jpg 1024w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622844-300x225.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622844-768x577.jpg 768w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622844-1536x1153.jpg 1536w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622844-2048x1538.jpg 2048w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622844-1200x901.jpg 1200w, https://oobrien.com/wordpress/wp-content/uploads/2024/03/1710435622844-1980x1487.jpg 1980w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure> 690<div id="wp_fb_like_button" style="margin:5px 0 5px 5px;float:right;height:26px;">
690<script src="https://connect.facebook.net/en_US/all.js#xfbml=1"></script>
690<fb:like href="https://oobrien.com/2024/03/the-colne-valley-viaduct-crosses-the-grand-union-canal/" send="true" layout="button_count" width="500" show_faces="false" font="arial" action="like" colorscheme="light"></fb:like></div> 691 </div><!-- .entry-content --> 692 693 </div><!-- .post-inner --> 694 695 <div class="section-inner"> 696 697 </div><!-- .section-inner --> 698 699 700</article><!-- .post --> 701<hr class="post-separator styled-separator is-style-wide section-inner" aria-hidden="true" /> 702<article class="post-9517 post type-post status-publish format-standard hentry category-cycling category-london" id="post-9517"> 703 704 705<header class="entry-header has-text-align-center"> 706 707 <div class="entry-header-inner section-inner medium"> 708 709 710 <div class="entry-categories"> 711 <span class="screen-reader-text"> 712 Categories </span> 713 <div class="entry-categories-inner"> 714 <a href="https://oobrien.com/category/cycling/" rel="category tag">Cycling</a> <a href="https://oobrien.com/category/london/" rel="category tag">London</a> </div><!-- .entry-categories-inner --> 715 </div><!-- .entry-categories --> 716 717 <h2 class="entry-title heading-size-1"><a href="https://oobrien.com/2024/01/all-the-boroughs/">All the Boroughs?</a></h2> 718 <div class="post-meta-wrapper post-meta-single post-meta-single-top"> 719 720 <ul class="post-meta"> 721 722 <li class="post-author meta-wrapper"> 723 <span class="meta-icon"> 724 <span class="screen-reader-text"> 725 Post author </span> 726 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="20" viewbox="0 0 18 20"><path fill="" d="M18,19 C18,19.5522847 17.5522847,20 17,20 C16.4477153,20 16,19.5522847 16,19 L16,17 C16,15.3431458 14.6568542,14 13,14 L5,14 C3.34314575,14 2,15.3431458 2,17 L2,19 C2,19.5522847 1.55228475,20 1,20 C0.44771525,20 0,19.5522847 0,19 L0,17 C0,14.2385763 2.23857625,12 5,12 L13,12 C15.7614237,12 18,14.2385763 18,17 L18,19 Z M9,10 C6.23857625,10 4,7.76142375 4,5 C4,2.23857625 6.23857625,0 9,0 C11.7614237,0 14,2.23857625 14,5 C14,7.76142375 11.7614237,10 9,10 Z M9,8 C10.6568542,8 12,6.65685425 12,5 C12,3.34314575 10.6568542,2 9,2 C7.34314575,2 6,3.34314575 6,5 C6,6.65685425 7.34314575,8 9,8 Z" /></svg> </span> 727 <span class="meta-text"> 728 By <a href="https://oobrien.com/author/admin/">Oliver O'Brien</a> </span> 729 </li> 730 <li class="post-date meta-wrapper"> 731 <span class="meta-icon"> 732 <span class="screen-reader-text"> 733 Post date </span> 734 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewbox="0 0 18 19"><path fill="" d="M4.60069444,4.09375 L3.25,4.09375 C2.47334957,4.09375 1.84375,4.72334957 1.84375,5.5 L1.84375,7.26736111 L16.15625,7.26736111 L16.15625,5.5 C16.15625,4.72334957 15.5266504,4.09375 14.75,4.09375 L13.3993056,4.09375 L13.3993056,4.55555556 C13.3993056,5.02154581 13.0215458,5.39930556 12.5555556,5.39930556 C12.0895653,5.39930556 11.7118056,5.02154581 11.7118056,4.55555556 L11.7118056,4.09375 L6.28819444,4.09375 L6.28819444,4.55555556 C6.28819444,5.02154581 5.9104347,5.39930556 5.44444444,5.39930556 C4.97845419,5.39930556 4.60069444,5.02154581 4.60069444,4.55555556 L4.60069444,4.09375 Z M6.28819444,2.40625 L11.7118056,2.40625 L11.7118056,1 C11.7118056,0.534009742 12.0895653,0.15625 12.5555556,0.15625 C13.0215458,0.15625 13.3993056,0.534009742 13.3993056,1 L13.3993056,2.40625 L14.75,2.40625 C16.4586309,2.40625 17.84375,3.79136906 17.84375,5.5 L17.84375,15.875 C17.84375,17.5836309 16.4586309,18.96875 14.75,18.96875 L3.25,18.96875 C1.54136906,18.96875 0.15625,17.5836309 0.15625,15.875 L0.15625,5.5 C0.
73415625,3.79136906 1.54136906,2.40625 3.25,2.40625 L4.60069444,2.40625 L4.60069444,1 C4.60069444,0.534009742 4.97845419,0.15625 5.44444444,0.15625 C5.9104347,0.15625 6.28819444,0.534009742 6.28819444,1 L6.28819444,2.40625 Z M1.84375,8.95486111 L1.84375,15.875 C1.84375,16.6516504 2.47334957,17.28125 3.25,17.28125 L14.75,17.28125 C15.5266504,17.28125 16.15625,16.6516504 16.15625,15.875 L16.15625,8.95486111 L1.84375,8.95486111 Z" /></svg> </span> 735 <span class="meta-text"> 736 <a href="https://oobrien.com/2024/01/all-the-boroughs/">30 January 2024</a> 737 </span> 738 </li> 739 <li class="post-comment-link meta-wrapper"> 740 <span class="meta-icon"> 741 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="19" height="19" viewbox="0 0 19 19"><path d="M9.43016863,13.2235931 C9.58624731,13.094699 9.7823475,13.0241935 9.98476849,13.0241935 L15.0564516,13.0241935 C15.8581553,13.0241935 16.5080645,12.3742843 16.5080645,11.5725806 L16.5080645,3.44354839 C16.5080645,2.64184472 15.8581553,1.99193548 15.0564516,1.99193548 L3.44354839,1.99193548 C2.64184472,1.99193548 1.99193548,2.64184472 1.99193548,3.44354839 L1.99193548,11.5725806 C1.99193548,12.3742843 2.64184472,13.0241935 3.44354839,13.0241935 L5.76612903,13.0241935 C6.24715123,13.0241935 6.63709677,13.4141391 6.63709677,13.8951613 L6.63709677,15.5301903 L9.43016863,13.2235931 Z M3.44354839,14.766129 C1.67980032,14.766129 0.25,13.3363287 0.25,11.5725806 L0.25,3.44354839 C0.25,1.67980032 1.67980032,0.25 3.44354839,0.25 L15.0564516,0.25 C16.8201997,0.25 18.25,1.67980032 18.25,3.44354839 L18.25,11.5725806 C18.25,13.3363287 16.8201997,14.766129 15.0564516,14.766129 L10.2979143,14.766129 L6.32072889,18.0506004 C5.75274472,18.5196577 4.89516129,18.1156602 4.89516129,17.3790323 L4.89516129,14.766129 L3.44354839,14.766129 Z" /></svg> </span> 742 <span class="meta-text"> 743 <a href="https://oobrien.com/2024/01/all-the-boroughs/#comments">4 Comments<span class="screen-reader-text"> on All the Boroughs?</span></a> </span> 744 </li> 745 746 </ul><!-- .post-meta --> 747 748 </div><!-- .post-meta-wrapper --> 749 750 751 </div><!-- .entry-header-inner --> 752 753</header><!-- .entry-header --> 754 755 <div class="post-inner thin "> 756 757 <div class="entry-content"> 758 759 760<p class="wp-block-paragraph">Back in 2018, I did a <a href="https://oobrien.com/2018/05/borough-challenge/">London Borough Challenge</a> – visit all 32 London Boroughs, plus the City of London, in as short a time as possible. </p> 761 762 763 764<p class="wp-block-paragraph">I made things hard for myself. I decided that my proof was taking a photograph, within each borough and of the name of the borough (e.g. street signs, salt-bins, libraries etc) – this involved some length treks around some boroughs to find such a name. I didn’t particularly plan the challenge, but just started near where I lived. I also did it at the weekend, where public transport options can be reduced, and started quite late in the day, with no food taken and only one drink bought. </p> 765 766 767 768<p class="wp-block-paragraph">I managed to visit all the boroughs in 9:25:23. My route was 121 miles, split roughly half in cycling and various train/tube legs. I quite like it, it looks reasonably efficie
768nt on the map (see blogpost above) although it did include an out-and-back leg out to Havering borough – I really should have started here (or in Bexley/Bromley). </p> 769 770 771 772<figure class="wp-block-image size-full is-resized"><a href="https://oobrien.com/wordpress/wp-content/uploads/2024/01/Screenshot-2024-01-30-at-14.29.34.png"><img loading="lazy" decoding="async" width="1561" height="1106" src="https://oobrien.com/wordpress/wp-content/uploads/2024/01/Screenshot-2024-01-30-at-14.29.34.png" alt="" class="wp-image-9527" style="width:610px;height:auto" srcset="https://oobrien.com/wordpress/wp-content/uploads/2024/01/Screenshot-2024-01-30-at-14.29.34.png 1561w, https://oobrien.com/wordpress/wp-content/uploads/2024/01/Screenshot-2024-01-30-at-14.29.34-300x213.png 300w, https://oobrien.com/wordpress/wp-content/uploads/2024/01/Screenshot-2024-01-30-at-14.29.34-1024x726.png 1024w, https://oobrien.com/wordpress/wp-content/uploads/2024/01/Screenshot-2024-01-30-at-14.29.34-768x544.png 768w, https://oobrien.com/wordpress/wp-content/uploads/2024/01/Screenshot-2024-01-30-at-14.29.34-1536x1088.png 1536w, https://oobrien.com/wordpress/wp-content/uploads/2024/01/Screenshot-2024-01-30-at-14.29.34-1200x850.png 1200w" sizes="auto, (max-width: 1561px) 100vw, 1561px" /></a></figure> 773 774 775 776<p class="has-text-align-center wp-block-paragraph"><em>Above: The Borough boundaries superimposed on an (old) tube/rail map of London created by Stefano Maggiolo.</em></p> 777 778 779 780<p class="wp-block-paragraph">I loved the idea of visiting places in London that I would never normally go to, and it included a brief sojourn into the north half of Hillingdon borough – far from (at the time) a part of London I had ever been too. I now live there. </p> 781 782 783 784<p class="wp-block-paragraph">Thanks to a mention of the challenge on the <a href="https://diamondgeezer.blogspot.com/2018/10/every-borough-challenge.html">Diamond Geezer blog</a>, and <a href="http://www.tubechallenge.com/forum/viewtopic.php?f=4&t=616&hilit=Borough+Challenge">some other posts</a> I was able to tease out a few more “times” for such a challenge:</p> 785 786 787 788<ul class="wp-block-list"> 789<li><a href="http://www.tubechallenge.com/forum/viewtopic.php?p=13587#p13587">10:39:50</a> – Richard, 27 January 2007 – Tube Challenge GWR rules, included a ~3 hour pause to watch a football game! Welling to London Bridge.</li> 790 791 792 793<li><a href="https://oobrien.com/2018/05/borough-challenge/">9:25:23</a> – My effort, 5 May 2018, bike + tube/train, photos of borough names – Meridian Water to Edgware.</li> 794 795 796 797<li><a href="https://www.youtube.com/watch?v=yfPAgSSi5Q4">8:16:27 (video)</a> – FMP346, early July 2023 – Tube Challenge GWR rules – Oakleigh Park to Falconwood.</li> 798 799 800 801<li><a href="http://www.tubechallenge.com/forum/viewtopic.php?p=15844#p15844">7:41:39</a> – JBom1, 20 August 2007, Tube Challenge GWR rules – Hadley Wood to Welling.</li> 802 803 804 805<li><a href="https://diamondgeezer.blogspot.com/2018/10/every-borough-challenge.html">7:13:00</a> – Diamond Geezer, 11 October 2018, mainly trains/tubes and some walking, underground tube/train sections and non-stop visits were allowed – Romford to Abbey Wood.</li> 806 807 808 809<li><a href="https://twitter.com/BrownPhilip/status/1010226941528629248?s=19">6:29:19</a> – Phil Brown and Hassan on 25 June 2009, stopping at a station in every borough – “a sub-6 hour time is possible”, Tube Challenge GWR rules – Eastcote to Belvedere.</li> 810</ul> 811 812 813 814<p class="wp-block-paragraph">Three of the five are “Tube Challenge GWR rules” runs. This is an adaptation of the classic London Tube Challenge. Each “visit” must be an arrival and/or departure at a stop/station by public transport. Walking/running sections are OK to link between public transport, But don’t count themselves as a “visit”. Being underground and/or staying in station/train/bus for a visit is OK. </p> 815 816 817 818<p class="wp-block-paragraph">I’m not wedded to the idea of theses rules because it makes the challenge mainly about trains/tubes/buses, rather than boroughs. Nothing wrong with that, but I feel that walking/cycling into a borough is “visiting” it. Even driving would be OK, I think. This might well be the fastest way to visit all the boroughs, if you did it late at night. But certainly, during the day, I don’t think you could even drive to a different borough every 15 minutes or so. </p> 819 820 821 822<p class="wp-block-paragraph">There’s a few, similar kind of London-themed challenges, which I would like to do one day or have done – <a href="https://oobrien.com/walking-cycling/xengland/">Coast to Coast</a>, <a href="https://oobrien.com/2023/07/all-the-docks-2/">All the Docks</a>, <a href="https://outrunthezombeez.wordpress.com/2015/04/11/bridges-tdc385/">All the (Thames) Bridges</a>, the <a href="https://oobrien.com/walking-cycling/london-loop/">London LOOP</a>, the <a href="https://www.richardgower.com/blog/londonloop">London LOOP by bike</a>, <a href="https://outrunthezombeez.wordpress.com/adventures/city-markers/">All the Boundary Dragons</a> (<a href="https://www.richardgower.com/blog/colondonboundary">&c</a>), <a href="https://tube.derickrethans.nl/">Walking the Tube</a> (or <a href="https://www.youtube.com/channel/UC_wc9G_XYm0gBR8RjT3bnPQ">Running</a> it)… I think this “completionism” desire stems from the <a href="https://en.wikipedia.org/wiki/Tube_Challenge">Tube Challenge</a> (popularised by the legend that is Geoff Marshall) and also from <a href="https://map.oobrien.com/munroist.php">All the Munros</a> which is is proving more and more tricky for me to do (but I will get them done some day!)</p> 823 824 825 826<p class="wp-block-paragraph">(There was also a recent, <a href="https://www.youtube.com/watch?v=qrf1U4vIiCg">similar challenge on the Tom the Taxi Driver Youtube channel</a> – it wasn’t a time-based challenge but it did include the basic premise of visiting a large number of boroughs sequentially. Here Tom attempted to visit all the “Knowledge” boroughs, in his taxi of course, passing just one set of junction-based traffic lights in each borough.)</p> 827 828 829 830<p class="wp-block-paragraph">Anyway I would like to try visiting all the London boroughs in a day again, this time simplifying the rules and also planning things in adcance. A GPS track with timings would be proof enough (for me) of each visit. </p> 831 832 833 834<p class="wp-block-paragraph">I think the combination of cycling and train is still the best way to go. I would even say you don’t need to “stop” in each borough (at a train/tube station or bus stop) but that you need to be on the ground (albeit in a vehicle) to record a visit.</p> 835 836 837 838<p class="wp-block-paragraph">It should take well under 9 hours to do. Although maybe not under 6 – that’s 1 borough every 11 minutes! The only question is what route to take? </p> 839 840 841 842<p class="wp-block-paragraph">Some optimisations could be focusing on <a href="https://www.richardgower.com/blog/londonboroughtripoints">borough tripoints</a> –
842 possibly starting/ending at one. These are locations where three boroughs come together. Sometimes, a fourth borough is also very near, or even a fifth (at Crystal Palace). They tend not to have great public transport connections, because boroughs tend to not be so focused on connectivity at their edges – they would no doubt rather people spend their money nicely inside the borough, well away from their rivals. </p> 843 844 845 846<p class="wp-block-paragraph">Some route miscellany:</p> 847 848 849 850<ul class="wp-block-list"> 851<li>The Crystal Palace tripoint (Bromley, Lambeth and Croydon) at the A212/A214 road junction is only 100m from Southwark, and less than 1km along the same road to Lewisham. It’s 8 miles (45 minutes on a bike) from the New Eltham area which is the Greenwich/Bexley board. That’s the 7 boroughs of South-East London down in under an hour. </li> 852 853 854 855<li>A cycle around the edge of the City of London (both sides of the Thames) can similarly get 7 more boroughs (Lambeth, Southwark, Tower Hamlets, Hackney, Islington, Camden, Westminster) plus the City itself, in little more than half an hour. </li> 856 857 858 859<li>You can’t take your bike on deep-level sections of the tube at any time – or the tube/train at all during rush hour. You also can’t take your bike on buses. But I think despite these, bike+train is the right combination.</li> 860 861 862 863<li>Bikeshare is possible this time – there’s so many Lime e-bikes in London now – possibly 10,000. But they aren’t in all of (outer) London and there is still “faff” time of finding one at your start, starting your journey with the app, and making sure the journey finishes correctly. </li> 864 865 866 867<li>I think probably, the cycling to train/tube ratio will need to be higher this time. </li> 868</ul> 869 870 871 872<h2 class="wp-block-heading">All the Boroughs By Bus?</h2> 873 874 875 876<figure class="wp-block-image size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2024/01/Screenshot-2024-01-30-at-14.01.39.png"><img loading="lazy" decoding="async" width="1115" height="787" src="https://oobrien.com/wordpress/wp-content/uploads/2024/01/Screenshot-2024-01-30-at-14.01.39.png" alt="" class="wp-image-9523" srcset="https://oobrien.com/wordpress/wp-content/uploads/2024/01/Screenshot-2024-01-30-at-14.01.39.png 1115w, https://oobrien.com/wordpress/wp-content/uploads/2024/01/Screenshot-2024-01-30-at-14.01.39-300x212.png 300w, https://oobrien.com/wordpress/wp-content/uploads/2024/01/Screenshot-2024-01-30-at-14.01.39-1024x723.png 1024w, https://oobrien.com/wordpress/wp-content/uploads/2024/01/Screenshot-2024-01-30-at-14.01.39-768x542.png 768w" sizes="auto, (max-width: 1115px) 100vw, 1115px" /></a></figure> 877 878 879 880<p class="wp-block-paragraph">There is also the possibility of a “bus edition” of All the Boroughs. I did a desk-based calculation of a possible route which worked out at around 14 hours (!) but that was before the recent announcement, and ongoing introduction of, the <a href="https://tfl.gov.uk/modes/buses/superloop">Superloop</a>. This is a near-orbital set of 8 limited-stop buses, circumnavigating outer London (plus 3 radial express routes). The orbital part of the Superloop should be fully launched later this Spring – by 2 March, is the plan – and then offer the ability to visit <a href="https://diamondgeezer.blogspot.com/2023/12/far-from-super-loop.html">18 of London’s boroughs</a> by just staying on the orbital Superloop route itself. Add in the 7 boroughs surrounding the City of London, and City itself, which could potentially all be walked, and you are just left with an inner-West London trek from Merton through Wandsworth to Hammersmith & Fulham and Kensington & Chelsea. Then you just have Havering, Haringey and Greenwich to visit. Easy!? </p> 881 882 883 884<p class="wp-block-paragraph">Some more miscellany:</p> 885 886 887 888<ul class="wp-block-list"> 889<li>There is also one especially useful regular bus as it passes through 8 boroughs – the <a href="https://diamondgeezer.blogspot.com/2022/06/boroughs-and-bus-routes.html">341</a>. Its northern end is close to a likely stop on the Superloop on the North Circular. Its southern end is very close to the SL6 radial Superloop down to Croydon – however this only runs on weekday peaks. </li> 890 891 892 893<li>SL7 passes through Hounslow borough, but doesn’t stop in it. Does that count as a visit to Hounslow? (Probably yes. We are visiting boroughs not bus stops). </li> 894</ul> 895 896 897 898<p class="wp-block-paragraph">But London buses are often very, very slow. Is it possible to do it in a day (and ideally daylight)? Can I visit all the London Boroughs for £5.25?</p> 899 900 901 902<p class="wp-block-paragraph">Watch this space!</p> 903<div id="wp_fb_like_button" style="margin:5px 0 5px 5px;float:right;height:26px;">
903<script src="https://connect.facebook.net/en_US/all.js#xfbml=1"></script>
903<fb:like href="https://oobrien.com/2024/01/all-the-boroughs/" send="true" layout="button_count" width="500" show_faces="false" font="arial" action="like" colorscheme="light"></fb:like></div> 904 </div><!-- .entry-content --> 905 906 </div><!-- .post-inner --> 907 908 <div class="section-inner"> 909 910 </div><!-- .section-inner --> 911 912 913</article><!-- .post --> 914<hr class="post-separator styled-separator is-style-wide section-inner" aria-hidden="true" /> 915<article class="post-9429 post type-post status-publish format-standard hentry category-bike-share category-london" id="post-9429"> 916 917 918<header class="entry-header has-text-align-center"> 919 920 <div class="entry-header-inner section-inner medium"> 921 922 923 <div class="entry-categories"> 924 <span class="screen-reader-text"> 925 Categories </span> 926 <div class="entry-categories-inner"> 927 <a href="https://oobrien.com/category/bike-share/" rel="category tag">Bike Share</a> <a href="https://oobrien.com/category/london/" rel="category tag">London</a> </div><!-- .entry-categories-inner --> 928 </div><!-- .entry-categories --> 929 930 <h2 class="entry-title heading-size-1"><a href="https://oobrien.com/2023/07/all-the-docks-2/">All the Docks 2</a></h2> 931 <div class="post-meta-wrapper post-meta-single post-meta-single-top"> 932 933 <ul class="post-meta"> 934 935 <li class="post-author meta-wrapper"> 936 <span class="meta-icon"> 937 <span class="screen-reader-text"> 938 Post author </span> 939 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="20" viewbox="0 0 18 20"><path fill="" d="M18,19 C18,19.5522847 17.5522847,20 17,20 C16.4477153,20 16,19.5522847 16,19 L16,17 C16,15.3431458 14.6568542,14 13,14 L5,14 C3.34314575,14 2,15.3431458 2,17 L2,19 C2,19.5522847 1.55228475,20 1,20 C0.44771525,20 0,19.5522847 0,19 L0,17 C0,14.2385763 2.23857625,12 5,12 L13,12 C15.7614237,12 18,14.2385763 18,17 L18,19 Z M9,10 C6.23857625,10 4,7.76142375 4,5 C4,2.23857625 6.23857625,0 9,0 C11.7614237,0 14,2.23857625 14,5 C14,7.76142375 11.7614237,10 9,10 Z M9,8 C10.6568542,8 12,6.65685425 12,5 C12,3.34314575 10.6568542,2 9,2 C7.34314575,2 6,3.34314575 6,5 C6,6.65685425 7.34314575,8 9,8 Z" /></svg> </span> 940 <span class="meta-text"> 941 By <a href="https://oobrien.com/author/admin/">Oliver O'Brien</a> </span> 942 </li> 943 <li class="post-date meta-wrapper"> 944 <span class="meta-icon"> 945 <span class="screen-reader-text"> 946 Post date </span> 947 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewbox="0 0 18 19"><path fill="" d="M4.60069444,4.09375 L3.25,4.09375 C2.47334957,4.09375 1.84375,4.72334957 1.84375,5.5 L1.84375,7.26736111 L16.15625,7.26736111 L16.15625,5.5 C16.15625,4.72334957 15.5266504,4.09375 14.75,4.09375 L13.3993056,4.09375 L13.3993056,4.55555556 C13.3993056,5.02154581 13.0215458,5.39930556 12.5555556,5.39930556 C12.0895653,5.39930556 11.7118056,5.02154581 11.7118056,4.55555556 L11.7118056,4.09375 L6.28819444,4.09375 L6.28819444,4.55555556 C6.28819444,5.02154581 5.9104347,5.39930556 5.44444444,5.39930556 C4.97845419,5.39930556 4.60069444,5.02154581 4.60069444,4.55555556 L4.60069444,4.09375 Z M6.28819444,2.40625 L11.7118056,2.40625 L11.7118056,1 C11.7118056,0.534009742 12.0895653,0.15625 12.5555556,0.15625 C13.0215458,0.15625 13.3993056,0.534009742 13.3993056,1 L13.3993056,2.40625 L14.75,2.40625 C16.4586309,2.40625 17.84375,3.79136906 17.84375,5.5 L17.84375,15.875 C17.84375,17.5836309 16.4586309,18.96875 14.75,18.96875 L3.25,18.96875 C1.54136906,18.96875 0.15625,17.5836309 0.15625,15.875 L0.15625,5.5 C0.
94715625,3.79136906 1.54136906,2.40625 3.25,2.40625 L4.60069444,2.40625 L4.60069444,1 C4.60069444,0.534009742 4.97845419,0.15625 5.44444444,0.15625 C5.9104347,0.15625 6.28819444,0.534009742 6.28819444,1 L6.28819444,2.40625 Z M1.84375,8.95486111 L1.84375,15.875 C1.84375,16.6516504 2.47334957,17.28125 3.25,17.28125 L14.75,17.28125 C15.5266504,17.28125 16.15625,16.6516504 16.15625,15.875 L16.15625,8.95486111 L1.84375,8.95486111 Z" /></svg> </span> 948 <span class="meta-text"> 949 <a href="https://oobrien.com/2023/07/all-the-docks-2/">18 July 2023</a> 950 </span> 951 </li> 952 <li class="post-comment-link meta-wrapper"> 953 <span class="meta-icon"> 954 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="19" height="19" viewbox="0 0 19 19"><path d="M9.43016863,13.2235931 C9.58624731,13.094699 9.7823475,13.0241935 9.98476849,13.0241935 L15.0564516,13.0241935 C15.8581553,13.0241935 16.5080645,12.3742843 16.5080645,11.5725806 L16.5080645,3.44354839 C16.5080645,2.64184472 15.8581553,1.99193548 15.0564516,1.99193548 L3.44354839,1.99193548 C2.64184472,1.99193548 1.99193548,2.64184472 1.99193548,3.44354839 L1.99193548,11.5725806 C1.99193548,12.3742843 2.64184472,13.0241935 3.44354839,13.0241935 L5.76612903,13.0241935 C6.24715123,13.0241935 6.63709677,13.4141391 6.63709677,13.8951613 L6.63709677,15.5301903 L9.43016863,13.2235931 Z M3.44354839,14.766129 C1.67980032,14.766129 0.25,13.3363287 0.25,11.5725806 L0.25,3.44354839 C0.25,1.67980032 1.67980032,0.25 3.44354839,0.25 L15.0564516,0.25 C16.8201997,0.25 18.25,1.67980032 18.25,3.44354839 L18.25,11.5725806 C18.25,13.3363287 16.8201997,14.766129 15.0564516,14.766129 L10.2979143,14.766129 L6.32072889,18.0506004 C5.75274472,18.5196577 4.89516129,18.1156602 4.89516129,17.3790323 L4.89516129,14.766129 L3.44354839,14.766129 Z" /></svg> </span> 955 <span class="meta-text">
956 <a href="https://oobrien.com/2023/07/all-the-docks-2/#comments">4 Comments<span class="screen-reader-text"> on All the Docks 2</span></a> </span> 957 </li> 958 959 </ul><!-- .post-meta --> 960 961 </div><!-- .post-meta-wrapper --> 962 963 964 </div><!-- .entry-header-inner --> 965 966</header><!-- .entry-header --> 967 968 <div class="post-inner thin "> 969 970 <div class="entry-content"> 971 972 973<figure class="wp-block-image size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2023/07/1689696108101.jpg"><img loading="lazy" decoding="async" width="2104" height="1560" src="https://oobrien.com/wordpress/wp-content/uploads/2023/07/1689696108101.jpg" alt="" class="wp-image-9432" srcset="https://oobrien.com/wordpress/wp-content/uploads/2023/07/1689696108101.jpg 2104w, https://oobrien.com/wordpress/wp-content/uploads/2023/07/1689696108101-300x222.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2023/07/1689696108101-1024x759.jpg 1024w, https://oobrien.com/wordpress/wp-content/uploads/2023/07/1689696108101-768x569.jpg 768w, https://oobrien.com/wordpress/wp-content/uploads/2023/07/1689696108101-1536x1139.jpg 1536w, https://oobrien.com/wordpress/wp-content/uploads/2023/07/1689696108101-2048x1518.jpg 2048w, https://oobrien.com/wordpress/wp-content/uploads/2023/07/1689696108101-1200x890.jpg 1200w, https://oobrien.com/wordpress/wp-content/uploads/2023/07/1689696108101-1980x1468.jpg 1980w" sizes="auto, (max-width: 2104px) 100vw, 2104px" /></a></figure> 974 975 976 977<p class="wp-block-paragraph">Yes, we <a href="https://oobrien.com/2022/10/all-the-docks-how-it-went/">did it again</a>. All the Docks 2 took place in London on 9 July. Five teams (up from three last time) each cycled between a fifth of the Santander Cycles docking stations in London. I again did <a href="https://github.com/oobrien/allthedocks">the routes</a>, splitting up the ~800 docking stations into 5 routes of 160 docking stations apiece. To make it more of a challenge, this time we started in central London, at the same docking station we were all to finish at, with the teams looping out from central, before returning. </p> 978 979 980 981<p class="wp-block-paragraph">Each team was to visit exactly the same number of docking stations, with routes measured at around 71.7km +/- 1km maximum, to make it a genuine equal challenge. </p> 982 983 984 985<p class="wp-block-paragraph">I was on Team West this time, with Westfield London and Hyde Park being the highlights, contrasting from the Olympic Park and Canary Wharf last time round. Team West was an all-UCL team. </p> 986 987 988 989<figure class="wp-block-image size-full is-resized"><a href="https://oobrien.com/wordpress/wp-content/uploads/2023/07/teamwest_route.jpg"><img loading="lazy" decoding="async" src="https://oobrien.com/wordpress/wp-content/uploads/2023/07/teamwest_route.jpg" alt="" class="wp-image-9437" width="610" height="331" srcset="https://oobrien.com/wordpress/wp-content/uploads/2023/07/teamwest_route.jpg 1430w, https://oobrien.com/wordpress/wp-content/uploads/2023/07/teamwest_route-300x163.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2023/07/teamwest_route-1024x556.jpg 1024w, https://oobrien.com/wordpress/wp-content/uploads/2023/07/teamwest_route-768x417.jpg 768w, https://oobrien.com/wordpress/wp-content/uploads/2023/07/teamwest_route-1200x651.jpg 1200w" sizes="auto, (max-width: 610px) 100vw, 610px" /></a></figure> 990 991 992 993<p class="wp-block-paragraph"><em>(Route courtesy of West Team lead rider Dr James Todd)</em></p> 994 995 996 997<h2 class="wp-block-heading">What went right?</h2> 998 999 1000 1001<p class="wp-block-paragraph">Nearly everything this time. </p> 1002 1003 1004 1005<p class="wp-block-paragraph">All teams started and finished. Four of the five teams finished within 5 minutes of each other, which I think is great after nearly 8 hours of cycling. One team finished half an hour quicker than the others, and therefore won, but then they did skip stopping for lunch. Fair play to them.</p> 1006 1007 1008 1009<p class="wp-block-paragraph">The weather was good, and Sunday traffic was light so the challenge was more pleasant. </p> 1010 1011 1012 1013<p class="wp-block-paragraph">TfL didn’t open any extra docking stations during the day, so no on-the-fly replanning was needed. </p> 1014 1015 1016 1017<p class="wp-block-paragraph">All teams used <a href="http://map.allthedocks.com/">my online map</a> to record their docks so we got a nearly complete dataset (albeit with a few errors in it) showing the teams docking.</p> 1018 1019 1020 1021<p class="wp-block-paragraph">The challenge had <a href="https://allthedocks.com/">an official website</a> this time, courtesy of overall coordinator Stephen Bee. </p> 1022 1023 1024 1025<p class="wp-block-paragraph">Prof Wood at City used the live API to generate some really nice live visuals of the progress, which he later turned into an animation:</p> 1026 1027 1028 1029<figure class="wp-block-video"><video height="448" style="aspect-ratio: 800 / 448;" width="800" controls src="https://oobrien.com/wordpress/wp-content/uploads/2023/07/F0rr5foXsAUta_c.mp4"></video></figure> 1030 1031 1032 1033<p class="wp-block-paragraph">The routes seemed to work OK – there were some quirks, such as the nearly 2 mile cycle North Team had across South Hackney to get to the Olympic Park. Originally, this area was Team East, but adding this in to the Team North route was essential to balance the lengths of the different routes. For Team West, we only had a couple of no-entry signs that I hadn’t anticipated and the odd road closure due to building work. Team South and Team Putney both had to cross the Thames four times. </p> 1034 1035 1036 1037<p class="wp-block-paragraph">This time I put each stage (stages are approximately 10km or 1 hour of cycling, so each team had 7 stages) through a TSP solver – I wrote <a href="https://github.com/oobrien/allthedocks/blob/main/construction/atd_osrm.py">some Python code</a> to make appropriate calls to an OSRM server (<a href="https://routing.openstreetmap.de/">routing.openstreetmap.de</a>) and modify the results to create a GeoJSON, viewed in QGIS. Unfortunately, the <a href="https://github.com/fossgis-routing-server/cbf-routing-profiles/blob/master/bike.lua">pre-defined vehicle profiles</a> available on the server meant that the cycling routes avoided trunk roads, whereas in London they are generally fine to go on, and also the router was too enthusiastic about using pavements for quite long sections, and even steps (a no-no for the 25kg Santander Cycles bikes). Next time, I would <a href="https://github.com/fossgis-routing-server/osrm-backend">run my own OSRM server</a>, with a a custom defined profile more suitable for London cycling. But the routes generated did suggest some optimisations and I was able to reduce the route lengths <a href="https://github.com/oobrien/allthedocks/blob/main/README.md">by around 1%</a>, in places substantially rerouting sections. So, a win overall for using TSP engines.</p> 1038 1039 1040 1041<p class="wp-block-paragraph">Everyone seemed to enjoy themselves and the ~4:30pm finish was ideal for a couple of pints outside at the pub opposite. </p> 1042 1043 1044 1045<h2 class="wp-block-heading">What went wrong?</h2> 1046 1047 1048 1049<p class="wp-block-paragraph">The biggest problem was the London 10K. This was happening almost unbeknown to us, except that I luckily realised it was happening and going to be a problem, when I read a TfL summary of events happening, the night before. The impact was quite major on the start of the event – I suspected that TfL would, unannounced, turn off a number of docking stations, but worse, the route was blocking the first stage for two of the teams – Team Putney and Team West started right down the race route. Urgent replanning the night before was needed. Team Putney did a dramatic diversion out via Waterloo and Lambeth Bridge (taking on some Team South docking stations). In compensation, Team South picked up some of Team Putney’s docking stations at the end of the day. Team West’s route would also be blocked at Regent Street. In the end, a diversion around Oxford Street, and a bit of replanning to add in a loop, didn’t lengthen the route too much. In the end, 5 docking stations were indeed turned off, they came back online in the mid-afternoon, just before the teams closed in on them, so all’s well that ends well. Probably, Team Putney could have sneaked down the race route, as the race started at 0930 and we started at 9am – and the course wasn’t completely sealed off until the runners started. </p> 1050 1051 1052 1053<p class="wp-block-paragraph">My team (Team West) suffered a couple of technical problems due to docks going offline. This meant that the bikes docked, but journeys did not “end” in the Santander Cycles system. Therefore, a new journey could not be started. These issues were solved with phone call to the helpdesk, however, the first time, the operator made us jog back to the previous docking station (as we had already cycled on with another bike/account) to confirm cycle numbers to prove we were there. Very annoying and we lost 15 minutes this way. TfL should know when their docking stations are offline. When it happened near the end, we again had to jog back, and used the remaining key for the last two hops. In the end, it didn’t deny us the win – we’d already lost that by having too leisurely a lunch. (Two accounts are necessary for the challenge, to avoid a 30 second account timeout between successive hires). </p> 1054 1055 1056 1057<p class="wp-block-paragraph">There were again some problems with the team version of my live map. The API response went quite slow during the day, even though I had tested it to work within a few milliseconds. This meant it was easy to tick, and then accidentally untick while waiting for the response to come back. Future UX tweaks would mean a confirmation needed to untick, or to tick a station later than the next one in the list. </p> 1058 1059 1060 1061<p class="wp-block-paragraph">Routes generally worked well but Team West was surprised by the sudden removal of the cycle track on the inner side of the Hammersmith Gyratory, necessitating a diversion and then some hairy lane swerves to get back on track. Sudden ending of otherwise good cycle infrastru
1061cture is a long-standing London quirk. Looking at maps, even now, I still can’t work out how cyclists are supposed to get from Talgarth Road (north side) to King Street. Maybe via Shortlands? But then why have such a great cycle path on Talgarth Road itself?</p> 1062 1063 1064 1065<p class="wp-block-paragraph">I need to automate the process of creating the routes and the files generated from the routes, particularly going from the GeoJSONs in QGIS, to the GPX route/waypoint files and the dock list. Like last time, I went through four iterations of the routes, each correction and publishing cycle took 2-3 hours. </p> 1066 1067 1068 1069<p class="wp-block-paragraph">Late changes, mainly relating to the London 10K replanning but also the need to get five route with the same number of docking stations and essentially the same length, meant I couldn’t include some “iconic” London cycling pieces in the routes – namely the Kensington Gardens Broad Walk, Parliament Square, or Battersea Bridge. </p> 1070 1071 1072 1073<p class="wp-block-paragraph">Team leads were given Go-Pros to wear, which were set to do time-lapse imagery, but these soon ran out of batteries. A different kind of device might be needed for this kind of thing. </p> 1074 1075 1076 1077<p class="wp-block-paragraph">We were expecting more on-the-day involvement from TfL (both technical and promotional) and some other data organisations as the event was part of London Data Week, indeed this set the event date. In the end, apart from Prof Wood’s excellent contribution above, we were on our own. It is possible some further outputs may appear.</p> 1078 1079 1080 1081<h2 class="wp-block-heading">Some final notes</h2> 1082 1083 1084 1085<p class="wp-block-paragraph">All teams used at least one Santander Cycle between each dock, docking and undocking each time, to make the challenge official. There were no rules on what bikes the other members could be on, so one person had the great idea of doing ~55 minute rentals on the Santander Cycle electric bikes, each time. This is great because it makes the challenge more enjoyable, having an electric boost. It also will have only cost an extra ~£8 or so (as the surcharge for electric is £1 for up to an hour). The only drawback is no easy way to mount your phone on a hire bike. But i think I would be happy to trade that for an easier pedal.</p> 1086 1087 1088 1089<p class="wp-block-paragraph">Until next time…</p> 1090<div id="wp_fb_like_button" style="margin:5px 0 5px 5px;float:right;height:26px;">
1090<script src="https://connect.facebook.net/en_US/all.js#xfbml=1"></script>
1090<fb:like href="https://oobrien.com/2023/07/all-the-docks-2/" send="true" layout="button_count" width="500" show_faces="false" font="arial" action="like" colorscheme="light"></fb:like></div> 1091 </div><!-- .entry-content --> 1092 1093 </div><!-- .post-inner --> 1094 1095 <div class="section-inner"> 1096 1097 </div><!-- .section-inner --> 1098 1099 1100</article><!-- .post --> 1101<hr class="post-separator styled-separator is-style-wide section-inner" aria-hidden="true" /> 1102<article class="post-9405 post type-post status-publish format-standard hentry category-data" id="post-9405"> 1103 1104 1105<header class="entry-header has-text-align-center"> 1106 1107 <div class="entry-header-inner section-inner medium"> 1108 1109 1110 <div class="entry-categories"> 1111 <span class="screen-reader-text"> 1112 Categories </span> 1113 <div class="entry-categories-inner"> 1114 <a href="https://oobrien.com/category/data/" rel="category tag">Data</a> </div><!-- .entry-categories-inner --> 1115 </div><!-- .entry-categories --> 1116 1117 <h2 class="entry-title heading-size-1"><a href="https://oobrien.com/2023/07/building-data/">Building Data</a></h2> 1118 <div class="post-meta-wrapper post-meta-single post-meta-single-top"> 1119 1120 <ul class="post-meta"> 1121 1122 <li class="post-author meta-wrapper"> 1123 <span class="meta-icon"> 1124 <span class="screen-reader-text"> 1125 Post author </span> 1126 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="20" viewbox="0 0 18 20"><path fill="" d="M18,19 C18,19.5522847 17.5522847,20 17,20 C16.4477153,20 16,19.5522847 16,19 L16,17 C16,15.3431458 14.6568542,14 13,14 L5,14 C3.34314575,14 2,15.3431458 2,17 L2,19 C2,19.5522847 1.55228475,20 1,20 C0.44771525,20 0,19.5522847 0,19 L0,17 C0,14.2385763 2.23857625,12 5,12 L13,12 C15.7614237,12 18,14.2385763 18,17 L18,19 Z M9,10 C6.23857625,10 4,7.76142375 4,5 C4,2.23857625 6.23857625,0 9,0 C11.7614237,0 14,2.23857625 14,5 C14,7.76142375 11.7614237,10 9,10 Z M9,8 C10.6568542,8 12,6.65685425 12,5 C12,3.34314575 10.6568542,2 9,2 C7.34314575,2 6,3.34314575 6,5 C6,6.65685425 7.34314575,8 9,8 Z" /></svg> </span> 1127 <span class="meta-text"> 1128 By <a href="https://oobrien.com/author/admin/">Oliver O'Brien</a> </span> 1129 </li> 1130 <li class="post-date meta-wrapper"> 1131 <span class="meta-icon"> 1132 <span class="screen-reader-text"> 1133 Post date </span> 1134 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewbox="0 0 18 19"><path fill="" d="M4.60069444,4.09375 L3.25,4.09375 C2.47334957,4.09375 1.84375,4.72334957 1.84375,5.5 L1.84375,7.26736111 L16.15625,7.26736111 L16.15625,5.5 C16.15625,4.72334957 15.5266504,4.09375 14.75,4.09375 L13.3993056,4.09375 L13.3993056,4.55555556 C13.3993056,5.02154581 13.0215458,5.39930556 12.5555556,5.39930556 C12.0895653,5.39930556 11.7118056,5.02154581 11.7118056,4.55555556 L11.7118056,4.09375 L6.28819444,4.09375 L6.28819444,4.55555556 C6.28819444,5.02154581 5.9104347,5.39930556 5.44444444,5.39930556 C4.97845419,5.39930556 4.60069444,5.02154581 4.60069444,4.55555556 L4.60069444,4.09375 Z M6.28819444,2.40625 L11.7118056,2.40625 L11.7118056,1 C11.7118056,0.534009742 12.0895653,0.15625 12.5555556,0.15625 C13.0215458,0.15625 13.3993056,0.534009742 13.3993056,1 L13.3993056,2.40625 L14.75,2.40625 C16.4586309,2.40625 17.84375,3.79136906 17.84375,5.5 L17.84375,15.875 C17.84375,17.5836309 16.4586309,18.96875 14.75,18.96875 L3.25,18.96875 C1.54136906,18.96875 0.15625,17.5836309 0.15625,15.875 L0.15625,5.5 C0.
113415625,3.79136906 1.54136906,2.40625 3.25,2.40625 L4.60069444,2.40625 L4.60069444,1 C4.60069444,0.534009742 4.97845419,0.15625 5.44444444,0.15625 C5.9104347,0.15625 6.28819444,0.534009742 6.28819444,1 L6.28819444,2.40625 Z M1.84375,8.95486111 L1.84375,15.875 C1.84375,16.6516504 2.47334957,17.28125 3.25,17.28125 L14.75,17.28125 C15.5266504,17.28125 16.15625,16.6516504 16.15625,15.875 L16.15625,8.95486111 L1.84375,8.95486111 Z" /></svg> </span> 1135 <span class="meta-text"> 1136 <a href="https://oobrien.com/2023/07/building-data/">5 July 2023</a> 1137 </span> 1138 </li> 1139 <li class="post-comment-link meta-wrapper"> 1140 <span class="meta-icon"> 1141 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="19" height="19" viewbox="0 0 19 19"><path d="M9.43016863,13.2235931 C9.58624731,13.094699 9.7823475,13.0241935 9.98476849,13.0241935 L15.0564516,13.0241935 C15.8581553,13.0241935 16.5080645,12.3742843 16.5080645,11.5725806 L16.5080645,3.44354839 C16.5080645,2.64184472 15.8581553,1.99193548 15.0564516,1.99193548 L3.44354839,1.99193548 C2.64184472,1.99193548 1.99193548,2.64184472 1.99193548,3.44354839 L1.99193548,11.5725806 C1.99193548,12.3742843 2.64184472,13.0241935 3.44354839,13.0241935 L5.76612903,13.0241935 C6.24715123,13.0241935 6.63709677,13.4141391 6.63709677,13.8951613 L6.63709677,15.5301903 L9.43016863,13.2235931 Z M3.44354839,14.766129 C1.67980032,14.766129 0.25,13.3363287 0.25,11.5725806 L0.25,3.44354839 C0.25,1.67980032 1.67980032,0.25 3.44354839,0.25 L15.0564516,0.25 C16.8201997,0.25 18.25,1.67980032 18.25,3.44354839 L18.25,11.5725806 C18.25,13.3363287 16.8201997,14.766129 15.0564516,14.766129 L10.2979143,14.766129 L6.32072889,18.0506004 C5.75274472,18.5196577 4.89516129,18.1156602 4.89516129,17.3790323 L4.89516129,14.766129 L3.44354839,14.766129 Z" /></svg> </span> 1142 <span class="meta-text"> 1143 <a href="https://oobrien.com/2023/07/building-data/#comments">1 Comment<span class="screen-reader-text"> on Building Data</span></a> </span> 1144 </li> 1145 1146 </ul><!-- .post-meta --> 1147 1148 </div><!-- .post-meta-wrapper --> 1149 1150 1151 </div><!-- .entry-header-inner --> 1152 1153</header><!-- .entry-header --> 1154 1155 <div class="post-inner thin "> 1156 1157 <div class="entry-content"> 1158 1159 1160<figure class="wp-block-image size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2023/07/buildingdata.png"><img loading="lazy" decoding="async" width="824" height="568" src="https://oobrien.com/wordpress/wp-content/uploads/2023/07/buildingdata.png" alt="" class="wp-image-9422" srcset="https://oobrien.com/wordpress/wp-content/uploads/2023/07/buildingdata.png 824w, https://oobrien.com/wordpress/wp-content/uploads/2023/07/buildingdata-300x207.png 300w, https://oobrien.com/wordpress/wp-content/uploads/2023/07/buildingdata-768x529.png 768w" sizes="auto, (max-width: 824px) 100vw, 824px" /></a></figure> 1161 1162 1163 1164<p class="wp-block-paragraph">Seven years ago, <a href="https://oobrien.com/2015/12/building-ages/">I wrote</a> “We don’t have individual building age open data in the UK” – but that is no longer true!</p> 1165 1166 1167 1168<p class="wp-block-paragraph">The MLUHC (for England Wales) and the Scottish Government via the Energy Saving Trust have been publishing individual Energy Performance Certificates (EPCs), for both residential and non-residential buildings, for several years now, and the records go back to 2008 and 2013 respectively. As all new properties require EPCs, and they are also required regularly for rented properties and house sales, the proportion of buildings with these certificates has gradually increased, to around 50% of properties (around 40% in Scotland). </p> 1169 1170 1171 1172<p class="wp-block-paragraph">One of the attributes available on the domestic certificate bulk data is the approximate aged of the building – in approximately 10-year age bands. However, linking this to a location used to require using the decidedly non-open AddressBase columns in the dataset. However, more recently, the publishing authorities have added Ordnance Survey UPRNs (Unique Property Reference Numbers) to the data – and this can be linked with the UPRN Lookup tables published by the Office of National Statistics (ONS) which contain locations (eastings and northings) of the UPRNs, which typically are the front door of each property. </p> 1173 1174 1175 1176<p class="wp-block-paragraph">By combining the UPRNs with the lookup, it is now possible to map building ages, for around half of the individual buildings in Great Britain. Moreover, it looks increasingly possible to distinguish residential from non-residential buildings (some have both uses, of course) which will potentially be a very useful attribute when mapping residential data, with the ability to blank out non-residential buildings. Many of CDRC Mapmaker’s maps show data based on the residential population only, so colouring business park buildings with the data never made sense. </p> 1177 1178 1179 1180<p class="wp-block-paragraph">The individual building data also allows a more precise look at the different areas of cities, based on their built form. The exact extents of housing estates, or Victoria terraces, are now obvious, from sharp changes in building age, tenancy type and floor area compared with neighbouring blocks, which sit in the same LSOA/Data Zone – the previous smallest unit of building age detail, <a href="https://mapmaker.cdrc.ac.uk/#/dwelling-ages-prices?m=dwe_mdargb&lon=-0.0838&lat=51.6624&zoom=12.46" data-type="link" data-id="https://mapmaker.cdrc.ac.uk/#/dwelling-ages-prices?lon=-0.0838&lat=51.6624&zoom=12.46">from the previous best-resolution open-data dataset</a>, from the VOA. </p> 1181 1182 1183 1184<p class="wp-block-paragraph">As part of this project, on CDRC Data I plan to, as soon as I am able to*, publish the individual (UPRN-by-UPRN) building attribute data, across Great Britain. I’ve also aggregated by Output Area (2021 for England/Wales, 2011 for Scotland) for domestic properties, and by Workplace Zone 2011 for non-domestic properties. (*Currently some other work on EPC data is being carried out at CDRC and that may take precedence.) </p> 1185 1186 1187 1188<p class="wp-block-paragraph">I’ve <a href="https://mapmaker.cdrc.ac.uk/#/building-attributes">mapped these on CDRC Mapmaker</a>. Using the PWC (population weighted centroids) for these, and mode/median based aggregates, allows aggregated representation of the data, when looking it at smaller zoom levels on the map. Zooming in reveals the individual building data. PWCs are useful because they retain the urban form – rather than arbitrarily assigning each OA to, for example, a river running through a development. </p> 1189 1190 1191 1192<p class="wp-block-paragraph">The inspiration for this project – mapping the age of Britain’s buildings – comes from this old but excellent <a href="http://code.waag.org/buildings/">example from the Netherlands</a>. There is more to be done – assigning estimated ages for buildings nearby confirmed ones, and colouring in each block rather than just assigning a dot to a doorstep – which will follow.</p> 1193 1194 1195 1196<p class="wp-block-paragraph"><em>I use buildings and properties interchangeably here – a property is a housing unit where a family/social unit live, and has an address – it might be in a single building or spread across several, and (more likely) a building may contain lots of addresses and properties, such as a block of flats. </em></p> 1197<div id="wp_fb_like_button" style="margin:5px 0 5px 5px;float:right;height:26px;">
1197<script src="https://connect.facebook.net/en_US/all.js#xfbml=1"></script>
1197<fb:like href="https://oobrien.com/2023/07/building-data/" send="true" layout="button_count" width="500" show_faces="false" font="arial" action="like" colorscheme="light"></fb:like></div> 1198 </div><!-- .entry-content --> 1199 1200 </div><!-- .post-inner --> 1201 1202 <div class="section-inner"> 1203 1204 </div><!-- .section-inner --> 1205 1206 1207</article><!-- .post --> 1208<hr class="post-separator styled-separator is-style-wide section-inner" aria-hidden="true" /> 1209<article class="post-9278 post type-post status-publish format-standard hentry category-technical" id="post-9278"> 1210 1211 1212<header class="entry-header has-text-align-center"> 1213 1214 <div class="entry-header-inner section-inner medium"> 1215 1216 1217 <div class="entry-categories"> 1218 <span class="screen-reader-text"> 1219 Categories </span> 1220 <div class="entry-categories-inner"> 1221 <a href="https://oobrien.com/category/technical/" rel="category tag">Technical</a> </div><!-- .entry-categories-inner --> 1222 </div><!-- .entry-categories --> 1223 1224 <h2 class="entry-title heading-size-1"><a href="https://oobrien.com/2023/03/consolidation/">Consolidation</a></h2> 1225 <div class="post-meta-wrapper post-meta-single post-meta-single-top"> 1226 1227 <ul class="post-meta"> 1228 1229 <li class="post-author meta-wrapper"> 1230 <span class="meta-icon"> 1231 <span class="screen-reader-text"> 1232 Post author </span> 1233 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="20" viewbox="0 0 18 20"><path fill="" d="M18,19 C18,19.5522847 17.5522847,20 17,20 C16.4477153,20 16,19.5522847 16,19 L16,17 C16,15.3431458 14.6568542,14 13,14 L5,14 C3.34314575,14 2,15.3431458 2,17 L2,19 C2,19.5522847 1.55228475,20 1,20 C0.44771525,20 0,19.5522847 0,19 L0,17 C0,14.2385763 2.23857625,12 5,12 L13,12 C15.7614237,12 18,14.2385763 18,17 L18,19 Z M9,10 C6.23857625,10 4,7.76142375 4,5 C4,2.23857625 6.23857625,0 9,0 C11.7614237,0 14,2.23857625 14,5 C14,7.76142375 11.7614237,10 9,10 Z M9,8 C10.6568542,8 12,6.65685425 12,5 C12,3.34314575 10.6568542,2 9,2 C7.34314575,2 6,3.34314575 6,5 C6,6.65685425 7.34314575,8 9,8 Z" /></svg> </span> 1234 <span class="meta-text"> 1235 By <a href="https://oobrien.com/author/admin/">Oliver O'Brien</a> </span> 1236 </li> 1237 <li class="post-date meta-wrapper"> 1238 <span class="meta-icon"> 1239 <span class="screen-reader-text"> 1240 Post date </span> 1241 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewbox="0 0 18 19"><path fill="" d="M4.60069444,4.09375 L3.25,4.09375 C2.47334957,4.09375 1.84375,4.72334957 1.84375,5.5 L1.84375,7.26736111 L16.15625,7.26736111 L16.15625,5.5 C16.15625,4.72334957 15.5266504,4.09375 14.75,4.09375 L13.3993056,4.09375 L13.3993056,4.55555556 C13.3993056,5.02154581 13.0215458,5.39930556 12.5555556,5.39930556 C12.0895653,5.39930556 11.7118056,5.02154581 11.7118056,4.55555556 L11.7118056,4.09375 L6.28819444,4.09375 L6.28819444,4.55555556 C6.28819444,5.02154581 5.9104347,5.39930556 5.44444444,5.39930556 C4.97845419,5.39930556 4.60069444,5.02154581 4.60069444,4.55555556 L4.60069444,4.09375 Z M6.28819444,2.40625 L11.7118056,2.40625 L11.7118056,1 C11.7118056,0.534009742 12.0895653,0.15625 12.5555556,0.15625 C13.0215458,0.15625 13.3993056,0.534009742 13.3993056,1 L13.3993056,2.40625 L14.75,2.40625 C16.4586309,2.40625 17.84375,3.79136906 17.84375,5.5 L17.84375,15.875 C17.84375,17.5836309 16.4586309,18.96875 14.75,18.96875 L3.25,18.96875 C1.54136906,18.96875 0.15625,17.5836309 0.15625,15.875 L0.15625,5.5 C0.
124115625,3.79136906 1.54136906,2.40625 3.25,2.40625 L4.60069444,2.40625 L4.60069444,1 C4.60069444,0.534009742 4.97845419,0.15625 5.44444444,0.15625 C5.9104347,0.15625 6.28819444,0.534009742 6.28819444,1 L6.28819444,2.40625 Z M1.84375,8.95486111 L1.84375,15.875 C1.84375,16.6516504 2.47334957,17.28125 3.25,17.28125 L14.75,17.28125 C15.5266504,17.28125 16.15625,16.6516504 16.15625,15.875 L16.15625,8.95486111 L1.84375,8.95486111 Z" /></svg> </span> 1242 <span class="meta-text"> 1243 <a href="https://oobrien.com/2023/03/consolidation/">17 March 2023</a> 1244 </span> 1245 </li> 1246 <li class="post-comment-link meta-wrapper"> 1247 <span class="meta-icon"> 1248 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="19" height="19" viewbox="0 0 19 19"><path d="M9.43016863,13.2235931 C9.58624731,13.094699 9.7823475,13.0241935 9.98476849,13.0241935 L15.0564516,13.0241935 C15.8581553,13.0241935 16.5080645,12.3742843 16.5080645,11.5725806 L16.5080645,3.44354839 C16.5080645,2.64184472 15.8581553,1.99193548 15.0564516,1.99193548 L3.44354839,1.99193548 C2.64184472,1.99193548 1.99193548,2.64184472 1.99193548,3.44354839 L1.99193548,11.5725806 C1.99193548,12.3742843 2.64184472,13.0241935 3.44354839,13.0241935 L5.76612903,13.0241935 C6.24715123,13.0241935 6.63709677,13.4141391 6.63709677,13.8951613 L6.63709677,15.5301903 L9.43016863,13.2235931 Z M3.44354839,14.766129 C1.67980032,14.766129 0.25,13.3363287 0.25,11.5725806 L0.25,3.44354839 C0.25,1.67980032 1.67980032,0.25 3.44354839,0.25 L15.0564516,0.25 C16.8201997,0.25 18.25,1.67980032 18.25,3.44354839 L18.25,11.5725806 C18.25,13.3363287 16.8201997,14.766129 15.0564516,14.766129 L10.2979143,14.766129 L6.32072889,18.0506004 C5.75274472,18.5196577 4.89516129,18.1156602 4.89516129,17.3790323 L4.89516129,14.766129 L3.44354839,14.766129 Z" /></svg> </span> 1249 <span class="meta-text"> 1250 <a href="https://oobrien.com/2023/03/consolidation/#comments">1 Comment<span class="screen-reader-text"> on Consolidation</span></a> </span> 1251 </li> 1252 1253 </ul><!-- .post-meta --> 1254 1255 </div><!-- .post-meta-wrapper --> 1256 1257 1258 </div><!-- .entry-header-inner --> 1259 1260</header><!-- .entry-header --> 1261 1262 <div class="post-inner thin "> 1263 1264 <div class="entry-content"> 1265 1266 1267<p class="wp-block-paragraph">In an effort to focus my (now rather limited) spare time on a more nuanced set of web projects, I have consolidated some websites.</p> 1268 1269 1270 1271<h2 class="wp-block-heading">Three Blogs into One</h2> 1272 1273 1274 1275<p class="wp-block-paragraph">I have combined two other blogs into this one:</p> 1276 1277 1278 1279<ul class="wp-block-list"> 1280<li>blog.oomap.co.uk – My personal blog, with notes about London, orienteering and cycling. This was my original blog “YepSport” (also known as “Yablog”) and goes right back to 2003.</li> 1281 1282 1283 1284<li>bikesharp.com – Writing about shared micromobility in the UK. This blog has had less writing than I had planned, as shortly after I started, I was contracted to write similar articles for Zag Daily, for the last couple of years (I have now stepped down). </li> 1285</ul> 1286 1287 1288 1289<p class="wp-block-paragraph">I still write another blog – Mapping London – which will stay separate for now. </p> 1290 1291 1292 1293<h2 class="wp-block-heading">OpenOrienteeringMap Leaves Home</h2> 1294 1295 1296 1297<p class="wp-block-paragraph">I have also switched OpenOrienteeringMap from my own server/website to David Dixon’s excellent “version 4” rewrite. </p> 1298 1299 1300 1301<p class="wp-block-paragraph">OOM has been going since 2009, with saveable maps and a UI redesign in 2013 (version 2), and the ability to generate MapRun-compatible maps (JPGs, JGWs and KMZs) in 2020, capitalising on a boom in popularity for self-run orienteering races during the early months of the COVID crisis and resulting lockdowns (version 3). </p> 1302 1303 1304 1305<p class="wp-block-paragraph">However my version had a number of limitations – it used its own copy of OpenStreetMap rather than APIs to the master copy, resulting in delays to people’s edits appearing on the map. It also had very limited contour coverage (10m contours, and GB only). Finally, the actual mapping was inflexible, e.g. you get fences whether you wanted them or not. There was no per-feature toggle. </p> 1306 1307 1308 1309<p class="wp-block-paragraph">All of these problems were fixed by David’s rewrite. The only step back is you don’t see the actual orienteering style on the screen, until you generate the PDF. But David has added a Preview button, so the softw
1309are can go off and generate it on the screen after all – you just need to wait a few seconds. </p> 1310 1311 1312 1313<h2 class="wp-block-heading">BikeShareMap and the Meddin Bike-Sharing World Map</h2> 1314 1315 1316 1317<p class="wp-block-paragraph">Finally, I currently run/contribute towards two websites mapping bikeshare systems around the world. BikeShareMap shows individual docking station statuses, for the ~600 systems for which there is such data. The Meddin Bike-Sharing World Map maps all the bikeshare systems in the world – but just as a single pin, per city. </p> 1318 1319 1320 1321<p class="wp-block-paragraph">I have been gradually consolidating the two projects – the first stage has been to use common IDs and split outs for each city, this is now well underway. The second step is to harmonise data input across the two websites, rather than double-keying, as at present. The final stage (which is some way off) will be to integrate the BSM function into the Meddin project. </p> 1322<div id="wp_fb_like_button" style="margin:5px 0 5px 5px;float:right;height:26px;">
1322<script src="https://connect.facebook.net/en_US/all.js#xfbml=1"></script>
1322<fb:like href="https://oobrien.com/2023/03/consolidation/" send="true" layout="button_count" width="500" show_faces="false" font="arial" action="like" colorscheme="light"></fb:like></div> 1323 </div><!-- .entry-content --> 1324 1325 </div><!-- .post-inner --> 1326 1327 <div class="section-inner"> 1328 1329 </div><!-- .section-inner --> 1330 1331 1332</article><!-- .post --> 1333<hr class="post-separator styled-separator is-style-wide section-inner" aria-hidden="true" /> 1334<article class="post-668 post type-post status-publish format-standard hentry category-data" id="post-668"> 1335 1336 1337<header class="entry-header has-text-align-center"> 1338 1339 <div class="entry-header-inner section-inner medium"> 1340 1341 1342 <div class="entry-categories"> 1343 <span class="screen-reader-text"> 1344 Categories </span> 1345 <div class="entry-categories-inner"> 1346 <a href="https://oobrien.com/category/data/" rel="category tag">Data</a> </div><!-- .entry-categories-inner --> 1347 </div><!-- .entry-categories --> 1348 1349 <h2 class="entry-title heading-size-1"><a href="https://oobrien.com/2022/12/big-feed-tidyup/">Big Feed Tidyup</a></h2> 1350 <div class="post-meta-wrapper post-meta-single post-meta-single-top"> 1351 1352 <ul class="post-meta"> 1353 1354 <li class="post-author meta-wrapper"> 1355 <span class="meta-icon"> 1356 <span class="screen-reader-text"> 1357 Post author </span> 1358 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="20" viewbox="0 0 18 20"><path fill="" d="M18,19 C18,19.5522847 17.5522847,20 17,20 C16.4477153,20 16,19.5522847 16,19 L16,17 C16,15.3431458 14.6568542,14 13,14 L5,14 C3.34314575,14 2,15.3431458 2,17 L2,19 C2,19.5522847 1.55228475,20 1,20 C0.44771525,20 0,19.5522847 0,19 L0,17 C0,14.2385763 2.23857625,12 5,12 L13,12 C15.7614237,12 18,14.2385763 18,17 L18,19 Z M9,10 C6.23857625,10 4,7.76142375 4,5 C4,2.23857625 6.23857625,0 9,0 C11.7614237,0 14,2.23857625 14,5 C14,7.76142375 11.7614237,10 9,10 Z M9,8 C10.6568542,8 12,6.65685425 12,5 C12,3.34314575 10.6568542,2 9,2 C7.34314575,2 6,3.34314575 6,5 C6,6.65685425 7.34314575,8 9,8 Z" /></svg> </span> 1359 <span class="meta-text"> 1360 By <a href="https://oobrien.com/author/admin/">Oliver O'Brien</a> </span> 1361 </li> 1362 <li class="post-date meta-wrapper"> 1363 <span class="meta-icon"> 1364 <span class="screen-reader-text"> 1365 Post date </span> 1366 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewbox="0 0 18 19"><path fill="" d="M4.60069444,4.09375 L3.25,4.09375 C2.47334957,4.09375 1.84375,4.72334957 1.84375,5.5 L1.84375,7.26736111 L16.15625,7.26736111 L16.15625,5.5 C16.15625,4.72334957 15.5266504,4.09375 14.75,4.09375 L13.3993056,4.09375 L13.3993056,4.55555556 C13.3993056,5.02154581 13.0215458,5.39930556 12.5555556,5.39930556 C12.0895653,5.39930556 11.7118056,5.02154581 11.7118056,4.55555556 L11.7118056,4.09375 L6.28819444,4.09375 L6.28819444,4.55555556 C6.28819444,5.02154581 5.9104347,5.39930556 5.44444444,5.39930556 C4.97845419,5.39930556 4.60069444,5.02154581 4.60069444,4.55555556 L4.60069444,4.09375 Z M6.28819444,2.40625 L11.7118056,2.40625 L11.7118056,1 C11.7118056,0.534009742 12.0895653,0.15625 12.5555556,0.15625 C13.0215458,0.15625 13.3993056,0.534009742 13.3993056,1 L13.3993056,2.40625 L14.75,2.40625 C16.4586309,2.40625 17.84375,3.79136906 17.84375,5.5 L17.84375,15.875 C17.84375,17.5836309 16.4586309,18.96875 14.75,18.96875 L3.25,18.96875 C1.54136906,18.96875 0.15625,17.5836309 0.15625,15.875 L0.15625,5.5 C0.
136615625,3.79136906 1.54136906,2.40625 3.25,2.40625 L4.60069444,2.40625 L4.60069444,1 C4.60069444,0.534009742 4.97845419,0.15625 5.44444444,0.15625 C5.9104347,0.15625 6.28819444,0.534009742 6.28819444,1 L6.28819444,2.40625 Z M1.84375,8.95486111 L1.84375,15.875 C1.84375,16.6516504 2.47334957,17.28125 3.25,17.28125 L14.75,17.28125 C15.5266504,17.28125 16.15625,16.6516504 16.15625,15.875 L16.15625,8.95486111 L1.84375,8.95486111 Z" /></svg> </span> 1367 <span class="meta-text"> 1368 <a href="https://oobrien.com/2022/12/big-feed-tidyup/">26 December 2022</a> 1369 </span> 1370 </li> 1371 <li class="post-comment-link meta-wrapper"> 1372 <span class="meta-icon"> 1373 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="19" height="19" viewbox="0 0 19 19"><path d="M9.43016863,13.2235931 C9.58624731,13.094699 9.7823475,13.0241935 9.98476849,13.0241935 L15.0564516,13.0241935 C15.8581553,13.0241935 16.5080645,12.3742843 16.5080645,11.5725806 L16.5080645,3.44354839 C16.5080645,2.64184472 15.8581553,1.99193548 15.0564516,1.99193548 L3.44354839,1.99193548 C2.64184472,1.99193548 1.99193548,2.64184472 1.99193548,3.44354839 L1.99193548,11.5725806 C1.99193548,12.3742843 2.64184472,13.0241935 3.44354839,13.0241935 L5.76612903,13.0241935 C6.24715123,13.0241935 6.63709677,13.4141391 6.63709677,13.8951613 L6.63709677,15.5301903 L9.43016863,13.2235931 Z M3.44354839,14.766129 C1.67980032,14.766129 0.25,13.3363287 0.25,11.5725806 L0.25,3.44354839 C0.25,1.67980032 1.67980032,0.25 3.44354839,0.25 L15.0564516,0.25 C16.8201997,0.25 18.25,1.67980032 18.25,3.44354839 L18.25,11.5725806 C18.25,13.3363287 16.8201997,14.766129 15.0564516,14.766129 L10.2979143,14.766129 L6.32072889,18.0506004 C5.75274472,18.5196577 4.89516129,18.1156602 4.89516129,17.3790323 L4.89516129,14.766129 L3.44354839,14.766129 Z" /></svg> </span> 1374 <span class="meta-text"> 1375 <a href="https://oobrien.com/2022/12/big-feed-tidyup/#respond">No Comments<span class="screen-reader-text"> on Big Feed Tidyup</span></a> </span> 1376 </li> 1377 1378 </ul><!-- .post-meta --> 1379 1380 </div><!-- .post-meta-wrapper --> 1381 1382 1383 </div><!-- .entry-header-inner --> 1384 1385</header><!-- .entry-header --> 1386 1387 <div class="post-inner thin "> 1388 1389 <div class="entry-content"> 1390 1391 1392<p class="wp-block-paragraph">At the end of each year (normally between Christmas and New Year), there’s a lot to tidyup across <a href="http://bikesharemap.com/">Bike Share Map</a> (BSM), the Meddin Bike-Sharing World Map (BSWM) and the <a href="https://bikesharp.com/dashboard/">UK Shared Micromobility Dashboard</a>. This year, I’m aiming to document all the changes needed, roughly around the time that I make the changes. </p> 1393 1394 1395 1396<p class="wp-block-paragraph">Monday:</p> 1397 1398 1399 1400<ul class="wp-block-list"> 1401<li>Superpedestrian (aka LINK) have unexpectedly changed their URL prefix for their GBFS feeds from https://wrangler-mds-production.herokuapp.com/gbfs/{City}/{file}.json to https://mds.linkyour.city/gbfs/[2.2/]{a2}_{city}]/{file}.json. Superpedestrian run the <a href="http://bikesharemap.com/nottinghamwind/">Nottingham escootershare</a>, the fifth largest city for the mode in the UK, so it’s good to have the <a href="https://mds.linkyour.city/gbfs/gb_nottingham/gbfs.json">live data</a> back for that. They also run various other escootershares around the world. </li> 1402 1403 1404 1405<li>A number of the UK shared e-scooter trials ended at the end of November: Slough (Neuron), Canterbury (Bird), West Bromwich (Voi) and Sunderland (Neuron) – the last due to be replaced by a new Zwings fleet but this will not now launch until the new year – a significant service gap. The Neuron systems had open GBFS feeds (as does <a href="https://bikesharemap.com/newcastleneuron/">Newcastle</a>, their last remaining UK one, although at the time of writing it is returning a 503 server error), so could be tracked live. Canterbury and West Bromwich unfortunately aren’t. I’ve stopped consuming the GBFS feed for Slough and Sunderland. </li> 1406 1407 1408 1409<li>In addition, there have been very few (if any) escooters visible on many of the Ginger systems, on their app – Milton Keynes (where they compete with Lime and TIER), Hartlepool, Scunthorpe, Whitehaven and even Middlesbrough (the first trial to launch). Only <a href="https://bikesharemap.com/chester/">Chester</a> and Great Yarmouth are still going strong. As is often the case with Ginger in particular, there is no news about this. Maybe they are just taking a Christmas/New Year break? The parking locations and zone boundaries still show in their app – but they do for Stafford too, where Ginger pulled out in late 2021. There are GBFS feeds available for <a href="https://eu-feeds.joyridecity.bike/api/v1/ginger/chester/gbfs/gbfs.json">
1409some</a> of the Ginger systems, through the Joyride white-label platform they use.</li> 1410 1411 1412 1413<li>Normally I stop consuming individual GBFS (and other API) feeds during a system’s winter closure period, however the variation with when systems reopen in the new year mean I often miss a few days (or weeks!) when they do restart, so this year I will keep consuming the empty feeds. I am gradually building a guide to indicative months that systems close and reopen, on BSWM, and will correlate this with the data seen in BSM (where available) and publish this additional static data, some time next year. </li> 1414 1415 1416 1417<li>Lincoln’s tiny Hire Bike website’s certificate has expired, apparently without the operator noticing, so I needed to skip verification of it when getting the website data. To be fair, it did expire on Christmas Day…</li> 1418 1419 1420 1421<li>Aberdeen’s Bike Issue Bikes ebikeshare finally opened in early November – perhaps with some of their bikes from their recently closed Bristol operation. I have updated the BSWM entry.</li> 1422 1423 1424 1425<li>Down the coast, the Dundee ebikeshare has gone into a longer winter hibernation this year – more of a temporary closure during a quite time of the year to improve the fleet and operations, rather than snow/ice led, although Scotland is certainly getting some weather at the moment. </li> 1426</ul> 1427<div id="wp_fb_like_button" style="margin:5px 0 5px 5px;float:right;height:26px;">
1427<script src="https://connect.facebook.net/en_US/all.js#xfbml=1"></script>
1427<fb:like href="https://oobrien.com/2022/12/big-feed-tidyup/" send="true" layout="button_count" width="500" show_faces="false" font="arial" action="like" colorscheme="light"></fb:like></div> 1428 </div><!-- .entry-content --> 1429 1430 </div><!-- .post-inner --> 1431 1432 <div class="section-inner"> 1433 1434 </div><!-- .section-inner --> 1435 1436 1437</article><!-- .post --> 1438<hr class="post-separator styled-separator is-style-wide section-inner" aria-hidden="true" /> 1439<article class="post-7559 post type-post status-publish format-standard hentry category-bike-share category-london category-openlayers category-openstreetmap category-technical" id="post-7559"> 1440 1441 1442<header class="entry-header has-text-align-center"> 1443 1444 <div class="entry-header-inner section-inner medium"> 1445 1446 1447 <div class="entry-categories"> 1448 <span class="screen-reader-text"> 1449 Categories </span> 1450 <div class="entry-categories-inner"> 1451 <a href="https://oobrien.com/category/bike-share/" rel="category tag">Bike Share</a> <a href="https://oobrien.com/category/london/" rel="category tag">London</a> <a href="https://oobrien.com/category/openlayers/" rel="category tag">OpenLayers</a> <a href="https://oobrien.com/category/openstreetmap/" rel="category tag">OpenStreetMap</a> <a href="https://oobrien.com/category/technical/" rel="category tag">Technical</a> </div><!-- .entry-categories-inner --> 1452 </div><!-- .entry-categories --> 1453 1454 <h2 class="entry-title heading-size-1"><a href="https://oobrien.com/2022/10/all-the-docks-technical-notes-on-the-routes-and-map/">All the Docks: Technical Notes on the Routes and Map</a></h2> 1455 <div class="post-meta-wrapper post-meta-single post-meta-single-top"> 1456 1457 <ul class="post-meta"> 1458 1459 <li class="post-author meta-wrapper"> 1460 <span class="meta-icon"> 1461 <span class="screen-reader-text"> 1462 Post author </span> 1463 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="20" viewbox="0 0 18 20"><path fill="" d="M18,19 C18,19.5522847 17.5522847,20 17,20 C16.4477153,20 16,19.5522847 16,19 L16,17 C16,15.3431458 14.6568542,14 13,14 L5,14 C3.34314575,14 2,15.3431458 2,17 L2,19 C2,19.5522847 1.55228475,20 1,20 C0.44771525,20 0,19.5522847 0,19 L0,17 C0,14.2385763 2.23857625,12 5,12 L13,12 C15.7614237,12 18,14.2385763 18,17 L18,19 Z M9,10 C6.23857625,10 4,7.76142375 4,5 C4,2.23857625 6.23857625,0 9,0 C11.7614237,0 14,2.23857625 14,5 C14,7.76142375 11.7614237,10 9,10 Z M9,8 C10.6568542,8 12,6.65685425 12,5 C12,3.34314575 10.6568542,2 9,2 C7.34314575,2 6,3.34314575 6,5 C6,6.65685425 7.34314575,8 9,8 Z" /></svg> </span> 1464 <span class="meta-text"> 1465 By <a href="https://oobrien.com/author/admin/">Oliver O'Brien</a> </span> 1466 </li> 1467 <li class="post-date meta-wrapper"> 1468 <span class="meta-icon"> 1469 <span class="screen-reader-text"> 1470 Post date </span> 1471 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewbox="0 0 18 19"><path fill="" d="M4.60069444,4.09375 L3.25,4.09375 C2.47334957,4.09375 1.84375,4.72334957 1.84375,5.5 L1.84375,7.26736111 L16.15625,7.26736111 L16.15625,5.5 C16.15625,4.72334957 15.5266504,4.09375 14.75,4.09375 L13.3993056,4.09375 L13.3993056,4.55555556 C13.3993056,5.02154581 13.0215458,5.39930556 12.5555556,5.39930556 C12.0895653,5.39930556 11.7118056,5.02154581 11.7118056,4.55555556 L11.7118056,4.09375 L6.28819444,4.09375 L6.28819444,4.55555556 C6.28819444,5.02154581 5.9104347,5.39930556 5.44444444,5.39930556 C4.97845419,5.39930556 4.60069444,5.02154581 4.60069444,4.55555556 L4.60069444,4.09375 Z M6.28819444,2.40625 L11.7118056,2.40625 L11.7118056,1 C11.7118056,0.534009742 12.0895653,0.15625 12.5555556,0.15625 C13.0215458,0.15625 13.3993056,0.534009742 13.3993056,1 L13.3993056,2.40625 L14.75,2.40625 C16.4586309,2.40625 17.84375,3.79136906 17.84375,5.5 L17.84375,15.875 C17.84375,17.5836309 16.4586309,18.96875 14.75,18.96875 L3.25,18.96875 C1.54136906,18.96875 0.15625,17.5836309 0.15625,15.875 L0.15625,5.5 C0.
147115625,3.79136906 1.54136906,2.40625 3.25,2.40625 L4.60069444,2.40625 L4.60069444,1 C4.60069444,0.534009742 4.97845419,0.15625 5.44444444,0.15625 C5.9104347,0.15625 6.28819444,0.534009742 6.28819444,1 L6.28819444,2.40625 Z M1.84375,8.95486111 L1.84375,15.875 C1.84375,16.6516504 2.47334957,17.28125 3.25,17.28125 L14.75,17.28125 C15.5266504,17.28125 16.15625,16.6516504 16.15625,15.875 L16.15625,8.95486111 L1.84375,8.95486111 Z" /></svg> </span> 1472 <span class="meta-text"> 1473 <a href="https://oobrien.com/2022/10/all-the-docks-technical-notes-on-the-routes-and-map/">17 October 2022</a> 1474 </span> 1475 </li> 1476 <li class="post-comment-link meta-wrapper"> 1477 <span class="meta-icon"> 1478 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="19" height="19" viewbox="0 0 19 19"><path d="M9.43016863,13.2235931 C9.58624731,13.094699 9.7823475,13.0241935 9.98476849,13.0241935 L15.0564516,13.0241935 C15.8581553,13.0241935 16.5080645,12.3742843 16.5080645,11.5725806 L16.5080645,3.44354839 C16.5080645,2.64184472 15.8581553,1.99193548 15.0564516,1.99193548 L3.44354839,1.99193548 C2.64184472,1.99193548 1.99193548,2.64184472 1.99193548,3.44354839 L1.99193548,11.5725806 C1.99193548,12.3742843 2.64184472,13.0241935 3.44354839,13.0241935 L5.76612903,13.0241935 C6.24715123,13.0241935 6.63709677,13.4141391 6.63709677,13.8951613 L6.63709677,15.5301903 L9.43016863,13.2235931 Z M3.44354839,14.766129 C1.67980032,14.766129 0.25,13.3363287 0.25,11.5725806 L0.25,3.44354839 C0.25,1.67980032 1.67980032,0.25 3.44354839,0.25 L15.0564516,0.25 C16.8201997,0.25 18.25,1.67980032 18.25,3.44354839 L18.25,11.5725806 C18.25,13.3363287 16.8201997,14.766129 15.0564516,14.766129 L10.2979143,14.766129 L6.32072889,18.0506004 C5.75274472,18.5196577 4.89516129,18.1156602 4.89516129,17.3790323 L4.89516129,14.766129 L3.44354839,14.766129 Z" /></svg> </span> 1479 <span class="meta-text"> 1480 <a href="https://oobrien.com/2022/10/all-the-docks-technical-notes-on-the-routes-and-map/#comments">3 Comments<span class="screen-reader-text"> on All the Docks: Technical Notes on the Routes and Map</span></a> </span> 1481 </li> 1482 1483 </ul><!-- .post-meta --> 1484 1485 </div><!-- .post-meta-wrapper --> 1486 1487 1488 </div><!-- .entry-header-inner --> 1489 1490</header><!-- .entry-header --> 1491 1492 <div class="post-inner thin "> 1493 1494 <div class="entry-content"> 1495 1496 1497<figure class="wp-block-image size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2022/10/routing.png"><img loading="lazy" decoding="async" width="847" height="662" src="https://oobrien.com/wordpress/wp-content/uploads/2022/10/routing.png" alt="" class="wp-image-7746" srcset="https://oobrien.com/wordpress/wp-content/uploads/2022/10/routing.png 847w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/routing-300x234.png 300w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/routing-768x600.png 768w" sizes="auto, (max-width: 847px) 100vw, 847px" /></a></figure> 1498 1499 1500 1501<h2 class="wp-block-heading">Routes</h2> 1502 1503 1504 1505<p class="wp-block-paragraph">I created GPX route files for the challenge. These were created manually in QGIS, using the OpenStreetMap standard “Mapnik” render as a background, by drawing lines, with Google Street View imagery used to check restrictions. </p> 1506 1507 1508 1509<p class="wp-block-paragraph">I split each team’s route into 12 stages (so 36 altogether), which were initially each just over 10km and ended at a docking station. Each stage contained between 10 and 40 sequential legs to docking stations. I’m not sure I would trust proper routing engines (based on Google Maps or OpenStreetMap, normally) to have found better routes on each leg between each docking station, than me and Google Street View, largely because many London boroughs have been experimenting a lot recently with Low Traffic Neighbourhoods (LTNs) and modal filters (e.g. two way for bikes/one way for cars). But I did run a TSP solver (RouteXL) on 3 of the stages and in 2 cases it did find a slightly shorter ordering of the legs, within the stage. So I would probably use a TSP solver more for a future iteration of the challenge. </p> 1510 1511 1512 1513<p class="wp-block-paragraph">The three route/team files were saved in British National Grid <a href="https://github.com/oobrien/allthedocks/tree/main/construction">(EPSG27700) GeoJSONs</a> (technically not allowed by the spec) so I could get proper metre distances ($length) auto-updated into a column, for each stage, during planning. The stages had a number column, and were numbered sequentially. Having a number column results in LineStrings in the GeoJSONs and GPX routes/routepoints rather than single MultiLineStrings and GPX tracks/trackpoints. They were then saved as <a href="https://github.com/oobrien/allthedocks/blob/main/allthedocks_E.gpx">WGS84 GPX files</a>. I (mis-)used a very limited set of column names (name, number, src, desc, cmt), due to the restrictions with the GPX specification – I didn’t want to use GPX extensions. </p> 1514 1515 1516 1517<p class="wp-block-paragraph">It was important to have three separate GPX files so that each team would need to load in just a single file to their navigation device and not see docking stations/routes from other teams). But it did make preparations a bit harder for the online map. </p> 1518 1519 1520 1521<p class="wp-block-paragraph">The docking stations were imported in <a href="https://github.com/oobrien/allthedocks/blob/main/allthedocks_list.tsv">via a TSV file</a>, then saved as GPX waypoints (column names again restricted to src, desc, name, and cmt), and the relevant ones were manually appended to the GPX team files. The GeoJSONs were retained as my master editing files, as QGIS cannot easily edit GPX files due to them containing multiple geometry types. </p> 1522 1523 1524 1525<p class="wp-block-paragraph">I would certainly like to try a more automated approach to the routing. It did take a substantial amount of time – probably two evenings for each of the three routes, and a further evening for each route to enumerate the docking stations, fine-tune the routes and reorder any sliced up GeoJSON LineString segments (part-stages) back into the correct sequence. The reordering was needed as QGIS would incorrectly reorder parts of the route that crossed over itself, when it was sliced up. </p> 1526 1527 1528 1529<p class="wp-block-paragraph">But an automated approach would require a method that deals with docking stations that are just 10m down a no-entry street (so you’d just walk it), which is hard. Currently they are represented as a point defined by TfL through their API (and separately in OpenStreetMap) which may be the location of the “totem pole” kiosk but not the docking points themselves. In routing or GIS systems, the docking station needs to be represented as an area (within which you would walk the bikes) plus a (multi-)line (representing the line of dock points – some of these are quite long – some have significant gaps, and sometimes they are split on either side of a road). Potentially, the point representing a docking station really needs to be an area, and that area can extend up to the nearby road junction to deal with the one-way issue. </p> 1530 1531 1532 1533<h3 class="wp-block-heading">Future Improvements</h3> 1534 1535 1536 1537<p class="wp-block-paragraph">In terms of the general design, a few things could be changed for a future challenge (some of these I mentioned in my previous blog post):</p> 1538 1539 1540 1541<ul class="wp-block-list"><li>Ensuring that participants are well away from the finish at around the 60-80% stage, so that they are less likely to bail at that difficult time of the day, because the remainder of the challenge is then a kind of “run in”
1541 to the finish, rather than routing them away at a late stage. </li><li>When participants pass by another docking station twice, they should visit it on the first occasion, not the second time. (An exception is when it is on the wrong side of a dual carriageway, particularly one with a median barrier). Otherwise there is a danger of it being missed on the return. </li><li>Build specific meal stops in.</li><li>Maximum of 200 docking stations/10 hours per team. </li></ul> 1542 1543 1544 1545<h2 class="wp-block-heading">The Web Map</h2> 1546 1547 1548 1549<figure class="wp-block-image size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2022/10/ticking.png"><img loading="lazy" decoding="async" width="837" height="605" src="https://oobrien.com/wordpress/wp-content/uploads/2022/10/ticking.png" alt="" class="wp-image-7750" srcset="https://oobrien.com/wordpress/wp-content/uploads/2022/10/ticking.png 837w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/ticking-300x217.png 300w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/ticking-768x555.png 768w" sizes="auto, (max-width: 837px) 100vw, 837px" /></a></figure> 1550 1551 1552 1553<p class="wp-block-paragraph">By comparison, building the web map was straightforward, probably just one evening’s work to build the map page itself as a basic OpenLayers map reading in GPX files and with simple browser-based geolocation, and one further evening to build a “team” version of the map that allowed ticking off the stations, the action being stored in a database, and a time string echoed back to the web map (and other viewers, on a Javascript timer) as confirmation. The database had two tables, a summary table with a row per docking station, and an action log which recorded the dock’s TfL ID, timestamp, event type and the submitter’s browser user agent string ($_SERVER[‘HTTP_USER_AGENT’]) in lieu of logins/IDs. It was fairly easy to assign a manually assign each user agent to team, post-event. </p> 1554 1555 1556 1557<p class="wp-block-paragraph">Each docking station ended up with 4 identifiers which feels a bit too many, but it kind of made sense: </p> 1558 1559 1560 1561<ul class="wp-block-list"><li>an integer TfL ID (e.g. 761)</li><li>the TfL Name that appears on the totem pole (e.g. Gower Place, Bloomsbury)</li><li>a shortcode which was the sequence number and the initials of the first part of the TfL Name (e.g. 37.GP). There were some duplicates across the team. FIN.HS was a special shortcode for the finish for the two teams that didn’t have that as a docking station in their “zone”. One newly added docking station had “A” appended to the sequence number of the previous, rather than having to renumber everything.</li><li>a unique sequence code which was the team, stage and docking station order within that stage, (e.g. W02.15). This was used as a logical ordering of the file and to help with assigning each docking station to its stage on the online map.</li></ul> 1562 1563 1564 1565<p class="wp-block-paragraph">I also listed an “actual sequence” post-event ordering, e.g. W038, in the <a href="https://github.com/oobrien/allthedocks/blob/main/results.csv">final results file</a>. </p> 1566 1567 1568 1569<p class="wp-block-paragraph">I could have used the sequence code on the map but felt the shortcode was the most useful concise way of identifying each station to the team as they approached it, and hopefully the simple number would result in any missing out being spotted quickly.</p> 1570 1571 1572 1573<figure class="wp-block-image size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2022/10/diff.png"><img loading="lazy" decoding="async" width="701" height="544" src="https://oobrien.com/wordpress/wp-content/uploads/2022/10/diff.png" alt="" class="wp-image-7748" srcset="https://oobrien.com/wordpress/wp-content/uploads/2022/10/diff.png 701w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/diff-300x233.png 300w" sizes="auto, (max-width: 701px) 100v
1573w, 701px" /></a></figure> 1574 1575 1576 1577<p class="wp-block-paragraph">I built a special “diff” webpage that compares our docks file with the live data (via BikeShareMap) every 2 minutes and this alerted us of any new, closed or zero-capacity docking stations, plus a list of full ones. There was one that opened a few days before, but none on the day, thankfully!</p> 1578 1579 1580 1581<h3 class="wp-block-heading">Future Improvements</h3> 1582 1583 1584 1585<p class="wp-block-paragraph">I do think that using fewer intermediate routing points on each leg would be better and would allow for turn-by-turn satnav directions. Having said that, having street names called out is of limited use as they are often hard to spot on the ground, so the breadcrumb trail approach we used worked well.</p> 1586 1587 1588 1589<p class="wp-block-paragraph">We had paper maps (just screenshots of the website) as a backup. I never used them, and I think Team South used the website. Team West used them exclusively, with a separate person using the website to tick off.</p> 1590 1591 1592 1593<p class="wp-block-paragraph">I would have liked to have had a single source of docking station locations. In the end, they were:</p> 1594 1595 1596 1597<ol class="wp-block-list"><li> on TfL’s API, which is fed through to a CSV on BikeShareMap every two minutes, </li><li>on a CSV file on Github, </li><li>as GPX waypoints appended to each team’s GPX routes file, and </li><li>in my database for recording times on the ATDMap website. </li></ol> 1598 1599 1600 1601<p class="wp-block-paragraph">1 and 2 were automatically compared (see above), 2 could be added to QGIS to compare and generate GPX for 3, and also imported into the database table (4) but this would all be manual steps.</p> 1602 1603 1604 1605<h2 class="wp-block-heading">Links</h2> 1606 1607 1608 1609<p class="wp-block-paragraph">Website map with the timings: <a href="https://misc.oomap.co.uk/atdmap/">https://misc.oomap.co.uk/atdmap/ </a></p> 1610 1611 1612 1613<p class="wp-block-paragraph">Route GPX files and timings CSV: <a href="https://github.com/oobrien/allthedocks">https://github.com/oobrien/allthedocks</a></p> 1614 1615 1616 1617<p class="wp-block-paragraph">Strava link (Team East): <a href="https://www.strava.com/activities/7908548122">https://www.strava.com/activities/7908548122</a></p> 1618 1619 1620 1621<p class="wp-block-paragraph"></p> 1622<div id="wp_fb_like_button" style="margin:5px 0 5px 5px;float:right;height:26px;">
1622<script src="https://connect.facebook.net/en_US/all.js#xfbml=1"></script>
1622<fb:like href="https://oobrien.com/2022/10/all-the-docks-technical-notes-on-the-routes-and-map/" send="true" layout="button_count" width="500" show_faces="false" font="arial" action="like" colorscheme="light"></fb:like></div> 1623 </div><!-- .entry-content --> 1624 1625 </div><!-- .post-inner --> 1626 1627 <div class="section-inner"> 1628 1629 </div><!-- .section-inner --> 1630 1631 1632</article><!-- .post --> 1633<hr class="post-separator styled-separator is-style-wide section-inner" aria-hidden="true" /> 1634<article class="post-7492 post type-post status-publish format-standard hentry category-bike-share category-london" id="post-7492"> 1635 1636 1637<header class="entry-header has-text-align-center"> 1638 1639 <div class="entry-header-inner section-inner medium"> 1640 1641 1642 <div class="entry-categories"> 1643 <span class="screen-reader-text"> 1644 Categories </span> 1645 <div class="entry-categories-inner"> 1646 <a href="https://oobrien.com/category/bike-share/" rel="category tag">Bike Share</a> <a href="https://oobrien.com/category/london/" rel="category tag">London</a> </div><!-- .entry-categories-inner --> 1647 </div><!-- .entry-categories --> 1648 1649 <h2 class="entry-title heading-size-1"><a href="https://oobrien.com/2022/10/all-the-docks-how-it-went/">All the Docks: How it Went</a></h2> 1650 <div class="post-meta-wrapper post-meta-single post-meta-single-top"> 1651 1652 <ul class="post-meta"> 1653 1654 <li class="post-author meta-wrapper"> 1655 <span class="meta-icon"> 1656 <span class="screen-reader-text"> 1657 Post author </span> 1658 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="20" viewbox="0 0 18 20"><path fill="" d="M18,19 C18,19.5522847 17.5522847,20 17,20 C16.4477153,20 16,19.5522847 16,19 L16,17 C16,15.3431458 14.6568542,14 13,14 L5,14 C3.34314575,14 2,15.3431458 2,17 L2,19 C2,19.5522847 1.55228475,20 1,20 C0.44771525,20 0,19.5522847 0,19 L0,17 C0,14.2385763 2.23857625,12 5,12 L13,12 C15.7614237,12 18,14.2385763 18,17 L18,19 Z M9,10 C6.23857625,10 4,7.76142375 4,5 C4,2.23857625 6.23857625,0 9,0 C11.7614237,0 14,2.23857625 14,5 C14,7.76142375 11.7614237,10 9,10 Z M9,8 C10.6568542,8 12,6.65685425 12,5 C12,3.34314575 10.6568542,2 9,2 C7.34314575,2 6,3.34314575 6,5 C6,6.65685425 7.34314575,8 9,8 Z" /></svg> </span> 1659 <span class="meta-text"> 1660 By <a href="https://oobrien.com/author/admin/">Oliver O'Brien</a> </span> 1661 </li> 1662 <li class="post-date meta-wrapper"> 1663 <span class="meta-icon"> 1664 <span class="screen-reader-text"> 1665 Post date </span> 1666 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewbox="0 0 18 19"><path fill="" d="M4.60069444,4.09375 L3.25,4.09375 C2.47334957,4.09375 1.84375,4.72334957 1.84375,5.5 L1.84375,7.26736111 L16.15625,7.26736111 L16.15625,5.5 C16.15625,4.72334957 15.5266504,4.09375 14.75,4.09375 L13.3993056,4.09375 L13.3993056,4.55555556 C13.3993056,5.02154581 13.0215458,5.39930556 12.5555556,5.39930556 C12.0895653,5.39930556 11.7118056,5.02154581 11.7118056,4.55555556 L11.7118056,4.09375 L6.28819444,4.09375 L6.28819444,4.55555556 C6.28819444,5.02154581 5.9104347,5.39930556 5.44444444,5.39930556 C4.97845419,5.39930556 4.60069444,5.02154581 4.60069444,4.55555556 L4.60069444,4.09375 Z M6.28819444,2.40625 L11.7118056,2.40625 L11.7118056,1 C11.7118056,0.534009742 12.0895653,0.15625 12.5555556,0.15625 C13.0215458,0.15625 13.3993056,0.534009742 13.3993056,1 L13.3993056,2.40625 L14.75,2.40625 C16.4586309,2.40625 17.84375,3.79136906 17.84375,5.5 L17.84375,15.875 C17.84375,17.5836309 16.4586309,18.96875 14.75,18.96875 L3.25,18.96875 C1.54136906,18.96875 0.15625,17.5836309 0.15625,15.875 L0.15625,5.5 C0.
166615625,3.79136906 1.54136906,2.40625 3.25,2.40625 L4.60069444,2.40625 L4.60069444,1 C4.60069444,0.534009742 4.97845419,0.15625 5.44444444,0.15625 C5.9104347,0.15625 6.28819444,0.534009742 6.28819444,1 L6.28819444,2.40625 Z M1.84375,8.95486111 L1.84375,15.875 C1.84375,16.6516504 2.47334957,17.28125 3.25,17.28125 L14.75,17.28125 C15.5266504,17.28125 16.15625,16.6516504 16.15625,15.875 L16.15625,8.95486111 L1.84375,8.95486111 Z" /></svg> </span> 1667 <span class="meta-text"> 1668 <a href="https://oobrien.com/2022/10/all-the-docks-how-it-went/">6 October 2022</a> 1669 </span> 1670 </li> 1671 <li class="post-comment-link meta-wrapper"> 1672 <span class="meta-icon"> 1673 <svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="19" height="19" viewbox="0 0 19 19"><path d="M9.43016863,13.2235931 C9.58624731,13.094699 9.7823475,13.0241935 9.98476849,13.0241935 L15.0564516,13.0241935 C15.8581553,13.0241935 16.5080645,12.3742843 16.5080645,11.5725806 L16.5080645,3.44354839 C16.5080645,2.64184472 15.8581553,1.99193548 15.0564516,1.99193548 L3.44354839,1.99193548 C2.64184472,1.99193548 1.99193548,2.64184472 1.99193548,3.44354839 L1.99193548,11.5725806 C1.99193548,12.3742843 2.64184472,13.0241935 3.44354839,13.0241935 L5.76612903,13.0241935 C6.24715123,13.0241935 6.63709677,13.4141391 6.63709677,13.8951613 L6.63709677,15.5301903 L9.43016863,13.2235931 Z M3.44354839,14.766129 C1.67980032,14.766129 0.25,13.3363287 0.25,11.5725806 L0.25,3.44354839 C0.25,1.67980032 1.67980032,0.25 3.44354839,0.25 L15.0564516,0.25 C16.8201997,0.25 18.25,1.67980032 18.25,3.44354839 L18.25,11.5725806 C18.25,13.3363287 16.8201997,14.766129 15.0564516,14.766129 L10.2979143,14.766129 L6.32072889,18.0506004 C5.75274472,18.5196577 4.89516129,18.1156602 4.89516129,17.3790323 L4.89516129,14.766129 L3.44354839,14.766129 Z" /></svg> </span> 1674 <span class="meta-text"> 1675 <a href="https://oobrien.com/2022/10/all-the-docks-how-it-went/#comments">6 Comments<span class="screen-reader-text"> on All the Docks: How it Went</span></a> </span> 1676 </li> 1677 1678 </ul><!-- .post-meta --> 1679 1680 </div><!-- .post-meta-wrapper --> 1681 1682 1683 </div><!-- .entry-header-inner --> 1684 1685</header><!-- .entry-header --> 1686 1687 <div class="post-inner thin "> 1688 1689 <div class="entry-content"> 1690 1691 1692<figure class="wp-block-image size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2022/10/regentscanal2_crop.jpg"><img loading="lazy" decoding="async" width="1124" height="1141" src="https://oobrien.com/wordpress/wp-content/uploads/2022/10/regentscanal2_crop.jpg" alt="" class="wp-image-7556" srcset="https://oobrien.com/wordpress/wp-content/uploads/2022/10/regentscanal2_crop.jpg 1124w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/regentscanal2_crop-296x300.jpg 296w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/regentscanal2_crop-1009x1024.jpg 1009w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/regentscanal2_crop-768x780.jpg 768w" sizes="auto, (max-width: 1124px) 100vw, 1124px" /></a></figure> 1693 1694 1695 1696<p class="wp-block-paragraph">On Monday I spent a lot of time (over 13 hours) cycling between 268 docking stations in London. It was for the <a href="https://oobrien.com/2022/09/all-the-docks/">All the Docks challenge</a>, as part of Team East, with Joe (Be.EV CCO, and ex-ofo) and Jeyda (fettle CEO). There was also an all-stars Team West and Team South (including Voi, TIER, Zwings, and CoMoUK people – see <a href="https://stephenhbee.medium.com/all-the-docks-db32a7032144">this blog post</a> for the announcement), and, across the three teams, we aimed to visit all the docking stations in London in a day. </p> 1697 1698 1699 1700<figure class="wp-block-image size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2022/10/donedocks.jpg"><img loading="lazy" decoding="async" width="1004" height="689" src="https://oobrien.com/wordpress/wp-content/uploads/2022/10/donedocks.jpg" alt="" class="wp-image-7650" srcset="https://oobrien.com/wordpress/wp-content/uploads/2022/10/donedocks.jpg 1004w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/donedocks-300x206.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/donedocks-768x527.jpg 768w" sizes="auto, (max-width: 1004px) 100vw, 1004px" /></a><figcaption>Black = done. Green = not done. From the <a href="https://misc.oomap.co.uk/atdmap/">web map</a>.</figcaption></figure> 1701 1702 1703 1704<h2 class="wp-block-heading"><strong>Team East: By the numbers</strong></h2> 1705 1706 1707 1708<ul class="wp-block-list"><li><strong>Three</strong> challengers: two on Santander Cycles (one docking at every point) and one on their own bike with navigation mount. </li><li>Started at <strong>08:51</strong>, after getting breakfast nearby.</li><li><strong>Two</strong> stops for food (at 13:30 and 20:15) plus a shorter stop to buy snacks (at 16:30). </li><li><strong>Three</strong> lifts (which weren’t big enough for three bikes!)</li><li>Finished at <strong>22:21</strong> – 13.5 hours later</li><li>GPS says <strong>119km</strong> although it added a lot 0f noise around Canary Wharf and a few other places, so I think the actual distance was more like ~113km.
1708</li><li><strong>268</strong> docks visited (the 266 assigned to Team East, plus the common finish docking station, plus a short bonus leg to the docking station outside the finish pub).</li><li>This works out as visiting a docking station, on average, almost exactly <strong>every 3 minutes</strong>, for 13.5 hours. </li></ul> 1709 1710 1711 1712<figure class="wp-block-image size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2022/10/allthedocks_east.jpg"><img loading="lazy" decoding="async" width="883" height="719" src="https://oobrien.com/wordpress/wp-content/uploads/2022/10/allthedocks_east.jpg" alt="" class="wp-image-7553" srcset="https://oobrien.com/wordpress/wp-content/uploads/2022/10/allthedocks_east.jpg 883w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/allthedocks_east-300x244.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/allthedocks_east-768x625.jpg 768w" sizes="auto, (max-width: 883px) 100vw, 883px" /></a><figcaption>Team East’s <a href="https://www.strava.com/activities/7908548122">actual route</a>, on Strava.</figcaption></figure> 1713 1714 1715 1716<h2 class="wp-block-heading"><strong>What went wrong</strong></h2> 1717 1718 1719 1720<ul class="wp-block-list"><li>It did take a bit <strong>longer</strong> than predicted. The target time had been 12 hours (11.5 hours + 30 minutes in breaks) and our average moving speed of 11.9kph was quite close to the 12.5kph in a prediction algorithm I put together. The two hour difference was due to food stops and comfort breaks (75 minutes in total), along with that 0.6kph speed difference (30 minutes extra) and the three legs we I had to jog (15 minutes). Our dock/undock speed got pretty good after Joe (who did 80% of the docks/undocks) got into a rhythm.</li><li>My personal bike (which I had planned to ride as a support to the team leader on the bikeshare bike, to do the navigation) had a <strong>flat tyre</strong> right at the start, which meant I had to hop on a Santander Cycles bike for the entire route. I had a big freak-out when I discovered this (no bike shops in Westfield Stratford City, challenge starting in half an hour) but it was OK in the end – I bought a £20 monthly membership in the app, on the spot, and the ride was more comfortable than I expected, but it did mean I needed to keep fishing my phone in and out of pockets at every docking station.</li><li>I also twice forgot to dock at least <strong>once an hour</strong>, twice, so got two £1.65 overage charges). </li><li>A result of my phone (<a href="https://misc.oomap.co.uk/atdmap/">with map</a>) not being mounted on my bike, was I was constantly <strong>pocket-tapping</strong> the team version of the map as I kept grabbing my phone. This mean I kept ticking off other teams’ docking stations by mistake, particularly Team West’s list. The team version needed a UX tweak so the checkboxes’ labels were not tickable, or have separate tick-pages for each team. </li><li>The only significant <strong>routing error</strong> was at <a href="https://www.google.co.uk/maps/@51.5056949,-0.0158117,3a,75y,257.46h,102.55t/data=!3m8!1e1!3m6!1sAF1QipNyiTQpa8DllicCM4tvvA5ezJliulZYjuX4EIZ7!2e10!3e11!6shttps:%2F%2Flh5.googleusercontent.com%2Fp%2FAF1QipNyiTQpa8DllicCM4tvvA5ezJliulZYjuX4EIZ7%3Dw203-h100-k-no-pi-1.2228801-ya33.378494-ro-0.88592476-fo100!7i6720!8i3360">Import Dock in Canary Wharf</a> (no regular Google Street View allowed there, so I couldn’t see in advance) where we ended up at road level, but the docking station was below us, at water level. Taking the bikes down an escalator in the new Crossrail/Elizabeth line station, got us to where we wanted to be.</li><li>Proper <strong>food stops</strong> need to be built in to the schedule, rather than hoping we accrue time and then spend it when we need it. We got hungry in places were there weren’t any quick eateries. </li><li>Three legs had to be <strong>jogged</strong> by some rather than cycled by all, due to infrastructure problems, although we still docked or undocked at each. At the first one, both Joe’s keys stopped operating and the dock was full so I couldn’t dock (with my third account) either. So I cycled to the next docking station, docked, ran back and undocked. A later problem dock wouldn’t release any bikes so I handed mine over and jogged to the next station to get another one. Finally, three from the end, the terminal disconnected after docking successfully, so I ran back to the previous one and went from there to the penultimate one.</li><li>One or both of our pair of keys got temporarily <strong>blocked</strong> several times. With one blocked, using the other, single key resulted in a mandatory 30-second delay before you are allowed to start another journey. Each time, a call to Santander Cycles support fixed the blocked key quickly. Santander Cycles does have a responsive and effective telephone support operation.</li><li>One docking station appeared to have been <strong>vandalised</strong>, with the “slot” on most docks crushed so that the bike couldn’t be docked. Eventually we managed to find one where we could squeeze it in.</li><li>Routing people near the finish, then up a hill and away, 10 hours in to the challenge, is <strong>demotivating</strong>, and coupled with the late time, I think this is what made Team West’s decision for them. A long, clear run into the finish line without big loops away, is preferable! In general, my design for West and East was a long wiggly route up and down, towards the finish, from the outermost parts of the network. By contrast, Team South went near the finish quite early on, before a long tour out to Putney, finally coming back along the river, back into town. I think this latter overall shape of the route probably is better for keeping people going to the end.</li><li>A few of awkward <strong>wrong-side-of-road</strong> docking stations on dual carriageways had to be visited, although generally with traffic lights, we got across OK. The worst link was a short section of The Highway followed by a right turn. This is a horrible road, and the others in Team East took the pavement instead (but were further encumbered by barriers left up from the London Marathon the day before). In retrospect, a walk-bikes route back across a new private development’s plaza would have been better. </li><li>A few <strong>roadworks</strong> made getting to some docking stations tricky. In the end, Team East had four blocked links – resurfacing by the Orbit sculpture in the Queen Elizabeth Olympic Park (where we just cycled through the construction site), park re-modelling in Shoreditch Park (which necessitated using park paths to get around it), Angel Street was closed for building construction (so we went through Postman’s Park instead) and finally St Bride’s Street was completely blocked for resurfacing, but the Poppin’s Court tiny alley diversion was a lot of fun. </li><li>The <strong>low point</strong> was at around 7pm, as the sun set, calculations suggested all three teams were well behind a nominal 9pm finish, and it looked like we would have to bail to make it to the pub. There was also some concern about what it would be like doing this kind of frantic point-to-point riding at night in London traffic, with tired legs, although in the end the traffic levels died down quickly after rush-hour. We also hadn’t had dinner and a proposed food stop at Angel was still 90 minutes away. A conference call between teams was held and a final decision at 9pm would be taken.</li><li>We approached the Somers Town Bridge at around its historic 9pm <strong>closing</strong> time (not sure if it actually does still close) so decided to take a long diversion around.</li><li>In the end, just after 9pm, we passed by our team lead’s home (25 from the end) and, with one eye on a very early start the following day, he opted to <strong>stop</strong> there. Team West had already quit and were arriving at the pub. Team South decided to double down and keep going. Their final stage along the spectacular Embankment at night, <a href="https://twitter.com/Gyexley/status/1577048221485965312?ref_src=twsrc%5Etfw">with views across the Thames</a>, may have helped with their decision! We carried on for a final section around King’s Cross and, in the end, quite quickly down to the finish at LSE.</li></ul> 1721 1722 1723<div class="wp-block-image"> 1724<figure class="aligncenter size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2022/10/e12end.jpg"><img loading="lazy" decoding="async" width="934" height="926" src="https://oobrien.com/wordpress/wp-content/uploads/2022/10/e12end.jpg" alt="" class="wp-image-7583" srcset="https://oobrien.com/wordpress/wp-content/uploads/2022/10/e12end.jpg 934w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/e12end-300x297.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/e12end-150x150.jpg 150w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/e12end-768x761.jpg 768w" sizes="auto, (max-width: 934px) 100vw, 934px" /></a></figure> 1725</div> 1726 1727 1728<h2 class="wp-block-heading"><strong>What went well</strong></h2> 1729 1730 1731 1732<ul class="wp-block-list"><li>By and large my <strong>manual routes </strong>worked pretty well. For Team East, there were only a couple of banned turns and one wrong-way street encountered, easily fixable on-the-fly. The teams were pretty happy with my routes, which is good! </li><li>Careful <strong>planning</strong> tried to minimise the number of docking stations on the other side of busy roads, even if this slightly lengthened the route. </li><li>I was pleased I could include some of London’s best cycle <strong>
1732infrastructure</strong> without lengthening the routes. The Olympic Park, Victoria Park, Regent’s Park, Hyde Park, Kensington Gardens, Lower Thames Street and Victoria Embankment (CS3). It was nice, on the day, to unexpectedly discover some of London’s newer protected cycling infrastructure on roads I knew well from pre-protected days. </li><li>After a while, we honed our docking/undocking <strong>technique</strong> and Joe got it down to around 15 seconds. Every 10 seconds saved per dock is 45 minutes saved on the challenge as a whole. </li><li>Considering the amount of docking/undocking operations we did, we had very <strong>few failed</strong> locks/unlocks or disconnected terminals. </li><li>My gadget <strong>batteries</strong> worked out OK. My old Garmin GPS wristwatch lasted 9.5 hours (albeit with no HR or Bluetooth), and then the last bit of route recording was done directly on my phone using Strava in the background. I only used GPS on my phone sparingly, to occasionally locate myself on the web page, but after 11.5 hours my phone’s battery had got down from 95% to 3% so I kept it plugged into a power bank on a cable, for the remainder, and it was fine. Jeyda’s Wahoo’s battery was absolutely fine throughout.</li><li>We did visit <strong>all</strong> 268 docking stations, even if it took us nearly two hours longer than planned. </li><li>We all stayed in <strong>good spirits</strong> as a team, and generally stuck together, although we did split up a bit near the end as different people drove forward to keep the pace going. </li><li>I thought we might need an operations person at a desk, checking for changes, handling social media and directing/motivating teams, but actually it worked fine with <strong>everyone on a bike</strong>. </li><li>We crossed the finish feeling <strong>fine</strong> – it’s the day after that I felt shattered.</li></ul> 1733 1734 1735 1736<figure class="wp-block-image size-large"><a href="https://oobrien.com/wordpress/wp-content/uploads/2022/10/bricklane_crop.jpg"><img loading="lazy" decoding="async" width="1024" height="768" src="https://oobrien.com/wordpress/wp-content/uploads/2022/10/bricklane_crop-1024x768.jpg" alt="" class="wp-image-7564" srcset="https://oobrien.com/wordpress/wp-content/uploads/2022/10/bricklane_crop-1024x768.jpg 1024w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/bricklane_crop-300x225.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/bricklane_crop-768x576.jpg 768w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/bricklane_crop.jpg 1198w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure> 1737 1738 1739 1740<h2 class="wp-block-heading"><strong>Notes for a next time</strong></h2> 1741 1742 1743 1744<ul class="wp-block-list"><li>General consensus in the pub was that having <strong>four teams </strong>(N, E, S, W) doing around 200 docking stations each, would be more fun and would allow more pub time, food time etc. Team West ended their challenge after around 200 docking stations when it was clear they would struggle to get to the pub before closing time if they continued (and as they had to loop away from near finish at that point). Team South made it just after last orders so Team West bought a round for them in advance. But a decent length social after such an exhausting day is important.</li><li>Finishing at the docking station <strong>outside the pub</strong> would have been better (I had decided against it because the distances across the three teams wouldn’t have matched as well).</li><li>Hopping <strong>on and off</strong> the bike for each dock gets tiring. Particularly as so many of the docking stations are on pavements and facing away from the road, resulting in many kerb hops, jolts and awkward manoeuvres. Possibly alternating the docking between two leads would make this better?</li><li>You definitely need one person to have a <strong>bike-mounted </strong>smartphone or navigation device (Jeyda’s Wahoo device worked pretty well) to do efficient navigation on a mounted stand rather than in/out of pocket.</li><li>Having <strong>two keys</strong> (on two accounts) is essential. As well as cutting down the dock/undock time, it can deal with full docking stations. </li><li>
1744Santander Cycles finally launched <strong>electric</strong> bikes into their fleet, a few days after our challenge. These would be good for support riders, if too expensive for the lead rider (£1 surcharge per leg!)</li><li>I/we would definitely invite people to <strong>accompany</strong> us for a stage or a few legs. We did have Ilma from Fettle along for the City of London legs which was motivating (and she filmed <a href="https://www.instagram.com/p/CjTKQCJjue3/?hl=en">a mini-movie/montage of us</a>)</li><li>I’m glad we missed the morning <strong>rush-hour</strong> and the evening rush-hour while we were in the City was pretty intense too.</li><li>Some <strong>routing tweaks </strong>would be good. See a future blog post here for some technical details on how it was routed and how it could be made better. </li><li>Finally, I think the mapping/recording could be <strong>automated</strong> more. I liked my live-updating map, it was the result of a few evening’s simple Javascript coding, but there’s definitely more that I could do – leaderboards, current location pin, ETAs etc. </li></ul> 1745 1746 1747<div class="wp-block-image"> 1748<figure class="aligncenter size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2022/10/theapp.jpg"><img loading="lazy" decoding="async" width="540" height="1200" src="https://oobrien.com/wordpress/wp-content/uploads/2022/10/theapp.jpg" alt="" class="wp-image-7668" srcset="https://oobrien.com/wordpress/wp-content/uploads/2022/10/theapp.jpg 540w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/theapp-135x300.jpg 135w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/theapp-461x1024.jpg 461w" sizes="auto, (max-width: 540px) 100vw, 540px" /></a></figure> 1749</div> 1750 1751 1752<p class="wp-block-paragraph">One note on helmets – normally I would always wear a helmet on my own bike, but not on bikeshare bikes – we shouldn’t be encouraging it for bikeshare bikes as it significantly reduces their utility and appeal for spontaneous journeys. However – I’m glad I did wear one, because we were on the bikes for 12+ hours, occasionally taking some quite aggressive manoeuvres to get across to the other sides of streets. We had no incidents or even any beeps from drivers, but one person in one of the other teams got bumped by a van. You do feel pretty secure on a Santander Cycle even without a helmet, as they are 25kg, feel incredibly sturdy, and you can never go that fast on them. But for this kind of challenge, hazards were definitely higher than normal and so the extra security of a helmet was welcome.</p> 1753 1754 1755 1756<figure class="wp-block-image size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2022/10/poplar.jpg"><img loading="lazy" decoding="async" width="1024" height="827" src="https://oobrien.com/wordpress/wp-content/uploads/2022/10/poplar.jpg" alt="" class="wp-image-7570" srcset="https://oobrien.com/wordpress/wp-content/uploads/2022/10/poplar.jpg 1024w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/poplar-300x242.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/poplar-768x620.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure> 1757 1758 1759 1760<p class="wp-block-paragraph">The Pashley-made bikes (bike numbers starting with 5) make up around 20-30% of the fleet and are definitely better than the older bikes still available, as they are newer. They are slightly lighter, have better lights, a more solid seat adjustment mechanism, and generally just feel nicer. We generally opted for those bikes, and typically stayed on the same bike for hours at a time. </p> 1761 1762 1763 1764<p class="wp-block-paragraph">I’ll have one more blog post about the challenge soon, some technical notes about how I put together the routes and some of the issues I faced doing so.</p> 1765 1766 1767 1768<h2 class="wp-block-heading">Links</h2> 1769 1770 1771 1772<p class="wp-block-paragraph">Website map with the timings: <a href="https://misc.oomap.co.uk/atdmap/">https://misc.oomap.co.uk/atdmap/ </a></p> 1773 1774 1775 1776<p class="wp-block-paragraph">Route GPX files and timings CSV: <a href="https://github.com/oobrien/allthedocks">https://github.com/oobrien/allthedocks</a></p> 1777 1778 1779 1780<p class="wp-block-paragraph"><em>
1780Some photos courtesy of Jeyda and Joe.</em> <em>Background mapping © OpenStreetMap contributors. </em></p> 1781 1782 1783 1784<figure class="wp-block-image size-full"><a href="https://oobrien.com/wordpress/wp-content/uploads/2022/10/e03bow.jpg"><img loading="lazy" decoding="async" width="1190" height="946" src="https://oobrien.com/wordpress/wp-content/uploads/2022/10/e03bow.jpg" alt="" class="wp-image-7587" srcset="https://oobrien.com/wordpress/wp-content/uploads/2022/10/e03bow.jpg 1190w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/e03bow-300x238.jpg 300w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/e03bow-1024x814.jpg 1024w, https://oobrien.com/wordpress/wp-content/uploads/2022/10/e03bow-768x611.jpg 768w" sizes="auto, (max-width: 1190px) 100vw, 1190px" /></a><figcaption>Some tricky legs in bow. East India Dock (38.EID here) is in a particularly tricky location. </figcaption></figure> 1785<div id="wp_fb_like_button" style="margin:5px 0 5px 5px;float:right;height:26px;">
1785<script src="https://connect.facebook.net/en_US/all.js#xfbml=1"></script>
1785<fb:like href="https://oobrien.com/2022/10/all-the-docks-how-it-went/" send="true" layout="button_count" width="500" show_faces="false" font="arial" action="like" colorscheme="light"></fb:like></div> 1786 </div><!-- .entry-content --> 1787 1788 </div><!-- .post-inner --> 1789 1790 <div class="section-inner"> 1791 1792 </div><!-- .section-inner --> 1793 1794 1795</article><!-- .post --> 1796 1797 1798 <div class="pagination-wrapper section-inner"> 1799 1800 <hr class="styled-separator pagination-separator is-style-wide" aria-hidden="true" /> 1801 1802 1803 <nav class="navigation pagination" aria-label="Posts pagination"> 1804 <h2 class="screen-reader-text">Posts pagination</h2> 1805 <div class="nav-links"><span class="prev page-numbers placeholder" aria-hidden="true"><span aria-hidden="true">←</span> <span class="nav-prev-text">Newer <span class="nav-short">Posts</span></span></span><span aria-current="page" class="page-numbers current">1</span> 1806<a class="page-numbers" href="https://oobrien.com/page/2/">2</a> 1807<span class="page-numbers dots">…</span> 1808<a class="page-numbers" href="https://oobrien.com/page/95/">95</a> 1809<a class="next page-numbers" href="https://oobrien.com/page/2/"><span class="nav-next-text">Older <span class="nav-short">Posts</span></span> <span aria-hidden="true">→</span></a></div> 1810 </nav> 1811 </div><!-- .pagination-wrapper --> 1812 1813 1814</main><!-- #site-content --> 1815 1816 1817 <div class="footer-nav-widgets-wrapper header-footer-group"> 1818 1819 <div class="footer-inner section-inner"> 1820 1821 1822 1823 <aside class="footer-widgets-outer-wrapper"> 1824 1825 <div class="footer-widgets-wrapper"> 1826 1827 1828 <div class="footer-widgets column-one grid-item"> 1829 <div class="widget widget_recent_comments"><div class="widget-content"><h2 class="widget-title subheading heading-size-3">Recent Comments</h2><nav aria-label="Recent Comments"><ul id="recentcomments"><li class="recentcomments"><span class="comment-author-link"><a href="https://anyaigc.ai/" class="url" rel="ugc external nofollow">GPT API</a></span> on <a href="https://oobrien.com/2022/10/all-the-docks-technical-notes-on-the-routes-and-map/#comment-126731">All the Docks: Technical Notes on the Routes and Map</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://anyaigc.ai/" class="url" rel="ugc external nofollow">GPT API</a></span> on <a href="https://oobrien.com/2023/07/building-data/#comment-126730">Building Data</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://anyaigc.ai/" class="url" rel="ugc external nofollow">GPT API</a></span> on <a href="https://oobrien.com/2025/07/londons-misnamed-tube-stations/#comment-126729">London’s Misnamed Tube Stations</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://anyaigc.ai/" class="url" rel="ugc external nofollow">Claude API</a></span> on <a href="https://oobrien.com/2022/10/all-the-docks-how-it-went/#comment-126728">All the Docks: How it Went</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://anyaigc.ai/" class="url" rel="ugc external nofollow">Claude API</a></span>
1829 on <a href="https://oobrien.com/2023/07/all-the-docks-2/#comment-126727">All the Docks 2</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://baxian-movie.com/" class="url" rel="ugc external nofollow">Magiz</a></span> on <a href="https://oobrien.com/2012/01/tube-colours/#comment-126721">Tube Colours</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://anyaigc.com/" class="url" rel="ugc external nofollow">gpt-image-2 api</a></span> on <a href="https://oobrien.com/2022/10/all-the-docks-how-it-went/#comment-126715">All the Docks: How it Went</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://anyaigc.com/" class="url" rel="ugc external nofollow">apiä¸Â转站</a></span> on <a href="https://oobrien.com/2022/10/all-the-docks-how-it-went/#comment-126714">All the Docks: How it Went</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://anyaigc.com/" class="url" rel="ugc external nofollow">apiä¸Â转站</a></span>
1829 on <a href="https://oobrien.com/2023/07/all-the-docks-2/#comment-126713">All the Docks 2</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://anyaigc.com/" class="url" rel="ugc external nofollow">apiä¸Â转站</a></span> on <a href="https://oobrien.com/2023/07/all-the-docks-2/#comment-126712">All the Docks 2</a></li></ul></nav></div></div><div class="widget widget_meta"><div class="widget-content"><h2 class="widget-title subheading heading-size-3">Meta</h2><nav aria-label="Meta"> 1830 <ul> 1831 <li><a href="https://oobrien.com/wordpress/wp-login.php">Log in</a></li> 1832 <li><a href="https://oobrien.com/feed/">Entries feed</a></li> 1833 <li><a href="https://oobrien.com/comments/feed/">Comments feed</a></li> 1834 1835 <li><a href="https://wordpress.org/">WordPress.org</a></li> 1836 </ul> 1837 1838 </nav></div></div><div class="widget widget_archive"><div class="widget-content"><h2 class="widget-title subheading heading-size-3">Archives</h2> <label class="screen-reader-text" for="archives-dropdown-2">Archives</label> 1839 <select id="archives-dropdown-2" name="archive-dropdown"> 1840 1841 <option value="">Select Month</option> 1842 <option value='https://oobrien.com/2025/07/'> July 2025 (1)</option> 1843 <option value='https://oobrien.com/2024/10/'> October 2024 (1)</option> 1844 <option value='https://oobrien.com/2024/03/'> March 2024 (1)</option> 1845 <option value='https://oobrien.com/2024/01/'> January 2024 (1)</option> 1846 <option value='https://oobrien.com/2023/07/'> July 2023 (2)</option> 1847 <option value='https://oobrien.com/2023/03/'> March 2023 (1)</option> 1848 <option value='https://oobrien.com/2022/12/'> December 2022 (1)</option> 1849 <option value='https://oobrien.com/2022/10/'> October 2022 (2)</option> 1850 <option value='https://oobrien.com/2022/09/'> September 2022 (1)</option> 1851 <option value='https://oobrien.com/2022/07/'> July 2022 (1)</option> 1852 <option value='https://oobrien.com/2022/04/'> April 2022 (1)</option> 1853 <option value='https://oobrien.com/2021/12/'> December 2021 (1)</option> 1854 <option value='https://oobrien.com/2021/04/'> April 2021 (1)</option> 1855 <option value='https://oobrien.com/2021/03/'> March 2021 (2)</option> 1856 <option value='https://oobrien.com/2021/01/'> January 2021 (2)</option> 1857 <option value='https://oobrien.com/2020/08/'> August 2020 (4)</option> 1858 <option value='https://oobrien.com/2020/07/'> July 2020 (1)</option> 1859 <option value='https://oobrien.com/2020/06/'> June 2020 (2)</option> 1860 <option value='https://oobrien.com/2020/05/'> May 2020 (7)</option> 1861 <option value='https://oobrien.com/2020/04/'> April 2020 (2)</option> 1862 <option value='https://oobrien.com/2020/02/'> February 2020 (1)</option> 1863 <option value='https://oobrien.com/2020/01/'> January 2020 (3)</option> 1864 <option value='https://oobrien.com/2019/12/'> December 2019 (2)</option> 1865 <option value='https://oobrien.com/2019/11/'> November 2019 (5)</option> 1866 <option value='https://oobrien.com/2019/10/'> October 2019 (7)</option> 1867 <option value='https://oobrien.com/2019/09/'> September 2019 (13)</option> 1868 <option value='https://oobrien.com/2019/08/'> August 2019 (6)</option> 1869 <option value='https://oobrien.com/2019/07/'> July 2019 (1)</option> 1870 <option value='https://oobrien.com/2019/06/'> June 2019 (2)</option> 1871 <option value='https://oobrien.com/2019/05/'> May 2019 (1)</option> 1872 <option value='https://oobrien.com/2019/03/'> March 2019 (1)</option> 1873 <option value='https://oobrien.com/2019/02/'> February 2019 (3)</option> 1874 <option value='https://oobrien.com/2019/01/'> January 2019 (1)</option> 1875 <option value='https://oobrien.com/2018/12/'> December 2018 (1)</option> 1876 <option value='https://oobrien.com/2018/10/'> October 2018 (2)</option> 1877 <option value='https://oobrien.com/2018/09/'> September 2018 (1)</option> 1878 <option value='https://oobrien.com/2018/07/'> July 2018 (1)</option> 1879 <option value='https://oobrien.com/2018/06/'> June 2018 (1)</option> 1880 <option value='https://oobrien.com/2018/05/'> May 2018 (1)</option> 1881 <option value='https://oobrien.com/2018/04/'> April 2018 (3)</option> 1882 <option value='https://oobrien.com/2018/03/'> March 2018 (4)</option> 1883 <option value='https://oobrien.com/2018/02/'> February 2018 (2)</option> 1884 <option value='https://oobrien.com/2018/01/'> January 2018 (2)</option> 1885 <option value='https://oobrien.com/2017/11/'> November 2017 (2)</option> 1886 <option value='https://oobrien.com/2017/10/'> October 2017 (2)</option> 1887 <option value='https://oobrien.com/2017/08/'> August 2017 (2)</option> 1888 <option value='https://oobrien.com/2017/07/'> July 2017 (2)</option> 1889 <option value='https://oobrien.com/2017/05/'> May 2017 (5)</option> 1890 <option value='https://oobrien.com/2017/03/'> March 2017 (2)</option> 1891 <option value='https://oobrien.com/2017/01/'> January 2017 (1)</option> 1892 <option value='https://oobrien.com/2016/12/'> December 2016 (3)</option> 1893 <option value='https://oobrien.com/2016/11/'> November 2016 (3)</option> 1894 <option value='https://oobrien.com/2016/10/'> October 2016 (3)</option> 1895 <option value='https://oobrien.com/2016/09/'> September 2016 (4)</option> 1896 <option value='https://oobrien.com/2016/08/'> August 2016 (5)</option> 1897 <option value='https://oobrien.com/2016/07/'> July 2016 (3)</option> 1898 <option value='https://oobrien.com/2016/06/'> June 2016 (4)</option> 1899 <option value='https://oobrien.com/2016/05/'> May 2016 (4)</option> 1900 <option value='https://oobrien.com/2016/04/'> April 2016 (2)</option> 1901 <option value='https://oobrien.com/2016/03/'> March 2016 (2)</option> 1902 <option value='https://oobrien.com/2016/02/'> February 2016 (2)</option> 1903 <option value='https://oobrien.com/2016/01/'> January 2016 (1)</option> 1904 <option value='https://oobrien.com/2015/12/'> December 2015 (12)</option> 1905 <option value='https://oobrien.com/2015/11/'> November 2015 (5)</option> 1906 <option value='https://oobrien.com/2015/10/'> October 2015 (3)</option> 1907 <option value='https://oobrien.com/2015/09/'> September 2015 (2)</option> 1908 <option value='https://oobrien.com/2015/08/'> August 2015 (1)</option> 1909 <option value='https://oobrien.com/2015/07/'> July 2015 (5)</option> 1910 <option value='https://oobrien.com/2015/06/'> June 2015 (3)</option> 1911 <option value='https://oobrien.com/2015/05/'> May 2015 (3)</option> 1912 <option value='https://oobrien.com/2015/04/'> April 2015 (3)</option> 1913 <option value='https://oobrien.com/2015/03/'> March 2015 (6)</option> 1914 <option value='https://oobrien.com/2015/02/'> February 2015 (5)</option> 1915 <option value='https://oobrien.com/2015/01/'> January 2015 (5)</option> 1916 <option value='https://oobrien.com/2014/12/'> December 2014 (5)</option> 1917 <option value='https://oobrien.com/2014/11/'>
1917 November 2014 (6)</option> 1918 <option value='https://oobrien.com/2014/10/'> October 2014 (3)</option> 1919 <option value='https://oobrien.com/2014/09/'> September 2014 (9)</option> 1920 <option value='https://oobrien.com/2014/08/'> August 2014 (3)</option> 1921 <option value='https://oobrien.com/2014/07/'> July 2014 (2)</option> 1922 <option value='https://oobrien.com/2014/06/'> June 2014 (2)</option> 1923 <option value='https://oobrien.com/2014/05/'> May 2014 (6)</option> 1924 <option value='https://oobrien.com/2014/04/'> April 2014 (7)</option> 1925 <option value='https://oobrien.com/2014/03/'> March 2014 (6)</option> 1926 <option value='https://oobrien.com/2014/02/'> February 2014 (4)</option> 1927 <option value='https://oobrien.com/2014/01/'> January 2014 (7)</option> 1928 <option value='https://oobrien.com/2013/11/'> November 2013 (4)</option> 1929 <option value='https://oobrien.com/2013/10/'> October 2013 (9)</option> 1930 <option value='https://oobrien.com/2013/09/'> September 2013 (3)</option> 1931 <option value='https://oobrien.com/2013/08/'> August 2013 (5)</option> 1932 <option value='https://oobrien.com/2013/07/'> July 2013 (2)</option> 1933 <option value='https://oobrien.com/2013/06/'> June 2013 (8)</option> 1934 <option value='https://oobrien.com/2013/05/'> May 2013 (2)</option> 1935 <option value='https://oobrien.com/2013/04/'> April 2013 (1)</option> 1936 <option value='https://oobrien.com/2013/03/'> March 2013 (5)</option> 1937 <option value='https://oobrien.com/2013/02/'> February 2013 (3)</option> 1938 <option value='https://oobrien.com/2013/01/'> January 2013 (2)</option> 1939 <option value='https://oobrien.com/2012/12/'> December 2012 (4)</option> 1940 <option value='https://oobrien.com/2012/11/'> November 2012 (1)</option> 1941 <option value='https://oobrien.com/2012/10/'> October 2012 (3)</option> 1942 <option value='https://oobrien.com/2012/09/'> September 2012 (3)</option> 1943 <option value='https://oobrien.com/2012/08/'> August 2012 (8)</option> 1944 <option value='https://oobrien.com/2012/07/'> July 2012 (4)</option> 1945 <option value='https://oobrien.com/2012/06/'> June 2012 (5)</option> 1946 <option value='https://oobrien.com/2012/05/'> May 2012 (5)</option> 1947 <option value='https://oobrien.com/2012/04/'> April 2012 (5)</option> 1948 <option value='https://oobrien.com/2012/03/'> March 2012 (5)</option> 1949 <option value='https://oobrien.com/2012/02/'> February 2012 (10)</option> 1950 <option value='https://oobrien.com/2012/01/'> January 2012 (8)</option> 1951 <option value='https://oobrien.com/2011/12/'> December 2011 (3)</option> 1952 <option value='https://oobrien.com/2011/11/'> November 2011 (12)</option> 1953 <option value='https://oobrien.com/2011/10/'> October 2011 (3)</option> 1954 <option value='https://oobrien.com/2011/09/'> September 2011 (7)</option> 1955 <option value='https://oobrien.com/2011/08/'> August 2011 (3)</option> 1956 <option value='https://oobrien.com/2011/07/'> July 2011 (13)</option> 1957 <option value='https://oobrien.com/2011/06/'> June 2011 (6)</option> 1958 <option value='https://oobrien.com/2011/05/'> May 2011 (8)</option> 1959 <option value='https://oobrien.com/2011/04/'> April 2011 (8)</option> 1960 <option value='https://oobrien.com/2011/03/'> March 2011 (10)</option> 1961 <option value='https://oobrien.com/2011/02/'> February 2011 (15)</option> 1962 <option value='https://oobrien.com/2011/01/'> January 2011 (16)</option> 1963 <option value='https://oobrien.com/2010/12/'> December 2010 (5)</option> 1964 <option value='https://oobrien.com/2010/11/'> November 2010 (8)</option> 1965 <option value='https://oobrien.com/2010/10/'> October 2010 (10)</option> 1966 <option value='https://oobrien.com/2010/09/'> September 2010 (6)</option> 1967 <option value='https://oobrien.com/2010/08/'> August 2010 (7)</option> 1968 <option value='https://oobrien.com/2010/07/'> July 2010 (3)</option> 1969 <option value='https://oobrien.com/2010/06/'> June 2010 (3)</option> 1970 <option value='https://oobrien.com/2010/05/'> May 2010 (9)</option> 1971 <option value='https://oobrien.com/2010/04/'> April 2010 (12)</option> 1972 <option value='https://oobrien.com/2010/03/'> March 2010 (13)</option> 1973 <option value='https://oobrien.com/2010/02/'> February 2010 (4)</option> 1974 <option value='https://oobrien.com/2010/01/'> January 2010 (10)</option> 1975 <option value='https://oobrien.com/2009/12/'> December 2009 (9)</option> 1976 <option value='https://oobrien.com/2009/11/'>
1976 November 2009 (6)</option> 1977 <option value='https://oobrien.com/2009/10/'> October 2009 (12)</option> 1978 <option value='https://oobrien.com/2009/09/'> September 2009 (17)</option> 1979 <option value='https://oobrien.com/2009/08/'> August 2009 (11)</option> 1980 <option value='https://oobrien.com/2009/07/'> July 2009 (25)</option> 1981 <option value='https://oobrien.com/2009/06/'> June 2009 (9)</option> 1982 <option value='https://oobrien.com/2009/05/'> May 2009 (1)</option> 1983 <option value='https://oobrien.com/2009/04/'> April 2009 (6)</option> 1984 <option value='https://oobrien.com/2009/03/'> March 2009 (5)</option> 1985 <option value='https://oobrien.com/2009/02/'> February 2009 (2)</option> 1986 <option value='https://oobrien.com/2009/01/'> January 2009 (4)</option> 1987 <option value='https://oobrien.com/2008/12/'> December 2008 (4)</option> 1988 <option value='https://oobrien.com/2008/11/'> November 2008 (4)</option> 1989 <option value='https://oobrien.com/2008/10/'> October 2008 (12)</option> 1990 <option value='https://oobrien.com/2008/09/'> September 2008 (2)</option> 1991 <option value='https://oobrien.com/2008/08/'> August 2008 (3)</option> 1992 <option value='https://oobrien.com/2008/07/'> July 2008 (5)</option> 1993 <option value='https://oobrien.com/2008/06/'> June 2008 (2)</option> 1994 <option value='https://oobrien.com/2008/05/'> May 2008 (4)</option> 1995 <option value='https://oobrien.com/2008/04/'> April 2008 (3)</option> 1996 <option value='https://oobrien.com/2008/03/'> March 2008 (3)</option> 1997 <option value='https://oobrien.com/2008/02/'> February 2008 (3)</option> 1998 <option value='https://oobrien.com/2008/01/'> January 2008 (2)</option> 1999 <option value='https://oobrien.com/2007/12/'> December 2007 (3)</option> 2000 <option value='https://oobrien.com/2007/11/'> November 2007 (3)</option> 2001 <option value='https://oobrien.com/2007/10/'> October 2007 (10)</option> 2002 <option value='https://oobrien.com/2007/08/'> August 2007 (5)</option> 2003 <option value='https://oobrien.com/2007/07/'> July 2007 (13)</option> 2004 <option value='https://oobrien.com/2007/06/'> June 2007 (11)</option> 2005 <option value='https://oobrien.com/2007/05/'> May 2007 (2)</option> 2006 <option value='https://oobrien.com/2007/04/'> April 2007 (2)</option> 2007 <option value='https://oobrien.com/2007/02/'> February 2007 (2)</option> 2008 <option value='https://oobrien.com/2006/12/'> December 2006 (5)</option> 2009 <option value='https://oobrien.com/2006/11/'> November 2006 (5)</option> 2010 <option value='https://oobrien.com/2006/10/'> October 2006 (3)</option> 2011 <option value='https://oobrien.com/2006/09/'> September 2006 (2)</option> 2012 <option value='https://oobrien.com/2006/08/'> August 2006 (5)</option> 2013 <option value='https://oobrien.com/2006/07/'> July 2006 (7)</option> 2014 <option value='https://oobrien.com/2006/06/'> June 2006 (2)</option> 2015 <option value='https://oobrien.com/2006/05/'> May 2006 (4)</option> 2016 <option value='https://oobrien.com/2006/04/'> April 2006 (5)</option> 2017 <option value='https://oobrien.com/2006/03/'> March 2006 (6)</option> 2018 <option value='https://oobrien.com/2006/02/'> February 2006 (7)</option> 2019 <option value='https://oobrien.com/2006/01/'> January 2006 (10)</option> 2020 <option value='https://oobrien.com/2005/12/'> December 2005 (11)</option> 2021 <option value='https://oobrien.com/2005/11/'> November 2005 (8)</option> 2022 <option value='https://oobrien.com/2005/10/'> October 2005 (7)</option> 2023 <option value='https://oobrien.com/2005/09/'> September 2005 (7)</option> 2024 <option value='https://oobrien.com/2005/08/'> August 2005 (11)</option> 2025 <option value='https://oobrien.com/2005/07/'> July 2005 (4)</option> 2026 <option value='https://oobrien.com/2005/06/'> June 2005 (4)</option> 2027 <option value='https://oobrien.com/2005/05/'> May 2005 (2)</option> 2028 <option value='https://oobrien.com/2005/04/'> April 2005 (2)</option> 2029 <option value='https://oobrien.com/2005/03/'> March 2005 (4)</option> 2030 <option value='https://oobrien.com/2005/02/'> February 2005 (2)</option> 2031 <option value='https://oobrien.com/2005/01/'> January 2005 (1)</option> 2032 <option value='https://oobrien.com/2004/12/'> December 2004 (1)</option> 2033 <option value='https://oobrien.com/2004/11/'>
2033 November 2004 (4)</option> 2034 <option value='https://oobrien.com/2004/10/'> October 2004 (4)</option> 2035 <option value='https://oobrien.com/2004/09/'> September 2004 (2)</option> 2036 <option value='https://oobrien.com/2004/08/'> August 2004 (8)</option> 2037 <option value='https://oobrien.com/2004/07/'> July 2004 (7)</option> 2038 <option value='https://oobrien.com/2004/06/'> June 2004 (3)</option> 2039 <option value='https://oobrien.com/2004/05/'> May 2004 (4)</option> 2040 <option value='https://oobrien.com/2004/03/'> March 2004 (12)</option> 2041 <option value='https://oobrien.com/2003/12/'> December 2003 (1)</option> 2042 <option value='https://oobrien.com/2003/11/'> November 2003 (3)</option> 2043 <option value='https://oobrien.com/2003/10/'> October 2003 (1)</option> 2044 <option value='https://oobrien.com/2003/07/'> July 2003 (2)</option> 2045 <option value='https://oobrien.com/2003/03/'> March 2003 (1)</option> 2046 2047 </select> 2048 2049
2049<script> 2050( ( dropdownId ) => { 2051 const dropdown = document.getElementById( dropdownId ); 2052 function onSelectChange() { 2053 setTimeout( () => { 2054 if ( 'escape' === dropdown.dataset.lastkey ) { 2055 return; 2056 } 2057 if ( dropdown.value ) { 2058 document.location.href = dropdown.value; 2059 } 2060 }, 250 ); 2061 } 2062 function onKeyUp( event ) { 2063 if ( 'Escape' === event.key ) { 2064 dropdown.dataset.lastkey = 'escape'; 2065 } else { 2066 delete dropdown.dataset.lastkey; 2067 } 2068 } 2069 function onClick() { 2070 delete dropdown.dataset.lastkey; 2071 } 2072 dropdown.addEventListener( 'keyup', onKeyUp ); 2073 dropdown.addEventListener( 'click', onClick ); 2074 dropdown.addEventListener( 'change', onSelectChange ); 2075})( "archives-dropdown-2" ); 2076 2077//# sourceURL=WP_Widget_Archives%3A%3Awidget 2078</script>
2078 2079</div></div> 2080 <div class="widget widget_recent_entries"><div class="widget-content"> 2081 <h2 class="widget-title subheading heading-size-3">Recent Posts</h2><nav aria-label="Recent Posts"> 2082 <ul> 2083 <li> 2084 <a href="https://oobrien.com/2025/07/londons-misnamed-tube-stations/">London’s Misnamed Tube Stations</a> 2085 </li> 2086 <li> 2087 <a href="https://oobrien.com/2024/10/the-colne-valley-viaduct-is-complete/">The Colne Valley Viaduct is Complete</a> 2088 </li> 2089 <li> 2090 <a href="https://oobrien.com/2024/03/the-colne-valley-viaduct-crosses-the-grand-union-canal/">The Colne Valley Viaduct Crosses The Grand Union Canal</a> 2091 </li> 2092 <li> 2093 <a href="https://oobrien.com/2024/01/all-the-boroughs/">All the Boroughs?</a> 2094 </li> 2095 <li> 2096 <a href="https://oobrien.com/2023/07/all-the-docks-2/">All the Docks 2</a> 2097 </li> 2098 <li> 2099 <a href="https://oobrien.com/2023/07/building-data/">Building Data</a> 2100 </li> 2101 <li> 2102 <a href="https://oobrien.com/2023/03/consolidation/">Consolidation</a> 2103 </li> 2104 <li> 2105 <a href="https://oobrien.com/2022/12/big-feed-tidyup/">Big Feed Tidyup</a> 2106 </li> 2107 <li> 2108 <a href="https://oobrien.com/2022/10/all-the-docks-technical-notes-on-the-routes-and-map/">All the Docks: Technical Notes on the Routes and Map</a> 2109 </li> 2110 <li> 2111 <a href="https://oobrien.com/2022/10/all-the-docks-how-it-went/">All the Docks: How it Went</a> 2112 </li> 2113 </ul> 2114 2115 </nav></div></div><div class="widget widget_search"><div class="widget-content"><form role="search" method="get" class="search-form" action="https://oobrien.com/"> 2116 <label for="search-form-2"> 2117 <span class="screen-reader-text"> 2118 Search for: </span> 2119 <input type="search" id="search-form-2" class="search-field" placeholder="Search …" value="" name="s" /> 2120 </label> 2121 <input type="submit" class="search-submit" value="Search" /> 2122</form> 2123</div></div> </div> 2124 2125 2126 2127 <div class="footer-widgets column-two grid-item"> 2128 <div class="widget_text widget widget_custom_html"><div class="widget_text widget-content"><h2 class="widget-title subheading heading-size-3">Borough Challenge</h2><div class="textwidget custom-html-widget"><center><b>9 hours, 25 minutes, 23 seconds</b><br />on Saturday 5 May 2018<br /><br />Current World Record for visiting all 32<br />London boroughs & the City of London <br />(<a href="https://blog.oomap.co.uk/2018/05/borough-challenge/">Rules of the Challenge</a>)</center> 2129</div></div></div> 2130<div class="widget popular-posts"><div class="widget-content"> 2131 2132</div></div> 2133<div class="widget widget_categories"><div class="widget-content"><h2 class="widget-title subheading heading-size-3">Categories</h2><nav aria-label="Categories"> 2134 <ul> 2135 <li class="cat-item cat-item-2"><a href="https://oobrien.com/category/bike-share/">Bike Share</a> 2136</li> 2137 <li class="cat-item cat-item-58"><a href="https://oobrien.com/category/bodmas/">BODMAS</a> 2138</li> 2139 <li class="cat-item cat-item-85"><a href="https://oobrien.com/category/cdrc/">CDRC</a> 2140</li> 2141 <li class="cat-item cat-item-3"><a href="https://oobrien.com/category/conferences/">Conferences</a> 2142</li> 2143 <li class="cat-item cat-item-114"><a href="https://oobrien.com/category/cycling/">Cycling</a> 2144</li> 2145 <li class="cat-item cat-item-233"><a href="https://oobrien.com/category/data/">Data</a> 2146</li> 2147 <li class="cat-item cat-item-4"><a href="https://oobrien.com/category/data-graphics/">Data Graphics</a> 2148</li> 2149 <li class="cat-item cat-item-237"><a href="https://oobrien.com/category/escooters/">Escooters</a> 2150</li> 2151 <li class="cat-item cat-item-5"><a href="https://oobrien.com/category/geodemographics/">Geodemographics</a> 2152</li> 2153 <li class="cat-item cat-item-116"><a href="https://oobrien.com/category/hs2/">HS2</a> 2154</li> 2155 <li class="cat-item cat-item-117"><a href="https://oobrien.com/category/leisure/">Leisure</a> 2156</li> 2157 <li class="cat-item cat-item-6"><a href="https://oobrien.com/category/london/">London</a> 2158</li> 2159 <li class="cat-item cat-item-8"><a href="https://oobrien.com/category/mashups/">Mashups</a> 2160</li> 2161 <li class="cat-item cat-item-120"><a href="https://oobrien.com/category/munros/">Munros</a> 2162</li> 2163 <li class="cat-item cat-item-121"><a href="https://oobrien.com/category/for-the-record/">Notes</a> 2164</li> 2165 <li class="cat-item cat-item-122"><a href="https://oobrien.com/category/olympic-park/">Olympic Park</a> 2166</li> 2167 <li class="cat-item cat-item-9"><a href="https://oobrien.com/category/openlayers/">OpenLayers</a> 2168</li> 2169 <li class="cat-item cat-item-10"><a href="https://oobrien.com/category/openstreetmap/">OpenStreetMap</a> 2170</li> 2171 <li class="cat-item cat-item-123"><a href="https://oobrien.com/category/orienteering/">Orienteering</a> 2172</li> 2173 <li class="cat-item cat-item-115"><a href="https://oobrien.com/category/event-log/">Orienteering Events Log</a> 2174</li> 2175 <li class="cat-item cat-item-59"><a href="https://oobrien.com/category/reviews/">Reviews</a> 2176</li> 2177 <li class="cat-item cat-item-12"><a href="https://oobrien.com/category/technical/">Technical</a> 2178</li> 2179 <li class="cat-item cat-item-124"><a href="https://oobrien.com/category/training-log/">Training</a> 2180</li> 2181 <li class="cat-item cat-item-1"><a href="https://oobrien.com/category/uncategorized/">Uncategorized</a> 2182</li> 2183 </ul> 2184 2185 </nav></div></div> </div> 2186 2187 2188 </div><!-- .footer-widgets-wrapper --> 2189 2190 </aside><!-- .footer-widgets-outer-wrapper --> 2191 2192 2193 </div><!-- .footer-inner --> 2194 2195 </div><!-- .footer-nav-widgets-wrapper --> 2196 2197 2198 <footer id="site-footer" class="header-footer-group"> 2199 2200 <div class="section-inner"> 2201 2202 <div class="footer-credits"> 2203 2204 <p class="footer-copyright">© 2205 2026 <a href="https://oobrien.com/">O.O'Brien</a> 2206 </p><!-- .footer-copyright --> 2207 2208 2209 <p class="powered-by-wordpress"> 2210 <a href="https://en-gb.wordpress.org/"> 2211 Powered by WordPress </a> 2212 </p><!-- .powered-by-wordpress --> 2213 2214 </div><!-- .footer-credits --> 2215 2216 <a class="to-the-top" href="#site-header"> 2217 <span class="to-the-top-long"> 2218 To the top <span class="arrow" aria-hidden="true">↑</span> </span><!-- .to-the-top-long --> 2219 <span class="to-the-top-short"> 2220 Up <span class="arrow" aria-hidden="true">↑</span> </span><!-- .to-the-top-short --> 2221 </a><!-- .to-the-top --> 2222
2223 </div><!-- .section-inner --> 2224 2225 </footer><!-- #site-footer --> 2226 2227
2227<script type="speculationrules"> 2228{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wordpress/wp-*.php","/wordpress/wp-admin/*","/wordpress/wp-content/uploads/*","/wordpress/wp-content/*","/wordpress/wp-content/plugins/*","/wordpress/wp-content/themes/twentytwenty/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 2229</script>
vendor: 1 bytes, line 2229
2229
2230<script id="wp-emoji-settings" type="application/json"> 2231{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://oobrien.com/wordpress/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}} 2232</script>
vendor: 1 bytes, line 2232
2232
2233<script type="module"> 2234/*! This file is auto-generated */ 2235var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); 2236//# sourceURL=https://oobrien.com/wordpress/wp-includes/js/wp-emoji-loader.min.js 2237</script>
2237 2238 2239 </body> 2240</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.