Stopped by the opening party of the new pedestrian/cycling #BlumBridge this morning for a quick photo! @PBOTinfo @bonbpdx
{
"type": "entry",
"published": "2022-07-31T13:42:30-07:00",
"url": "https://aaronparecki.com/2022/07/31/10/blumbridge",
"category": [
"pdx",
"blumbridge"
],
"photo": [
"https://aaronparecki.com/img/1240x0/2022/07/31/10/photo.jpg"
],
"syndication": [
"https://twitter.com/aaronpk/status/1553843102678364160"
],
"content": {
"text": "Stopped by the opening party of the new pedestrian/cycling #BlumBridge this morning for a quick photo! @PBOTinfo @bonbpdx",
"html": "Stopped by the opening party of the new pedestrian/cycling <a href=\"https://aaronparecki.com/tag/blumbridge\">#BlumBridge</a> this morning for a quick photo! <a href=\"https://twitter.com/PBOTinfo\">@PBOTinfo</a> <a href=\"https://twitter.com/bonbpdx\">@bonbpdx</a>"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aaronparecki.com/images/profile.jpg"
},
"post-type": "photo",
"_id": "30590175",
"_source": "16"
}
Stopped by the opening party of the new pedestrian/cycling #BlumBridge this morning for a quick photo! @PBOTinfo @bonbpdx
{
"type": "entry",
"published": "2022-07-31T20:40:39+00:00",
"url": "https://twitter.com/aaronpk/status/1553843102678364160",
"video": [
"https://video.twimg.com/ext_tw_video/1553842820644945920/pu/vid/1280x720/_T3sOiIVKfvAi-Kx.mp4?tag=12"
],
"content": {
"text": "Stopped by the opening party of the new pedestrian/cycling #BlumBridge this morning for a quick photo! @PBOTinfo @bonbpdx",
"html": "Stopped by the opening party of the new pedestrian/cycling <a href=\"https://twitter.com/search?q=%23BlumBridge\">#BlumBridge</a> this morning for a quick photo! <a href=\"https://twitter.com/PBOTinfo\">@PBOTinfo</a> <a href=\"https://twitter.com/bonbpdx\">@bonbpdx</a>"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://twitter.com/aaronpk",
"photo": "https://pbs.twimg.com/profile_images/1477113672803622912/ljLUwFLP.jpg"
},
"post-type": "video",
"_id": "30590106",
"_source": "2773"
}
In red states, hospital ethics committees now decide when pregnant patients are close enough to death to justify an abortion.
Here's how these panels make life-or-death...
{
"type": "entry",
"published": "2022-07-31T20:30:04+00:00",
"url": "https://twitter.com/karabaic/status/1553840441845432321",
"quotation-of": "https://twitter.com/mjs_DC/status/1553049882516127744",
"content": {
"text": "Oh look death panels\ntwitter.com/mjs_dc/status/\u2026",
"html": "Oh look death panels\n<a href=\"https://twitter.com/mjs_dc/status/1553049882516127744\">twitter.com/mjs_dc/status/\u2026</a>"
},
"author": {
"type": "card",
"name": "jack the nonabrasive",
"url": "https://twitter.com/karabaic",
"photo": "https://pbs.twimg.com/profile_images/1256785873384861696/QfRzUvne.jpg"
},
"post-type": "note",
"refs": {
"https://twitter.com/mjs_DC/status/1553049882516127744": {
"type": "entry",
"published": "2022-07-29T16:08:40+00:00",
"url": "https://twitter.com/mjs_DC/status/1553049882516127744",
"content": {
"text": "In red states, hospital ethics committees now decide when pregnant patients are close enough to death to justify an abortion. \n\nHere's how these panels make life-or-death judgments where abortion is illegal under all but the most dire circumstances. slate.com/news-and-polit\u2026 @Slate",
"html": "In red states, hospital ethics committees now decide when pregnant patients are close enough to death to justify an abortion. \n\nHere's how these panels make life-or-death judgments where abortion is illegal under all but the most dire circumstances. <a href=\"https://slate.com/news-and-politics/2022/07/abortion-ban-hospital-ethics-committee-mother-life-death.html\">slate.com/news-and-polit\u2026</a> <a href=\"https://twitter.com/Slate\">@Slate</a>"
},
"author": {
"type": "card",
"name": "Mark Joseph Stern",
"url": "https://twitter.com/mjs_DC",
"photo": "https://pbs.twimg.com/profile_images/1482122731755868167/n3ZD3Wlv.jpg"
},
"post-type": "note"
}
},
"_id": "30590020",
"_source": "2773"
}
{
"type": "entry",
"published": "2022-07-31T14:32:34-0400",
"url": "https://martymcgui.re/2022/07/31/switching-costs-for-an-indieauth-server/",
"category": [
"site-update",
"IndieAuth"
],
"name": "Switching costs for an IndieAuth server",
"content": {
"text": "One of the things I love about building with IndieWeb building blocks is that (sometimes through more work than anticipated) you can swap out pieces of your site without (much) disruption because the seams between building blocks are well specified.\n\nSo, this is me documenting how I replaced my IndieAuth setup to stop leaning on Aaron\u2019s IndieAuth.com (which has been on the verge of retiring any day now for some years).\n\nPlease excuse this long and rambling post. Feel free to skip around!\n\n\n\nWhat is IndieAuth?\n\nAt a high-level, IndieAuth is a way to sign in using your website as an identity.\n\nWithout digging too deeply into the plumbing, you start by updating your website\u2019s homepage with some extra header info that says \u201cmy IndieAuth service is over there\u201d. From there, you can sign into services that support IndieAuth (like the IndieWeb wiki, the social feed reader service Aperture, and more. And you can use your IndieAuth server to protect your own services, such as a Micropub server that can create new posts on your site.\n\nWhy switch?\n\nI\u2019ve been using indieauth.com as my IndieAuth setup since late 2016 because it was easy to set up, because it uses something called RelMeAuth to let me sign in using services I already trust (like GitHub).\n\nHowever, indieauth.com has been growing stale as the IndieAuth spec has evolved. indieauth.com\u2019s maintainer has been discussing replacing it since at least 2017.\n\nThe inciting incident for my switch was looking at OwnCast - a self-hostable video streaming service with attached chatroom. OwnCast\u2019s chat allows using IndieAuth to sign in, which sounded great to me, but OwnCast\u2019s implementation wasn\u2019t expecting indieauth.com\u2019s old-style response format.\n\nWhy set up my own?\n\nThere are a bunch of IndieAuth server implementations listed on the IndieWeb wiki. However: simplest of them (selfauth + mintoken) are now out of date with the spec and haven\u2019t been replaced, yet. Others tend to be built into other CMSes like WordPress. A couple of standalone servers exist but are in languages I am not comfortable working in (hello Rust and Go) or have deployment requirements I wasn\u2019t thrilled about supporting (hello Rails).\n\nI found Taproot/IndieAuth on this page and that looked promising - a PHP library intended to be deployed within a fairly standard PHP web app style (\u201cany PSR-7 compatible app\u201d).\n\nI knew this would be some work but it sounded promising and so I began the week-ish long process of actually writing and deploying that \u201cPSR-7 compatible app\u201d built on taproot/indieauth.\n\ntl;dr say hello to Belding\n\nBelding is an \u201cPSR-7 compatible\u201d PHP web app that provides a standalone IndieAuth endpoint for a single user with a simple password form for authentication.\n\nI would love to go into the process and pitfalls of putting it together, but instead I\u2019ll link to the README where you can learn more about how it works, how to use it, its limitations, etc.\n\nSwitching costs for an IndieAuth server\n\n1. Tell the World\n\nFirst up, you\u2019ll need to update the headers on your site. I switched my authorization_endpoint and token_endpoint to my new server from indieauth.com. Since I\u2019m updating to support the latest spec, I also added the indieauth-metadata header (which should eventually replace the other two).\n\nNow that your site is advertising the new IndieAuth server, you will likely experience logouts or weird access denied reponses everywhere that your site has been used with IndieAuth.\n\n2. Tell your own services\n\nI needed to configure my own \u201crelying apps\u201d so they know to talk to the new server when checking that a request is allowed. This list thankfully wasn\u2019t too long.\n\nMy Micropub server\nMy Micropub media server\nBeyond the effort of getting my server working as an indieauth.com replacement, I also took steps to try and support the latest in the IndieAuth spec. That meant updating these micropub servers to use the new \u201ctoken introspection\u201d feature which has some tighter security requirements.\n\n(Note: I initially made the same change for my self-hosted copy of Aperture, but found it would be too many changes for me to take on at the moment. Instead, I updated by IndieAuth server to allow the older and less secure token verification method used by Aperture.)\n\n3. Sign-in to all the things again \\o|\n\nOnce all my relying apps were all talking to the new IndieAuth server, it was time to re-sign-in to all the things:\n\nThe IndieWeb wiki\n\nMonocle social reader client\n\nQuill Micropub posting client\nOwnYourSwarm\niOS apps\n\nmicro.blog\nIndigenous\n\nManually issue new IndieAuth tokens for automation that uses them:\n\nMy personal YouTube manager\n\nMy command line tool for media uploads\niOS shortcuts like the one I use to post Caturday.\n\nTakeaways\n\nThere are a lot of improvements I\u2019d like to make to Belding, but in general I am happy that it seems to work and, outside of the time to develop the server itself, my website and the tools I use to manage it were only broken for about a day.\n\nI think it\u2019d also be really nice to wrap up Belding a bit so it\u2019s easy to configure and deploy on free-and-cheap platforms like fly.io. I believe it should be easier for folks to spin up and control their own IndieWeb building blocks where possible!\n\nIt\u2019s also become clear to me that there are some user- and developer-experience holes around setting up relying apps. The auth requirements for token introspection, for example, means you need a way to manage access for each \u201cbackend\u201d that you have that relies on IndieAuth to protect itself!\n\nLong story short (too late) I am finally able to sign into OwnCast server chat using my domain. \ud83d\ude02\ud83d\ude05",
"html": "<p>One of the things I love about building with <a href=\"https://indieweb.org/Category:building-blocks\">IndieWeb building blocks</a> is that (sometimes through more work than anticipated) you can swap out pieces of your site without (much) disruption because the seams between building blocks are well specified.</p>\n\n<p>So, this is me documenting how I replaced my <a href=\"https://indieauth.spec.indieweb.org/\">IndieAuth</a> setup to stop leaning on <a href=\"https://aaronparecki.com/\">Aaron\u2019s</a> <a href=\"https://indieauth.com/\">IndieAuth.com</a> (which has been on the verge of retiring any day now for some years).</p>\n\n<p>Please excuse this long and rambling post. Feel free to skip around!</p>\n\n\n\n<h2>What is IndieAuth?</h2>\n\n<p>At a high-level, IndieAuth is a way to sign in using your website as an identity.</p>\n\n<p>Without digging too deeply into the plumbing, you start by updating your website\u2019s homepage with some extra header info that says \u201cmy IndieAuth service is over there\u201d. From there, you can sign into services that support IndieAuth (like the <a href=\"https://indieauth.org/\">IndieWeb wiki</a>, the social feed reader service <a href=\"https://aperture.p3k.io/\">Aperture</a>, and more. And you can use your IndieAuth server to protect your own services, such as a <a href=\"https://indieweb.org/Micropub\">Micropub server</a> that can create new posts on your site.</p>\n\n<h2>Why switch?</h2>\n\n<p>I\u2019ve been using indieauth.com as my IndieAuth setup since late 2016 because it was easy to set up, because it uses something called <a href=\"https://indieweb.org/RelMeAuth\">RelMeAuth</a> to let me sign in using services I already trust (like GitHub).</p>\n\n<p>However, indieauth.com has been growing stale as the IndieAuth spec has evolved. indieauth.com\u2019s maintainer has been <a href=\"https://chat.indieweb.org/dev/2017-12-17#t1513485617181300\">discussing replacing it since at least 2017</a>.</p>\n\n<p>The inciting incident for my switch was looking at <a href=\"https://owncast.online/\">OwnCast</a> - a self-hostable video streaming service with attached chatroom. OwnCast\u2019s chat allows using IndieAuth to sign in, which sounded great to me, but OwnCast\u2019s implementation wasn\u2019t expecting indieauth.com\u2019s old-style response format.</p>\n\n<h3>Why set up my own?</h3>\n\n<p>There are <a href=\"https://indieweb.org/IndieAuth#Server_Implementations\">a bunch of IndieAuth server implementations listed on the IndieWeb wiki</a>. However: simplest of them (selfauth + mintoken) are now out of date with the spec and haven\u2019t been replaced, yet. Others tend to be built into other CMSes like WordPress. A couple of standalone servers exist but are in languages I am not comfortable working in (hello Rust and Go) or have deployment requirements I wasn\u2019t thrilled about supporting (hello Rails).</p>\n\n<p>I found <a href=\"https://github.com/taproot/indieauth\">Taproot/IndieAuth</a> on this page and that looked promising - a PHP library intended to be deployed within a fairly standard PHP web app style (\u201cany PSR-7 compatible app\u201d).</p>\n\n<p>I knew this would be some work but it sounded promising and so I began the week-ish long process of actually writing and deploying that \u201cPSR-7 compatible app\u201d built on taproot/indieauth.</p>\n\n<h2>tl;dr say hello to Belding</h2>\n\n<p><a href=\"https://git.schmarty.net/schmarty/belding\">Belding</a> is an \u201cPSR-7 compatible\u201d PHP web app that provides a standalone IndieAuth endpoint for a single user with a simple password form for authentication.</p>\n\n<p>I would love to go into the process and pitfalls of putting it together, but instead I\u2019ll link to the <a href=\"https://git.schmarty.net/schmarty/belding#user-content-belding\">README</a> where you can learn more about how it works, how to use it, its limitations, etc.</p>\n\n<h2>Switching costs for an IndieAuth server</h2>\n\n<h3>1. Tell the World</h3>\n\n<p>First up, you\u2019ll need to update the headers on your site. I switched my <code>authorization_endpoint</code> and <code>token_endpoint</code> to my new server from indieauth.com. Since I\u2019m updating to support the latest spec, I also added the <code>indieauth-metadata</code> header (which should eventually replace the other two).</p>\n\n<p>Now that your site is advertising the new IndieAuth server, you will likely experience logouts or weird access denied reponses everywhere that your site has been used with IndieAuth.</p>\n\n<h3>2. Tell your own services</h3>\n\n<p>I needed to configure my own \u201crelying apps\u201d so they know to talk to the new server when checking that a request is allowed. This list thankfully wasn\u2019t too long.</p>\n\n<ul><li><a href=\"https://github.com/martymcguire/micropub-1\">My Micropub server</a></li>\n<li><a href=\"https://github.com/martymcguire/spano\">My Micropub media server</a></li>\n</ul><p>Beyond the effort of getting my server working as an indieauth.com replacement, I also took steps to try and support the latest in the IndieAuth spec. That meant updating these micropub servers to use the new \u201ctoken introspection\u201d feature which has some tighter security requirements.</p>\n\n<p>(<em><strong>Note:</strong> I initially made the same change for my self-hosted copy of Aperture, but found it would be too many changes for me to take on at the moment. Instead, I updated by IndieAuth server to allow the older and less secure token verification method used by Aperture.</em>)</p>\n\n<h3>3. Sign-in to all the things again \\o|</h3>\n\n<p>Once all my relying apps were all talking to the new IndieAuth server, it was time to re-sign-in to all the things:</p>\n\n<ul><li><a href=\"https://indieweb.org/\">The IndieWeb wiki</a></li>\n<li>\n<a href=\"https://indieweb.org/Monocle\">Monocle</a> social reader client</li>\n<li>\n<a href=\"https://indieweb.org/Quill\">Quill</a> Micropub posting client</li>\n<li><a href=\"https://indieweb.org/OwnYourSwarm\">OwnYourSwarm</a></li>\n<li>iOS apps\n\n<ul><li><a href=\"https://indieweb.org/Micro.blog\">micro.blog</a></li>\n<li><a href=\"https://indieweb.org/Indigenous_for_iOS\">Indigenous</a></li>\n</ul></li>\n<li>Manually issue new IndieAuth tokens for automation that uses them:\n\n<ul><li>My <a href=\"https://martymcgui.re/2020/10/03/unsubscribing-from-youtubes-recommender/\">personal YouTube manager</a>\n</li>\n<li>My command line tool for media uploads</li>\n<li>iOS shortcuts like the one I use to post <a href=\"https://martymcgui.re/tag/caturday/\">Caturday</a>.</li>\n</ul></li>\n</ul><h2>Takeaways</h2>\n\n<p>There are <a href=\"https://git.schmarty.net/schmarty/belding#user-content-possible-future-work\">a lot of improvements I\u2019d like to make to Belding</a>, but in general I am happy that it seems to work and, outside of the time to develop the server itself, my website and the tools I use to manage it were only broken for about a day.</p>\n\n<p>I think it\u2019d also be really nice to wrap up Belding a bit so it\u2019s easy to configure and deploy on free-and-cheap platforms like <a href=\"https://fly.io/\">fly.io</a>. I believe it should be easier for folks to spin up and control their own IndieWeb building blocks where possible!</p>\n\n<p>It\u2019s also become clear to me that there are some user- and developer-experience holes around setting up relying apps. The auth requirements for token introspection, for example, means you need a way to manage access for each \u201cbackend\u201d that you have that relies on IndieAuth to protect itself!</p>\n\n<p>Long story short (too late) I am finally able to sign into OwnCast server chat using my domain. \ud83d\ude02\ud83d\ude05</p>"
},
"author": {
"type": "card",
"name": "Marty McGuire",
"url": "https://martymcgui.re/",
"photo": "https://martymcgui.re/images/logo.jpg"
},
"post-type": "note",
"_id": "30589793",
"_source": "175"
}
"DAO governance attacks, and how to avoid them". Nice analysis. One could also tie voting power to tokens that are acquired through in-system "good" behavior rather than purchased. a16zcrypto.com/dao-governance…
{
"type": "entry",
"published": "2022-07-31T20:00:51+00:00",
"url": "https://twitter.com/Johannes_Ernst/status/1553833089410797568",
"content": {
"text": "\"DAO governance attacks, and how to avoid them\". Nice analysis. One could also tie voting power to tokens that are acquired through in-system \"good\" behavior rather than purchased. a16zcrypto.com/dao-governance\u2026",
"html": "\"DAO governance attacks, and how to avoid them\". Nice analysis. One could also tie voting power to tokens that are acquired through in-system \"good\" behavior rather than purchased. <a href=\"https://a16zcrypto.com/dao-governance-attacks-and-how-to-avoid-them/\">a16zcrypto.com/dao-governance\u2026</a>"
},
"author": {
"type": "card",
"name": "Johannes Ernst",
"url": "https://twitter.com/Johannes_Ernst",
"photo": "https://pbs.twimg.com/profile_images/1482154224800526337/NjdX1tt7.jpg"
},
"post-type": "note",
"_id": "30589666",
"_source": "2773"
}
OMG. Just when you think Ferrari can’t beat itself for worst race strategy of the season, they find a way. What a disaster. They have to make changes over the break. #F1 #HungarianGP
{
"type": "entry",
"published": "2022-07-31T18:08:50+00:00",
"url": "https://twitter.com/cleverdevil/status/1553804897442664448",
"content": {
"text": "OMG. Just when you think Ferrari can\u2019t beat itself for worst race strategy of the season, they find a way. What a disaster. They have to make changes over the break. #F1 #HungarianGP",
"html": "OMG. Just when you think Ferrari can\u2019t beat itself for worst race strategy of the season, they find a way. What a disaster. They have to make changes over the break. <a href=\"https://twitter.com/search?q=%23F1\">#F1</a> <a href=\"https://twitter.com/search?q=%23HungarianGP\">#HungarianGP</a>"
},
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://twitter.com/cleverdevil",
"photo": "https://pbs.twimg.com/profile_images/1518010782369284096/7Ac_gJRN.jpg"
},
"post-type": "note",
"_id": "30588172",
"_source": "2773"
}
Late check in for @bonbpdx (@ Congressman Earl Blumenauer Bicycle And Pedestrian Bridge in Portland, OR w/ @aaronpk @anomalily) swarmapp.com/c/gv4oJfAWwtX
{
"type": "entry",
"published": "2022-07-31T15:51:53+00:00",
"url": "https://twitter.com/karabaic/status/1553770433207492608",
"photo": [
"https://pbs.twimg.com/media/FZAZ-aGXEAc_Bkf.jpg"
],
"content": {
"text": "Late check in for @bonbpdx (@ Congressman Earl Blumenauer Bicycle And Pedestrian Bridge in Portland, OR w/ @aaronpk @anomalily) swarmapp.com/c/gv4oJfAWwtX",
"html": "Late check in for <a href=\"https://twitter.com/bonbpdx\">@bonbpdx</a> (@ Congressman Earl Blumenauer Bicycle And Pedestrian Bridge in Portland, OR w/ <a href=\"https://twitter.com/aaronpk\">@aaronpk</a> <a href=\"https://twitter.com/anomalily\">@anomalily</a>) <a href=\"https://www.swarmapp.com/c/gv4oJfAWwtX\">swarmapp.com/c/gv4oJfAWwtX</a>"
},
"author": {
"type": "card",
"name": "jack the nonabrasive",
"url": "https://twitter.com/karabaic",
"photo": "https://pbs.twimg.com/profile_images/1256785873384861696/QfRzUvne.jpg"
},
"post-type": "photo",
"_id": "30586220",
"_source": "2773"
}
Not all successful climbs require a summit. I had a great time trying for Cayambe, but I grossly mismanaged my intakes. 5000m will do for this go. Full writeup at ki.tt
{
"type": "entry",
"published": "2022-07-31T13:28:16+00:00",
"url": "https://twitter.com/kitt/status/1553734289082171392",
"photo": [
"https://pbs.twimg.com/media/FY_5B7XWIAEO8J_.jpg",
"https://pbs.twimg.com/media/FY_5CJiWQAARqjA.jpg",
"https://pbs.twimg.com/media/FY_5CVDX0AA0dlA.jpg",
"https://pbs.twimg.com/media/FY_5Cf2XkAEHuL3.jpg"
],
"content": {
"text": "Not all successful climbs require a summit. I had a great time trying for Cayambe, but I grossly mismanaged my intakes. 5000m will do for this go. Full writeup at ki.tt",
"html": "Not all successful climbs require a summit. I had a great time trying for Cayambe, but I grossly mismanaged my intakes. 5000m will do for this go. Full writeup at <a href=\"http://ki.tt\">ki.tt</a>"
},
"author": {
"type": "card",
"name": "Kitt Hodsden \ud83c\udfd4",
"url": "https://twitter.com/kitt",
"photo": "https://pbs.twimg.com/profile_images/1328422362962743296/Mz9RZKvo.jpg"
},
"post-type": "photo",
"_id": "30584487",
"_source": "2773"
}
Are you getting your reps in during eternal Caturday?
{
"type": "entry",
"published": "2022-07-31T00:05:54-0400",
"url": "https://martymcgui.re/2022/07/31/000554/",
"category": [
"caturday"
],
"video": [
"https://res.cloudinary.com/schmarty/video/upload/vc_h264/mmmgre/89/6d/9e/a4/70156d17f69db73f68a91e090d56d773a95a975b15d7ddd85fd338b5.mov"
],
"content": {
"text": "Are you getting your reps in during eternal Caturday?",
"html": "<p>Are you getting your reps in during eternal Caturday?</p>"
},
"author": {
"type": "card",
"name": "Marty McGuire",
"url": "https://martymcgui.re/",
"photo": "https://martymcgui.re/images/logo.jpg"
},
"post-type": "video",
"_id": "30579735",
"_source": "175"
}
Explain yourself @DoorDash.
{
"type": "entry",
"published": "2022-07-31T00:46:23+00:00",
"url": "https://twitter.com/cleverdevil/status/1553542557375680513",
"photo": [
"https://pbs.twimg.com/media/FY9KuJEUYAAe5jX.jpg"
],
"content": {
"text": "Explain yourself @DoorDash.",
"html": "Explain yourself <a href=\"https://twitter.com/DoorDash\">@DoorDash</a>."
},
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://twitter.com/cleverdevil",
"photo": "https://pbs.twimg.com/profile_images/1518010782369284096/7Ac_gJRN.jpg"
},
"post-type": "photo",
"_id": "30578314",
"_source": "2773"
}
102 on my front porch. In Portland. Oh, my.
{
"type": "entry",
"published": "2022-07-30T23:59:45+00:00",
"url": "https://twitter.com/karabaic/status/1553530819632713728",
"photo": [
"https://pbs.twimg.com/media/FY9AC8tUUAAGEid.jpg"
],
"content": {
"text": "102 on my front porch. In Portland. Oh, my."
},
"author": {
"type": "card",
"name": "jack the nonabrasive",
"url": "https://twitter.com/karabaic",
"photo": "https://pbs.twimg.com/profile_images/1256785873384861696/QfRzUvne.jpg"
},
"post-type": "photo",
"_id": "30577869",
"_source": "2773"
}
I find the ensemble of The Bear much more interesting than the featured main character. I hope this folks running this show pull a reverse West Wing.
{
"type": "entry",
"published": "2022-07-30T21:47:58+00:00",
"url": "https://twitter.com/karabaic/status/1553497656122433536",
"content": {
"text": "I find the ensemble of The Bear much more interesting than the featured main character. I hope this folks running this show pull a reverse West Wing."
},
"author": {
"type": "card",
"name": "jack the nonabrasive",
"url": "https://twitter.com/karabaic",
"photo": "https://pbs.twimg.com/profile_images/1256785873384861696/QfRzUvne.jpg"
},
"post-type": "note",
"_id": "30576707",
"_source": "2773"
}
{
"type": "entry",
"published": "2022-07-30T21:20:57+00:00",
"url": "https://twitter.com/ChrisAldrich/status/1553490858124537856",
"content": {
"text": "Is anyone practicing #sketchnotes like patterns in their #zettelkasten notes?\nboffosocko.com/2022/07/30/is-\u2026",
"html": "Is anyone practicing <a href=\"https://twitter.com/search?q=%23sketchnotes\">#sketchnotes</a> like patterns in their <a href=\"https://twitter.com/search?q=%23zettelkasten\">#zettelkasten</a> notes?\n<a href=\"https://boffosocko.com/2022/07/30/is-anyone-practicing-sketchnotes-like-patterns-in-their-notes/\">boffosocko.com/2022/07/30/is-\u2026</a>"
},
"author": {
"type": "card",
"name": "Chris Aldrich",
"url": "https://twitter.com/ChrisAldrich",
"photo": "https://pbs.twimg.com/profile_images/890299009381916672/CafdvvxN.jpg"
},
"post-type": "note",
"_id": "30576281",
"_source": "2773"
}
Are you putting in the effort during eternal Caturday?
{
"type": "entry",
"published": "2022-07-30T12:36:28-0400",
"url": "https://martymcgui.re/2022/07/30/123628/",
"category": [
"caturday"
],
"video": [
"https://res.cloudinary.com/schmarty/video/upload/vc_h264/mmmgre/4e/28/ee/a5/2cf548dd426bf1c9ae0cee00e81093cef144469b3157a85c977b2262.mov"
],
"content": {
"text": "Are you putting in the effort during eternal Caturday?",
"html": "<p>Are you putting in the effort during eternal Caturday?</p>"
},
"author": {
"type": "card",
"name": "Marty McGuire",
"url": "https://martymcgui.re/",
"photo": "https://martymcgui.re/images/logo.jpg"
},
"post-type": "video",
"_id": "30575411",
"_source": "175"
}
"Do not ground to a gas supply line." Hmm...
{
"type": "entry",
"published": "2022-07-30T18:40:03+00:00",
"url": "https://twitter.com/Johannes_Ernst/status/1553450363700891648",
"content": {
"text": "\"Do not ground to a gas supply line.\" Hmm..."
},
"author": {
"type": "card",
"name": "Johannes Ernst",
"url": "https://twitter.com/Johannes_Ernst",
"photo": "https://pbs.twimg.com/profile_images/1482154224800526337/NjdX1tt7.jpg"
},
"post-type": "note",
"_id": "30574404",
"_source": "2773"
}
Wow, what a crazy finish to qualis at the #F1 #HungarianGP. Congrats to the best lad!
{
"type": "entry",
"published": "2022-07-30T17:56:35+00:00",
"url": "https://twitter.com/cleverdevil/status/1553439426964951041",
"content": {
"text": "Wow, what a crazy finish to qualis at the #F1 #HungarianGP. Congrats to the best lad!",
"html": "Wow, what a crazy finish to qualis at the <a href=\"https://twitter.com/search?q=%23F1\">#F1</a> <a href=\"https://twitter.com/search?q=%23HungarianGP\">#HungarianGP</a>. Congrats to the best lad!"
},
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://twitter.com/cleverdevil",
"photo": "https://pbs.twimg.com/profile_images/1518010782369284096/7Ac_gJRN.jpg"
},
"post-type": "note",
"_id": "30573984",
"_source": "2773"
}
I'm so thankful this is being addressed. Every time I hear atheist fundamentalist rhetoric like "religion is evil" or "we must eradicate all religion" I can't help but hear it in racist terms. Critique bad religion, yes, but don't perpetuate ignorance and bigotry while doing so.
twitter.com/c_stroop/statu…
The above is from @NiceMangos’s new article for @onlyskymedia, a must read.
Eiynah keeps the receipts on the prevalence of right-wing bigotry in certain movement athei...
{
"type": "entry",
"published": "2022-07-30T17:19:33+00:00",
"url": "https://twitter.com/jaredcwhite/status/1553430107804483584",
"quotation-of": "https://twitter.com/C_Stroop/status/1553405655674806272",
"content": {
"text": "I'm so thankful this is being addressed. Every time I hear atheist fundamentalist rhetoric like \"religion is evil\" or \"we must eradicate all religion\" I can't help but hear it in racist terms. Critique bad religion, yes, but don't perpetuate ignorance and bigotry while doing so.\ntwitter.com/c_stroop/statu\u2026",
"html": "I'm so thankful this is being addressed. Every time I hear atheist fundamentalist rhetoric like \"religion is evil\" or \"we must eradicate all religion\" I can't help but hear it in racist terms. Critique bad religion, yes, but don't perpetuate ignorance and bigotry while doing so.\n<a href=\"https://twitter.com/c_stroop/status/1553405655674806272\">twitter.com/c_stroop/statu\u2026</a>"
},
"author": {
"type": "card",
"name": "Jared White",
"url": "https://twitter.com/jaredcwhite",
"photo": "https://pbs.twimg.com/profile_images/1431863008288931841/hsLQJBv4.jpg"
},
"post-type": "note",
"refs": {
"https://twitter.com/C_Stroop/status/1553405655674806272": {
"type": "entry",
"published": "2022-07-30T15:42:23+00:00",
"url": "https://twitter.com/C_Stroop/status/1553405655674806272",
"in-reply-to": [
"https://twitter.com/C_Stroop/status/1553405653963526144"
],
"content": {
"text": "The above is from @NiceMangos\u2019s new article for @onlyskymedia, a must read.\n\nEiynah keeps the receipts on the prevalence of right-wing bigotry in certain movement atheist spaces. And New Atheist leaders Dawkins and Harris themselves are steeped in it\n\nonlysky.media/eiynah/the-gre\u2026",
"html": "The above is from <a href=\"https://twitter.com/NiceMangos\">@NiceMangos</a>\u2019s new article for <a href=\"https://twitter.com/onlyskymedia\">@onlyskymedia</a>, a must read.\n\nEiynah keeps the receipts on the prevalence of right-wing bigotry in certain movement atheist spaces. And New Atheist leaders Dawkins and Harris themselves are steeped in it\n\n<a href=\"https://onlysky.media/eiynah/the-great-replacement-how-new-atheists-legitimized-and-spread-a-white-nationalist-conspiracy-theory/\">onlysky.media/eiynah/the-gre\u2026</a>"
},
"author": {
"type": "card",
"name": "Chrissy Stroop",
"url": "https://twitter.com/C_Stroop",
"photo": "https://pbs.twimg.com/profile_images/1436553083182469123/b1iIY4of.jpg"
},
"post-type": "reply"
}
},
"_id": "30573716",
"_source": "2773"
}
We’re still a ways away from using post-quantum cryptographic schemes in daily practice — lots more to learn about them first.
Some post-quantum cryptography system broken (Supersingular Isogeny Diffie–Hellman protocol). Attack works in practice, taking "one hour on a single core". That was fas...
{
"type": "entry",
"published": "2022-07-30T16:29:39+00:00",
"url": "https://twitter.com/dangerdave/status/1553417549286612992",
"quotation-of": "https://twitter.com/lukOlejnik/status/1553409622891020288",
"content": {
"text": "We\u2019re still a ways away from using post-quantum cryptographic schemes in daily practice \u2014 lots more to learn about them first."
},
"author": {
"type": "card",
"name": "Dave Peck",
"url": "https://twitter.com/dangerdave",
"photo": "https://pbs.twimg.com/profile_images/1545416408485351430/ZzEZ9NWl.jpg"
},
"post-type": "note",
"refs": {
"https://twitter.com/lukOlejnik/status/1553409622891020288": {
"type": "entry",
"published": "2022-07-30T15:58:09+00:00",
"url": "https://twitter.com/lukOlejnik/status/1553409622891020288",
"photo": [
"https://pbs.twimg.com/media/FY7RTo0XoAAUekF.png",
"https://pbs.twimg.com/media/FY7RUXmXEAIcYQb.png"
],
"content": {
"text": "Some post-quantum cryptography system broken (Supersingular Isogeny Diffie\u2013Hellman protocol). Attack works in practice, taking \"one hour on a single core\". That was fast. Highlights the importance of studying those prior to mass deployment/transition. eprint.iacr.org/2022/975.pdf",
"html": "Some post-quantum cryptography system broken (Supersingular Isogeny Diffie\u2013Hellman protocol). Attack works in practice, taking \"one hour on a single core\". That was fast. Highlights the importance of studying those prior to mass deployment/transition. <a href=\"https://eprint.iacr.org/2022/975.pdf\">eprint.iacr.org/2022/975.pdf</a>"
},
"author": {
"type": "card",
"name": "Lukasz Olejnik",
"url": "https://twitter.com/lukOlejnik",
"photo": "https://pbs.twimg.com/profile_images/642950693532270592/ECQCfulT.jpg"
},
"post-type": "photo"
}
},
"_id": "30572878",
"_source": "2773"
}
Bike to ice skate for @pedalpalooza last night
{
"type": "entry",
"published": "2022-07-30T14:41:25+00:00",
"url": "https://twitter.com/anomalily/status/1553390313271484416",
"photo": [
"https://pbs.twimg.com/media/FY7AMlBUsAM4vNz.jpg"
],
"content": {
"text": "Bike to ice skate for @pedalpalooza last night",
"html": "Bike to ice skate for <a href=\"https://twitter.com/pedalpalooza\">@pedalpalooza</a> last night"
},
"author": {
"type": "card",
"name": "Lillian Karabaic",
"url": "https://twitter.com/anomalily",
"photo": "https://pbs.twimg.com/profile_images/1455236306162761732/jPv9ROKG.jpg"
},
"post-type": "photo",
"_id": "30571161",
"_source": "2773"
}
{
"type": "entry",
"author": {
"name": null,
"url": "https://herestomwiththeweather.com/",
"photo": null
},
"url": "https://herestomwiththeweather.com/2022/07/29/p-hacking-example/",
"published": "2022-07-29T21:09:37+00:00",
"content": {
"html": "<p>One of the most interesting lessons from the pandemic is the harm that can be caused by <a href=\"https://en.wikipedia.org/wiki/Data_dredging\">p-hacking</a>. A paper with errors related to p-hacking that hasn\u2019t been peer-reviewed is promoted by one or more people with millions of followers on social media and then some of those followers suffer horrible outcomes because they had a false sense of security. Maybe the authors of the paper did not even realize the problem but for whatever reason, the social media rock stars felt the need to spread the misinformation. And another very interesting lesson is that the social media rock stars seem to almost never issue a correction after the paper is reviewed and rejected.</p>\n\n<p>To illustrate p-hacking with a non-serious example, I am using real public data with my experience attending drop-in hockey.</p>\n\n<p>I wanted to know if goalies tended to show up more or less frequently on any particular day of the week because it is more fun to play when at least one goalie shows up. I collected 85 independent samples.</p>\n\n<p>For all days, there were 27 days with 1 goalie and 27 days with 2 goalies and 31 days with 0 goalies.</p>\n\n<p>Our test procedure will define the test statistic X = the number of days that at least one goalie registered.</p>\n\n<p>I am not smart so instead of committing to a hypothesis to test prior to looking at the data, I cheat and look at the data first and notice that the numbers for Tuesday look especially low. So, I focus on goalie registrations on Tuesdays. Using the data above for all days, the null hypothesis is that the probability that at least one goalie registered on a Tuesday is 0.635.</p>\n\n<p>For perspective, taking 19 samples for Tuesday would give an expected value of 12 samples where at least 1 goalie registered.</p>\n\n<p>Suppose we wanted to propose an alternative hypothesis that p < 0.635 for Tuesday. What is the rejection region of values that would refute the null hypothesis (p=0.635)?</p>\n\n<p>Let\u2019s aim for \u03b1 = 0.05 as the level of significance. This means that (pretending that I had not egregiously cherry-picked data beforehand) we want there to be less than a 5% chance that the experimental result would occur inside the rejection region if the null hypothesis was true (Type I error).</p>\n\n<p>For a binomial random variable X, the pmf b(x; n, p) is</p>\n\n\n\n<pre><code>def factorial(n)\n (1..n).inject(:*) || 1\nend\n\ndef combination(n,k)\n factorial(n) / (factorial(k)*factorial(n-k))\nend\n\ndef pmf(x,n,p)\n combination(n,x) * (p ** x) * ((1 - p) ** (n-x))\nend\n</code></pre>\n\n<p>The cdf B(x; n, p) = P(X x) is</p>\n\n\n\n<pre><code>def cdf(x,n,p)\n (0..x).map {|i| pmf(i,n,p)}.sum\nend\n</code></pre>\n\n\n<p>For n=19 samples, if x 9 was chosen as the rejection region, then \u03b1 = P(X 9 when X ~ Bin(19, 0.635)) = 0.112</p>\n\n<pre><code>2.4.10 :001 > load 'stats.rb'\n => true \n2.4.10 :002 > cdf(9,19,0.635)\n => 0.1121416295262306 \n</code></pre>\n\n<p>This choice is not good enough because even if the null hypothesis is true, there is a large 11% chance (again, pretending I had not cherry-picked the data) that the test statistic falls in the rejection region.</p>\n\n<p>So, if we narrow the rejection region to x 8, then \u03b1 = P(X 8 when X ~ Bin(19, 0.635)) = 0.047</p>\n\n<pre><code>2.4.10 :003 > cdf(8,19,0.635)\n => 0.04705965393607316\n</code></pre>\n\n\n<p>This rejection region satisfies the requirement of a 0.05 significance level.</p>\n\n<p>The n=19 samples for Tuesday are [0, 0, 0, 1, 0, 0, 0, 0, 1, 2, 0, 1, 1, 0, 1, 2, 2, 0, 0].</p>\n\n<p>Since x=8 falls within the rejection region, the null hypothesis is (supposedly) rejected for Tuesday samples. So I announce to my hockey friends on social media \u201cBeware! Compared to all days of the week, it is less likely that at least one goalie will register on a Tuesday!\u201d</p>\n\n<p><img src=\"https://coffeebucks.s3.amazonaws.com/nope_not_how_it_works.jpg\" alt=\"Nope, not how it works\" /></p>\n\n<p>Before addressing the p-hacking, let\u2019s first address another issue. The experimental result was x = 8 which gave us a 0.047 probability of obtaining 8 or less days in a sample of 19 assuming that the null hypothesis (p=0.635) is true. This result just barely makes the 0.05 cutoff by the skin of its teeth. So, just saying that the null hypothesis was refuted with \u03b1 = 0.05 does not reveal that it was barely refuted. Therefore, it is much more informative to say the <a href=\"https://en.wikipedia.org/wiki/P-value\">p-value</a> was 0.047 and also does not impose a particular \u03b1 on readers who want to draw their own conclusions.</p>\n\n<p>Now let\u2019s discuss the p-hacking problem. I gave myself the impression that there was only a 5% chance that I would see a significant result even if the null hypothesis (p=0.635) were true. However, since there is data for 5 days (Monday, Tuesday, Wednesday, Thursday, Friday), I could have performed 5 different tests. If I chose that same p < 0.635 alternative hypothesis for each, then there would similarly be a 5% chance of a significant result for each test. The probability that all 5 tests would not be significant would be 0.95 * 0.95 * 0.95 * 0.95 * 0.95 = 0.77. Therefore, the probability that at least one test would be significant is 1 - 0.77 = 0.23 (the <a href=\"https://en.wikipedia.org/wiki/Family-wise_error_rate\">Family-wise error rate</a>) which is much higher than 0.05. That\u2019s like flipping a coin twice and getting two heads which is not surprising at all. We should expect such a result even if the null hypothesis is true. Therefore, there is not a significant result for Tuesday.</p>\n\n<p>I was inspired to write this blog post after watching <a href=\"https://twitter.com/DrSusanOliver1\">Dr. Susan Oliver</a>\u2019s <a href=\"https://www.youtube.com/watch?v=drSAsfuMkuw\">Antivaxxers fooled by P-Hacking and apples to oranges comparisons</a>. The video references the paper <a href=\"https://journals.plos.org/plosbiology/article?id=10.1371/journal.pbio.1002106\">The Extent and Consequences of P-Hacking in Science</a> (2015).</p>",
"text": "One of the most interesting lessons from the pandemic is the harm that can be caused by p-hacking. A paper with errors related to p-hacking that hasn\u2019t been peer-reviewed is promoted by one or more people with millions of followers on social media and then some of those followers suffer horrible outcomes because they had a false sense of security. Maybe the authors of the paper did not even realize the problem but for whatever reason, the social media rock stars felt the need to spread the misinformation. And another very interesting lesson is that the social media rock stars seem to almost never issue a correction after the paper is reviewed and rejected.\n\nTo illustrate p-hacking with a non-serious example, I am using real public data with my experience attending drop-in hockey.\n\nI wanted to know if goalies tended to show up more or less frequently on any particular day of the week because it is more fun to play when at least one goalie shows up. I collected 85 independent samples.\n\nFor all days, there were 27 days with 1 goalie and 27 days with 2 goalies and 31 days with 0 goalies.\n\nOur test procedure will define the test statistic X = the number of days that at least one goalie registered.\n\nI am not smart so instead of committing to a hypothesis to test prior to looking at the data, I cheat and look at the data first and notice that the numbers for Tuesday look especially low. So, I focus on goalie registrations on Tuesdays. Using the data above for all days, the null hypothesis is that the probability that at least one goalie registered on a Tuesday is 0.635.\n\nFor perspective, taking 19 samples for Tuesday would give an expected value of 12 samples where at least 1 goalie registered.\n\nSuppose we wanted to propose an alternative hypothesis that p < 0.635 for Tuesday. What is the rejection region of values that would refute the null hypothesis (p=0.635)?\n\nLet\u2019s aim for \u03b1 = 0.05 as the level of significance. This means that (pretending that I had not egregiously cherry-picked data beforehand) we want there to be less than a 5% chance that the experimental result would occur inside the rejection region if the null hypothesis was true (Type I error).\n\nFor a binomial random variable X, the pmf b(x; n, p) is\n\n\n\ndef factorial(n)\n (1..n).inject(:*) || 1\nend\n\ndef combination(n,k)\n factorial(n) / (factorial(k)*factorial(n-k))\nend\n\ndef pmf(x,n,p)\n combination(n,x) * (p ** x) * ((1 - p) ** (n-x))\nend\n\n\nThe cdf B(x; n, p) = P(X x) is\n\n\n\ndef cdf(x,n,p)\n (0..x).map {|i| pmf(i,n,p)}.sum\nend\n\n\n\nFor n=19 samples, if x 9 was chosen as the rejection region, then \u03b1 = P(X 9 when X ~ Bin(19, 0.635)) = 0.112\n\n2.4.10 :001 > load 'stats.rb'\n => true \n2.4.10 :002 > cdf(9,19,0.635)\n => 0.1121416295262306 \n\n\nThis choice is not good enough because even if the null hypothesis is true, there is a large 11% chance (again, pretending I had not cherry-picked the data) that the test statistic falls in the rejection region.\n\nSo, if we narrow the rejection region to x 8, then \u03b1 = P(X 8 when X ~ Bin(19, 0.635)) = 0.047\n\n2.4.10 :003 > cdf(8,19,0.635)\n => 0.04705965393607316\n\n\n\nThis rejection region satisfies the requirement of a 0.05 significance level.\n\nThe n=19 samples for Tuesday are [0, 0, 0, 1, 0, 0, 0, 0, 1, 2, 0, 1, 1, 0, 1, 2, 2, 0, 0].\n\nSince x=8 falls within the rejection region, the null hypothesis is (supposedly) rejected for Tuesday samples. So I announce to my hockey friends on social media \u201cBeware! Compared to all days of the week, it is less likely that at least one goalie will register on a Tuesday!\u201d\n\n\n\nBefore addressing the p-hacking, let\u2019s first address another issue. The experimental result was x = 8 which gave us a 0.047 probability of obtaining 8 or less days in a sample of 19 assuming that the null hypothesis (p=0.635) is true. This result just barely makes the 0.05 cutoff by the skin of its teeth. So, just saying that the null hypothesis was refuted with \u03b1 = 0.05 does not reveal that it was barely refuted. Therefore, it is much more informative to say the p-value was 0.047 and also does not impose a particular \u03b1 on readers who want to draw their own conclusions.\n\nNow let\u2019s discuss the p-hacking problem. I gave myself the impression that there was only a 5% chance that I would see a significant result even if the null hypothesis (p=0.635) were true. However, since there is data for 5 days (Monday, Tuesday, Wednesday, Thursday, Friday), I could have performed 5 different tests. If I chose that same p < 0.635 alternative hypothesis for each, then there would similarly be a 5% chance of a significant result for each test. The probability that all 5 tests would not be significant would be 0.95 * 0.95 * 0.95 * 0.95 * 0.95 = 0.77. Therefore, the probability that at least one test would be significant is 1 - 0.77 = 0.23 (the Family-wise error rate) which is much higher than 0.05. That\u2019s like flipping a coin twice and getting two heads which is not surprising at all. We should expect such a result even if the null hypothesis is true. Therefore, there is not a significant result for Tuesday.\n\nI was inspired to write this blog post after watching Dr. Susan Oliver\u2019s Antivaxxers fooled by P-Hacking and apples to oranges comparisons. The video references the paper The Extent and Consequences of P-Hacking in Science (2015)."
},
"name": "P-Hacking Example",
"post-type": "article",
"_id": "30567021",
"_source": "246"
}