{
"type": "entry",
"published": "2019-05-13T00:04:01-04:00",
"url": "https://david.shanske.com/2019/05/13/2847/",
"content": {
"text": "I added a page to my site with a list of all the IndieWebCamps I\u2019ve attended, as well as a copy of the photos when applicable. You can find it here.",
"html": "I added a page to my site with a list of all the IndieWebCamps I\u2019ve attended, as well as a copy of the photos when applicable. You can find it <a href=\"https://david.shanske.com/indiewebcamps/\">here</a>."
},
"author": {
"type": "card",
"name": "David Shanske",
"url": "https://david.shanske.com/",
"photo": "https://david.shanske.com/wp-content/uploads/avatar-privacy/cache/gravatar/2/c/2cb1f8afd9c8d3b646b4071c5ed887c970d81d625eeed87e447706940e2c403d-49.png"
},
"post-type": "note",
"_id": "3428853",
"_source": "1905"
}
Moved my reader actions inline... previously clicking an action in the reader would scroll to the top of the page, because that's where the editor was. It would helpfully scroll you back once the interaction was complete, but it was a bit clunky. :-)
{
"type": "entry",
"published": "2019-05-13T12:35:22+10:00",
"url": "https://unicyclic.com/mal/2019-05-13-_Moved_my_reader_actions_inline_previously_cli-2",
"content": {
"text": "Moved my reader actions inline... previously clicking an action in the reader would scroll to the top of the page, because that's where the editor was. It would helpfully scroll you back once the interaction was complete, but it was a bit clunky. :-)",
"html": "<img alt=\"\" src=\"https://aperture-proxy.p3k.io/2bb855bd0405713fa6b487f148f909750429c91a/68747470733a2f2f756e696379636c69632e636f6d2f6d616c2f7075626c69632f7265616465722d616374696f6e732e706e67\" /><br />\nMoved my reader actions inline... previously clicking an action in the reader would scroll to the top of the page, because that's where the editor was. It would helpfully scroll you back once the interaction was complete, but it was a bit clunky. :-)"
},
"author": {
"type": "card",
"name": "Malcolm Blaney",
"url": "https://unicyclic.com/mal",
"photo": "https://aperture-proxy.p3k.io/4f46272c0027449ced0d7cf8de31ea1bec37210e/68747470733a2f2f756e696379636c69632e636f6d2f6d616c2f7075626c69632f70726f66696c655f736d616c6c5f7468756d622e706e67"
},
"post-type": "note",
"_id": "3429353",
"_source": "243"
}
For quite some time there’s been a lot of fan speculation that Lars is AFAB and trans, with quite a lot of compelling evidence to that effect. It’s a thing I absolutely believe and I keep on hoping for confirmation in-show.
So, the Very Trans Narrative ending of Season 5 could lead to a future episode (or the upcoming movie) to finally answer this.
Here’s how I think it might happen.
{
"type": "entry",
"published": "2019-05-12T19:23:16-07:00",
"summary": "For quite some time there\u2019s been a lot of fan speculation that Lars is AFAB and trans, with quite a lot of compelling evidence to that effect. It\u2019s a thing I absolutely believe and I keep on hoping for confirmation in-show.\nSo, the Very Trans Narrative ending of Season 5 could lead to a future episode (or the upcoming movie) to finally answer this.\nHere\u2019s how I think it might happen.",
"url": "https://beesbuzz.biz/blog/366-An-imagined-scene-from-the-future-of-Steven-Universe",
"name": "An imagined scene from the future of Steven Universe",
"author": {
"type": "card",
"name": "fluffy",
"url": "https://beesbuzz.biz/",
"photo": "https://aperture-proxy.p3k.io/67f0e159262fa91b1915cde9588795b89a61ec8f/68747470733a2f2f6265657362757a7a2e62697a2f7374617469632f6865616473686f742e6a7067"
},
"post-type": "article",
"_id": "3903094",
"_source": "2778"
}
I've written a very hacky #Mycroft#REST webhook to run on a Mycroft box and allow you to integrate other apps with it. It's far from done, and it's super hacky at the moment, but it's working. I use it for some custom #HomeAssistant integrations & have a few other plans for it. It's available on #GitHub.
{
"type": "entry",
"published": "2019-05-13T01:12:49+00:00",
"url": "https://caffeinewitch.tech/2019/05/ive-written-a-very-hacky-mycroft-rest-webhook-to-run",
"category": [
"Mycroft",
"REST",
"HomeAssistant",
"GitHub"
],
"syndication": [
"https://twitter.com/ketudb/status/1127743537741737986"
],
"content": {
"text": "I've written a very hacky #Mycroft #REST webhook to run on a Mycroft box and allow you to integrate other apps with it. It's far from done, and it's super hacky at the moment, but it's working. I use it for some custom #HomeAssistant integrations & have a few other plans for it. It's available on #GitHub.\n\nhttps://github.com/ketudb/mycroft-webhook-inbound",
"html": "I've written a very hacky <a href=\"https://caffeinewitch.tech/tag/Mycroft\" class=\"p-category\">#Mycroft</a> <a href=\"https://caffeinewitch.tech/tag/REST\" class=\"p-category\">#REST</a> webhook to run on a Mycroft box and allow you to integrate other apps with it. It's far from done, and it's super hacky at the moment, but it's working. I use it for some custom <a href=\"https://caffeinewitch.tech/tag/HomeAssistant\" class=\"p-category\">#HomeAssistant</a> integrations & have a few other plans for it. It's available on <a href=\"https://caffeinewitch.tech/tag/GitHub\" class=\"p-category\">#GitHub</a>.<br /><br /><a href=\"https://github.com/ketudb/mycroft-webhook-inbound\">https://github.com/ketudb/mycroft-webhook-inbound</a>"
},
"author": {
"type": "card",
"name": "Keturah",
"url": "https://caffeinewitch.tech/profile/ketudb",
"photo": "https://aperture-proxy.p3k.io/1f50a7f40a48b3b5360e7cba803d2474fe531f45/68747470733a2f2f6361666665696e6577697463682e746563682f66696c652f3531393262643461323534346539643831646638366364383965666233353833"
},
"post-type": "note",
"_id": "3903108",
"_source": "2779"
}
{
"type": "entry",
"published": "2019-05-13T00:49:06+02:00",
"url": "https://aaronparecki.com/2019/05/13/2/https",
"category": [
"indieweb",
"indieauth",
"security",
"https"
],
"name": "Better Default Security for IndieAuth Login Forms",
"content": {
"text": "Last year, I posted a JavaScript snippet that I've started using in all my projects that have an IndieAuth login form, which will automatically add the http scheme if you type a plain domain. This is particularly a problem because the iOS keyboard doesn't include the : character in URL mode.\n\nThe URL keyboard on iOS provides easy access to special characters used in URLs, except no colon!My solution last year was to automatically prepend http:// when a plain domain is entered. This works, but it would be nice if I could use https:// as the default. The problem is I can't assume everyone has https on their websites, and I don't want to have the flow error out when the site can't fetch your domain over https because it's only available on http.\n\nThe trick is that the frontend can tell the backend whether the https scheme was automatically entered or was user-entered. And then, the backend can attempt the https connection first, and if that fails, fall back to http, but only if\u00a0the https scheme was added automatically.\n\nThis provides the best of both worlds. If you explicitly enter https, then it will only\u00a0use the https URL. If you enter just a domain, then it tries https first, and only falls back to http if that fails due to an ssl error.\n\nThe revised code snippet is below. The change if you're using this code is that you have to explicitly opt in to this new behavior. The code attaches to all URL input fields, and then if it finds a corresponding field to add this toggle, it will switch to https by default instead of http, and add a \"1\" to your defined form field.\n\n<script>\n/* add https:// to URL fields on blur */\ndocument.addEventListener('DOMContentLoaded', function() {\n function addDefaultScheme(target) {\n var auto_scheme = false;\n var default_scheme = \"http\";\n var auto_scheme_field = document.querySelector(\"input[name=\"+target.getAttribute('name')+\"_auto_scheme]\");\n if(target.value.match(/^(?!https?:).+\\..+/)) {\n target.value = (auto_scheme_field ? \"https\" : \"http\")+\"://\"+target.value;\n if(auto_scheme_field) {\n auto_scheme_field.value = \"1\";\n }\n }\n }\n var elements = document.querySelectorAll(\"input[type=url]\");\n Array.prototype.forEach.call(elements, function(el, i){\n el.addEventListener(\"blur\", function(e){\n addDefaultScheme(e.target);\n });\n el.addEventListener(\"keydown\", function(e){\n if(e.keyCode == 13) {\n addDefaultScheme(e.target);\n }\n });\n });\n});\n</script>\n\n\nTo use this code with the auto-https upgrade feature, just create any url type input field in the page, and create a hidden input field with a name that is the same as the url field with _auto_scheme appended. The value \"1\" will be written to this field if this code adds the default scheme.\n\n<form action=\"/login\">\n <input type=\"url\" name=\"url\">\n\n <input type=\"text\" name=\"url_auto_scheme\">\n <input type=\"submit\" value=\"Log In\">\n</form>\n\n\nThen in your backend, begin the IndieAuth discovery using the url value as normal. If that step returns an SSL error, then check if url_auto_scheme is 1, and if it is, modify the input URL to switch to the http scheme and try the discovery step again.\n\nThat little bit of frontend JavaScript and backend logic provides a great balance between usability and security for websites that ask users to enter URLs!",
"html": "<p>Last year, I <a href=\"https://aaronparecki.com/2018/06/03/4/url-form-field\">posted a JavaScript snippet</a> that I've started using in all my projects that have an IndieAuth login form, which will automatically add the <code>http</code> scheme if you type a plain domain. This is particularly a problem because the iOS keyboard doesn't include the <code>:</code> character in URL mode.</p>\n\n<img src=\"https://aperture-media.p3k.io/aaronparecki.com/241cb2d5e5fbd7bba69fa10c7914cdf6cb8d28c48111332987c6fc03c2ed4643.png\" alt=\"\" />The URL keyboard on iOS provides easy access to special characters used in URLs, except no colon!<p>My solution last year was to automatically prepend <code>http://</code> when a plain domain is entered. This works, but it would be nice if I could use <code>https://</code> as the default. The problem is I can't assume everyone has https on their websites, and I don't want to have the flow error out when the site can't fetch your domain over https because it's only available on http.</p>\n\n<p>The trick is that the frontend can tell the backend whether the https scheme was automatically entered or was user-entered. And then, the backend can attempt the https connection first, and if that fails, fall back to http, but <i>only if</i>\u00a0the https scheme was added automatically.</p>\n\n<p>This provides the best of both worlds. If you explicitly enter https, then it will <i>only</i>\u00a0use the https URL. If you enter just a domain, then it tries https first, and only falls back to http if that fails due to an ssl error.</p>\n\n<p>The revised code snippet is below. The change if you're using this code is that you have to explicitly opt in to this new behavior. The code attaches to all URL input fields, and then if it finds a corresponding field to add this toggle, it will switch to https by default instead of http, and add a \"1\" to your defined form field.</p>\n\n<pre><code><script>\n/* add https:// to URL fields on blur */\ndocument.addEventListener('DOMContentLoaded', function() {\n function addDefaultScheme(target) {\n var auto_scheme = false;\n var default_scheme = \"http\";\n var auto_scheme_field = document.querySelector(\"input[name=\"+target.getAttribute('name')+\"_auto_scheme]\");\n if(target.value.match(/^(?!https?:).+\\..+/)) {\n target.value = (auto_scheme_field ? \"https\" : \"http\")+\"://\"+target.value;\n if(auto_scheme_field) {\n auto_scheme_field.value = \"1\";\n }\n }\n }\n var elements = document.querySelectorAll(\"input[type=url]\");\n Array.prototype.forEach.call(elements, function(el, i){\n el.addEventListener(\"blur\", function(e){\n addDefaultScheme(e.target);\n });\n el.addEventListener(\"keydown\", function(e){\n if(e.keyCode == 13) {\n addDefaultScheme(e.target);\n }\n });\n });\n});\n</script>\n</code></pre>\n\n<p>To use this code with the auto-https upgrade feature, just create any <code>url</code> type input field in the page, and create a <code>hidden</code> input field with a <code>name</code> that is the same as the url field with <code>_auto_scheme</code> appended. The value \"1\" will be written to this field if this code adds the default scheme.</p>\n\n<pre><code><form action=\"/login\">\n <input type=\"url\" name=\"url\"><br>\n <input type=\"text\" name=\"url_auto_scheme\">\n <input type=\"submit\" value=\"Log In\">\n</form>\n</code></pre>\n\n<p>Then in your backend, begin the IndieAuth discovery using the <code>url</code> value as normal. If that step returns an SSL error, then check if <code>url_auto_scheme</code> is <code>1</code>, and if it is, modify the input URL to switch to the <code>http</code> scheme and try the discovery step again.</p>\n\n<p>That little bit of frontend JavaScript and backend logic provides a great balance between usability and security for websites that ask users to enter URLs!</p>"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "article",
"_id": "3426246",
"_source": "16"
}
Post-IndieWebCamp hacking continues at the hotel bar! Made a few more minor improvements to Monocle:
• Defaults to "https" when you type in a domain, and if that fails, will fall back to http, rather than the other way around • Added a logout button • Added mobile screenshots to the wiki • Updated the indieauth-client-php library to bubble up things like ssl errors so that apps using the library can report errors better
{
"type": "entry",
"published": "2019-05-12T23:43:01+02:00",
"url": "https://aaronparecki.com/2019/05/12/33/monocle",
"category": [
"indiewebcamp",
"indieweb",
"monocle"
],
"content": {
"text": "Post-IndieWebCamp hacking continues at the hotel bar! Made a few more minor improvements to Monocle: \n\n\u2022 Defaults to \"https\" when you type in a domain, and if that fails, will fall back to http, rather than the other way around \n\u2022 Added a logout button \n\u2022 Added mobile screenshots to the wiki \n\u2022 Updated the indieauth-client-php library to bubble up things like ssl errors so that apps using the library can report errors better",
"html": "Post-IndieWebCamp hacking continues at the hotel bar! Made a few more minor improvements to Monocle: <br /><br />\u2022 Defaults to \"https\" when you type in a domain, and if that fails, will fall back to http, rather than the other way around <br />\u2022 Added a logout button <br />\u2022 Added mobile screenshots to the wiki <br />\u2022 Updated the indieauth-client-php library to bubble up things like ssl errors so that apps using the library can report errors better"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "note",
"_id": "3425203",
"_source": "16"
}
Second #IndieWebCamp hack day project: how to quickly get started using an IndieWeb reader.
• start with a blank HTML file • add a rel=me link to your GitHub profile, and make sure your GitHub profile links back • add a couple `<link>` tags for indieauth.com • sign in to https://aperture.p3k.io • add the `<link>` tag it generates for you • sign in to an IndieWeb reader!
{
"type": "entry",
"published": "2019-05-12T13:55:47+02:00",
"url": "https://aaronparecki.com/2019/05/12/12/microsub",
"category": [
"IndieWebCamp",
"microsub",
"indiewebcamp",
"indieweb"
],
"content": {
"text": "Second #IndieWebCamp hack day project: how to quickly get started using an IndieWeb reader. \n\n\u2022 start with a blank HTML file \n\u2022 add a rel=me link to your GitHub profile, and make sure your GitHub profile links back \n\u2022 add a couple `<link>` tags for indieauth.com \n\u2022 sign in to https://aperture.p3k.io \n\u2022 add the `<link>` tag it generates for you \n\u2022 sign in to an IndieWeb reader! \n\nMore details at: https://indieweb.org/Microsub#Getting_Started",
"html": "Second <a href=\"https://aaronparecki.com/tag/indiewebcamp\">#<span class=\"p-category\">IndieWebCamp</span></a> hack day project: how to quickly get started using an IndieWeb reader. <br /><br />\u2022 start with a blank HTML file <br />\u2022 add a rel=me link to your GitHub profile, and make sure your GitHub profile links back <br />\u2022 add a couple `<link>` tags for indieauth.com <br />\u2022 sign in to <a href=\"https://aperture.p3k.io\"><span>https://</span>aperture.p3k.io</a> <br />\u2022 add the `<link>` tag it generates for you <br />\u2022 sign in to an IndieWeb reader! <br /><br />More details at: <a href=\"https://indieweb.org/Microsub#Getting_Started\"><span>https://</span>indieweb.org/Microsub#Getting_Started</a>"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "note",
"_id": "3418896",
"_source": "16"
}
First #IndieWebCamp hack day project complete! I'm finally starting to get an understanding of CSS Grid.
Thanks to help from @tantek I was able to fix the display of my monthly calendars at https://aaronparecki.com/2019/04 by switching from table display to flex>grid>flex with table>tr>td markup. Kept the table markup and was able to remove one level of nested divs inside too!
The <table> element is a flexbox, the <tr>s are a grid, and the <td>s inside are a flexbox. This lets the rows of the calendar vary in height, but forces the height of the cells of each row to be the same height. Finally the city names at the bottom are able to be "stuck" to the bottom of the cell.
{
"type": "entry",
"published": "2019-05-12T12:53:37+02:00",
"url": "https://aaronparecki.com/2019/05/12/11/indiewebcamp-table",
"category": [
"IndieWebCamp",
"indiewebcamp",
"table",
"css",
"cssgrid"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/0a6109da96fb2ad0c5ecb938b1ec6c11cddcb485ba3f948c59488f140198d27e.png"
],
"content": {
"text": "First #IndieWebCamp hack day project complete! I'm finally starting to get an understanding of CSS Grid. \n\nThanks to help from @tantek I was able to fix the display of my monthly calendars at https://aaronparecki.com/2019/04 by switching from table display to flex>grid>flex with table>tr>td markup. Kept the table markup and was able to remove one level of nested divs inside too! \n\nThe <table> element is a flexbox, the <tr>s are a grid, and the <td>s inside are a flexbox. This lets the rows of the calendar vary in height, but forces the height of the cells of each row to be the same height. Finally the city names at the bottom are able to be \"stuck\" to the bottom of the cell.",
"html": "First <a href=\"https://aaronparecki.com/tag/indiewebcamp\">#<span class=\"p-category\">IndieWebCamp</span></a> hack day project complete! I'm finally starting to get an understanding of CSS Grid. <br /><br />Thanks to help from <a href=\"http://tantek.com/\">@tantek</a> I was able to fix the display of my monthly calendars at <a href=\"https://aaronparecki.com/2019/04\"><span>https://</span>aaronparecki.com/2019/04</a> by switching from table display to flex>grid>flex with table>tr>td markup. Kept the table markup and was able to remove one level of nested divs inside too! <br /><br />The <table> element is a flexbox, the <tr>s are a grid, and the <td>s inside are a flexbox. This lets the rows of the calendar vary in height, but forces the height of the cells of each row to be the same height. Finally the city names at the bottom are able to be \"stuck\" to the bottom of the cell."
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/41061f9de825966faa22e9c42830e1d4a614a321213b4575b9488aa93f89817a.jpg"
},
"post-type": "photo",
"_id": "3418476",
"_source": "16"
}
Thanks to everyone who’s worked on and supported this great little IndieWeb and Domain of One’s Own friendly CMS that has made my life happier and all the better for its existence. Kudos especially to Ben Werdmüller, Marcus Povey, and Erin Jo Richey.
{
"type": "entry",
"published": "2019-05-11T08:21:10-07:00",
"category": [
"education",
"indieweb",
"dooo",
"withknown",
"https://werd.io/",
"https://www.marcus-povey.co.uk/",
"http://erinjo.xyz/"
],
"content": {
"text": "Happy 5th birthday WithKnown!\nThanks to everyone who\u2019s worked on and supported this great little IndieWeb and Domain of One\u2019s Own friendly CMS that has made my life happier and all the better for its existence. Kudos especially to Ben Werdm\u00fcller, Marcus Povey, and Erin Jo Richey.\n\nSyndicated copies to: Twitter icon",
"html": "<p>Happy 5th birthday <a href=\"https://withknown.com/\">WithKnown</a>!</p>\n<p>Thanks to everyone who\u2019s worked on and supported this great little IndieWeb and Domain of One\u2019s Own friendly CMS that has made my life happier and all the better for its existence. Kudos especially to <a class=\"h-card u-category\" href=\"https://werd.io/\">Ben Werdm\u00fcller</a>, <a class=\"h-card u-category\" href=\"https://www.marcus-povey.co.uk/\">Marcus Povey</a>, and <a class=\"h-card u-category\" href=\"http://erinjo.xyz/\">Erin Jo Richey</a>.</p>\n\n<span>Syndicated copies to:</span><ul><li><a class=\"u-syndication\" href=\"https://twitter.com/ChrisAldrich/status/1127232330211323904\"> <span style=\"max-width:1rem;margin:2px;\" title=\"twitter\">Twitter icon</span></a></li></ul>"
},
"author": {
"type": "card",
"name": "Chris Aldrich",
"url": "https://boffosocko.com/",
"photo": "https://aperture-proxy.p3k.io/07a56dfeaeb22fa994a161bf21a4b2110aa17def/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f64356662346534393866653630396363323962303465356237616436383863343f733d343926643d6964656e7469636f6e26723d7067"
},
"post-type": "note",
"refs": {
"https://werd.io/": {
"type": "card",
"name": "Ben Werdm\u00fcller",
"url": "https://werd.io/",
"photo": null
},
"https://www.marcus-povey.co.uk/": {
"type": "card",
"name": "Marcus Povey",
"url": "https://www.marcus-povey.co.uk/",
"photo": null
},
"http://erinjo.xyz/": {
"type": "card",
"name": "Erin Jo Richey",
"url": "http://erinjo.xyz/",
"photo": null
}
},
"_id": "3903313",
"_source": "2785"
}