CINXE.COM

mek | The Open Library Blog

<!DOCTYPE html> <!--[if IE 7]> <html class="ie ie7" lang="en-US"> <![endif]--> <!--[if IE 8]> <html class="ie ie8" lang="en-US"> <![endif]--> <!--[if !(IE 7) & !(IE 8)]><!--> <html lang="en-US"> <!--<![endif]--> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width" /> <title>mek | The Open Library Blog</title> <link rel="profile" href="http://gmpg.org/xfn/11" /> <link rel="pingback" href="https://blog.openlibrary.org/xmlrpc.php"> <!--[if lt IE 9]> <script src="https://blog.openlibrary.org/wp-content/themes/twentytwelve/js/html5.js" type="text/javascript"></script> <![endif]--> <meta name='robots' content='max-image-preview:large' /> <link rel='dns-prefetch' href='//archive.org' /> <link rel="alternate" type="application/rss+xml" title="The Open Library Blog &raquo; Feed" href="https://blog.openlibrary.org/feed/" /> <link rel="alternate" type="application/rss+xml" title="The Open Library Blog &raquo; Comments Feed" href="https://blog.openlibrary.org/comments/feed/" /> <link rel="alternate" type="application/rss+xml" title="The Open Library Blog &raquo; Posts by mek Feed" href="https://blog.openlibrary.org/author/mekarpeles/feed/" /> <script type="text/javascript"> window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/blog.openlibrary.org\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.2"}}; /*! This file is auto-generated */ !function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){p.clearRect(0,0,i.width,i.height),p.fillText(e,0,0);e=i.toDataURL();return p.clearRect(0,0,i.width,i.height),p.fillText(t,0,0),e===i.toDataURL()}function c(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(o=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},r=0;r<o.length;r++)t.supports[o[r]]=function(e){if(p&&p.fillText)switch(p.textBaseline="top",p.font="600 32px Arial",e){case"flag":return s("\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!s("\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!s("\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!s("\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c\udfff","\ud83e\udef1\ud83c\udffb\u200b\ud83e\udef2\ud83c\udfff")}return!1}(o[r]),t.supports.everything=t.supports.everything&&t.supports[o[r]],"flag"!==o[r]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[o[r]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(e=t.source||{}).concatemoji?c(e.concatemoji):e.wpemoji&&e.twemoji&&(c(e.twemoji),c(e.wpemoji)))}(window,document,window._wpemojiSettings); </script> <style type="text/css"> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='animate-css' href='https://blog.openlibrary.org/wp-content/plugins/qi-blocks/assets/css/plugins/animate/animate.min.css?ver=4.1.1' type='text/css' media='all' /> <style id='wp-block-library-inline-css' type='text/css'> :root{--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,161;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px;--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}: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)}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}.has-text-align-center{text-align:center}.has-text-align-left{text-align:left}.has-text-align-right{text-align:right}#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{clip:rect(1px,1px,1px,1px);word-wrap:normal!important;border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.screen-reader-text:focus{clip:auto!important;background-color:#ddd;-webkit-clip-path:none;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}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}} </style> <link rel='stylesheet' id='classic-theme-styles-css' href='https://blog.openlibrary.org/wp-includes/css/classic-themes.min.css?ver=6.2' type='text/css' media='all' /> <link rel='stylesheet' id='archive-auth-css' href='https://blog.openlibrary.org/wp-content/plugins/archive-auth/public/css/archive-auth-public.css?ver=1.0.0' type='text/css' media='all' /> <link rel='stylesheet' id='archive_sharing_css-css' href='https://blog.openlibrary.org/wp-content/plugins/archive-sharing-widget/public/css/archive-sharing-widget.css?ver=20181212' type='text/css' media='all' /> <link rel='stylesheet' id='qi-blocks-grid-css' href='https://blog.openlibrary.org/wp-content/plugins/qi-blocks/assets/dist/grid.css?ver=1.3.3' type='text/css' media='all' /> <link rel='stylesheet' id='qi-blocks-main-css' href='https://blog.openlibrary.org/wp-content/plugins/qi-blocks/assets/dist/main.css?ver=1.3.3' type='text/css' media='all' /> <link rel='stylesheet' id='twentytwelve-style-css' href='https://blog.openlibrary.org/wp-content/themes/twentytwelve/style.css?ver=6.2' type='text/css' media='all' /> <link rel='stylesheet' id='child-style-css' href='https://blog.openlibrary.org/wp-content/themes/twentytwelve-child/style.css?ver=1.0.0' type='text/css' media='all' /> <link rel='stylesheet' id='twentytwelve-fonts-css' href='https://blog.openlibrary.org/wp-content/themes/twentytwelve/fonts/font-open-sans.css?ver=20230328' type='text/css' media='all' /> <link rel='stylesheet' id='twentytwelve-block-style-css' href='https://blog.openlibrary.org/wp-content/themes/twentytwelve/css/blocks.css?ver=20230213' type='text/css' media='all' /> <!--[if lt IE 9]> <link rel='stylesheet' id='twentytwelve-ie-css' href='https://blog.openlibrary.org/wp-content/themes/twentytwelve/css/ie.css?ver=20150214' type='text/css' media='all' /> <![endif]--> <script type='text/javascript' src='https://archive.org/includes/analytics.js?ver=ffd0d9' id='archive_analytics_js-js'></script> <script type='text/javascript' src='https://blog.openlibrary.org/wp-includes/js/jquery/jquery.min.js?ver=3.6.3' id='jquery-core-js'></script> <script type='text/javascript' src='https://blog.openlibrary.org/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.0' id='jquery-migrate-js'></script> <script type='text/javascript' src='https://blog.openlibrary.org/wp-content/plugins/archive-auth/public/js/archive-auth-public.js?ver=1.0.0' id='archive-auth-js'></script> <script type='text/javascript' src='https://archive.org/web/wb404.js?ver=20181212' id='archive_wayback_404_js-js'></script> <link rel="https://api.w.org/" href="https://blog.openlibrary.org/wp-json/" /><link rel="alternate" type="application/json" href="https://blog.openlibrary.org/wp-json/wp/v2/users/178" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://blog.openlibrary.org/xmlrpc.php?rsd" /> <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://blog.openlibrary.org/wp-includes/wlwmanifest.xml" /> <meta name="generator" content="WordPress 6.2" /> <link rel="icon" href="https://blog.openlibrary.org/files/2016/02/OL-logo.jpg" sizes="32x32" /> <link rel="icon" href="https://blog.openlibrary.org/files/2016/02/OL-logo.jpg" sizes="192x192" /> <link rel="apple-touch-icon" href="https://blog.openlibrary.org/files/2016/02/OL-logo.jpg" /> <meta name="msapplication-TileImage" content="https://blog.openlibrary.org/files/2016/02/OL-logo.jpg" /> <script src="//archive.org/includes/analytics.js?v=20230130" type="text/javascript"></script> <script> 'use strict'; if ('archive_analytics' in window) { archive_analytics.service = 'blog'; archive_analytics.send_pageview_on_load({}); archive_analytics.process_url_events(window.location); } </script> <meta name="monetization" content="$ilp.uphold.com/D7BwPKMQzBiD"> </head> <body class="archive author author-mekarpeles author-178 wp-embed-responsive qi-blocks-1.3.3 qodef-gutenberg--no-touch custom-font-enabled"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0 0" width="0" height="0" focusable="false" role="none" style="visibility: hidden; position: absolute; left: -9999px; overflow: hidden;" ><defs><filter id="wp-duotone-dark-grayscale"><feColorMatrix color-interpolation-filters="sRGB" type="matrix" values=" .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 " /><feComponentTransfer color-interpolation-filters="sRGB" ><feFuncR type="table" tableValues="0 0.49803921568627" /><feFuncG type="table" tableValues="0 0.49803921568627" /><feFuncB type="table" tableValues="0 0.49803921568627" /><feFuncA type="table" tableValues="1 1" /></feComponentTransfer><feComposite in2="SourceGraphic" operator="in" /></filter></defs></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0 0" width="0" height="0" focusable="false" role="none" style="visibility: hidden; position: absolute; left: -9999px; overflow: hidden;" ><defs><filter id="wp-duotone-grayscale"><feColorMatrix color-interpolation-filters="sRGB" type="matrix" values=" .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 " /><feComponentTransfer color-interpolation-filters="sRGB" ><feFuncR type="table" tableValues="0 1" /><feFuncG type="table" tableValues="0 1" /><feFuncB type="table" tableValues="0 1" /><feFuncA type="table" tableValues="1 1" /></feComponentTransfer><feComposite in2="SourceGraphic" operator="in" /></filter></defs></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0 0" width="0" height="0" focusable="false" role="none" style="visibility: hidden; position: absolute; left: -9999px; overflow: hidden;" ><defs><filter id="wp-duotone-purple-yellow"><feColorMatrix color-interpolation-filters="sRGB" type="matrix" values=" .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 " /><feComponentTransfer color-interpolation-filters="sRGB" ><feFuncR type="table" tableValues="0.54901960784314 0.98823529411765" /><feFuncG type="table" tableValues="0 1" /><feFuncB type="table" tableValues="0.71764705882353 0.25490196078431" /><feFuncA type="table" tableValues="1 1" /></feComponentTransfer><feComposite in2="SourceGraphic" operator="in" /></filter></defs></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0 0" width="0" height="0" focusable="false" role="none" style="visibility: hidden; position: absolute; left: -9999px; overflow: hidden;" ><defs><filter id="wp-duotone-blue-red"><feColorMatrix color-interpolation-filters="sRGB" type="matrix" values=" .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 " /><feComponentTransfer color-interpolation-filters="sRGB" ><feFuncR type="table" tableValues="0 1" /><feFuncG type="table" tableValues="0 0.27843137254902" /><feFuncB type="table" tableValues="0.5921568627451 0.27843137254902" /><feFuncA type="table" tableValues="1 1" /></feComponentTransfer><feComposite in2="SourceGraphic" operator="in" /></filter></defs></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0 0" width="0" height="0" focusable="false" role="none" style="visibility: hidden; position: absolute; left: -9999px; overflow: hidden;" ><defs><filter id="wp-duotone-midnight"><feColorMatrix color-interpolation-filters="sRGB" type="matrix" values=" .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 " /><feComponentTransfer color-interpolation-filters="sRGB" ><feFuncR type="table" tableValues="0 0" /><feFuncG type="table" tableValues="0 0.64705882352941" /><feFuncB type="table" tableValues="0 1" /><feFuncA type="table" tableValues="1 1" /></feComponentTransfer><feComposite in2="SourceGraphic" operator="in" /></filter></defs></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0 0" width="0" height="0" focusable="false" role="none" style="visibility: hidden; position: absolute; left: -9999px; overflow: hidden;" ><defs><filter id="wp-duotone-magenta-yellow"><feColorMatrix color-interpolation-filters="sRGB" type="matrix" values=" .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 " /><feComponentTransfer color-interpolation-filters="sRGB" ><feFuncR type="table" tableValues="0.78039215686275 1" /><feFuncG type="table" tableValues="0 0.94901960784314" /><feFuncB type="table" tableValues="0.35294117647059 0.47058823529412" /><feFuncA type="table" tableValues="1 1" /></feComponentTransfer><feComposite in2="SourceGraphic" operator="in" /></filter></defs></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0 0" width="0" height="0" focusable="false" role="none" style="visibility: hidden; position: absolute; left: -9999px; overflow: hidden;" ><defs><filter id="wp-duotone-purple-green"><feColorMatrix color-interpolation-filters="sRGB" type="matrix" values=" .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 " /><feComponentTransfer color-interpolation-filters="sRGB" ><feFuncR type="table" tableValues="0.65098039215686 0.40392156862745" /><feFuncG type="table" tableValues="0 1" /><feFuncB type="table" tableValues="0.44705882352941 0.4" /><feFuncA type="table" tableValues="1 1" /></feComponentTransfer><feComposite in2="SourceGraphic" operator="in" /></filter></defs></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0 0" width="0" height="0" focusable="false" role="none" style="visibility: hidden; position: absolute; left: -9999px; overflow: hidden;" ><defs><filter id="wp-duotone-blue-orange"><feColorMatrix color-interpolation-filters="sRGB" type="matrix" values=" .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 " /><feComponentTransfer color-interpolation-filters="sRGB" ><feFuncR type="table" tableValues="0.098039215686275 1" /><feFuncG type="table" tableValues="0 0.66274509803922" /><feFuncB type="table" tableValues="0.84705882352941 0.41960784313725" /><feFuncA type="table" tableValues="1 1" /></feComponentTransfer><feComposite in2="SourceGraphic" operator="in" /></filter></defs></svg><div id="page" class="hfeed site"> <header id="masthead" class="site-header" role="banner"> <hgroup> <h1 class="site-title"><a href="https://blog.openlibrary.org/" title="The Open Library Blog" rel="home">The Open Library Blog</a></h1> <h2 class="site-description">A web page for every book</h2> </hgroup> <a href="https://blog.openlibrary.org/"> <!-- updating URL to point to 25th anniversary site, remove when done. --> <!--<a href="http://blog.archive.org/2022/09/06/building-democracys-library-celebrate-with-the-internet-archive-on-october-19/" title="Go to Democracy's Library blog post" data-event-click-tracking="DemocracysLibrary|BlogHeader" target="_blank">--> <img src="https://blog.openlibrary.org/files/2023/04/cropped-cropped-openlibrary-header.png" class="header-image" width="1280" height="437" alt="The Open Library Blog" /></a> <nav id="site-navigation" class="main-navigation" role="navigation"> <button class="menu-toggle">Menu</button> <a class="assistive-text" href="#content" title="Skip to content">Skip to content</a> <div class="menu-menu-1-container"><ul id="menu-menu-1" class="nav-menu"><li id="menu-item-1135" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-1135"><a href="http://blog.openlibrary.org/">Home</a></li> <li id="menu-item-1136" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1136"><a href="https://blog.openlibrary.org/about-2/">About</a></li> </ul></div> </nav><!-- #site-navigation --> </header><!-- #masthead --> <div id="main" class="wrapper"> <section id="primary" class="site-content"> <div id="content" role="main"> <header class="archive-header"> <h1 class="archive-title"> Author Archives: <span class="vcard"><a class="url fn n" href="https://blog.openlibrary.org/author/mekarpeles/" rel="me">mek</a></span> </h1> </header><!-- .archive-header --> <nav id="nav-above" class="navigation"> <h3 class="assistive-text">Post navigation</h3> <div class="nav-previous"><a href="https://blog.openlibrary.org/author/mekarpeles/page/2/" ><span class="meta-nav">&larr;</span> Older posts</a></div> <div class="nav-next"></div> </nav><!-- .navigation --> <div class="author-info"> <div class="author-avatar"> </div><!-- .author-avatar --> <div class="author-description"> <h2> About mek </h2> <p>Citizen of the World, Open Librarian @ openlibrary.org</p> </div><!-- .author-description --> </div><!-- .author-info --> <article id="post-2391" class="post-2391 post type-post status-publish format-standard hentry category-fellowships category-uncategorized"> <header class="entry-header"> <h1 class="entry-title"> <a href="https://blog.openlibrary.org/2024/10/03/improving-search-removing-dead-ends/" rel="bookmark">Improving Search, Removing Dead-Ends</a> </h1> <div class="entry-byline"> Posted on <a href="https://blog.openlibrary.org/2024/10/03/improving-search-removing-dead-ends/" title="1:14 pm" rel="bookmark"><time class="entry-date" datetime="2024-10-03T13:14:03+00:00">October 3, 2024</time></a><span class="by-author"> by <span class="author vcard"><a class="url fn n" href="https://blog.openlibrary.org/author/mekarpeles/" title="View all posts by mek" rel="author">mek</a></span></span> </div><!-- .entry-byline --> </header><!-- .entry-header --> <div class="entry-content"> <p>Thanks to the work of 2024 Design &amp; Engineering Fellow <a href="https://www.poolofwork.com/">Meredith White</a>, the Open Library search page now suggests Search Inside results any time a search fails to find books matching by title or author.</p> <p><strong>Before:</strong></p> <figure class="wp-block-image size-full is-resized is-style-default"><img decoding="async" src="https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-6.06.11-AM.png" alt="" class="wp-image-2392" width="525" height="122" srcset="https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-6.06.11-AM.png 1646w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-6.06.11-AM-300x70.png 300w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-6.06.11-AM-500x116.png 500w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-6.06.11-AM-768x178.png 768w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-6.06.11-AM-1536x356.png 1536w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-6.06.11-AM-624x145.png 624w" sizes="(max-width: 525px) 100vw, 525px" /></figure> <p><strong>After:</strong></p> <figure class="wp-block-image size-full is-style-default"><img decoding="async" loading="lazy" width="1386" height="966" src="https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-6.07.20-AM.png" alt="" class="wp-image-2393" srcset="https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-6.07.20-AM.png 1386w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-6.07.20-AM-300x209.png 300w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-6.07.20-AM-500x348.png 500w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-6.07.20-AM-768x535.png 768w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-6.07.20-AM-624x435.png 624w" sizes="(max-width: 1386px) 100vw, 1386px" /></figure> <div class="wp-block-columns is-layout-flex wp-container-6"> <div class="wp-block-column is-layout-flow" style="flex-basis:100%"> <div class="wp-block-group is-layout-constrained"><div class="wp-block-group__inner-container"> <div class="wp-block-columns is-layout-flex wp-container-3"> <div class="wp-block-column is-layout-flow" style="flex-basis:50%"> <figure class="wp-block-image size-full is-resized is-style-rounded"><img decoding="async" loading="lazy" src="https://blog.openlibrary.org/files/2024/10/image-4.png" alt="" class="wp-image-2403" width="180" height="135" srcset="https://blog.openlibrary.org/files/2024/10/image-4.png 720w, https://blog.openlibrary.org/files/2024/10/image-4-300x225.png 300w, https://blog.openlibrary.org/files/2024/10/image-4-500x375.png 500w, https://blog.openlibrary.org/files/2024/10/image-4-624x468.png 624w" sizes="(max-width: 180px) 100vw, 180px" /></figure> </div> <div class="wp-block-column is-layout-flow" style="flex-basis:100%"> <p>The <a href="https://github.com/internetarchive/openlibrary/issues/1001#issuecomment-2099175803">planning</a> and <a href="https://github.com/internetarchive/openlibrary/pull/9734">development</a> of this feature were led by volunteer and 2024 Design &amp; Engineering Fellow, <a href="https://www.poolofwork.com/">Meredith White</a> who did a fantastic job bringing the idea to fruition.</p> </div> </div> </div></div> </div> </div> <p><strong>Meredith writes:</strong> Sooner or later, a patron will take a turn that deviates from what a system expects. When this happens, the system might show a patron a dead-end, something like: ‘0 results found’. A good UX though, will recognize the dead-end and present the patron with options to carry on their search. The search upgrade was built with this goal in mind: help patrons seamlessly course correct past disruptive dead-ends.</p> <p>Many patrons have likely experienced a case where they&#8217;ve typed in a specific search term and been shown the dreaded, &#8220;0 results found&#8221; message. If the system doesn&#8217;t provide any next steps to the patron, like a &#8220;did you mean [&#8230;]?&#8221; link, then this is a dead-end. When patrons are shown dead-ends, they have the full burden of figuring out what went wrong with their search and what to do next. Is the item the patron is searching for not in the system? Is the wrong search type selected (e.g. are they searching in titles rather than authors)? Is there a typo in their search query? Predicting a patron&#8217;s intent and how they veered off course can be challenging, as each case may require a different solution. In order to develop solutions that are grounded in user feedback, it&#8217;s important to talk with patrons</p> <p>In the case of Open Library, <a href="https://blog.openlibrary.org/2024/06/16/listening-to-learners-and-educators/">interviewing learners and educators</a> revealed many patrons were unaware that the platform has search inside capabilities. </p> <blockquote class="wp-block-quote"> <p>“Several interviewees were unaware of Open Library’s [<strong>existing</strong>] full-text search, read aloud, or note-taking capabilities, yet expressed interest in these features.”</p> <cite>https://blog.openlibrary.org/2024/06/16/listening-to-learners-and-educators/</cite></blockquote> <p>Several patrons were also unaware that there’s a way to switch search modes from the default “All” to e.g. “Authors” or “Subjects”. Furthermore, several patrons expected the search box to be type-agnostic.</p> <figure class="wp-block-image size-full is-resized is-style-default"><img decoding="async" loading="lazy" src="https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.01.03-AM.png" alt="" class="wp-image-2395" width="266" height="48" srcset="https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.01.03-AM.png 770w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.01.03-AM-300x54.png 300w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.01.03-AM-500x90.png 500w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.01.03-AM-768x138.png 768w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.01.03-AM-624x112.png 624w" sizes="(max-width: 266px) 100vw, 266px" /></figure> <figure class="wp-block-image size-large is-style-default"><img decoding="async" loading="lazy" width="500" height="27" src="https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.03.07-AM-500x27.png" alt="" class="wp-image-2397" srcset="https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.03.07-AM-500x27.png 500w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.03.07-AM-300x16.png 300w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.03.07-AM-768x42.png 768w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.03.07-AM-624x34.png 624w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.03.07-AM.png 1176w" sizes="(max-width: 500px) 100vw, 500px" /></figure> <p>From our conversations with patrons and reviewing analytics, we learned many dead-end searches were the result of patrons trying to type <strong>search inside</strong> queries into the default search, which primarily considers titles and authors. What does this experience look like for a patron? An Open Library patron might type into the default <strong>book</strong> search box, a book <strong>quote</strong> such as: &#8220;<a href="https://openlibrary.org/search?q=All+grown-ups+were+once+children...+but+only+a+few+of+them+remember+it&amp;mode=ebooks&amp;has_fulltext=true">All grown-ups were once children&#8230; but only a few of them remember it</a>&#8220;. Unbeknownst to them, the system only searches for matching book titles and authors and, as it finds no matches, the patron’s search returns an anticlimactic ‘No results found’ message. In red. A dead-end.</p> <p>As a Comparative Literature major who spent a disproportionate amount of time of my undergrad flipping through book pages while muttering, “<em>where oh where did I read that quote?”,</em> I know I would’ve certainly benefitted from the Search Inside feature, had I known it existed. With a little brainstorming, we knew the default search experience could be improved to show more relevant results for dead-end queries. The idea that emerged is: display Search Inside results as a “did you mean?” type suggestion when a search returns 0 matches. This approach would help reduce dead-ends and increase discoverability of the Search Inside feature. Thus the “Search Inside Suggestion Card” was born.</p> <p>The design process started out as a series of Figma drawings:</p> <p><img decoding="async" loading="lazy" width="573" height="264" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfNAcKqKCJVBL12BQe3zqYGOvF8_T9RUe8iY52OUw_6dn5Za641ZWfttaAEb3BvVc8tihEOZHWR4BRKDg4Hmv9Iotn2Y32zRvMmyxGuZnSzJqCrvnJFdf48aP_OqfFHPLufLbvrFARL1Pd-WJ4JIykubxY5?key=vNOEFU5NAACDKb_eoV5Sgw"></p> <p>Discussions with the design team helped narrow in on a prototype that would provide the patron with enough links and information to send them on their way to the Search Inside results page, a book page or the text reader itself, with occurrences of the user’s search highlighted. At the same time, the card had to be compact and easy to digest at a glance, so design efforts were made to make the quote stand out first and foremost.</p> <p><img decoding="async" loading="lazy" width="539" height="305" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeYwhxzLcLL96CKW600OceS0RBCgUJDl2HCo8sIouHb1kZQn5hvoiVRe3D-c3Fn9mem9Hk-sDeXrcBVoly66pi2E5THrWn8ccME6MQE0m4OerTMsioK-4oYiCAUDLDedx4IYNo0JPtuZVipsHS01mLk5vlW?key=vNOEFU5NAACDKb_eoV5Sgw"></p> <p>After several revisions, the prototype evolved into this design:</p> <p><img decoding="async" loading="lazy" width="624" height="379" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcsQ4UEGQEteEvoiX2RWO1wrtcFCRjEgYWNWyFbs7riZlmZZQux8IB39RY648TGD_bevuR0tcUcokHvVw3Nwgfn5Y3SBejIT3cgd_FTxw7RJn2s_tr8g-6xJWimHgHdPOcM0fHdmf3INdjueM3Bj_MuV_ZB?key=vNOEFU5NAACDKb_eoV5Sgw"></p> <h2 class="wp-block-heading">Early Results</h2> <p>The Search Inside Suggestion card went live on August 21st and thanks to link tracks that I rigged up to all the clickable elements of the card, we were able to observe its effectiveness. Some findings:<img decoding="async" loading="lazy" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdt-x20ccBzTonye35938abLZKZmlxypw0T3B15kGPAhjqlByJS_OLIAEoDjcOTKXlpo-qIXYrnFEbnshQr2DZn_YIQfrrTh0VIK4iYQSuIX49bKrWOj6POGtxVcHL4y6bsRCP_8d51FNi1SQbjSZ5ReH9O?key=vNOEFU5NAACDKb_eoV5Sgw" width="624" height="316"></p> <figure class="wp-block-image is-style-default"><img decoding="async" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdLydDmOzBDZrFe5LS11O_9wMQjxVh1WGiqJYLIh8Dx2D9Ck3OeTfJs9f91WISJy6JfTc_-CDklDtBAcBnyvyhGFTn5zYfffAaMhQziXTEV2ki8IPl-RywFf-PjIjY5Y-mT-Id0V7jbFV6HtkDWUv34GAw?key=vNOEFU5NAACDKb_eoV5Sgw" alt="" /></figure> <ul> <li>In the first day, 2k people landed on the Search Inside Suggestion card when previously they would have seen nothing. That’s 2,000 dead-end evasion attempts!</li> <li>Of these 2,000 users, 60% clicked on the card to be led to Search Inside results.</li> <li>40% clicked on one of the suggested books with a matching quote.</li> <li>~8% clicked on the quote itself to be brought directly into the text.</li> </ul> <p>I would’ve thought more people would click the quote itself but alas, there are only so many Comparative Literature majors in this world.</p> <h2 class="wp-block-heading"><strong>Follow-up and Next Steps</strong></h2> <p>To complement the efforts of the Search Inside Suggestion card’s redirect to the Search Inside results page, I worked on re-designing the Search Inside results cards. My goal for the redesign was to make the card more compact and match its styling as closely as possible to the Search Inside Suggestion card to create a consistent UI.</p> <p><strong>Before:</strong></p> <figure class="wp-block-image is-style-default"><img decoding="async" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeY0OETfUvqOAq0isWqXoi8rxDVhXCwUTdeg1j5JkBLeLqHqNZ4N4f2611cPv3ydD9WxO563XyVAmEsflryV3Py6sgsmNlvfRq08COHRUnV-TafLZMljAgsBg91X5CsB767RlIeaK9BXgs2ce278ivId1U?key=vNOEFU5NAACDKb_eoV5Sgw" alt="" /></figure> <p><strong>After:</strong></p> <figure class="wp-block-image is-style-default"><img decoding="async" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcEOeZYTKY3oEZDIMAEXNuARFLyG_qg2Xfer0adneR5wZK74hbzTGyMIQSBqPO9klY0hbMd2HylpqNC3So7l6MvZ4TR--3XCaj4UZVLuEQF94LfLRZW7qZnAYm5qPcQSvRevb6xEvthrdzE9Npsp9K24NdZ?key=vNOEFU5NAACDKb_eoV5Sgw" alt="" /></figure> <p>The next step for the Search Inside Suggestion card is to explore weaving it into the search results, regardless of result count. The card will offer an alternate search path in a list of potentially repetitive results. Say you searched ‘to be or not to be’ and there happens to be several books with a matching title. Rather than scrolling through these potentially irrelevant results, the search result card can intervene to anticipate that perhaps it’s a quote <em>inside</em> a text that you’re searching for. With the Search Inside Suggestion card taking the place of a dead-end, I’m proud to report that a search for “All grown-ups were once children…” will now lead Open Library patron’s to Antoine de Saint-Exupéry’s <em>The Little Prince</em>, page 174!</p> <h2 class="wp-block-heading">Technical Implementation</h2> <p>For the software engineers in the room who want a peek behind the curtain, working on the &#8220;Search Inside Suggestion Card&#8221; project was a great opportunity to learn how to asynchronously, <a href="https://en.wikipedia.org/wiki/Lazy_loading">lazy load</a> &#8220;parts&#8221; of webpages, using an approach called partials. Because Search Inside results can take a while to generate, we decided to lazy load the Search Inside Suggestion Card, only after the regular search had completed.</p> <figure class="wp-block-image size-full is-style-default"><img decoding="async" loading="lazy" width="2202" height="476" src="https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.33.52-AM.png" alt="" class="wp-image-2398" srcset="https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.33.52-AM.png 2202w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.33.52-AM-300x65.png 300w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.33.52-AM-500x108.png 500w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.33.52-AM-768x166.png 768w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.33.52-AM-1536x332.png 1536w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.33.52-AM-2048x443.png 2048w, https://blog.openlibrary.org/files/2024/10/Screenshot-2024-10-02-at-7.33.52-AM-624x135.png 624w" sizes="(max-width: 2202px) 100vw, 2202px" /></figure> <p>If you’ve never heard of a partial, well I hadn’t either. Rather than waiting to fetch all the Search Inside matches to the user’s search before the user sees <em>anything</em>, a ‘No books directly matched your search’ message and a loading bar appear immediately. The loading bar indicates that Search Inside results are being checked, which is UX speak for <em>this partial html template chunk is loading.</em></p> <p>So how does a partial load? There’s a few key players:</p> <ol> <li><strong>The template</strong> (html file) &#8211; this is the page that initially renders with the ‘No books directly matched your search’ message. It has a placeholder div for where the partial will be inserted.</li> <li><strong>The partial</strong> (html file) &#8211; this is the Search Inside Suggestion Card</li> <li><strong>The Javascript logic</strong> &#8211; this is the logic that says, “get that placeholder div from the template and attach it to an initialization function and call that function”</li> <li><strong>More Javascript logic</strong> – this logic says, “ok, show that loading indicator while I make a call to the partials endpoint”</li> <li><strong>A Python class</strong> &#8211; this is where the partials endpoint lives. When it’s called, it calls a model to send a fulltext search query to the database. This is where the user’s wrong turn is at last “corrected”. Their initial search in the Books tab that found no matching titles is now redirected to perform a Search Inside tab search to find matching quotes.</li> <li><strong>The data</strong> returned from the Python class is sent back up the line and the data-infused partial is inserted in the template from step 1. Ta-da!</li> </ol> <h3 class="wp-block-heading" id="about-the-open-library-fellowship-program">About the Open Library Fellowship Program</h3> <p>The Internet Archive’s Open Library Fellowship is a flexible, self-designed independent study which pairs volunteers with mentors to lead development of a high impact feature for OpenLibrary.org. Most fellowship programs last one to two months and are flexible, according to the preferences of contributors and availability of mentors. We typically choose fellows based on their exemplary and active participation, conduct, and performance within the Open Library community. The Open Library staff typically only accepts 1 or 2 fellows at a time to ensure participants receive plenty of support and mentor time. Occasionally, funding for fellowships is made possible through Google Summer of Code or Internet Archive Summer of Code &amp; Design. If you’re interested in contributing as an Open Library Fellow and receiving mentorship, you can apply using&nbsp;<a href="https://forms.gle/ZpygKGaECbHKYpvx8">this form</a>&nbsp;or email&nbsp;<a href="mailto:openlibrary@archive.org">openlibrary@archive.org</a>&nbsp;for more information.</p> </div><!-- .entry-content --> <footer class="entry-meta"> Posted in <a href="https://blog.openlibrary.org/category/fellowships/" rel="category tag">Fellowships</a>, <a href="https://blog.openlibrary.org/category/uncategorized/" rel="category tag">Uncategorized</a> | <span class="comments-link"><a href="https://blog.openlibrary.org/2024/10/03/improving-search-removing-dead-ends/#respond"><span class="leave-reply">Leave a reply</span></a></span> </footer><!-- .entry-meta --> </article><!-- #post --> <article id="post-2328" class="post-2328 post type-post status-publish format-standard hentry category-uncategorized"> <header class="entry-header"> <h1 class="entry-title"> <a href="https://blog.openlibrary.org/2024/07/05/follow-each-other-on-open-library/" rel="bookmark">Follow each other on Open Library</a> </h1> <div class="entry-byline"> Posted on <a href="https://blog.openlibrary.org/2024/07/05/follow-each-other-on-open-library/" title="12:52 pm" rel="bookmark"><time class="entry-date" datetime="2024-07-05T12:52:22+00:00">July 5, 2024</time></a><span class="by-author"> by <span class="author vcard"><a class="url fn n" href="https://blog.openlibrary.org/author/mekarpeles/" title="View all posts by mek" rel="author">mek</a></span></span> </div><!-- .entry-byline --> </header><!-- .entry-header --> <div class="entry-content"> <p>By Nick Norman, Mek, et al</p> <p>Subscribe to readers with complimentary tastes to receive book recommendations.</p> <figure class="wp-block-image is-style-default"><img decoding="async" src="https://lh7-us.googleusercontent.com/docsz/AD_4nXf3IP7KKOe6JX-SeZzS3WkM4w1nicpmd8F3Tb7EyMchtudkU2BJXfx_PTR6Dq5BiWE5sMLWnScOhZf3bJtyrW0Tqd5cSgDL1bhsHIufLZ9Gp18imPSS1Taigsn7tRjoaliUV6kj18spRRSNseZyzrryU7A?key=cjEYJG1HXdl4_j5GB9VwUQ" alt="" /></figure> <p>Over the past few months, we&#8217;ve been rolling out the basic building blocks of the &#8220;Follow&#8221; feature: a way for readers to follow those with similar tastes and to tap into a<strong> </strong>personalized feed of book recommendations. </p> <h3 class="wp-block-heading"><strong>How does the &#8220;Follow&#8221; feature work?</strong></h3> <p>Similar to following people on platforms like Facebook, Open Library&#8217;s &#8220;Follow&#8221; feature enables patrons to connect with fellow readers whose Reading Logs are set to public. When you follow other readers, their recent public reading activity will show up in <a href="https://openlibrary.org/account/books/feed">your feed</a> and hopefully help you discover interesting books to read next.</p> <figure class="wp-block-image size-full is-style-default"><img decoding="async" loading="lazy" width="1778" height="1244" src="https://blog.openlibrary.org/files/2024/07/Screenshot-2024-07-03-at-11.18.47-AM.png" alt="" class="wp-image-2373" srcset="https://blog.openlibrary.org/files/2024/07/Screenshot-2024-07-03-at-11.18.47-AM.png 1778w, https://blog.openlibrary.org/files/2024/07/Screenshot-2024-07-03-at-11.18.47-AM-300x210.png 300w, https://blog.openlibrary.org/files/2024/07/Screenshot-2024-07-03-at-11.18.47-AM-500x350.png 500w, https://blog.openlibrary.org/files/2024/07/Screenshot-2024-07-03-at-11.18.47-AM-768x537.png 768w, https://blog.openlibrary.org/files/2024/07/Screenshot-2024-07-03-at-11.18.47-AM-1536x1075.png 1536w, https://blog.openlibrary.org/files/2024/07/Screenshot-2024-07-03-at-11.18.47-AM-624x437.png 624w" sizes="(max-width: 1778px) 100vw, 1778px" /></figure> <p>You can get to your feed from the <strong><a href="https://openlibrary.org/account/books">My Books</a> </strong>page, using the <strong><a href="https://openlibrary.org/account/books/feed">My Feed</a> </strong>item in the left navigation menu:</p> <h2 class="wp-block-heading">What&#8217;s next?</h2> <figure class="wp-block-image size-full is-style-default"><img decoding="async" loading="lazy" width="1854" height="452" src="https://blog.openlibrary.org/files/2024/07/Screenshot-2024-07-03-at-11.19.22-AM.png" alt="" class="wp-image-2374" srcset="https://blog.openlibrary.org/files/2024/07/Screenshot-2024-07-03-at-11.19.22-AM.png 1854w, https://blog.openlibrary.org/files/2024/07/Screenshot-2024-07-03-at-11.19.22-AM-300x73.png 300w, https://blog.openlibrary.org/files/2024/07/Screenshot-2024-07-03-at-11.19.22-AM-500x122.png 500w, https://blog.openlibrary.org/files/2024/07/Screenshot-2024-07-03-at-11.19.22-AM-768x187.png 768w, https://blog.openlibrary.org/files/2024/07/Screenshot-2024-07-03-at-11.19.22-AM-1536x374.png 1536w, https://blog.openlibrary.org/files/2024/07/Screenshot-2024-07-03-at-11.19.22-AM-624x152.png 624w" sizes="(max-width: 1854px) 100vw, 1854px" /></figure> <p>Most of the functionality for following readers is live, but we&#8217;re still designing mechanisms for discovering readers to follow. Interested in shaping the development of this new feature?<strong> </strong>Take a look at <a href="https://github.com/internetarchive/openlibrary/issues?q=is%3Aopen+is%3Aissue+label%3A%22Module%3A+Following%22">these open Github issues relating to the Follow feature</a>.</p> <h3 class="wp-block-heading"><strong>Your feedback is appreciated</strong></h3> <p>Have other comments or thoughts? Please share them in the comments section below, <a href="https://twitter.com/openlibrary?lang=en">connect with us on Twitter</a>, and send us your feedback about the new &#8220;Follow&#8221; feature.</p> </div><!-- .entry-content --> <footer class="entry-meta"> Posted in <a href="https://blog.openlibrary.org/category/uncategorized/" rel="category tag">Uncategorized</a> | <span class="comments-link"><span></span></span> </footer><!-- .entry-meta --> </article><!-- #post --> <article id="post-2354" class="post-2354 post type-post status-publish format-standard hentry category-uncategorized"> <header class="entry-header"> <h1 class="entry-title"> <a href="https://blog.openlibrary.org/2024/06/17/let-readers-read/" rel="bookmark">Let Readers Read</a> </h1> <div class="entry-byline"> Posted on <a href="https://blog.openlibrary.org/2024/06/17/let-readers-read/" title="4:27 pm" rel="bookmark"><time class="entry-date" datetime="2024-06-17T16:27:32+00:00">June 17, 2024</time></a><span class="by-author"> by <span class="author vcard"><a class="url fn n" href="https://blog.openlibrary.org/author/mekarpeles/" title="View all posts by mek" rel="author">mek</a></span></span> </div><!-- .entry-byline --> </header><!-- .entry-header --> <div class="entry-content"> <p>Mek here, program lead for OpenLibrary.org at the Internet Archive with important updates and a way for library lovers to help protect an Internet that champions library values.</p> <p>Over the last several months, Open Library readers have felt the devastating impact of more than <a href="https://help.archive.org/help/why-are-so-many-books-listed-as-borrow-unavailable-at-the-internet-archive.">500,000 books being removed from the Internet Archive&#8217;s lending library</a>, as a result of Hachette v. Internet Archive.</p> <p>In less than two weeks, on June 28th, the courts will hear the oral argument for the Internet Archive&#8217;s appeal.</p> <p>What&#8217;s at stake is the <a href="https://blog.archive.org/2024/06/17/let-readers-read/">very ability for library patrons to continue borrowing and reading the books the Internet Archive owns</a>, like any other library</p> <p>Consider <a href="https://change.org/LetReadersRead"><b>signing this open letter</b></a> to urge publishers to restore access to the 500,000 books they’ve caused to be removed from the Internet Archive’s lending library and let readers read.</p> <p></p> </div><!-- .entry-content --> <footer class="entry-meta"> Posted in <a href="https://blog.openlibrary.org/category/uncategorized/" rel="category tag">Uncategorized</a> | <span class="comments-link"><span></span></span> </footer><!-- .entry-meta --> </article><!-- #post --> <article id="post-2330" class="post-2330 post type-post status-publish format-standard has-post-thumbnail hentry category-interfacedesign category-research"> <header class="entry-header"> <img width="624" height="114" src="https://blog.openlibrary.org/files/2024/06/Screenshot-2024-06-15-at-8.06.16-PM-624x114.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://blog.openlibrary.org/files/2024/06/Screenshot-2024-06-15-at-8.06.16-PM-624x114.png 624w, https://blog.openlibrary.org/files/2024/06/Screenshot-2024-06-15-at-8.06.16-PM-300x55.png 300w, https://blog.openlibrary.org/files/2024/06/Screenshot-2024-06-15-at-8.06.16-PM-500x91.png 500w, https://blog.openlibrary.org/files/2024/06/Screenshot-2024-06-15-at-8.06.16-PM-768x141.png 768w, https://blog.openlibrary.org/files/2024/06/Screenshot-2024-06-15-at-8.06.16-PM.png 1246w" sizes="(max-width: 624px) 100vw, 624px" /> <h1 class="entry-title"> <a href="https://blog.openlibrary.org/2024/06/16/listening-to-learners-and-educators/" rel="bookmark">Listening to Learners and Educators</a> </h1> <div class="entry-byline"> Posted on <a href="https://blog.openlibrary.org/2024/06/16/listening-to-learners-and-educators/" title="3:06 am" rel="bookmark"><time class="entry-date" datetime="2024-06-16T03:06:54+00:00">June 16, 2024</time></a><span class="by-author"> by <span class="author vcard"><a class="url fn n" href="https://blog.openlibrary.org/author/mekarpeles/" title="View all posts by mek" rel="author">mek</a></span></span> </div><!-- .entry-byline --> </header><!-- .entry-header --> <div class="entry-content"> <p>Over the course of 2023, the Open Library team conducted design research and video-interviewed nine volunteers to determine how learners and educators make use of the OpenLibrary.org platform, what challenges get in their way, and how we can help them succeed. Participants of the study included a mix of students, teachers, and researchers from around the globe, spanning a variety of disciplines.</p> <h2 class="wp-block-heading">About the Participants</h2> <p>At the earliest stages of this research, a screener survey involving 466 participants helped us understand the wide range of patrons who use the Open Library. Excluding 141 responses that didn&#8217;t match the criteria of this research, the remaining 325 respondents identified as:</p> <ul> <li>126 high school, university, or graduate students</li> <li>64 self learners</li> <li>44 researchers</li> <li>41 K-12 teachers</li> <li>29 professors</li> <li>12 parents of K-12 students</li> <li>9 librarians</li> </ul> <p>Participants reported affiliations with institutions spanning a diverse variety of geographies, including: Colombia, Romania, France, Uganda, Indonesia, China, India, Botswana, Nigeria, and Ireland.</p> <h2 class="wp-block-heading">Findings</h2> <figure class="wp-block-image is-style-default"><img decoding="async" src="https://lh7-us.googleusercontent.com/docsz/AD_4nXfbXBVZZEOo8BoYQ_9E_4AvvZDkFa36CN-QlzZpgHitDPYymofJ1vEFREZhj5ne0n35aycNZ-SpB89AxCp9U4qb39z0ZsUe68yKIwSEz1kn7pz5uwZU6S9IoyDsDm3NV3EZA_NQ9c0DbNaES_GBM-3_BVfY?key=TzrR-z9FrvGgZcD2E-Kpsw" alt="" /><figcaption class="wp-element-caption">A screenshot of the Findings section of the collaborative Mural canvas, filled with digital sticky notes </figcaption></figure> <p>Here are the top 7 learnings we discovered from this research:</p> <ol> <li><strong>The fact that the Open Library is free and accessible online is paramount to patrons&#8217; success. </strong>During interviews, several participants told us that the Open Library helps them <strong>locate hard to find books</strong> they have difficulty finding elsewhere. At least two participants didn’t have access to a nearby library or a book vendor that could provide the book they needed. In a recent <a href="https://blog.archive.org/2024/06/14/patrons-speak-out-the-impact-of-losing-access-to-more-than-500000-books/">Internet Archive blog post</a>, several patrons corroborated these challenges. In addition to finding materials, one or more of our participants are affected by disabilities or have worked with such persons who have <strong>limited mobility</strong>, difficulty commuting, and benefit from online access. Research use cases also drove the necessity for online access: At least two interviewed participants used texts primarily as references to cite or verify certain passages. The ability to quickly search for and <strong>access specific, relevant passages</strong> online was essential to helping them to succeed at their research objective, which may have otherwise been prohibitively expensive or technologically intractable.&nbsp;</li> <li><strong>Participants voiced the importance of internationalization and having books in multiple languages. </strong>Nearly every participant we interviewed advocated for the website and books to be made available in more languages. One participant had to manually translate sections of English books into Arabic for their students. Another participant who studied classic literature manually translated editions so they could be compared. A teach who we interviewed relayed to us that it was common for their ESL (English as a Second Language) students to ask for help translating books from English into their primary language.</li> <li><strong>The interests of learners and educators who use the Open Library vary greatly. </strong>We expected to find themes in the types of books learners and educators are searching for. However, the foci of participants we interviewed spanned a variety of topics, from Buddhism, to roller coaster history, therapy, technical books, language learning materials, and classic literature. Nearly none of our candidates were looking for the same thing and most had different goals and learning objectives. One need they all have in common is <strong>searching for books</strong>.</li> <li><strong>The Open Library has many educational applications we hadn’t intended. </strong>One or more participant reported they had used the read aloud feature in their classroom to help students with phonics and language learning. While useful, participants also suggested the feature sometimes glitches and robotic sounding voices are a turnoff. We also learned several educators and researchers link to Open Library when creating course syllabi for their students.</li> <li><strong>Many of Open Library subject and collection pages weren’t sufficient for one or more of our learners and educators use cases. </strong>At least two interviewees ended up compiling their own collections using their own personal web pages and linking back to the Open Library. One participant tried to use Open Library to search for K-12, age-appropriate books pertaining to the &#8220;<a href="https://openlibrary.org/subjects/constitution_day_(u.s.)">US Constitution Day</a>&#8221; and was grateful for but underwhelmed by the results.</li> <li><strong>The Open Library service &amp; its features are difficult to discover</strong>. <ul> <li>Several interviewees were unaware of Open Library’s full-text search, read aloud, or note-taking capabilities, yet expressed interest in these features.</li> <li>Many respondents of the screener survey believed their affiliated institutions were unaware of the Open Library platform.</li> </ul> </li> <li><strong>Open Library’s community is generous, active, and eager to participate in research</strong> to help us improve. Overall, 450+ individuals from 100+ institutions participated in this process. Previously, more than 2k individuals helped us learn <a href="https://blog.openlibrary.org/2023/09/14/how-do-patrons-prefer-to-read/">how our patrons prefer to read</a> and more than <a href="https://blog.openlibrary.org/2022/09/29/a-summer-of-design/">750 participants helped us redesign our book pages</a>.</li> </ol> <p>Some of our learnings we had already predicted and seeing these predictions confirmed by data has also given us conviction in pursuing next steps. Some learnings were genuinely surprising to us, such as many teachers preferring the online web-based book reader because it doesn’t require them to install any extra software on school computers.</p> <h2 class="wp-block-heading">Proposals</h2> <p>After reviewing this list of findings and challenges, we&#8217;ve identified 10 areas where the Open Library may be improved for learners and educators around the globe:</p> <ol> <li><strong>Continuing to make more books available online </strong>by expanding our <a href="https://openlibrary.org/trusted-book-providers"><strong>Trusted Book Providers</strong></a> program and adding <a href="https://guide.pressbooks.com/chapter/what-is-a-webbook/#:~:text=By%20comparison%2C%20a%20webbook%20stays,traditional%20formats%20can't%20do.">Web Books</a> to the catalog.</li> <li><strong>Participating in outreach to promote platform discovery &amp; adoption.</strong> Connect with institutions and educators to surface opportunities for partnership, integration, and to establish clear patterns for using Open Library within learning environments.</li> <li><strong>Adding onboarding flow after registration to promote feature discovery</strong>. Conduct followup surveys to learn more about patrons, their challenges, and their needs. Add an onboarding experience which helps newly registered patrons become familiar with new services.</li> <li><strong>Making books available in more languages</strong> by prototyping the capability to translate currently open pages within bookreader to any language, on-the-fly.</li> <li><strong>Creating better subject and collection page experiences</strong> by<strong> </strong>giving librarians tools to create custom collection pages and tag and organize books in bulk.</li> <li><strong>Improving Read Aloud</strong> by using AI to generate more natural/human voices, make the feature more discoverable in the bookreader interface, and fix read aloud navigation so it works more predictably.</li> <li><strong>Allowing educators to easily convert their syllabi to lists on Open Library </strong>using a Bulk Search &amp; List creator feature.</li> <li><strong>Moving to a smarter, simpler omni-search experience </strong>that doesn&#8217;t require patrons to switch modes in order to get the search results they want.</li> <li><strong>Importing missing metadata and improving incomplete records</strong> by giving more librarians better tools for adding importers and identifying records with missing fields.</li> <li><strong>Improving the performance and speed of the service</strong> so it works better for more patrons in more areas.</li> </ol> <h2 class="wp-block-heading">About the Process</h2> <p>The Open Library team was fortunate to benefit from the guidance and leadership of Abbey Ripstra, a Human-Centered Design Researcher who formerly led Design Research efforts at the Wikimedia organization. This research effort wouldn&#8217;t have been achievable without her help and we&#8217;re grateful.</p> <p>In preparation for our research, Abbey helped us outline a design process using an online collaboration and presentation tool called <a href="http://mural.co">Mural</a>.</p> <p><img decoding="async" loading="lazy" width="624" height="336" src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcLqdq1r_5van1f7BmlJ-rbzeC8bAYHPQfEvgyo4nihC5iNhyawiXPjMKZ37ugKHqYZugHwNGTp4VhDk-T2HWTh3ZUZ4TxVquuN6zs6fnSd6OAjkIcVpuI5oSBaRDwc7Z2hxy-ZVb6ub8YCdHE9Q3lnhT9l?key=TzrR-z9FrvGgZcD2E-Kpsw"></p> <p>During the planning process, we clarified five questions:</p> <ol> <li>What are the objectives of our research?</li> <li>How will we reach and identify the right people to speak with?</li> <li>What questions will we ask interview participants?</li> <li>How will we collate results across participants and synthesize useful output?</li> <li>How can we make participants feel comfortable and appreciated?</li> </ol> <p>To answer these questions, we:</p> <ul> <li>Developed a <a href="https://forms.gle/noDQykZLxe6AUcDj7">Screener Survey</a> survey which we rendered to patrons who were logged in to OpenLibrary.org. In total, 466 patrons from all over the world completed the survey, from which we identified 9 promising candidates to interview. Candidates were selected in such a way as to maximize the diversity of academic topics, coverage of geographies, and roles within academia. <a href="https://web.archive.org/web/20230911030846/https://openlibrary.org/"><img decoding="async" loading="lazy" width="624" height="47" src="https://lh7-us.googleusercontent.com/docsz/AD_4nXdEqwYcsIBKTq5MJH-rGbKgl70vaKxvI-cHgJ6HbARXhwramvF64nGpGQ6ZiDzforMwLbX8gqjWf--6Zh_FNWQLDgzOolRthbG9Deu8ysoMTvNX_OPMRv86IAYOQDgroLAk7s7g_xfS-J6LvBi7cIhBCPJG?key=TzrR-z9FrvGgZcD2E-Kpsw"></a></li> <li>We followed up with each candidate over email to confirm their interest in participating, suggesting meeting times, and then sent amenable participants our <a href="https://docs.google.com/document/d/1l-oy0xd3j1oHTcRjAtI-9u4MOhTxo4YEsCmXbdY-BOI/edit">Welcome Letter</a> and details of our <a href="https://docs.google.com/document/u/1/d/1lp3dpYUC7OcWXrW8EVatwZ5t3NB4wSKc117aytZ9kvs/edit">Consent Process</a>.</li> <li>We coordinated interview times, delegated interview and note taking responsibilities, and kept track of the state of each candidate in the process using an <strong>Operations Tracker</strong> we built using Google Sheets:<img decoding="async" loading="lazy" width="624" height="292" src="https://lh7-us.googleusercontent.com/docsz/AD_4nXeKZeW-ynCiVIM-elOF5HYItPEKH6DB03sEPn3WyG8OuS9hlgBCuZvAiJ6-_k7BofE8iBAKR1U2naKErVLdrtZ6bhIx14ojFtHzXUnFgWOAcqUDFoYcxvPxmVm0D-cP3Q0sFNkNX3efe9989rsBJ_fURwka?key=TzrR-z9FrvGgZcD2E-Kpsw"></li> <li>During each interview, the elected interviewer followed our <a href="https://docs.google.com/document/d/1cs1Twj0BgaCIJx5--hh4f5K_-bIiYpAx3FxfNiAIh1s/edit?usp=sharing">Interviewer&#8217;s Guide</a> while the note taker took notes. At the end of each interview, we tidied up our notes and debriefed by adding the most salient notes to a shared mural board.<img decoding="async" loading="lazy" width="624" height="144" src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcKb0RT13jgq5S3wShdiTiFYmvH3soGCghcM-1Q-jvrHwvaZ1GSv6CYjAkbZzWgsRCt5j6Th1yzQuOjcBjdv8-jh33WbczOb6MtFBpK4RxJwHbLlgpXEvP2Hw3IbmP92RYE-EqXaZUEcx0-qediQsipfXzm?key=TzrR-z9FrvGgZcD2E-Kpsw"></li> <li>When the interviewing stage had concluded, we sent thank you notes and small thank you gifts to participants. Our design team then convened to cluster insights across interviews and surface noteworthy learnings.</li> </ul> </div><!-- .entry-content --> <footer class="entry-meta"> Posted in <a href="https://blog.openlibrary.org/category/interfacedesign/" rel="category tag">Interface/Design</a>, <a href="https://blog.openlibrary.org/category/research/" rel="category tag">Research</a> | <span class="comments-link"><span></span></span> </footer><!-- .entry-meta --> </article><!-- #post --> <article id="post-2335" class="post-2335 post type-post status-publish format-standard has-post-thumbnail hentry category-community"> <header class="entry-header"> <img width="624" height="572" src="https://blog.openlibrary.org/files/2024/05/Screenshot-2024-05-20-at-8.58.13-AM-624x572.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://blog.openlibrary.org/files/2024/05/Screenshot-2024-05-20-at-8.58.13-AM-624x572.png 624w, https://blog.openlibrary.org/files/2024/05/Screenshot-2024-05-20-at-8.58.13-AM-300x275.png 300w, https://blog.openlibrary.org/files/2024/05/Screenshot-2024-05-20-at-8.58.13-AM-500x458.png 500w, https://blog.openlibrary.org/files/2024/05/Screenshot-2024-05-20-at-8.58.13-AM-768x704.png 768w, https://blog.openlibrary.org/files/2024/05/Screenshot-2024-05-20-at-8.58.13-AM.png 1440w" sizes="(max-width: 624px) 100vw, 624px" /> <h1 class="entry-title"> <a href="https://blog.openlibrary.org/2024/05/20/the-new-open-library-team-page/" rel="bookmark">The new Open Library Team Page</a> </h1> <div class="entry-byline"> Posted on <a href="https://blog.openlibrary.org/2024/05/20/the-new-open-library-team-page/" title="4:39 pm" rel="bookmark"><time class="entry-date" datetime="2024-05-20T16:39:42+00:00">May 20, 2024</time></a><span class="by-author"> by <span class="author vcard"><a class="url fn n" href="https://blog.openlibrary.org/author/mekarpeles/" title="View all posts by mek" rel="author">mek</a></span></span> </div><!-- .entry-byline --> </header><!-- .entry-header --> <div class="entry-content"> <p>By Nick Norman, Elizabeth Mays, &amp; Mek</p> <p><strong>More than just a &#8216;thank you&#8217;, </strong><a href="https://openlibrary.org/about/team"><strong>Open Library’s new Team Page</strong></a><strong> shines a spotlight, beyond staff, at the invaluable efforts of leads, fellows, and contributors – spanning engineering, design, librarianship, and communications – who make openlibrary.org possible.</strong></p> <p>The Open Library website is an open source effort, powered by an extensive network of volunteer contributors from across the globe. Some contributors swim by to nibble on a specific issue or check out our weekly community calls. Other contributors plant roots and collaborate with staff, as appointed Fellows, to make progress on involved projects that may entail weeks or months of thoughtful preparation. A select few contributors become intimately familiar with our systems, choose to mentor others in the community, and volunteer to manage and lead specific, discrete parts of the project, like our design system, our javascript practices, or internationalization. </p> <p>In the past, the website had a <a href="https://web.archive.org/web/20200729205101/https://openlibrary.org/about/people">stale list of contributors</a> and we didn’t have an established framework for spotlighting the generous humans behind Open Library and keeping this list up to date. With the skillful touch of fellows from our design team—Debbie San, Jaye Lasseigne—and mentorship from Scott Barnes on staff, we now have a beautiful, filterable, and maintainable way of showcasing the achievements of Open Library’s diverse community of contributors: <a href="https://openlibrary.org/about/team">https://openlibrary.org/about/team</a></p> <p>We had an opportunity to interview Debbie San, who is responsible for the new Team Page design, to learn more about the design process for this project, and Jaye Lasseigne, who led the new page’s implementation.</p> <h2 class="wp-block-heading">An Interview with the Designer &amp; Developer</h2> <p><strong>Speaking with Debbie about the Team Page&#8217;s Design Process:</strong></p> <p><strong>Q.) What led to the decision to create a new team page?&nbsp;</strong></p> <p><strong>A.) Debbie’s Insight: </strong>I have always believed that it is crucial to recognize individuals for their work. Open Library has many unique and talented individuals, volunteers and staff alike. Our team page is an opportunity to recognize them.</p> <p><strong>Q.) What was the inspiration behind the team page design?</strong></p> <p><strong>A.) Debbie&#8217;s Response: </strong>There were many different websites used as inspirations. We looked at team pages from universities, smaller and bigger projects, and anything else that could help the vision of redesigning our team page.</p> <p><strong>Q.) How do you incorporate collective input and diverse perspectives into the design process?</strong></p> <p><strong>A.) Debbie’s Advice:</strong> Design is a creative process, but it doesn&#8217;t mean it’s a solo process. I believe in the power of collective input and collaboration. Even when I wasn&#8217;t 100% sold on the feedback, I valued the diverse perspectives that shaped our collective vision. In the realm of design, embracing a variety of viewpoints is important when it comes to refining and enhancing the end result.</p> <p><strong>Q.) How do you approach the iterative process in design, particularly when creating different mock-ups?</strong></p> <p><strong>A.) Debbie’s Thoughts: </strong>Even though the implementation may seem simple, challenges may appear, and it is up to everyone, designers and developers alike, to dialogue, to grow together and to find the best solutions.&nbsp;</p> <p>I am super thankful to have worked with Jaye and Scott here and how hard they worked to bring this design to life. Now we have a team page that celebrates all staff and contributors who empower Open Library.</p> <p><strong>Speaking with Jaye about the Team Page&#8217;s Technical Implementation:</strong></p> <p><strong>Q.) Can you share some insights into how your team worked together to bring this page to life?&nbsp;</strong></p> <p><strong>A.) Jaye’s Thoughts: </strong>Debbie and I worked really well together! I got Debbie’s Figma designs and immediately started working to put it in code. I also received help from Scott Barnes and Mek (Program Lead) to hook up my CSS file, and Jim Champ showed me how to hook up a Javascript file. I remember checking in with Debbie a few times to get feedback on how the design looked on the browser.</p> <p><strong>Q.) Can you elaborate on challenges you encountered and how you overcame them during the coding process?</strong></p> <p><strong>A.) Jaye’s Response:</strong> Most of my personal challenges came from my limited knowledge of the codebase and where files were located. To help me understand the codebase, I watched some of the videos in the &#8216;Getting Started&#8217; guide on the Open Library GitHub.</p> <p>After that, I found I still had questions so I reached out to Mek for help on the CSS. He was able to show me where the CSS files are located, and from there, I was able to figure out how to hook my CSS up to my HTML page. When I got to the Javascript portion, I reached out to Jim Champ who explained the flow of the Javascript files and where everything needed to go for it to work.</p> <p><strong>Q.) What advice would you give to other organizations who are looking to create a team page?</strong></p> <p><strong>A.) Jaye’s Advice: </strong>“Do lots of research on other team pages you may find online. Find examples you like – you don’t need to reinvent the wheel.”</p> <h2 class="wp-block-heading">Just in Time for Growth</h2> <p>Debbie and Jaye’s hard work comes at an important time, given the recent growth of Open Library&#8217;s community of contributors.</p> <figure class="wp-block-image size-large is-style-default"><img decoding="async" src="https://lh7-us.googleusercontent.com/E8f447Tg8qerWkNw2cSZroeLEYultpEKLkFtJjLZKUOFyBfNs_6bL1H3ewaXRn2p2LI9qGR8-qiZHHchdsurDVP4r-kjGsWBPHsomGpay11TVaAIRiRW3EGZi1SMoL2D5m8DrLt0SneY2cDYG5ovlZU" alt="A Snapshot of Open Library contributors representing 15+ Nations" /></figure> <p>In 2023, the Open Library project registered interest from 443 volunteer applicants, while cultivating a community of over 1,000 members on Slack. The project also benefited from 2,500 survey respondents, 20+ active developers, and 5 fellows across our 4 programs: Design, Communications, Engineering, and Librarianship. We celebrated the achievements of our community members during our <a href="https://archive.org/embed/openlibrary-tour-2020/openlibrary-community-celebration-2023.mp4"><strong>2023 Open Library Community Celebration</strong></a>.</p> <h2 class="wp-block-heading">Join In or Follow Along</h2> <p>Whether you&#8217;re a patron, a community contributor, or someone discovering Open Library for the first time, we invite you to explore our new <a href="https://openlibrary.org/about/team"><strong>Team Page</strong></a> to meet some of the people who power Open Library.&nbsp; Or, you can follow us on <a href="https://twitter.com/openlibrary"><strong>Twitter</strong></a> for our latest updates. If you&#8217;re inspired by our mission and want to contribute, let us know at <a href="http://www.openlibrary.org/volunteer"><strong>openlibrary.org/volunteer</strong></a>.</p> </div><!-- .entry-content --> <footer class="entry-meta"> Posted in <a href="https://blog.openlibrary.org/category/community/" rel="category tag">Community</a> | <span class="comments-link"><span></span></span> </footer><!-- .entry-meta --> </article><!-- #post --> <nav id="nav-below" class="navigation"> <h3 class="assistive-text">Post navigation</h3> <div class="nav-previous"><a href="https://blog.openlibrary.org/author/mekarpeles/page/2/" ><span class="meta-nav">&larr;</span> Older posts</a></div> <div class="nav-next"></div> </nav><!-- .navigation --> </div><!-- #content --> </section><!-- #primary --> <div id="secondary" class="widget-area" role="complementary"> <aside id="text-4" class="widget widget_text"> <div class="textwidget"><img src="http://blog.openlibrary.org/files/2016/02/Open-Library-Logo-1.jpg" alt="open library logo"></div> </aside><aside id="block-4" class="widget widget_block widget_recent_entries"><ul class="wp-block-latest-posts__list wp-block-latest-posts"><li><a class="wp-block-latest-posts__post-title" href="https://blog.openlibrary.org/2024/10/03/improving-search-removing-dead-ends/">Improving Search, Removing Dead-Ends</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://blog.openlibrary.org/2024/07/30/improving-open-librarys-translation-pipeline/">Improving Open Library’s Translation Pipeline</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://blog.openlibrary.org/2024/07/05/follow-each-other-on-open-library/">Follow each other on Open Library</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://blog.openlibrary.org/2024/06/17/let-readers-read/">Let Readers Read</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://blog.openlibrary.org/2024/06/16/listening-to-learners-and-educators/">Listening to Learners and Educators</a></li> </ul></aside><aside id="block-6" class="widget widget_block"> <figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper"> <a class="twitter-timeline" data-width="625" data-height="938" data-dnt="true" href="https://twitter.com/openlibrary?ref_src=twsrc%5Etfw">Tweets by openlibrary</a><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> </div></figure> </aside><aside id="block-7" class="widget widget_block widget_calendar"><div class="wp-block-calendar"><table id="wp-calendar" class="wp-calendar-table"> <caption>December 2024</caption> <thead> <tr> <th scope="col" title="Monday">M</th> <th scope="col" title="Tuesday">T</th> <th scope="col" title="Wednesday">W</th> <th scope="col" title="Thursday">T</th> <th scope="col" title="Friday">F</th> <th scope="col" title="Saturday">S</th> <th scope="col" title="Sunday">S</th> </tr> </thead> <tbody> <tr> <td colspan="6" class="pad">&nbsp;</td><td id="today">1</td> </tr> <tr> <td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td> </tr> <tr> <td>9</td><td>10</td><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td> </tr> <tr> <td>16</td><td>17</td><td>18</td><td>19</td><td>20</td><td>21</td><td>22</td> </tr> <tr> <td>23</td><td>24</td><td>25</td><td>26</td><td>27</td><td>28</td><td>29</td> </tr> <tr> <td>30</td><td>31</td> <td class="pad" colspan="5">&nbsp;</td> </tr> </tbody> </table><nav aria-label="Previous and next months" class="wp-calendar-nav"> <span class="wp-calendar-nav-prev"><a href="https://blog.openlibrary.org/2024/10/">&laquo; Oct</a></span> <span class="pad">&nbsp;</span> <span class="wp-calendar-nav-next">&nbsp;</span> </nav></div></aside><aside id="text-4" class="widget widget_text"> <div class="textwidget"><img src="http://blog.openlibrary.org/files/2016/02/Open-Library-Logo-1.jpg" alt="open library logo"></div> </aside> </div><!-- #secondary --> </div><!-- #main .wrapper --> <footer id="colophon" role="contentinfo"> <div class="site-info"> <a href="https://wordpress.org/" class="imprint" title="Semantic Personal Publishing Platform"> Proudly powered by WordPress </a> </div><!-- .site-info --> </footer><!-- #colophon --> </div><!-- #page --> <style id='wp-block-paragraph-inline-css' type='text/css'> .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}p.has-background{padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit} </style> <style id='wp-block-image-inline-css' type='text/css'> .wp-block-image img{height:auto;max-width:100%;vertical-align:bottom}.wp-block-image img,.wp-block-image.has-custom-border img{box-sizing:border-box}.wp-block-image.aligncenter{text-align:center}.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 figcaption{margin-bottom:1em;margin-top:.5em}.wp-block-image .is-style-rounded img,.wp-block-image.is-style-circle-mask img,.wp-block-image.is-style-rounded 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}}.wp-block-image :where(.has-border-color){border-style:solid}.wp-block-image :where([style*=border-top-color]){border-top-style:solid}.wp-block-image :where([style*=border-right-color]){border-right-style:solid}.wp-block-image :where([style*=border-bottom-color]){border-bottom-style:solid}.wp-block-image :where([style*=border-left-color]){border-left-style:solid}.wp-block-image :where([style*=border-width]){border-style:solid}.wp-block-image :where([style*=border-top-width]){border-top-style:solid}.wp-block-image :where([style*=border-right-width]){border-right-style:solid}.wp-block-image :where([style*=border-bottom-width]){border-bottom-style:solid}.wp-block-image :where([style*=border-left-width]){border-left-style:solid}.wp-block-image figure{margin:0} .wp-block-image figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-image figcaption{color:hsla(0,0%,100%,.65)}.wp-block-image{margin:0 0 1em} </style> <style id='wp-block-columns-inline-css' type='text/css'> .wp-block-columns{align-items:normal!important;box-sizing:border-box;display:flex;flex-wrap:wrap!important;margin-bottom:1.75em}@media (min-width:782px){.wp-block-columns{flex-wrap:nowrap!important}}.wp-block-columns.are-vertically-aligned-top{align-items:flex-start}.wp-block-columns.are-vertically-aligned-center{align-items:center}.wp-block-columns.are-vertically-aligned-bottom{align-items:flex-end}@media (max-width:781px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:100%!important}}@media (min-width:782px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{flex-grow:0}}.wp-block-columns.is-not-stacked-on-mobile{flex-wrap:nowrap!important}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{flex-grow:0}:where(.wp-block-columns.has-background){padding:1.25em 2.375em}.wp-block-column{flex-grow:1;min-width:0;overflow-wrap:break-word;word-break:break-word}.wp-block-column.is-vertically-aligned-top{align-self:flex-start}.wp-block-column.is-vertically-aligned-center{align-self:center}.wp-block-column.is-vertically-aligned-bottom{align-self:flex-end}.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{width:100%} :where(.wp-block-columns.is-layout-flex){gap: 2em;} </style> <style id='wp-block-group-inline-css' type='text/css'> .wp-block-group{box-sizing:border-box} :where(.wp-block-group.has-background){padding:1.25em 2.375em} </style> <style id='wp-block-quote-inline-css' type='text/css'> .wp-block-quote{box-sizing:border-box;overflow-wrap:break-word}.wp-block-quote.is-large:where(:not(.is-style-plain)),.wp-block-quote.is-style-large:where(:not(.is-style-plain)){margin-bottom:1em;padding:0 1em}.wp-block-quote.is-large:where(:not(.is-style-plain)) p,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) p{font-size:1.5em;font-style:italic;line-height:1.6}.wp-block-quote.is-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-large:where(:not(.is-style-plain)) footer,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) footer{font-size:1.125em;text-align:right} .wp-block-quote{border-left:.25em solid;margin:0 0 1.75em;padding-left:1em}.wp-block-quote cite,.wp-block-quote footer{color:currentColor;font-size:.8125em;font-style:normal;position:relative}.wp-block-quote.has-text-align-right{border-left:none;border-right:.25em solid;padding-left:0;padding-right:1em}.wp-block-quote.has-text-align-center{border:none;padding-left:0}.wp-block-quote.is-large,.wp-block-quote.is-style-large,.wp-block-quote.is-style-plain{border:none} </style> <style id='wp-block-heading-inline-css' type='text/css'> h1.has-background,h2.has-background,h3.has-background,h4.has-background,h5.has-background,h6.has-background{padding:1.25em 2.375em} </style> <style id='wp-block-list-inline-css' type='text/css'> ol,ul{box-sizing:border-box}ol.has-background,ul.has-background{padding:1.25em 2.375em} </style> <style id='wp-block-latest-posts-inline-css' type='text/css'> .wp-block-latest-posts{box-sizing:border-box}.wp-block-latest-posts.alignleft{margin-right:2em}.wp-block-latest-posts.alignright{margin-left:2em}.wp-block-latest-posts.wp-block-latest-posts__list{list-style:none;padding-left:0}.wp-block-latest-posts.wp-block-latest-posts__list li{clear:both}.wp-block-latest-posts.is-grid{display:flex;flex-wrap:wrap;padding:0}.wp-block-latest-posts.is-grid li{margin:0 1.25em 1.25em 0;width:100%}@media (min-width:600px){.wp-block-latest-posts.columns-2 li{width:calc(50% - .625em)}.wp-block-latest-posts.columns-2 li:nth-child(2n){margin-right:0}.wp-block-latest-posts.columns-3 li{width:calc(33.33333% - .83333em)}.wp-block-latest-posts.columns-3 li:nth-child(3n){margin-right:0}.wp-block-latest-posts.columns-4 li{width:calc(25% - .9375em)}.wp-block-latest-posts.columns-4 li:nth-child(4n){margin-right:0}.wp-block-latest-posts.columns-5 li{width:calc(20% - 1em)}.wp-block-latest-posts.columns-5 li:nth-child(5n){margin-right:0}.wp-block-latest-posts.columns-6 li{width:calc(16.66667% - 1.04167em)}.wp-block-latest-posts.columns-6 li:nth-child(6n){margin-right:0}}.wp-block-latest-posts__post-author,.wp-block-latest-posts__post-date{display:block;font-size:.8125em}.wp-block-latest-posts__post-excerpt{margin-bottom:1em;margin-top:.5em}.wp-block-latest-posts__featured-image a{display:inline-block}.wp-block-latest-posts__featured-image img{height:auto;max-width:100%;width:auto}.wp-block-latest-posts__featured-image.alignleft{float:left;margin-right:1em}.wp-block-latest-posts__featured-image.alignright{float:right;margin-left:1em}.wp-block-latest-posts__featured-image.aligncenter{margin-bottom:1em;text-align:center} </style> <style id='wp-block-embed-inline-css' type='text/css'> .wp-block-embed.alignleft,.wp-block-embed.alignright,.wp-block[data-align=left]>[data-type="core/embed"],.wp-block[data-align=right]>[data-type="core/embed"]{max-width:360px;width:100%}.wp-block-embed.alignleft .wp-block-embed__wrapper,.wp-block-embed.alignright .wp-block-embed__wrapper,.wp-block[data-align=left]>[data-type="core/embed"] .wp-block-embed__wrapper,.wp-block[data-align=right]>[data-type="core/embed"] .wp-block-embed__wrapper{min-width:280px}.wp-block-cover .wp-block-embed{min-height:240px;min-width:320px}.wp-block-embed{overflow-wrap:break-word}.wp-block-embed figcaption{margin-bottom:1em;margin-top:.5em}.wp-block-embed iframe{max-width:100%}.wp-block-embed__wrapper{position:relative}.wp-embed-responsive .wp-has-aspect-ratio .wp-block-embed__wrapper:before{content:"";display:block;padding-top:50%}.wp-embed-responsive .wp-has-aspect-ratio iframe{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.wp-embed-responsive .wp-embed-aspect-21-9 .wp-block-embed__wrapper:before{padding-top:42.85%}.wp-embed-responsive .wp-embed-aspect-18-9 .wp-block-embed__wrapper:before{padding-top:50%}.wp-embed-responsive .wp-embed-aspect-16-9 .wp-block-embed__wrapper:before{padding-top:56.25%}.wp-embed-responsive .wp-embed-aspect-4-3 .wp-block-embed__wrapper:before{padding-top:75%}.wp-embed-responsive .wp-embed-aspect-1-1 .wp-block-embed__wrapper:before{padding-top:100%}.wp-embed-responsive .wp-embed-aspect-9-16 .wp-block-embed__wrapper:before{padding-top:177.77%}.wp-embed-responsive .wp-embed-aspect-1-2 .wp-block-embed__wrapper:before{padding-top:200%} .wp-block-embed figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-embed figcaption{color:hsla(0,0%,100%,.65)}.wp-block-embed{margin:0 0 1em} </style> <style id='wp-block-calendar-inline-css' type='text/css'> .wp-block-calendar{text-align:center}.wp-block-calendar td,.wp-block-calendar th{border:1px solid;padding:.25em}.wp-block-calendar th{font-weight:400}.wp-block-calendar caption{background-color:inherit}.wp-block-calendar table{border-collapse:collapse;width:100%}.wp-block-calendar table:where(:not(.has-text-color)){color:#40464d}.wp-block-calendar table:where(:not(.has-text-color)) td,.wp-block-calendar table:where(:not(.has-text-color)) th{border-color:#ddd}.wp-block-calendar table.has-background th{background-color:inherit}.wp-block-calendar table.has-text-color th{color:inherit}:where(.wp-block-calendar table:not(.has-background) th){background:#ddd} </style> <style id='global-styles-inline-css' type='text/css'> body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #fff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--blue: #21759b;--wp--preset--color--dark-gray: #444;--wp--preset--color--medium-gray: #9f9f9f;--wp--preset--color--light-gray: #e6e6e6;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 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,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 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--duotone--dark-grayscale: url('#wp-duotone-dark-grayscale');--wp--preset--duotone--grayscale: url('#wp-duotone-grayscale');--wp--preset--duotone--purple-yellow: url('#wp-duotone-purple-yellow');--wp--preset--duotone--blue-red: url('#wp-duotone-blue-red');--wp--preset--duotone--midnight: url('#wp-duotone-midnight');--wp--preset--duotone--magenta-yellow: url('#wp-duotone-magenta-yellow');--wp--preset--duotone--purple-green: url('#wp-duotone-purple-green');--wp--preset--duotone--blue-orange: url('#wp-duotone-blue-orange');--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--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 rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}.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-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-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-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;}.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;} </style> <style id='core-block-supports-inline-css' type='text/css'> .wp-container-3.wp-container-3,.wp-container-6.wp-container-6{flex-wrap:nowrap;} </style> <script type='text/javascript' id='qi-blocks-main-js-extra'> /* <![CDATA[ */ var qiBlocks = {"vars":{"arrowLeftIcon":"<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 34.2 32.3\" xml:space=\"preserve\" style=\"stroke-width: 2;\"><line x1=\"0.5\" y1=\"16\" x2=\"33.5\" y2=\"16\"\/><line x1=\"0.3\" y1=\"16.5\" x2=\"16.2\" y2=\"0.7\"\/><line x1=\"0\" y1=\"15.4\" x2=\"16.2\" y2=\"31.6\"\/><\/svg>","arrowRightIcon":"<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 34.2 32.3\" xml:space=\"preserve\" style=\"stroke-width: 2;\"><line x1=\"0\" y1=\"16\" x2=\"33\" y2=\"16\"\/><line x1=\"17.3\" y1=\"0.7\" x2=\"33.2\" y2=\"16.5\"\/><line x1=\"17.3\" y1=\"31.6\" x2=\"33.5\" y2=\"15.4\"\/><\/svg>","closeIcon":"<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 9.1 9.1\" xml:space=\"preserve\"><g><path d=\"M8.5,0L9,0.6L5.1,4.5L9,8.5L8.5,9L4.5,5.1L0.6,9L0,8.5L4,4.5L0,0.6L0.6,0L4.5,4L8.5,0z\"\/><\/g><\/svg>","viewCartText":"View Cart"}}; /* ]]> */ </script> <script type='text/javascript' src='https://blog.openlibrary.org/wp-content/plugins/qi-blocks/assets/dist/main.js?ver=1.3.3' id='qi-blocks-main-js'></script> <script type='text/javascript' src='https://blog.openlibrary.org/wp-content/themes/twentytwelve/js/navigation.js?ver=20141205' id='twentytwelve-navigation-js'></script> </body> </html> <!-- Dynamic page generated in 0.176 seconds. --> <!-- Cached page generated by WP-Super-Cache on 2024-12-01 20:32:35 --> <!-- Compression = gzip -->

Pages: 1 2 3 4 5 6 7 8 9 10