XML checker results

The document appears to be well-formed. The canonical XML follows:
<html xmlns="http://www.w3.org/1999/xhtml">&#10;&#10;<head><meta charset="utf-8"></meta><link href="default.css" rel="stylesheet" type="text/css"></link><title>Planet Intertwingly</title><meta content="noindex,nofollow" name="robots"></meta><meta content="Venus" name="generator"></meta><link href="http://planet.intertwingly.net/atom.xml" rel="alternate" title="Planet Intertwingly" type="application/atom+xml"></link><link href="/favicon.ico" rel="shortcut icon"></link><script defer="defer" src="personalize.js"></script><link href="http://planet.intertwingly.net/opensearchdescription.xml" rel="search" title="Planet Intertwingly search" type="application/opensearchdescription+xml"></link></head>&#10;&#10;<body>&#10;<h1>Planet Intertwingly</h1>&#10;&#10;<div id="body">&#10;&#10;<h2><time datetime="2019-08-25">August 25, 2019</time></h2>&#10;&#10;<div class="news tantek-çelik" xml:lang="en-US">&#10;<h3><a href="https://tantek.com/" title="Tantek Çelik">Tantek Çelik</a></h3>&#10;<div class="content"><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_t5hX-SyNHEn67U6yB0ZZYimDZvkOqWoWZa42odp0_7o.jpg"><img alt="Tantek taking a selfie at the top of Cardiac hill, southern view behind him of clear blue skies above tree tops partially hidden by the thick clouds and fog below." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_t5hX-SyNHEn67U6yB0ZZYimDZvkOqWoWZa42odp0_7o.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_bK6_DIZ6GhwPwNofJDuHiDm2bKzMwkcOQ9R0cfcNXP4.jpg"><img alt="Fox trail under a thick fog, with quail and a bunny up ahead on the dirt trail with bushes on both sides." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_bK6_DIZ6GhwPwNofJDuHiDm2bKzMwkcOQ9R0cfcNXP4.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_1-ogORQ8CVLy8FWIoWPPctva5SAbwHcMhM2LV8vniyw.jpg"><img alt="Curious bunny sitting in straw next to bushes on the side of Coastal Fire road on the downhill to Muir Beach." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_1-ogORQ8CVLy8FWIoWPPctva5SAbwHcMhM2LV8vniyw.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_gHIbvl_5rWfAgIIuSqrWA9ey9gvhJL1YXsSYpTp-Jq0.jpg"><img alt="Heather cut-off switch backs partially occluded by fog, lush trees in the foreground on the side of the hill." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_gHIbvl_5rWfAgIIuSqrWA9ey9gvhJL1YXsSYpTp-Jq0.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_2TxWXIZmUOZZPVrM7TkevHqmHT1rVpRuY3AAv0lRtnk.jpg"><img alt="Coastal view trail in a lush misty forest with most of the trees leaning to the right with the wind." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_2TxWXIZmUOZZPVrM7TkevHqmHT1rVpRuY3AAv0lRtnk.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_cFtaiwH-u5lp-SbsT5WWw8Ph-qGsVVM6n7w3n7gnd_o.jpg"><img alt="Moss covered trees trunks above ferns, diffuse lighting from the forest canopy." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_cFtaiwH-u5lp-SbsT5WWw8Ph-qGsVVM6n7w3n7gnd_o.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_ECbP1tmHtoi4EM8GPInD-Vci7C4C6NoPnMpEO3KMqQ4.jpg"><img alt="View from Cardiac hill, fairly barren in the foreground, a telephone pole rising up with a slight tilt, trees in the distance barely poking through the thick cloud cover." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_ECbP1tmHtoi4EM8GPInD-Vci7C4C6NoPnMpEO3KMqQ4.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_S2t_0CaiUzeuuFcouo3xN4G1OSpQevd4gS4w6zYjvgA.jpg"><img alt="Looking down on Pirates Cove beach and across the Pacific Ocean, diffuse white light from the clouds, with a sign in the foreground indicating 350 feet to the cove, with various symbols." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_S2t_0CaiUzeuuFcouo3xN4G1OSpQevd4gS4w6zYjvgA.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_G44UJ_khJap3sw8lcraTpUkVKhKGox5wnTsb0K-FQsk.jpg"><img alt="Tennessee Valley as seen from Coastal Fire road descent: green hills, Tennessee Valley trail winding them past a lagoon to the beach between two cloud covered hilltops." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_G44UJ_khJap3sw8lcraTpUkVKhKGox5wnTsb0K-FQsk.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_5EeTxzuko4XNsL0lrfwfTPokPMJwnehxx6U17Szo0f4.jpg"><img alt="Miwok cut-off view of green hills down to Tennessee Valley shrouded in fog." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_5EeTxzuko4XNsL0lrfwfTPokPMJwnehxx6U17Szo0f4.jpg"></img></a>☁️⛰⛅️ 20+ miles &amp; 4k' of low quiet fog, quail(2) &amp; bunnies(3), lush green hills(4) &amp; forests(5,6), and finally sunshine above the clouds at Cardiac hill(1,7) before running back(8,9) to where I started and up/down another hill(10).<br class="auto-break"></br><br class="auto-break"></br>Being prepared brought more confidence than last week. Started later than planned, yet before #<span class="p-category auto-tag">SFRC</span>. Took my own route up Fox trail(2), down Coastal Fire road (stopping only for a curious bunny(3)), thru the Redwood creek woods, across Santos meadow, and up the Heather cut-off switchbacks(4).<br class="auto-break"></br><br class="auto-break"></br>Made good time up Coastal view to the patch of misty forest where most of the trees have grown leaning with the wind(5). Moss covered trees rising from a floor of ferns(6), only a few hundred meters of forest canopy in the middle of an otherwise exposed trail. Still, such relaxing #<span class="p-category auto-tag">greentime</span> before finally emerging into the sunshine.<br class="auto-break"></br><br class="auto-break"></br>The climb to Cardiac felt faster and smoother than usual. As a runner I’ve become grateful for fog and overcast skies, yet it was still nice to get some sun at my goal peak where I could look back on the clouds I had climbed through(7). After a brief snack break and saying hi to the volunteers at the Headlands50k aid station, I decided to chase the racers back down the way I came, all the way to Pirates Cove(8).<br class="auto-break"></br><br class="auto-break"></br>Pirates Cove also felt faster, and less scary this time around. Kept encouraging the racers as they passed me on the climb, and chased them down the Coastal Fire road, stopping to snap a greener than usual Tennessee Valley for this time of year(9).<br class="auto-break"></br><br class="auto-break"></br>Returned to Tennessee Valley parking lot at almost 18, hiked/jogged up Miwok trail to more foggy valley views(10), and scampered back down to round out my long trail run. Finally got my 20. ✅<br class="auto-break"></br><br class="auto-break"></br>#<span class="p-category auto-tag">run</span> #<span class="p-category auto-tag">runner</span> #<span class="p-category auto-tag">Marin</span> #<span class="p-category auto-tag">MarinHeadlands</span> #<span class="p-category auto-tag">trail</span> #<span class="p-category auto-tag">trailrun</span> #<span class="p-category auto-tag">50ktraining</span> #<span class="p-category auto-tag">ultratraining</span> #<span class="p-category auto-tag">optoutside</span> #<span class="p-category auto-tag">getoutside</span> #<span class="p-category auto-tag">fog</span> #<span class="p-category auto-tag">KarlTheFog</span> #<span class="p-category auto-tag">befierce</span> #<span class="p-category auto-tag">pushyourself</span> #<span class="p-category auto-tag">facethemountain</span> #<span class="p-category auto-tag">fitstrongfierce</span> #<span class="p-category auto-tag">2019_236</span> #<span class="p-category auto-tag">20190824</span> #<span class="p-category auto-tag">Saturday</span> #<span class="p-category auto-tag">latergram</span> #<span class="p-category auto-tag">nofilter</span><br class="auto-break"></br><br class="auto-break"></br>Last Saturday: <a class="auto-link" href="http://tantek.com/2019/231/t1/unexpected-weather-trail-run">http://tantek.com/2019/231/t1/unexpected-weather-trail-run</a></div>&#10;<div class="permalink"><a href="https://tantek.com/2019/237/t1/fog-forests-sunshine-cardiac-hill">by Tantek at <time datetime="2019-08-25T15:42:00Z" title="GMT">August 25, 2019 03:42 PM</time></a></div></div>&#10;&#10;<h2><time datetime="2019-08-23">August 23, 2019</time></h2>&#10;&#10;<div class="news bruce-schneier">&#10;<h3><a href="https://www.schneier.com/blog/" title="Schneier on Security">Bruce Schneier</a>—<a href="https://www.schneier.com/blog/archives/2019/08/friday_squid_bl_694.html">Friday Squid Blogging: Vulnerabilities in Squid Server</a></h3>&#10;<div class="content" xml:lang="en-us"><p>It's always nice when I can <a href="https://www.bleepingcomputer.com/news/security/unpatched-squid-servers-exposed-to-dos-code-execution-attacks/">combine squid and security</a>:</p>&#10;&#10;<blockquote><p>Multiple versions of the Squid web proxy cache server built with Basic Authentication features are currently vulnerable to code execution and denial-of-service (DoS) attacks triggered by the exploitation of a heap buffer overflow security flaw.&#10;&#10;</p><p>The vulnerability present in Squid 4.0.23 through 4.7 is <a href="http://www.squid-cache.org/Advisories/SQUID-2019_5.txt">caused</a> by incorrect buffer management which renders vulnerable installations to &quot;a heap overflow and possible remote code execution attack when processing HTTP Authentication credentials.&quot;</p>&#10;&#10;<p>&quot;When checking Basic Authentication with HttpHeader::getAuth, Squid uses a global buffer to store the decoded data,&quot; <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-12527">says</a> MITRE's description of the vulnerability. &quot;Squid does not check that the decoded length isn't greater than the buffer, leading to a heap-based buffer overflow with user controlled data.&quot;</p>&#10;&#10;<p>The flaw was patched by the web proxy's development team with the release of Squid 4.8 on July 9.</p></blockquote>&#10;&#10;<p>As usual, you can also use this squid post to talk about the security stories in the news that I haven't covered.</p>&#10;&#10;<p>Read my blog posting guidelines <a href="https://www.schneier.com/blog/archives/2017/03/commenting_poli.html">here</a>.</p></div>&#10;<div class="permalink"><a href="https://www.schneier.com/blog/archives/2019/08/friday_squid_bl_694.html">by Bruce Schneier at <time datetime="2019-08-23T23:19:51Z" title="GMT">August 23, 2019 11:19 PM</time></a></div></div>&#10;&#10;<div class="news openid" xml:lang="en-US">&#10;<h3><a href="https://openid.net" title="OpenID">OpenID</a>—<a href="https://openid.net/2019/08/23/implementers-draft-of-fapi-client-initiated-backchannel-authentication-ciba-profile-approved/">Implementer’s Draft of FAPI Client Initiated Backchannel Authentication (CIBA) Profile Approved</a></h3>&#10;<div class="content"><p>The OpenID Foundation membership has approved the following specification as an OpenID Implementer’s Draft:</p>&#10;<ul>&#10;<li><a href="https://openid.net/specs/openid-financial-api-ciba-wd-02.html">Financial-grade API: Client Initiated Backchannel Authentication Profile</a></li>&#10;</ul>&#10;<p>An Implementer’s Draft is a stable version of a specification providing intellectual property protections to implementers of the specification. This is the first Implementer’s Draft of this specification. This specification is a product of the <a href="https://openid.net/wg/fapi/">OpenID FAPI Working group</a>.</p>&#10;<p>The Implementer’s Draft is available at:</p>&#10;<ul>&#10;<li><a href="https://openid.net/specs/openid-financial-api-ciba-ID1.html">https://openid.net/specs/openid-financial-api-ciba-ID1.html</a></li>&#10;</ul>&#10;<p>The voting results were:</p>&#10;<ul>&#10;<li>Approve – 52 votes</li>&#10;<li>Object – 1 vote</li>&#10;<li>Abstain – 3 votes</li>&#10;</ul>&#10;<p>Total votes: 56 (out of 249 members = 22% &gt; 20% quorum requirement)</p>&#10;<p>— Michael B. Jones – OpenID Foundation Board Secretary</p></div>&#10;<div class="permalink"><a href="https://openid.net/2019/08/23/implementers-draft-of-fapi-client-initiated-backchannel-authentication-ciba-profile-approved/">by Mike Jones at <time datetime="2019-08-23T22:48:36Z" title="GMT">August 23, 2019 10:48 PM</time></a></div></div>&#10;&#10;<div class="news w3c-qa" xml:lang="en-US">&#10;<h3><a href="https://www.w3.org/blog" title="W3C Blog">W3C QA</a>—<a href="https://www.w3.org/blog/2019/08/updated-captcha-note-published/">Updated CAPTCHA Note Published</a></h3>&#10;<div class="content"><p>Today the <a href="https://www.w3.org/WAI/APA/">Accessible Platform Architectures (APA) Working Group</a>, with the assistance of its <a href="https://www.w3.org/WAI/APA/task-forces/research-questions/">Research Questions Task Force (RQTF)</a>, has published “Inaccessibility of CAPTCHA,” as a Working Group Note:</p>&#10;<p><a href="https://www.w3.org/TR/turingtest/">https://www.w3.org/TR/turingtest/</a></p>&#10;<p>First published in 2005, today’s 2.0 publication extensively updates the earlier version to bring our analysis and recommendations up to date with CAPTCHA practice today.</p>&#10;<p>CAPTCHA technologies covered in today’s publication include:</p>&#10;<ul>&#10;<li>Traditional visual and audio CAPTCHA, including CAPTCHA games and logic puzzles as practiced today,</li>&#10;<li>reCAPTCHA v2 and v3,</li>&#10;<li>Blinded verification tokens,</li>&#10;<li>Honeypots,</li>&#10;<li>Biometrics,</li>&#10;<li>Proof of Work,</li>&#10;<li>Heuristics, PKI certificates, and much more.</li>&#10;</ul>&#10;<p>Today’s publication is the culmination of almost two years of extensive research, discussion, writing, and editing by RQTF. The document is extensively documented with references to research publications and numerous on line resources. Comments received in response to three separate wide public review draft publications aided our work immensely.</p>&#10;<p>We thank the community for your invaluable input over the past two years. Your comments have helped us improve our analysis of the state of the art in telling human users apart from their robotic impersonators. Your comments have significantly aided our work on this updated Note. We truly could not have done this without your help.</p>&#10;<p>While today’s publication closes our current work on the topic of the inaccessibility of CAPTCHA, future updates are certainly likely. Therefore we continue to welcome comments and suggestions.</p>&#10;<p>To comment, please <a href="https://github.com/w3c/apa/issues/new">file an issue in the W3C apa GitHub repository</a>. If this is not feasible, please send email to public-apa@w3.org (<a href="http://lists.w3.org/Archives/Public/public-apa/">comment archive</a>).</p>&#10;<p>Janina Sajka, Chair&#10;Accessible Platform Architectures (APA) Working Group</p></div>&#10;<div class="permalink"><a href="https://www.w3.org/blog/2019/08/updated-captcha-note-published/">by Janina Sajka at <time datetime="2019-08-23T18:55:50Z" title="GMT">August 23, 2019 06:55 PM</time></a></div></div>&#10;&#10;<div class="news google" xml:lang="en-us">&#10;<h3><a href="https://www.blog.google/" title="The Official Google Blog">Google</a>—<a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/JqXnDIJiyEs/">Pixel 3a helped me see my vacation through a new Lens</a></h3>&#10;<div class="content">How products like the Pixel 3a and Lens helped transform a vacation to Oaxaca, Mexico.</div>&#10;<div class="permalink"><a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/JqXnDIJiyEs/">by Google at <time datetime="2019-08-23T16:00:00Z" title="GMT">August 23, 2019 04:00 PM</time></a></div></div>&#10;&#10;<div class="news google" xml:lang="en-us">&#10;<h3><a href="https://www.blog.google/" title="The Official Google Blog">Google</a>—<a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/5dL46Phnnfk/">Accelerating Europe’s clean energy transition</a></h3>&#10;<div class="content"><div class="block-paragraph"><div class="rich-text"><p>Europe has long been a leader in renewable energy. Last year, policymakers passed an ambitious set of reforms to take things to the next level, setting a new goal of meeting 32 percent of Europe’s energy needs from renewables by 2030. Google fully supports this ambitious target, and is committed to helping the continent reach its energy and climate goals. One way we can do so is to share successful strategies that we have used to purchase renewable energy for our own operations in Europe. </p><p>The European Commission has published a new <a href="https://publications.europa.eu/en/publication-detail/-/publication/5ab1ada3-c48c-11e9-9d01-01aa75ed71a1/language-en?WT.mc_id=Searchresult&amp;WT.ria_c=37085&amp;WT.ria_f=3608&amp;WT.ria_ev=search">case study</a> on Google’s renewable energy purchasing. It describes the motivations, principles and methods behind our purchasing in Europe, where we have signed 14 power purchase agreements (PPAs) to purchase electricity from 900 megawatts of wind and solar projects, enabling €1.2 billion in investment across the continent.</p><p>As the largest corporate purchaser of renewable energy in the world and the second largest in Europe, we believe corporate PPAs can play a significant role in helping Europe reach its clean energy goals. As the study shows, renewables not only are an important part of solving for climate change, but also make business sense. In an increasing number of geographic areas, renewable energy is the cheapest form of energy available. Competitive and stable renewable energy prices allow us to reduce our costs and hedge against price increases in the future, which helps us plan the growth of our business.</p><p>The case study also provides policy recommendations to encourage more corporate renewable energy purchasing. They include revising policies to drive down the cost of renewables, ensuring that corporate renewable energy buyers receive certification (known as “Guarantees of Origin”) for the electricity that they procure and encouraging cross-border PPAs so that competitive renewable electricity produced in one country can be easily purchased in another.  </p><p>Google’s work with the European Commission builds on our broader commitment to helping all companies secure a clear and easy path to purchase renewable energy. Last year, we helped launch the <a href="http://resource-platform.eu/">RE-Source Platform</a>, a broad coalition of companies and NGOs working to accelerate corporate purchasing of renewables in Europe. </p><p>This year is an important one for renewables in Europe, as member state governments create <a href="https://ec.europa.eu/energy/en/topics/energy-strategy-and-energy-union/governance-energy-union/national-energy-climate-plans">national plans</a> to accelerate their energy transition over the next decade. We’re grateful for the opportunity to work alongside the European Commission to help expand corporate renewable energy sourcing. We hope this case study can help policymakers recognize the important contribution of corporate PPAs to their climate and energy goals, and encourage more companies to explore how cost-effective renewable energy can meet their business needs.</p></div></div><img alt="" height="1" src="http://feeds.feedburner.com/~r/blogspot/MKuf/~4/5dL46Phnnfk" width="1"></img></div>&#10;<div class="permalink"><a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/5dL46Phnnfk/">by Google at <time datetime="2019-08-23T13:00:00Z" title="GMT">August 23, 2019 01:00 PM</time></a></div></div>&#10;&#10;<div class="news apache-software-foundation">&#10;<h3><a href="https://blogs.apache.org/foundation/" title="The Apache Software Foundation Blog">Apache Software Foundation</a>—<a href="https://blogs.apache.org/foundation/entry/the-apache-news-round-up136">The Apache News Round-up: week ending 23 August 2019</a></h3>&#10;<div class="content"><p>Greetings all. It's time to review the Apache community's activities from the past week:</p> &#10; <p>ASF Board – management and oversight of the business affairs of the corporation in accordance with the Foundation's bylaws.<br></br>- Next Board Meeting: 18 September 2019. Board calendar and minutes <a href="http://apache.org/foundation/board/calendar.html">http://apache.org/foundation/board/calendar.html</a><br></br></p> &#10; <p>ApacheCon™ – the ASF's official global conference series, bringing Tomorrow's Technology Today since 1998<br></br> - Countdown to ApacheCon North America and Europe -- we look forward to seeing you in Las Vegas and Berlin -- REGISTER TODAY! <a href="https://www.apachecon.com/">https://www.apachecon.com/</a><br></br> - <span class="css-901oao css-16my406 r-1qd0xha r-ad9z0x r-bcqeeo r-qvutc0">Catch the latest on</span><span class="r-18u37iz"> </span><span class="r-18u37iz">ApacheCon™,  Q&amp;A With Community Track Leader, Sharan Foga, ASF’S VP of Apache Community Development exclusively on </span><a class="css-4rbku5 css-18t94o4 css-901oao css-16my406 r-1n1174f r-1loqt21 r-1qd0xha r-ad9z0x r-bcqeeo r-1ny4l3l r-1ddef8g r-qvutc0" dir="ltr" href="https://feathercast.apache.org/" rel=" noopener noreferrer" target="_blank" title="https://feathercast.apache.org/">https://feathercast.apache.org/</a></p> &#10; <p>ASF Infrastructure – our distributed team on three continents keeps the ASF's infrastructure running around the clock.<br></br> - 7M+ weekly checks yield uptime at 99.96%. Performance checks across 50 different service components spread over more than 250 machines in data centers around the world. <a href="http://www.apache.org/uptime/">http://www.apache.org/uptime/</a></p> &#10; <p>Apache Code Snapshot – this week, 882 Apache contributors changed 1,664,749 lines of code over 3,669 commits. Top 5 contributors, in order, are: Shad Storhaug, Tilman Hausherr, Claus Ibsen, <span><span>Liang Zhang, </span></span>and Andrea Cosentino. <span><span><br></br></span></span></p> &#10; <p>Apache Project Announcements – the latest updates by category.</p> &#10; <p>Content --<br></br> - Apache Jackrabbit Oak 1.10.4 released <a href="http://jackrabbit.apache.org"> http://jackrabbit.apache.org </a><br></br> - Apache UIMA Java SDK 3.1.0 released <a href="http://uima.apache.org/" target="_blank">http://uima.apache.org</a></p> &#10; <p>Databases --<br></br> - Apache HBase 2.0.6 released <a href="https://hbase.apache.org/downloads.html" target="_blank">http://hbase.apache.org</a><br></br> - Apache Impala 3.3.0 released <a href="http://impala.apache.org">http://impala.apache.org/</a> <br></br></p> &#10; <p>Libraries --<br></br> - Apache Qpid Proton 0.29.0 released <a href="http://qpid.apache.org">http://qpid.apache.org</a> <br></br><br></br>Templating --<br></br> - Apache FreeMarker 2.3.29 released <a href="http://freemarker.apache.org">http://freemarker.apache.org</a> <br></br></p> &#10; <p>Servers --<br></br> - Apache Tomcat 8.5.45 and 9.0.24 released <a href="http://tomcat.apache.org">http://tomcat.apache.org</a><br></br> - Apache Traffic Server 8.0.5 and 7.1.8 released <a href="http://trafficserver.apache.org">http://trafficserver.apache.org</a><br></br></p> &#10; <p><strong><br></br>Did You Know?</strong></p> &#10; <p> -  Did you know that ASF codebase is conservatively valued at least $20B, using the COCOMO 2 model? <a href="https://s.apache.org/w7bw1">https://s.apache.org/w7bw1</a></p> &#10; <p> - Did you know that workshops at ApacheCon North America will include Apache Beam, Apache OpenWhisk, Apache Spark and Scala, as well as the Apache-licensed Ballerina programming language? Join us! <a href="https://www.apachecon.com/acna19/">https://www.apachecon.com/acna19/</a></p> &#10; <p> - Did you know that &quot;Trillions and Trillions Served&quot;, the documentary on The Apache Software Foundation, will resume filming at ApacheCon Las Vegas and Berlin <a href="https://youtu.be/UvuyBz1qMCE">https://youtu.be/UvuyBz1qMCE</a> ? Support this project <a href="https://s.apache.org/trillions">https://s.apache.org/trillions</a></p> &#10; <p> </p> &#10; <p><strong><br></br>Apache Community Notices:</strong></p> &#10; <p> - Celebrating 20 Years Community-led Development &quot;The Apache Way&quot; <a href="https://s.apache.org/ASF20thAnniversary">https://s.apache.org/ASF20thAnniversary</a></p> &#10; <p> - ASF Founders look back on 20 Years of the ASF <a href="https://blogs.apache.org/foundation/entry/our-founders-look-back-on">https://blogs.apache.org/foundation/entry/our-founders-look-back-on</a></p> &#10; <p> - The Apache Way to Sustainable Open Source Success <a href="https://s.apache.org/GhnI">https://s.apache.org/GhnI</a></p> &#10; <p> - Foundation Reports and Statements <a href="http://www.apache.org/foundation/reports.html">http://www.apache.org/foundation/reports.html</a></p> &#10; <p> - ApacheCon: Tomorrow's Technology Today since 1998 <a href="http://s.apache.org/ApacheCon">http://s.apache.org/ApacheCon</a></p> &#10; <p> - ASF Annual Report for FY2019 <a href="https://s.apache.org/FY2019AnnualReport">https://s.apache.org/FY2019AnnualReport</a></p> &#10; <p> - The Apache Software Foundation 2018 Vision Statement <a href="https://s.apache.org/zqC3">https://s.apache.org/zqC3</a></p> &#10; <p> - Foundation Statement –Apache Is Open. <a href="https://s.apache.org/PIRA">https://s.apache.org/PIRA</a></p> &#10; <div> &#10; <p> - &quot;Success at Apache&quot; focuses on the processes behind why the ASF &quot;just works&quot;. <a href="https://blogs.apache.org/foundation/category/SuccessAtApache">https://blogs.apache.org/foundation/category/SuccessAtApache</a></p> &#10; </div> &#10; <div> &#10; <p> - Please follow/like/re-tweet the ASF on social media:  @TheASF on Twitter (<a href="https://twitter.com/TheASF">https://twitter.com/TheASF</a>) and on LinkedIn at <a href="https://www.linkedin.com/company/the-apache-software-foundation">https://www.linkedin.com/company/the-apache-software-foundation</a></p> &#10; <p> - Do friend and follow us on the Apache Community Facebook page <a href="https://www.facebook.com/ApacheSoftwareFoundation/">https://www.facebook.com/ApacheSoftwareFoundation/</a>and Twitter account <a href="https://twitter.com/ApacheCommunity">https://twitter.com/ApacheCommunity</a></p> &#10; </div> &#10; <div> </div> &#10; <div> &#10; <p> - The list of Apache project-related MeetUps can be found at <a href="http://events.apache.org/event/meetups.html">http://events.apache.org/event/meetups.html</a></p> &#10; </div> &#10; <div> &#10; <p> - Registration is open for ApacheCon North America 9-12 September 2019 <a href="http://apachecon.com/">http://apachecon.com/</a></p> &#10; <p> - Spark + AI Summit 2019 will be held 15-17 October in Amsterdam <a href="https://databricks.com/sparkaisummit/">https://databricks.com/sparkaisummit/</a></p> &#10; <p> - Registration open for ApacheCon Europe 22-24 October 2019 <a href="http://apachecon.com/">http://apachecon.com/</a></p> &#10; <p> - Find out how you can participate with Apache &#10;community/projects/activities --opportunities open with Apache Camel, &#10;Apache HTTP Server, and more! <a href="https://helpwanted.apache.org/">https://helpwanted.apache.org/</a></p> &#10; </div> &#10; <div> - Are your software solutions Powered by Apache? Download &amp; use our &quot;Powered By&quot; logos <a href="http://www.apache.org/foundation/press/kit/#poweredby">http://www.apache.org/foundation/press/kit/#poweredby</a></div> &#10; <div><br></br></div> &#10; <div>= = =</div> &#10; <div><br></br></div> &#10; <div>For real-time updates, sign up for Apache-related news by sending&#10; mail to announce-subscribe@apache.org and follow @TheASF on Twitter. &#10;For a broader spectrum from the Apache community, <a href="https://twitter.com/PlanetApache">https://twitter.com/PlanetApache</a> provides an aggregate of Project activities as well as the personal blogs and tweets of select ASF Committers.</div> &#10; <p> <br></br></p> &#10; <p> <br></br></p></div>&#10;<div class="permalink"><a href="https://blogs.apache.org/foundation/entry/the-apache-news-round-up136">by Swapnil M Mane at <time datetime="2019-08-23T11:30:11Z" title="GMT">August 23, 2019 11:30 AM</time></a></div></div>&#10;&#10;<div class="news bruce-schneier">&#10;<h3><a href="https://www.schneier.com/blog/" title="Schneier on Security">Bruce Schneier</a>—<a href="https://www.schneier.com/blog/archives/2019/08/license_plate_n.html">License Plate &quot;NULL&quot;</a></h3>&#10;<div class="content" xml:lang="en-us"><p>There was a DefCon talk by someone with the vanity plate &quot;NULL.&quot; The California system <a href="https://arstechnica.com/cars/2019/08/wiseguy-changes-license-plate-to-null-gets-12k-in-parking-tickets/#p3">assigned him</a> every ticket with no license plate: $12,000.</p>&#10;&#10;<blockquote><p>Although the initial $12,000-worth of fines were removed, the private company that administers the database didn't fix the issue and new NULL tickets are still showing up.</p></blockquote>&#10;&#10;<p>The unanswered question is: now that he has a way to get parking fines removed, can he park anywhere for free?</p>&#10;&#10;<p>And this isn't the first time this sort of thing has happened. Wired has a <a href="https://www.wired.com/story/vanity-license-plates-gone-wrong-fines/">roundup</a> of people whose license places read things like &quot;NOPLATE,&quot; &quot;NO TAG,&quot; and &quot;XXXXXXX.&quot;</p></div>&#10;<div class="permalink"><a href="https://www.schneier.com/blog/archives/2019/08/license_plate_n.html">by Bruce Schneier at <time datetime="2019-08-23T11:19:21Z" title="GMT">August 23, 2019 11:19 AM</time></a></div></div>&#10;&#10;<div class="news o-reilly-radar">&#10;<h3><a href="https://www.oreilly.com" title="All - O'Reilly Media">O’Reilly Radar</a>—<a href="http://feedproxy.google.com/~r/oreilly/radar/atom/~3/HGXGRsUh_Bc/four-short-links-23-august-2019">Four short links: 23 August 2019</a></h3>&#10;<div class="content"><p><em>Open Source Economics, Program Synthesis, YouTube Influence, and ChatBot Papers</em></p><ol>&#10;&#9;<li>&#10;<a href="https://www.youtube.com/watch?v=MO8hZlgK5zc">The Economics of Open Source</a> (CJ Silverio) -- I'm going to tell you a story about who owns the Javascript language commons, how we got into the situation that the language commons is *by* someone, and why we need to change it.&#10;</li>&#10;&#9;<li>&#10;<a href="https://synthetic-minds.com/pages/conference/2019/#program">State of the Art in Program Synthesis</a> -- conference, with talks to be posted afterwards, run by a YC startup. Program Synthesis is one of the most exciting fields in software today, in my humble opinion: Programs that write programs are the happiest programs in the world, in the words of Andrew Hume. It'll give coders superpowers, or make us redundant, but either way it's interesting.</li>&#10;&#9;<li>&#10;<a href="https://datasociety.net/wp-content/uploads/2018/09/DS_Alternative_Influence.pdf">Alternative Influence</a> (Data and Society) -- amazing report. Extremely well-written, it lays out how the alt right uses YouTube. These strategies reveal a tension underlying the content produced by these influencers: while they present themselves as news sources, their content strategies often more accurately consist of marketing and advertising approaches. These approaches are meant to provoke feelings, memories, emotions, and social ties. In this way, the “accuracy” of their messaging can be difficult to assess through traditional journalistic tactics like fact-checking. Specifically, they recount ideological testimonials that frame ideology in terms of personal growth and self-betterment. They engage in self-branding techniques that present traditional, white, male-dominated values as desirable and aspirational. They employ search engine optimization (SEO) to highly rank their content against politically charged keywords. And they strategically use controversy to gain attention and frame political ideas as fun entertainment.&#10;</li>&#10;&#9;<li>&#10;<a href="https://github.com/ricsinaruto/Seq2seqChatbots/wiki/Chatbot-and-Related-Research-Paper-Notes-with-Images">Chatbot and Related Research Paper Notes with Images</a> -- Papers related to chatbot models in chronological order spanning about five years from 2014. Some papers are not about chatbots, but I included them because they are interesting, and they may provide insights into creating new and different conversation models. For each paper I provided a link, the names of the authors, and GitHub implementations of the paper (noting the deep learning framework) if I happened to find any. Since I tried to make these notes as concise as possible they are in no way summarizing the papers but are merely a starting point to get a hang of what the paper is about, and to mention main concepts with the help of pictures.&#10;</li>&#10;</ol><p>Continue reading <a href="https://www.oreilly.com/ideas/four-short-links-23-august-2019">Four short links: 23 August 2019.</a></p><img alt="" height="1" src="http://feeds.feedburner.com/~r/oreilly/radar/atom/~4/HGXGRsUh_Bc" width="1"></img></div>&#10;<div class="permalink"><a href="http://feedproxy.google.com/~r/oreilly/radar/atom/~3/HGXGRsUh_Bc/four-short-links-23-august-2019">by Nat Torkington at <time datetime="2019-08-23T08:00:00Z" title="GMT">August 23, 2019 08:00 AM</time></a></div></div>&#10;&#10;<div class="news tim-bray" xml:lang="en-us">&#10;<h3><img class="icon" src="http://www.tbray.org/favicon.ico"></img><a href="https://www.tbray.org/ongoing/" title="ongoing by Tim Bray">Tim Bray</a>—<a href="https://www.tbray.org/ongoing/When/201x/2019/08/21/Portraits-of-Puppets">Portraits of Puppets</a></h3>&#10;<div class="content"><p>If you happened to check out my Twitter feed on the weekend, you’ll know that&#10;<a href="https://twitter.com/timbray/status/1162868781607092224">I attended a pair of dueling rallies</a> outside a train station in&#10;central Vancouver. On one side, a crowd in black supporting the Hong Kong protests; on the other a red-clad flag-festooned squad&#10;bringing Beijing’s message. I was dressed in black and took pictures of the other side.</p>&#10;<img alt="Pro-Beijing demonstrators in expensive cars" src="https://www.tbray.org/ongoing/When/201x/2019/08/21/IMG_20190817_162421.png"></img>&#10;<h2 id="p-1">The issue</h2>&#10;<p>It’s a no-brainer. Hong Kong isn’t perfect but it’s a <em>civilization</em>, with laws and with access to the world. China is a big&#10;hulking cut-off-from-the-world prison for the mind, built on systemic brutality and corruption. I admire the Hong Kongers’ courage and fear&#10;for their future. I can’t protect them from the PRC but at least I can show where I stand, and who knows, it might even make a&#10;difference if enough other people do too and the Beijing bastards decide that crushing HK might be bad for business.</p>&#10;<h2 id="p-2">People in red</h2>&#10;<p>I didn’t take pictures of the pro-HK side because you can bet the other side wouldn’t hesitate to use such things against them.&#10;It was probably superfluous since the Beijingers were loaded with cameras.</p>&#10;<img alt="Pro-Beijing demonstrators" src="https://www.tbray.org/ongoing/When/201x/2019/08/21/XT301506.png"></img>&#10;<p>Now you’ve seen all the signs they had. It was all very uniform and organized on the Beijing side, everyone was waving the same&#10;thing. On the HK side there was an explosion of hand-lettered signs among a scattering of HK and Canadian flags. In the picture&#10;above, I particularly liked the worried-looking dude looking left through glasses, and got a nice picture of him when the sun came&#10;out.</p>&#10;<img alt="Pro-Beijing demonstrator" src="https://www.tbray.org/ongoing/When/201x/2019/08/21/XT301521.png"></img>&#10;<p>He didn’t seem to be having much fun, but that’s probably a little misleading because there were definitely people on that side&#10;who were into it.</p>&#10;<img alt="Pro-Beijing demonstrator" src="https://www.tbray.org/ongoing/When/201x/2019/08/21/XT301511.png"></img>&#10;<img alt="Pro-Beijing demonstrator" src="https://www.tbray.org/ongoing/When/201x/2019/08/21/XT301514.png"></img>&#10;<img alt="Pro-Beijing demonstrator" src="https://www.tbray.org/ongoing/When/201x/2019/08/21/XT301519.png"></img>&#10;<p>These two dudes were definitely full of that old school spirit, mind you one of them had his little camera rolling non-stop.</p>&#10;<p>And you have to ask who these people were? I suspect they fell into three baskets. First, committed pro-Party people, maybe from&#10;the Consulate, maybe with less official standing, genuinely on the tyrants’ side<span class="dashes"> —</span> the rewards are good.&#10;Second, Chinese folk here in Vancouver who’ve stayed inside the Party-line bubble, there are&#10;<a href="https://www.newyorker.com/culture/culture-desk/the-post-truth-publication-where-chinese-students-in-america-get-their-news">media&#10;offerings</a> to help.&#10;Third, people who don’t like the Party or (more likely) don’t like politics, who’ve had effortless-but-irresistable family or&#10;professional pressure applied.</p>&#10;<p>Let’s just call them all puppets, because that’s how the people pulling the strings think about them. Here’s the puppeteers’&#10;infrastructure:</p>&#10;<img alt="Pro-Beijing demonstrators" src="https://www.tbray.org/ongoing/When/201x/2019/08/21/XT301534.png"></img>&#10;<p>Through the crowd, you can see the table where puppets can get their placards and posters and flags. I’d just love to know who&#10;organized that table and paid for the printing.</p>&#10;<h2 id="p-3">The shouting contest</h2>&#10;<p>That’s what the demonstrations turned out to be. The size of the red and black crowds was roughly &#10;equal<span class="dashes"> —</span> maybe a <em>few</em> more on the black side?<span class="dashes"> —</span> and the police did a&#10;good job of keeping space between them; it helped that nobody I saw apparently wanted to start a fight.</p>&#10;<p>Disclosure: I thought how satisfying a sudden charge across the open space at the puppets would have been, but&#10;fortunately I’m grown-up enough to keep my fantasy life where it belongs.</p>&#10;<p>In terms of faces and if you ignored the colors, a lot of the people on either side could have been transplanted to the other without&#10;anyone noticing. But the black side was a little older and more grizzled and a whole lot more spontaneous and cracked better jokes&#10;and the signs were better and by the way were on the side of freedom.</p>&#10;<h2 id="p-4">Coda, with hot cars</h2>&#10;<p>I was kind of in the middle of the black demo and noticed that every few minutes, there’d be a roar of approval from the puppet&#10;side, countered by a thunder of booing from ours. By watching where people were looking, I traced the source to the road going&#10;by. What was happening was that a few bright Beijing sparks were driving their expensive sports cars round and round the block&#10;waving PRC flags.</p>&#10;<img alt="Pro-Beijing demonstrators in expensive cars" src="https://www.tbray.org/ongoing/When/201x/2019/08/21/IMG_20190817_175035.png"></img>&#10;<img alt="Pro-Beijing demonstrators in a Ferrari" src="https://www.tbray.org/ongoing/When/201x/2019/08/21/XT301525.png"></img>&#10;<div class="caption"><p>Who’s the white dude driving the Ferrari, I want to know.</p></div>&#10;<p>Which I think kind of underlines the key point. Like Orwell said, the object of power is power. A chief pleasure of power is&#10;showing it off, and driving around in Lambos and McLarens and Ferraris is a pretty satisfying way to do that. Particularly when you&#10;can soak up applause from the plebeians on your side and jeers from your enemies.</p>&#10;<h2 id="p-5">It’s pretty simple</h2>&#10;<p>The people of Hong Kong don’t want to be censored, tortured, imprisoned, and killed by those whose asshole kids are driving supercars&#10;around West Coast cities across the Pacific. I’m with them.</p></div>&#10;<div class="permalink"><a title="All content written by Tim Bray and photos by Tim Bray Copyright Tim Bray, some rights reserved, see /ongoing/misc/Copyright">©</a> <a href="https://www.tbray.org/ongoing/When/201x/2019/08/21/Portraits-of-Puppets">Tim Bray at <time datetime="2019-08-23T06:00:35Z" title="GMT">August 23, 2019 06:00 AM</time></a></div></div>&#10;&#10;<div class="news randall-munroe" xml:lang="en">&#10;<h3><a href="https://xkcd.com/" title="xkcd.com">Randall Munroe</a>—<a href="https://xkcd.com/2193/">Well-Ordering Principle</a></h3>&#10;<div class="content"><img alt="We could organize a nationwide old-photo-album search, but the real Worst McFly is probably lost to time." src="https://imgs.xkcd.com/comics/well_ordering_principle.png" title="We could organize a nationwide old-photo-album search, but the real Worst McFly is probably lost to time."></img></div>&#10;<div class="permalink"><a href="https://xkcd.com/2193/">by Randall Munroe at <time datetime="2019-08-23T00:00:00Z" title="GMT">August 23, 2019 12:00 AM</time></a></div></div>&#10;&#10;<h2><time datetime="2019-08-22">August 22, 2019</time></h2>&#10;&#10;<div class="news google" xml:lang="en-us">&#10;<h3><a href="https://www.blog.google/" title="The Official Google Blog">Google</a>—<a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/Gb7FLzpxAo4/">Maintaining the integrity of our platforms</a></h3>&#10;<div class="content">An update on our ongoing work to maintain the integrity of our platforms, including some additional information on coordinated influence operations related to the Hong Kong protests and some actions we’ve taken to protect users in Kazakhstan.</div>&#10;<div class="permalink"><a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/Gb7FLzpxAo4/">by Google at <time datetime="2019-08-22T23:00:00Z" title="GMT">August 22, 2019 11:00 PM</time></a></div></div>&#10;&#10;<div class="news openid" xml:lang="en-US">&#10;<h3><a href="https://openid.net" title="OpenID">OpenID</a>—<a href="https://openid.net/2019/08/22/implementers-drafts-of-two-eap-specifications-approved/">Implementer’s Drafts of Two EAP Specifications Approved</a></h3>&#10;<div class="content"><p>The OpenID Foundation membership has approved the following <a href="https://openid.net/wg/eap/">Enhanced Authentication Profile (EAP)</a> specifications as OpenID Implementer’s Drafts:</p>&#10;<ul>&#10;<li>OpenID Connect Token Bound Authentication 1.0</li>&#10;<li>OpenID Connect Extended Authentication Profile (EAP) ACR Values 1.0</li>&#10;</ul>&#10;<p>An Implementer’s Draft is a stable version of a specification providing intellectual property protections to implementers of the specification. These are the first EAP Implementer’s Drafts.</p>&#10;<p>The Implementer’s Drafts are available at:</p>&#10;<ul>&#10;<li><a href="https://openid.net/specs/openid-connect-token-bound-authentication-1_0-ID1.html">https://openid.net/specs/openid-connect-token-bound-authentication-1_0-ID1.html</a></li>&#10;<li><a href="https://openid.net/specs/openid-connect-eap-acr-values-1_0-ID1.html">https://openid.net/specs/openid-connect-eap-acr-values-1_0-ID1.html</a></li>&#10;</ul>&#10;<p>The voting results were:</p>&#10;<ul>&#10;<li>Approve – 50 votes</li>&#10;<li>Object – 2 votes</li>&#10;<li>Abstain – 4 votes</li>&#10;</ul>&#10;<p>Total votes: 56 (out of 246 members = 23% &gt; 20% quorum requirement)</p>&#10;<p>— Michael B. Jones – OpenID Foundation Board Secretary</p></div>&#10;<div class="permalink"><a href="https://openid.net/2019/08/22/implementers-drafts-of-two-eap-specifications-approved/">by Mike Jones at <time datetime="2019-08-22T19:13:04Z" title="GMT">August 22, 2019 07:13 PM</time></a></div></div>&#10;&#10;<div class="news google" xml:lang="en-us">&#10;<h3><a href="https://www.blog.google/" title="The Official Google Blog">Google</a>—<a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/6Q9JEGoM_po/">The mobile challenge, and how to measure it</a></h3>&#10;<div class="content">A recent report showed that mobile conversion rates are 47 percent of the levels achieved on desktop. As more and more of your customers are using mobile devices, you need to ensure your mobile conversion rate is keeping up, and maintain your revenue.</div>&#10;<div class="permalink"><a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/6Q9JEGoM_po/">by Google at <time datetime="2019-08-22T17:00:00Z" title="GMT">August 22, 2019 05:00 PM</time></a></div></div>&#10;&#10;<div class="news o-reilly-radar">&#10;<h3><a href="https://www.oreilly.com" title="All - O'Reilly Media">O’Reilly Radar</a>—<a href="http://feedproxy.google.com/~r/oreilly/radar/atom/~3/5-Gb5WIWMDs/four-short-links-22-august-2019">Four short links: 22 August 2019</a></h3>&#10;<div class="content"><p><em>I Don't Know, Map Quirks, UI Toolkit, and Open Power Chip Architecture</em></p><ol>&#10;<li>&#10;<a href="https://www.wired.co.uk/article/obsessions-dont-know-yougov-polls-surveys">I Don't Know</a> (Wired) -- <i>Two percent of Brits don’t know whether they’ve lived in London before. Five percent don’t know whether they’ve been attacked by a seagull or not. A staggering one in 20 residents of this fine isle don’t know whether or not they pick their nose.</i> (via <a href="https://flowingdata.com/2019/08/21/dont-know-answers/">Flowing Data</a>)</li>&#10;<li>&#10;<a href="https://regexking.info/2019/08/05/haberman.html">Haberman</a> -- interesting research into one way that online maps end up with places that aren't places.</li>&#10;<li>&#10;<a href="https://github.com/palantir/blueprint">Blueprint</a> -- <i>a React-based UI toolkit for the web. It is optimized for building complex, data-dense web interfaces for desktop applications that run in modern browsers and IE11. This is not a mobile-first UI toolkit.</i>&#10;</li>&#10;<li>&#10;<a href="https://www.nextplatform.com/2019/08/20/big-blue-open-sources-power-chip-instruction-set/">IBM Open Sources Power Chip Instruction Set</a> (Next Platform) -- <i>To be precise about what IBM is doing, it is opening up the Power ISA [Instruction Set Architecture] and giving it to the OpenPower Foundation royalty free with patent rights, and that means companies can implement a chip using the Power ISA without having to pay IBM or OpenPower a dime, and they have patent rights to what they develop. Companies have to maintain compatibility with the instruction set, King explains, and there are a whole set of compatibility requirements, which we presume are precisely as stringent as Arm and are needed to maintain runtime compatibility should many Power chips be developed, as IBM hopes will happen.</i>&#10;</li>&#10;</ol>&#10;<p>Continue reading <a href="https://www.oreilly.com/ideas/four-short-links-22-august-2019">Four short links: 22 August 2019.</a></p><img alt="" height="1" src="http://feeds.feedburner.com/~r/oreilly/radar/atom/~4/5-Gb5WIWMDs" width="1"></img></div>&#10;<div class="permalink"><a href="http://feedproxy.google.com/~r/oreilly/radar/atom/~3/5-Gb5WIWMDs/four-short-links-22-august-2019">by Nat Torkington at <time datetime="2019-08-22T12:55:00Z" title="GMT">August 22, 2019 12:55 PM</time></a></div></div>&#10;&#10;<div class="news bruce-schneier">&#10;<h3><a href="https://www.schneier.com/blog/" title="Schneier on Security">Bruce Schneier</a>—<a href="https://www.schneier.com/blog/archives/2019/08/modifying_a_tes.html">Modifying a Tesla to Become a Surveillance Platform</a></h3>&#10;<div class="content" xml:lang="en-us"><p>From <a href="https://www.wired.com/story/tesla-surveillance-detection-scout/">DefCon</a>:</p>&#10;&#10;<blockquote><p>At the Defcon hacker conference today, security researcher Truman Kain debuted what he calls the Surveillance Detection Scout. The DIY computer fits into the middle console of a Tesla Model S or Model 3, plugs into its dashboard USB port, and turns the car's built-in cameras­ -- the same dash and rearview cameras providing a 360-degree view used for Tesla's Autopilot and Sentry features­ -- into a system that spots, tracks, and stores license plates and faces over time. The tool uses open source image recognition software to automatically put an alert on the Tesla's display and the user's phone if it repeatedly sees the same license plate. When the car is parked, it can track nearby faces to see which ones repeatedly appear. Kain says the intent is to offer a warning that someone might be preparing to steal the car, tamper with it, or break into the driver's nearby home. </p></blockquote></div>&#10;<div class="permalink"><a href="https://www.schneier.com/blog/archives/2019/08/modifying_a_tes.html">by Bruce Schneier at <time datetime="2019-08-22T10:21:09Z" title="GMT">August 22, 2019 10:21 AM</time></a></div></div>&#10;&#10;<div class="news john-panzer">&#10;<h3><a href="https://www.abstractioneer.org/" title="Abstractioneer by John Panzer">John Panzer</a>—<a href="https://www.abstractioneer.org/2019/08/shadowgate-lost-d-campaign.html">Shadowgate: The Lost D&amp;D Campaign</a></h3>&#10;<div class="content">Recently unearthed in a cache of my 1980s-era papers: <b>Shadowgate</b>, totally original Dungeons &amp; Dragons campaign.  Published here for the very first time.  Enjoy!<br></br><br></br><span style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;">&quot;<i><b>Situation</b>: Shadowgate is the name of an ancient fort situated in the foothills of the mountains which mark the kingdom of Quild's northern boundary.  It was constructed long ago, by the magis and artisans of the First Kingdom, to protect the land from the attacks of creatures from beyond the walls of the world.  The central part of the keep was built around a gate which the creatures used to reach the lands of men.  The keep was built to keep safe the magical wards which locked the gate.  The physical keystone of those wards was a large, multifaceted crystal.  With it in place, the shadow creatures could never break through...&quot;</i></span><span style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><a href="http://3.bp.blogspot.com/-xBlVTBK4sGU/XV3Eamjxa8I/AAAAAAACKOU/1BXmQ4cTZqUAJrGKazr-FgdcGOsjHG0YgCK4BGAYYCw/s1600/Screen%2BShot%2B2019-08-21%2Bat%2B1.08.29%2BPM.png" style="clear: left; display: inline !important; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="435" src="https://3.bp.blogspot.com/-xBlVTBK4sGU/XV3Eamjxa8I/AAAAAAACKOU/1BXmQ4cTZqUAJrGKazr-FgdcGOsjHG0YgCK4BGAYYCw/s640/Screen%2BShot%2B2019-08-21%2Bat%2B1.08.29%2BPM.png" width="640"></img></a></span><br></br>Of course, it would not be a D&amp;D adventure without a map.  The map looks like I spent a lot of time on mountains.<br></br><div><br></br></div><span style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><a href="http://3.bp.blogspot.com/-WoOzZJEzC6I/XV3D10EMKyI/AAAAAAACKNo/D8t1nP48VsopTIUagNFdZwxoIZ7SXyJZQCK4BGAYYCw/s1600/Screen%2BShot%2B2019-08-21%2Bat%2B1.04.49%2BPM.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><a href="http://3.bp.blogspot.com/-WoOzZJEzC6I/XV3D10EMKyI/AAAAAAACKNo/D8t1nP48VsopTIUagNFdZwxoIZ7SXyJZQCK4BGAYYCw/s1600/Screen%2BShot%2B2019-08-21%2Bat%2B1.04.49%2BPM.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="396" src="https://3.bp.blogspot.com/-WoOzZJEzC6I/XV3D10EMKyI/AAAAAAACKNo/D8t1nP48VsopTIUagNFdZwxoIZ7SXyJZQCK4BGAYYCw/s640/Screen%2BShot%2B2019-08-21%2Bat%2B1.04.49%2BPM.png" width="640"></img></a></span><br></br><br></br><br></br><br></br><br></br><br></br><br></br><br></br>And yes, naturally, there <b>is</b> an evil priesthood:<br></br><br></br><a href="http://1.bp.blogspot.com/-3HEF7Azu8bU/XV3EKJqNpSI/AAAAAAACKN8/OjzQxt3lcqgeUDa0elY286wveDZVfZ-hwCK4BGAYYCw/s1600/Screen%2BShot%2B2019-08-21%2Bat%2B1.06.02%2BPM.png"><img border="0" src="https://1.bp.blogspot.com/-3HEF7Azu8bU/XV3EKJqNpSI/AAAAAAACKN8/OjzQxt3lcqgeUDa0elY286wveDZVfZ-hwCK4BGAYYCw/s400/Screen%2BShot%2B2019-08-21%2Bat%2B1.06.02%2BPM.png"></img></a><br></br><br></br>Troll swords?  Boy, have we got awesome troll swords:<br></br><br></br><a href="http://2.bp.blogspot.com/-zTTBKgTKi5U/XV3EH-Gbu_I/AAAAAAACKN0/2vaDS0R8_Box5DpOwHx4xORdkqj5sumpQCK4BGAYYCw/s1600/Screen%2BShot%2B2019-08-21%2Bat%2B1.05.29%2BPM.png"><img border="0" height="176" src="https://2.bp.blogspot.com/-zTTBKgTKi5U/XV3EH-Gbu_I/AAAAAAACKN0/2vaDS0R8_Box5DpOwHx4xORdkqj5sumpQCK4BGAYYCw/s640/Screen%2BShot%2B2019-08-21%2Bat%2B1.05.29%2BPM.png" width="640"></img></a><br></br><br></br>We're gonna need an encounter table:<br></br><br></br><br></br><a href="http://3.bp.blogspot.com/-xBlVTBK4sGU/XV3Eamjxa8I/AAAAAAACKOU/1BXmQ4cTZqUAJrGKazr-FgdcGOsjHG0YgCK4BGAYYCw/s1600/Screen%2BShot%2B2019-08-21%2Bat%2B1.08.29%2BPM.png"></a><a href="http://1.bp.blogspot.com/-VPyLDYu1NJ0/XV3Em_tydQI/AAAAAAACKOg/cFgXMctBiIMk_uZTStqIVb3I9VSrsrivACK4BGAYYCw/s1600/Screen%2BShot%2B2019-08-21%2Bat%2B1.07.05%2BPM.png"><img border="0" height="121" src="https://1.bp.blogspot.com/-VPyLDYu1NJ0/XV3Em_tydQI/AAAAAAACKOg/cFgXMctBiIMk_uZTStqIVb3I9VSrsrivACK4BGAYYCw/s320/Screen%2BShot%2B2019-08-21%2Bat%2B1.07.05%2BPM.png" width="320"></img></a><br></br><br></br>And if you're lucky, it's gonna just be a pack of 5-10 feral wolves you encounter.  If you're unlucky, you might get  any of a variety of demons, or if the DM is really feeling cranky, a &quot;Greater demon&quot;:<br></br><br></br><a href="http://4.bp.blogspot.com/-xS9wtBQKPqY/XV3EwfaXDYI/AAAAAAACKOs/JjncWR9HhfcOZ_iXw_sYgynJv2MBTaoWgCK4BGAYYCw/s1600/Screen%2BShot%2B2019-08-21%2Bat%2B1.07.41%2BPM.png"><img border="0" height="273" src="https://4.bp.blogspot.com/-xS9wtBQKPqY/XV3EwfaXDYI/AAAAAAACKOs/JjncWR9HhfcOZ_iXw_sYgynJv2MBTaoWgCK4BGAYYCw/s640/Screen%2BShot%2B2019-08-21%2Bat%2B1.07.41%2BPM.png" width="640"></img></a><br></br><br></br>I almost forgot about the Shadow Beasts:<br></br><br></br><a href="http://2.bp.blogspot.com/-y_xqpSrZIA0/XV3eYpxk09I/AAAAAAACKPE/yZVETdwGLeokEXAUJSTxq0QPppeF4Le6ACK4BGAYYCw/s1600/Screen%2BShot%2B2019-08-21%2Bat%2B5.12.39%2BPM.png"><img border="0" src="https://2.bp.blogspot.com/-y_xqpSrZIA0/XV3eYpxk09I/AAAAAAACKPE/yZVETdwGLeokEXAUJSTxq0QPppeF4Le6ACK4BGAYYCw/s400/Screen%2BShot%2B2019-08-21%2Bat%2B5.12.39%2BPM.png"></img></a><br></br><br></br>And that's just to get to the town.  That's when the mystery really begins... WHO stole that keystone, and WHERE is it now?  And how can we get rid of these freaking Shadow Beasts that keep appearing?<br></br><br></br>Maybe the warrior monks of the Order of the Gate can help out.  Or <i>maybe</i> they're the ones releasing the Shadow Beasts!<br></br><br></br><a href="http://2.bp.blogspot.com/-CZOFgv58MTU/XV3eR_kXiKI/AAAAAAACKO8/ioGxUk9iiPcZVpMVQduhG1UKEigEbgeuACK4BGAYYCw/s1600/Screen%2BShot%2B2019-08-21%2Bat%2B5.12.24%2BPM.png"><img border="0" height="147" src="https://2.bp.blogspot.com/-CZOFgv58MTU/XV3eR_kXiKI/AAAAAAACKO8/ioGxUk9iiPcZVpMVQduhG1UKEigEbgeuACK4BGAYYCw/s640/Screen%2BShot%2B2019-08-21%2Bat%2B5.12.24%2BPM.png" width="640"></img></a><br></br><br></br>It turns out this adventure is actually a whodunnit.  (No spoilers, but you can read the whole thing online <a href="https://drive.google.com/file/d/1CEdfaqcf6hEFRQKp9M3WtyYIjBbBfdmk/view?usp=sharing" target="_blank">here</a>.)<br></br><br></br>(I actually have next to no memory of writing this.  It's probably one of a whole set of things I wrote when I was 11 or 12 but this is the only one that survived.  I don't think I ever ran a campaign using it.)<br></br><br></br><img alt="" height="1" src="http://feeds.feedburner.com/~r/aol/SzHO/~4/Nwui4wtEpZo" width="1"></img></div>&#10;<div class="permalink"><a href="http://creativecommons.org/licenses/by-nc/2.0/" rel="license">©</a> <a href="https://www.abstractioneer.org/2019/08/shadowgate-lost-d-campaign.html">John Panzer at <time datetime="2019-08-22T00:27:18Z" title="GMT">August 22, 2019 12:27 AM</time></a></div></div>&#10;&#10;<h2><time datetime="2019-08-21">August 21, 2019</time></h2>&#10;&#10;<div class="news nelson-minar">&#10;<h3><img class="icon" src="http://www.somebits.com/favicon.ico"></img><a href="http://www.somebits.com/weblog" title="Nelson's Weblog">Nelson Minar</a>—<a href="http://www.somebits.com/weblog/politics/white-supremacist-indoctrination-from-my-grandmother.html">My White Supremacist Indoctrination</a></h3>&#10;<div class="content" xml:lang="en"><p>I fear a lot of white people in America don’t understand the&#10;pervasiveness of our culture of white supremacy. Growing up I was&#10;indoctrinated in racism and white supremacy and it’s taken many&#10;years to understand how those hateful ideas have invaded my mind and&#10;try to influence every aspect of my thinking. I think most white&#10;Americans are similarly indoctrinated and don’t recognize it. As we&#10;face a violent flareup of white supremacy in our current political&#10;world it’s important to understand how entrenched the idea is in&#10;white Americans that we are superior and the country belongs to us,&#10;the &quot;real Americans&quot;. Recognizing this indoctrination is the&#10;first step in fighting it.</p>&#10;&#10;<p>My grandmother was my personal teacher for white supremacy. Growing&#10;up in the 70s and 80s in Houston as a rich white boy, I was immersed&#10;in the culture of white superiority that is the birthright of most&#10;white Americans. But it was my grandmother who taught me the&#10;specifics. <strong>Content warning</strong>: the rest of this post&#10;discusses racist indoctrination in frank terms. It’s an awful thing,&#10;but it is my history and I need to claim it.</p>&#10;&#10;<p>My grandmother, Lou Ward Jones, was a hateful woman in many ways&#10;both personal and petty and also large and broad. She was a virulent&#10;unrepentant racist, albeit a socially acceptable one. She was careful&#10;not to say N— out loud where polite people would hear her. That word&#10;was saved for moments of anger and for my private education. She&#10;interacted with Black people: the waiters in restaurants, a live-in&#10;maid in her house. But never as an equal. She wasn’t terrible to&#10;&quot;her&quot; maids but also was certainly not kind. That servant /&#10;familial relationship that is the uncomfortable way of the South.</p>&#10;&#10;<p>Here’s some of the things my grandmother taught me</p>&#10;<ul>&#10;<li>&#10;<p>Black people were better off under slavery.</p>&#10;</li>&#10;<li>&#10;<p>The South was the blameless victim of the Civil War.</p>&#10;</li>&#10;<li>&#10;<p>The maitre’d at the Houston Country Club was called &quot;boy&quot;. Occasionally to his face and often deliberately in his hearing. A polite and professional Black man of age 50, he would smile and say &quot;yes Mrs. Jones.&quot;</p>&#10;</li>&#10;<li>&#10;<p>Slaves were happy, their masters took good care of them.</p>&#10;</li>&#10;<li>&#10;<p><a href="https://en.wikipedia.org/wiki/Brazil_nut">Brazil nuts</a> were called n— toes, this word taught with an impish smile like a naughty girl getting away with something.</p>&#10;</li>&#10;<li>&#10;<p>Desmond Tutu was only a &quot;so-called Archbishop&quot;.</p>&#10;</li>&#10;<li>&#10;<p><a href="https://en.wikipedia.org/wiki/The_Story_of_Little_Black_Sambo">Little Black Sambo</a> was great and it was terrible you couldn’t buy the books any more. I may still believe this one a tiny bit.</p>&#10;</li>&#10;<li>&#10;<p>The KKK was a necessary civil defense force to protect whites from rampaging N—s.</p>&#10;</li>&#10;<li>&#10;<p>Nelson Mandela was a criminal and it was terrible that he shared a name with her husband and me.</p>&#10;</li>&#10;<li>&#10;<p>N—s were and are too lazy or stupid to care for themselves.</p>&#10;</li>&#10;<li>&#10;<p>Martin Luther King was violent and wanted to kill white people.</p>&#10;</li>&#10;</ul>&#10;&#10;<p>These are some of the nuggets of white supremacy I was taught&#10;growing up during weekend visits. Not as a programmatic thing, just the&#10;background radiation of the white South. But my grandmother made&#10;an explicit effort to indoctrinate me. It seemed entirely unremarkable&#10;to me at the time, a lot of white people I grew up around talked this&#10;way. I absorbed these lessons from my family just like any little kid&#10;does.</p>&#10;&#10;<p>Fortunately I learned better. My mother would occasionally push&#10;back; while she thoughtlessly harbored racism herself she also knew&#10;her mother’s racism was wrong. She made it clear I would not be&#10;calling the maitre’d &quot;boy&quot;. <a href="https://www.sjs.org/">My school</a> did a good job teaching&#10;critical thinking and historical facts somewhat free of Southern bias,&#10;particularly my junior year US History class. And I developed my own&#10;ideas of social justice starting in high school. I became skeptical,&#10;anti-racist, argued back. Not so much against my grandmother though;&#10;she was a cruel and abusive woman and none of us talked back to her. I&#10;learned to hate her instead.</p>&#10;&#10;<p>But the indoctrination was strong. The core message was that as a&#10;white person I was inherently superior. That these other races of&#10;people were here to be servants, or dumb labor, and while regrettably&#10;we couldn’t own them any more we could still treat them as lesser&#10;people. No matter what challenges I faced I was white and America&#10;belonged to me. It’s a comforting and empowering belief, being&#10;raised a white supremacist. It is poison.</p>&#10;&#10;<p>I’m sorry to write out all this hateful and horrible stuff. But&#10;so much of white America is still awash in these attitudes, infected&#10;with them. I’ve spent my entire adult life trying to get out of the&#10;grip of this indoctrination and I still have tendrils of it in me.&#10;Pervasive racism is the single biggest social challenge facing America&#10;today, one of the core reasons why roughly half the American&#10;population starts life with a significant disadvantage. It goes a&#10;long way to explaining Trump’s popularity; people voted for him&#10;<em>because</em> he’s a racist, not despite that. This is&#10;America.</p>&#10;&#10;<div class="ack">This essay inspired by <a href="https://afroculinaria.com/2019/08/09/dear-disgruntled-white-plantation-visitors-sit-down/">Michael&#10;Twitty's essay</a> about white visitors to Southern plantations.</div></div>&#10;<div class="permalink"><a href="http://www.somebits.com/weblog/politics/white-supremacist-indoctrination-from-my-grandmother.html">by Nelson Minar at <time datetime="2019-08-21T21:03:00Z" title="GMT">August 21, 2019 09:03 PM</time></a></div></div>&#10;&#10;<div class="news webkit" xml:lang="en-US">&#10;<h3><a href="https://webkit.org" title="Blog – WebKit">WebKit</a>—<a href="https://webkit.org/blog/9515/release-notes-for-safari-technology-preview-90/">Release Notes for Safari Technology Preview 90</a></h3>&#10;<div class="content"><p><a href="https://webkit.org/blog/6017/introducing-safari-technology-preview/">Safari Technology Preview</a> Release 90 is now <a href="https://webkit.org/downloads/">available for download</a> for macOS Mojave and the macOS Catalina beta. If you already have Safari Technology Preview installed, you can update in the Software Update pane of System Preferences on macOS.</p>&#10;<p>This release covers WebKit revisions <a href="https://trac.webkit.org/log?stop_rev=248024&amp;&amp;rev=248705&amp;limit=999">248024-248705</a>.</p>&#10;<h3>Web API</h3>&#10;<ul>&#10;<li>Fixed ping loads to not prevent page caching (<a href="https://trac.webkit.org/changeset/248265/webkit/">r248265</a>)</li>&#10;<li>Prevented <code>autofocus</code> for cross-origin iframes (<a href="https://trac.webkit.org/changeset/248491/webkit/">r248491</a>)</li>&#10;<li>Prevented navigations of frames about to get replaced by the result of evaluating javascript: URLs (<a href="https://trac.webkit.org/changeset/248410/webkit/">r248410</a>)</li>&#10;<li>Updated <code>Element.outerHTML</code> to link missing attribute prefixes in some cases in HTML documents (<a href="https://trac.webkit.org/changeset/248042/webkit/">r248042</a>)</li>&#10;<li>Updated the wrapper for <code>navigator.geolocation</code> to not become GC-collectable once its frame is detached (<a href="https://trac.webkit.org/changeset/248276/webkit/">r248276</a>)</li>&#10;</ul>&#10;<h3>Media</h3>&#10;<ul>&#10;<li>Fixed an issue where muted <code>&lt;video&gt;</code> elements could block the display from sleeping (<a href="https://trac.webkit.org/changeset/248387/webkit/">r248387</a>)</li>&#10;</ul>&#10;<h3>WebRTC</h3>&#10;<ul>&#10;<li>Fixed incorrect <code>this</code> in <code>negotiationneeded</code> event (<a href="https://trac.webkit.org/changeset/248267/webkit/">r248267</a>)</li>&#10;</ul>&#10;<h3>WebGPU</h3>&#10;<ul>&#10;<li>Changed WebGPU to not force discrete GPU (<a href="https://trac.webkit.org/changeset/248704/webkit/">r248704</a>)</li>&#10;<li>Improved WHLSL compile-time performance (<a href="https://trac.webkit.org/changeset/248025/webkit/">r248025,</a><a href="https://trac.webkit.org/changeset/248141/webkit/">r248141</a>, <a href="https://trac.webkit.org/changeset/248280/webkit/">r248280</a>, <a href="https://trac.webkit.org/changeset/248310/webkit/">r248310</a>, <a href="https://trac.webkit.org/changeset/248083/webkit/">r248083</a>)</li>&#10;<li>Removed <code>char</code>, <code>short</code>, and <code>half</code> types (<a href="https://trac.webkit.org/changeset/248078/webkit/">r248078</a>)</li>&#10;</ul>&#10;<h3>Web Inspector</h3>&#10;<ul>&#10;<li>Elements&#10;<ul>&#10;<li>Added a way to disable or set a breakpoint on all event listeners for a given DOM node or event type in the Node details sidebar panel (<a href="https://trac.webkit.org/changeset/248052/webkit/">r248052</a>)</li>&#10;<li>Added showing <code>@supports</code> CSS groupings in the Styles details sidebar panel (<a href="https://trac.webkit.org/changeset/248602/webkit/">r248602</a>)</li>&#10;<li>Added experimental quick-action icon buttons to each CSS rule in the Styles details sidebar panel (<a href="https://trac.webkit.org/changeset/248202/webkit/">r248202</a>)</li>&#10;<li>Added display of radius values in Box Model section of the Computed details sidebar panel (<a href="https://trac.webkit.org/changeset/248328/webkit/">r248328</a>)</li>&#10;<li>Fixed an issue where CSS variable swatches were not shown for <code>var()</code> with a fallback in the Styles details sidebar panel (<a href="https://trac.webkit.org/changeset/248279/webkit/">r248279</a>)</li>&#10;<li>Fixed some RTL issues in the Computed details sidebar panel (<a href="https://trac.webkit.org/changeset/248390/webkit/">r248390</a>, <a href="https://trac.webkit.org/changeset/248311/webkit/">r248311</a>)</li>&#10;<li>Moved psuedo-selector rules before inherited rules in the Styles details sidebar panel (<a href="https://trac.webkit.org/changeset/248204/webkit/">r248204</a>)</li>&#10;<li>Moved the Box Model section to the top of the Computed details sidebar panel (<a href="https://trac.webkit.org/changeset/248683/webkit/">r248683</a>)</li>&#10;</ul>&#10;</li>&#10;<li>Resources&#10;<ul>&#10;<li>Fixed brotli-compressed resources to correctly show as being compressed in the Resources details sidebar (<a href="https://trac.webkit.org/changeset/248284/webkit/">r248284</a>)</li>&#10;<li>Fixed to properly handle CSS comments with an escape character when pretty printing (<a href="https://trac.webkit.org/changeset/248197/webkit/">r248197</a>)</li>&#10;</ul>&#10;</li>&#10;<li>Debugger&#10;<ul>&#10;<li>Added a global breakpoint for “All Events” which will pause whenever any event listener is about to be fired (<a href="https://trac.webkit.org/changeset/248201/webkit/">r248201</a>)</li>&#10;</ul>&#10;</li>&#10;<li>Timelines&#10;<ul>&#10;<li>Made Heap Snapshots searchable (<a href="https://trac.webkit.org/changeset/248198/webkit/">r248198</a>)</li>&#10;<li>Fixed an issue where <strong>Develop</strong> &gt; <strong>Start Timeline Recording</strong> didn’t work when focused on a detached Web Inspector window (<a href="https://trac.webkit.org/changeset/248177/webkit/">r248177</a>)</li>&#10;</ul>&#10;</li>&#10;<li>Console&#10;<ul>&#10;<li>Changed to always show all navigation items in the header area of the split console (<a href="https://trac.webkit.org/changeset/248180/webkit/">r248180</a>)</li>&#10;<li>Fixed issue where the execution context picker didn’t update when switching to the inferred context from <code>auto</code> (<a href="https://trac.webkit.org/changeset/248196/webkit/">r248196</a>)</li>&#10;<li>Provided a way to set an alias for previous console evaluation values (e.g. <code>$0</code>, <code>$1</code>, …, <code>$99</code>) in case the inspected page has variables with the same name (<a href="https://trac.webkit.org/changeset/248287/webkit/">r248287</a>)</li>&#10;<li>Renamed <code>queryObjects</code> console command line API to <code>queryInstances</code> for clarity (<a href="https://trac.webkit.org/changeset/248434/webkit/">r248434</a>)</li>&#10;<li>Supported <code>console.screenshot</code> with dataURL strings (<a href="https://trac.webkit.org/changeset/248688/webkit/">r248688</a>)</li>&#10;</ul>&#10;</li>&#10;<li>Overlay&#10;<ul>&#10;<li>Changed to show page width and height information (<a href="https://trac.webkit.org/changeset/248053/webkit/">r248053</a>)</li>&#10;</ul>&#10;</li>&#10;<li>Settings&#10;<ul>&#10;<li>Added an Engineering pane to expose useful settings for WebKit engineers (<a href="https://trac.webkit.org/changeset/248391/webkit/">r248391</a>)</li>&#10;</ul>&#10;</li>&#10;</ul>&#10;<h3>Bug Fixes</h3>&#10;<ul>&#10;<li>Fixed dragging an image from Safari to Notes to correctly appear (<a href="https://trac.webkit.org/changeset/248166/webkit/">r248166</a>)</li>&#10;</ul></div>&#10;<div class="permalink"><a href="https://webkit.org/blog/9515/release-notes-for-safari-technology-preview-90/">by at <time datetime="2019-08-21T19:59:04Z" title="GMT">August 21, 2019 07:59 PM</time></a></div></div>&#10;&#10;<div class="news bruce-schneier">&#10;<h3><a href="https://www.schneier.com/blog/" title="Schneier on Security">Bruce Schneier</a>—<a href="https://www.schneier.com/blog/archives/2019/08/google_finds_20.html">Google Finds 20-Year-Old Microsoft Windows Vulnerability</a></h3>&#10;<div class="content" xml:lang="en-us"><p>There's no indication that <a href="https://arstechnica.com/information-technology/2019/08/a-look-at-the-windows-10-exploit-google-zero-disclosed-this-week/">this vulnerability</a> was ever used in the wild, but the code it was discovered in -- Microsoft's Text Services Framework -- has been around since Windows XP.</p></div>&#10;<div class="permalink"><a href="https://www.schneier.com/blog/archives/2019/08/google_finds_20.html">by Bruce Schneier at <time datetime="2019-08-21T11:46:38Z" title="GMT">August 21, 2019 11:46 AM</time></a></div></div>&#10;&#10;<div class="news o-reilly-radar">&#10;<h3><a href="https://www.oreilly.com" title="All - O'Reilly Media">O’Reilly Radar</a>—<a href="http://feedproxy.google.com/~r/oreilly/radar/atom/~3/yJsZKUvIp-k/four-short-links-21-august-2019">Four short links: 21 August 2019</a></h3>&#10;<div class="content"><p><em>Competition vs. Convenience, Super-Contributors and Power Users, Forecasting Time Series, and Appreciating Non-Scalability</em></p><ol>&#10;<li>&#10;<a href="https://sparktoro.com/blog/less-than-half-of-google-searches-now-result-in-a-click/">Less than Half of Google Searches Now Result in a Click</a> (Sparktoro) -- <i>We can see a consistent pattern: organic shrinks while zero-click searches and paid CTR rise. But the devil’s in the details, and, in this case, mostly the mobile details, where Google’s gotten more aggressive with how ads and instant answer-type features appear.</i> Everyone has to beware of the self-serving, &quot;hey, we're doing people a favor by taking (some action that results in greater market domination for us)&quot; because there's a time when the fact that you have meaningful competition is better for the user than a marginal increase in value add from keeping them in your property longer. (via <a href="https://search.slashdot.org/story/19/08/20/1533252/googles-clickless-era">Slashdot</a>)</li>&#10;<li>&#10;<a href="https://www.mysociety.org/2019/08/20/super-contributors-and-power-laws/">Super-Contributors and Power Laws</a> (MySociety) -- <i>Overall, two-thirds of users made only one report—but the reports made by this large set of users only makes up 20% of the total number of reports. This means that different questions can lead you to very different conclusions about the service. If you’re interested in the people who are using FixMyStreet, that two-thirds is where most of the action is. If you’re interested in the outcomes of the service, this is mostly due to a much smaller group of people.</i> This dynamic applies pretty much everywhere and is worth understanding.</li>&#10;<li>&#10;<a href="https://facebook.github.io/prophet/">Facebook Prophet</a> -- <i>a procedure for forecasting time series data based on an additive model where non-linear trends are fit with yearly, weekly, and daily seasonality, plus holiday effects. It works best with time series that have strong seasonal effects and several seasons of historical data. Prophet is robust to missing data and shifts in the trend, and typically handles outliers well.</i> Written in Python and R.</li>&#10;<li>&#10;<a href="http://www.lasisummerschool.com/wp-content/uploads/2018/12/Tsing-2012-On-nonscalability.pdf">On Nonscalability: The Living World Is Not Amenable to Precision-Nested Scales</a> -- <i>to scale well is to develop the quality called scalability, that is, the ability to expand—and expand, and expand—without rethinking basic elements. [...] [B]y its design, scalability allows us to see only uniform blocks, ready for further expansion. This essay recalls attention to the wild diversity of life on earth through the argument that it is time for a theory of nonscalability.</i> (via <a href="https://desert.glass/">Robin Sloan</a>)</li>&#10;</ol>&#10;<p>Continue reading <a href="https://www.oreilly.com/ideas/four-short-links-21-august-2019">Four short links: 21 August 2019.</a></p><img alt="" height="1" src="http://feeds.feedburner.com/~r/oreilly/radar/atom/~4/yJsZKUvIp-k" width="1"></img></div>&#10;<div class="permalink"><a href="http://feedproxy.google.com/~r/oreilly/radar/atom/~3/yJsZKUvIp-k/four-short-links-21-august-2019">by Nat Torkington at <time datetime="2019-08-21T11:40:00Z" title="GMT">August 21, 2019 11:40 AM</time></a></div></div>&#10;&#10;<div class="news randall-munroe" xml:lang="en">&#10;<h3><a href="https://xkcd.com/" title="xkcd.com">Randall Munroe</a>—<a href="https://xkcd.com/2192/">Review</a></h3>&#10;<div class="content"><img alt="Controls are a little hard to figure out." src="https://imgs.xkcd.com/comics/review.png" title="Controls are a little hard to figure out."></img></div>&#10;<div class="permalink"><a href="https://xkcd.com/2192/">by Randall Munroe at <time datetime="2019-08-21T00:00:00Z" title="GMT">August 21, 2019 12:00 AM</time></a></div></div>&#10;&#10;<h2><time datetime="2019-08-20">August 20, 2019</time></h2>&#10;&#10;<div class="news jon-udell" xml:lang="en">&#10;<h3><a href="https://blog.jonudell.net" title="Jon Udell">Jon Udell</a>—<a href="https://blog.jonudell.net/2019/08/20/digital-sweatshops-then-and-now/">Digital sweatshops then and now</a></h3>&#10;<div class="content"><p>&#10;In the early 1960s my family lived in New Delhi. In 1993, working for BYTE, I returned to India to investigate its software industry. The story I wrote, which appears below, includes this vignette:</p>&#10;<blockquote><p>&#10;Rolta does facilities mapping for a U.S. telephone company through its subsidiary in Huntsville, Alabama. Every night, scanned maps flow through the satellite link to Bombay. Operators running 386-based RoltaStations retrieve the maps from a Unix server, digitize them using Intergraph’s MicroStation CAD software, and relay the converted files back to Huntsville.&#10;</p></blockquote>&#10;<p>&#10;I didn’t describe the roomful of people sitting at those 386-based RoltaStations doing the work. It was a digital sweatshop. From the window of that air-conditioned room, though, you could watch physical laborers enacting scenes not unlike this one photographed by my dad in 1961.</p>&#10;<p>&#10;<img src="https://jonudell.info/IndiaSlides/slides/india01.jpg"></img></p>&#10;<p>&#10;I don’t have a picture of those rows of map digitizers in the city soon to be renamed Mumbai. But here’s a similar picture from a recent Times story, <a href="https://static01.nyt.com/images/2019/08/18/business/00aisweatshop1/00aisweatshop1-jumbo-v2.jpg">A.I. Is Learning From Humans. Many Humans.</a>:</p>&#10;<p>&#10;<img src="https://static01.nyt.com/images/2019/07/08/business/00aisweatshops5/merlin_150609744_190eb9b0-2a1a-44db-be8f-44006111c773-jumbo.jpg"></img></p>&#10;<p>&#10;Labor-intensive data labeling powers AI. Web annotation technology is a key enabler for that labeling. I’m sure there will digital sweatshops running the software I help build. For what it’s worth, I’m doing my best to ensure there will be opportunities to <a href="https://blog.jonudell.net/2017/05/05/weaving-the-annotated-web/#scibot">elevate that work</a>, empowering the humans in the loop to be decision-makers and exception-handlers, not just data-entry clerks. </p>&#10;<p>&#10;Meanwhile, here’s that 1993 story, nearly forgotten by the web but salvaged from the NetNews group <a href="https://groups.google.com/forum/#!topic/soc.culture.indian/dMqNXphAjLw">soc.culture.indian</a>.</p>&#10;<hr></hr>&#10;<h1>Small-systems thinking makes India a strategic software partner</h1>&#10;<p><i>by Jon Udell</i></p>&#10;<p>BYTE, 09/01/1993</p>&#10;<p>Recently, I saw a demonstration of a new Motif-based programmer’s tool called Sextant. It’s a source code analyzer that converts C programs into labeled graphs that you navigate interactively. The demonstration was impressive. What made it unique for me was that it took place in the offices of Softek, a software company in New Delhi, India.</p>&#10;<p>It’s well known that Indian engineering talent pervades every level of the microcomputer industry. But what’s happening in India? On a recent tour of the country, I visited several high-tech companies and discovered that India is evolving rapidly from an exporter of computer engineering talent into an exporter of computer products and services. Software exports, in particular, dominate the agenda. A 1992 World Bank study of eight nations rated India as the most attractive nation for U.S., European, and Japanese companies seeking offshore software-development partners.</p>&#10;<p>The World Bank study was conducted by Infotech Consulting (Parsippany, NJ). When the opportunity arose to visit India, I contacted Infotech’s president, Jack Epstein, for advice on planning my trip. He referred me to Pradeep Gupta, an entrepreneur in New Delhi who publishes two of India’s leading computer magazines, PC Quest and DataQuest. Gupta also runs market-research and conference businesses. He orchestrated a whirlwind week of visits to companies in New Delhi and Bombay and generously took time to acquaint me with the Indian high-tech scene.</p>&#10;<h2> A Nation of Small Systems</h2>&#10;<p>Even among Indians, there’s a tendency to attribute India’s emerging software prowess to the innate mathematical abilities of its people. “After all, we invented zero,” says Dewang Mehta, an internationally known computer graphics expert. He is also executive director of the National Association of Software and Service Companies (NASSCOM) in New Delhi. While this cultural stereotype may hold more than a grain of truth, it’s not the whole story. As NASSCOM’s 1992 report on the state of the Indian software industry notes, India has the world’s second-largest English-speaking technical work force. Consequently, Indian programmers are in tune with the international language of computing, as well as the language spoken in the U.S., the world’s largest market.</p>&#10;<p>Furthermore, India’s data-communications infrastructure is rapidly modernizing. And the Indian government has begun an aggressive program of cutting taxes and lifting import restrictions for export-oriented Indian software businesses while simultaneously clearing the way for foreign companies to set up operations in India.</p>&#10;<p>Other countries share many of these advantages, but India holds an ace. It is a nation of small systems. For U.S. and European companies that are right-sizing mainframe- and minicomputer-based information systems, the switch to PC-based client/server alternatives can be wrenching. Dumping the conceptual baggage of legacy systems isn’t a problem for India, however, because, in general, those systems simply don’t exist. “India’s mainframe era never happened,” says Gupta.</p>&#10;<p>When Europe, Japan, and the U.S. were buying mainframes left and right, few Indian companies could afford their high prices, which were made even more costly by 150 percent import duties. Also, a government policy limiting foreign investors to a 40 percent equity stake in Indian manufacturing operations drove companies like IBM away, and the Indian mainframe industry never got off the ground.</p>&#10;<p>What did develop was an indigenous microcomputer industry. In the early 1980s, Indian companies began to import components and to assemble and sell PC clones that ran DOS. This trend quickened in 1984, when the late Rajiv Gandhi, prime minister and an avid computer enthusiast, lifted licensing restrictions that had prevented clone makers from selling at full capacity.</p>&#10;<p>In the latter half of the 1980s, a computerization initiative in the banking industry shifted the focus to Unix. Front offices would run DOS applications, but behind the scenes, a new breed of Indian-made PCs — Motorola- and Intel-based machines running Unix — would handle the processing chores. Unfortunately, that effort stalled when the banks ran afoul of the unions; even today, many of the Bank of India’s 50,000 branches aren’t linked electronically.</p>&#10;<p>Nevertheless, the die was cast, and India entered the 1990s in possession of a special advantage. Indian programmers are not only well educated and English-speaking, but out of necessity they’re keenly focused on client/server or multiuser solutions for PCs running DOS (with NetWare) or Unix — just the kinds of solutions that U.S. and European companies are rushing to embrace. India finds itself uniquely positioned to help foreign partners right-size legacy applications.</p>&#10;<p>The small-systems mind-set also guides India’s fledgling supercomputer industry. Denied permission by the U.S. government to import a Cray supercomputer, the Indian government’s Center for the Development of Advanced Computers built its own — very different — sort of supercomputer. Called PARAM, it gangs Inmos T800 transputers in parallel and can also harness Intel 860 processors for vector work. Related developments include a transputer-based neural-network engine intended to run process-control applications. The designers of this system impressed me with their clear grasp of the way in which inexpensive transputers can yield superior performance, scalability, modularity, and fault tolerance.</p>&#10;<h2>Software Products and Services</h2>&#10;<p>Many of the companies I visited produce comparable offerings for LAN or Unix environments. In the realm of packaged software, Oberoi Software in New Delhi sells a high-end hotel management application using Sybase 4.2 that runs on Hewlett-Packard, DEC, and Sun workstations. A low-end version uses Btrieve for DOS LANs. Softek offers 1-2-3, dBase, and WordStar work-alikes for DOS and Unix.</p>&#10;<p>Shrink-wrapped products, however, aren’t India’s strong suit at the moment. PCs remain scarce and expensive commodities. According to DataQuest, fewer than 500,000 PCs can be found in this nation of 875 million people. To a U.S. software engineer, a $3000 PC might represent a month’s wages. An equivalently prosperous Indian professional would have to work a full year to pay for the same system. To put this in perspective, the average per capita wage in India is about $320, and the government caps the monthly salary of Indian corporate executives at around $1600 per month.</p>&#10;<p>Software piracy is another vexing problem. “The competition for a 5000-rupee [approximately $165] Indian spreadsheet isn’t a 15,000-rupee imported copy of Lotus 1-2-3,” says Gupta, “but rather a zero-rupee pirated copy of Lotus 1-2-3.”</p>&#10;<p>Painfully aware of the effect piracy has on the country’s international reputation as a software power, government and industry leaders have joined forces to combat it. The Department of Electronics (DoE), for example, has funded an anti-piracy campaign, and Lotus has a $69 amnesty program that enables users of illegal copies of 1-2-3 to come clean. </p>&#10;<h2> Reengineering Is a National Strength</h2>&#10;<p>The real action in Indian software isn’t in products. It’s in reengineering services. A typical project, for example, might involve re-creating an IBM AS/400-type application for a LAN or Unix environment. A few years ago, Indian programmers almost invariably would perform such work on location in the U.S. or Europe, a practice called “body shopping.” This was convenient for clients, but it wasn’t very beneficial to India because the tools and the knowledge spun off from reengineering projects tended to stay overseas.</p>&#10;<p>More recently, the trend is to carry out such projects on Indian soil. Softek, for example, used a contract to build a law-office automation system for a Canadian firm as an opportunity to weld a number of its own products into a powerful, general-purpose client/server development toolkit. Softek engineers showed me how that toolkit supports single-source development of GUI software for DOS or Unix (in character mode) as well as Windows. They explained that client programs can connect to Softek’s own RDBMS (relational DBMS) or to servers from Gupta, Ingres, Oracle, or Sybase. That’s an impressive achievement matched by few companies anywhere in the world, and it’s one that should greatly enhance Softek’s appeal to foreign clients.</p>&#10;<p>While reengineering often means right-sizing, that’s not always the case. For example, the National Indian Institution for Training, a New Delhi-based computer-training institute rapidly expanding into the realm of software products and services, has rewritten a well-known U.S. commercial word processor. Rigorous development techniques are the watchword at NIIT. “We have a passion for methodology,” says managing director Rajendra S. Pawar, whose company also distributes Excelerator, Intersolv’s CASE tool.</p>&#10;<p>Other projects under way at NIIT include an X Window System interface builder, Mac and DOS tutorials to accompany the Streeter series of math textbooks (for McGraw-Hill), a simple but effective multimedia authoring tool called Imaginet, a word processor for special-needs users that exploits an NIIT-designed motion- and sound-sensitive input device, and an instructional video system.</p>&#10;<p>Although services outweigh products for now, and the Indian trade press has complained that no indigenous software product has yet made a splash on the world scene, the situation could well change. Indian programmers are talented, and they’re up-to-date with database, GUI, network, and object-oriented technologies. These skills, along with wages 10 or more times less than U.S. programmers, make Indian programming a force to be reckoned with. Software development is a failure-prone endeavor; many products never see the light of day. But, as Tata Unisys (Bombay) assistant vice president Vijay Srirangan points out, “The cost of experimentation in India is low.” Of the many software experiments under way in India today, some will surely bear fruit.</p>&#10;<p>A major obstacle blocking the path to commercial success is the lack of international marketing, but some help has been forthcoming. Under contract to the U.K.’s Developing Countries Trade Agency, the marketing firm Schofield Maguire (Cambridge, U.K.) is working to bring selected Indian software companies to the attention of European partners. “India does have a technological lead over other developing countries,” says managing partner Alison Maguire. “But to really capitalize on its software expertise, it must project a better image.”</p>&#10;<p>Some companies have heard the message. For example, Ajay Madhok, a principal with AmSoft Systems (New Delhi), parlayed his firm’s expertise with computer graphics and digital video into a high-profile assignment at the 1992 Olympics. On a recent U.S. tour, he visited the National Association of Broadcasters show in Las Vegas. Then he flew to Atlanta for Comdex. While there, he bid for a video production job at the 1996 Olympics. </p>&#10;<h2> Incentives for Exporters</h2>&#10;<p>According to NASSCOM, in 1987, more than 90 percent of the Indian software industry’s $52 million in earnings came from “on-site services” (or body shopping). By 1991, on-site services accounted for a thinner 61 percent slice of a fatter $179 million pie. Reengineering services (and, to a lesser extent, packaged products) fueled this growth, with help from Indian and U.S. government policies.</p>&#10;<p>On the U.S. side, visa restrictions have made it harder to import Indian software labor. India, meanwhile, has developed a range of incentives to stimulate the software and electronics industries. Government-sponsored technology parks in Noida (near New Delhi), Pune (near Bombay), Bangalore, Hyderabad, and several other locations support export-oriented software development. Companies that locate in these parks share common computing and telecommunications facilities (including leased-line access to satellite links), and they can import duty-free the equipment they need for software development.</p>&#10;<p>The Indian government has established export processing zones in which foreign companies can set up subsidiaries that enjoy similar advantages and receive a five-year tax exemption. Outside these protected areas, companies can get comparable tax and licensing benefits by declaring themselves fully export-oriented.</p>&#10;<p>Finally, the government is working to establish a number of hardware technology parks to complement the initiative in software. “We want to create many Hong Kongs and Singapores,” says N. Vittal, Secretary of the DoE and a tireless reformer of bureaucracy, alluding to the economic powerhouses of the Pacific Rim.</p>&#10;<p>The Indian high-tech entrepreneurs I met all agreed that Vittal’s tenacious slashing of government red tape has blazed the trail they now follow. How serious is the problem of government red tape? When the government recently approved a joint-venture license application in four days, the action made headlines in both the general and trade press. Such matters more typically take months to grind their way through the Indian bureaucracy.</p>&#10;<p>The evolution of India’s telecommunications infrastructure shows that progress has been dramatic, though uneven. In a country where only 5 percent of the homes have telephone service, high-tech companies increasingly rely on leased lines, packet-switched data networks, and satellite links. The DoE works with the Department of Telecommunication (DoT) to ensure that software export businesses get priority access to high-bandwidth services.</p>&#10;<p>But the slow pace of progress at the DoT remains a major frustration. For example, faxing can be problematic in India, because the DoT expects you to apply for permission to transmit data. And despite widespread Unix literacy, only a few of the dozens of business cards I received during my tour carried Internet addresses. Why? DoT regulations have retarded what would have been the natural evolution of Unix networking in India. I did send mail home using ERNET, the educational resource network headquartered in the DoE building in New Delhi that links universities throughout the country. Unfortunately, ERNET isn’t available to India’s high-tech businesses.</p>&#10;<p>Vittal recognizes the critical need to modernize India’s telecommunications. Given the scarcity of an existing telecommunications infrastructure, he boldly suggests that for many scattered population centers, the solution may be to completely pass over long-haul copper and vault directly into the satellite era. In the meantime, India remains in this area, as in so many others, a land of extreme contrasts. While most people lack basic telephone service, workers in strategic high-tech industries now take global voice and data services for granted. </p>&#10;<h2> Powerful Partners</h2>&#10;<p>When Kamal K. Singh, chairman and managing director of Rolta India, picks up his phone, Rolta’s U.S. partner, Intergraph, is just three digits away. A 64-Kbps leased line carries voice and data traffic from Rolta’s offices, located in the Santacruz Electronics Export Processing Zone (SEEPZ) near Bombay, to an earth station in the city’s center. Thence, such traffic travels via satellite and T1 lines in the U.S. to Intergraph’s offices in Huntsville, Alabama.</p>&#10;<p>Rolta builds Intel- and RISC-based Intergraph workstations for sale in India; I saw employees doing everything from surface-mount to over-the-network software installation. At the same time, Rolta does facilities mapping for a U.S. telephone company through its subsidiary in Huntsville. Every night, scanned maps flow through the satellite link to Bombay. Operators running 386-based RoltaStations retrieve the maps from a Unix server, digitize them using Intergraph’s MicroStation CAD software, and relay the converted files back to Huntsville.</p>&#10;<p>Many Indian companies have partnerships with U.S. firms. India’s top computer company, HCL, joined forces with Hewlett-Packard to form HCL-HP. HCL’s roots were in multiprocessor Unix. “Our fine-grained multiprocessing implementation of Unix System V has been used since 1988 by companies such as Pyramid and NCR,” says director Arjun Malhotra.</p>&#10;<p>HCL’s joint venture enables it to build and sell HP workstations and PCs in India. “People appreciate HP quality,” says marketing chief Ajai Chowdhry. But since Vectra PCs are premium products in the price-sensitive Indian market, HCL-HP also plans to leverage its newly acquired HP design and manufacturing technology to build indigenous PCs that deliver “good value for money,” according to Malhotra.</p>&#10;<p>Pertech Computers, a system maker in New Delhi, recently struck a $50 million deal to supply Dell Computer with 240,000 motherboards. Currently, trade regulations generally prohibit the import of certain items, such as finished PCs. However, exporters can use up to 25 percent of the foreign exchange they earn to import and sell such items. Pertech director Bikram Dasgupta plans to use his “forex” money to buy Dell systems for resale in India and to buy surface-mount equipment so that the company can build work-alikes.</p>&#10;<p>IBM returned to India last year, after leaving in 1978, to join forces with the Tatas, a family of Indian industrialists. The joint venture, Tata Information Systems, will manufacture PS/2 and PS/VP systems and develop software exports.</p>&#10;<p>Citicorp Overseas Software, a Citicorp subsidiary, typifies a growing trend to locate software-development units in India. “Our charter is first and foremost to meet Citicorp’s internal requirements,” says CEO S. Viswanathan, “but we are a profit center and can market our services and products.” On a tour of its SEEPZ facility in Bombay, I saw MVS, Unix, VMS, and Windows programmers at work on a variety of projects. In addition to reengineering work for Citicorp and other clients, the company markets banking products called Finware and MicroBanker.</p>&#10;<p>ITC (Bangalore) supplements its Oracle, Ingres, and AS/400 consulting work by selling the full range of Lotus products. “Because we have the rights to manufacture Lotus software locally,” says vice president Shyamal Desai, “1-2-3 release 2.4 was available here within a week of its U.S. release.” Other distributors of foreign software include Onward Computer Technologies in Bombay (NetWare) and Bombay-based Mastek (Ingres).</p>&#10;<p>India’s ambitious goal is to quadruple software exports from $225 million in 1992 to $1 billion in 1996. To achieve that, everything will have to fall into place. It would be a just reward. India gave much to the international microcomputer industry in the 1980s. In the 1990s, the industry just might return the favor.</p></div>&#10;<div class="permalink"><a href="https://blog.jonudell.net/2019/08/20/digital-sweatshops-then-and-now/">by Jon Udell at <time datetime="2019-08-20T15:21:37Z" title="GMT">August 20, 2019 03:21 PM</time></a></div></div>&#10;&#10;<div class="news openid" xml:lang="en-US">&#10;<h3><a href="https://openid.net" title="OpenID">OpenID</a>—<a href="https://openid.net/2019/08/09/registration-open-for-openid-foundation-workshop-at-verizon-media-on-monday-september-30-2019/">Registration Open for OpenID Foundation Workshop at Verizon Media on Monday, September 30, 2019</a></h3>&#10;<div class="content"><p style="font-weight: 400;">OpenID Foundation Workshops provide technical insight and influence on current Internet identity standards. The workshops provide updates on all OpenID Foundation working groups as well the OpenID Certification Program.</p>&#10;<p style="font-weight: 400;"> Please note  we’ve added a technology leaders discussion on key digital identity topics to the agenda. The goal is to encourage open discussion to help inform one another on security challenges in the identity ecosystem. As part of this expanded agenda, we’ll have a panel session during lunch led by OpenID Foundation Chairman, Nat Sakimura, with identity leader panelists from from member organizations that will be discussing the latest issues in digital identity.</p>&#10;<p style="font-weight: 400;">Leading technologists from Verizon Media, Google, Microsoft, Amazon, Yubico, Verizon and others will update key issues and discuss how they help meet social, enterprise and government Internet identity challenges.</p>&#10;<p style="font-weight: 400;">This workshop precedes Internet Identity Workshop XXVIX in Mountain View, October 1-3, 2019.</p>&#10;<p> </p>&#10;<p><strong>Workshop Registration</strong></p>&#10;<p>Registration for this workshop is required so please do so prior to Tuesday, September 24, 2019: <a href="https://www.eventbrite.com/e/openid-foundation-workshop-at-verizon-media-september-2019-tickets-67281736485" rel="noopener noreferrer" target="_blank">https://www.eventbrite.com/e/openid-foundation-workshop-at-verizon-media-september-2019-tickets-67281736485 </a></p>&#10;<p style="font-weight: 400;"><strong>Workshop Agenda</strong></p>&#10;<p style="font-weight: 400;">Welcome &amp; Introduction: Lovlesh Chhabra — Verizon Media and Don Thibeau – OpenID Foundation<br></br>&#10;A Panel Discussion Over Lunch — Current Digital Identity Topics</p>&#10;<ul style="font-weight: 400;">&#10;<li>Host: Nat Sakimura – OpenID Foundation Chairman</li>&#10;<li>Panelist: Lovlesh Chhabra – Verizon Media</li>&#10;<li>Panelist: John Summers – Akamai</li>&#10;<li>Panelist: Google representative</li>&#10;<li>Panelist: PayPal representative</li>&#10;</ul>&#10;<p style="font-weight: 400;">Identity UX Session — George Fletcher – Verizon Media<br></br>&#10;Impact of Intelligent Tracking Protection and SameSite Cookie Designation — George Fletcher – Verizon Media<br></br>&#10;Shared Signals Update – TBC<br></br>&#10;OpenID Certification Program Update: Mike Jones – Microsoft<br></br>&#10;OpenID Federation Update – Roland Hedberg – Catalogix</p>&#10;<p>OpenID Foundation Working Group Updates</p>&#10;<ul style="font-weight: 400;">&#10;<li>OpenID Connect: Mike Jones – Microsoft</li>&#10;<li>Enhanced Authentication Protocol (EAP): Mike Jones – Microsoft</li>&#10;<li>Fast Federation (FastFed): Darin McAdams – Amazon</li>&#10;<li>Financial API (FAPI): Nat Sakimura – OpenID Foundation Chairman</li>&#10;<li>HEART (Health Relationship Trust Profile): TBC</li>&#10;<li>iGov (International Government Assurance Profile): Maria Vachino — Easy Dynamics</li>&#10;<li>MODRNA (Mobile OpenID Connect Profile): Bjorn Hjelm – Verizon</li>&#10;<li>Research &amp; Education: Roland Hedberg – Catalogix</li>&#10;<li>RISC (Risk and Incident and Sharing Coordination): TBC</li>&#10;</ul>&#10;<p style="font-weight: 400;">Verizon Media is providing lunch for attendees and will be served starting at 11:30AM. This workshop includes a working lunch panel session that we’ll start promptly at 12:00pm PT.</p>&#10;<p style="font-weight: 400;"><strong>Workshop Location &amp; Logistics</strong></p>&#10;<p style="font-weight: 400;">Yahoo Campus, 701 1st Avenue, Sunnyvale, CA — Building C</p>&#10;<ol style="font-weight: 400;">&#10;<li>Reserved parking spots will be available on the 3rd floor of the parking garage attached to Building C.</li>&#10;<li>When arriving to pick-up you visitor badge, please tell security at the entrance that you are here for the OpenID Foundation Workshop in Building C, 2nd floor, Classroom 4.</li>&#10;</ol>&#10;<p> </p>&#10;<p style="font-weight: 400;">Thank you to Verizon Media for hosting and providing directed funding support of this event. We look forward to seeing you on Monday, September 30th in Sunnyvale.</p>&#10;<p style="font-weight: 400;">Don Thibeau<br></br>&#10;Executive Director<br></br>&#10;OpenID Foundation</p></div>&#10;<div class="permalink"><a href="https://openid.net/2019/08/09/registration-open-for-openid-foundation-workshop-at-verizon-media-on-monday-september-30-2019/">by Mike Leszcz at <time datetime="2019-08-20T13:14:34Z" title="GMT">August 20, 2019 01:14 PM</time></a></div></div>&#10;&#10;<div class="news o-reilly-radar">&#10;<h3><a href="https://www.oreilly.com" title="All - O'Reilly Media">O’Reilly Radar</a>—<a href="http://feedproxy.google.com/~r/oreilly/radar/atom/~3/h39PaHzbLgo/four-short-links-20-august-2019">Four short links: 20 August 2019</a></h3>&#10;<div class="content"><p><em>Content Moderation, Robust Learning, Archiving Floppies, and xkcd Charting</em></p><ol>&#10;<li>&#10;<a href="https://blog.twitter.com/en_us/topics/company/2019/information_operations_directed_at_Hong_Kong.html">Information Operations Directed at Hong Kong</a> (Twitter) -- <i>Today we are adding archives containing complete tweet and user information for the 936 accounts we’ve disclosed to our archive of information operations—the largest of its kind in the industry.</i> This is a goldmine for researchers, as you can see from <a href="https://twitter.com/noUpside/status/1163604830369116162">Renee DiResta's notes</a>. <a href="https://newsroom.fb.com/news/2019/08/removing-cib-china/">Facebook also removed accounts for the same reason</a> but hasn't shared the data. Google has not taken a position yet, which <a href="https://twitter.com/alexstamos/status/1163603595696099328">prompted Alex Stamos to say</a>, <i>&quot;Two of the three relevant companies have made public statements. Neither have realistic prospects in the PRC, the other does. Lots of lessons from this episode, but one might be a reinforcement of how Russia represents “easy mode” for platforms doing state attribution. It’s a lot harder when the actor is financially critical, like the PRC or India.&quot;</i> We're in interesting times, and research around content moderation are the most interesting things I've seen on the internet since SaaS. This work cuts to human truths, technical capability, and the limits of openness.</li>&#10;<li>&#10;<a href="https://blog.acolyer.org/2019/08/19/robust-learning-from-untrusted-sources/">Robust Learning from Untrusted Sources</a> (Morning Paper) -- <i>designed to let you incorporate data from multiple &quot;weakly supervised&quot; (i.e., noisy) data sources. Snorkel replaces labels with probability-weighted labels, and then trains the final classifier using those.</i>&#10;</li>&#10;<li>&#10;<a href="https://twitter.com/textfiles/status/1163549826589421573">Imaging Floppies</a> (Jason Scott) -- recording the magnetic strength everywhere on the disk so you archive all the data not just the data you can read once. <i>The result of this hardware is that it takes a 140 kilobyte floppy disk (140k) and reads it into a 20 megabyte (20,000 kilobyte) disk image. This means a LOT of the magnetic aspects of the floppy are read in for analysis. [...] This doesn't just dupe the data, but the copy protection, unique track setup, and a bunch of variance around each byte on the floppy to make it easier to work with. The software can then do all sorts of analysis to give us excellent, bootable disk images.</i> Don't ever think that archiving is easy, or problems are solved.</li>&#10;<li>&#10;<a href="https://timqian.com/chart.xkcd/">Chart.xkcd</a> -- <i>a chart library plots “sketchy,” “cartoony,” or “hand-drawn” styled charts.</i> The world needs more whimsy.</li>&#10;</ol>&#10;<p>Continue reading <a href="https://www.oreilly.com/ideas/four-short-links-20-august-2019">Four short links: 20 August 2019.</a></p><img alt="" height="1" src="http://feeds.feedburner.com/~r/oreilly/radar/atom/~4/h39PaHzbLgo" width="1"></img></div>&#10;<div class="permalink"><a href="http://feedproxy.google.com/~r/oreilly/radar/atom/~3/h39PaHzbLgo/four-short-links-20-august-2019">by Nat Torkington at <time datetime="2019-08-20T11:00:00Z" title="GMT">August 20, 2019 11:00 AM</time></a></div></div>&#10;&#10;<div class="news tantek-çelik" xml:lang="en-US">&#10;<h3><a href="https://tantek.com/" title="Tantek Çelik">Tantek Çelik</a></h3>&#10;<div class="content"><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_p60wOcyZvJQMbiSCSd3O2v-yinB-zyFq3ANQDsLaA3M.jpg"><img alt="Tantek wearing a white cap and orange shirt with Ocean Beach and the Pacific Ocean behind him on a sunny day." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_p60wOcyZvJQMbiSCSd3O2v-yinB-zyFq3ANQDsLaA3M.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_7sBX6_EcxR8hkrN2M86PefMO6m_zUuCPOcXDW6ILQP0.jpg"><img alt="Spreckels lake glinting blue green, with trees on the far shore and a clear blue sky above." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_7sBX6_EcxR8hkrN2M86PefMO6m_zUuCPOcXDW6ILQP0.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_kosLWGoD73Zspoe3mjAeaWcufxCXMZCx1AmmXakRnFE.jpg"><img alt="Sutro baths at the Lands End Lookout with green trails in the foreground, and a blue Pacific Ocean in the background, fog gathering in the distance." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_kosLWGoD73Zspoe3mjAeaWcufxCXMZCx1AmmXakRnFE.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_k0lCa9fnps_B3eTJraCA-I571W6gVPKL2dHBpiX5yMw.jpg"><img alt="Golden Gate Bridge in the distance under blue skies, Lands End hills in the foreground, and a cloudbank hovering over the Marin Headleands on the left." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_k0lCa9fnps_B3eTJraCA-I571W6gVPKL2dHBpiX5yMw.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_6x6BehmsJjpxyn4NcUFyh5HbSWT3YX2M9_8pwu7TR-s.jpg"><img alt="Old air raid sirens on a tower in front of blue skies." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_6x6BehmsJjpxyn4NcUFyh5HbSWT3YX2M9_8pwu7TR-s.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_QT3aP66qcd50w0UtEjFF8VSmVWFfE1HSc1ngwBkkJuw.jpg"><img alt="Golden Gate Bridge viewed northward, with the towers aligned, their tops disappearing into the fog." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_QT3aP66qcd50w0UtEjFF8VSmVWFfE1HSc1ngwBkkJuw.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_Wu4XydyRcYgCoEQopa4pCPq7RQOXsYz8JGJBPhMLgcQ.jpg"><img alt="Golden Gate Bridge viewed from Fort Point, solid white fog enveloping the tops of its towers." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_Wu4XydyRcYgCoEQopa4pCPq7RQOXsYz8JGJBPhMLgcQ.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_iZbcerSgPdERdoe6XsSRToxjTVzAx2BszP1b-BfiyuU.jpg"><img alt="Golden Gate Bridge viewed from Crissy Field Marsh in the foreground, the sky a mottled grey mix of fog and clouds." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_iZbcerSgPdERdoe6XsSRToxjTVzAx2BszP1b-BfiyuU.jpg"></img></a>🌞🌳🌊🌁 #<span class="p-category auto-tag">Sunday</span> #<span class="p-category auto-tag">longrun</span>! Ran 14+ miles on tired legs.<br class="auto-break"></br><br class="auto-break"></br>Planned to do a half marathon after Saturday’s 11 miles of Marin trails, ended up a mile-ish more. Slow start, but drank/fueled and felt pretty strong in the second half of Golden Gate Park. Spreckels lake sparkled in the sunshine(2). Reached the beach(1) and felt encouraged to go further. Ran up to the Sutro Baths for a beautiful view(3) and thru Lands End for a clear view of the Golden Gate!(4)<br class="auto-break"></br><br class="auto-break"></br>Happened to look upward in the Sea Cliff neighborhood and see an old air raid siren(5). Against the deep blue sky it reminded me of Depeche Mode’s Music For The Masses:<br class="auto-break"></br><br class="auto-break"></br><a class="auto-link figure" href="https://www.discogs.com/release/85252-Music-For-The-Masses/images"><img alt="Depeche Mode’s Music For The Masses album cover." class="auto-embed u-photo" src="https://upload.wikimedia.org/wikipedia/en/thumb/8/82/Depeche_Mode_-_Music_for_the_Masses.png/220px-Depeche_Mode_-_Music_for_the_Masses.png"></img></a><br class="auto-break"></br>By the time I ran up Lincoln Boulevard to the bridge, Karl the Fog had enveloped the tops of the towers(6). Ran down to the Warming Hut for another view(7) and over to Crissy Field Marsh(8).<br class="auto-break"></br><br class="auto-break"></br>Struggled up the final climb to the Presidio, and up to the top of Arguello Blvd, then easy cruising all the way home.<br class="auto-break"></br><br class="auto-break"></br>25+ mile weekend done! ✅<br class="auto-break"></br><br class="auto-break"></br>#<span class="p-category auto-tag">run</span> #<span class="p-category auto-tag">runner</span> #<span class="p-category auto-tag">SF</span> #<span class="p-category auto-tag">SanFrancisco</span> #<span class="p-category auto-tag">SundayRunday</span> #<span class="p-category auto-tag">SundayFunday</span> #<span class="p-category auto-tag">50ktraining</span> #<span class="p-category auto-tag">roadto50</span> #<span class="p-category auto-tag">ultratraining</span> #<span class="p-category auto-tag">optoutside</span> #<span class="p-category auto-tag">getoutside</span> #<span class="p-category auto-tag">fog</span> #<span class="p-category auto-tag">KarlTheFog</span> #<span class="p-category auto-tag">befierce</span> #<span class="p-category auto-tag">pushyourself</span> #<span class="p-category auto-tag">fitstrongfierce</span> #<span class="p-category auto-tag">2019_230</span> #<span class="p-category auto-tag">20190818</span> #<span class="p-category auto-tag">latergram</span> #<span class="p-category auto-tag">nofilter</span></div>&#10;<div class="permalink"><a href="https://tantek.com/2019/231/t2/sunday-longrun-tired-legs">by Tantek at <time datetime="2019-08-20T06:51:00Z" title="GMT">August 20, 2019 06:51 AM</time></a></div></div>&#10;&#10;<div class="news tantek-çelik" xml:lang="en-US">&#10;<h3><a href="https://tantek.com/" title="Tantek Çelik">Tantek Çelik</a></h3>&#10;<div class="content"><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_rSol9v0jN7rZQR85feDkMJpaJgAPQvO0nm-HiK6gcF8.jpg"><img alt="Ominious thick grey fog obscuring a partial view of the Golden Gate Bridge from the Marin Headlands in the foreground, with parts of the bay and high 101 between." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_rSol9v0jN7rZQR85feDkMJpaJgAPQvO0nm-HiK6gcF8.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_w3UL99u9-jjlcahCLf9gF4JgAVrhRaHL8gFOjkl1isQ.jpg"><img alt="Uphill on Marincello trail, green bushes on both sides, fog rolling in from the right side, obscuring anything more than a few hundred meters away." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_w3UL99u9-jjlcahCLf9gF4JgAVrhRaHL8gFOjkl1isQ.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_paBe-fBkPtTAUJgdsQ3YiV4qDL2jsBLx0ExpvahOvVY.jpg"><img alt="Looking west from the top of Bobcat trail, the top third a thick grey fog, a sliver of blue from the distant Pacific Ocean, rolling hills, rocks and bushes in the foreground." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_paBe-fBkPtTAUJgdsQ3YiV4qDL2jsBLx0ExpvahOvVY.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_CN9QfpJDqFv3Fh36NVsRSBDV6RLMB3ufQI7yTBuaErw.jpg"><img alt="Lush ivy covered forest at the top of the Alta trail." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_CN9QfpJDqFv3Fh36NVsRSBDV6RLMB3ufQI7yTBuaErw.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_qJgaEoldPrabZ0mSHOjLlchNJcEi-01z0XJ93XGXMTY.jpg"><img alt="Looking west and downhill from the SCA trail, in the middle thick fog obscuring anything beyond the first few hills." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_qJgaEoldPrabZ0mSHOjLlchNJcEi-01z0XJ93XGXMTY.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_Ac-oN7BetcEyc0LFkY3o6nVDnSA8CcMEQ5izUcaCJh0.jpg"><img alt="Golden Gate bridge in the distance peaking above the Marin Headlands, the tops of its towers obscured by fog." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_Ac-oN7BetcEyc0LFkY3o6nVDnSA8CcMEQ5izUcaCJh0.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_KvIUF3hxdnXdYzuhjIFMJS4fOtPoTDHxnw9EWnnIPWM.jpg"><img alt="Forested single-track part of SCA trail, trees and greening lining both sides and covering the canopy." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_KvIUF3hxdnXdYzuhjIFMJS4fOtPoTDHxnw9EWnnIPWM.jpg"></img></a><a class="auto-link figure u-bridgy-flickr-photo" href="https://fastly.4sqi.net/img/general/original/476_zcYV4mI1sfw2Umj7CV3YtgRP4yg1wAEsJbKyDv3BBA8.jpg"><img alt="Cluster of trees near the start of Bobcat trail uphill, like an entrance gate, taller than any other nearby foliage." class="auto-embed u-photo" src="https://fastly.4sqi.net/img/general/width960/476_zcYV4mI1sfw2Umj7CV3YtgRP4yg1wAEsJbKyDv3BBA8.jpg"></img></a>🌬💨☁️⛰🌁  Underprepared for unexpected weather, Saturday morning I nearly gave up on my trail run and went home.<br class="auto-break"></br><br class="auto-break"></br>I planned to start at 7am at the Tennesssee Valley parking lot, arrived at 7:05. Overcast as expected, yet much colder. In contrast to last week’s quiet fog bank (<a class="auto-link" href="https://tantek.com/t51y1">https://tantek.com/t51y1</a>), the wind howled through the valley, bending treetops and swirling up dust like I’d never seen before. I’d only worn shorts and a t-shirt and wouldn’t last 10 minutes in that wind chill.<br class="auto-break"></br><br class="auto-break"></br>I sat in my car in parking lot for almost an hour waiting for it to warm up a bit and for the wind to quiet down, berating myself for having forgotten a long sleeve. Just before giving up and going home, I decided to double check the shallow depths of my trunk. <br class="auto-break"></br><br class="auto-break"></br>Tucked into the bottom of a beach bag I found an SF Marathon long sleeve. Threw it on, and took off up the fogged-in Marincello trail(2), connecting via Bobcat trail(3) to Alta trail’s lush peak(4) instead of the windy coastal route I’d planned. <br class="auto-break"></br><br class="auto-break"></br>The fog thickened on SCA trail(5), where I barely caught a view of the Golden Gate bridge(6) being overwhelmed by the fog. My favorite part of SCA trail is a brief lush forest tunnel(7) that I decided to stop and capture (usually I just run through it grinning). Soon after capturing the Golden Gate Bridge from a hill(1), I saw a couple of faster friends from the SFRC running crew and realized I had been running the opposite direction. Finished a short loop up the Bobcat trail(8), then returned down Marincello to the parking lot and barely made it to Good Earth just before 11, last call for breakfast sandwiches.<br class="auto-break"></br><br class="auto-break"></br>11 miles done ✅ (not the 21 I planned, calling this mental game a draw)<br class="auto-break"></br><br class="auto-break"></br>Afterwards I shared with a few trail running friends how I’d felt starting out, and they reminded me (correctly) to look more on the positive side:<br class="auto-break"></br><br class="auto-break"></br>“Good job sticking with it. Deposits in the grit bank” [that’s a good metaphor to keep in mind.]<br class="auto-break"></br><br class="auto-break"></br>“You toughed it out, nice job keeping it going in less than ideal conditions.”<br class="auto-break"></br><br class="auto-break"></br>Even if that run was a mental draw, knowing I got at least something done will be good to remember next time I face a similar challenge, perhaps in a race.<br class="auto-break"></br><br class="auto-break"></br>#<span class="p-category auto-tag">run</span> #<span class="p-category auto-tag">runner</span> #<span class="p-category auto-tag">Marin</span> #<span class="p-category auto-tag">MarinHeadlands</span> #<span class="p-category auto-tag">trail</span> #<span class="p-category auto-tag">trailrun</span> #<span class="p-category auto-tag">50ktraining</span> #<span class="p-category auto-tag">ultratraining</span> #<span class="p-category auto-tag">optoutside</span> #<span class="p-category auto-tag">getoutside</span> #<span class="p-category auto-tag">fog</span> #<span class="p-category auto-tag">KarlTheFog</span> #<span class="p-category auto-tag">befierce</span> #<span class="p-category auto-tag">pushyourself</span> #<span class="p-category auto-tag">facethemountain</span> #<span class="p-category auto-tag">fitstrongfierce</span> #<span class="p-category auto-tag">2019_229</span> #<span class="p-category auto-tag">20190817</span> #<span class="p-category auto-tag">latergram</span> #<span class="p-category auto-tag">nofilter</span><br class="auto-break"></br><br class="auto-break"></br>Previous weather challenged trail run: <a class="auto-link" href="https://tantek.com/2019/081/t1/ran-tam-rain-twice">https://tantek.com/2019/081/t1/ran-tam-rain-twice</a></div>&#10;<div class="permalink"><a href="https://tantek.com/2019/231/t1/unexpected-weather-trail-run">by Tantek at <time datetime="2019-08-20T01:42:00Z" title="GMT">August 20, 2019 01:42 AM</time></a></div></div>&#10;&#10;<h2><time datetime="2019-08-19">August 19, 2019</time></h2>&#10;&#10;<div class="news tim-bray" xml:lang="en-us">&#10;<h3><img class="icon" src="http://www.tbray.org/favicon.ico"></img><a href="https://www.tbray.org/ongoing/" title="ongoing by Tim Bray">Tim Bray</a>—<a href="https://www.tbray.org/ongoing/When/201x/2019/08/18/Talking-Hong-Kong">Talking Hong Kong Blues</a></h3>&#10;<div class="content"><p>I’m imagining a discussion that might have taken place in <a href="https://en.wikipedia.org/wiki/Beidaihe_District">Baidaihe</a>&#10;at some point this month at the annual&#10;<a href="https://en.wikipedia.org/wiki/Communist_Party_of_China">CCP</a> summer offsite.</p>&#10;<p>“Getting ugly in Hong Kong, and I’m not sure our Ms Lam is moving things in the right direction.”</p>&#10;<p>“I hear from the people on the spot that what the good people want is just peace and quiet, this is just a bunch of teenage&#10;assholes making trouble.”</p>&#10;<p>“Nobody wants to give their boss bad news. Haven’t you watched the&#10;<a href="https://www.bbc.com/zhongwen/simp">BBC coverage</a>?&#10;Maybe you’re hearing good things from your staff, but let’s suppose the <i>gweilo</i> TV is right? What are we going to&#10;do?”</p>&#10;<p>“We’re doing one thing that’s working, going after the troublemakers’ bosses. We&#10;<a href="https://www.cbc.ca/news/world/cathay-pacific-ceo-resigns-hong-kong-1.5249322">took down Hogg at Cathay Pacific</a>. That’ll make&#10;every ambitious manager in HK go on the warpath to keep their employees in the office and off the damn streets. Hong Kong, it’s&#10;about three things: Money, money, and money.”</p>&#10;<p>“Except for, the bad guys are getting 20% of the population out in the streets. That’ll include people who work for every fucking&#10;bank and real-estate developer and shipping company, are we gonna get every CEO in South China fired?”</p>&#10;<p>“But the police say there were only 128,000 people out!”</p>&#10;<p>“The HK police are idiots and in case you hadn’t notice, they’re losing in the streets.”</p>&#10;<p>“I think they’re winning. There haven’t been any arrests or violence at the last three days of protests.”</p>&#10;<p>“You think that’s good?! If the word starts going around that you can get away with large-scale activism as long as you keep it&#10;peaceful… do you like the idea of four million people out on the streets of Shanghai? Or a couple of million in Guangzhou?”</p>&#10;<p>“What do you mean about the word getting around? The people of China are well-protected from dangerous foreign ideas,&#10;<em>they’re</em> not going to watching those shitty BBC liars.”</p>&#10;<p>“Don’t you look at tourism figures? &#10;<a href="https://www.scmp.com/news/hong-kong/hong-kong-economy/article/2184378/tourist-figures-hong-kong-reached-new-high-2018-651">Fifty&#10;one million people</a> from our side visited Hong Kong last year. They’ll all be talking to their friends and relations.”</p>&#10;<p>“Yeah, well that’s maybe ten million people, a lot of them visiting every week on business. And, let’s be honest, they’re the same&#10;ones who travel overseas and already have lots of exposure to fake news from people who hate the Party. They probably all have VPNs&#10;already.”</p>&#10;<p>“On top of which, those people are making good money and they owe it to us and they know it. They’ll bloody well watch what they&#10;say.”</p>&#10;<p>“You guys, this is the same kind of thinking that got our 1989 leadership into trouble, letting those ‘innocent’ students stay in&#10;Tienanmen until they thought they owned it and we had to go in with the tanks and machine guns!”</p>&#10;<p>“He’s right. We have the muscle all built up in Shenzen, they can be holding down Central and Tsim Sha Tsui in 72 hours and&#10;there’ll be no more of those fucking umbrellas. On top of which, the <em>good</em> people there will throw flowers at our guys and go&#10;back to making money in peace and quiet.”</p>&#10;<p>“Suppose they don’t. Suppose there are a quarter million assholes dressed in black yelling ‘Gaa Yau!’ at each other and ‘Two&#10;Systems!’ at us and, flashing lasers and the real fringe throwing molotovs, and all with masks so we can’t ID many, and fading away&#10;into the MTR, and then another quarter million out the next day?”</p>&#10;<p>“Brother, if it really comes down to them versus us, it’ll be us. Just like in 1989. It’s not just riot-control equipment&#10;waiting there in Shenzen. And any solo hero standing in front of a PLA tank this time is going to be ashes before he gets on CNN.”</p>&#10;<p>“Screw CNN. It’ll be live on YouTube and Instagram and Twitter with a couple of billion people watching, and highlights of PLA&#10;tanks squishing Hong Kong patriots waiting for people who were asleep at the time.”</p>&#10;<p>“So what? The people who matter need to do business with us, what do they care what kids watch on Instagram? Are they going to&#10;walk away from the chance?”</p>&#10;<p>“Well,&#10;<a href="https://siliconangle.com/2019/07/17/google-says-abandoned-project-dragonfly-censored-search-engine-chinese-users/">Google did.</a>”</p>&#10;<p>Here’s another thing. Suppose they’re holding out in Mong Kok and every other skeezy neighborhood away from Central and there are&#10;people in all those buildings throwing shit at us from the 3rd through 20th floors, and they turn trucks sideways in those awful&#10;little streets, how are we going to get them out?”</p>&#10;<p>“The PLA is not going to be stopped by a bunch of acne-faced cockroaches! Whose side are you on?”</p>&#10;<p>“Western politics is weird. They eventually turned their backs on people from their own tribe in Rhodesia and South Africa in&#10;favor of a bunch of <em>black people</em>!</p>&#10;<p>“We have our people getting our side of the story out in every Western capital; the right kind of students marching, shouting&#10;down the local HK troublemakers.”</p>&#10;<p>“Give me a break, those clueless princelings haven’t the vaguest what they’re living among. I see their latest brilliant idea is&#10;to drive around in their Lambos and McLarens waving Chinese flags. Are you really really sure you want to make that bet?”</p>&#10;<p>“Look, our economy is less about imports and exports every year. If the world doesn’t want us any more, then we don’t need&#10;them! We’ll just turn our backs and China will be China for Chinese, and it’ll be great.”</p>&#10;<p>“Yeah, well I don’t want to miss aprés-ski in Zermatt or my place with that view in West Vancouver.”</p>&#10;<p>“You might have to, because if those HK cockroaches prove they can tell us to fuck off and go on having a decent life and making&#10;money… you talk about bringing in muscle from Shenzen, what I worry about is people there starting to dress in black.”</p>&#10;<p>“Yep, let’s just keep the PLA ready to roll, and hope it doesn’t have to.”</p>&#10;<p>“Hope is not a strategy.”</p></div>&#10;<div class="permalink"><a title="All content written by Tim Bray and photos by Tim Bray Copyright Tim Bray, some rights reserved, see /ongoing/misc/Copyright">©</a> <a href="https://www.tbray.org/ongoing/When/201x/2019/08/18/Talking-Hong-Kong">Tim Bray at <time datetime="2019-08-19T05:53:10Z" title="GMT">August 19, 2019 05:53 AM</time></a></div></div>&#10;&#10;<div class="news antonio-cangiano" xml:lang="en-US">&#10;<h3><a href="https://programmingzen.com" title="Programming Zen">Antonio Cangiano</a>—<a href="http://feedproxy.google.com/~r/ZenAndTheArtOfRubyProgramming/~3/rOyU1fOHrLM/">Join My Team at IBM</a></h3>&#10;<div class="content"><p>This is a heads up that my team has several developer positions available. The job post is not live yet, but it will be shortly.</p>&#10;&#10;&#10;&#10;<p>If you are interested and you meet the requirements below, feel free to email me at <strong>cangiano@ca.ibm.com</strong> with the subject “<strong>Joining your team</strong>“. I will make sure to forward you the link where you can apply as soon as it becomes available.</p>&#10;&#10;&#10;&#10;<p>The eligibility requirements are:</p>&#10;&#10;&#10;&#10;<ul><li>You are legally able to work in Canada;</li><li> You live in, or are willing to move to, Toronto, as the job will be located in Markham, ON.</li></ul>&#10;&#10;&#10;&#10;<div class="wp-block-image"><figure class="aligncenter"><img alt="The IBM Toronto Lab at night" class="wp-image-2178" src="https://i2.wp.com/programmingzen.com/wp-content/uploads/2019/08/toronto-lab.jpg?w=1060&amp;ssl=1"></img>The IBM Toronto Lab at night</figure></div>&#10;&#10;&#10;&#10;<p>As long as you meet those two hard requirements outside of our control, you get to toss your hat in the ring.</p>&#10;&#10;&#10;&#10;<h2>Why should you join the team?</h2>&#10;&#10;&#10;&#10;<p>Although our team is unabashedly part of IBM, we tend to operate more like a startup within a larger company than your typical team in a mega-corporation.</p>&#10;&#10;&#10;&#10;<p>It’s a fun, chill team of people who collaborate together and get a lot done. We hail from Russia, Italy, Korea, India, Jamaica, Canada, Brazil, China, Peru… you name it.</p>&#10;&#10;&#10;&#10;<p>Our team is mostly a mix of developers and data scientists, though overlap does exist depending on the project. I can proudly say that everyone is brilliant and brings a unique viewpoint and contribution to the team.</p>&#10;&#10;&#10;&#10;<p>Two things I love about the team is that we treat everyone the same, regardless of whether you are an intern who started yesterday or a seasoned member of this group. It’s not a team of “yes people”. Our manager loves nothing more than good counterpoints to his arguments.</p>&#10;&#10;&#10;&#10;<p>I also love that what we do matters. For such a small team, we make a huge contribution to IBM’s overall results. More importantly, we change lives.</p>&#10;&#10;&#10;&#10;<p>We’ll discuss the specifics of what we do with the candidates during the interviews, but for now, suffice it to say that we are focused on helping people build the skills they need to thrive in the 21st century. Data science, AI, and blockchain all very much included.</p>&#10;&#10;&#10;&#10;<h2>What kind of technologies do we use?</h2>&#10;&#10;&#10;&#10;<p>We are not dogmatic. We have the freedom to use the best tool for the job, no matter what that is. As a result, we end up using some pretty cool tools and open source technologies (we also contribute to open source).</p>&#10;&#10;&#10;&#10;<p><a href="https://cognitiveclass.ai/blog/scrum-ceremonies/" rel="noreferrer noopener" target="_blank">We use SCRUM</a> and, depending on the project, we tend to use Ruby, Python, Elixir, and JavaScript, rather than Java or C#. For JavaScript frameworks, we tend to like Vue, but again we are not dogmatic, and also have a couple of projects in React.</p>&#10;&#10;&#10;&#10;<p>We face some challenging scaling problems that require interesting solutions, so we tend to use state of the art DevOps tools and containers whenever possible (e.g., Docker, Rancher, OpenShift, etc).</p>&#10;&#10;&#10;&#10;<h2>The interview process</h2>&#10;&#10;&#10;&#10;<p>Unlike certain other mega-corporations, you are not going to go through 6 rounds of gruesome interviews to land a job.</p>&#10;&#10;&#10;&#10;<p>You’ll formally apply at the link that will be provided to you. Your resume will be considered along with those of the other candidates who also applied. The most promising candidates will be invited to take part in a first technical interview with myself.</p>&#10;&#10;&#10;&#10;<p>Those who fare well will proceed to a second interview with me and my manager (or possibly someone else from the team). Both interviews are essentially conversations. The first one is technical in nature, the second one is more business-oriented (to evaluate interests, ambitions, learn more about what we do, ask us questions, etc).</p>&#10;&#10;&#10;&#10;<p>The good news is that you can put away your algorithms and data structures book. I haven’t asked tough algorithmic questions in almost a decade. I found that technical conversations about past projects with more open-ended questions are a better gauge for talent. Either that or I have been extremely lucky, because out of the dozens of people I have selected over the years, there were virtually no disappointments.</p>&#10;&#10;&#10;&#10;<p>Beside explaining code you might have on GitHub, you can expect questions like, “Could you explain the difference between a GET and a POST request?” or “What’s the difference between an inner and outer join?”.</p>&#10;&#10;&#10;&#10;<p>Instead of asking you what the 413 HTTP response code is for, I might ask you to tell me what the various classes of HTTP response codes are for (i.e., 100s, 200s, 300s, 400s, and 500s).</p>&#10;&#10;&#10;&#10;<p>You get the idea. If the candidate is more experienced, the conversation can then go deeper and the questions can naturally become more challenging. But I’m not going to ask you to write down Dijkstra’s algorithm on a whiteboard.</p>&#10;&#10;&#10;&#10;<h2>Who we are looking for</h2>&#10;&#10;&#10;&#10;<p>As I said in the beginning, we have a few positions available and quite a bit of flexibility. We are looking for people who can program, solve problems, and get stuff done, rather than specific languages or a set number of years of experience. We have room for talented juniors as well as experienced seniors.</p>&#10;&#10;&#10;&#10;<p>Full-stack skills are welcome, but people who specialize only on frontend, backend, mobile development, data science, or DevOps are more than welcome to apply as well.</p>&#10;&#10;&#10;&#10;<p><a href="mailto:cangiano@ca.ibm.com?subject=Joining your team">Email me</a> if you qualify and are interested in this position. I look forward to hearing from you.</p>&#10;<p>The post <a href="https://programmingzen.com/join-my-team-at-ibm/" rel="nofollow">Join My Team at IBM</a> appeared first on <a href="https://programmingzen.com" rel="nofollow">Programming Zen</a>.</p>&#10;<img alt="" height="1" src="http://feeds.feedburner.com/~r/ZenAndTheArtOfRubyProgramming/~4/rOyU1fOHrLM" width="1"></img></div>&#10;<div class="permalink"><a href="http://feedproxy.google.com/~r/ZenAndTheArtOfRubyProgramming/~3/rOyU1fOHrLM/">by Antonio Cangiano at <time datetime="2019-08-19T04:29:43Z" title="GMT">August 19, 2019 04:29 AM</time></a></div></div>&#10;&#10;<div class="news randall-munroe" xml:lang="en">&#10;<h3><a href="https://xkcd.com/" title="xkcd.com">Randall Munroe</a>—<a href="https://xkcd.com/2191/">Conference Question</a></h3>&#10;<div class="content"><img alt="I also have an utterance. Less of an utterance and more of an incantation. Less of an incantation and more of a malediction. Less of a malediction and more of a Word of Power. Less of a Word of Power and more of an Unforgivable Curse." src="https://imgs.xkcd.com/comics/conference_question.png" title="I also have an utterance. Less of an utterance and more of an incantation. Less of an incantation and more of a malediction. Less of a malediction and more of a Word of Power. Less of a Word of Power and more of an Unforgivable Curse."></img></div>&#10;<div class="permalink"><a href="https://xkcd.com/2191/">by Randall Munroe at <time datetime="2019-08-19T00:00:00Z" title="GMT">August 19, 2019 12:00 AM</time></a></div></div>&#10;&#10;<h2><time datetime="2019-08-18">August 18, 2019</time></h2>&#10;&#10;<div class="news david-weinberger" xml:lang="en-US">&#10;<h3><a href="https://www.hyperorg.com/blogger" title="Joho the Blog">David Weinberger</a>—<a href="https://www.hyperorg.com/blogger/2019/08/18/http-or-www-top-ten-reasons/">Http or WWW? Top Ten Reasons</a></h3>&#10;<div class="content">A geeky mailing list I’m the least geeky person on has been discussing whether https://yoursite.com is preferable to www.yoursite.com. I have no pony in this race, and am in fact against pony racing if only because it requires impossibly small jockeys, but here are my: Top Ten Reasons to prefer www to https:// Easier to […]</div>&#10;<div class="permalink"><a href="https://www.hyperorg.com/blogger/2019/08/18/http-or-www-top-ten-reasons/">by davidw at <time datetime="2019-08-18T16:11:04Z" title="GMT">August 18, 2019 04:11 PM</time></a></div></div>&#10;&#10;<h2><time datetime="2019-08-17">August 17, 2019</time></h2>&#10;&#10;<div class="news david-weinberger" xml:lang="en-US">&#10;<h3><a href="https://www.hyperorg.com/blogger" title="Joho the Blog">David Weinberger</a>—<a href="https://www.hyperorg.com/blogger/2019/08/17/hillary-trump-debates-the-audition-tapes/">Hillary-Trump Debates: The Audition Tapes</a></h3>&#10;<div class="content">This is a re-play of something I wrote during the 2016 election. The premise is that the Clinton campaign is auditioning stand-ins for Trump to rehearse the 2016 debates with. Note that Louis CK not yet disgraced, and in any case I the last paragraph of that one is really unclear. You see, he’s snapping […]</div>&#10;<div class="permalink"><a href="https://www.hyperorg.com/blogger/2019/08/17/hillary-trump-debates-the-audition-tapes/">by davidw at <time datetime="2019-08-17T16:12:58Z" title="GMT">August 17, 2019 04:12 PM</time></a></div></div>&#10;&#10;<h2><time datetime="2019-08-16">August 16, 2019</time></h2>&#10;&#10;<div class="news tantek-çelik" xml:lang="en-US">&#10;<h3><a href="https://tantek.com/" title="Tantek Çelik">Tantek Çelik</a>—<a href="https://tantek.com/2019/228/b1/indiewebcamps-timeline-amsterdam-utrecht">IndieWebCamps Timeline 2011-2019: Amsterdam to Utrecht</a></h3>&#10;<div class="content"><div class="entry-content e-content">&#10;<aside><div class="aside">&#10;<p>&#10;While not a post directly about <a href="https://indieweb.org/2019/">IndieWeb Summit 2019</a>, this post provides a bit of background and is certainly related, so I’m including it in my series of posts about the Summit. Previous post in this series: <a href="https://tantek.com/2019/217/b1/indieweb-summit-2019-start" rel="prev">Reflecting On IndieWeb Summit: A Start</a>&#10;</p>&#10;</div></aside>&#10;<p>&#10;At the beginning of <a href="https://indieweb.org/2019/">IndieWeb Summit 2019</a>, I gave a brief talk on &#10;<a href="https://indieweb.org/2019/state-of-the-indieweb">State of the IndieWeb</a> and mentioned that:&#10;</p>&#10;<blockquote>We've scheduled lots of IndieWebCamps this year and are on track to schedule a record number of different cities as well.</blockquote>&#10;<p>&#10;I had conceived of a graphical representation of the growth of IndieWebCamps over the past nine years, both in number and across the world, but with everything else involved with setting up and running the Summit, ran out of time. However, the idea persisted, and finally this past week, with a little help from <a class="h-card" href="https://aaronparecki.com/">Aaron Parecki</a> re-implementing Dopplr’s algorithm for turning city names into colors, was able to put togther something pretty close to what I’d envisioned:&#10;</p>&#10;&#10;<table cellpadding="0" cellspacing="0" class="indiewebcamps-timeline">&#10;<tr class="istanbul"><th><a href="https://indieweb.org/Istanbul" title="Istanbul">Istanbul</a></th><td colspan="6"></td><td><a href="https://indieweb.org/2017/Istanbul" title="2017/Istanbul"> </a></td><td colspan="2"></td></tr>&#10;<tr class="amsterdam"><th><a href="https://indieweb.org/Amsterdam" title="Amsterdam">Amsterdam</a></th><td colspan="8"></td><td><a href="https://indieweb.org/2019/Amsterdam" title="2019/Amsterdam"> </a></td></tr>&#10;<tr class="utrecht"><th><a href="https://indieweb.org/Utrecht" title="Utrecht">Utrecht</a></th><td colspan="8"></td><td><a href="https://indieweb.org/2019/Utrecht" title="2019/Utrecht"> </a></td></tr>&#10;<tr class="nuremberg"><th><a class="mw-redirect" href="https://indieweb.org/N%C3%BCrnberg" title="Nürnberg">Nürnberg</a></th><td colspan="5"></td><td><a href="https://indieweb.org/2016/Nuremberg" title="2016/Nuremberg"> </a></td><td><a href="https://indieweb.org/2017/Nuremberg" title="2017/Nuremberg"> </a></td><td><a href="https://indieweb.org/2018/Nuremberg" title="2018/Nuremberg"> </a></td><td></td></tr>&#10;<tr class="dusseldorf"><th><a href="https://indieweb.org/D%C3%BCsseldorf" title="Düsseldorf">Düsseldorf</a></th><td colspan="4"></td><td><a class="mw-redirect" href="https://indieweb.org/2015/D%C3%BCsseldorf" title="2015/Düsseldorf"> </a></td><td><a href="https://indieweb.org/2016/D%C3%BCsseldorf" title="2016/Düsseldorf"> </a></td><td><a href="https://indieweb.org/2017/D%C3%BCsseldorf" title="2017/Düsseldorf"> </a></td><td><a href="https://indieweb.org/2018/D%C3%BCsseldorf" title="2018/Düsseldorf"> </a></td><td><a href="https://indieweb.org/2019/D%C3%BCsseldorf" title="2019/Düsseldorf"> </a></td></tr>&#10;<tr class="berlin"><th><a href="https://indieweb.org/Berlin" title="Berlin">Berlin</a></th><td colspan="3"></td><td><a class="mw-redirect" href="https://indieweb.org/2014/Berlin" title="2014/Berlin"> </a></td><td></td><td><a href="https://indieweb.org/2016/Berlin" title="2016/Berlin"> </a></td><td><a href="https://indieweb.org/2017/Berlin" title="2017/Berlin"> </a></td><td><a href="https://indieweb.org/2018/Berlin" title="2018/Berlin"> </a></td><td><a href="https://indieweb.org/2019/Berlin" title="2019/Berlin"> </a></td></tr>&#10;<tr class="edinburgh"><th><a href="https://indieweb.org/Edinburgh" title="Edinburgh">Edinburgh</a></th><td colspan="4"></td><td><a href="https://indieweb.org/2015/Edinburgh" title="2015/Edinburgh"> </a></td><td colspan="4"></td></tr>&#10;<tr class="oxford"><th><a href="https://indieweb.org/Oxford" title="Oxford">Oxford</a></th><td colspan="7"></td><td><a href="https://indieweb.org/2018/Oxford" title="2018/Oxford"> </a></td><td><a href="https://indieweb.org/2019/Oxford" title="2019/Oxford"> </a></td></tr>&#10;<tr class="brighton"><th><a href="https://indieweb.org/Brighton" title="Brighton">Brighton</a></th><td></td><td><a class="mw-redirect" href="https://indieweb.org/2012/Brighton" title="2012/Brighton"> </a></td><td><a class="mw-redirect" href="https://indieweb.org/2013/Brighton" title="2013/Brighton"> </a></td><td><a class="mw-redirect" href="https://indieweb.org/2014/Brighton" title="2014/Brighton"> </a></td><td><a href="https://indieweb.org/2015/Brighton" title="2015/Brighton"> </a></td><td><a href="https://indieweb.org/2016/Brighton" title="2016/Brighton"> </a></td><td colspan="2"></td><td><a href="https://indieweb.org/2019/Brighton" title="2019/Brighton"> </a></td></tr>&#10;<tr class="newhaven"><th><a href="https://indieweb.org/New_Haven" title="New Haven">New Haven</a></th><td colspan="8"></td><td><a href="https://indieweb.org/2019/New_Haven" title="2019/New Haven"> </a></td></tr>&#10;<tr class="baltimore"><th><a href="https://indieweb.org/Baltimore" title="Baltimore">Baltimore</a></th><td colspan="7"></td><td><a href="https://indieweb.org/2018/Baltimore" title="2018/Baltimore"> </a></td><td></td></tr>&#10;<tr class="cambridge"><th><a href="https://indieweb.org/Cambridge" title="Cambridge">Cambridge</a></th><td colspan="3"></td><td><a href="https://indieweb.org/2014/Cambridge" title="2014/Cambridge"> </a></td><td><a href="https://indieweb.org/2015/Cambridge" title="2015/Cambridge"> </a></td><td><a class="new" href="https://indieweb.org/2016/Cambridge" title="2016/Cambridge"> </a></td><td colspan="3"></td></tr>&#10;<tr class="newyork"><th><a class="mw-redirect" href="https://indieweb.org/New_York" title="New York">New York</a></th><td colspan="3"></td><td><a href="https://indieweb.org/2014/NYC" title="2014/NYC"> </a></td><td></td><td><a href="https://indieweb.org/2016/NYC" title="2016/NYC"> </a></td><td><a href="https://indieweb.org/2017/NYC" title="2017/NYC"> </a></td><td><a href="https://indieweb.org/2018/NYC" title="2018/NYC"> </a></td><td><a href="https://indieweb.org/2019/NYC" title="2019/NYC"> </a></td></tr>&#10;<tr class="austin"><th><a href="https://indieweb.org/Austin" title="Austin">Austin</a></th><td colspan="6"></td><td><a href="https://indieweb.org/2017/Austin" title="2017/Austin"> </a></td><td></td><td><a href="https://indieweb.org/2019/Austin" title="2019/Austin"> </a></td></tr>&#10;<tr class="bellingham"><th><a href="https://indieweb.org/Bellingham" title="Bellingham">Bellingham</a></th><td colspan="6"></td><td><a href="https://indieweb.org/2017/Bellingham" title="2017/Bellingham"> </a></td><td colspan="2"></td></tr>&#10;<tr class="losangeles"><th><a href="https://indieweb.org/Los_Angeles" title="Los Angeles">Los Angeles</a></th><td colspan="2"></td><td><a class="new" href="https://indieweb.org/2013/Los_Angeles" title="2013/Los Angeles"> </a></td><td colspan="2"></td><td class="santamonica"><a class="mw-redirect" href="https://indieweb.org/2016/Santa_Monica" title="2016/Santa Monica"> </a></td><td colspan="3"></td></tr>&#10;<tr class="sanfrancisco"><th><a class="mw-redirect" href="https://indieweb.org/San_Francisco" title="San Francisco">San Francisco</a></th><td colspan="3"></td><td><a href="https://indieweb.org/2014/SF" title="2014/SF"> </a></td><td><a href="https://indieweb.org/2015/SF" title="2015/SF"> </a></td><td colspan="2"></td><td><a href="https://indieweb.org/2018/SF" title="2018/SF"> </a></td><td></td></tr>&#10;<tr class="portland"><th><a href="https://indieweb.org/Portland" title="Portland">Portland</a></th><td><a href="https://indieweb.org/2011" title="2011"> </a></td><td><a href="https://indieweb.org/2012" title="2012"> </a></td><td><a href="https://indieweb.org/2013" title="2013"> </a></td><td><a href="https://indieweb.org/2014" title="2014"> </a></td><td><a href="https://indieweb.org/2015" title="2015"> </a></td><td><a href="https://indieweb.org/2016" title="2016"> </a></td><td><a href="https://indieweb.org/2017" title="2017"> </a></td><td><a href="https://indieweb.org/2018" title="2018"> </a></td><td><a href="https://indieweb.org/2019" title="2019"> </a></td></tr>&#10;<tr class="years"><th></th><td><a href="https://indieweb.org/2011" title="2011">2011</a></td><td><a href="https://indieweb.org/2012" title="2012">2012</a></td><td><a href="https://indieweb.org/2013" title="2013">2013</a></td><td><a href="https://indieweb.org/2014" title="2014">2014</a></td><td><a href="https://indieweb.org/2015" title="2015">2015</a></td><td><a href="https://indieweb.org/2016" title="2016">2016</a></td><td><a href="https://indieweb.org/2017" title="2017">2017</a></td><td><a href="https://indieweb.org/2018" title="2018">2018</a></td><td><a href="https://indieweb.org/2019" title="2019">2019</a></td></tr>&#10;</table>&#10;<p>&#10;I don’t know of any tools to take something like this kind of locations vs years data and graph it as such. So I built an HTML table with a cell for each IndieWebCamp, as well as cells for the colspans of empty space. Each colored cell is hyperlinked to the IndieWebCamp for that city for that year.&#10;</p>&#10;<p>&#10;2011-2018 and over half of 2019 are IndieWebCamps (and Summits) that have already happened. 2019 includes bars for <a href="https://tantek.com/2019/221/t1/four-indiewebcamps-open-sign-ups">four upcoming IndieWebCamps, which are fully scheduled and open for sign-ups</a>. &#10;</p>&#10;<p>The table markup is copy pasted from the &#10;<a href="https://indieweb.org/Template:indiewebcamps-timeline">IndieWebCamp wiki template</a> where I built it, and you can see the template working live in the context of the <a href="https://indieweb.org/cities">IndieWebCamp Cities</a> page. I’m sure the markup could be improved, suggestions welcome!&#10;</p>&#10;</div></div>&#10;<div class="permalink"><a href="https://tantek.com/2019/228/b1/indiewebcamps-timeline-amsterdam-utrecht">by Tantek at <time datetime="2019-08-16T21:21:00Z" title="GMT">August 16, 2019 09:21 PM</time></a></div></div>&#10;&#10;<div class="news stephen-o-grady" xml:lang="en-US">&#10;<h3><a href="https://redmonk.com/sogrady" title="tecosystems">Stephen O’Grady</a>—<a href="http://feedproxy.google.com/~r/tecosystems/~3/HvgpVta6Mzo/">Lighting Out for the Territories</a></h3>&#10;<div class="content"><p><a href="http://redmonk.com/sogrady/files/2019/08/IMG_20190809_134858.jpg"><img alt="" class="aligncenter size-large wp-image-5789" height="768" src="http://redmonk.com/sogrady/files/2019/08/IMG_20190809_134858-1024x768.jpg" width="1024"></img></a></p>&#10;<p>Months ago when scheduling my annual block of August vacation time, I made the curious decision to split up my three weeks with a work week in the middle. There was some rationale for this, I’m fairly sure, but I can no longer remember what it was and frankly don’t care: if I could go back in time to punch myself for this stupidity, I would.</p>&#10;<p>At any rate, after an idyllic time last week in one of my favorite places in the world up north with the family and our new giant, inflatable unicorn friend, my work week is now concluded which means that it’s time for my vacation to resume. That’s the good news.</p>&#10;<p>The bad news is that this is the portion of my vacation most likely to result in a physical injury to my person, as I’ll be spending the time working on, around, and potentially on top of our house (don’t mentiobn that last part to Kate, please). This is the portion of the vacation that leads coworkers to request hazmat suits and eye protection, friends to send me large packages of bandaids and my wife to establish draconian rules on both approved tasks and required protection equipment to complete them.</p>&#10;<p>As for work, I’m pretty sure that everyone who is waiting on a response for me has it, but I’m entirely sure that a lack of a response while I’m out is not likely to result in anyone dying or even being slightly maimed. So don’t look for me on email, Slack or similar: I’ll be busy pulling doors off hinges or holding a rented belt sander to the side of our house. Unfortunately for you, however, I probably will be on Twitter posting pictures of embarassingly amateur home improvement efforts.</p>&#10;<p>As always, I apologize in advance for whatever happens while I’m out. Large and frequently bad things tend to happen in markets, global climate and geopolitical spheres when I’m away from my desk. I have declined to inform Poseidon of which day I’m planning to take a day off from poorly imitating a contractor to make my annual pilgrimmage up to the waterfall this summer, so all of you in Maine can probably look forward to at least one nice day out of the next stretch.</p>&#10;<p>With that, I’m off to go set my vacation autoresponder. Be excellent to each other while I’m out, and I’ll see you all in September.</p>&#10;<img alt="" height="1" src="http://feeds.feedburner.com/~r/tecosystems/~4/HvgpVta6Mzo" width="1"></img></div>&#10;<div class="permalink"><a href="http://creativecommons.org/licenses/by-nd/2.0/" rel="license">©</a> <a href="http://feedproxy.google.com/~r/tecosystems/~3/HvgpVta6Mzo/">Stephen O'Grady at <time datetime="2019-08-16T20:41:20Z" title="GMT">August 16, 2019 08:41 PM</time></a></div></div>&#10;&#10;<div class="news apache-software-foundation">&#10;<h3><a href="https://blogs.apache.org/foundation/" title="The Apache Software Foundation Blog">Apache Software Foundation</a>—<a href="https://blogs.apache.org/foundation/entry/the-apache-news-round-up135">The Apache News Round-up: week ending 16 August 2019</a></h3>&#10;<div class="content">Happy Friday! We've had a great week. Let's review what we've been up to:&#10; &#10; <p>ASF Annual Report – The Apache® Software Foundation announces Annual Report for 2019 Fiscal Year<br></br> - Press release <a href="https://s.apache.org/w7bw1" rel="noreferrer" target="_blank">https://s.apache.org/w7bw1</a><br></br> - Full report <a href="https://s.apache.org/FY2019AnnualReport">https://s.apache.org/FY2019AnnualReport</a></p> &#10; <p>ASF Board – management and oversight of the business affairs of the corporation in accordance with the Foundation's bylaws.<br></br> - Next Board Meeting: 21 August 2019. Board calendar and minutes <a href="http://apache.org/foundation/board/calendar.html">http://apache.org/foundation/board/calendar.html</a></p> &#10; <p>ApacheCon™ – the ASF's official global conference series, bringing Tomorrow's Technology Today since 1998<br></br> - Countdown to ApacheCon North America and Europe -- we look forward to seeing you in Las Vegas and Berlin-- REGISTER TODAY! <a href="https://www.apachecon.com/">https://www.apachecon.com/</a><br></br> - <span class="css-901oao css-16my406 r-1qd0xha r-ad9z0x r-bcqeeo r-qvutc0">Catch the latest on</span><span class="r-18u37iz"> </span><span class="r-18u37iz">ApacheCon™ Big Data, Machine Learning and Streaming Tracks with Track Lead Felix Cheung exclusively on </span><a class="css-4rbku5 css-18t94o4 css-901oao css-16my406 r-1n1174f r-1loqt21 r-1qd0xha r-ad9z0x r-bcqeeo r-1ny4l3l r-1ddef8g r-qvutc0" dir="ltr" href="https://feathercast.apache.org/" rel=" noopener noreferrer" target="_blank" title="https://feathercast.apache.org/">https://feathercast.apache.org/<br></br></a></p> &#10; <p> </p> &#10; <p>ASF Infrastructure – our distributed team on three continents keeps the ASF's infrastructure running around the clock.<br></br> - 7M+ weekly checks yield uptime at 99.96%. Performance checks across 50 different service components spread over more than 250 machines in data centers around the world. <a href="http://www.apache.org/uptime/">http://www.apache.org/uptime/</a></p> &#10; <p>Apache Code Snapshot – this week, 840 Apache contributors changed 13,780,155 lines of code over 3,721 commits. Top 5 contributors, in order, are: Etienne Chauchot, Mark Robert Miller, Mark Thomas, Tilman Hausherr, and Henrik Krohns.<br></br></p> &#10; <p>Apache Project Announcements – the latest updates by category.</p> &#10; <p>Content --<br></br> - Apache UIMA 2.10.4 released <a href="http://uima.apache.org/" target="_blank">http://uima.apache.org/</a></p> &#10; <p>Database --<br></br> - Apache Druid (Incubating) 0.15.1 release <a href="http://druid.incubator.apache.org">http://druid.incubator.apache.org</a><br></br><br></br>HTTP --<br></br> - Apache HTTP Server 2.4.41 released <a href="http://httpd.apache.org/">http://httpd.apache.org/</a><br></br> - Apache <span class="il">Traffic</span> <span class="il">Server</span> 8.0.4 and 7.1.7 are released <a href="https://trafficserver.apache.org/" rel="noreferrer" target="_blank">http://trafficserver.apache.org/</a> <br></br></p> &#10; <p>Libraries --<br></br> - Apache Log4j 2.12.1 released <a href="https://logging.apache.org/" rel="noreferrer" target="_blank">http://logging.apache.org/</a><br></br> - Apache Commons BeanUtils 1.9.4 released <a href="http://commons.apache.org/proper/commons-beanutils/">http://commons.apache.org/proper/commons-beanutils/</a><br></br> - Apache Commons VFS 2.4.1 released <a href="http://commons.apache.org/proper/commons-vfs/">http://commons.apache.org/proper/commons-vfs/</a> <br></br></p> &#10; <p>Network-Server --<br></br> - <span class="il">Apache Qpid Proton-J 0.33.2</span> released <a href="http://qpid.apache.org" rel="noreferrer" target="_blank">http://<span class="il">qpid</span>.<span class="il">apache</span>.org</a></p> &#10; <p> </p> &#10; <p><strong>Did You Know?</strong> </p> &#10; <div> &#10; <p> - Did you know that <span class="css-901oao css-16my406 r-1qd0xha r-ad9z0x r-bcqeeo r-qvutc0">at this year's </span>ApacheCon Europe/Berlin<span class="css-901oao css-16my406 r-1qd0xha r-ad9z0x r-bcqeeo r-qvutc0"> include</span><span class="r-18u37iz"><a class="css-4rbku5 css-18t94o4 css-901oao css-16my406 r-1n1174f r-1loqt21 r-1qd0xha r-ad9z0x r-bcqeeo r-qvutc0" dir="ltr" href="https://twitter.com/MiguelGamino"> </a></span><span class="il">Miguel</span> Gamiño, Executive Vice President Global Cities at Mastercard, <span class="css-901oao css-16my406 r-1qd0xha r-ad9z0x r-bcqeeo r-qvutc0">will discuss new models of urban collaboration in response to shared challenges? Learn more at </span><a class="css-4rbku5 css-18t94o4 css-901oao css-16my406 r-1n1174f r-1loqt21 r-1qd0xha r-ad9z0x r-bcqeeo r-qvutc0" dir="ltr" href="https://t.co/drCzKX9vKM?amp=1" rel=" noopener noreferrer" target="_blank" title="https://aceu19.apachecon.com/session/city-possible-addressing-shared-urban-challenges-harnessing-super-power-collaboration">https://aceu19.apachecon.com/session/city-possible-addressing-shared-urban-challenges-harnessing-super-power-collaboration</a></p> &#10; <p> - Did you know <span class="css-901oao css-16my406 r-1qd0xha r-ad9z0x r-bcqeeo r-qvutc0">ApacheCon North America </span>keynoters include sci-fi author David Brin; IBM Fellow Chris Ferris; &quot;Father of Java&quot; James Gosling; 11-year-old CoderBunnyz CEO Samaira Mehta; the ASF Founders Panel; DataStax co-Founder Jonathan Ellis; plus ASF President Sam Ruby on the State of the Feather, the Apache Community Development panel, and more? <a href="https://www.apachecon.com/acna19/s/#/schedule">https://www.apachecon.com/acna19/s/#/schedule</a></p> &#10; <div class="css-901oao r-hkyrab r-1qd0xha r-a023e6 r-16dba41 r-ad9z0x r-bcqeeo r-bnwqim r-qvutc0" dir="auto" id="tweet-text" lang="en"> &#10; <p> - Did you know that 202 Top-Level communities are overseeing 332 Apache projects and sub-projects? <a href="https://projects.apache.org/">https://projects.apache.org/</a><br></br></p> &#10; </div> &#10; </div> &#10; <p><strong>Apache Community Notices:</strong></p> &#10; <p> - Celebrating 20 Years Community-led Development &quot;The Apache Way&quot; <a href="https://s.apache.org/ASF20thAnniversary">https://s.apache.org/ASF20thAnniversary</a></p> &#10; <p> - ASF Founders look back on 20 Years of the ASF <a href="https://blogs.apache.org/foundation/entry/our-founders-look-back-on">https://blogs.apache.org/foundation/entry/our-founders-look-back-on</a></p> &#10; <p> - The Apache Way to Sustainable Open Source Success <a href="https://s.apache.org/GhnI">https://s.apache.org/GhnI</a></p> &#10; <p> - Foundation Reports and Statements <a href="http://www.apache.org/foundation/reports.html">http://www.apache.org/foundation/reports.html</a></p> &#10; <p> - ApacheCon: Tomorrow's Technology Today since 1998 <a href="http://s.apache.org/ApacheCon">http://s.apache.org/ApacheCon</a></p> &#10; <p> - ASF Annual Report for FY2019 <a href="https://s.apache.org/FY2019AnnualReport">https://s.apache.org/FY2019AnnualReport</a></p> &#10; <p> - The Apache Software Foundation 2018 Vision Statement <a href="https://s.apache.org/zqC3">https://s.apache.org/zqC3</a></p> &#10; <p> - Foundation Statement –Apache Is Open. <a href="https://s.apache.org/PIRA">https://s.apache.org/PIRA</a></p> &#10; <div> &#10; <p> - &quot;Success at Apache&quot; focuses on the processes behind why the ASF &quot;just works&quot;. <a href="https://blogs.apache.org/foundation/category/SuccessAtApache">https://blogs.apache.org/foundation/category/SuccessAtApache</a></p> &#10; </div> &#10; <div> &#10; <p> - Please follow/like/re-tweet the ASF on social media: <a href="https://twitter.com/TheASF">@TheASF on Twitter</a> and on LinkedIn at <a href="https://www.linkedin.com/company/the-apache-software-foundation">https://www.linkedin.com/company/the-apache-software-foundation</a></p> &#10; <p> - Do friend and follow us on the Apache Community Facebook page <a href="https://www.facebook.com/ApacheSoftwareFoundation/">https://www.facebook.com/ApacheSoftwareFoundation/</a>and Twitter account <a href="https://twitter.com/ApacheCommunity">https://twitter.com/ApacheCommunity</a></p> &#10; </div> &#10; <div> </div> &#10; <div> &#10; <p> - The list of Apache project-related MeetUps can be found at <a href="http://events.apache.org/event/meetups.html">http://events.apache.org/event/meetups.html</a></p> &#10; </div> &#10; <div> &#10; <p> - Registration is open for ApacheCon North America 9-12 September 2019 <a href="http://apachecon.com/">http://apachecon.com/</a></p> &#10; <p> - Spark + AI Summit 2019 will be held 15-17 October in Amsterdam <a href="https://databricks.com/sparkaisummit/">https://databricks.com/sparkaisummit/</a></p> &#10; <p> - Registration open for ApacheCon Europe 22-24 October 2019 <a href="http://apachecon.com/">http://apachecon.com/</a></p> &#10; <p> - Find out how you can participate with Apache community/projects/activities --opportunities open with Apache Camel, Apache HTTP Server, and more! <a href="https://helpwanted.apache.org/">https://helpwanted.apache.org/</a></p> &#10; </div> &#10; <div> - Are your software solutions Powered by Apache? Download &amp; use our &quot;Powered By&quot; logos <a href="http://www.apache.org/foundation/press/kit/#poweredby">http://www.apache.org/foundation/press/kit/#poweredby</a></div> &#10; <div><br></br></div> &#10; <div>= = =</div> &#10; <div><br></br></div> &#10; <div>For real-time updates, sign up for Apache-related news by sending mail to announce-subscribe@apache.org and follow @TheASF on Twitter. For a broader spectrum from the Apache community, <a href="https://twitter.com/PlanetApache">https://twitter.com/PlanetApache</a> provides an aggregate of Project activities as well as the personal blogs and tweets of select ASF Committers.</div></div>&#10;<div class="permalink"><a href="https://blogs.apache.org/foundation/entry/the-apache-news-round-up135">by Swapnil M Mane at <time datetime="2019-08-16T17:24:06Z" title="GMT">August 16, 2019 05:24 PM</time></a></div></div>&#10;&#10;<div class="news randall-munroe" xml:lang="en">&#10;<h3><a href="https://xkcd.com/" title="xkcd.com">Randall Munroe</a>—<a href="https://xkcd.com/2190/">Serena Versus the Drones</a></h3>&#10;<div class="content"><img alt="After the test, she said that if she had a choice, she wouldn’t defend herself against drones using a tennis ball and racket, though she would absolutely pick them over other sports equipment. But, she added, &quot;Drones don't bother me.&quot;" src="https://imgs.xkcd.com/comics/serena_versus_the_drones.png" title="After the test, she said that if she had a choice, she wouldn’t defend herself against drones using a tennis ball and racket, though she would absolutely pick them over other sports equipment. But, she added, &quot;Drones don't bother me.&quot;"></img></div>&#10;<div class="permalink"><a href="https://xkcd.com/2190/">by Randall Munroe at <time datetime="2019-08-16T00:00:00Z" title="GMT">August 16, 2019 12:00 AM</time></a></div></div>&#10;&#10;<h2><time datetime="2019-08-15">August 15, 2019</time></h2>&#10;&#10;<div class="news webkit" xml:lang="en-US">&#10;<h3><a href="https://webkit.org" title="Blog – WebKit">WebKit</a>—<a href="https://webkit.org/blog/9454/changing-page-settings-on-ios-using-web-inspector/">Changing Page Settings on iOS Using Web Inspector</a></h3>&#10;<div class="content"><p>If you’ve ever used Web Inspector before, chances are you’ve used (or are at least familiar with) the <strong>Develop</strong> menu. It holds action items and toggles for various settings of the browser, like whether local files (e.g. URLs beginning with <code>file://</code>) can be loaded or whether CSS is applied to each page.</p>&#10;<figure class="widescreen mattewhite">&#10; <source media="(prefers-color-scheme: dark)"></source><img src="https://webkit.org/wp-content/uploads/Develop_Menu_Light.png"></img>&#10; &#10;</figure>&#10;<p>All of these items apply to the entire browser, meaning that if you <strong>Disable Styles</strong> on one page, every other page will be affected.</p>&#10;<p>Additionally, these items have no effect when using Web Inspector to inspect a remote target, like an iOS device or simulator. Checking <strong>Disable Styles</strong> in the <strong>Develop</strong> menu will not have any affect on the remote target.</p>&#10;<p>In order to support this development workflow, Web Inspector has added a device settings menu that allows these settings to be toggled per-page when being remotely inspected.</p>&#10;<p>Clicking on the device settings menu icon will show a popover with many of the same settings as the <strong>Develop</strong> menu.</p>&#10;<figure class="widescreen mattewhite">&#10; <source media="(prefers-color-scheme: dark)"></source><img src="https://webkit.org/wp-content/uploads/Device_Settings_Menu_Light.png"></img>&#10; &#10;</figure>&#10;<p>Since these settings apply per-page and only on the remote target, the corresponding actions in the <strong>Develop</strong> menu are disabled, as they have no effect on a remote target:</p>&#10;<ul>&#10;<li><strong>Disable Images</strong></li>&#10;<li><strong>Disable Styles</strong></li>&#10;<li><strong>Disable JavaScript</strong></li>&#10;<li><strong>Disable Site-specific Hacks</strong></li>&#10;<li><strong>Disable Cross-Origin Restrictions</strong></li>&#10;<li>WebRTC&#10;<ul>&#10;<li><strong>Allow Media Capture on Insecure Sites</strong></li>&#10;<li><strong>Disable ICE Candidate Restrictions</strong></li>&#10;<li><strong>Use Mock Capture Devices</strong></li>&#10;</ul>&#10;</li>&#10;</ul>&#10;<p>Along these lines, the device settings menu is only shown when using Web Inspector to inspect a remote target.</p>&#10;<p>Device settings are <em>not</em> preserved between Web Inspector sessions. Closing Web Inspector (or disconnecting the inspected device) will cause all previously set device settings for the inspected page to reset.</p>&#10;<p>Device settings are preserved across navigations, however, so long as Web Inspector stays open/connected.</p>&#10;<h2 id="UserAgent">User Agent</h2>&#10;<p>The first item in the device settings menu is the <strong>User Agent</strong> editor. It contains a list of <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent">common user agents</a>, as well as an option to input a <a href="https://en.wikipedia.org/wiki/User_agent#Use_in_HTTP">custom user agent</a> (<strong>Other…</strong>).</p>&#10;<p>Each time the <strong>User Agent</strong> is modified, the inspected page will automatically reload so that the new <strong>User Agent</strong> is applied.</p>&#10;<h2 id="Disable">Disable Toggles</h2>&#10;<p>Each of these toggles, when checked, disables a specific piece of functionality in the inspected page.</p>&#10;<ul>&#10;<li><strong>Images</strong> will prevent any not-yet loaded images from loading, but will have no effect on any already loaded images.</li>&#10;<li><strong>Styles</strong> will immediately disable all CSS on the page, including inline <code>&lt;style&gt;</code>s and any <code>style</code> DOM attributes.</li>&#10;<li><strong>JavaScript</strong> will cause the page to ignore any <em>future</em> JavaScript from being run, including new <code>&lt;script&gt;</code> elements (the underlying resource isn’t even requested) and callbacks for previously added event listeners.</li>&#10;<li><strong>Site-specific Hacks</strong> controls whether workarounds are made by WebKit to support compatibility on certain sites.&#10;<ul>&#10;<li>A list of these sites can be found in <a href="https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/page/Quirks.cpp">Source/WebCore/page/Quirks.cpp</a>.</li>&#10;<li>If you develop a site that is found in that list, we <em>strongly</em> encourage developing and testing with <strong>Site-specific Hacks</strong> <em>disabled</em>.</li>&#10;</ul>&#10;</li>&#10;<li><strong>Cross-Origin Restrictions</strong> controls whether <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS">CORS</a> rules/restrictions are active for any <em>future</em> network requests.</li>&#10;</ul>&#10;<h2 id="WebRTC">WebRTC Toggles</h2>&#10;<p>These toggles focus specifically on functionality related to <a href="https://webrtc.org/">WebRTC</a>.</p>&#10;<ul>&#10;<li><strong>Allow Media Capture on Insecure Sites</strong> will allow <a href="https://webkit.org/blog/7726/announcing-webrtc-and-media-capture/">WebRTC media capture</a> to be used/tested on insecure (e.g. non-https) pages for any <em>future</em> calls of <code>getUserMedia</code>.</li>&#10;<li><strong>Disable ICE Candidate Restrictions</strong> will prevent <a href="https://webkit.org/blog/7763/a-closer-look-into-webrtc/">host ICE candidates from being filtered</a> for <em>new</em> connection attempts.</li>&#10;<li><strong>Use Mock Capture Devices</strong> will replace all <a href="https://webkit.org/blog/7726/announcing-webrtc-and-media-capture/">capture devices</a> with a mock “Bip-Bop” device for any <em>future</em> calls of <code>getUserMedia</code>.<br></br>&#10;<figure style="margin: 0.5em;"><img class="preserve-color wp-image-9459" src="https://webkit.org/wp-content/uploads/Mock_Capture_Device.png" title="Mock Capture Device"></img></figure>&#10;</li>&#10;<li><strong>Disable Encryption</strong> will cause <em>future</em> connections to be established and <em>future</em> streams (from those connections) to be transmitted <em>without</em> any form of encryption.</li>&#10;</ul>&#10;<h2>Feedback</h2>&#10;<p>You can try out changing device settings with iOS 12.2 or later. Let us know how it works for you. Send feedback on Twitter (<a href="https://twitter.com/webkit">@webkit</a>, <a href="https://twitter.com/dcrousso">@dcrousso</a>) or by <a href="https://feedbackassistant.apple.com/">filing a bug</a>.</p></div>&#10;<div class="permalink"><a href="https://webkit.org/blog/9454/changing-page-settings-on-ios-using-web-inspector/">by at <time datetime="2019-08-15T20:14:35Z" title="GMT">August 15, 2019 08:14 PM</time></a></div></div>&#10;&#10;<div class="news apache-software-foundation">&#10;<h3><a href="https://blogs.apache.org/foundation/" title="The Apache Software Foundation Blog">Apache Software Foundation</a>—<a href="https://blogs.apache.org/foundation/entry/the-apache-software-foundation-announces55">The Apache® Software Foundation Announces Annual Report for 2019 Fiscal Year</a></h3>&#10;<div class="content"><p><strong><em>&#10;World's largest Open Source foundation’s 300+ freely-available, enterprise-grade Apache projects power some of the most visible and widely used applications in computing today.&#10;&#10;</em></strong></p> &#10; <p><strong>Wakefield, MA —13 August 2019—</strong> The Apache® Software Foundation (ASF), the all-volunteer developers, stewards, and incubators of more than 350 Open Source projects and initiatives, announced today the availability of the annual report for its 2019 fiscal year, which ended 30 April 2019.&#10;&#10;</p> &#10; <p>Celebrating its 20th Anniversary, the world's largest Open Source foundation’s &quot;Apache Way&quot; of community-driven development is the process behind hundreds of freely-available (100% no cost), enterprise-grade Apache projects that serve as the backbone for some of the most visible and widely used applications in Artificial Intelligence and Deep Learning, Big Data, build management, Cloud Computing, content management, DevOps, IoT and Edge computing, mobile, servers, and Web frameworks, among many other categories. </p> &#10; <p>The ubiquity of Apache software is undeniable, with Apache projects managing exabytes of data, executing teraflops of operations, and storing billions of objects in virtually every industry. Apache software is an integral part of nearly every end user computing device, from laptops to tablets to phones.&#10;&#10;Apache software is used in every Internet-connected country on the planet.</p> &#10; <p>&#10;&#10;Highlights include:&#10;</p> &#10; <p> </p> &#10; <ol> &#10; <li>&#10;ASF codebase is conservatively valued at least $20B, using the COCOMO 2 model;&#10;</li> &#10; <li>Continued guardianship of 190M+ lines of code in the Apache repositories;</li> &#10; <li>Total of 10 Platinum Sponsors, 9 Gold Sponsors, 11 Silver Sponsors, 25 Bronze Sponsors, and 6 Platinum Targeted Sponsors, 5 Gold Targeted Sponsors, 3 Silver Targeted Sponsors, and 10 Bronze Targeted Sponsors;&#10;</li> &#10; <li>35 new individual ASF Members elected, totalling 766;&#10;</li> &#10; <li>Exceeded 7,000 code Committers;&#10;</li> &#10; <li>202 Top-Level communities overseeing 332 Apache projects and sub-projects;&#10;</li> &#10; <li>17 newly-graduated Top-Level Projects from the Apache Incubator;&#10;</li> &#10; <li>47 projects currently undergoing development in the Apache Incubator;&#10;</li> &#10; <li>Top 5 most active/visited Apache projects: Hadoop, Kafka, Lucene, POI, ZooKeeper;&#10;</li> &#10; <li>Top 5 Apache repositories by number of commits: Camel, Hadoop, HBase, Beam, and Flink;&#10;</li> &#10; <li>Top 5 Apache repositories by lines of code: NetBeans, OpenOffice, Flex (combined), Mynewt (combined), and Trafodion;&#10;</li> &#10; <li>35M page views per week across apache.org;&#10;</li> &#10; <li>9M+ source code downloads from Apache mirrors (excluding convenience binaries);</li> &#10; <li>3,280 Committers changed 71,186,324 lines of code over 222,684 commits;&#10;</li> &#10; <li>18,750 authors sent 1,402,267 emails on 570,469 topics across 1,131 mailing lists;&#10;</li> &#10; <li>Top 5 most active mailing lists (user@ + dev@): Flink, Beam, Lucene, Ignite, and Kafka;&#10;</li> &#10; <li>Automated Gitbox across ~1,800 git repositories containing ~75GB of code and repository history;&#10;</li> &#10; <li>Each GitHub account monitored for security compliance;&#10;</li> &#10; <li>GitHub traffic: Top 5 most active Apache sources --clones: Thrift, Cordova, Arrow, Airflow, and Beam;&#10;</li> &#10; <li>GitHub traffic: Top 5 most active Apache sources --visits: Spark, Camel, Flink, Kafka, and Airflow;&#10;</li> &#10; <li>24th anniversary of the Apache HTTP Server (20 years under the ASF umbrella);&#10;</li> &#10; <li>770 Individual Contributor License Agreements (ICLAs) signed;&#10;</li> &#10; <li>28 Corporate Contributor License Agreements signed;&#10;</li> &#10; <li>26 Software Grant Agreements signed; and&#10;</li> &#10; <li>ASF is a mentoring organization in Google Summer of Code for 14th consecutive year.&#10;&#10;</li> &#10; </ol> &#10; <p> </p> &#10; <p>The full report is available online at <a href="https://s.apache.org/FY2019AnnualReport">https://s.apache.org/FY2019AnnualReport</a> </p> &#10; <p><strong>&#10;&#10;About The Apache Software Foundation (ASF)</strong> <br></br>Established in 1999, the all-volunteer Foundation oversees more than 350 leading Open Source projects, including Apache HTTP Server —the world's most popular Web server software. Through the ASF's merit-based process known as &quot;The Apache Way,&quot; more than 770 individual Members and 7,000 Committers across six continents successfully collaborate to develop freely available enterprise-grade software, benefiting billions of users worldwide: thousands of software solutions are distributed under the Apache License; and the community actively participates in ASF mailing lists, mentoring initiatives, and ApacheCon, the Foundation's official user conference, trainings, and expo. The ASF is a US 501(c)(3) charitable organization, funded by individual donations and corporate sponsors including Aetna, Alibaba Cloud Computing, Anonymous, ARM, Baidu, Bloomberg, Budget Direct, Capital One, Cerner, Cloudera, Comcast, Facebook, Google, Handshake, Huawei, IBM, Indeed, Inspur, Leaseweb, Microsoft, ODPi, Pineapple Fund, Pivotal, Private Internet Access, Red Hat, Target, Tencent, Union Investment, Workday, and Verizon Media. For more information, visit <a href="http://apache.org/">http://apache.org/</a> and <a href="https://twitter.com/TheASF">https://twitter.com/TheASF&#10;</a></p> &#10; <p>&#10;&#10;© The Apache Software Foundation. &quot;Apache&quot;, &quot;Airlow&quot;, &quot;Apache Airflow&quot;, &quot;Arrow&quot;, &quot;Apache Arrow&quot;, &quot;Beam&quot;, &quot;Apache Beam&quot;, &quot;Camel&quot;, &quot;Apache Camel&quot;, &quot;Cordova&quot;, &quot;Apache Cordova&quot;, &quot;Flex&quot;, &quot;Apache Flex&quot;, &quot;Flink&quot;, &quot;Apache Flink&quot;, &quot;Hadoop&quot;, &quot;Apache Hadoop&quot;, &quot;HBase&quot;, &quot;Apache HBase&quot;, &quot;Ignite&quot;, &quot;Apache Ignite&quot;, &quot;Kafka&quot;, &quot;Apache Kafka&quot;, &quot;Lucene&quot;, &quot;Apache Lucene&quot;, &quot;Mynewt&quot;, &quot;Apache Mynewt&quot;, &quot;NetBeans&quot;, &quot;Apache NetBeans&quot;, &quot;OpenOffice&quot;, &quot;Apache OpenOffice&quot;, &quot;POI&quot;, &quot;Apache POI&quot;, &quot;Spark&quot;, &quot;Apache Spark&quot;, &quot;Trafodion&quot;, &quot;Apache Trafodion&quot;, &quot;ZooKeeper&quot;, &quot;Apache ZooKeeper&quot;, and &quot;ApacheCon&quot; are registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other brands and trademarks are the property of their respective owners.&#10;</p> &#10; <p>&#10;&#10;&#10;&#10;# # #&#10;</p></div>&#10;<div class="permalink"><a href="https://blogs.apache.org/foundation/entry/the-apache-software-foundation-announces55">by Sally at <time datetime="2019-08-15T04:32:42Z" title="GMT">August 15, 2019 04:32 AM</time></a></div></div>&#10;&#10;<div class="news webkit" xml:lang="en-US">&#10;<h3><a href="https://webkit.org" title="Blog – WebKit">WebKit</a>—<a href="https://webkit.org/blog/9507/announcing-the-webkit-tracking-prevention-policy/">Announcing the WebKit Tracking Prevention Policy</a></h3>&#10;<div class="content"><p>Today we are publishing the <a href="https://webkit.org/tracking-prevention-policy">WebKit Tracking Prevention Policy</a>, covering:</p>&#10;<ul>&#10;<li>What types of tracking WebKit will prevent.</li>&#10;<li>When other tracking countermeasures come into play such as limiting capabilities and informed user consent.</li>&#10;<li>How WebKit handles unintended impact of our tracking prevention.</li>&#10;</ul>&#10;<p>We’d like to thank Mozilla for their <a href="https://wiki.mozilla.org/Security/Anti_tracking_policy">anti-tracking policy</a> which served as inspiration for ours.</p>&#10;<p>Please send us your comments or questions about this policy to <a href="https://twitter.com/webkit">@webkit</a> on Twitter.</p></div>&#10;<div class="permalink"><a href="https://webkit.org/blog/9507/announcing-the-webkit-tracking-prevention-policy/">by at <time datetime="2019-08-15T01:46:18Z" title="GMT">August 15, 2019 01:46 AM</time></a></div></div>&#10;&#10;<h2><time datetime="2019-08-13">August 13, 2019</time></h2>&#10;&#10;<div class="news adrian-sutton" xml:lang="en-US">&#10;<h3><img class="icon" src="https://www.symphonious.net/wp-content/uploads/2018/06/cropped-Music-32x32.png"></img><a href="https://www.symphonious.net" title="Symphonious">Adrian Sutton</a>—<a href="https://www.symphonious.net/2019/08/14/into-eth-2-adding-artemis/">Into Eth 2 – Adding Artemis</a></h3>&#10;<div class="content"><p>Continuing our adventures in setting up a private beacon chain… Previously we got an Eth 1 chain with the deposit contract and successfully sent a deposit to register a new validator.  So far though, we have no way of telling if it actually worked. What we need is an actual beacon chain client.  Enter Artemis…</p><h2>Step 3 – Add a Beacon Chain Client</h2><p>We’ll be using Artemis, partly because I’m incredibly biased and partly because it happens to support the exact version of the deposit contract we’ve deployed (what a coincidence!).</p><p>We’ll need a <a href="https://github.com/ajsutton/private-beaconchain/blob/d681f51bc9627fbf499369d921a31e88cfb8edd1/artemis/config.toml">config file</a> for it, the vast majority of which is boiler plate I copied and probably don’t actually need.  The important bit though is we need to point it at our Pantheon node so it can query the ETH1 chain data. We also need to tell it the address of our deposit contract:</p><pre>[deposit]<br></br># normal, test, simulation<br></br># &quot;test&quot; pre-production<br></br># &quot;simulation&quot; to run a simulation of deposits with ganache-cli, if a inputFile is included the file will replay the deposits<br></br># &quot;normal&quot; production, must include contractAddr and nodeUrl<br></br>mode = &quot;normal&quot;<br></br>...<br></br>contractAddr = &quot;0xdddddddddddddddddddddddddddddddddddddddd&quot;<br></br>nodeUrl = &quot;http://eth1:8545&quot;</pre><p>Note that “eth1” is the name we gave to our Pantheon docker image. Docker will do its magic to resolve that to Pantheon’s IP address inside the container.</p><p>And then we have some relatively standard docker boiler plate in our <a href="https://github.com/ajsutton/private-beaconchain/blob/d681f51bc9627fbf499369d921a31e88cfb8edd1/artemis/run.sh">run.sh</a> script for it.</p><p>If you’ve followed all the steps from part 1 and actually sent a deposit transaction, when you run Artemis after a few moments it should create a JSON file in artemis/output/artemis.json containing something like:</p><pre>{<br></br> &quot;amount&quot;: 32000000000,<br></br> &quot;eventType&quot;: &quot;Deposit&quot;,<br></br> &quot;merkle_tree_index&quot;: &quot;0&quot;,<br></br> &quot;pubkey&quot;: &quot;0x88526BB3800ABB7BA3E4DF4255D043AA661EDDBBFDC0B8C3209034B7EEA65EB3C32AAF0E5D19E8998A1CE5E2B9B64299&quot;,<br></br> &quot;withdrawal_credentials&quot;: &quot;0x008098BD37974616EC6DA256B5D2650E2363D011B7CEF902F7CCBFE938CBA0EA&quot;<br></br>}</pre><p>Which is a record indicating it has received and recognised our deposit. Pretty much nothing else happens though because we still don’t have enough validators to actually get the beacon chain started.  I suspect running some 65,000 validators on my laptop might be a little ambitious so the next step is likely to be tweaking config to reduce the number of validators required before the chain starts.</p><img alt="" height="1" src="http://feeds.feedburner.com/~r/symphonious/~4/fF05c-qbaCY" width="1"></img></div>&#10;<div class="permalink"><a href="https://www.symphonious.net/2019/08/14/into-eth-2-adding-artemis/">by Adrian Sutton at <time datetime="2019-08-13T22:13:47Z" title="GMT">August 13, 2019 10:13 PM</time></a></div></div>&#10;&#10;<div class="news adrian-sutton" xml:lang="en-US">&#10;<h3><img class="icon" src="https://www.symphonious.net/wp-content/uploads/2018/06/cropped-Music-32x32.png"></img><a href="https://www.symphonious.net" title="Symphonious">Adrian Sutton</a>—<a href="https://www.symphonious.net/2019/08/13/into-eth-2-eth-1-and-the-deposit-contract/">Into Eth 2 – Eth 1 and the Deposit Contract</a></h3>&#10;<div class="content"><p>I’ve started a little side-project to setup a “private beacon chain”.  The aim is to better understand how the beacon chain works and start to discover some of the things still required to be built or fixed in clients before it can officially launch.</p><p>So what is a private beacon chain? It’s intended to be an entirely self-contained, runs-on-my-laptop instance of the beacon chain, run as a small-scale simulation of how the real beacon chain will be fired up.</p><p>I’ve collected all the various scripts and config together in a <a href="https://github.com/ajsutton/private-beaconchain">git repo</a> so you follow along from home if you like. Be warned, there is absolutely no polish and not even a lot of thought about organisation in there.</p><h3>Step 1 – An Ethereum 1 Chain</h3><p>First of all we need an Ethereum 1 chain that will be the source of our deposits for beacon chain validators. That’s pretty easy with Pantheon, but let’s complicate matters a little by using Docker. First we’re going to need a network which will eventually (hopefully) hold a whole bevy of different Eth 2 clients all happily interoperating on our beacon chain.  So:</p><pre>docker network create beacontest</pre><p>Then we need a genesis config for our private Eth 1 chain.  I’ve copied the genesis Pantheon uses by default in dev mode with a couple of tweaks I’ll explain later.  Here’s the <a href="https://github.com/ajsutton/private-beaconchain/blob/6587c4acdeb2071f0b58adb740a131aac4c81512/pantheon/eth1-genesis.json">full file</a>.  There are a few accounts that have been allocated lots of ETH and the private keys are included in the config so it’s easy to import to MetaMask or other tools (don’t use these keys for anything real!).</p><p>Finally there’s a <a href="https://github.com/ajsutton/private-beaconchain/blob/dc67d7e66138438cb95897a232757f55de950595/pantheon/run.sh">simple little script to run Pantheon</a> using that file, in our docker network, exposing a bunch of ports and generally being setup to be useful for what we want to do.</p><h2>Step 2 – Deposit Funds</h2><p>Our beacon chain can’t become active until we have enough people who have deposited funds into the beacon chain contract to become validators. Obviously, that means we’ll need a beacon chain contract.</p><h3>Step 2.1 Deploy the Deposit Contract</h3><p>It turns out, the beacon chain contract has changed a bunch of times in different versions of the spec. This is painfully confusing because docs or examples you read usually don’t mention which version of the spec and you can waste many hours trying to interact with the wrong contract.</p><p>We will be using version 0.7.1 of the spec. Here’s that version of the <a href="https://github.com/ethereum/eth2.0-specs/blob/dev/specs/core/0_deposit-contract.md">deposit contract spec</a> and the <a href="https://github.com/ethereum/eth2.0-specs/blob/v0.7.1/deposit_contract/contracts/validator_registration.v.py">deposit contract code</a>.</p><p>To make life simpler, I’ve taken the runtime byte code for that contract and <a href="https://github.com/ajsutton/private-beaconchain/blob/dc67d7e66138438cb95897a232757f55de950595/pantheon/eth1-genesis.json#L25">added it into the genesis config</a> at the fixed address 0xdddddddddddddddddddddddddddddddddddddddd. Note when including contracts in the genesis config you need the runtime byte code, not the constructor byte code you’d normally send as transaction data. Remix makes this easy with it’s “Runtime Bytecode” tab.</p><h3>Step 2.2 Deposit Some ETH</h3><p>The deposit contract spec helpfully tells us that there’s a deposit method we need to call which takes three arguments: pubkey: bytes[48], withdrawal_credentials: bytes[32], signature: bytes[96]</p><p>Unhelpfully it gives us almost no clue what those parameters actually mean or how to generate them.</p><p>I haven’t yet found a nice stand-alone way to generate the required parameters, so I wound up shoving an extra class into my local checkout of the Artemis codebase – <a href="https://gist.github.com/ajsutton/e3287814f408ec778ab0353124f5a952">GenerateKeys.java</a> right next to the existing Artemis.java which has the main method.  There are three key steps:</p><ol><li>Generate two BLS key pairs. One for the validator to use and one for the ETH 2 account that our funds will be sent to if we choose to leave the validator pool.<ul><li>The withdrawal keys can be kept offline until you actually withdraw the funds whereas the validator keys need to be online so the validator can sign things and do its job.</li></ul></li><li>Encode the public key of the validator key pair using the compressed form with big endian encoding.<ul><li>This will be the first argument – pubKey.</li><li><del>Don’t ask me why it’s called compressed encoding when it appears to be exactly the same length as the uncompressed form.</del> UPDATE: Ben Edgington helpfully points out that an uncompressed key is actually 96 bytes – I’d been misled by a well-meaning error message when the real problem was I was using little endian instead of big.</li></ul></li><li>Calculate the SHA256 hash of the public key of the withdrawal key pair, in big endian encoding. Replace the first byte with 0 (the BLS_WITHDRAWAL_PREFIX_BYTE).<ul><li>This will be the withdrawal commitment</li></ul></li><li>Calculate the signature. This requires serialising the DepositData object that will ultimately be created by Eth2 clients in response to our deposit in SSZ with hash trees and stuff. Don’t ask me, I just called the existing Artemis code… That then gets signed using the validator’s private key.<ul><li>This proves you actually <em>have</em> the private key matching the public key you’re trying to register as a validator.</li><li>WARNING: This signature is <em>not</em> checked by the deposit contract, only be Eth2 clients. So if you get it or the public key wrong your deposit will be ignored by the beacon chain and you won’t get your ETH back.</li></ul></li></ol><p>Now that we know what parameters we need to pass, we just need to create a transaction with the required 32 ETH and those parameters encoded as a call to the deposit method.  I wrote an <a href="https://github.com/ajsutton/private-beaconchain/blob/1242411cc7a0e8410e2a6574a293e569e1087a50/deposit/index.js">especially ugly bit of JavaScript</a> to do that. You’ll need to install the npm dependencies first with:</p><pre>npm install</pre><p>and can then send our deposit with:</p><pre>node index.js</pre><p>At this point, if we actually had an ETH2 client, it would recognise that deposit as creating our first validator. Setting up our ETH2 client will be step 3 but I’m not writing that up today.  And, spoiler alert, we’re actually going to need another 65535 validators before the beacon chain will actually start, but that’s a problem for another day.</p><img alt="" height="1" src="http://feeds.feedburner.com/~r/symphonious/~4/IBPwN5ip4Ao" width="1"></img></div>&#10;<div class="permalink"><a href="https://www.symphonious.net/2019/08/13/into-eth-2-eth-1-and-the-deposit-contract/">by Adrian Sutton at <time datetime="2019-08-13T21:41:00Z" title="GMT">August 13, 2019 09:41 PM</time></a></div></div>&#10;&#10;<h2><time datetime="2019-08-12">August 12, 2019</time></h2>&#10;&#10;<div class="news tim-bray" xml:lang="en-us">&#10;<h3><img class="icon" src="http://www.tbray.org/favicon.ico"></img><a href="https://www.tbray.org/ongoing/" title="ongoing by Tim Bray">Tim Bray</a>—<a href="https://www.tbray.org/ongoing/When/201x/2019/08/06/Jeanneau-795">Jeanneau 795 Review</a></h3>&#10;<div class="content"><p>In Europe this boat is called the&#10;<a href="https://www.jeanneau.com/en/boats/9-merry-fisher/27-merry-fisher-795">Merry Fisher 795</a> and in &#10;the New World, the&#10;<a href="https://www.jeanneauamerica.com/en/boats/19-nc/86-nc-795">NC 795</a>. I’ve owned it for a few months and improved it a bit&#10;and taken it a few places and feel like sharing.</p>&#10;<h2 id="p-1">Why review?</h2>&#10;<p>At this point, regular readers are thinking <em>WTF, boat review?!?</em> I’ve only&#10;been on a handful, I’ve only owned one since 2012, I’m still occasionally baffled by nautical jargon, and my command of &#10;knots remains imperfect.</p>&#10;<p>Here’s why. When you go shopping for a refrigerator or car or coffee-maker or TV or (especially) camera, there are loads of&#10;excellent detailed skeptical-voiced reviews you can read before you cough up the money.&#10;Boats (which cost more money than most of those things) are different. All the online &#10;reviews seem to be from dealers or magazine-writers on the comp, and are by and large paeans of praise.</p>&#10;<img alt="Jeanneau 795" src="https://www.tbray.org/ongoing/When/201x/2019/08/06/XT300842.png"></img>&#10;<p>There are owners’ forums out there, but they tend to focus on specific problems and solutions. What’s especially missing&#10;is “I have one of these, here are the good parts and bad parts.”</p>&#10;<p>I’m not completely unqualified. It’s been at my dock for a few months, I’ve installed improvements, I’ve piloted twenty-plus&#10;hours on it, motored through extreme beauty and nasty scary rough water, taken guests on pleasure cruises and a grouchy family&#10;on a tired commute, and used it as an office for a few afternoons.</p>&#10;<p>So I’ll see if I can beg a few links from other 795 owners on the forums and get this a bit of GoogleJuice with the aim of better&#10;equipping other boat shoppers like me.</p>&#10;<h2 id="p-8">Facts</h2>&#10;<p>Jeanneau&#10;<a href="https://fr.wikipedia.org/wiki/Jeanneau">has been making boats since 1957</a>. That link is to French Wikipedia; the English&#10;version is mostly empty and I should fix it up. The interesting, complicated story is&#10;<a href="http://www.jeanneau-owners.com/history.html">nicely told in English</a> by Malcolm Perrins on a Jeanneau-owners community&#10;site. The company, &#10;since its founding by Henry Jeanneau, has been sold multiple times to US and French companies and is now owned by&#10;<a href="https://www.beneteau.com">Beneteau</a>.</p>&#10;<p>The dealer told me that the Jeanneau powerboats are built in Poland<span class="dashes"> —</span> this made him happy because for&#10;some obscure reason it leads to favorable import-tax treatment. The Jeanneau America site says “Built in America” and the first&#10;version of this piece doubted that, but a reader from Michigan wrote “We have the NC 895. It is built in Cadillac Michigan. They&#10;took the old Fourwinns plant.”</p>&#10;<p>Our boat’s curtains are labeled “Made in France” and the appliances such as chargers and thrusters and fridges are Eurobuilt and&#10;their manuals have Italian or French as the first language, with English further back in the book. So I’m inclined to believe the&#10;France/Poland story in this case.</p>&#10;<p>People who are buying a boat care a lot about dimensions because one of the hardest parts is finding a place that’s big enough&#10;and deep enough to park it. The 795 is 7.34m or or 24’4&quot; long, and 2.99m or 9’9&quot; wide, with a hull depth of a mere 0.56m or &#10;1’10&quot;<span class="dashes"> —</span> that’s with the outboard hoisted, which is how you normally park it.</p>&#10;<p>The 795 comes with a Yamaha outboard, either 150 or 200hp, and&#10;<a href="https://app.jeanneau.com/static/media/document/cdf71cdc7feef6185a87d83ba9fc3356.pdf?_ga=2.194503533.1188026391.1565547335-1033419146.1565066803&amp;_gac=1.208455206.1565547335.EAIaIQobChMIk-Sqobb74wIVyMDACh0jQQCxEAAYASAAEgIQGvD_BwE">lots&#10;of options</a>. It’s got a modest-sized berth in the bow, a tiny&#10;but functional head (as in bathroom), and similarly tiny stove and fridge. What electronics you get apparently depends on the&#10;dealer.</p>&#10;<h2 id="p-6">Good: Engine</h2>&#10;<p>We have the &#10;<a href="https://yamahaoutboards.com/en-us/home/outboards/350-150-hp/in-line-4">Yamaha F200</a> and since it’s an <i>out</i>board,&#10;there’s more room <i>in</i>side the boat. I’d never really been aware of this line of motors but now when I walk around any marina I&#10;see that somewhere between a third and a half of the powerboats are wearing them. So, right in the middle of the mainstream.</p>&#10;<p>It’s got a very decent little electronic control screen on the dashboard and the docs are clear and comprehensive.</p>&#10;<p>We set it at 4500RPM and it pushes the boat along at a little over 40km/h, depending on wind and waves. If you open it wide up on&#10;smooth water you can get up &#10;well over fifty clicks but the experience is <em>not</em> relaxing, or cheap either.</p>&#10;<h2 id="p-9">Good: Comfort</h2>&#10;<p>Not just good, excellent. The pilothouse has room for a driver and two more people in comfort, four if they’re not&#10;chunky or need extra personal space. (Protip: The aft bench is way more comfy.) The cockpit out back has forward-facing seating&#10;for three with a cushion to lean back on, and then a couple more benches but they’re less comfy. &#10;We’ve been out for a slow cruise on a warm night to watch fireworks with seven aboard and&#10;it was just fine. </p>&#10;<img alt="Fireworks in English Bay, photographed from a Jeanneau 795" src="https://www.tbray.org/ongoing/When/201x/2019/08/06/IMG_20190731_221148.png"></img>&#10;<p>The pilothouse is really the best feature. It has a sliding “Alaska bulkhead” which means a glass door that closes, leaving the&#10;motor and its racket outside; inside, you can have a civilized conversation without shouting.</p>&#10;<h2 id="p-24">Good: Swimming platform</h2>&#10;<p>It’s just big enough and has a nice practical swimming ladder. We’ve used it every time we’ve been to the cabin. I shot that&#10;fireworks picture above sitting on the platform dangling my feet in the Pacific; very relaxing.</p>&#10;<h2 id="p-7">Bad: Living quarters</h2>&#10;<p>While they advertise two berths, realistically there’s just not enough space for more than one couple and they’d better be &#10;intimate. What with the tiny fridge and stove, I don’t think this is the boat for a lengthy family&#10;cruise up a wild coastline.</p>&#10;<h2 id="p-10">Good: Windshield</h2>&#10;<p>And I mean awesome. This puppy’s front glass is the size of a small European nation and when you’re sailing home with the sun&#10;behind you in a long Canadian sunset with the mountains filling the sky in front, well, there just aren’t words for that.</p>&#10;<img alt="Vancouver through Jeanneau 795 windshield" src="https://www.tbray.org/ongoing/When/201x/2019/08/06/IMG_20190811_154813.png"></img>&#10;<div class="caption"><p>Coming into a Vancouver from a weekend at the cottage; about two thirds of the windshield are shown.&#10;That’s the West End at the left and the Burrard Street&#10;Bridge behind the wiper. The little grey screen on the left is the Yamaha engine readout; some timing thing prevents&#10;the Pixel 2 from photographing it properly.</p></div>&#10;<p>The wipers’ coverage isn’t that great, leaving swathes of uncleaned glass in dirty weather, but you can see the&#10;important stuff. And it comes with a windshield-washing squirter system just like your car’s, which turns out to be&#10;brilliant when you hit big waves and they splash up and want to leave sticky salt crystals where you’re trying to look out. You&#10;load it with windshield fluid from the gas station.</p>&#10;<p>It’s worth mentioning the side windows too, which open and close easily and let loads of fresh air in at cruising speed without&#10;blasting your head off, and seem completely rain-proof too.</p>&#10;<h2 id="p-12">Good: Bow thruster</h2>&#10;<p>This is magic. We have a nice easy tie-up along the side of a dock, not crammed into a little slip, but it’s on the left as&#10;you come in and the boat wants to be tied up with its right side to the dock, so a 180° turn in tight quarters is called for.&#10;With the thruster and a light touch, it’s reasonably straightforward. The thruster is also useful as compensation for any dumb &#10;piloting errors around the dock<span class="dashes"> —</span> of course, these <em>never</em> happen when I’m at the wheel.</p>&#10;<h2 id="p-13">Good: It’s hackable</h2>&#10;<p>In the Jeanneau owners’ community I found an active boat-improvement culture; they’re always adding something or replacing&#10;something else.&#10;By dint of extensive research from primary sources, by which I mean watching YouTube videos, I have learned how to attach things to&#10;fiberglass (Protip: Get a countersink bit for your drill) and have so far improved ours by fastening the fire extinguisher to a&#10;handy bulkhead, equipping the head with a toilet-paper rod, and installing a garbage-bag holder. Call me Ishmael.</p>&#10;<p>There are a variety of surfaces suitable for equipping with electronic upgrades or just decorations. We’ve decorated a couple&#10;with family photos.</p>&#10;<h2 id="p-14">Bad: Documentation</h2>&#10;<p>Hailing from the technology space means that I should be restrained in criticizing other professions’ end-user documentation.&#10;The boat came with a nice Jeanneau-branded satchel full of dead trees; the quality of exposition and language is, well,&#10;mixed. Highlights are the books for the Yamaha engine and the boat itself. The low point is the Lowrance navigation electronics tome,&#10;obviously executed by manic pixies on acid. The information is more or less all there but requires deep digging and Zen calm to&#10;extract.</p>&#10;<p>My favorite though is the anchor-winch system, which is written in impenetrably-nautical English. Fortunately it’s&#10;accompanied by a diagram with all the parts carefully named and numbered. Unfortunately, about half the nautical names studding the&#10;text do not appear in the picture.</p>&#10;<p>To be fair, I managed to figure it out well enough to anchor us (in shallow water with nearly no wind) for&#10;firework-watching.</p>&#10;<img alt="My niece capturing a water-color of Indian Arm" src="https://www.tbray.org/ongoing/When/201x/2019/08/06/IMG_20190722_131917.png"></img>&#10;<div class="caption"><p>My niece Anne capturing a water-color impression of&#10;<a href="https://en.wikipedia.org/wiki/Indian_Arm">Indian Arm</a>.</p></div>&#10;<h2 id="p-15">Good: Piloting</h2>&#10;<p>The driver’s seat is comfy, the steering and throttle are crisp and responsive, and the view forward and aft is excellent.&#10;Steering at speed is a little heavier and slower than our previous inboard-outboard, but it’s plenty good enough to&#10;dodge a floating log. I’d actually like a bigger steering wheel that’s closer to me, so there’s another boat-improvement&#10;project.</p>&#10;<h2 id="p-16">Good: Access</h2>&#10;<p>Getting from the cockpit around to the foredeck, and up and down the sides for washing and so on, is all dead easy. The cabin is&#10;a little off-center, leaving a walkway along one side; and both sides have intelligently-placed handholds to make things easy&#10;and safe.</p>&#10;<h2 id="p-17">Bad: Flat bottom</h2>&#10;<p>The draft is remarkably small and the bottom, compared to the last boat, is pretty flat. This means that when you hit big&#10;waves, for example a ferry wake that you stupidly failed to notice until you were right on top of it cruising at 40km/h, you tend to&#10;skip along from wave to wave, hitting each one with a jarring “slap” of the flat bottom. This can fling passengers about a bit&#10;in a seriously uncomfortable way. Protip: Be on the sharp lookout for incoming waves and slow the hell down.</p>&#10;<p>I’m not a bossy skipper but we have imposed one rule: If you want to move around the cabin, say so and we’ll slow down while you&#10;do. This after I nearly put my niece in orbit when she was going to get her backpack and I slammed on the brakes because I&#10;thought I saw some peril out front.</p>&#10;<h2 id="p-18">Good: Home office</h2>&#10;<p>I’m doing WFB (work from boat) one afternoon most weeks now, and it’s just terrific. The aft passenger-side bench is reasonably&#10;ergonomic and the table’s at a sane height. I often make a cup of tea and stash a snack in the fridge. I have taken conference&#10;calls, drafted and reviewed documents, reviewed code, and once (cackling with glee) checked in code to the AWS production&#10;repository.</p>&#10;<p>I haven’t convinced any colleagues to come down for an in-boat meeting yet; it’s just a matter of time. But I’m just not&#10;gonna install whiteboards.</p>&#10;<h2 id="p-19">Mixed: Online community</h2>&#10;<p>The biggest is the&#10;<a href="http://jeanneau.proboards.com/">Owners’ Forum</a>, which is OK but suffers from Jeanneau having so many products. There’s&#10;also a group on Facebook, obviously. I’ve picked up valuable tips in both places.</p>&#10;<h2 id="p-20">Bad: Missing pieces</h2>&#10;<p>There’s no automatic bilge pump, which I find shocking, but on the other hand I have to say it stays almost bone-dry down&#10;there, even with mixed hot &amp; cold weather, bashing through pretty rough seas, several days of heavy rain, and regular&#10;thorough washing (the honeymoon is still on).</p>&#10;<p>There’s no horn; our previous boat had one and while I only ever used it once or twice, I was glad of it.</p>&#10;<p>There’s no built-in heater. Our journeys typically aren’t long enough to need one on the water, but this might be an issue in&#10;home-office mode. Multiple owners have installed diesel heaters, and I have a nice little AC space heater that I’ll try out when on shore&#10;power. Similarly, there’s no air conditioner, which is more of a problem than you might think up here at 49°30'N because the&#10;pilothouse has so much glass, it’s a greenhouse.</p>&#10;<img alt="Jeanneau 795 tied up at Keats Island" src="https://www.tbray.org/ongoing/When/201x/2019/08/06/XT301274.png"></img>&#10;<p>There are only two cleats, fore and aft. When you’re tying up to a floating dock for a weekend in Howe Sound (see above), which&#10;after all is part of the Pacific, you really want one and ideally two spring lines along with the basic fore and aft. Several&#10;owners have figured out how to install an extra central cleat, and I’ll look to do that.</p>&#10;<h2 id="p-21">And your conclusion is?</h2>&#10;<p>Count the “Good”, “Bad”, and “Mixed” headlines above. The good stuff wins, by a wide margin. I’ve got no standing to say whether&#10;or not this is a winner or loser against the competition because I haven’t owned the competition. What I can say, a few months in,&#10;is that it meets our needs very well.</p>&#10;<h2 id="p-22">Accessorizing</h2>&#10;<p>Here are the things I’ve purchased to improve the experience:</p>&#10;<ol>&#10;<li><p><a href="https://amzn.to/33uqhfE">SeaTeak 62634 Insulated Four-Drink Binocular Rack</a><span class="dashes"> —</span> I have two of these things&#10;velcro’ed down behind the sink. The binoc-shaped spaces also work for big coffee mugs with handles.</p></li>&#10;<li><p><a href="https://amzn.to/2YYqiZZ">Dell Ultra HD 4K 24-Inch Monitor P2415Q</a><span class="dashes"> —</span> just the right&#10;size for outboarding to my company MBPro, and comes with USB so I only need one plug to power everything. I need to install something to&#10;hang it up on the berth bulkhead when not in use, at the moment it’s lying face-down on the mattress, which is OK but takes space.</p></li>&#10;<li><p><a href="https://amzn.to/2KH1wVe">4.5&quot; 12V Stepless Speed Car Fan</a><span class="dashes"> —</span> sold by different vendors&#10;in the US &amp; Canada. Like I said, it can get toasty in the pilothouse but this guy takes care of it just by keeping the air&#10;moving.</p></li> &#10;<li><p><a href="https://www.boatoutfitters.com/rod-holder-mount-flagpole">Rod Holder Mount Boat &#10;Flagpole</a><span class="dashes"> —</span> the 795 has two fishing-rod holders but no flagpole. Hey-presto! The Canadian flag&#10;looks great out there but we haven’t figured out which minor ensign to fly beneath it. Patti Smith fan club? Antifa emblems? Not&#10;sure.</p></li>&#10;<li><p>From Davis Instruments, Shockles&#10;<a href="https://amzn.to/2YZrFn2">LineSnubbers</a> and&#10;<a href="https://www.davisinstruments.com/product/linegrabber/">LineGrabbers</a>; nothing specific to this boat, just a coincidence&#10;that I discovered them recently. If you tie up where it might get rough, you need these.</p></li>&#10;</ol>&#10;<h2 id="p-5">Summary</h2>&#10;<p>My relationship with the previous boat was pretty prosaic. It got us back and forth to the cabin and was kind of charming with&#10;its wood trim, but it always needed fixing and there were important subsystems I never learned to understand. This is a whole&#10;different kettle of fish. I’m starting to &#10;develop sympathy with the oft-repeated Kenneth Grahame quote from <cite>The Wind in the Willows</cite>:</p>&#10;<blockquote><p><i>Believe me, my young friend, there is nothing<span class="dashes"> —</span> absolutely &#10;nothing<span class="dashes"> —</span> half so much worth doing as simply messing about in boats. Simply messing… about in &#10;boats<span class="dashes"> —</span> or with boats. In or out of ’em, it doesn’t matter. Nothing seems really to matter, that’s &#10;the charm of it. Whether you get away, or whether you don’t; whether you arrive at your destination or whether you reach somewhere &#10;else, or whether you never get anywhere at all, you’re always busy, and you never do anything in particular; and when you’ve done it &#10;there’s always something else to do, and you can do it if you like, but you’d much better not.</i></p></blockquote></div>&#10;<div class="permalink"><a title="All content written by Tim Bray and photos by Tim Bray Copyright Tim Bray, some rights reserved, see /ongoing/misc/Copyright">©</a> <a href="https://www.tbray.org/ongoing/When/201x/2019/08/06/Jeanneau-795">Tim Bray at <time datetime="2019-08-12T23:44:27Z" title="GMT">August 12, 2019 11:44 PM</time></a></div></div>&#10;&#10;<h2><time datetime="2019-08-10">August 10, 2019</time></h2>&#10;&#10;<div class="news leonard-richardson">&#10;<h3><a href="https://www.crummy.com/" title="News You Can Bruise">Leonard Richardson</a>—<a href="http://www.crummy.com/2019/08/09/0">Secretly Public Domain: Update</a></h3>&#10;<div class="content">My <a href="https://www.crummy.com/2019/07/22/0">&quot;Secretly Public Domain&quot;</a> project got a lot of attention, which is great, but it also gave me a lot more work to do and pointed to some things that hadn't been explained very well. I've done that work, and here's an update:&#10;&#10;<p><b>Topline number is 73%</b>&#10;&#10;</p><p>My original estimate was that 80% of pre-1963 books were not renewed. This was based on a couple of inaccurate assumptions, the big one being that I was counting works originally published in a foreign country. Those works might have lapsed into the public domain at some point, but the US copyright has since been restored by treaty. So their renewal status isn't really relevant.&#10;&#10;</p><p>Of the books where renewal status <i>is</i> relevant, here are the most recent statistics:&#10;&#10;</p><ul>&#10;<li>73% have no renewal record at all.&#10;</li><li>19% have a renewal record that's an excellent match.&#10;</li><li>8% are in a grey area. They have one or more renewal records, but none of them are an excellent match. One of them might be legit, or they might all be renewals for totally different books. They need to be checked manually.&#10;</li></ul>&#10;&#10;<p><b>Credits</b>&#10;&#10;</p><p>The <a href="https://botsin.space/@SecretlyPublicDomain">&quot;Secretly Public Domain&quot; bot</a> was a publicity stunt to draw attention to the machine-readable registration records. It <a href="https://www.vice.com/en_us/article/kz4e3e/millions-of-books-are-secretly-in-the-public-domain-you-can-download-them-free">worked great</a>, but it also drew attention to me, the person doing the publicity stunt, even though I had basically nothing to do with the original work. For the record, here are the people who actually did the work. The project inside NYPL was run by Sean Redmond, Greg Cram, and Josh Hadro (now of IIIF). The work of making the copyright records machine-readable was done by <a href="https://www.dataconversionlaboratory.com/">Data Conversion Laboratory</a>.&#10;&#10;</p><p><b>Buried treasure</b>&#10;&#10;</p><p>Most of the books whose copyright wasn't renewed are really obscure titles, but without looking very hard I found a very well-known science fiction novel that has no renewal record. I'm not mentioning the name as an incentive to get people to look at the data themselves. It's probably not the only well-known work whose copyright wasn't renewed.&#10;&#10;</p><p><b>How to make your own list</b>&#10;&#10;</p><p>My original estimate of 80% was based on the quick and dirty script I used to write the Mastodon bot. To fix the &quot;foreign works&quot; problem and to produce a dataset that would stand up to scrutiny, I published <a href="https://github.com/leonardr/cce-python">a Python library</a> specifically for handling this data. It's got business logic for making determinations like &quot;was this book published in a foreign country&quot; and &quot;how well does this renewal record match this registration record&quot;. You run the scripts and at the end you have a bunch of JSON files with consolidated data. If you think there are bad assumptions, you can change the business logic and run the scripts again.&#10;&#10;</p><p><b>How to see the data</b>&#10;&#10;</p><p>There were a number of requests for this data in a tabular form. I totally understand where this is coming from, and it's certainly the easiest way to get into the data, but it's tricky, because converting the JSON to tabular data destroys information that would be useful for taking the next step (see below).&#10;&#10;</p><p>So, I've done the best I can. I added a script to the end of my Python workflow which generates three huge tab-separated files, and I put those files in the <a href="https://github.com/leonardr/cce-spreadsheets">cce-spreadsheets</a> project. This should be good for getting an overview of which books were renewed, which weren't, and which are foreign publications.&#10;&#10;</p><p><b>What's next?</b>&#10;&#10;</p><p>Discovering that a book published in 1950 is in the public domain, doesn't make a free digitized version of that book automatically appear. Somebody has to do the work. At this point we go from fast data processing to really slow research and digitization work. You or I can now make a near-complete list of unrenewed books in a few minutes, but that list just represents an enormous to-do list for someone.&#10;&#10;</p><p>There are basically three &quot;someones&quot; who might step up here: Project Gutenberg, Hathi Trust, and Internet Archive.&#10;&#10;</p><p><i>Project Gutenberg</i>&#10;&#10;</p><p>As I mentioned earlier, Project Gutenberg digitized the copyright renewal records some time ago, and they use them all the time. They have <a href="https://www.gutenberg.org/wiki/Gutenberg:Copyright_How-To#Rule_6:_Failure_of_U.S._Works_to_Comply_With_Renewal_Requirements_Prior_to_1964">a section of their Copyright How-To</a> explaining how to check whether a particular title was renewed, and whether the renewal matters. There are other steps to clear a pre-1963 work: you have to verify that the author lived in the US at the time, stuff like that. The newly digitized registration records can help with some of this, and my data processing script that combines registration and renewal can help with more of it, but there's still some manual work you have to do for each book.&#10;&#10;</p><p>Once that work is done, Project Gutenberg volunteers will locate a copy of the book, scan it, and OCR it (assuming there's no existing scan). Then they'll proofread it and put out HTML and plain-text editions. As you can imagine, this process takes a really long time, but the result is a clean, accurate copy of the book that can be read on its own or reused in other projects. The catch is that somebody has to care enough about a specific book to go through all this trouble.&#10;&#10;</p><p><i>Hathi Trust</i>&#10;&#10;</p><p>Hathi Trust already has scans of a lot of these 1924-1963 books. They just don't make these scans available to the public, because as far as they know, all these books are still under copyright. If they were convinced otherwise, they'd open up the scans—they opened up almost all of their 1923 stuff this January when the 95-year copyright term finally expired. So we have to make a case for opening up these books.&#10;&#10;</p><p>Earlier, NYPL took the highest-circulating 1924-1963 books in our research collection and checked to see which ones lacked a renewal record. We sent the list to Hathi Trust, and they did their own verification and opened up some of the books: <a href="https://babel.hathitrust.org/cgi/pt?id=mdp.39015008300397&amp;view=1up&amp;seq=7"><i>The Americans in Santo Domingo</i></a> from 1928 is an example. Once Hathi opens up a scan, it's available to the public. It also becomes possible for Gutenberg et al. to turn the raw scan into something more readable.&#10;&#10;</p><p>In the near future, people at NYPL (not me) will be talking to people at Hathi Trust about what kind of evidence is necessary, in general, to convince them that the copyright on a 1924-1963 book has lapsed. Then we'll be able to give them a list of all the books where we can find that kind of evidence. There'll still be a verification process on the Hathi Trust side -- at the very least, they have to go through the book and make sure it doesn't contain unauthorized reprints from other books -- but it should streamline things quite a bit.&#10;&#10;</p><p><i>Internet Archive</i>&#10;&#10;</p><p>Internet Archive is a wild card here. They scan a lot of books, and I could see them treating the &quot;unrenewed&quot; list as a big list of additional books to scan, but it would be a new undertaking. Making unrenewed works available is something Project Gutenberg volunteers do already, and it's something that Hathi Trust could do relatively easily, but with Internet Archive it's more the <i>sort</i> of thing they'd do.&#10;&#10;</p><p><b>Data problems</b>&#10;&#10;</p><p>That 8% of grey area, where it's not clear whether or not a book was renewed, points to the general difficulty of meshing together two sets of public records published across half a century and digitized by different people. The grey area represents a lot of manual work that has to be done, and of course there's always the fear that a book that seems to be free and clear actually isn't: the title page says &quot;printed in Canada&quot;, or the smoking-gun copyright renewal didn't show up because its ID number was typed wrong.&#10;&#10;</p><p>There's going to be a lot of manual work in the process of clearing these books, but there's no reason to wait until everything's perfect to get started. My preference is to cast a very wide net, try to find any renewal that might <i>possibly</i> be related to a registration, and make the grey area as big as possible. We know that a majority of 1924-1963 books will always come up &quot;no renewal&quot;, because there are way more registrations than renewals. We can deal with those and then take a closer look at the grey area.&#10;&#10;</p><p><b>Other media</b>&#10;&#10;</p><p>A couple of people asked whether it was possible to do this for other media. The good news is that there are volumes of the Catalog of Copyright Entries for:&#10;&#10;</p><ul>&#10;&#10;<li>&quot;Books, Pamphlets, Serials, and Contributions to Periodicals&quot;&#10;</li><li>&quot;Periodicals&quot;&#10;</li><li>&quot;Drama and Works Prepared for Oral Delivery&quot;&#10;</li><li>&quot;Music&quot;&#10;</li><li>&quot;Maps and Atlases&quot;&#10;</li><li>&quot;Works of Art; Reproductions of Works of Art; Scientific and Technical Drawings; Photographic Works; Prints and Pictoral Illustrations&quot;&#10;</li><li>&quot;Commercial Prints and Labels&quot;&#10;</li><li>&quot;Motion Pictures and Filmstrips&quot;&#10;</li></ul>&#10;&#10;<p>All of these books have scans hosted at the Internet Archive. You can get an overview by looking at Penn's index of the CCE from a specific year, <a href="https://onlinebooks.library.upenn.edu/cce/1960r.html">let's say 1960</a>.&#10;&#10;</p><p>As far as I know--and I do know about one big exception--the rules here are the same as for books. If something wasn't registered, or the registration wasn't renewed, then the copyright on a work first published in the US 1924-1963 has lapsed.&#10;&#10;</p><p>Now, the bad news. We have scans of the Catalog of Copyright Entries, but the only bits where both the registration and renewals are machine-readable is &quot;Part 1 Class A&quot;. That's the &quot;Books&quot; part of &quot;Books, Pamphlets, Serials, and Contributions to Periodicals&quot;, and it represents only about 30% of the total.&#10;&#10;</p><p>If you want to see whether there's a renewal record for a fishing map of Kansas, or a magazine article, or a cool retro ad, or a classic film noir, or a vintage restaurant placemat, it is quite possible, but it's a huge pain. And you can forget about running the numbers on <i>all</i> the movies or <i>all</i> the restaurant placemats. We don't have a good picture of what's in there.&#10;&#10;</p><p>The situation is this way because the Catalog of Copyright Entries is huge, and digitizing it is boring/expensive. Up to this point, book nerds are the only nerds who've put in the time and money to make &quot;their&quot; part of the CCE machine-readable. NYPL has plans to give this same treatment to the entire CCE, but the crucial part of the plan where we have money to pay someone to do this is currently missing; it's a matter for fundraising.&#10;&#10;</p><p>The second piece of bad news regards music. When we in 2019 think about &quot;music&quot;, we think of sound recordings. When the CCE thinks about &quot;music&quot;, it's thinking about the underlying composition—basically the stuff that would go on the sheet music. Until 1972 there was no federal-level copyright on sound recordings, and the result is that music copyrights are a bigger mess than other types of copyright. I do not want to get into territory I don't understand, but suffice to say that for a vinyl record to be in the public domain, it's necessary but not sufficient that the copyright on the underlying composition have expired. So the CCE can only help so much.</p></div>&#10;<div class="permalink"><a title="Licensed under a Creative Commons License">©</a> <a href="http://www.crummy.com/2019/08/09/0">Leonard Richardson at <time datetime="2019-08-10T11:35:51Z" title="GMT">August 10, 2019 11:35 AM</time></a></div></div>&#10;&#10;<div class="news russell-beattie">&#10;<h3><img class="icon" src="http://www.russellbeattie.com/favicon.ico"></img><a href="http://www.russellbeattie.com/blog" title="Russell Beattie">Russell Beattie</a>—<a href="http://www.russellbeattie.com/blog/try-my-game">Try my game!</a></h3>&#10;&#10;<div class="permalink"><a href="http://www.russellbeattie.com/blog/try-my-game">by Russell Beattie at <time datetime="2019-08-10T07:07:59Z" title="GMT">August 10, 2019 07:07 AM</time></a></div></div>&#10;&#10;<h2><time datetime="2019-08-09">August 09, 2019</time></h2>&#10;&#10;<div class="news apache-software-foundation">&#10;<h3><a href="https://blogs.apache.org/foundation/" title="The Apache Software Foundation Blog">Apache Software Foundation</a>—<a href="https://blogs.apache.org/foundation/entry/the-apache-news-round-up134">The Apache News Round-up: week ending 9 August 2019</a></h3>&#10;<div class="content">Happy Friday! Let's take a look back on our activities over the past week:&#10;&#10;<p>&#10;Success at Apache – the monthly blog series that focuses on the people and processes behind why the ASF &quot;just works&quot;.<br></br>&#10;  - &quot;The Path To Berlin&quot; by Isabel Drost-Fromm <a href="https://s.apache.org/aq48m">https://s.apache.org/aq48m</a>&#10;</p>&#10;&#10;<p>ASF Board – management and oversight of the business affairs of the corporation in accordance with the Foundation's bylaws.<br></br> - Next Board Meeting: 21 August 2019. Board calendar and minutes <a href="http://apache.org/foundation/board/calendar.html">http://apache.org/foundation/board/calendar.html</a></p>&#10;&#10;<p>ApacheCon™ – the ASF's official global conference series, bringing Tomorrow's Technology Today since 1998<br></br>&#10;&#10; - Register today for ApacheCon North America and Europe. We look forward to seeing you in Las Vegas and Berlin! <a href="https://www.apachecon.com/">https://www.apachecon.com/</a><br></br>&#10;&#10;</p><p>ASF Infrastructure – our distributed team on three continents keeps the ASF's infrastructure running around the clock.<br></br> - 7M+ weekly checks yield uptime at 99.98%. Performance checks across 50 different service components spread over more than 250 machines in data centers around the world. <a href="http://www.apache.org/uptime/">http://www.apache.org/uptime/</a></p>&#10;&#10;<p>Apache Code Snapshot – this week, 830 Apache contributors changed 1,165,840 lines of code over 3,701 commits. Top 5 contributors, in order, are: Daniel Gruno, Etienne Chauchot, Andrea Cosentino, Claus Ibsen, and Tilman Hausherr.</p>&#10;&#10;<p>Apache Project Announcements – the latest updates by category.</p>&#10;&#10;<p> &#10;Big Data -- <br></br>&#10; &#10; - Apache Accumulo 2.0.0 released <a href="http://accumulo.apache.org/"> http://accumulo.apache.org/</a><br></br>&#10; - Apache Ranger 2.0.0 released <a href="http://ranger.apache.org/"> http://ranger.apache.org/</a>&#10;&#10;</p>&#10;&#10;&#10;<p> &#10;Embedded OS -- <br></br>&#10; &#10; - Apache Mynewt 1.7.0 and Apache NimBLE 1.2.0 released <a href="http://mynewt.apache.org/"> http://mynewt.apache.org/ </a>&#10;&#10;</p>&#10;&#10;&#10;<p> &#10;Libraries -- <br></br>&#10;  - Apache Tika 1.22 released <a href="http://tika.apache.org/"> http://tika.apache.org/ </a>&#10;<br></br>&#10;  - Apache Tuweni (Incubating) 0.8.1 released <a href="http://tuweni.incubator.apache.org/"> http://tuweni.incubator.apache.org/ </a>&#10;<br></br>&#10;  - Apache Commons DBCP 2.7.0 released <a href="http://commons.apache.org/dbcp/">http://commons.apache.org/dbcp/ </a>&#10;<br></br>&#10;  - Apache Groovy 2.5.8 and 3.0.0-beta-3 released <a href="http://groovy.apache.org/">http://groovy.apache.org/</a>&#10;&#10;</p> &#10;&#10;&#10;<p></p>&#10; &#10;<p>&#10; <strong>Did You Know?</strong>&#10; </p><div>&#10; &#10; <p>&#10;  - Did you know that the Geospatial Track at ApacheCon North America is organized in collaboration with the Open Geospatial Consortium?<br></br> Learn more at <a href="https://feathercast.apache.org/2019/07/31/apachecon-qa-with-geospatial-software-track-leader-george-percivall-of-open-geospatial-consortium/">https://feathercast.apache.org/2019/07/31/apachecon-qa-with-geospatial-software-track-leader-george-percivall-of-open-geospatial-consortium/ </a>&#10; </p>&#10; &#10;<p>&#10; - Did you know that 11-year-old ApacheCon keynoter Samaira Mehta will hold a &quot;Yes, 1 Billion Kids Can Code&quot; Hackathon to help kids (first grade and up) to learn how to code? Register at <a href="https://www.eventbrite.com/e/yes-1-billion-kids-can-code-registration-66834093573">https://www.eventbrite.com/e/yes-1-billion-kids-can-code-registration-66834093573</a>&#10;</p> &#10;&#10;<p>&#10; - Did you know that you can have swag from your favorite Apache project added to the ComDev store on RedBubble <a href="https://www.redbubble.com/people/comdev">https://www.redbubble.com/people/comdev</a> ? Grab the project logo from <a href="http://www.apache.org/logos/">http://www.apache.org/logos/</a> and request it be added by emailing <a href="mailto:dev@community.apache.org"> dev@community.apache.org</a>&#10;</p>&#10;&#10; &#10; </div>&#10;<p></p>&#10;&#10;&#10;&#10;<p><strong>Apache Community Notices:</strong></p>&#10;<p> - Celebrating 20 Years Community-led Development &quot;The Apache Way&quot; <a href="https://s.apache.org/ASF20thAnniversary">https://s.apache.org/ASF20thAnniversary</a></p>&#10; <p> - ASF Founders look back on 20 Years of the ASF <a href="https://blogs.apache.org/foundation/entry/our-founders-look-back-on">https://blogs.apache.org/foundation/entry/our-founders-look-back-on</a></p>&#10; <p> - The Apache Way to Sustainable Open Source Success <a href="https://s.apache.org/GhnI">https://s.apache.org/GhnI</a></p>&#10; <p> - Foundation Reports and Statements <a href="http://www.apache.org/foundation/reports.html">http://www.apache.org/foundation/reports.html</a></p>&#10; <p> - ApacheCon: Tomorrow's Technology Today since 1998 <a href="http://s.apache.org/ApacheCon">http://s.apache.org/ApacheCon</a></p>&#10; <p> - ASF Operations Summary: Q2 FY2019 <a href="https://s.apache.org/d2Fq">https://s.apache.org/d2Fq</a></p>&#10; <p> - ASF Annual Report for FY2018 <a href="https://s.apache.org/FY2018AnnualReport">https://s.apache.org/FY2018AnnualReport</a></p>&#10; <p> - The Apache Software Foundation 2018 Vision Statement <a href="https://s.apache.org/zqC3">https://s.apache.org/zqC3</a></p>&#10; <p> - Foundation Statement –Apache Is Open. <a href="https://s.apache.org/PIRA">https://s.apache.org/PIRA</a></p>&#10; <div>&#10; <p> - &quot;Success at Apache&quot; focuses on the processes behind why the ASF &quot;just works&quot;. <a href="https://blogs.apache.org/foundation/category/SuccessAtApache">https://blogs.apache.org/foundation/category/SuccessAtApache</a></p>&#10; </div>&#10; <div>&#10; <p> - Please follow/like/re-tweet the ASF on social media: <a href="https://twitter.com/TheASF">@TheASF on Twitter</a> and on LinkedIn at <a href="https://www.linkedin.com/company/the-apache-software-foundation">https://www.linkedin.com/company/the-apache-software-foundation</a></p>&#10; <p> - Do friend and follow us on the Apache Community Facebook page <a href="https://www.facebook.com/ApacheSoftwareFoundation/">https://www.facebook.com/ApacheSoftwareFoundation/</a>and Twitter account <a href="https://twitter.com/ApacheCommunity">https://twitter.com/ApacheCommunity</a></p>&#10; </div>&#10; <div>&#10; <p><a href="https://feathercast.apache.org/"></a></p>&#10; </div>&#10; <div>&#10; <p> - The list of Apache project-related MeetUps can be found at <a href="http://events.apache.org/event/meetups.html">http://events.apache.org/event/meetups.html</a></p>&#10; </div>&#10; <div>&#10; <p> - Registration is open for ApacheCon North America 9-12 September 2019 <a href="http://apachecon.com/">http://apachecon.com/</a></p>&#10; <p> - Spark + AI Summit 2019 will be held 15-17 October in Amsterdam <a href="https://databricks.com/sparkaisummit/">https://databricks.com/sparkaisummit/</a></p>&#10; <p> - Registration open for ApacheCon Europe 22-24 October 2019 <a href="http://apachecon.com/">http://apachecon.com/</a></p>&#10; <p> - Find out how you can participate with Apache community/projects/activities --opportunities open with Apache Camel, Apache HTTP Server, and more! <a href="https://helpwanted.apache.org/">https://helpwanted.apache.org/</a></p>&#10; </div>&#10; <div> - Are your software solutions Powered by Apache? Download &amp; use our &quot;Powered By&quot; logos <a href="http://www.apache.org/foundation/press/kit/#poweredby">http://www.apache.org/foundation/press/kit/#poweredby</a></div>&#10; <div><br></br></div>&#10; <div>= = =</div>&#10; <div><br></br></div>&#10; <div>For real-time updates, sign up for Apache-related news by sending mail to announce-subscribe@apache.org and follow @TheASF on Twitter. For a broader spectrum from the Apache community, <a href="https://twitter.com/PlanetApache">https://twitter.com/PlanetApache</a> provides an aggregate of Project activities as well as the personal blogs and tweets of select ASF Committers.</div></div>&#10;<div class="permalink"><a href="https://blogs.apache.org/foundation/entry/the-apache-news-round-up134">by Swapnil M Mane at <time datetime="2019-08-09T09:24:48Z" title="GMT">August 09, 2019 09:24 AM</time></a></div></div>&#10;&#10;<div class="news charles-stross">&#10;<h3><a href="http://www.antipope.org/charlie/blog-static/" title="Charlie's Diary">Charles Stross</a>—<a href="http://www.antipope.org/charlie/blog-static/2019/08/upcoming-events-4.html">Upcoming events</a></h3>&#10;<div class="content" xml:lang="en"><p>Next week I'm off to the land mass to the west of me, visiting Dublin and Belfast for the <a href="https://dublin2019.com">World Science Fiction Convention</a>, then the following weekend Belfast for <a href="https://titancon.com/2019/index.php">Titancon</a>, the EuroCon (European annual SF convention). This is not without complication: sensing vulnerability, my ancient and venerable washing machine picked this week to finally expire, forcing me to embark on a perilous quest for a replacement—not to mention a launderette with service wash facilities—during the Edinburgh Festival. (Which is why this update is late.)</p>&#10;&#10;<p>(<em>Note: this is not a solicitation for advice on whether a hand-powered mangle and hot tub combination is more environmentally sound than a Miele TwinDos automatic washer-drier, or the best way to dry my jeans in the toilet, or suchlike helpfulness. As I approach my 55th birthday I'm pretty sure I'm on top of these issues.</em>)</p>&#10;&#10;<p>Anyway, I'm on the program at both conventions, and I'm posting an abbreviated version of my schedule below the fold.</p>&#10;&#10; <p>NOTE: Updates to the schedules for both conventions are best found via the <a href="https://events.grenadine.co">Grenadine Event Guide mobile app</a> (which both conventions are using for program updates—it's free to download).</p>&#10;&#10;<p>I'll try to amend this page as changes/additions happen.</p>&#10;&#10;<p><strong>Worldcon schedule</strong></p>&#10;&#10;<ul>&#10;<li><p>Thursday 15th: <strong>Panel: Writing Robot &amp; Non-human intelligence</strong> (1200-1250, Wicklow, Hall-1 (CCD)) (with Christopher Husberg, Martha Wells, Mika Koverola)</p></li>&#10;<li><p>Thursday 15th: <strong>Panel: Wild Cards: Wild West Trivia</strong> (1400-1530, Liffey-B, (CCD)) (with George R. R. Martin, Mary Anne Mohanraj, Carrie Vaughn, Paul Cornell, Peadar Ó Guilín, Emma Newman)</p></li>&#10;<li><p>Friday 16th: <strong>Signing</strong> (1530-1620, Signing space, Point Square Dublin)</p></li>&#10;<li><p>Saturday 17th: <strong>Panel: Technology we can't believe we're still using</strong> (1300-1350, ECOCEM Room (CCD)) (with Alison Scott, Tom Merritt (Sword and Laser), Dave O'Neill)</p></li>&#10;<li><p>Saturday 17th: <strong>Reading</strong> (content TBA) (1500-1520, ECOCEM Room (CCD))</p></li>&#10;<li><p>Sunday 18th: <strong>Panel: the politics of horror</strong> (1200-1300, Wicklow Room-1 (CCD)) (with F. Brett Cox (Norwich University), Rosanne Rabinowitz, Cristina Alves)</p></li>&#10;<li><p>Monday 19th: <strong>Panel: AIs and the female image</strong> (1030-1130, Odeon 1 Point Square Dublin)(with Madeline Ashby, Pat Cadigan, Dr V Anne Smith (University of St Andrews), Dr. Sara L. Uckelman (Durham University))</p></li>&#10;<li><p>Monday 19th: 1300-1400: <strong>Kaffeeklatch</strong> (CCD Level 3 Foyer, requires sign-up in advance)</p></li>&#10;</ul>&#10;&#10;<p><strong>Eurocon schedule</strong></p>&#10;&#10;<ul>&#10;<li><p>Thursday 22nd: <strong>Panel: Cthulhu/Loki 2020</strong> (1600-1700, Waterfront, Hilton Belfast) (with Misha, Renee Sieber, Petra, A Ming)</p></li>&#10;<li><p>Thursday 22nd: <strong>Titancon literature night</strong> (1900-2200, Waterfront, Hilton Belfast)</p></li>&#10;<li><p>Friday 23rd: <strong>Signing</strong> (1100-1200, Dealer's room)</p></li>&#10;</ul></div>&#10;<div class="permalink"><a href="http://www.antipope.org/charlie/blog-static/2019/08/upcoming-events-4.html">by Charlie Stross at <time datetime="2019-08-09T08:29:04Z" title="GMT">August 09, 2019 08:29 AM</time></a></div></div>&#10;&#10;<h2><time datetime="2019-08-08">August 08, 2019</time></h2>&#10;&#10;<div class="news aristotle-pagaltzis">&#10;<h3><img class="icon" src="http://plasmasturm.org/favicon.ico"></img><a href="http://plasmasturm.org/" title="plasmasturm.org">Aristotle Pagaltzis</a>—<a href="http://plasmasturm.org/log/canonloglines/">Canonical Log Lines</a></h3>&#10;<div class="content"><p><cite><a href="https://stripe.com/gb/blog/canonical-log-lines" title="Fast and flexible observability with canonical log lines">Brandur Leach</a></cite>:</p>&#10; <blockquote cite="https://stripe.com/gb/blog/canonical-log-lines">&#10; <p>Although logs offer additional flexibility in the examples above, we’re still left in a difficult situation if we want to query information <em>across</em> the lines in a trace. [… At Stripe, we] use <strong>canonical log lines</strong> to help address this. They’re a simple idea: in addition to their normal [<a href="https://brandur.org/logfmt">logfmt</a>-structured] log traces, requests […] also emit one long log line at the end that pulls all its key telemetry into one place. [… They] are a simple enough idea that implementing them tends to be straightforward regardless of the tech stack in use. […] Over the years our implementation has been hardened to maximize the chance that canonical log lines are emitted for <em>every</em> request, even if an internal failure or other unexpected condition occurred.</p>&#10; </blockquote></div>&#10;<div class="permalink"><a href="http://plasmasturm.org/log/canonloglines/">by Aristotle Pagaltzis at <time datetime="2019-08-08T23:35:14Z" title="GMT">August 08, 2019 11:35 PM</time></a></div></div>&#10;&#10;<div class="news scott-james-remnant" xml:lang="en-US">&#10;<h3><a href="https://netsplit.com" title="Netsplit.com">Scott James Remnant</a>—<a href="https://netsplit.com/swiftui/borders/">Borders</a></h3>&#10;<div class="content"><p>It seems a little odd to write a post about borders, since every post so far has already used them without calling them out. In all of the examples I’ve added borders to views and used the result in the previews, rather than drawing them in by hand.</p>&#10;&#10;&#10;&#10;<p>But I haven’t actually shown the code to do that, and it turns out that they’re slightly more interesting than you might expect.</p>&#10;&#10;&#10;&#10;<p>There is a single method for specifying the border for a view:</p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-function"><span class="hljs-keyword">func</span> <span class="hljs-title">border</span>&lt;S&gt;<span class="hljs-params">(<span class="hljs-number">_</span> content: S, width: CGFloat = <span class="hljs-number">1</span>)</span></span> -&gt; some <span class="hljs-type">View</span> <span class="hljs-keyword">where</span> <span class="hljs-type">S</span> : <span class="hljs-type">ShapeStyle</span></code></pre>&#10;&#10;&#10;<p>The first parameter is required and specifies a <em>shape style, </em>there’s a quite a few options for that, but fortunately <code>Color</code> confirms to the <code>ShapeStyle</code> protocol so for the simplest cases all we need to do is specify a color.</p>&#10;&#10;&#10;&#10;<p>The second parameter is optional and specifies the width of the border, defaulting to a single pixel.</p>&#10;&#10;&#10;&#10;<p>So it wouldn’t be a surprise that to draw a single pixel yellow border around a <code>Text</code> we would use code like this:</p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">ContentView</span> : <span class="hljs-title">View</span> </span>{&#10; <span class="hljs-keyword">var</span> body: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">Text</span>(<span class="hljs-string">&quot;Nogitsune Takeshi&quot;</span>)&#10; .font(.title)&#10; .border(<span class="hljs-type">Color</span>.yellow)&#10; }&#10;}</code></pre>&#10;&#10;&#10;<p>And this produces the same example I’ve used before, except with the border that’s always been in the preview actually stated in code now:</p>&#10;&#10;&#10;&#10;<figure class="wp-block-image"><img alt="text with a border" class="wp-image-52" src="https://netsplit.com/wp-content/uploads/2019/07/title_text.png"></img></figure>&#10;&#10;&#10;&#10;<p>But now time for the first surprise.</p>&#10;&#10;&#10;&#10;<p>You might expect that a border works a lot like a <a href="https://netsplit.com/swiftui/flexible-frames/">frame</a> or <a href="https://netsplit.com/swiftui/modifying-views/">padding</a>, adding a view around the <code>Text</code> with enough space to draw the border, and positioning the child inside it.</p>&#10;&#10;&#10;&#10;<p>Except they don’t, we can demonstrate this by increasing the width of the border:</p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">ContentView</span> : <span class="hljs-title">View</span> </span>{&#10; <span class="hljs-keyword">var</span> body: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">Text</span>(<span class="hljs-string">&quot;Nogitsune Takeshi&quot;</span>)&#10; .font(.title)&#10; .border(<span class="hljs-type">Color</span>.yellow, width: <span class="hljs-number">4</span>)&#10; }&#10;}</code></pre>&#10;&#10;&#10;<p>If this worked like padding, the border would increase in width around the text; instead we see something quite different:</p>&#10;&#10;&#10;&#10;<figure class="wp-block-image"><img alt="text with a thick border" class="wp-image-207" src="https://netsplit.com/wp-content/uploads/2019/08/text_border_thick.png"></img></figure>&#10;&#10;&#10;&#10;<p>Instead of surrounding the text, the border has overlaid it. In fact, <code>.border</code> creates a <a href="https://netsplit.com/swiftui/secondary-views/">secondary view</a> on its child, and draws the border overlaid on top of it.</p>&#10;&#10;&#10;&#10;<figure class="wp-block-pullquote"><blockquote><p><code>.border</code> creates a secondary view on its child, and draws the border overlaid on top of it</p></blockquote></figure>&#10;&#10;&#10;&#10;<p>If we wanted the border around the view instead, we have to combine it with <code>.padding</code>:</p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">ContentView</span> : <span class="hljs-title">View</span> </span>{&#10; <span class="hljs-keyword">var</span> body: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">Text</span>(<span class="hljs-string">&quot;Nogitsune Takeshi&quot;</span>)&#10; .font(.title)&#10; .padding(<span class="hljs-number">4</span>)&#10; .border(<span class="hljs-type">Color</span>.yellow, width: <span class="hljs-number">4</span>)&#10; }&#10;}</code></pre>&#10;&#10;&#10;<p>This creates the <code>Text</code> view, and then <code>.padding</code> creates another view around that with additional padding added, and then <code>.border</code> adds a secondary view to the padding view, and draws overlaid on that:</p>&#10;&#10;&#10;&#10;<figure class="wp-block-image"><img alt="text with thick border and padding" class="wp-image-208" src="https://netsplit.com/wp-content/uploads/2019/08/text_border_padding.png"></img></figure>&#10;&#10;&#10;&#10;<p>It’s important to note the distinction that the border is on the padding view; combined effects can be performed by carefully placing the overlays in the correct place:</p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">ContentView</span> : <span class="hljs-title">View</span> </span>{&#10; <span class="hljs-keyword">var</span> body: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">Text</span>(<span class="hljs-string">&quot;Nogitsune Takeshi&quot;</span>)&#10; .font(.title)&#10; .border(<span class="hljs-type">Color</span>.red)&#10; .padding(<span class="hljs-number">4</span>)&#10; .border(<span class="hljs-type">Color</span>.yellow, width: <span class="hljs-number">4</span>)&#10; .border(<span class="hljs-type">Color</span>.red)&#10; }&#10;}</code></pre>&#10;&#10;&#10;<p>Here we create a red border overlaid on the <code>Text</code>, and then use padding to draw a thicker yellow border around the <code>Text</code>, and finally overlaid another red border onto the padding:</p>&#10;&#10;&#10;&#10;<figure class="wp-block-image"><img alt="text with three borders" class="wp-image-210" src="https://netsplit.com/wp-content/uploads/2019/08/text_bordered_border.png"></img></figure>&#10;&#10;&#10;&#10;<p>The total border width is 5px since it includes the additional pixel-wide border overlaid on the <code>Text</code>, or put another way, the yellow part of the border is 3px wide since the outer pixel is overlaid by the red border added to it.</p></div>&#10;<div class="permalink"><a href="https://netsplit.com/swiftui/borders/">by scott at <time datetime="2019-08-08T19:58:19Z" title="GMT">August 08, 2019 07:58 PM</time></a></div></div>&#10;&#10;<div class="news scott-james-remnant" xml:lang="en-US">&#10;<h3><a href="https://netsplit.com" title="Netsplit.com">Scott James Remnant</a>—<a href="https://netsplit.com/swiftui/modifying-views/">Padding</a></h3>&#10;<div class="content"><p>In <a href="https://netsplit.com/swiftui/views-have-fixed-sizes/">views have fixed sizes</a>, we introduced the idea that all views in SwiftUI are fixed in size, for example a <code>Text</code> view has the size required to render the string provided:</p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">ContentView</span> : <span class="hljs-title">View</span> </span>{&#10; <span class="hljs-keyword">var</span> body: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">Text</span>(<span class="hljs-string">&quot;Nogitsune Takeshi&quot;</span>)&#10; .font(.title)&#10; }&#10;}</code></pre>&#10;&#10;&#10;<p>Creates a view with the exact bounds necessary:</p>&#10;&#10;&#10;&#10;<figure class="wp-block-image"><img alt="text view" class="wp-image-52" src="https://netsplit.com/wp-content/uploads/2019/07/title_text.png"></img></figure>&#10;&#10;&#10;&#10;<p>We also showed that the <code>.frame</code> modifier actually creates a new view with the dimensions specifies, and positions the <code>Text</code> view within it, such that:</p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">ContentView</span> : <span class="hljs-title">View</span> </span>{&#10; <span class="hljs-keyword">var</span> body: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">Text</span>(<span class="hljs-string">&quot;Nogitsune Takeshi&quot;</span>)&#10; .font(.title)&#10; .frame(width: <span class="hljs-number">200</span>, height: <span class="hljs-number">200</span>)&#10; }&#10;}</code></pre>&#10;&#10;&#10;<p>Actually creates two views, a <code>.frame</code> that is 200×200 in size, and a <code>Text</code> within it with the exact bounds necessary to render its contents:</p>&#10;&#10;&#10;&#10;<figure class="wp-block-image"><img alt="text inside frame" class="wp-image-55" src="https://netsplit.com/wp-content/uploads/2019/07/title_text_multiline.png"></img></figure>&#10;&#10;&#10;&#10;<p>We looked into this process further in <a href="https://netsplit.com/swiftui/flexible-frames/">flexible frames</a>, introduced the concept of <em>layout neutral</em> views that report their own size based on their children, and showed that in either dimension <code>.frame</code> can have a fixed size, be layout neutral, or through minimum and maximum size constraints base its own size on that proposed by its own parent.</p>&#10;&#10;&#10;&#10;<p>We’ll now take a look at another useful modifier view, one that adds padding around its child view, and has a number of different forms that we can use:</p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-function"><span class="hljs-keyword">func</span> <span class="hljs-title">padding</span><span class="hljs-params">(<span class="hljs-number">_</span> length: CGFloat)</span></span> -&gt; some <span class="hljs-type">View</span>&#10;<span class="hljs-function"><span class="hljs-keyword">func</span> <span class="hljs-title">padding</span><span class="hljs-params">(<span class="hljs-number">_</span> insets: EdgeInsets)</span></span> -&gt; some <span class="hljs-type">View</span>&#10;<span class="hljs-function"><span class="hljs-keyword">func</span> <span class="hljs-title">padding</span><span class="hljs-params">(<span class="hljs-number">_</span> edges: Edge.Set = .all, <span class="hljs-number">_</span> length: CGFloat? = <span class="hljs-literal">nil</span>)</span></span> -&gt; some <span class="hljs-type">View</span></code></pre>&#10;&#10;&#10;<p>The first form sets the padding of all edges to the length specified.</p>&#10;&#10;&#10;&#10;<p>The second form sets the padding of each of the edges to the specific individual values you specify through the <code>EdgeInsets</code> value.</p>&#10;&#10;&#10;&#10;<p>The third form sets the padding of the set of edges you specify to the length supplied, leaving other edges unpadded. The third form also allows you to specify <code>nil</code> as the length, instead of zero, which instructs SwiftUI to use a system default amount of padding appropriate for the situation.</p>&#10;&#10;&#10;&#10;<p>Default values for all parameters of the third form are provided, which uses the system default padding for all edges, we’ll use that in our example:</p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">ContentView</span> : <span class="hljs-title">View</span> </span>{&#10; <span class="hljs-keyword">var</span> body: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">Text</span>(<span class="hljs-string">&quot;Nogitsune Takeshi&quot;</span>)&#10; .font(.title)&#10; .padding()&#10; }&#10;}</code></pre>&#10;&#10;&#10;<p>The <code>.padding</code> modifier is no different from modifiers like <code>.frame</code>, it doesn’t modify the <code>Text</code> in any way, it instead creates a new view that adds padding, and positions the <code>Text</code> view inside it as a child:</p>&#10;&#10;&#10;&#10;<figure class="wp-block-image"><img alt="text with padding" class="wp-image-189" src="https://netsplit.com/wp-content/uploads/2019/08/text_padding.png"></img></figure>&#10;&#10;&#10;&#10;<p>The layout process is actually a little more interesting than just adding padding, and is almost but not quite layout neutral. It in fact works something like we see for <a href="https://netsplit.com/swiftui/stacks/">stacks</a> when considering spacing.</p>&#10;&#10;&#10;&#10;<ol><li>Parent proposes a size to the padding view.</li><li>Padding view subtracts the appropriate padding length from each edge.</li><li>Padding view proposes this smaller size to its child.</li><li>Child decides on its size.</li><li>Padding view takes the child’s size, adds the appropriate padding length back to each edge, and sets that to its own size.</li><li>Parent positions the padding view within its bounds.</li></ol>&#10;&#10;&#10;&#10;<p>Thus a <code>.padding</code> view always tightly wraps its child (aside from the padding itself), with both being positioned by the parent frame, but at the same time adds an additional constraint (the padding) to the size the child can be.</p>&#10;&#10;&#10;&#10;<p>We can demonstrate this by placing the <code>.padding</code> inside a frame:</p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">ContentView</span> : <span class="hljs-title">View</span> </span>{&#10; <span class="hljs-keyword">var</span> body: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">Text</span>(<span class="hljs-string">&quot;Nogitsune Takeshi&quot;</span>)&#10; .font(.title)&#10; .padding()&#10; .frame(width: <span class="hljs-number">200</span>, height: <span class="hljs-number">200</span>)&#10; }&#10;}</code></pre>&#10;&#10;&#10;<p>The <code>.frame</code> has a fixed size of 200×200, the <code>.padding</code> view subtracts the system default padding of 16px (in this case) from each side, and supplies the <code>Text</code> with a proposed size of 168×168.</p>&#10;&#10;&#10;&#10;<p>That’s too small for <code>Text</code> to layout on one line, but still enough room to wrap over two lines, so it returns its size appropriately to do that. <code>.padding</code> adds back the padding before returning its size, and the <code>.frame</code> positions the padding view inside it.</p>&#10;&#10;&#10;&#10;<figure class="wp-block-image"><img alt="text with padding inside frame" class="wp-image-190" src="https://netsplit.com/wp-content/uploads/2019/08/text_padding_frame.png"></img></figure>&#10;&#10;&#10;&#10;<p>As we can see, the padding view still tightly wraps the <code>Text</code>, it isn’t increased in height or width to try and fill the parent frame, and is centered within it instead.</p></div>&#10;<div class="permalink"><a href="https://netsplit.com/swiftui/modifying-views/">by scott at <time datetime="2019-08-08T19:58:10Z" title="GMT">August 08, 2019 07:58 PM</time></a></div></div>&#10;&#10;<div class="news scott-james-remnant" xml:lang="en-US">&#10;<h3><a href="https://netsplit.com" title="Netsplit.com">Scott James Remnant</a>—<a href="https://netsplit.com/swiftui/secondary-views-in-practice/">Secondary Views in Practice</a></h3>&#10;<div class="content"><p>A <a href="https://netsplit.com/swiftui/secondary-views/">secondary view</a>, be it background or overlay, can be any view. We know from <a href="https://netsplit.com/swiftui/flexible-frames/">flexible frames</a> that we can create views of fixed sizes, sizes based on their children, or sizes based on their parent. And we saw above that the proposed size of a secondary view is the fixed size of a parent.</p>&#10;&#10;&#10;&#10;<p>So let’s put all this together, and build something cool! A hit points bar for our character that shows how much damage they’ve taken.</p>&#10;&#10;&#10;&#10;<p>We ideally want the size of the hit points bar to be flexible to our needs, as we’ll use it in a few different places. For the character list, something like the following code would be ideal:</p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">ContentView</span> : <span class="hljs-title">View</span> </span>{&#10; <span class="hljs-keyword">var</span> body: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">HStack</span> {&#10; <span class="hljs-type">Image</span>(<span class="hljs-string">&quot;rogue&quot;</span>)&#10; <span class="hljs-type">VStack</span>(alignment: .leading) {&#10; <span class="hljs-type">Text</span>(<span class="hljs-string">&quot;Hasty River&quot;</span>)&#10; .font(.title)&#10; <span class="hljs-type">HitPointBar</span>(hitPoints: <span class="hljs-number">60</span>, damageTaken: <span class="hljs-number">27</span>)&#10; .font(.caption)&#10; .frame(width: <span class="hljs-number">200</span>)&#10; }&#10; }&#10; }&#10;}</code></pre>&#10;&#10;&#10;<p>First let’s start by having some text say how many hit points they have left, we’ll want this somewhere in the bar, so it’s a good point to start:</p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">HitPointBar</span> : <span class="hljs-title">View</span> </span>{&#10; <span class="hljs-keyword">var</span> hitPoints: <span class="hljs-type">Int</span>&#10; <span class="hljs-keyword">var</span> damageTaken: <span class="hljs-type">Int</span>&#10;&#10; <span class="hljs-keyword">var</span> body: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">Text</span>(<span class="hljs-string">&quot;\(hitPoints-damageTaken)/\(hitPoints)&quot;</span>)&#10; }&#10;}</code></pre>&#10;&#10;&#10;<p>That’s actually already enough to get started, the <code>Text</code> has a fixed size and the <code>HitPointBar</code> view is layout-neutral, so the <code>.frame</code> we supply above sets the width. While the <code>Text</code> has no font size specified of its own, it inherits it from the environment so we can set it on the <code>HitPointBar</code>; the <code>.frame</code> is layout-neutral in height, so inherits the height from the caption-sized <code>Text</code>:</p>&#10;&#10;&#10;&#10;<figure class="wp-block-image"><img alt="hit point bar with just text" class="wp-image-165" src="https://netsplit.com/wp-content/uploads/2019/07/hitpointbar_text.png"></img></figure>&#10;&#10;&#10;&#10;<p>I added the border to the view to verify the frame, but that’s already not bad. However the <code>.border</code> was on the <code>.frame</code> outside the view, if we look inside we see that the <code>Text</code> has its usual fixed size and is just positioned within it.</p>&#10;&#10;&#10;&#10;<p>We still need the <code>HitPointBar</code> itself to fill this. In <a href="https://netsplit.com/swiftui/flexible-frames/">flexible frames</a> I introduced infinite frames as frames that fill their parent, so we can use one of those:</p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">HitPointBar</span> : <span class="hljs-title">View</span> </span>{&#10; <span class="hljs-keyword">var</span> hitPoints: <span class="hljs-type">Int</span>&#10; <span class="hljs-keyword">var</span> damageTaken: <span class="hljs-type">Int</span>&#10;&#10; <span class="hljs-keyword">var</span> body: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">Text</span>(<span class="hljs-string">&quot;\(hitPoints-damageTaken)/\(hitPoints)&quot;</span>)&#10; .frame(minWidth: <span class="hljs-number">0</span>, maxWidth: .infinity)&#10; }&#10;}</code></pre>&#10;&#10;&#10;<p>We make the frame of the text have the size of the parent in width (which we then fix in the <code>ContentView</code>), while still allow it to be layout neutral in height.</p>&#10;&#10;&#10;&#10;<p>The result looks the same:</p>&#10;&#10;&#10;&#10;<figure class="wp-block-image"><img alt="hit point bar with text and frame" class="wp-image-165" src="https://netsplit.com/wp-content/uploads/2019/07/hitpointbar_text.png"></img></figure>&#10;&#10;&#10;&#10;<p>But this time I’m able to place the <code>.border</code> around the <code>.frame</code> inside the <code>HitPointBar</code>. The text is positioned within that frame, and this frame can be the foundation of the rest of the view.</p>&#10;&#10;&#10;&#10;<p>Once you learn to rely on the fixed sizes of views, and layout-neutral behavior of combinations of views, it’s actually easy to create flexible custom views by using the layout system rather than fighting it.</p>&#10;&#10;&#10;&#10;<p>Okay so let’s add a secondary view to make the bar. Nothing says damage and hit points like a red lozenge:</p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">HitPointBar</span> : <span class="hljs-title">View</span> </span>{&#10; <span class="hljs-keyword">var</span> hitPoints: <span class="hljs-type">Int</span>&#10; <span class="hljs-keyword">var</span> damageTaken: <span class="hljs-type">Int</span>&#10;&#10; <span class="hljs-keyword">var</span> body: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">Text</span>(<span class="hljs-string">&quot;\(hitPoints-damageTaken)/\(hitPoints)&quot;</span>)&#10; .foregroundColor(<span class="hljs-type">Color</span>.white)&#10; .frame(minWidth: <span class="hljs-number">0</span>, maxWidth: .infinity)&#10; .background(<span class="hljs-type">Color</span>.red)&#10; .cornerRadius(<span class="hljs-number">8</span>)&#10; }&#10;}</code></pre>&#10;&#10;&#10;<p>Pay attention to the ordering of things, and remember that <code>.frame</code> creates a new view around the <code>Text</code> inside it. We deliberately attach the <code>.background</code> secondary view to this frame, which is taking its width from its parent and its height from its children views.</p>&#10;&#10;&#10;&#10;<p>We then apply a <code>.cornerRadius</code> to the combination of the frame and secondary view, which encases them both in a clipping view that masks the boundaries. This means it’ll apply to the <code>Text</code>, background color, and anything else we added.</p>&#10;&#10;&#10;&#10;<p>We also set the foreground color of the <code>Text</code> to white for better contrast.</p>&#10;&#10;&#10;&#10;<figure class="wp-block-image"><img alt="hit point bar with text and background" class="wp-image-166" src="https://netsplit.com/wp-content/uploads/2019/07/hitpointbar_red_background.png"></img></figure>&#10;&#10;&#10;&#10;<p>Looking good, but we want that hit point bar to be filled with green if they’ve taken no damage, filled green from the left and red from the right according to how many hit points they have left.</p>&#10;&#10;&#10;&#10;<p>That wouldn’t be too hard if the size of the view was fixed, but we’ve deliberately decided to make it flexible and up to the parent. Worse, we’ve decided that the height is going to be dictated by dynamic type, so is flexible as well.</p>&#10;&#10;&#10;&#10;<p>There’s a tool for this, the <a href="https://netsplit.com/swiftui/geometry-reader/">geometry reader</a>, and while it always expands to fill its entire parent, when we use it as a secondary view, the parent is the view it’s attached to.</p>&#10;&#10;&#10;&#10;<p>For clarity I like to separate out complex secondary views into a separate property, so we first rewrite our control to do this:</p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">HitPointBar</span> : <span class="hljs-title">View</span> </span>{&#10; <span class="hljs-keyword">var</span> hitPoints: <span class="hljs-type">Int</span>&#10; <span class="hljs-keyword">var</span> damageTaken: <span class="hljs-type">Int</span>&#10;&#10; <span class="hljs-keyword">var</span> body: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">Text</span>(<span class="hljs-string">&quot;\(hitPoints-damageTaken)/\(hitPoints)&quot;</span>)&#10; .foregroundColor(<span class="hljs-type">Color</span>.white)&#10; .frame(minWidth: <span class="hljs-number">0</span>, maxWidth: .infinity)&#10; .background(background)&#10; .cornerRadius(<span class="hljs-number">8</span>)&#10; }&#10;&#10; <span class="hljs-keyword">var</span> background: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">Color</span>.red&#10; }&#10;}</code></pre>&#10;&#10;&#10;<p>Now we know we’re going to want two things in this geometry view, a green color from the left for the hit points remaining, and a red color from the right for the damage taken.</p>&#10;&#10;&#10;&#10;<p>There’s a few different ways to achieve that, and they’re all equally valid. For this example we’ll have the red color fill the entire view, and place a green color in front of it, so we’re going to need a z-axis stack for that with a leading alignment.</p>&#10;&#10;&#10;&#10;<p>This all then goes inside the <code>GeometryReader</code>:</p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-keyword">var</span> background: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">GeometryReader</span> { g <span class="hljs-keyword">in</span>&#10; <span class="hljs-type">ZStack</span>(alignment: .leading) {&#10; <span class="hljs-type">Rectangle</span>()&#10; .fill(<span class="hljs-type">Color</span>.red)&#10; <span class="hljs-type">Rectangle</span>()&#10; .fill(<span class="hljs-type">Color</span>.green)&#10; .frame(width: g.size.width&#10; * <span class="hljs-type">CGFloat</span>(<span class="hljs-keyword">self</span>.hitPoints - <span class="hljs-keyword">self</span>.damageTaken)&#10; / <span class="hljs-type">CGFloat</span>(<span class="hljs-keyword">self</span>.hitPoints))&#10; }&#10; }&#10; }</code></pre>&#10;&#10;&#10;<p>In general terms this view looks like something you’ve written before.</p>&#10;&#10;&#10;&#10;<p>The <code>GeometryReader</code> expands to fill the proposed size given by the parent, except this time that proposed size is the size of the frame we put around the text, based on the text size.</p>&#10;&#10;&#10;&#10;<p>A <code>ZStack</code> containing two views with leading alignment is nothing special, the first is a <code>Rectangle</code> filled with red—switching from just using the color for maximum readability, and the second is also a <code>Rectangle</code> just filled with the green instead.</p>&#10;&#10;&#10;&#10;<p>The second <code>Rectangle</code> is constrained in size by placing it inside a frame, layout neutral in height, but fixed in width to that derived from the percentage of hit points remaining and the width returned by the <code>GeometryReader</code>.</p>&#10;&#10;&#10;&#10;<p>The result is the flexible hit point bar we wanted:</p>&#10;&#10;&#10;&#10;<figure class="wp-block-image"><img alt="hit point bar with text and progress" class="wp-image-168" src="https://netsplit.com/wp-content/uploads/2019/07/hitpointbar.png"></img></figure>&#10;&#10;&#10;&#10;<hr class="wp-block-separator"></hr>&#10;&#10;&#10;&#10;<p>Imagery used in previews by <a href="https://www.deviantart.com/kaiseto">Kaiseto</a>, original images and derived here licensed under <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons 3.0 BY-NC-SA</a>.<br></br></p></div>&#10;<div class="permalink"><a href="https://netsplit.com/swiftui/secondary-views-in-practice/">by scott at <time datetime="2019-08-08T16:43:00Z" title="GMT">August 08, 2019 04:43 PM</time></a></div></div>&#10;&#10;<div class="news scott-james-remnant" xml:lang="en-US">&#10;<h3><a href="https://netsplit.com" title="Netsplit.com">Scott James Remnant</a>—<a href="https://netsplit.com/swiftui/geometry-reader/">Geometry Reader</a></h3>&#10;<div class="content"><p>For most layout needs we can combine <a href="https://netsplit.com/swiftui/stacks/">stacks</a> and <a href="https://netsplit.com/swiftui/flexible-frames/">flexible frames</a>, allowing us to make views and controls put together from <a href="https://netsplit.com/swiftui/views-have-fixed-sizes/">fixed size</a> primitives views upwards.</p>&#10;&#10;&#10;&#10;<p>For more complex layout needs, another option is to use <code>GeometryReader</code>. This is a construct that acts like an infinite frame, proposing the size of its parent to its children, and choosing its parent size as its own.</p>&#10;&#10;&#10;&#10;<p>As an added feature, it passes the proposed size received to the builder as a closure argument. For example we can layout an image at a maximum of half of the size of the parent, while maintaining aspect ratio, with: </p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">ContentView</span> : <span class="hljs-title">View</span> </span>{&#10; <span class="hljs-keyword">var</span> body: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">GeometryReader</span> { g <span class="hljs-keyword">in</span>&#10; <span class="hljs-type">ZStack</span> {&#10; <span class="hljs-type">Image</span>(<span class="hljs-string">&quot;barbarian&quot;</span>)&#10; .resizable()&#10; .aspectRatio(contentMode: .fit)&#10; .frame(maxWidth: g.size.width / <span class="hljs-number">2</span>,&#10; maxHeight: g.size.height / <span class="hljs-number">2</span>)&#10; }&#10; .frame(width: g.size.width, height: g.size.height)&#10; }&#10; }&#10;}</code></pre>&#10;&#10;&#10;<p>The <code>GeometryReader</code> acts exactly like the infinite frame we saw in <a href="https://netsplit.com/swiftui/flexible-frames/">flexible frames</a>, it proposes the size of its parent to its child, but it also passes that proposed size <code>g</code> to our view builder.</p>&#10;&#10;&#10;&#10;<p>And just like the infinite frame, the geometry reader doesn’t use the size of the child when deciding its own size; instead it always returns the proposed size from the parent as its own size.</p>&#10;&#10;&#10;&#10;<p>An important gotcha is that within the view builder we need to do our own sizing, positioning and alignment; <code>ZStack</code> is perfect for this. We still need to position that, so we place it inside a frame that has the same size as the reader parent, and let the stack be centered inside it.</p>&#10;&#10;&#10;&#10;<p>Finally inside the stack we place our image, and place that inside a frame that constrains its width and height to half the size of the reader.</p>&#10;&#10;&#10;&#10;<figure class="wp-block-image"><img alt="image in geometryreader" class="wp-image-121" src="https://netsplit.com/wp-content/uploads/2019/07/geometryreader.png"></img></figure>&#10;&#10;&#10;&#10;<h2>In Secondary Views</h2>&#10;&#10;&#10;&#10;<p>With access to the proposed size of the parent, <code>GeometryReader</code> can seem powerful, but the resulting fixed size equally that can limit their usefulness. When combined with <a href="https://netsplit.com/swiftui/secondary-views/">secondary views</a> they become even more convenient.</p>&#10;&#10;&#10;&#10;<p>As we saw above, when free floating, a geometry reader expands to fill the size proposed by the parent.</p>&#10;&#10;&#10;&#10;<p>But because the proposed parent size of a secondary view is the fixed size decided by the view its attached to, that is the proposed size. Thus <code>GeometryReader</code> inside a secondary view returns the size of the view it’s attached to.</p>&#10;&#10;&#10;&#10;<figure class="wp-block-pullquote"><blockquote><p><code>GeometryReader</code> inside a secondary view returns the size of the view it’s attached to</p></blockquote></figure>&#10;&#10;&#10;&#10;<p>For clarity I like to separate out complex secondary views into a separate property:</p>&#10;&#10;&#10;<pre class="wp-block-code"><code class="hljs language-swift"><span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">OverlaiedImage</span> : <span class="hljs-title">View</span> </span>{&#10; <span class="hljs-keyword">var</span> body: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">Image</span>(<span class="hljs-string">&quot;barbarian&quot;</span>)&#10; .resizable()&#10; .aspectRatio(contentMode: .fit)&#10; .overlay(overlay)&#10; }&#10;&#10; <span class="hljs-keyword">var</span> overlay: some <span class="hljs-type">View</span> {&#10; <span class="hljs-type">GeometryReader</span> { g <span class="hljs-keyword">in</span>&#10; <span class="hljs-type">Image</span>(<span class="hljs-string">&quot;overlay&quot;</span>)&#10; .resizable()&#10; .frame(width: g.size.width, height: g.size.height / <span class="hljs-number">2</span>)&#10; .position(y: g.size.height / <span class="hljs-number">2</span>)&#10; }&#10; }&#10;}</code></pre>&#10;&#10;&#10;<p>In this example the <code>Image</code> in the body is allowed to be resizable while maintaining its own aspect ratio, with the ultimate bounds of that determined by whatever uses our <code>OverlaidImage</code> custom view.</p>&#10;&#10;&#10;&#10;<p>We then use an <code>.overlay</code> secondary view to draw another image over the bottom half of that image.</p>&#10;&#10;&#10;&#10;<p>In order to constrain that to the bottom half we need to know the size of the <code>Image</code> we’re drawing over, and the <code>GeometryReader</code> works for this because it’s in the secondary view.</p>&#10;&#10;&#10;&#10;<hr class="wp-block-separator"></hr>&#10;&#10;&#10;&#10;<p>Imagery used in previews by <a href="https://www.deviantart.com/kaiseto">Kaiseto</a>, original images and derived here licensed under <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons 3.0 BY-NC-SA</a>.<br></br></p></div>&#10;<div class="permalink"><a href="https://netsplit.com/swiftui/geometry-reader/">by scott at <time datetime="2019-08-08T16:42:43Z" title="GMT">August 08, 2019 04:42 PM</time></a></div></div>&#10;&#10;<h2><time datetime="2019-08-07">August 07, 2019</time></h2>&#10;&#10;<div class="news joi-ito">&#10;<h3><a href="https://joi.ito.com/weblog/" title="Joi Ito's Web">Joi Ito</a>—<a href="http://feedproxy.google.com/~r/joi-ito/weblog/~3/Iozn7O79x2Y/is-philanthropy.html">Is philanthropy a bad excuse for limiting strong government?</a></h3>&#10;<div class="content" xml:lang="en-us"><p><a href="http://www.ethanzuckerman.com/blog/2019/08/05/philanthropy-and-the-hand-off-what-happens-if-government-cant-scale-social-experiments/">Ethan Zuckerman thoughtfully and appropriately points out</a> that one big missing question in <a href="https://www.wired.com/story/joi-ito-impact-investing/">my recent Wired piece</a> on measuring philanthropic impact is whether some of this positive societal change should be in the hands of government instead of philanthropists. He correctly points out that since the Reagan/Thatcher era of the 80s, we've started shrinking the role of government and have started to see big philanthropists and the private sector being called on to do what government used to do. <a href="http://www.ethanzuckerman.com/blog/2013/10/15/google-cars-versus-public-transit-the-uss-problem-with-public-goods/">In a post from 2013</a>, Ethan wonders why he doesn't have rail solution to his commuting problem from Western Massachusetts. He suggests that without government, things like railway system are difficult to fund - the market isn't the best solution for many social goods.</p>&#10;&#10;<p>I think the idea about whether we should be doubling down on philanthropy or fixing government and increasing government resources is a great question and probably the right one. I think the idea of fixing the government and turning the corner on the privatization is a daunting idea, but something we need to discuss.</p>&#10; &#10; <img alt="" height="1" src="http://feeds.feedburner.com/~r/joi-ito/weblog/~4/Iozn7O79x2Y" width="1"></img></div>&#10;<div class="permalink"><a href="http://feedproxy.google.com/~r/joi-ito/weblog/~3/Iozn7O79x2Y/is-philanthropy.html">by Joichi Ito at <time datetime="2019-08-07T19:32:23Z" title="GMT">August 07, 2019 07:32 PM</time></a></div></div>&#10;&#10;<div class="news w3c-qa" xml:lang="en-US">&#10;<h3><a href="https://www.w3.org/blog" title="W3C Blog">W3C QA</a>—<a href="https://www.w3.org/blog/2019/08/changes-to-the-publication-schedule-for-the-publishing-working-group/">Changes to the Publication Schedule for the Publishing Working Group</a></h3>&#10;<div class="content"><p>The Publishing Working Group has made changes to its deliverables schedule and content in recent weeks and would like to provide an update on the changes we have decided to make, and why. A few weeks ago the group resolved to suspend work for now on the Web Publications specification due to a lack of implementer and industry resource availability to complete the work in the chartered timeframe. There was not a clear and immediate business case for the specification. After meetings with the Steering Committee, we have decided to proceed with specifications that have a clear and immediate business need and/or will facilitate future work.</p>&#10;<p>In the coming weeks the PWG will publish a series of notes based on the work we have done so far. The first of these will be our <a href="https://www.w3.org/TR/pwp-ucr/">Use Cases and Requirements document</a>, followed by the note version of the <a href="https://www.w3.org/TR/wpub/">Web Publications</a> document, and then later this month the first draft for our <a href="https://w3c.github.io/lpf/">Lightweight Packaging Format</a>. An update to the working draft of the <a href="https://www.w3.org/TR/audiobooks">Audiobooks Specification</a> that reflects the changes to the structure of our projects is also expected later this month. This update will include some changes in response to feedback we have received.</p>&#10;<p>The final document we intend to publish is a specification for a <a href="https://www.github.com/w3c/pub-manifest">Publication Manifest</a>. This specification allows us to take the best of the work we have completed thus far and open it up to the digital publishing and web communities. One of the reasons we are bringing this part of the document to the rec track is to facilitate future profiles. Audiobooks will be the first specification to reference the structure of the Publication Manifest, but we expect future profiles to use it as well, like the work of the <a href="https://www.w3.org/community/bdcomacg/">BDCoMA Community Group</a> and <a href="https://www.w3.org/community/publishingcg/">Publishing Community Group</a>. We look forward to seeing future ideas using this specification, and encourage anyone interested to join us or provide feedback via our <a href="https://github.com/w3c/publ-wg">GitHub repository</a>.</p></div>&#10;<div class="permalink"><a href="https://www.w3.org/blog/2019/08/changes-to-the-publication-schedule-for-the-publishing-working-group/">by Wendy Reid at <time datetime="2019-08-07T18:27:00Z" title="GMT">August 07, 2019 06:27 PM</time></a></div></div>&#10;&#10;<div class="news james-governor" xml:lang="en-US">&#10;<h3><a href="https://redmonk.com/jgovernor" title="James Governor's Monkchips">James Governor</a>—<a href="http://feedproxy.google.com/~r/JamesGovernorsMonkchips/~3/M0iaZYje_GA/">DevOpsWorld 2019: See You There</a></h3>&#10;<div class="content"><p><a href="http://redmonk.com/jgovernor/files/2019/08/event-highlights2-sf.png"><img alt="" class="aligncenter wp-image-5046" height="347" src="http://redmonk.com/jgovernor/files/2019/08/event-highlights2-sf.png" width="345"></img></a></p>&#10;<p><span style="font-weight: 400;">I am delivering the closing keynote at DevOpsWorld next week in San Francisco. I am pretty excited about it. The event is run by CloudBees. I’m on a <a href="https://www.cloudbees.com/cloudbees-days#global-tour">European roadshow</a> with them this year, which has been really fun, meeting customers and folks in the Jenkins and wider Continuous Integration ecosystem, but the chance to keynote is SF is obviously exciting. </span></p>&#10;<p><span style="font-weight: 400;">Without giving too much away my talk is going to be about the next big period of industry growth, particularly from the perspective of where we’re and how we’re going to find enough developers and IT personnel to take us forward in solving the world scale challenges we face. I have titled it <strong>The Next Wave of Growth: Towards 100m developers</strong>.  I will talk about diversity and inclusion, geography, distributed development, our changing lingua franca, open source, the cloud, remote and distributed work, energy consumption, why bikes are awesome, learning platforms and treating people better. I hope that sounds like something you’ll enjoy.</span></p>&#10;<p>I am also looking forward to the event to learn more from CloudBees about its vision for the future of software delivery as a business process, which it’s calling Software Delivery Management. We live, after all, in an era defined by the 2011 Mark Andreesen essay – Software Is Eating The World, in which he argued that the most valuable companies in the world – such as Amazon, Google and Netflix are actually software companies. Value chains in all industries have become software-driven and software optimised. That means everyone needs to get better at writing software, and make the best use of their assets. One of the most interesting new frontiers in software development is the focus on data about the delivery process to drive better decision-making and outcomes. Full telemetry across the software delivery lifecycle, across every pull request, check in, Jira ticket, every job and deploy. Master Data Management for software delivery. Enterprises are finally embracing Continuous Delivery wholeheartedly enough to need tools to better understand how effective they’re becoming in writing and delivering new digital services. Digital Transformation requires management information.</p>&#10;<p>Further down the stack JenkinsX is an exciting project, bridging Jenkins with Kubernetes, allowing for portable pipelines that can either run on premises as Jenkins jobs or in Google Cloud using Tekton, an open-source framework for creating continuous integration and delivery (CI/CD) systems.</p>&#10;<p>Obviously I will also take the time to evangelise Progressive Delivery, helping enterprises understand how they can lower risk by taking advantage of Continuous Integration patterns such as blue/green deployments, canarying, and A/B testing, making the blast radius of a new service a choice rather than an accident waiting to happen. My colleague Rachel Stephens will also be at the event, talking about Feature management using feature flags. Look forward to seeing you there. Hit me up if you’d like to talk about the changing face of software development</p>&#10;<p>You can buy a ticket <a href="https://web.cvent.com/event/eac49765-9235-4b96-aaba-3bcb9cc837c3/summary?RefId=SiteButton">here</a>.</p>&#10;<p><span style="font-weight: 400;"> </span></p>&#10;</div>&#10;<div class="permalink"><a href="http://creativecommons.org/licenses/by-nc-sa/2.0/" rel="license">©</a> <a href="http://feedproxy.google.com/~r/JamesGovernorsMonkchips/~3/M0iaZYje_GA/">James Governor at <time datetime="2019-08-07T15:56:00Z" title="GMT">August 07, 2019 03:56 PM</time></a></div></div>&#10;&#10;<div class="news james-governor" xml:lang="en-US">&#10;<h3><a href="https://redmonk.com/jgovernor" title="James Governor's Monkchips">James Governor</a>—<a href="http://feedproxy.google.com/~r/JamesGovernorsMonkchips/~3/gMtfPHOuwu0/">HashiConf EU 2019: The Service Mesh push and Progressive Delivery</a></h3>&#10;<div class="content"><p><a href="http://redmonk.com/jgovernor/files/2019/08/electric-coffee-truck.jpg"><img alt="" class="aligncenter wp-image-5042" height="488" src="http://redmonk.com/jgovernor/files/2019/08/electric-coffee-truck-1024x768.jpg" width="651"></img></a></p>&#10;<p>As enterprises commit to building microservices to enable greater software development velocity the market for infrastructure to manage and enable these microservices is beginning to mature.</p>&#10;<p>HashiCorp is ready to be a platform supplier for these tools, building on its existing beachheads, most notably Consul. That was pretty much my hot take from HashiConf EU in Amsterdam last month. The event was held in Westergasfabriek, an old Amsterdam gasworks, which is appropriate given the focus on repurposing, refactoring and building on legacy infrastructure as well as new platforms. HashiCorp is pragmatic – it builds cool products that also work with uncool platforms. The Cloud Operating Model can apply whether you’re running VMs, containers, bare metal or mainframes. While everyone else out here is telling you to rehost on Kubernetes, HashiCorp remembers its roots: its earliest tool Vagrant was built specifically for managing virtual machines. While everyone else is still trying to work out whether hybrid is a thing, whether multi cloud is a thing, whether they should support containers or Lambdas, HashiCorp gets on with it, delivering products that span cloud and on prem, flattening networks with a Cloud Operating Model and effective, well thought out, service interfaces. Enter the multiverse.</p>&#10;<p>Regarding the conference itself – the aforementioned venue was excellent. The catering was extremely high quality and the coffee service was the best I have ever had at a tech conference other than my own – thanks <a href="https://www.bitterandreal.nl/">Bitter and Real</a>. Arguably even the gorgeous coffee truck was a metaphor for refreshing your legacy environments – the 1971 Citroën HY Van has been retooled as an electric vehicle, which is kind of wonderful. The truck even has solar panels – this <a href="https://sprudge.com/more-coffee-less-fossil-fuel-bitter-real-is-the-netherlands-eco-coffee-truck-133869.html">post</a> tells you more, including details of their coffee machines and equipment. The folks at Bitter and Real are fantastic. Please look them out for your own events.</p>&#10;<p>All of these details matter, in an industry crowded with tech events. Create lovely experiences, with plenty of breaks, and crisp story-telling, and you definitely stand out.</p>&#10;<p>HashiCorp has an enviable ability to explain complex things in a straightforward way – what struck me most at the event was that HashiCorp yet again did a better job of explaining service mesh than another other vendor. Start with first principles, then use cases, then features.</p>&#10;<h1>Service mesh as architecture pattern</h1>&#10;<p>Service mesh introduces “sidecars” into service topologies, where the logic for monitoring and controlling communications between each microservice runs in a sidecar alongside the microservice itself. The sidecar manages traffic and provides consistency for observability, security and routing.</p>&#10;<p>Services should use logical names for routing, rather than being hard-wired to network addresses. With modern applications chances are high you’re running multiple regions, and multiple VPCs. But Kubernetes needs an overlay network, and as soon as the topology becomes more complex, connecting to a VM or another K8s cluster, the developer potentially has to worry about complex, manual network configuration. It’s possible that two different Kubernetes clusters can create the same IP space, so you might have two pods, in 2 clusters, with identical IP addresses. Not good.</p>&#10;<p>The more complex the service topology the harder the networking problems become – this is even more true in topologies that include microservices that don’t run on Kubernetes. That “multi” story again. That’s the role Consul fills. It automatically routes network traffic, including for example firewall rules, with end to end encryption, across multiple platforms.</p>&#10;<p>HashiCorp co-founder Mitchell Hashimoto claimed in his keynote: “It makes the network seem flat from a developer perspective.”</p>&#10;<h1>Design and operating model</h1>&#10;<p>HashiCorp design’s philosophy is important here. The goal of Consul is to unify everything, so that it “works everywhere”, exposing features in a consistent way in any environment. It also needs to “integrate and feel natural”. Thus, for example, supporting Helm, the Kubernetes package manager.</p>&#10;<p>As co-founder Armon Dadger explained in a<a href="https://cloudblogs.microsoft.com/opensource/2018/04/12/hashicorp-co-founder-on-simplifying-infrastructure-management/"> blog post</a> last year:</p>&#10;<p>“Our fundamental belief is that technology will continue to march forward and innovate and evolve. And yet, workflows mostly stay the same. What I mean by that is we still have to provision our application — at some point we were provisioning a mainframe, then we were provisioning bare metal, then we were provisioning VMs, now we might be provisioning containers in the cloud. So, the specific thing that we are provisioning has changed, but the fact that we have to provision and manage the lifecycle hasn’t. Core workflow is fundamental.”</p>&#10;<p>The Cloud Operating Model as defined by HashiCorp is a set of disciplines and workflows spanning 4 pillars each of which maps to an IT function – run (development), connect (networking), secure (security), and provision (operations) and run. HashiCorp tooling maps to this view of the world like so:</p>&#10;<p>One strength of this portfolio is that each product maps to a particular buyer and budget. In the enterprise software business it is useful to have products that customers know how to buy and that salespeople know how to sell.</p>&#10;<p>Terraform is very widely used, accounting for a non trivial amount of AWS infrastructure provisioning globally. Vault too, has a dedicated buyer in security, and has seen widespread deployment in customers doing distributed software deployment. HashiCorp now sees Consul as the next key area to tackle. Nomad, which is aimed at the most mature IT organisations is by nature a smaller market. Most enterprises organisations are still primarily running legacy processes and infrastructure.</p>&#10;<h1>Consul as beachhead</h1>&#10;<p>The Day One HashiConf keynote primarily focused on enhancements to Consul, and the Consul Connect service mesh. As Hashimoto explained routing must be represented in terms of logical, rather than physical, services. This is especially true with event-based architectures because, with serverless functions and Lambdas, parts of the service may effectively not even exist until the service is actually invoked. Distributed services are dynamic and ephemeral. Networks need to be logical constructs for naming, authorisation, and routing.</p>&#10;<p>For use cases like canarying, where you send some traffic from version 1 of a service to version 2, before moving the rest of the traffic there.</p>&#10;<p style="padding-left: 40px;">“I don’t want my web server to have to know about all of that.“</p>&#10;<p>Or indeed, your application developer – they should ideally be focusing on the app, not the network plumbing. Hashimoto said there are two ways to think about Consul, given it’s designed to solve the service networking challenge.</p>&#10;<ol>&#10;<li>As a traditional service discovery and management platform</li>&#10;<li>As a service mesh</li>&#10;</ol>&#10;<p>The real news from HashiConf was that HashiCorp is using <a href="https://www.envoyproxy.io/">Envoy</a> as a proxy or “mesh gateway” within a service mesh, managed and configured by Consul. This is another big win for Envoy, which is now the industry standard sidecar for service mesh architectures. Note that AWSCloud also adopted Envoy for AWS App Mesh.</p>&#10;<p>Consul 1.6 offers full Layer 7 services, with HTTP routing, and traffic splitting. It has an Autojoin provider for 3rd party services to connect to Kubernetes, with Catalog sync to Consul. HashiCorp is also further integrating Consul and Nomad. For example Nomad 0.10, announced in the HashiConf EU 2019 keynote, introduces shared namespaces so that you don’t have to manually deploy sidecar proxies. If you’re deploying Redis for example, Nomad will automatically wire and connect the sidecar.</p>&#10;<h1>Conway’s Law for infrastructure</h1>&#10;<p><a href="http://redmonk.com/jgovernor/files/2019/08/banks-and-progressive-delivery.jpg"><img alt="" class="aligncenter wp-image-5043" height="488" src="http://redmonk.com/jgovernor/files/2019/08/banks-and-progressive-delivery.jpg" width="650"></img></a></p>&#10;<p>The next speaker was Paul Banks, Consul Engineering Lead at HashiCorp, who did an excellent job of further explaining service mesh in a great talk titled <a href="https://youtu.be/GXDpeZo78UY">Multi-cloud Service Mesh Networking For Humans</a> (I <strong>highly</strong> recommend you watch it). Banks started, as many good tech talks do, with Conway’s Law:</p>&#10;<p style="padding-left: 40px;">“Organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations.”</p>&#10;<p>Banks made the distinction between service mesh as architectural pattern and service mesh as feature set. Service mesh features include dynamic routing, service identity, resiliency patterns (circuit breakers, retries), and consistent observability. Banks said that in the multi everything world you’re going to have many organisations which have different tech teams working in different tech stacks, with different CI/CD, security approaches and so on. You want to decouple and separate concerns, and avoid duplication of effort. Say reliable communications – for example, retries, away from the different application teams.</p>&#10;<p style="padding-left: 40px;">“Service mesh is like Conway’s Law for infrastructure”</p>&#10;<p>The architectural approach is to have dynamic traffic management, dynamic runtime configuration, observability, and a central API, and most importantly make it useful and useful enough that it becomes “the default path for delivering apps in your organisation”.</p>&#10;<p style="padding-left: 40px;">“Infrastructure teams can build things on top of the network, like sophisticated rollout mechanisms, automate incident responses, and things like that that can then be provided as a service to applications without affecting application code. You can’t expect teams to go through laborious canarying processes, unless you make it easy.</p>&#10;<p style="padding-left: 40px;">“Progressive delivery is a kind of umbrella term for a bunch of practices that have been around for quite a while. I would imagine the vast majority of this audience have done at least one of these before”.</p>&#10;<p>I must admit I was pretty excited that Banks used Progressive Delivery as a way to build on his narrative. RedMonk has had scores of conversations with vendors about the Service Mesh architectural pattern over the last couple of years. The lack of clarity in most of them, combined with aggressive cheer-leading, led me to coin the term Progressive Delivery because I felt we needed a better language of use cases to explain the value of service mesh patterns and architectures. Organisations need to reduce the risk when they do rollouts. You need to have dynamic configuration in your infrastructure, you need consistent observability, and you need an API for management and configurations. Banks said organisations like Netflix and Linkedin were releasing papers about their practices that come under the umbrella of progressive delivery.</p>&#10;<p>Another key use case for service mesh is security. Use mutual Transport Layer Security (TLS) instead of IP firewalls for example, to manage encryption centrally across all of your services.</p>&#10;<p>Organisations have to continually improve the reliability of services, as apps become more complex. We need to establish and automate best practices on how to do things – around for example short time outs, limited retries, rate limiting, to prevent cascading failures. Service mesh can provide those features, for example setting policies for example that apps need rate limiting.</p>&#10;<p>Finally Banks talked about observability.</p>&#10;<p>“You need a holistic view so that you can understand, debug, and innovate. Service mesh can help because you get consistent metrics and tooling across that you can enable across all systems. You can enable tracing… …We’re seeing tools so you can automate canarying, and auto scaling, automate. Control systems need input and output, with consistent data. You need consistent data about who’s performing what action, and how its performing. A service mesh gives you that. You need to complete that feedback loop, with a centralised API and control plane”</p>&#10;<p>Banks then demonstrated dynamic traffic routing with a hilarious demo of Canary deployment. The demo showed a web service routing 100% of its traffic to v1 environment, then moving some traffic to v2, with Grafana for visualisation. Banks wanted a visual, dynamic way to approach the demo, rather than curl and command line.</p>&#10;<p style="padding-left: 40px;">“I am very proud to announce that I finally found a use for the Touch Bar on my Mac.”</p>&#10;<p>Progressive delivery by Touch Bar made for a great, funny engaging demo.</p>&#10;<h1>Thoughts on the landscape</h1>&#10;<p>It’s 2019 so apparently everyone has a service mesh. Istio has been the most hyped – it has solid corporate backing from IBM, Google, Pivotal and SAP. These companies now need to do a better job of nailing use cases. Usability is another area that needs work. Tetrate is startup focusing on making Istio easier to use, founded by some of its project principals. Aspen Mesh is another Istio distro.</p>&#10;<p>Envoy is the default proxy in Istio, and it has its own momentum. It has the backing of Amazon Web Services and now HashiCorp.</p>&#10;<p>Linkerd is another service mesh option, developed by Buoyant. The founding team of William Morgan and Oliver Gould have production experience on their side, having done as much as anyone to popularise the service mesh pattern based on their experiences running microservices at scale at Twitter. They have some impressive high scale customer names – including Chase, Comcast, Expedia, and Walmart. Also engineers like the product, which is helpful.</p>&#10;<h1>In Conclusion</h1>&#10;<p>At a glance HashiCorp has some strong advantages in the service mesh space. It tells the best story on service mesh, which is also an evolutionary narrative, based on extending Consul networking and integrating with legacy environments, rather than rehosting everything on Kubernetes. HashiCorp identifies buyers and sell to them effectively. Consul sells to the networking organisational function, which is now being tasked with managing software defined networks, with service routing using a Layer 7 model.</p>&#10;<p>Consul Connect is looking like a market maker.</p>&#10;<p> </p>&#10;<p> </p>&#10;<p>disclosure: Aspen Mesh, AWS, Google, IBM, Pivotal, and Red Hat are all clients. This post is independent of any client relationships however.</p>&#10;<p>Related posts:</p>&#10;<p><a href="https://redmonk.com/jgovernor/2018/08/06/towards-progressive-delivery/">Towards Progressive Delivery</a></p>&#10;<p><a href="https://redmonk.com/jgovernor/2019/07/10/progressive-delivery-at-gitlab/">Progressive Delivery at GitLab</a></p>&#10;<p><a href="https://redmonk.com/jgovernor/2019/02/25/progressive-delivery-at-sumo-logic/">Progressive Delivery at Sumo Logic</a></p>&#10;</div>&#10;<div class="permalink"><a href="http://creativecommons.org/licenses/by-nc-sa/2.0/" rel="license">©</a> <a href="http://feedproxy.google.com/~r/JamesGovernorsMonkchips/~3/gMtfPHOuwu0/">James Governor at <time datetime="2019-08-07T14:32:06Z" title="GMT">August 07, 2019 02:32 PM</time></a></div></div>&#10;&#10;<div class="news james-governor" xml:lang="en-US">&#10;<h3><a href="https://redmonk.com/jgovernor" title="James Governor's Monkchips">James Governor</a>—<a href="http://feedproxy.google.com/~r/JamesGovernorsMonkchips/~3/xiFAN6hdmbI/">Kubernetes Matures: On Operator Experience, industry updates from Docker, Pivotal and Mesosphere.</a></h3>&#10;<div class="content"><p>Kubernetes has firmly established itself as the industry standard for container orchestration. There is basically no other game in town at this point. But when it comes to user experience there is plenty to play for – we’re still early in a secular shift. So far a lot of the Kubernetes build-out has been very much full stack, with the expectation that the developer is also an operator. This needs to change. Specialisation will be required for Kubernetes to continue to flourish. Operator Experience and Developer Experience are not the same thing – they concern two different personae.</p>&#10;<p>At which point I want to mention a couple of clients that recently asked for quotes for press releases about their wholehearted adoption of Kubernetes. Both Docker and Pivotal began as conflicted about Kubernetes, given their own architecture choices and legacies, but have little if any choice but to focus on encouraging and enabling Kubernetes adoption today. One reason I find both companies’ story arcs so interesting is that Docker essentially invented developer experience for containers, while Pivotal created a market around operator customers with Cloud Foundry, inspired by Heroku, for organisations to run their own PaaS platforms as internal service providers.</p>&#10;<p>The key design point for Docker Enterprise 3.0 is improving the Kubernetes experience. It makes a lot of sense for Docker to take this approach. While Docker’s own Swarm orchestration platform offered a simpler experience that some early adopters still prefer, the Kubernetes market is substantially bigger. The opportunity for Docker is to bridge Docker desktop and Kubernetes experiences with a managed experience that makes sense to enterprise customers and buyers. Here’s my quote in the <a href="https://www.prnewswire.com/news-releases/new-docker-enterprise-3-0-expands-platform-to-drive-high-velocity-application-innovation-from-the-desktop-to-the-cloud-300840860.html">Docker press release</a>.</p>&#10;<p style="padding-left: 40px;">“Increasing application development velocity and digital agility are a strategic imperative for companies in all sectors today. Developer experience is the killer app,” said RedMonk co-founder, James Governor. “Docker Kubernetes Service and Docker Application aim to package and simplify developer and operator experience, making modern container based workflows more accessible to developers and operators alike.”</p>&#10;<p>So what about Pivotal Software? From the <a href="https://www.businesswire.com/news/home/20190716005345/en/Pivotal-Kubernetes-Easier-Developers-Operators">press release</a>:</p>&#10;<p style="padding-left: 40px;">“Kubernetes is a runaway train right now, and organizations are struggling to keep deployments and management on track. They want to standardize processes, tools, and people, but face a fragmented, complex, and rapidly changing environment. Pivotal has a history of standardizing and documenting cloud-native tools and methods, and is now applying that experience to Kubernetes and associated technology—like Istio. It is finessing the industry shift to Kubernetes by taking management features from the Pivotal Application Service, and re-applying them.”</p>&#10;<p>Kubernetes is extremely sophisticated, but with great sophistication comes great complexity. As the broader stack is becoming clearer, we’re also seeing some dependencies emerge (for example in the Istio stack, with its Mixer, Pilot, Galley and Citadel components), which is kind of ironic for a platform intended to run microservices. Some folks were surprised when a Google Kubernetes Engine (GKE) upgrade in Google Cloud Platform also upgraded Istio.</p>&#10;<blockquote class="twitter-tweet">&#10;<p dir="ltr" lang="en">I've upgraded GKE to 1.13 and boom 💥 Istio went from 1.0 to 1.1. Then policy and mixer went into crash loop backoff, galley responded with TLS handshake timeouts and same with the gateway. Like all distributed systems, restarting things in a **specific** order fixed it 😜</p>&#10;<p>— Stefan Prodan (@stefanprodan) <a href="https://twitter.com/stefanprodan/status/1138506758635347968?ref_src=twsrc%5Etfw">June 11, 2019</a></p></blockquote>&#10;<p></p>&#10;<p>A bit ironic given that Stefan is building Flagger, an automated tool for canarying and blue/green deployments, designed to prevent rollouts going awry by making an application or service runs in the environment before cutting over to it. But there you go.</p>&#10;<p>When I spoke to the Pivotal Service Mesh (PAS) team recently about Istio, and the danger of breaking a customer app when upgrading Kubernetes, they said they’d made some design choices to mitigate that kind of risk, based on their experience running operations at scale with customers. The Operator Experience I mentioned before – you can’t break one thing when you upgrade another at a customer like Bank of America, Comcast or Orange. Pivotal has focused engineering on isolating functions such as telemetry and logging aggregation, with a more prescriptive view on exposing services, rather than exposing every low level API.</p>&#10;<p>Shannon Coen, Product Manager at Pivotal Software, said that while customers asked for more access to lower level APIs, there was a trade off involved. Pivotal’s strength is in offering velocity, and a feedback loop, with an opinionated stack. The primary users of Pivotal Software are the Platform Engineering Team, providing services to an Application Development Team. It’s a different design point.</p>&#10;<p>By acquiring Heptio, and with contributions from Pivotal, VMware is now the second main contributor to Kubernetes. Quite the commitment.</p>&#10;<p><a href="http://redmonk.com/jgovernor/files/2019/08/K8s-contributors.jpg"><img alt="" class="aligncenter wp-image-5040" height="344" src="http://redmonk.com/jgovernor/files/2019/08/K8s-contributors-1024x543.jpg" width="649"></img></a></p>&#10;<p>As if we needed any further evidence that Kubernetes user experience is the industry focus now, <a href="https://d2iq.com/blog/mesosphere-is-now-d2iq">Mesosphere has just rebranded as D2IQ</a>, to underline the fact Mesos is no longer its core engineering focus. The D2 stands for Day Two, when an environment is running in production, rather than just being under development. Again, this reflects an operator focus.</p>&#10;<p>As Kubernetes matures we’re going to see a great focus on operator roles. Industry history can tell us a lot here. VMware began as a platform for dev/test and QA, only latterly becoming the production environment of choice for enterprise workloads. I call this the VMware pattern, and it’s a common pattern for platform maturation. Specialisation and certification emerges in more mature markets as markets become commoditised.  A Kubernetes admin is not going to be the same person as someone that deploys an application on Kubernetes.</p>&#10;<p>See for example Google Cloud Run, which is designed to abstract the back end. It’s a tool for developers to target and use.</p>&#10;<p>VMware/Pivotal, IBM/RedHat, Google, are pulling their assets and go to market plans together for this market maturation. Microsoft has a Kubernetes play but is not packaging as effectively for Kubernetes consolidation as yet. That’s the anyone-but-Amazon club. Meanwhile Amazon Web Services is pragmatic and tactical about containers – customers want Kubernetes support and so they’ll provide it. Operations and Productions are generally where the money is, which is where the industry is coalescing now.</p>&#10;<p>Disclosure: Google Cloud, IBM, Red Hat, Microsoft, Pivotal, and VMware are all clients, but this research was published independently of client relationships.</p>&#10;<p>Related posts:</p>&#10;<p><a href="https://redmonk.com/jgovernor/2018/10/26/pivotal-transactions-kubernetes-and-taking-an-axe-to-long-term-support/">Pivotal, Transactions and Taking an Axe to Long Term Support</a></p>&#10;<p><a href="https://redmonk.com/jgovernor/2019/04/17/thomas-kurian-and-google-cloud-convenience-is-the-killer-app/">Thomas Kurian and Google Cloud: Convenience is the Killer App</a></p>&#10;<p><a href="https://redmonk.com/jgovernor/2017/12/15/on-aws-and-pivotal-opinions-and-overlaps/">On AWS and Pivotal, opinions and overlaps</a></p>&#10;<p><a href="https://redmonk.com/jgovernor/2018/05/25/kubernetes-won-so-now-what/">Kubernetes won – so now what?</a></p>&#10;<p><a href="https://redmonk.com/sogrady/2018/11/07/vmware-heptio/">The Kubernetes World: VMware Acquires Heptio</a></p>&#10;<p> </p>&#10;<p> </p>&#10;</div>&#10;<div class="permalink"><a href="http://creativecommons.org/licenses/by-nc-sa/2.0/" rel="license">©</a> <a href="http://feedproxy.google.com/~r/JamesGovernorsMonkchips/~3/xiFAN6hdmbI/">James Governor at <time datetime="2019-08-07T11:03:57Z" title="GMT">August 07, 2019 11:03 AM</time></a></div></div>&#10;&#10;<div class="news adrian-sutton" xml:lang="en-US">&#10;<h3><img class="icon" src="https://www.symphonious.net/wp-content/uploads/2018/06/cropped-Music-32x32.png"></img><a href="https://www.symphonious.net" title="Symphonious">Adrian Sutton</a>—<a href="https://www.symphonious.net/2019/08/07/adding-a-dco-signed-off-by-to-every-commit-in-a-git-repo/">Adding a DCO Signed-off-by to every commit in a git repo</a></h3>&#10;<div class="content"><p>If you’re switching from a CLA model to a DCO model you may want to add a Signed-off-by line to every existing commit so that you can run automated DCO checks over the entire repository.  Doing this obviously assumes that your CLA sets things up so that you are actually in a position to provide a DCO sign-off.</p><p>Once you’re happy with all the legalities, the change is a single command using git filter-branch:</p><pre>git filter-branch --msg-filter &quot;cat - &amp;&amp; echo &amp;&amp; echo 'Signed-off-by: Some Person &lt;some.person@example.com&gt;'&quot;</pre><img alt="" height="1" src="http://feeds.feedburner.com/~r/symphonious/~4/wQVOaBTlYjs" width="1"></img></div>&#10;<div class="permalink"><a href="https://www.symphonious.net/2019/08/07/adding-a-dco-signed-off-by-to-every-commit-in-a-git-repo/">by Adrian Sutton at <time datetime="2019-08-07T02:56:52Z" title="GMT">August 07, 2019 02:56 AM</time></a></div></div>&#10;&#10;<div class="news webkit" xml:lang="en-US">&#10;<h3><a href="https://webkit.org" title="Blog – WebKit">WebKit</a>—<a href="https://webkit.org/blog/9497/release-notes-for-safari-technology-preview-89/">Release Notes for Safari Technology Preview 89</a></h3>&#10;<div class="content"><p><a href="https://webkit.org/blog/6017/introducing-safari-technology-preview/">Safari Technology Preview</a> Release 89 is now <a href="https://webkit.org/downloads/">available for download</a> for macOS Mojave and the macOS Catalina beta. If you already have Safari Technology Preview installed, you can update in the Software Update pane of System Preferences on macOS.</p>&#10;<p>This release covers WebKit revisions <a href="https://trac.webkit.org/log?stop_rev=247433&amp;&amp;rev=248024&amp;limit=999">247433-248024</a>.</p>&#10;<h3>JavaScript</h3>&#10;<ul>&#10;<li>Implemented nullish coalescing with the <code>??</code> operator for ESNext (<a href="https://trac.webkit.org/changeset/247819/webkit/">r247819</a>)</li>&#10;</ul>&#10;<h3>Web API</h3>&#10;<ul>&#10;<li>Added <code>referrerpolicy</code> attribute support for <code>&lt;script&gt;</code> elements (<a href="https://trac.webkit.org/changeset/247509/webkit/">r247509</a>)</li>&#10;<li>Changed <code>window.openDatabase</code> to be overridable (<a href="https://trac.webkit.org/changeset/247434/webkit/">r247434</a>)</li>&#10;<li>Fixed an IndexedDB error where the starting version change transaction may be neglected (<a href="https://trac.webkit.org/changeset/247649/webkit/">r247649</a>)</li>&#10;<li>Fixed the ability to unbold selected text when the system font is used (<a href="https://trac.webkit.org/changeset/247439/webkit/">r247439</a>)</li>&#10;<li>Made storing cross-origin top-level prefetches in HTTP cache optional (<a href="https://trac.webkit.org/changeset/247860/webkit/">r247860</a>)</li>&#10;<li>Moving right by word boundary right before an object element followed by a <code>&lt;br&gt;</code> element hangs (<a href="https://trac.webkit.org/changeset/247881/webkit/">r247881</a>)</li>&#10;<li>Removed support for <code>beforeload</code> on <code>link=prefetch</code> (<a href="https://trac.webkit.org/changeset/247481/webkit/">r247481</a>)</li>&#10;</ul>&#10;<h3>Compatibility</h3>&#10;<ul>&#10;<li>Fixed Daring Fireball long press highlights that were unnecessarily inflated due to false illegibility (<a href="https://trac.webkit.org/changeset/247792/webkit/">r247792</a>)</li>&#10;<li>Fixed contextual menu actions for YouTube videos (<a href="https://trac.webkit.org/changeset/247901/webkit/">r247901</a>)</li>&#10;</ul>&#10;<h3>Accessibility</h3>&#10;<ul>&#10;<li>Exposed the <code>aria-label</code> attribute for <code>&lt;video&gt;</code> elements (<a href="https://trac.webkit.org/changeset/247891/webkit/">r247891</a>)</li>&#10;</ul>&#10;<h3>Media</h3>&#10;<ul>&#10;<li>Enabled a WebRTC debug mode without encryption (<a href="https://trac.webkit.org/changeset/247438/webkit/">r247438</a>)</li>&#10;<li>Fixed support for FLAC-in-MP4 (<a href="https://trac.webkit.org/changeset/247934/webkit/">r247934</a>)</li>&#10;</ul>&#10;<h3>Web Inspector</h3>&#10;<ul>&#10;<li>Added support for <code>console.screenshot</code> with detached (not in main DOM tree) <code>&lt;img&gt;</code> and <code>&lt;picture&gt;</code> elements (<a href="https://trac.webkit.org/changeset/247814/webkit/">r247814</a>)</li>&#10;<li>Added support for <code>console.screenshot</code> with <code>ImageData</code> and <code>ImageBitmap</code> (<a href="https://trac.webkit.org/changeset/247812/webkit/">r247812</a>)</li>&#10;<li>Added a “Show Grid” navigation item for the Images collection in the Resources tab (<a href="https://trac.webkit.org/changeset/248004/webkit/">r248004</a>)</li>&#10;<li>Added an indicator/separator around items in the Images collection in the Resources tab (<a href="https://trac.webkit.org/changeset/248019/webkit/">r248019</a>)</li>&#10;<li>Add special case for <code>about:blank</code> resources to show “Resource has no content” message (<a href="https://trac.webkit.org/changeset/247747/webkit/">r247747</a>)</li>&#10;<li>Fixed display of <code>application/xml</code> content for XHR requests (<a href="https://trac.webkit.org/changeset/247533/webkit/">r247533</a>)</li>&#10;<li>Fixed issues toggling multiple breakpoints when they’re collapsed into one line (<a href="https://trac.webkit.org/changeset/247639/webkit/">r247639</a>)</li>&#10;<li>Fixed Command-X (⌘X) to cut selected properties in the Styles sidebar (<a href="https://trac.webkit.org/changeset/247760/webkit/">r247760</a>)</li>&#10;<li>Made the Changes panel in the Elements Tab render with LTR text direction (<a href="https://trac.webkit.org/changeset/247492/webkit/">r247492</a>)</li>&#10;</ul>&#10;<h3>WebGPU</h3>&#10;<ul>&#10;<li>Implemented errors for GPURenderPipeline creation (<a href="https://trac.webkit.org/changeset/247764/webkit/">r247764</a>)</li>&#10;<li>Added descriptive error messages in WHLSL (<a href="https://trac.webkit.org/changeset/247834/webkit/">r247834</a>)</li>&#10;<li>Changed checker to <code>setError()</code> when a property access node can’t commit its base type in WHLSL (<a href="https://trac.webkit.org/changeset/247676/webkit/">r247676</a>)</li>&#10;<li>Changed to return the zero-value enum in the enum-from-integer constructor when the integer is not a valid enum value in WHLSL (<a href="https://trac.webkit.org/changeset/247675/webkit/">r247675</a>)</li>&#10;<li>Made enums work in WHLSL (<a href="https://trac.webkit.org/changeset/247666/webkit/">r247666</a>)</li>&#10;<li>Updated matrix memory layout to match HLSL by laying out columns linearly in WHLSL (<a href="https://trac.webkit.org/changeset/247468/webkit/">r247468</a>)</li>&#10;</ul></div>&#10;<div class="permalink"><a href="https://webkit.org/blog/9497/release-notes-for-safari-technology-preview-89/">by at <time datetime="2019-08-07T00:28:45Z" title="GMT">August 07, 2019 12:28 AM</time></a></div></div>&#10;&#10;<h2><time datetime="2019-08-05">August 05, 2019</time></h2>&#10;&#10;<div class="news leonard-richardson">&#10;<h3><a href="https://www.crummy.com/" title="News You Can Bruise">Leonard Richardson</a>—<a href="http://www.crummy.com/2019/08/04/0">July Film Roundup</a></h3>&#10;<div class="content"><ul>&#10;<li><i>Long Day's Journey Into Night</i> (2018): You know I like an arthouse film now and again. I'm glad they tried something different, but I wasn't really feeling this one. I did like the 3D section, but it probably doesn't make sense unless you sit through the first half. The second half felt like an escape room, which is pretty cool, but the first half was the random, disconnected clues written on scraps of paper which you need to assemble to solve the escape room.&#10;&#10;</li><li><i>Bathtubs Over Broadway</i> (2018): Recommended by good ol' Pat Rafferty, this documentary is both a survey of a forgotten art form, and the story of a snarky person who discovers sincerity. I was hoping for a lot more in-depth on the survey, but I liked Steve Young's term of &quot;comedy poisoning&quot; for diagnosing his own snark. Really fun overall.&#10;&#10;</li><li><i>Any Number Can Win</i> (1963): A.k.a. <i>Melody en sous-sol</i>, a.k.a. <i>The Caper That Sank</i>, a.k.a. <i>Never Steal Anything Wet</i> (just kidding). This had really fun heist planning and aftermath, but the heist itself, a dialogue-light bit clearly inspired by <i>Rififi</i>, was a little dull, and the romance subplot was a snoozefest. I much prefered the noir opening, where the aging heistmaster gets out of prison only to discover that Modernism has consumed the world and Jacques Tati is filming <i>Playtime</i> in his home town. Had a real <i>Reginald Perrin</i> vibe.&#10;&#10;</li><li><i>The Burglars</i> (1971): A.k.a. <i>Le Casse</i>. This movie starts with a huge nerd-out as the titular burglars invade a beautiful 1960s mansion and crack the safe with a specialized piece of equipment that, e.g. uses Scantron-like cards to program a key-cutting machine. Includes long sequences where Jean-Paul Belmondo is looking stuff up in the service manual, a manual which is either the most detailed prop in the entire movie, written in good manual English, or... this is a real piece of equipment with a real service manual? I guess they gotta make safe keys somehow. I would love to know more about this machine!&#10;&#10;<p>Also, as long as I'm focusing on details most people don't care about, in the granary office at the end of this movie there's a hatrack which strongly resembles what Duchamp's <i>Hat Rack</i> would look like if it were actually a readymade.&#10;&#10;</p><p>Often I focus on these little things because the rest of the movie was boring, but although the heist that opens <i>The Burglars</i> is the best part of the movie, there's a ton of good stuff here. There's a cool car chase, good stunts, excellent cat-and-mouse between Belmondo and Omar Sharif. The fashions and design are swinging '60s throughout. Bad parts: the ending is pretty weak, there's a doesthegoldfishdie.com moment near the beginning, and an ugly scene where Belmondo's character slaps a woman around and it's played for laughs—unnecessary and really hard to stomach.&#10;&#10;</p></li><li><i>The Bishop's Wife</i> (1947): It's no <i>Wings of Desire</i>, but it covers some of the same ground. The minor characters are fun. Cary Grant's character is the ultimate service top, and it's wonderful to watch him be oblivious to society's rules about who does things for whom. One of these gags is reprised twice in a way that reminded me of Billy Wilder. IMDB says uncredited writing credit for... Billy Wilder! Trivia says he was just called in to redo a couple scenes, though. You can tell he didn't have full rein over the screenplay because the characters fulfill their dreams.&#10;&#10;&#10;</li></ul></div>&#10;<div class="permalink"><a title="Licensed under a Creative Commons License">©</a> <a href="http://www.crummy.com/2019/08/04/0">Leonard Richardson at <time datetime="2019-08-05T00:46:34Z" title="GMT">August 05, 2019 12:46 AM</time></a></div></div>&#10;&#10;<h2><time datetime="2019-08-03">August 03, 2019</time></h2>&#10;&#10;<div class="news antonio-cangiano" xml:lang="en-US">&#10;<h3><a href="https://programmingzen.com" title="Programming Zen">Antonio Cangiano</a>—<a href="http://feedproxy.google.com/~r/ZenAndTheArtOfRubyProgramming/~3/g1oLiCUpb6w/">Exploring Mathematics with Matplotlib and Python</a></h3>&#10;<div class="content"><p>We, humans, are visual creatures. We evolved reasonable abstraction capabilities but we shine when we can visualize the problem at hand.</p>&#10;&#10;&#10;&#10;<p>This is why I’m a big fan of Data Visualization as a discipline. Data has the answers. Visualization helps us better understand and interpret them.</p>&#10;&#10;&#10;&#10;<p>(For a great introduction to the subject, consider taking the <a href="https://www.coursera.org/learn/python-for-data-visualization" rel="noreferrer noopener" target="_blank">Data Visualization course</a> by my colleague Alex Aklson, Ph.D.) </p>&#10;&#10;&#10;&#10;<p>Perhaps, above all, I like the exploratory nature of visualizing data. We must be mindful of <a href="https://en.wikipedia.org/wiki/Apophenia" rel="noreferrer noopener" target="_blank">clustering illusions</a> and type I errors, but it’s fun to explore unbridled, feeding our intuition and the part of our brain that seeks patterns.</p>&#10;&#10;&#10;&#10;<p>Let’s consider an example. Take a look at this list of numbers.</p>&#10;&#10;&#10;&#10;<p class="has-background has-pale-cyan-blue-background-color">[21, 71, 41, 35, 41, 83, 48, 62, 26, 40, 46, 90, 50, 23, 11, 86, 95, 4, 50, 25, 93, 19, 67, 10, 27, 38, 78, 6, 71, 15, 11, 13, 10, 89, 3, 52, 98, 65, 97, 17, 64, 25, 33, 78, 28, 25, 85, 68, 2, 72, 63, 50, 9, 2, 52, 61, 62, 73, 89, 77, 10, 95, 5, 85, 46, 89, 70, 47, 20, 51, 6, 4, 51, 44, 79, 24, 63, 55, 99, 92, 29, 63, 16, 78, 15, 6, 91, 85, 8, 71, 23, 63, 67, 28, 44, 86, 83, 98, 57, 91]</p>&#10;&#10;&#10;&#10;<p>Notice anything interesting?</p>&#10;&#10;&#10;&#10;<p>If you look at it hard enough, chances are your brain will come up with something. Don’t feel bad if it didn’t as this is just a list of 100 random numbers (technically, pseudo-random numbers).</p>&#10;&#10;&#10;&#10;<p>If we chart these points, we get a representation of this randomness.</p>&#10;&#10;&#10;&#10;<div class="wp-block-image"><figure class="aligncenter"><img alt="100 random draws." class="wp-image-2104" src="https://i2.wp.com/programmingzen.com/wp-content/uploads/2019/08/random-100.png?fit=1024%2C704&amp;ssl=1"></img></figure></div>&#10;&#10;&#10;&#10;<p>There is no pattern to be had. Charting these scattered points is not entirely useless, however.</p>&#10;&#10;&#10;&#10;<p>Knowing full well that my brain will try to find a pattern, I let it play and noticed something. Nothing too surprising, but some dots appear to line up. This can easily be seen above y = 40, for example.</p>&#10;&#10;&#10;&#10;<p>Well, big deal, some numbers are randomly repeated. Yes, but… now, I’m curious. How often are numbers repeated?</p>&#10;&#10;&#10;&#10;<p>Let’s chart once more, this time using the frequency of occurrence on the y-axis.</p>&#10;&#10;&#10;&#10;<div class="wp-block-image"><figure class="aligncenter"><img alt="Frequency of random occurrences with N=100." class="wp-image-2105" src="https://i2.wp.com/programmingzen.com/wp-content/uploads/2019/08/100.png?fit=1024%2C704&amp;ssl=1"></img></figure></div>&#10;&#10;&#10;&#10;<p>This looks a little less random, doesn’t it? With this set of 100 draws, the range appears to be between 0 (the number wasn’t drawn) and 4 repetitions (in the case of number 63).</p>&#10;&#10;&#10;&#10;<p>(This conjured some unrelated thoughts about the <a href="https://en.wikipedia.org/wiki/Survivorship_bias" rel="noreferrer noopener" target="_blank">survivorship bias</a>. I humorously imagined the top dots on the chart selling books to the lower dots about how to succeed. But I digress.)</p>&#10;&#10;&#10;&#10;<p>It’s also visually obvious that there are fewer and fewer numbers as the frequency of repetition goes up. This makes sense. The odds of a number being present at least once are fairly high:</p>&#10;&#10;&#10;&#10;<p style="text-align: center;"><img alt="\displaystyle P_{1} = 1 - (\frac{99}{100})^{100} \approx 0.6339 \approx 63\%" class="latex" src="https://s0.wp.com/latex.php?latex=%5Cdisplaystyle+P_%7B1%7D+%3D+1+-+%28%5Cfrac%7B99%7D%7B100%7D%29%5E%7B100%7D+%5Capprox+0.6339+%5Capprox+63%5C%25&amp;bg=ffffff&amp;fg=000&amp;s=0" title="\displaystyle P_{1} = 1 - (\frac{99}{100})^{100} \approx 0.6339 \approx 63\%"></img></p>&#10;&#10;&#10;&#10;<p>While the odds of it being repeated 100 times are virtually zero:</p>&#10;&#10;&#10;&#10;<p style="text-align: center;"><img alt="\displaystyle P_{100} = \frac{1}{100^{100}} = 1\times{10}^{-200} \approx 0\%" class="latex" src="https://s0.wp.com/latex.php?latex=%5Cdisplaystyle+P_%7B100%7D+%3D+%5Cfrac%7B1%7D%7B100%5E%7B100%7D%7D+%3D+1%5Ctimes%7B10%7D%5E%7B-200%7D+%5Capprox+0%5C%25&amp;bg=ffffff&amp;fg=000&amp;s=0" title="\displaystyle P_{100} = \frac{1}{100^{100}} = 1\times{10}^{-200} \approx 0\%"></img></p>&#10;&#10;&#10;&#10;<p>Every other frequency falls in between these two bounds.</p>&#10;&#10;&#10;&#10;<p>Okay, cool, with 100 draws we seem to have quite a few numbers repeating 3 times, with one number even repeating 4 times.</p>&#10;&#10;&#10;&#10;<h2>A hypothesis emerges</h2>&#10;&#10;&#10;&#10;<p>We can hypothesize that as the number of draws increases, we might see a larger number of maximum repetitions as well. With 100, we comfortably hit 3 repetitions with several numbers, and we even had a 4. What happens with 1000, 10,000, 100,000 draws?</p>&#10;&#10;&#10;&#10;<p>It feels like the odds of a number appearing even more frequently by chance should go up.</p>&#10;&#10;&#10;&#10;<p>In other words, the maximum number of repetitions, as a function of the number of draws, should diverge. Very slowly, mind you, but it should diverge.</p>&#10;&#10;&#10;&#10;<p>Hmm, slowly diverge. Logarithmically, perhaps? Just a hunch, but let’s throw caution to the wind, and hazard an even stronger hypothesis.</p>&#10;&#10;&#10;&#10;<p>With n=100, observation leads us to a fairly safe guess. Namely, it’s very likely that at least one number will repeat at least 3 times. 3, in our case, happens to be <img alt="\log{n} + 1" class="latex" src="https://s0.wp.com/latex.php?latex=%5Clog%7Bn%7D+%2B+1&amp;bg=ffffff&amp;fg=000&amp;s=0" title="\log{n} + 1"></img>.</p>&#10;&#10;&#10;&#10;<p>I bet the odds aren’t too bad for <img alt="\log{n} + 2" class="latex" src="https://s0.wp.com/latex.php?latex=%5Clog%7Bn%7D+%2B+2&amp;bg=ffffff&amp;fg=000&amp;s=0" title="\log{n} + 2"></img> either, but <img alt="\log{n} + 1" class="latex" src="https://s0.wp.com/latex.php?latex=%5Clog%7Bn%7D+%2B+1&amp;bg=ffffff&amp;fg=000&amp;s=0" title="\log{n} + 1"></img> seems extremely likely.</p>&#10;&#10;&#10;&#10;<p>So our guess/hypothesis becomes:</p>&#10;&#10;&#10;&#10;<p class="has-background has-pale-cyan-blue-background-color">Given n integers randomly selected from 1 to n, there is a high probability that at least one number will be repeated at least log n + 1 times.</p>&#10;&#10;&#10;&#10;<p>This would imply:</p>&#10;&#10;&#10;&#10;<table class="wp-block-table aligncenter has-fixed-layout"><tbody><tr><td>n</td><td>Repetitions</td></tr><tr><td>1000</td><td>4</td></tr><tr><td>10,000</td><td>5</td></tr><tr><td>100,000</td><td>6</td></tr></tbody></table>&#10;&#10;&#10;&#10;<p>Let’s fire up good ol’ Python and see where we land.</p>&#10;&#10;&#10;&#10;<p>When I ran the code (shown at the end) for n = 1000 I got the following chart.</p>&#10;&#10;&#10;&#10;<div class="wp-block-image"><figure class="aligncenter"><img alt="Frequency of random occurrences with N=1000. " class="wp-image-2122" src="https://i1.wp.com/programmingzen.com/wp-content/uploads/2019/08/1000.png?fit=1024%2C704&amp;ssl=1"></img></figure></div>&#10;&#10;&#10;&#10;<p>Look at all those points on y = 4. Even <img alt="\log{n} + 2 = 5" class="latex" src="https://s0.wp.com/latex.php?latex=%5Clog%7Bn%7D+%2B+2+%3D+5&amp;bg=ffffff&amp;fg=000&amp;s=0" title="\log{n} + 2 = 5"></img> is holding up. Methinks, we are onto something.</p>&#10;&#10;&#10;&#10;<p>Let’s try n = 10,000.</p>&#10;&#10;&#10;&#10;<div class="wp-block-image"><figure class="aligncenter"><img alt="Frequency of random occurrences with N=10,000." class="wp-image-2123" src="https://i0.wp.com/programmingzen.com/wp-content/uploads/2019/08/10000.png?fit=1024%2C704&amp;ssl=1"></img></figure></div>&#10;&#10;&#10;&#10;<p>Yup. We expected some numbers to be repeated 5 times, and we got quite a few of those.</p>&#10;&#10;&#10;&#10;<p>Okay, time to bring out the big guns. n=100,000.</p>&#10;&#10;&#10;&#10;<div class="wp-block-image"><figure class="aligncenter"><img alt="Frequency of random occurrences with N=100,000." class="wp-image-2124" src="https://i0.wp.com/programmingzen.com/wp-content/uploads/2019/08/100_000.png?fit=1024%2C704&amp;ssl=1"></img></figure></div>&#10;&#10;&#10;&#10;<p>It looks like it still holds. There is a multitude of numbers with 6 repetitions.</p>&#10;&#10;&#10;&#10;<h2>So what</h2>&#10;&#10;&#10;&#10;<p>OK, so we started off with random data and through visualization and a bit of intuition, we came up with a pretty neat (if conservative) rule about how often numbers repeat by chance. Along with some room to refine our guess and experiment further.</p>&#10;&#10;&#10;&#10;<p>This is the essence of science. You observe phenomena, formulate a hypothesis, and then try to prove or disprove it through experimentation.</p>&#10;&#10;&#10;&#10;<p>Now, before the rigorous mathematicians among my readers have a conniption, all this doesn’t prove the hypothesis above. Of course.</p>&#10;&#10;&#10;&#10;<p>What does highly likely even mean in this context? Is it 90%, or 99.999% How does it vary as n varies? You’ll want to analytically verify this and calculate what the actual odds for the occurrence of at least <img alt="\log{n} + 1" class="latex" src="https://s0.wp.com/latex.php?latex=%5Clog%7Bn%7D+%2B+1&amp;bg=ffffff&amp;fg=000&amp;s=0" title="\log{n} + 1"></img> and <img alt="\log{n} + 2" class="latex" src="https://s0.wp.com/latex.php?latex=%5Clog%7Bn%7D+%2B+2&amp;bg=ffffff&amp;fg=000&amp;s=0" title="\log{n} + 2"></img> repetitions are.</p>&#10;&#10;&#10;&#10;<p>I have not had the time to take this further step (the solution is likely not as trivial as it first looks). At the risk of enraging you with a flashback from your college days, I’m afraid I’ll have to leave this as an exercise for the reader. <img alt="😉" class="wp-smiley" src="https://s.w.org/images/core/emoji/12.0.0-1/72x72/1f609.png" style="height: 1em;"></img></p>&#10;&#10;&#10;&#10;<p>But this fun exploration is what got us to the hypothesis and these follow up questions in the first place. Historically, people have often figured out some mathematical relation or hint of it before they could rigorously prove it or had the exact answer.</p>&#10;&#10;&#10;&#10;<p>The Babylonians come to mind, as they might have figured out the Pythagorean Theorem before they had a rigorous proof:</p>&#10;&#10;&#10;&#10;<blockquote class="wp-block-quote" style="text-align: left;"><p>The famous and controversial Plimpton 322 clay tablet, believed to date from around 1800 BCE, suggests that the Babylonians may well have known the secret of right-angled triangles (that the square of the hypotenuse equals the sum of the square of the other two sides) many centuries before the Greek Pythagoras. The tablet appears to list 15 perfect Pythagorean triangles with whole number sides, although some claim that they were merely academic exercises, and not deliberate manifestations of Pythagorean triples.</p><cite>— <a href="https://www.storyofmathematics.com/sumerian.html" rel="noreferrer noopener" target="_blank">Luke Mastin</a></cite></blockquote>&#10;&#10;&#10;&#10;<p>Computer simulation and data visualization have just opened us up to a world of mathematical exploration not previously accessible to any human.</p>&#10;&#10;&#10;&#10;<h2>Plotting in Python with Matplotlib</h2>&#10;&#10;&#10;&#10;<p>If all the math above isn’t very interesting to you, the Python 3 code I used to plot the charts may be of greater interest.</p>&#10;&#10;&#10;&#10;<p>This is the code in its entirety.</p>&#10;&#10;&#10;&#10;<pre class="wp-block-code"><code>&#10;import matplotlib.pyplot as plt&#10;import random&#10;&#10;MAX_NUM = 1000&#10;&#10;x_values = range(1, MAX_NUM + 1)&#10;values = [random.randint(1, MAX_NUM) for x in x_values]&#10;y_values = [values.count(x) for x in x_values]&#10;&#10;plt.style.use(&quot;seaborn&quot;)&#10;fig, ax = plt.subplots()&#10;ax.scatter(x_values, y_values, s=10)&#10;&#10;ax.set_title(f&quot;Random Number Occurrences (N = {MAX_NUM})&quot;, fontsize=18)&#10;ax.set_xlabel(&quot;Number&quot;, fontsize=14)&#10;ax.set_ylabel(&quot;Occurrences&quot;, fontsize=14)&#10;&#10;ax.tick_params(axis=&quot;both&quot;, which=&quot;major&quot;, labelsize=14)&#10;&#10;plt.show()</code></pre>&#10;&#10;&#10;&#10;<p>Let’s break it down. We start off by importing <code>pyplot</code> from <code>matplotlib</code> and <code>random</code> since we’ll be generating pseudo-random numbers.</p>&#10;&#10;&#10;&#10;<p>In truth, we could use <code>secrets</code> for better randomness, but it’s overkill here and the results are unaffected.</p>&#10;&#10;&#10;&#10;<pre class="wp-block-code"><code>&#10;import matplotlib.pyplot as plt&#10;import random</code></pre>&#10;&#10;&#10;&#10;<p><br></br>We then set our input size (<code>MAX_NUM</code>), generate that number of random values (<code>values</code>) and aggregate their frequency in <code>y_values</code>.</p>&#10;&#10;&#10;&#10;<pre class="wp-block-code"><code>&#10;MAX_NUM = 1000&#10;&#10;x_values = range(1, MAX_NUM + 1)&#10;values = [random.randint(1, MAX_NUM) for x in x_values]&#10;y_values = [values.count(x) for x in x_values]</code></pre>&#10;&#10;&#10;&#10;<p><br></br>Here we set some styling for the chart so that it looks a bit better. We pick the <code>seaborn</code> style, set the thickness of the dots (10 made them fairly visible), and set the labels for the axes.</p>&#10;&#10;&#10;&#10;<pre class="wp-block-code"><code>&#10;plt.style.use(&quot;seaborn&quot;)&#10;fig, ax = plt.subplots()&#10;ax.scatter(x_values, y_values, s=10)&#10;&#10;ax.set_title(f&quot;Random Number Occurrences (N = {MAX_NUM})&quot;, fontsize=18)&#10;ax.set_xlabel(&quot;Number&quot;, fontsize=14)&#10;ax.set_ylabel(&quot;Occurrences&quot;, fontsize=14)&#10;&#10;ax.tick_params(axis=&quot;both&quot;, which=&quot;major&quot;, labelsize=14)</code></pre>&#10;&#10;&#10;&#10;<p>Finally, we show the graph.</p>&#10;&#10;&#10;&#10;<pre class="wp-block-code"><code>&#10;plt.show()</code></pre>&#10;&#10;&#10;&#10;<p>Let me know if you enjoy this type of exploration and I might create a few more posts like this. Or conversely, feel free to tell me why I’m wrong about everything, in the comments below. <img alt="🙂" class="wp-smiley" src="https://s.w.org/images/core/emoji/12.0.0-1/72x72/1f642.png" style="height: 1em;"></img></p>&#10;&#10;&#10;&#10;<p><em>Special thanks to John McGowan of <a href="http://www.mathematical-software.com/" rel="noreferrer noopener" target="_blank">Mathematical Sofware</a>. I’m immensely grateful for his comments on an earlier draft of the article, although any errors remain my own.</em></p>&#10;<p>The post <a href="https://programmingzen.com/exploring-mathematics-with-matplotlib-and-python/" rel="nofollow">Exploring Mathematics with Matplotlib and Python</a> appeared first on <a href="https://programmingzen.com" rel="nofollow">Programming Zen</a>.</p>&#10;<img alt="" height="1" src="http://feeds.feedburner.com/~r/ZenAndTheArtOfRubyProgramming/~4/g1oLiCUpb6w" width="1"></img></div>&#10;<div class="permalink"><a href="http://feedproxy.google.com/~r/ZenAndTheArtOfRubyProgramming/~3/g1oLiCUpb6w/">by Antonio Cangiano at <time datetime="2019-08-03T20:39:37Z" title="GMT">August 03, 2019 08:39 PM</time></a></div></div>&#10;&#10;</div><h1>Footnotes</h1>&#10;&#10;<div id="sidebar"><h2>Info</h2><dl><dt>Last updated:</dt><dd><time datetime="2019-08-25T19:29:51Z" title="GMT">August 25, 2019 07:29 PM</time></dd><dt>Powered by:</dt><dd><a href="http://intertwingly.net/code/venus/"><img alt="Venus" border="0" height="15" src="images/venus.png" width="80"></img></a></dd><dt>Export:</dt><dd><ul><li><a href="opml.xml"><img alt="OPML" src="images/opml.png"></img></a></li><li><a href="foafroll.xml"><img alt="FOAF" src="images/foaf.png"></img></a></li></ul></dd></dl><h2>Search</h2><form><input name="q"></input></form></div>&#10;&#10;<div id="footer"><h2>Memes <a href="memes.atom"><img src="images/feed-icon-10x10.png"></img></a></h2><h2>Subscriptions</h2><ul>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Adrian Bateman</a></li>&#10;<li><a href="http://feeds2.feedburner.com/symphonious" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active inactive" href="https://www.symphonious.net" title="Symphonious">Adrian Sutton</a></li>&#10;<li><a href="http://infrequently.org/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://infrequently.org" title="no activity in 90 days">Alex Russell</a></li>&#10;<li><a href="http://feeds.feedburner.com/hublog" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Alf Eaton</a></li>&#10;<li><a href="https://allisonrandal.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://allisonrandal.com" title="no activity in 90 days">Allison Randal</a></li>&#10;<li><a href="https://jhingran.typepad.com/anant_jhingrans_musings/atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://jhingran.typepad.com/anant_jhingrans_musings/" title="no activity in 90 days">Anant Jhingran</a></li>&#10;<li><a href="http://www.consortiuminfo.org/standardsblog/backend/atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Andy Upgrove</a></li>&#10;<li><a href="http://feeds.dashes.com/AnilDash" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="inactive" href="https://anildash.com/" title="Anil Dash">Anil Dash</a></li>&#10;<li><a href="https://annevankesteren.nl/feeds/weblog" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://annevankesteren.nl/" title="no activity in 90 days">Anne van Kesteren</a></li>&#10;<li><a href="http://feeds.feedburner.com/ZenAndTheArtOfRubyProgramming" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active" href="https://programmingzen.com" title="Programming Zen">Antonio Cangiano</a><ul><li><a href="http://feedproxy.google.com/~r/ZenAndTheArtOfRubyProgramming/~3/rOyU1fOHrLM/">Join My Team at IBM</a></li></ul></li>&#10;<li><a href="https://blogs.apache.org/foundation/feed/entries/atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active" href="https://blogs.apache.org/foundation/" title="The Apache Software Foundation Blog">Apache Software Foundation</a><ul><li><a href="https://blogs.apache.org/foundation/entry/the-apache-news-round-up136">The Apache News Round-up: week ending 23 August 2019</a></li></ul></li>&#10;<li><a href="http://plasmasturm.org/feed" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active inactive" href="http://plasmasturm.org/" title="plasmasturm.org">Aristotle Pagaltzis</a></li>&#10;<li><a href="https://lehors.wordpress.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://lehors.wordpress.com" title="no activity in 90 days">Arnaud Le Hors</a></li>&#10;<li><a href="https://enthusiasm.cozy.org/feed/atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://enthusiasm.cozy.org" title="no activity in 90 days">Ben Hyde</a></li>&#10;<li><a href="http://benjamin.smedbergs.us/blog/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://benjamin.smedbergs.us/blog" title="no activity in 90 days">Ben Smedberg</a></li>&#10;<li><a href="http://soundadvice.id.au/blog/index.atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://soundadvice.id.au/blog/" title="no activity in 90 days">Benjamin Carlyle</a></li>&#10;<li><a href="https://grep.codeconsult.ch/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://grep.codeconsult.ch" title="no activity in 90 days">Bertrand Delacretaz</a></li>&#10;<li><a href="http://billhiggins.us/journal/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://billhiggins.us/journal" title="no activity in 90 days">Bill Higgins</a></li>&#10;<li><a href="http://www.whump.com/moreLikeThis/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://www.whump.com/moreLikeThis" title="410: gone">Bill Humphries</a></li>&#10;<li><a href="https://dehora.net/journal?format=rss" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="inactive" href="https://dehora.net/" title="Bill de hÓra">Bill de hÓra</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Bob Geller</a></li>&#10;<li><a href="http://feeds.feedburner.com/bobwyman" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://bob.wyman.us/main/" title="no activity in 90 days">Bob Wyman</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Bobby Woolf</a></li>&#10;<li><a href="https://brad.livejournal.com/data/atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://brad.livejournal.com/" title="no activity in 90 days">Brad Fitzpatrick</a></li>&#10;<li><a href="http://blog.codinginparadise.org/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://blog.codinginparadise.org/" title="no activity in 90 days">Brad Neuberg</a></li>&#10;<li><a href="https://brendaneich.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://brendaneich.com" title="no activity in 90 days">Brendan Eich</a></li>&#10;<li><a href="http://feeds2.feedburner.com/fitz" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://fitz.blogspot.com/" title="no activity in 90 days">Brian Fitzpatrick</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="410: gone">Brian Jones</a></li>&#10;<li><a href="http://kasparov.skife.org/blog/index.atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://kasparov.skife.org/blog" title="no activity in 90 days">Brian McCallister</a></li>&#10;<li><a href="https://www.schneier.com/blog/atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active" href="https://www.schneier.com/blog/" title="Schneier on Security">Bruce Schneier</a><ul><li><a href="https://www.schneier.com/blog/archives/2019/08/friday_squid_bl_694.html">Friday Squid Blogging: Vulnerabilities in Squid Server</a></li><li><a href="https://www.schneier.com/blog/archives/2019/08/license_plate_n.html">License Plate &quot;NULL&quot;</a></li><li><a href="https://www.schneier.com/blog/archives/2019/08/modifying_a_tes.html">Modifying a Tesla to Become a Surveillance Platform</a></li><li><a href="https://www.schneier.com/blog/archives/2019/08/google_finds_20.html">Google Finds 20-Year-Old Microsoft Windows Vulnerability</a></li><li><a href="https://www.schneier.com/blog/archives/2019/08/surveillance_as_2.html">Surveillance as a Condition for Humanitarian Aid</a></li><li><a href="https://www.schneier.com/blog/archives/2019/08/influence_opera.html">Influence Operations Kill Chain</a></li></ul></li>&#10;<li><a href="http://www.realworldhaskell.org/blog/feed/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Bryan O'Sullivan</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="408: request timeout">Bug Labs</a></li>&#10;<li><a href="http://feeds.feedburner.com/majordojo" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://www.majordojo.com/" title="no activity in 90 days">Byrne Reese</a></li>&#10;<li><a href="http://feeds.feedburner.com/Chadfowlercom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Chad Fowler</a></li>&#10;<li><a href="http://headius.blogspot.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://headius.blogspot.com/" title="no activity in 90 days">Charles Oliver Nutter</a></li>&#10;<li><a href="http://www.antipope.org/charlie/blog-static/atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active inactive" href="http://www.antipope.org/charlie/blog-static/" title="Charlie's Diary">Charles Stross</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="403: forbidden">Chris Anderson</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Chris Casciano</a></li>&#10;<li><a href="https://bluishcoder.co.nz/atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="inactive" href="http://bluishcoder.co.nz/" title="Bluishcoder">Chris Double</a></li>&#10;<li><a href="https://www.chrisjdavis.org/atom/1" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://www.chrisjdavis.org/" title="no activity in 90 days">Chris J. Davis</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Chris Oliver</a></li>&#10;<li><a href="https://cwilso.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://cwilso.com" title="no activity in 90 days">Chris Wilson</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Christopher Lenz</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Ciaran Gultnieks</a></li>&#10;<li><a href="http://www.shirky.com/weblog/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://www.shirky.com/weblog" title="no activity in 90 days">Clay Shirky</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">DB2 on Rails</a></li>&#10;<li><a href="https://robilad.livejournal.com/data/atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://robilad.livejournal.com/" title="no activity in 90 days">Dalibor Topic</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Damian Cugley</a></li>&#10;<li><a href="http://damienkatz.net/atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://damienkatz.net/" title="no activity in 90 days">Damian Katz</a></li>&#10;<li><a href="http://www.madmode.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Dan Connolly</a></li>&#10;<li><a href="http://feeds.feedburner.com/netzooid" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://netzooid.com/blog" title="no activity in 90 days">Dan Diephouse</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="403: forbidden">Dan Pritchett</a></li>&#10;<li><a href="http://feeds.feedburner.com/killerbees" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://blog.killerbees.co.uk/" title="no activity in 90 days">Danny Angus</a></li>&#10;<li><a href="http://feeds.feedburner.com/Carnage4life" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://www.25hoursaday.com/weblog/" title="no activity in 90 days">Dare Obasanjo</a></li>&#10;<li><a href="https://davanum.wordpress.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://davanum.wordpress.com" title="no activity in 90 days">Davanum Srinivas</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Dave Johnson</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="408: request timeout">Dave Orchard</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="408: request timeout">Dave Pawson</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Dave Shields</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Dave Thomas</a></li>&#10;<li><a href="http://www.freeke.org/ffg/index.atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://www.freeke.org/ffg" title="no activity in 90 days">Dave Walker</a></li>&#10;<li><a href="https://www.beautifuldesignmadesimple.com/blog/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://www.beautifuldesignmadesimple.com/blog/feed/atom/#respond" title="no activity in 90 days">David Ascher</a></li>&#10;<li><a href="atom-feed.atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://dbaron.org/log/" title="no activity in 90 days">David Baron</a></li>&#10;<li><a href="http://feeds.feedburner.com/LoudThinking" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://mongrel/" title="no activity in 90 days">David Heinemeier Hansson</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">David Isenberg</a></li>&#10;<li><a href="https://quoderat.megginson.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://quoderat.megginson.com" title="no activity in 90 days">David Megginson</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">David N. Welton</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">David Recordon</a></li>&#10;<li><a href="https://accounts.google.com/ServiceLogin?service=jotspot&amp;passive=1209600&amp;continue=https://sites.google.com/site/sites/system/errors/SiteDisabled?disabledSite%3Ddefaultdomain/jonathanloisellemedia&amp;followup=https://sites.google.com/site/sites/system/errors/SiteDisabled?disabledSite%3Ddefaultdomain/jonathanloisellemedia" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">David Siegel</a></li>&#10;<li><a href="http://meat.net/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://meat.net" title="no activity in 90 days">David Terrell</a></li>&#10;<li><a href="https://www.hyperorg.com/blogger/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active inactive" href="https://www.hyperorg.com/blogger" title="Joho the Blog">David Weinberger</a></li>&#10;<li><a href="http://prototypo.blogspot.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://prototypo.blogspot.com/" title="no activity in 90 days">David Wood</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">DeWitt Clinton</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="408: request timeout">Dick Hardt</a></li>&#10;<li><a href="https://www.pluralsight.com/blog" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Don Box</a></li>&#10;<li><a href="https://blog.docuverse.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://blog.docuverse.com" title="no activity in 90 days">Don Park</a></li>&#10;<li><a href="http://schepers.cc/feed/atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://schepers.cc" title="no activity in 90 days">Doug Schepers</a></li>&#10;<li><a href="https://allinthehead.com/rss" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://allinthehead.com/" title="no activity in 90 days">Drew McLellan</a></li>&#10;<li><a href="http://duncan-cragg.org/blog/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://duncan-cragg.org/blog/" title="no activity in 90 days">Duncan Cragg</a></li>&#10;<li><a href="http://times.usefulinc.com/atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://times.usefulinc.com/" title="no activity in 90 days">Edd Dumbill</a></li>&#10;<li><a href="http://edgerails.info/atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Edge Rails</a></li>&#10;<li><a href="http://tess.oconnor.cx/feed" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://tess.oconnor.cx/" title="404: not found">Edward O’Connor</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Elias Torres</a></li>&#10;<li><a href="http://feeds.feedburner.com/DrMacrosXmlRants" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://drmacros-xml-rants.blogspot.com/" title="no activity in 90 days">Eliot Kimber</a></li>&#10;<li><a href="http://cafe.elharo.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://cafe.elharo.com" title="no activity in 90 days">Elliotte Rusty Harold</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Eric Newcomer</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Erik Dahlström</a></li>&#10;<li><a href="http://goer.org/Journal/feed/atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://goer.org/Journal" title="no activity in 90 days">Evan Goer</a></li>&#10;<li><a href="http://anarchogeek.com/feed/atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Evan Henshaw-Plath</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Florian Jensen</a></li>&#10;<li><a href="http://fwierzbicki.blogspot.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://fwierzbicki.blogspot.com/" title="no activity in 90 days">Frank Wierzbicki</a></li>&#10;<li><a href="http://www.codehaus.org/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Geir Magnusson Jr</a></li>&#10;<li><a href="http://feeds.feedburner.com/blogspot/MKuf" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active" href="https://www.blog.google/" title="The Official Google Blog">Google</a><ul><li><a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/JqXnDIJiyEs/">Pixel 3a helped me see my vacation through a new Lens</a></li><li><a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/5dL46Phnnfk/">Accelerating Europe’s clean energy transition</a></li><li><a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/Gb7FLzpxAo4/">Maintaining the integrity of our platforms</a></li><li><a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/6Q9JEGoM_po/">The mobile challenge, and how to measure it</a></li><li><a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/GdRbBtqFH_A/">The Assistant turns your Smart Clock into a digital photo frame</a></li><li><a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/uCMDprbU4Lc/">Building a more private web</a></li><li><a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/ov8ryD9mK04/">A pop of color and more: updates to Android’s brand</a></li><li><a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/BiO8yXWa-Yk/">Next steps to ensure transparency, choice and control in digital advertising</a></li><li><a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/3POtKXgvy7w/">Additional safeguards to protect the quality of our ad network</a></li><li><a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/MEWt1riJ86o/">“Lite” but packs a punch: Google Go comes to Android everywhere</a></li></ul></li>&#10;<li><a href="http://feeds.feedburner.com/OfficialGoogleDataApisBlog" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://googledataapis.blogspot.com/" title="no activity in 90 days">Google Data APIs</a></li>&#10;<li><a href="http://feeds.feedburner.com/OfficialGoogleMapsApiBlog" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://googlemapsapi.blogspot.com/" title="no activity in 90 days">Google Maps API</a></li>&#10;<li><a href="http://feeds.feedburner.com/blogspot/dtKx" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://googlereader.blogspot.com/" title="no activity in 90 days">Google Reader</a></li>&#10;<li><a href="http://feeds2.feedburner.com/GoogleWaveDeveloperBlog" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://googlewavedev.blogspot.com/" title="no activity in 90 days">Google Wave</a></li>&#10;<li><a href="http://feeds.feedburner.com/agileprogrammer/sSCw" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Gordon Weakliem</a></li>&#10;<li><a href="http://feeds.feedburner.com/typepad/graham_glass/main" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://grahamglass.blogs.com/main/" title="no activity in 90 days">Graham Glass</a></li>&#10;<li><a href="http://prng.blogspot.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://prng.blogspot.com/" title="no activity in 90 days">Greg Stein</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Gregor J. Rothfuss</a></li>&#10;<li><a href="https://1raindrop.typepad.com/1_raindrop/atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://1raindrop.typepad.com/1_raindrop/" title="no activity in 90 days">Gunnar Peterson</a></li>&#10;<li><a href="http://feeds.feedburner.com/guykawasaki/Gypm" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://guykawasaki.com" title="no activity in 90 days">Guy Kawasaki</a></li>&#10;<li><a href="https://hsivonen.fi/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://hsivonen.fi/" title="no activity in 90 days">Henri Sivonen</a></li>&#10;<li><a href="https://flamefew.wordpress.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://flamefew.wordpress.com" title="410: gone">Henri Yandell</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Henry Story</a></li>&#10;<li><a href="http://hughw.blogspot.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://hughw.blogspot.com/" title="no activity in 90 days">Hugh Winkler</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="410: gone">IEBlog</a></li>&#10;<li><a href="http://www.ianbicking.org/feeds/atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="inactive" href="https://www.ianbicking.org/" title="Ian Bicking: a blog">Ian Bicking</a></li>&#10;<li><a href="https://ianskerrett.wordpress.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://ianskerrett.wordpress.com" title="no activity in 90 days">Ian Skerrett</a></li>&#10;<li><a href="http://feeds.feedburner.com/cubiclemuses" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://cubiclemuses.com/cm" title="no activity in 90 days">J Aaron Farr</a></li>&#10;<li><a href="http://soberbuildengineer.com/blog/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://soberbuildengineer.com/blog" title="no activity in 90 days">J Paul Reed</a></li>&#10;<li><a href="https://golem.ph.utexas.edu/~distler/blog/atom10.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://golem.ph.utexas.edu/~distler/blog/" title="no activity in 90 days">Jacques Distler</a></li>&#10;<li><a href="http://www.blogger.com/feeds/3944976411672994427/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://blog.jclark.com/" title="internal server error">James Clark</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">James Duncan Davidson</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">James E. Robinson, III</a></li>&#10;<li><a href="http://feeds.feedburner.com/JamesGovernorsMonkchips" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active inactive" href="https://redmonk.com/jgovernor" title="James Governor's Monkchips">James Governor</a></li>&#10;<li><a href="http://www.xn--8ws00zhy3a.com/feed" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://www.詹姆斯.com/" title="no activity in 90 days">James Holderness</a></li>&#10;<li><a href="http://feeds.feedburner.com/Chmod777self" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://www.chmod777self.com/" title="no activity in 90 days">James Snell</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">James Tauber</a></li>&#10;<li><a href="http://feeds.feedburner.com/buckblog" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://weblog.jamisbuck.org" title="no activity in 90 days">Jamis Buck</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Jan Lehnardt</a></li>&#10;<li><a href="http://blog.avantgame.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://blog.avantgame.com/" title="no activity in 90 days">Jane McGonigal</a></li>&#10;<li><a href="https://jasonkolb.typepad.com/weblog/atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://www.jasonkolb.com/weblog/" title="no activity in 90 days">Jason Kolb</a></li>&#10;<li><a href="https://rambleon.org/feed/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://rambleon.org" title="no activity in 90 days">Jay Young</a></li>&#10;<li><a href="http://lastweekinhtml5.blogspot.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://lastweekinhtml5.blogspot.com/" title="no activity in 90 days">Jean-Baptiste Clamence</a></li>&#10;<li><a href="http://jeff-barr.com/?feed=atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://jeff-barr.com/?feed=rss2" title="no activity in 90 days">Jeff Barr</a></li>&#10;<li><a href="https://blog.codedread.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://fitchink.com" title="404: not found">Jeff Schiller</a></li>&#10;<li><a href="https://bethesignal.org/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://bethesignal.org" title="internal server error">Jeff Waugh</a></li>&#10;<li><a href="http://www.zeldman.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="inactive" href="http://www.zeldman.com" title="Zeldman on Web &amp; Interaction Design">Jeffrey Zeldman</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="410: gone">Jim Hugunin</a></li>&#10;<li><a href="http://www.jimjag.com/imo/index.php?/feeds/atom10.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://jimjag.com/imo/" title="no activity in 90 days">Jim Jagielski</a></li>&#10;<li><a href="https://trainedmonkey.com/index.atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://trainedmonkey.com/" title="no activity in 90 days">Jim Winstead Jr.</a></li>&#10;<li><a href="https://www.linuxfoundation.org/weblogs/jzemlin/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://www.linuxfoundation.org" title="404: not found">Jim Zemlin</a></li>&#10;<li><a href="http://armstrongonsoftware.blogspot.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://armstrongonsoftware.blogspot.com/" title="no activity in 90 days">Joe Armstrong</a></li>&#10;<li><a href="https://jcheng.wordpress.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://jcheng.wordpress.com" title="no activity in 90 days">Joe Cheng</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Joe Gregorio</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">John Boyer</a></li>&#10;<li><a href="http://recycledknowledge.blogspot.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="inactive" href="http://recycledknowledge.blogspot.com/" title="Recycled Knowledge">John Cowan</a></li>&#10;<li><a href="http://john.foliot.ca/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://john.foliot.ca" title="no activity in 90 days">John Foliot</a></li>&#10;<li><a href="http://feeds.feedburner.com/aol/SzHO" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active" href="https://www.abstractioneer.org/" title="Abstractioneer by John Panzer">John Panzer</a><ul><li><a href="https://www.abstractioneer.org/2019/08/shadowgate-lost-d-campaign.html">Shadowgate: The Lost D&amp;D Campaign</a></li></ul></li>&#10;<li><a href="http://atiitudellc.org/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">John Patrick</a></li>&#10;<li><a href="http://feeds.feedburner.com/joi-ito/weblog" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active inactive" href="https://joi.ito.com/weblog/" title="Joi Ito's Web">Joi Ito</a></li>&#10;<li><a href="http://www.jonramvi.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://www.jonramvi.com" title="408: request timeout">Jon Ramvi</a></li>&#10;<li><a href="https://blog.jonudell.net/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active" href="https://blog.jonudell.net" title="Jon Udell">Jon Udell</a><ul><li><a href="https://blog.jonudell.net/2019/08/20/digital-sweatshops-then-and-now/">Digital sweatshops then and now</a></li></ul></li>&#10;<li><a href="https://jonathanischwartz.wordpress.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://jonathanischwartz.wordpress.com" title="no activity in 90 days">Jonathan Schwartz</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Jonaz Galvez</a></li>&#10;<li><a href="https://kafsemo.org/rss/kafsemo.atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Joseph Walton</a></li>&#10;<li><a href="https://jukkaz.wordpress.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://jukkaz.wordpress.com" title="no activity in 90 days">Jukka Zitting</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Justin R. Erenkrantz</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Kelvin Lawrence</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Ken Coar</a></li>&#10;<li><a href="http://feeds.feedburner.com/HighTouch" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://blog.k1v1n.com/" title="no activity in 90 days">Kevin Gamble</a></li>&#10;<li><a href="http://epeus.blogspot.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://epeus.blogspot.com/" title="no activity in 90 days">Kevin Marks</a></li>&#10;<li><a href="http://koranteng.blogspot.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://koranteng.blogspot.com/" title="no activity in 90 days">Koranteng Ofosu-Amaah</a></li>&#10;<li><a href="http://cssquirrel.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Kyle Weems</a></li>&#10;<li><a href="http://lachy.id.au/log/feed/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://lachy.id.au/log" title="no activity in 90 days">Lachlan Hunt</a></li>&#10;<li><a href="http://feeds.feedburner.com/LaurenCooneysBlog" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://cooney.typepad.com/lauren_cooneys_blog/" title="no activity in 90 days">Lauren Cooney</a></li>&#10;<li><a href="http://www.laurenwood.org/anyway/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://www.laurenwood.org/anyway" title="no activity in 90 days">Lauren Wood</a></li>&#10;<li><a href="https://www.crummy.com/nb/nb.cgi/syndicate/nycb?version=Atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active inactive" href="https://www.crummy.com/" title="News You Can Bruise">Leonard Richardson</a></li>&#10;<li><a href="http://torvalds-family.blogspot.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://torvalds-family.blogspot.com/" title="no activity in 90 days">Linus Torvalds</a></li>&#10;<li><a href="http://nih.blogspot.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://nih.blogspot.com/" title="no activity in 90 days">Lisa Dusseault</a></li>&#10;<li><a href="https://digitalbazaar.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://digitalbazaar.com" title="no activity in 90 days">Manu Sporny</a></li>&#10;<li><a href="http://blog.pmarca.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://blog.pmarca.com" title="no activity in 90 days">Marc Andreessen</a></li>&#10;<li><a href="http://www.markbaker.ca/blog/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://www.markbaker.ca/blog" title="no activity in 90 days">Mark Baker</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="408: request timeout">Mark Masterson</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="403: forbidden">Mark Nottingham</a></li>&#10;<li><a href="http://diveintomark.org/feed/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Mark Pilgrim</a></li>&#10;<li><a href="https://apparentlymart.livejournal.com/data/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://apparentlymart.livejournal.com/" title="no activity in 90 days">Martin Atkins</a></li>&#10;<li><a href="https://martinfowler.com/feed.atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="inactive" href="https://martinfowler.com" title="Martin Fowler">Martin Fowler</a></li>&#10;<li><a href="http://www.bestkungfu.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://www.bestkungfu.com" title="no activity in 90 days">Matt May</a></li>&#10;<li><a href="http://feeds.feedburner.com/mephisto" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Mephisto</a></li>&#10;<li><a href="http://feeds.feedburner.com/Koz" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://koziarski.net/" title="no activity in 90 days">Michael Koziarski</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Michael O’Connell</a></li>&#10;<li><a href="http://www.libraryplanet.com/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://www.libraryplanet.com" title="no activity in 90 days">Michael Pate</a></li>&#10;<li><a href="http://withoutane.com/feed.atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Michal Wallace</a></li>&#10;<li><a href="https://blogs.msdn.microsoft.com/rssteam/feed/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://blogs.msdn.microsoft.com/rssteam" title="410: gone">Microsoft Team RSS</a></li>&#10;<li><a href="http://feeds.feedburner.com/PersistentInfo" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://blog.persistent.info/" title="no activity in 90 days">Mihai Parparita</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="410: gone">Mike Champion</a></li>&#10;<li><a href="http://korrespondence.blogspot.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://korrespondence.blogspot.com/" title="no activity in 90 days">Mike Dierken</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Mike Dillon</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="410: gone">Mike Harsh</a></li>&#10;<li><a href="http://feeds.feedburner.com/PanicFromFuzzy" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://fuzzypanic.blogspot.com/" title="no activity in 90 days">Mike Herrick</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Mike Melanson</a></li>&#10;<li><a href="https://eclipse-foundation.blog/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="inactive" href="https://eclipse-foundation.blog" title="Life at Eclipse">Mike Milinkovich</a></li>&#10;<li><a href="http://shaver.off.net/diary/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://shaver.off.net/diary" title="no activity in 90 days">Mike Shaver</a></li>&#10;<li><a href="http://feeds.feedburner.com/lindsaar-net" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://lindsaar.net" title="no activity in 90 days">Mikel Lindsaar</a></li>&#10;<li><a href="http://minimsft.blogspot.com/atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://minimsft.blogspot.com/" title="no activity in 90 days">Mini-Microsoft</a></li>&#10;<li><a href="http://www.somebits.com/weblog/index.atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active" href="http://www.somebits.com/weblog" title="Nelson's Weblog">Nelson Minar</a><ul><li><a href="http://www.somebits.com/weblog/politics/white-supremacist-indoctrination-from-my-grandmother.html">My White Supremacist Indoctrination</a></li></ul></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Niall Kennedy</a></li>&#10;<li><a href="http://feeds.feedburner.com/nicksieger" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Nick Sieger</a></li>&#10;<li><a href="http://blog.arcanedomain.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://blog.arcanedomain.com" title="no activity in 90 days">Noah Mendelsohn</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="403: forbidden">Noirin Shirley</a></li>&#10;<li><a href="https://norman.walsh.name:443/atom/whatsnew-fulltext.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://norman.walsh.name/" title="no activity in 90 days">Norman Walsh</a></li>&#10;<li><a href="http://odf-converter.sourceforge.net/blog/atom.php" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://odf-converter.sourceforge.net/newblog/index.php" title="no activity in 90 days">ODF Converter</a></li>&#10;<li><a href="http://feeds.feedburner.com/obie" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://blog.obiefernandez.com/content/" title="no activity in 90 days">Obie Fernandez</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Omri Gazitt</a></li>&#10;<li><a href="http://openid.net/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active" href="https://openid.net" title="OpenID">OpenID</a><ul><li><a href="https://openid.net/2019/08/23/implementers-draft-of-fapi-client-initiated-backchannel-authentication-ciba-profile-approved/">Implementer’s Draft of FAPI Client Initiated Backchannel Authentication (CIBA) Profile Approved</a></li><li><a href="https://openid.net/2019/08/22/implementers-drafts-of-two-eap-specifications-approved/">Implementer’s Drafts of Two EAP Specifications Approved</a></li><li><a href="https://openid.net/2019/08/09/registration-open-for-openid-foundation-workshop-at-verizon-media-on-monday-september-30-2019/">Registration Open for OpenID Foundation Workshop at Verizon Media on Monday, September 30, 2019</a></li></ul></li>&#10;<li><a href="http://feeds.feedburner.com/oreilly/radar/atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active" href="https://www.oreilly.com" title="All - O'Reilly Media">O’Reilly Radar</a><ul><li><a href="http://feedproxy.google.com/~r/oreilly/radar/atom/~3/HGXGRsUh_Bc/four-short-links-23-august-2019">Four short links: 23 August 2019</a></li><li><a href="http://feedproxy.google.com/~r/oreilly/radar/atom/~3/5-Gb5WIWMDs/four-short-links-22-august-2019">Four short links: 22 August 2019</a></li><li><a href="http://feedproxy.google.com/~r/oreilly/radar/atom/~3/yJsZKUvIp-k/four-short-links-21-august-2019">Four short links: 21 August 2019</a></li><li><a href="http://feedproxy.google.com/~r/oreilly/radar/atom/~3/h39PaHzbLgo/four-short-links-20-august-2019">Four short links: 20 August 2019</a></li><li><a href="http://feedproxy.google.com/~r/oreilly/radar/atom/~3/692hiVRa-oU/four-short-links-19-august-2019">Four short links: 19 August 2019</a></li><li><a href="http://feedproxy.google.com/~r/oreilly/radar/atom/~3/LKjkCKA4W2s/antitrust-regulators-are-using-the-wrong-tools-to-break-up-big-tech">Antitrust regulators are using the wrong tools to break up Big Tech</a></li></ul></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="410: gone">Pat Helland</a></li>&#10;<li><a href="http://feeds.feedburner.com/pmuellr" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://pmuellr.blogspot.com/" title="no activity in 90 days">Patrick Mueller</a></li>&#10;<li><a href="http://pzf.fremantle.org/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://pzf.fremantle.org/" title="no activity in 90 days">Paul Fremantle</a></li>&#10;<li><a href="https://lookit.typepad.com/lookit/atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://lookit.typepad.com/lookit/" title="no activity in 90 days">Paul Hoffman</a></li>&#10;<li><a href="https://paul.querna.org/atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://paul.querna.org/" title="no activity in 90 days">Paul Querna</a></li>&#10;<li><a href="http://earthly-powers.blogspot.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://earthly-powers.blogspot.com/" title="no activity in 90 days">Paul Sandoz</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="408: request timeout">Pete Lacey</a></li>&#10;<li><a href="atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://technomancy.us/" title="no activity in 90 days">Phil Hagelberg</a></li>&#10;<li><a href="http://weblog.philringnalda.com/feed" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://weblog.philringnalda.com" title="no activity in 90 days">Phil Ringnalda</a></li>&#10;<li><a href="http://philwilson.org/blog/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="inactive" href="http://philwilson.org/blog" title="philwilson.org">Phil Wilson</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Philip Elmer-DeWitt</a></li>&#10;<li><a href="https://bofh.org.uk/index.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://www.bofh.org.uk/" title="internal server error">Piers Cawley</a></li>&#10;<li><a href="http://feeds2.feedburner.com/monkeyonrails" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Pratik Naik</a></li>&#10;<li><a href="http://feeds.rc3.org/rc3dotorg" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://rc3.org" title="no activity in 90 days">Rafe Colburn</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Raleigh Web Tech</a></li>&#10;<li><a href="http://www.cincomsmalltalk.com/rssBlog/ralph-atom02.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://www.cincomsmalltalk.com/userblogs/ralph/blogView" title="410: gone">Ralph Johnson</a></li>&#10;<li><a href="https://xkcd.com/atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active" href="https://xkcd.com/" title="xkcd.com">Randall Munroe</a><ul><li><a href="https://xkcd.com/2193/">Well-Ordering Principle</a></li><li><a href="https://xkcd.com/2192/">Review</a></li><li><a href="https://xkcd.com/2191/">Conference Question</a></li></ul></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Rich Bowen</a></li>&#10;<li><a href="http://gendal.blogspot.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://gendal.blogspot.com/" title="no activity in 90 days">Richard G Brown</a></li>&#10;<li><a href="http://people.w3.org/rishida/blog/?feed=atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Richard Ishida</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Rick DeNatale</a></li>&#10;<li><a href="https://www.oreilly.com?x-mimetype=application/atom%2Bxml&amp;au=1712" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Rick Jelliffe</a></li>&#10;<li><a href="https://rubyonrails.org/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Riding Rails</a></li>&#10;<li><a href="http://robburke.net/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://robburke.net" title="404: not found">Rob Burke</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="410: gone">Rob Sayre</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="408: request timeout">Robert Burrell Donkin</a></li>&#10;<li><a href="http://feeds.feedburner.com/BobSutor" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="inactive" href="http://www.sutor.com/c" title="Bob Sutor">Robert S Sutor</a></li>&#10;<li><a href="http://robubu.com/?feed=atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://robubu.com" title="no activity in 90 days">Robert Yates</a></li>&#10;<li><a href="http://ronald-servant.blogspot.com/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://ronald-servant.blogspot.com/" title="no activity in 90 days">Ronald Servant</a></li>&#10;<li><a href="https://roy.gbiv.com/untangled/feed/atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://roy.gbiv.com/untangled" title="no activity in 90 days">Roy Fielding</a></li>&#10;<li><a href="http://www.russellbeattie.com/blog/feed" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active message inactive" href="http://www.russellbeattie.com/blog" title="internal server error">Russell Beattie</a></li>&#10;<li><a href="http://feeds.feedburner.com/edgerails" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Ryan Daigle</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Ryan Tomayko</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Sacha Labourey</a></li>&#10;<li><a href="https://samus.typepad.com/what/atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://samus.typepad.com/what/" title="no activity in 90 days">Sam Ramji</a></li>&#10;<li><a href="http://intertwingly.net/blog/index.atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://intertwingly.net/blog/" title="410: gone">Sam Ruby</a></li>&#10;<li><a href="http://sanjiva.weerawarana.org/feeds/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://sanjiva.weerawarana.org/" title="no activity in 90 days">Sanjiva Weerawarana</a></li>&#10;<li><a href="http://www.memojo.com" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">Santiago Gala</a></li>&#10;<li><a href="http://netsplit.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active inactive" href="https://netsplit.com" title="Netsplit.com">Scott James Remnant</a></li>&#10;<li><a href="http://feeds.feedburner.com/speed" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://full-speed.org/" title="no activity in 90 days">Scott Johnson</a></li>&#10;<li><a href="http://shane.curcuru.name/blog/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://shane.curcuru.name/blog" title="no activity in 90 days">Shane Curcuru</a></li>&#10;<li><a href="http://burningbird.net/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="inactive" href="http://burningbird.net" title="Burningbird">Shelley Powers</a></li>&#10;<li><a href="http://www.pocketsoap.com/weblog/feed.atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://www.pocketsoap.com/weblog/index.html" title="404: not found">Simon Fell</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Simon Johnston</a></li>&#10;<li><a href="https://webmink.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://webmink.com" title="no activity in 90 days">Simon Phipps</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="internal server error">Simon Willison</a></li>&#10;<li><a href="http://feeds.feedburner.com/OnceMoreUntoTheBreach" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://stephesblog.blogs.com/my_weblog/" title="no activity in 90 days">Stefan Walli</a></li>&#10;<li><a href="http://www.betaversion.org/~stefano/linotype/index.php?feed=atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Stefano Mazzocchi</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="408: request timeout">Stephen Colebourne</a></li>&#10;<li><a href="http://feeds.feedburner.com/tecosystems" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active inactive" href="https://redmonk.com/sogrady" title="tecosystems">Stephen O’Grady</a></li>&#10;<li><a href="http://feeds.feedburner.com/ServiceArchitecture" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://service-architecture.blogspot.com/" title="no activity in 90 days">Steve Jones</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="http status 503">Steve Loughran</a></li>&#10;<li><a href="http://steve.vinoski.net/blog/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://steve.vinoski.net/blog" title="no activity in 90 days">Steve Vinoski</a></li>&#10;<li><a href="http://www.blogger.com/feeds/13674163/posts/default" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://steve-yegge.blogspot.com/" title="no activity in 90 days">Steve Yegge</a></li>&#10;<li><a href="https://developer.paciellogroup.com/blog/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="inactive" href="https://developer.paciellogroup.com" title="Blog – TPG">Steven Faulkner</a></li>&#10;<li><a href="https://blogs.msdn.microsoft.com/stevenlees/atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Steven Lees</a></li>&#10;<li><a href="http://feeds.feedburner.com/stormy" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://stormyscorner.com" title="no activity in 90 days">Stormy Peters</a></li>&#10;<li><a href="https://tantek.com/updates.atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active inactive" href="https://tantek.com/" title="Tantek Çelik">Tantek Çelik</a><ul></ul></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="408: request timeout">Ted Husted</a></li>&#10;<li><a href="https://www.sauria.com/blog/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://www.sauria.com/blog/feed/" title="no activity in 90 days">Ted Leung</a></li>&#10;<li><a href="https://www.tbray.org/ongoing/ongoing.atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active" href="https://www.tbray.org/ongoing/" title="ongoing by Tim Bray">Tim Bray</a><ul><li><a href="https://www.tbray.org/ongoing/When/201x/2019/08/21/Portraits-of-Puppets">Portraits of Puppets</a></li><li><a href="https://www.tbray.org/ongoing/When/201x/2019/08/18/Talking-Hong-Kong">Talking Hong Kong Blues</a></li></ul></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="410: gone">Tim Sneath</a></li>&#10;<li><a href="https://www.strehle.de/tim/weblog/feed/atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="inactive" href="http://www.strehle.de/tim/weblog/" title="Tim Strehle's Blog">Tim Strehle</a></li>&#10;<li><a href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/turbo/feed/entries/atom?lang=en" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://www.ibm.com/developerworks/community/blogs/turbo?lang=en" title="no activity in 90 days">Todd “Turbo” Watson</a></li>&#10;<li><a href="http://blog.moertel.com/xml/atom/feed.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://blog.moertel.com" title="no activity in 90 days">Tom Moertel</a></li>&#10;<li><a href="http://agylen.com/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="408: request timeout">Ugo Cei</a></li>&#10;<li><a href="https://www.w3.org/blog/feed/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active message" href="https://www.w3.org/blog" title="408: request timeout">W3C QA</a><ul><li><a href="https://www.w3.org/blog/2019/08/updated-captcha-note-published/">Updated CAPTCHA Note Published</a></li></ul></li>&#10;<li><a href="https://blog.whatwg.org/feed" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://blog.whatwg.org" title="no activity in 90 days">WHATWG Blog</a></li>&#10;<li><a href="https://webkit.org/blog/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="active" href="https://webkit.org" title="Blog – WebKit">WebKit</a><ul><li><a href="https://webkit.org/blog/9515/release-notes-for-safari-technology-preview-90/">Release Notes for Safari Technology Preview 90</a></li></ul></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="404: not found">Wendy Seltzer</a></li>&#10;<li><a href="http://www.allthingsdistributed.com/atom.xml" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="http://www.allthingsdistributed.com/" title="internal server error">Werner Vogels</a></li>&#10;<li><a href="https://en.wikipedia.org/w/index.php?title=Atom_%28standard%29&amp;action=history&amp;feed=atom" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://en.wikipedia.org/w/index.php?title=Atom_(standard)&amp;action=history" title="no activity in 90 days">Wikipedia: Atom</a></li>&#10;<li><a href="https://www.oreilly.com" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="no activity in 90 days">XML.com</a></li>&#10;<li><a href="https://www.goland.org/feed/atom/" title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" href="https://www.goland.org" title="no activity in 90 days">Yaron Goland</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="403: forbidden">Yehuda Katz</a></li>&#10;<li><a title="subscribe"><img alt="(feed)" src="images/feed-icon-10x10.png"></img></a> <a class="message inactive" title="403: forbidden">Zack Urlocker</a></li>&#10;</ul></div>&#10;</body></html>
Please report any problems with this checker to richard@cogsci.ed.ac.uk