{ "type": "entry", "published": "2018-01-07T18:41:28+00:00", "url": "https://miklb.com/2018/01/3164/", "syndication": [ "https://twitter.com/miklb/status/950074698041356290" ], "in-reply-to": [ "https://twitter.com/shiflett/status/950067527958200320?ref_src=twsrc%5Etfw" ], "name": "January 7, 2018 \n\t\t\t\t\t\t\t\t\t\t\t\t18:41# \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\n\t\n\n\t\t\n\t\t\t\n\t\t\t\t\n \n\t\nI debated using Webmentions but ultimately decided no comments this time. Let people respond thoughtfully with a post of their own. Bring blogging back. :-) \u2014 Chris Shiflett (@shiflett) January 7, 2018 \n \n\nthat\u2019s what a webmention is \u2013 a post on my blog in reply to someone else\u2019s post. Just like how I\u2019m using my site to create this reply that goes to Twitter.", "content": { "text": "that\u2019s what a webmention is \u2013 a post on my blog in reply to someone else\u2019s post. Just like how I\u2019m using my site to create this reply that goes to Twitter.", "html": "<p>that\u2019s what a webmention is \u2013 a post on my blog in reply to someone else\u2019s post. Just like how I\u2019m using my site to create this reply that goes to Twitter.\n</p>" }, "refs": { "https://twitter.com/shiflett/status/950067527958200320?ref_src=twsrc%5Etfw": { "type": "entry", "url": "https://twitter.com/shiflett/status/950067527958200320?ref_src=twsrc%5Etfw", "content": { "text": "I debated using Webmentions but ultimately decided no comments this time. Let people respond thoughtfully with a post of their own. Bring blogging back. :-) \u2014 Chris Shiflett (@shiflett) January 7, 2018" } } }, "_id": "11784", "_source": "42", "_is_read": true }
{ "type": "entry", "published": "2018-01-06T14:49:39-08:00", "url": "https://aaronparecki.com/2018/01/06/13/code-snippets", "featured": "https://aaronparecki.com/2018/01/06/13/image-2.png", "category": [ "p3k", "indieweb", "code" ], "name": "Owning my Code Snippets", "content": { "text": "It's very convenient to be able to quickly share a link to a code snippet, which is something I've mostly done using gist.github.com. While often the code snippets are sort of throwaway, I still feel bad that I'm posting them in a place that I don't control.\nToday I added support to my site for natively posting code snippets. It wasn't nearly as hard as I was imagining it was going to be! Since my site doesn't have a posting interface of its own, that also meant that I needed to add support to Quill to create these posts via Micropub.\nSince this is still relatively experimental, I didn't add a button to it in Quill, but the page is live.\nThe only required part of this is the code box. The interface lets you optionally set a filename, which will automatically set the language if it matches a list of known languages. The language is included in order to indicate to my site which syntax highlighter to use. Here's what that ends up looking like on my site.\nI use the GeSHi syntax highlighter, which covers a wide range of languages and works very well, but I'm not super happy with the colors it uses. I'd like to find a stylesheet or even a different syntax highlighter that looks closer to the colors on GitHub. In the mean time, I'm happy enough with this to use it.\nI ended up doing quite a bit of fiddling with my CSS to make these posts look good. You'll notice the grey background of the code block extends to the edges of the post, whereas normally there would be some padding. I also changed the font of the post name to a fixed-width font. If there is no filename, then I wanted the grey background to extend to the top of the frame, which is also something unique to these posts.\nThe last step of making this actually useful is to integrate this into my browser workflow, including editing the posts easily. There is a bookmarklet that will either open up a new window or launch the editing interface depending on whether I'm looking at an existing code post.\nI'm pretty happy with this, and I hope I don't post on GitHub anymore unless I'm specifically using their fork feature of Gists!", "html": "<p>It's very convenient to be able to quickly share a link to a code snippet, which is something I've mostly done using <a href=\"https://gist.github.com\">gist.github.com</a>. While often the code snippets are sort of throwaway, I still feel bad that I'm posting them in a place that I don't control.</p>\n<p>Today I added support to my site for natively posting code snippets. It wasn't nearly as hard as I was imagining it was going to be! Since my site doesn't have a posting interface of its own, that also meant that I needed to add support to <a href=\"https://quill.p3k.io\">Quill</a> to create these posts via <a href=\"https://micropub.net\">Micropub</a>.</p>\n<p>Since this is still relatively experimental, I didn't add a button to it in Quill, but the page is live.</p>\n<img src=\"https://aaronparecki.com/2018/01/06/13/image-1.png\" alt=\"\" /><p>The only required part of this is the code box. The interface lets you optionally set a filename, which will automatically set the language if it matches a list of known languages. The language is included in order to indicate to my site which syntax highlighter to use. Here's what that ends up looking like on my site.</p>\n<img src=\"https://aaronparecki.com/2018/01/06/13/image-2.png\" alt=\"\" class=\"u-featured\" /><p>I use the <a href=\"http://qbnz.com/highlighter/\">GeSHi</a> syntax highlighter, which covers a wide range of languages and works very well, but I'm not super happy with the colors it uses. I'd like to find a stylesheet or even a different syntax highlighter that looks closer to the colors on GitHub. In the mean time, I'm happy enough with this to use it.</p>\n<p>I ended up doing quite a bit of fiddling with my CSS to make these posts look good. You'll notice the grey background of the code block extends to the edges of the post, whereas normally there would be some padding. I also changed the font of the post name to a fixed-width font. If there is no filename, then I wanted the grey background to extend to the top of the frame, which is also something unique to these posts.</p>\n<img src=\"https://aaronparecki.com/2018/01/06/13/image-3.png\" alt=\"\" /><p>The last step of making this actually useful is to integrate this into my browser workflow, including editing the posts easily. There is a bookmarklet that will either open up a new window or launch the editing interface depending on whether I'm looking at an existing code post.</p>\n<p>I'm pretty happy with this, and I hope I don't post on GitHub anymore unless I'm specifically using their fork feature of Gists!</p>" }, "author": { "type": "card", "name": "Aaron Parecki", "url": "https://aaronparecki.com/", "photo": "https://aaronparecki.com/images/profile.jpg" }, "_id": "11663", "_source": "16", "_is_read": true }
{ "type": "entry", "published": "2018-01-06T14:35:09-08:00", "url": "https://aaronparecki.com/2018/01/06/12/blog-archives", "category": [ "indieweb", "p3k" ], "name": "Improved Blog Post Archives", "content": { "text": "I've been wanting to improve the layout of my blog post archive pages for some time. Previously, the page just listed out the full contents of the last 20 posts, and you could continue navigating back 20 posts at a time. I realize that some people like reading the full posts on the archive page, rather than having to click into each one, but it wasn't easy to just skim the post titles to get a sense of what was on the page.\nAs an intermediate step before launching a real archives view, I took Tantek's suggestion of adding a sort of \"table of contents\" view to my existing pages.\nNow on my \"articles\" page, there is a list at the top of the names of each post.\u00a0\nBelow that, I still show the full contents of each post. The table of contents also links to fragment IDs for each post on the page, so that you can quickly read the posts without doing full page loads.\nAs a bonus, this also works with my tag-filtered article pages, such as Articles Tagged #indieweb.\nI like this view since it makes it a little easier to find a lot of past content by topic rather than having to continue to page back 20 posts at a time.\nI'm still planning on improving the overall archive browsing on my site, but this was a relatively easy first step and is a good improvement.", "html": "<p>I've been wanting to improve the layout of my blog post archive pages for some time. Previously, the page just listed out the full contents of the last 20 posts, and you could continue navigating back 20 posts at a time. I realize that some people like reading the full posts on the archive page, rather than having to click into each one, but it wasn't easy to just skim the post titles to get a sense of what was on the page.</p>\n<p>As an intermediate step before launching a real archives view, I took <a href=\"http://tantek.com\">Tantek</a>'s suggestion of adding a sort of \"table of contents\" view to my existing pages.</p>\n<p>Now on my \"<a href=\"https://aaronparecki.com/articles\">articles</a>\" page, there is a list at the top of the names of each post.\u00a0</p>\n<img src=\"https://aaronparecki.com/2018/01/06/12/image-1.png\" alt=\"\" /><p>Below that, I still show the full contents of each post. The table of contents also links to fragment IDs for each post on the page, so that you can quickly read the posts without doing full page loads.</p>\n<p>As a bonus, this also works with my tag-filtered article pages, such as <a href=\"https://aaronparecki.com/articles?tag=indieweb\">Articles Tagged #indieweb</a>.</p>\n<img src=\"https://aaronparecki.com/2018/01/06/12/image-2.png\" alt=\"\" /><p>I like this view since it makes it a little easier to find a lot of past content by topic rather than having to continue to page back 20 posts at a time.</p>\n<p>I'm still planning on improving the overall archive browsing on my site, but this was a relatively easy first step and is a good improvement.</p>" }, "author": { "type": "card", "name": "Aaron Parecki", "url": "https://aaronparecki.com/", "photo": "https://aaronparecki.com/images/profile.jpg" }, "_id": "11664", "_source": "16", "_is_read": true }
Hell, yeah!
I write to understand and remember. Sometimes that will be interesting to others, often it won’t be.
But it’s going to happen. Here, on my own site.
{ "type": "entry", "published": "2018-01-05T19:04:22Z", "url": "https://adactio.com/links/13280", "category": [ "indieweb", "writing", "publishing", "blogging", "data", "ownership", "content", "syndication", "sharing" ], "bookmark-of": [ "https://timkadlec.com/2018/01/owning-my-own-content/" ], "content": { "text": "Owning My Own Content - TimKadlec.com\n\n \n\nHell, yeah! \n\n\n I write to understand and remember. Sometimes that will be interesting to others, often it won\u2019t be. \n \n But it\u2019s going to happen. Here, on my own site.", "html": "<h3>\n<a class=\"p-name u-bookmark-of\" href=\"https://timkadlec.com/2018/01/owning-my-own-content/\">\nOwning My Own Content - TimKadlec.com\n</a>\n</h3>\n\n<p>Hell, yeah!</p>\n\n<blockquote>\n <p>I write to understand and remember. Sometimes that will be interesting to others, often it won\u2019t be.</p>\n \n <p>But it\u2019s going to happen. Here, on my own site.</p>\n</blockquote>" }, "_id": "11106", "_source": "2", "_is_read": true }
{ "type": "entry", "published": "2018-01-05T19:02:54+00:00", "url": "https://cleverdevil.io/2018/indieweb-idea-follow-friday-but-for-blogsbrentsimmonsstatus949354384541990912", "syndication": [ "https://twitter.com/cleverdevil/status/949355546272034819" ], "content": { "text": "IndieWeb Idea: Follow Friday, but for blogs.\n\nhttps://twitter.com/brentsimmons/status/949354384541990912", "html": "IndieWeb Idea: Follow Friday, but for blogs.<a href=\"https://twitter.com/brentsimmons/status/949354384541990912\">https://twitter.com/brentsimmons/status/949354384541990912</a>" }, "author": { "type": "card", "name": "Jonathan LaCour", "url": "https://cleverdevil.io/profile/cleverdevil", "photo": "https://cleverdevil.io/file/2fa19f964fb8970faaf20b909c69d6cb/thumb.png" }, "_id": "11023", "_source": "71", "_is_read": true }
{ "type": "entry", "published": "2018-01-05T10:50:44-08:00", "url": "https://aaronparecki.com/2018/01/05/10/rich-link-previews", "featured": "https://aaronparecki.com/2018/01/05/10/image-1.jpg", "category": [ "indieweb", "p3k", "opengraph" ], "name": "Rich Link Previews for my Website on Facebook and Twitter", "content": { "text": "Ever since launching the new version of my website in 2016, I haven't had the special meta tags that Facebook, Twitter and Slack use for showing the nice preview of links shared. It's been annoying me a bit when I share a link to a blog post that they don't look good there.\nToday I begrudgingly added the Facebook Open Graph tags to my post permalinks so that my posts look better when shared.\nI say begrudgingly because my posts are already machine-parsable thanks to the Microformats on the page. For example, here's the parsed version of a recent blog post in Microformats JSON\u00a0format, as well as in the cleaned-up JF2 JSON format. It's certainly possible to use that data to generate a rich link preview, but in the mean time, Twitter and Facebook have their own formats using HTML meta tags.\nIn order to generate the tags for my site, I didn't need to add any additional properties to my storage. Generating the tags is straightforward for articles, I use the article name, featured image if set, and generating the summary involves taking the first few sentences of the first paragraph unless there is an explicit summary set.\nFor other kinds of posts it was a little trickier determining what to use. I had to write a little bit of logic to pull the first few words of note posts to use as the OGP title. Some of my posts don't have a \"photo\" property but instead have a map image, so I had to pull that value out explicitly.\nLastly, Twitter has their own set of tags, but will also use the Facebook tags if those are present. The only tag I needed to set on Twitter was telling it which style of card to use, either the large image style or standard. If my post has a featured image, then it will use the large image style, otherwise uses the small one.\nThankfully, Slack will also use the Facebook tags, so my posts will also look better when shared into Slack now too.", "html": "<p>Ever since launching the new version of my website <a href=\"https://aaronparecki.com/2016/01/30/13/\">in 2016</a>, I haven't had the special meta tags that Facebook, Twitter and Slack use for showing the nice preview of links shared. It's been annoying me a bit when I share a link to a blog post that they don't look good there.</p>\n<p>Today I begrudgingly added the Facebook <a href=\"http://ogp.me\">Open Graph</a> tags to my post permalinks so that my posts look better when shared.</p>\n<img src=\"https://aaronparecki.com/2018/01/05/10/image-1.jpg\" alt=\"\" class=\"u-featured\" /><p>I say begrudgingly because my posts are already machine-parsable thanks to the Microformats on the page. For example, here's the parsed version of a recent blog post in <a href=\"https://php.microformats.io/?url=https://aaronparecki.com/2017/12/10/8/payment-request\">Microformats JSON</a>\u00a0format, as well as in the cleaned-up <a href=\"https://xray.p3k.io/parse?url=https%3A%2F%2Faaronparecki.com%2F2017%2F12%2F10%2F8%2Fpayment-request\">JF2 JSON format</a>. It's certainly possible to use that data to generate a rich <a href=\"https://indieweb.org/link-preview\">link preview</a>, but in the mean time, Twitter and Facebook have their own formats using HTML meta tags.</p>\n<p>In order to generate the tags for my site, I didn't need to add any additional properties to my storage. Generating the tags is straightforward for articles, I use the article name, featured image if set, and generating the summary involves taking the first few sentences of the first paragraph unless there is an explicit summary set.</p>\n<p>For other kinds of posts it was a little trickier determining what to use. I had to write a little bit of logic to pull the first few words of note posts to use as the OGP title. Some of my posts don't have a \"photo\" property but instead have a map image, so I had to pull that value out explicitly.</p>\n<p>Lastly, Twitter has their own set of tags, but will also use the Facebook tags if those are present. The only tag I needed to set on Twitter was telling it which style of card to use, either the large image style or standard. If my post has a featured image, then it will use the large image style, otherwise uses the small one.</p>\n<p>Thankfully, Slack will also use the Facebook tags, so my posts will also look better when shared into Slack now too.</p>" }, "author": { "type": "card", "name": "Aaron Parecki", "url": "https://aaronparecki.com/", "photo": "https://aaronparecki.com/images/profile.jpg" }, "_id": "11666", "_source": "16", "_is_read": true }
{ "type": "entry", "published": "2018-01-04T14:40:51-08:00", "url": "https://aaronparecki.com/2018/01/04/6/year-in-review-2017", "category": [ "indieweb", "yearinreview", "2017" ], "name": "My 2017 Year in Review", "content": { "text": "Curious what I was up to in 2017? So am I! Thankfully I developed a pretty regular habit of writing short blog posts any time I finished something, so I have a nice collection of posts to draw from for this year-in-review post!\n\nAside from all the IndieWeb work, I also managed to finish a few unrelated projects!\n\nOAuth 2.0 Simplified Book\n\n\n\nIn August, I released my book, OAuth 2.0 Simplified at Okta's conference in Las Vegas. It is now available in print, as an ePub, for Kindle, and PDF.\n\nBarBot\n\n\n\nIn February, I put the finishing touches on BarBot, my robot that pours drinks for me. It can also import h-recipes to make it easy to add new drinks to the database. I've been using it all year, and it's fantastic.\n\n100 Days of Music\n\nWhile I was doing the #100daysofindieweb project, I was also writing a song every day. These are all published on 100.aaronparecki.com, which was my last #100daysofindieweb project. Since this project wrapped up in March, it's been fun to be able to use these songs in other projects, as well as having other people use them in their own projects!\n\nMy Percolator microcast \nKmikeyM's Fortnightly Business Report\n\nMarty McGuire's This Week in the IndieWeb podcast\nAdam Procter's Fragmentum microcast\nLily's Oh My Dollar podcast and radio show\nWifi Desk Bell\n\n\n\nFor the week leading up to the end of Lily's Kickstarter, I made a desk bell that would ring every time someone pledged.\n\nEvents\n\nI helped run a few events this year:\n\nMay 13-14 IndieWebCamp D\u00fcsseldorf \ud83d\udcf7\n\nMay 20-21 IndieWebCamp N\u00fcrnberg \ud83d\udcf7\n\nWe had a great two IndieWebCamps in Germany in May!\n\nJun 24-25 IndieWeb Summit in Portland \ud83d\udcf7\n\nIndieWeb Summit was a lot of fun this year.\n\nJul 8 Lily's #Spy30 Birthday Scavenger Hunt \ud83d\udcf7\n\n\nLily organized a city-wide spy-themed scavenger hunt for her birthday! I wrote an app we used to have everyone submit their challenges and handle scoring, as well as ran a live GPS shuttle tracker for the karaoke bus, built a fake radio station that played a coded message.\n\nAug 15 #biketheeclipse \n\nI led a small group on a day trip bike ride to reach the totality of the eclipse!\n\nDec 9-10 IndieWebCamp Austin\n\nI was lucky enough to be able to make it out to the first IndieWebCamp in Austin.\n\n\nHomebrew Website Club\n\nDreamHost was kind enough to host our 2017 Homebrew Website Club meetups!\n\nI've continued to film the talks at DonutJS monthly.\nTalks\n\nMy Eight Year Old Bot\n\nIn January, I gave a talk at Google about my IRC Bot, Loqi. It was a slightly updated version of the talk I gave at the XOXO Bots meetup in 2016.\n\nOwning My Quantified Self Data\n\nAt the Quantified Self conference in Amsterdam, I gave a talk about how I keep all my quantified self data on my own website in a place I control.\n\n\n\nMore info and slides\nPosts from June 17\nPublishing Your Podcast\n\nAs part of our new class lineup for StreamPDX, I ran a workshop about how to take your podcast from the final audio file and publish it online. We're running a Podcasting 101 series again in 2018, and I'll be teaching this workshop three more times!\n\nOAuth 2.0 Simplified\n\nIn December I gave a talk about OAuth at the Portland Linux/Unix Group.\n\nMore info and slides\nMy Website\n\nAs part of my 100 Days of IndieWeb challenge, which ran from Dec 2016 through March 2017, I made a lot of progress on my website and other various IndieWeb tools! Here are some of the highlights of things I improved on my own website.\n\nPosting to my website from Alexa\nImproved comment display\n\nShowing full repost content, and automatically fetching reposted content\n\n\nDisplaying reply contexts, and automatically fetching reply context\n\nAudio posts so that I can publish podcast episodes\nRecipe support\nRedirects for old blog posts\nInclude featured photo when syndicating articles\nCreating sleep posts from FitBit import\nMedia Fragment URIs\n\nIndexing my emoji use, and autolinking emoji in posts\n\nLive chat widget\nReplaced my SSL certificates\nFinally got checkins on my site!\nIndicating the audience of posts\n#now page\nPulsing blue dot\nStories\nPayment requests using ApplePay\nShowing full contents of likes\nAutomatically POSSEing likes and reposts\nAdding weather info to posts\nIndieWeb Specs\n\nAs part of my work in the W3C Social Web Working Group, I was involved in writing a few specs as well as tools to help people test their implementations.\n\nWebmention\n\nIn January, Webmention reached the final stage of the standards process at the W3C and became a W3C Recommendation!\n\n\n\nI continued to improve the test suite, adding some tricky edge cases for discovery and redirects.\n\nI also did a big reorganization of the Webmention page on the IndieWeb wiki.\n\nMicropub\n\nMicropub reached Recommendation in May, after the Proposed Recommendation in April. I wrote some about the history of the spec and the standards process.\n\n\n\nI did a lot of work on the test suite, micropub.rocks, over the few months leading up to Recommendation. Since Micropub requires authentication, I had to build an OAuth server into the test suite so that you can sign in to other Micropub clients. I wrote several client tests, including filling out the implementation report automatically, tests for video and audio posts, and tests for updating posts.\n\nWebSub\n\nWebSub was a recent addition to the working group. Formerly known as PubSubHubbub, the group adopted the spec in order to continue refining it, and we decided to give it a new name as well.\n\nWe published the Candidate Recommendation in April, and continued iterating on it over the summer, publishing the Proposed Recommendation in October.\n\nI finished the test suite, websub.rocks in May.\n\nIndieAuth\n\nI finally managed to write up IndieAuth as a spec! Previously it was a series of tutorials on the wiki. I launched the first version of the spec on December 5th, and have been making minor changes since then based on community feedback.\n\nMicrosub\n\nEarly in the year, I drafted a spec intended to allow quicker development of reader applications by offloading feed fetching and parsing to a separate server. I called this spec Microsub. A few months later, I started prototyping out a server, which I've soft-launched as the reincarnation of Monocle. The spec has continued to iterate as I develop my Monocle server and Grant works on the front-end application, Together.\n\nIndieWeb Projects\n\nAgain, thanks to my 100 Days of IndieWeb challenge, I made a lot of progress on a bunch of different IndieWeb projects. Here are some of the highlights, grouped by project.\n\nOwnYourSwarm\n\nI launched OwnYourSwarm in March, including sending person-tags, sending Webmentions for Swarm coins, backfeeding comments and likes, and some documentation. It will even poll your past checkins for photos, and you can also import past checkins. Later in the year, I added a property to indicate when another user checks you in, checked in by.\n\nOwnYourGram\n\nOwnYourGram has been around for a few years, but I made some improvements to it in 2017. You can now whitelist and blacklist terms to control what photos are imported. OwnYourSwarm now sends full h-cards for locations, and finally supports multi-photos.\n\nQuill\n\nI added some new features to Quill, such as the ability to set tags, slug and post status and published date for posts, a better photo upload UI, supporting posting RSVPs, showing the reply context of the thing you're replying to, and cleaned up the HTML that the visual editor creates. I also improved the docs, made some other UI improvements, fixed a JS vulnerability.\n\nXRay\n\nMy work on XRay has continued to be useful in many different other projects. XRay parses contents from other websites and returns the data it finds in a normalized format. I added support for parsing Instagram photos, as well as tweets. I also added support for two new Microformats vocabularies, h-review and h-recipe. I made it easier for others to deploy XRay in various hosting environments. I had to jump through some hoops in order to deploy a Letsencrypt certificate on AppEngine where I run XRay.\n\nMiscellaneous IndieWeb Projects\n\nI published my GPS tracking app in the App Store! I also wrote some documentation for it.\n\nI made a few updates to IndieNews, our community news aggregator. Some small improvements to displaying text in posts, enabling WebSub for IndieNews feeds, added a Webmention form, added support for different timezones per post, and added a calendar view of all stories submitted.\n\nThe Slack/IRC gateway now works across all our channels, and Slack emoji are converted to unicode in IRC. The gateway now also supports image uploads from Slack.\n\nAtlas maps can now have curved lines.\n\nI published a few new libraries used in various projects:\n\nTimezone lookup for a location\nEmoji detection\nI had to make some changes to indieauth.com since Clef shut down. I also used that opportunity to remove SMS logins as it is not the most secure. I also updated the documentation.\n\nThe \"This Week in the IndieWeb\" newsletter now also includes podcasts.\n\nI submitted a PR to Known to improve its Micropub handling.\n\nI added a dashboard to webmention.io so that you can see at a glance the last few Webmentions you've received, as well as delete them if you want.\n\nI started publishing a podcast about my IndieWeb work, called Percolator. I managed to publish 16 episodes from October to December, without much regularity. I hope to continue this in 2018.\n\nI finished a major effort to finally update our MediaWiki to a modern version. Part of this work was also replacing the way authentication is handled, so that it can be used across our other subdomains. This also included archiving plaintext backups of our wiki as well as chat logs in Git repos.\n\nOne of the last things I did was create a set of tiny IndieWeb badges you can use on your site! I added them to the footer of my website as well. There are badges for IndieWebCamp, Webmention and Microformats.\n\nLooking Forward to 2018\n\nOverall I had a pretty full 2017! It felt both busy at times and slow at other times.\n\nI'm already looking forward to IndieWebCamp Baltimore later this month, and I'll begin planning IndieWeb Summit 2018 soon!\n\nSome of my concrete goals for 2018:\n\nFinally settle the indieauth.com naming confusion issue this year\nRun IndieWeb Summit in Portland\nContinue development of my IndieWeb reader, Monocle, as well as the Microsub spec\nLaunch and run the StreamPDX Podcast Fellowship\n\nContinue filming the monthly DonutJS meetups, and expand to cover more meetups as well", "html": "<p>Curious what I was up to in 2017? So am I! Thankfully I developed a pretty regular habit of writing short blog posts any time I finished something, so I have a nice collection of posts to draw from for this year-in-review post!</p>\n\n<p>Aside from all the IndieWeb work, I also managed to finish a few unrelated projects!</p>\n\n<h2>OAuth 2.0 Simplified Book</h2>\n\n<p><a href=\"https://oauth2simplified.com\"><img src=\"https://aaronparecki.com/2018/01/04/6/book-cover-large.jpg\" alt=\"OAuth 2.0 Simplified Now Available\" /></a></p>\n\n<p>In August, I released my book, <a href=\"https://oauth2simplified.com\">OAuth 2.0 Simplified</a> at <a href=\"https://aaronparecki.com/tag/oktane\">Okta's conference</a> in Las Vegas. It is <a href=\"https://oauth2simplified.com\">now available</a> in print, as an ePub, for Kindle, and PDF.</p>\n\n<h2>BarBot</h2>\n\n<p><a href=\"https://aaronparecki.com/tag/barbot\"><img src=\"https://aaronparecki.com/2018/01/04/6/barbot.jpg\" alt=\"BarBot\" /></a></p>\n\n<p>In February, I put the <a href=\"https://aaronparecki.com/2017/02/20/18/barbot\">finishing touches</a> on BarBot, my robot that pours drinks for me. It can also <a href=\"https://aaronparecki.com/2017/02/26/18/day-68-barbot-recipes\">import h-recipes</a> to make it easy to add new drinks to the database. I've been using it all year, and it's fantastic.</p>\n\n<h2>100 Days of Music</h2>\n\n<p>While I was doing the <a href=\"https://aaronparecki.com/tag/100daysofindieweb\">#100daysofindieweb</a> project, I was also writing a song every day. These are all published on <a href=\"https://100.aaronparecki.com\">100.aaronparecki.com</a>, which was <a href=\"https://aaronparecki.com/2017/03/30/10/day-100-website-for-100-days-of-music\">my last #100daysofindieweb project</a>. Since this project wrapped up in March, it's been fun to be able to use these songs in other projects, as well as having other people use them in their own projects!</p>\n\n<ul><li>My <a href=\"https://percolator.today/\">Percolator</a> microcast </li>\n<li>KmikeyM's <a href=\"https://www.youtube.com/watch?v=1DZdtnNXz1k&feature=youtu.be\">Fortnightly Business Report</a>\n</li>\n<li>Marty McGuire's <a href=\"https://martymcgui.re/tag/this-week-indieweb-podcast/\">This Week in the IndieWeb</a> podcast</li>\n<li>Adam Procter's <a href=\"http://fragmentum.adamprocter.co.uk/\">Fragmentum</a> microcast</li>\n<li>Lily's <a href=\"http://www.ohmydollar.com/podcast/\">Oh My Dollar</a> podcast and radio show</li>\n</ul><h2>Wifi Desk Bell</h2>\n\n<p><a href=\"https://aaronparecki.com/2017/11/13/5/kickstarter-desk-bell\"><img src=\"https://aaronparecki.com/2018/01/04/6/kickstarter-pledge-desk-bell.jpg\" alt=\"Kickstarter Desk Bell\" /></a></p>\n\n<p>For the week leading up to the end of <a href=\"https://ohmydollar.com/kickstarter\">Lily's Kickstarter</a>, I <a href=\"https://aaronparecki.com/2017/11/13/5/kickstarter-desk-bell\">made a desk bell</a> that would ring every time someone pledged.</p>\n\n<h2>Events</h2>\n\n<p>I helped run a few events this year:</p>\n\n<ul><li>May 13-14 <a href=\"https://indieweb.org/2017/D%C3%BCsseldorf\">IndieWebCamp D\u00fcsseldorf</a> <a href=\"https://www.flickr.com/photos/tollwerk/albums/72157680685498553\">\ud83d\udcf7</a>\n</li>\n<li>May 20-21 <a href=\"https://indieweb.org/2017/Nuremberg\">IndieWebCamp N\u00fcrnberg</a> <a href=\"https://www.flickr.com/photos/tollwerk/albums/72157684052275085\">\ud83d\udcf7</a>\n\n<ul><li>We had a great two IndieWebCamps in Germany in May!</li>\n</ul></li>\n<li>Jun 24-25 <a href=\"https://indieweb.org/2017\">IndieWeb Summit</a> in Portland <a href=\"https://www.flickr.com/photos/aaronpk/albums/72157683338925261\">\ud83d\udcf7</a>\n\n<ul><li>IndieWeb Summit was <a href=\"https://aaronparecki.com/2017/06/30/11/iws2017-wrap\">a lot of fun this year</a>.</li>\n</ul></li>\n<li>Jul 8 Lily's <a href=\"https://spy30.anomalily.net/scoreboard\">#Spy30</a> Birthday Scavenger Hunt <a href=\"https://www.flickr.com/photos/aaronpk/sets/72157686068134135\">\ud83d\udcf7</a>\n\n<ul><li>\n<a href=\"http://anomalily.net\">Lily</a> organized a city-wide spy-themed scavenger hunt for her birthday! I wrote an app we used to have everyone submit their challenges and handle <a href=\"https://aaronparecki.com/2017/07/08/20/\">scoring</a>, as well as ran a <a href=\"https://aaronparecki.com/2017/07/08/19/\">live GPS shuttle tracker</a> for the <a href=\"https://aaronparecki.com/2018/01/04/8/\">karaoke bus</a>, built a <a href=\"https://twitter.com/thatgirl/status/883776735149400064\">fake radio station</a> that played a coded message.</li>\n</ul></li>\n<li>Aug 15 <a href=\"https://aaronparecki.com/tag/biketheeclipse\">#biketheeclipse</a> \n\n<ul><li>I led a small group on a day trip bike ride to reach the totality of the eclipse!</li>\n</ul></li>\n<li>Dec 9-10 <a href=\"https://indieweb.org/2017/Austin\">IndieWebCamp Austin</a>\n\n<ul><li>I was lucky enough to be able to make it out to the first IndieWebCamp in Austin.</li>\n</ul></li>\n<li>\n<a href=\"https://indieweb.org/hwcpdx\">Homebrew Website Club</a>\n\n<ul><li>DreamHost was kind enough to host our 2017 Homebrew Website Club meetups!</li>\n</ul></li>\n<li>I've continued to <a href=\"https://www.youtube.com/channel/UCnm8RRKV7fuNW82fae_Lv2A\">film the talks at DonutJS</a> monthly.</li>\n</ul><h2>Talks</h2>\n\n<h3>My Eight Year Old Bot</h3>\n\n<p>In January, I gave a talk at Google about my IRC Bot, Loqi. It was a slightly updated version of the talk I gave at the <a href=\"https://aaronparecki.com/2016/09/09/19/bots\">XOXO Bots meetup</a> in 2016.</p>\n\n<h3>Owning My Quantified Self Data</h3>\n\n<p>At the Quantified Self conference in Amsterdam, I gave a talk about how I keep all my quantified self data on my own website in a place I control.</p>\n\n<p><img src=\"https://aaronparecki.com/2018/01/04/6/qs17.jpg\" alt=\"QS17\" /></p>\n\n<ul><li><a href=\"https://aaronparecki.com/2017/06/17/2/\">More info and slides</a></li>\n<li><a href=\"https://aaronparecki.com/2017/06/17/\">Posts from June 17</a></li>\n</ul><h3>Publishing Your Podcast</h3>\n\n<p>As part of our new class lineup for <a href=\"https://streampdx.com\">StreamPDX</a>, I ran a workshop about how to take your podcast from the final audio file and publish it online. We're running a <a href=\"https://streampdx.com/classes\">Podcasting 101</a> series again in 2018, and I'll be teaching this workshop three more times!</p>\n\n<h3>OAuth 2.0 Simplified</h3>\n\n<p>In December I gave a talk about OAuth at the <a href=\"http://pdxlinux.org/\">Portland Linux/Unix Group</a>.</p>\n\n<ul><li><a href=\"https://aaronparecki.com/2017/12/07/3/\">More info and slides</a></li>\n</ul><h2>My Website</h2>\n\n<p>As part of my <a href=\"https://aaronparecki.com/tag/100daysofindieweb\">100 Days of IndieWeb</a> challenge, which ran from Dec 2016 through March 2017, I made a lot of progress on my website and other various IndieWeb tools! Here are some of the highlights of things I improved on my own website.</p>\n\n<ul><li><a href=\"https://aaronparecki.com/2017/01/03/10/day14-alexa-app\">Posting to my website from Alexa</a></li>\n<li><a href=\"https://aaronparecki.com/2017/01/05/6/day-16-comments\">Improved comment display</a></li>\n<li>\n<a href=\"https://aaronparecki.com/2017/01/07/5/day-18-repost-content\">Showing full repost content</a>, and <a href=\"https://aaronparecki.com/2017/01/08/7/day-19-reposts\">automatically fetching reposted content</a>\n</li>\n<li>\n<a href=\"https://aaronparecki.com/2017/01/13/20/day24-reply-context\">Displaying reply contexts</a>, and <a href=\"https://aaronparecki.com/2017/01/14/3/day-25-reply-context\">automatically fetching reply context</a>\n</li>\n<li><a href=\"https://aaronparecki.com/2017/01/18/7/day29-p3k-media-support\">Audio posts so that I can publish podcast episodes</a></li>\n<li><a href=\"https://aaronparecki.com/2017/01/22/8/day-33-recipes\">Recipe support</a></li>\n<li><a href=\"https://aaronparecki.com/2017/01/24/14/day-35-redirects-and-oauth\">Redirects for old blog posts</a></li>\n<li><a href=\"https://aaronparecki.com/2017/01/28/14/day-39-featured-photos\">Include featured photo when syndicating articles</a></li>\n<li><a href=\"https://aaronparecki.com/2017/01/31/8/day-42-fitbit-sleep\">Creating sleep posts from FitBit import</a></li>\n<li><a href=\"https://aaronparecki.com/2017/02/19/4/day-61-media-fragments\">Media Fragment URIs</a></li>\n<li>\n<a href=\"https://aaronparecki.com/2017/02/20/6/day-62-emoji\">Indexing my emoji use</a>, and <a href=\"https://aaronparecki.com/2017/02/21/7/day-63-autolinking-emoji\">autolinking emoji in posts</a>\n</li>\n<li><a href=\"https://aaronparecki.com/2017/03/04/8/day-74-chat-widget\">Live chat widget</a></li>\n<li><a href=\"https://aaronparecki.com/2017/03/10/20/day-80-ssl\">Replaced my SSL certificates</a></li>\n<li><a href=\"https://aaronparecki.com/2017/03/18/14/day-88-checkins\">Finally got checkins on my site!</a></li>\n<li><a href=\"https://aaronparecki.com/2017/03/22/5/day-92-post-audience\">Indicating the audience of posts</a></li>\n<li><a href=\"https://aaronparecki.com/2017/04/27/9/now\">#now page</a></li>\n<li><a href=\"https://aaronparecki.com/2017/05/19/18/still-here\">Pulsing blue dot</a></li>\n<li><a href=\"https://aaronparecki.com/2017/11/05/7/indiewebcamp\">Stories</a></li>\n<li><a href=\"https://aaronparecki.com/2017/12/10/8/payment-request\">Payment requests using ApplePay</a></li>\n<li><a href=\"https://aaronparecki.com/2017/12/22/8/p3k\">Showing full contents of likes</a></li>\n<li><a href=\"https://aaronparecki.com/2017/12/27/15/auto-posse-likes\">Automatically POSSEing likes and reposts</a></li>\n<li><a href=\"https://aaronparecki.com/2017/12/30/10/weather\">Adding weather info to posts</a></li>\n</ul><h2>IndieWeb Specs</h2>\n\n<p>As part of my work in the <a href=\"https://www.w3.org/wiki/Socialwg\">W3C Social Web Working Group</a>, I was involved in writing a few specs as well as tools to help people test their implementations.</p>\n\n<h3>Webmention</h3>\n\n<p>In January, <a href=\"https://www.w3.org/TR/webmention/\">Webmention</a> reached the final stage of the standards process at the W3C and <a href=\"https://aaronparecki.com/2017/01/12/13/webmention-rec\">became a W3C Recommendation</a>!</p>\n\n<p><img src=\"https://aaronparecki.com/2018/01/04/6/webmention.png\" alt=\"Webmention spec\" /></p>\n\n<p>I continued to improve the test suite, adding some tricky edge cases for <a href=\"https://aaronparecki.com/2017/01/23/5/day-34-webmention-rocks\">discovery</a> and <a href=\"https://aaronparecki.com/2017/01/27/13/day-38-webmention-rocks\">redirects</a>.</p>\n\n<p>I also did a <a href=\"https://aaronparecki.com/2017/03/05/21/day-75-webmention\">big reorganization</a> of the <a href=\"https://indieweb.org/Webmention\">Webmention page</a> on the IndieWeb wiki.</p>\n\n<h3>Micropub</h3>\n\n<p><a href=\"https://www.w3.org/TR/micropub/\">Micropub</a> reached Recommendation in May, after the Proposed Recommendation <a href=\"https://www.w3.org/TR/2017/PR-micropub-20170413/\">in April</a>. I wrote some about the <a href=\"https://aaronparecki.com/2017/05/30/1/w3c-micropub\">history of the spec</a> and the standards process.</p>\n\n<a href=\"https://micropub.rocks/\"><img src=\"https://aaronparecki.com/2018/01/04/6/micropub-rocks.png\" alt=\"micropub-rocks.png\" /></a>\n\n<p>I did a lot of work on the test suite, <a href=\"https://micropub.rocks\">micropub.rocks</a>, over the few months leading up to Recommendation. Since Micropub requires authentication, I had to build an <a href=\"https://aaronparecki.com/2017/02/09/18/day-51-micropub-rocks\">OAuth server</a> into the test suite so that you can sign in to other Micropub clients. I wrote <a href=\"https://aaronparecki.com/2017/02/07/13/day-49-micropub-rocks\">several</a> <a href=\"https://aaronparecki.com/2017/02/15/14/day-57-micropub-rocks\">client</a> <a href=\"https://aaronparecki.com/2017/03/06/14/day-76-micropub-rocks-client-tests\">tests</a>, including <a href=\"https://aaronparecki.com/2017/03/07/10/day-77-micropub-rocks\">filling out the implementation report</a> automatically, tests for <a href=\"https://aaronparecki.com/2017/03/21/5/day-91-micropub-rocks\">video and audio posts</a>, and <a href=\"https://aaronparecki.com/2017/03/08/12/day-78-micropub-rocks\">tests for updating posts</a>.</p>\n\n<h3>WebSub</h3>\n\n<p><a href=\"https://www.w3.org/TR/websub/\">WebSub</a> was a recent addition to the working group. Formerly known as PubSubHubbub, the group adopted the spec in order to continue refining it, and we decided to give it a new name as well.</p>\n\n<p>We published the <a href=\"https://www.w3.org/TR/2017/CR-websub-20170411/\">Candidate Recommendation</a> in April, and continued iterating on it over the summer, publishing the <a href=\"https://www.w3.org/TR/2017/PR-websub-20171003/\">Proposed Recommendation</a> in October.</p>\n\n<p>I <a href=\"https://aaronparecki.com/2017/05/09/11/websub\">finished</a> the test suite, <a href=\"https://websub.rocks\">websub.rocks</a> in May.</p>\n\n<h3>IndieAuth</h3>\n\n<p>I finally managed to write up <a href=\"https://indieauth.spec.indieweb.org/\">IndieAuth</a> as a spec! <a href=\"https://aaronparecki.com/2017/03/16/17/day-86-indieauth\">Previously</a> it was a series of tutorials on the wiki. I launched the first version of the spec <a href=\"https://aaronparecki.com/2017/12/05/8/indieauth\">on December 5th</a>, and have been making minor changes since then based on community feedback.</p>\n\n<h3>Microsub</h3>\n\n<p>Early in the year, I drafted a spec intended to allow quicker development of reader applications by offloading feed fetching and parsing to a separate server. I called this spec <a href=\"https://indieweb.org/Microsub-spec\">Microsub</a>. A few months later, I started prototyping out a server, which I've soft-launched as the reincarnation of <a href=\"https://monocle.p3k.io/\">Monocle</a>. The spec has continued to iterate as I develop my Monocle server and Grant works on the front-end application, <a href=\"https://github.com/cleverdevil/together\">Together</a>.</p>\n\n<h2>IndieWeb Projects</h2>\n\n<p>Again, thanks to my <a href=\"https://aaronparecki.com/tag/100daysofindieweb\">100 Days of IndieWeb</a> challenge, I made a lot of progress on a bunch of different IndieWeb projects. Here are some of the highlights, grouped by project.</p>\n\n<h3>OwnYourSwarm</h3>\n\n<p>I <a href=\"https://aaronparecki.com/2017/03/19/7/day-89-ownyourswarm\">launched OwnYourSwarm</a> in March, including sending <a href=\"https://aaronparecki.com/2017/03/20/8/day-90-ownyourswarm\">person-tags</a>, sending <a href=\"https://aaronparecki.com/2017/03/24/9/day-94-ownyourswarm-coins\">Webmentions for Swarm coins</a>, <a href=\"https://aaronparecki.com/2017/03/25/5/day-95-swarm-backfeed\">backfeeding comments and likes</a>, and some <a href=\"https://aaronparecki.com/2017/03/26/8/day-96-ownyourswarm-docs\">documentation</a>. It will even <a href=\"https://aaronparecki.com/2017/03/23/12/day-93-ownyourswarm-photos\">poll your past checkins for photos</a>, and you can also <a href=\"https://aaronparecki.com/2017/03/28/6/day98-ownyourswarm-import\">import past checkins</a>. Later in the year, I added a property to indicate when another user checks you in, <a href=\"https://aaronparecki.com/2017/12/25/5/checked-in-by\">checked in by</a>.</p>\n\n<h3>OwnYourGram</h3>\n\n<p><a href=\"https://ownyourgram.com\">OwnYourGram</a> has been around for a few years, but I made some improvements to it in 2017. You can now <a href=\"https://aaronparecki.com/2017/01/01/6/ownyourgram-blacklist\">whitelist and blacklist</a> terms to control what photos are imported. OwnYourSwarm now sends full <a href=\"https://aaronparecki.com/2017/03/14/8/day-84-ownyourgram\">h-cards for locations</a>, and finally <a href=\"https://aaronparecki.com/2017/09/23/8/ownyourgram-multi-photo\">supports multi-photos</a>.</p>\n\n<h3>Quill</h3>\n\n<p>I added some new features to <a href=\"https://quill.p3k.io\">Quill</a>, such as the ability to set <a href=\"https://aaronparecki.com/2017/01/04/8/day-15-quill\">tags, slug and post status</a> and <a href=\"https://aaronparecki.com/2017/01/15/3/day26-quill\">published date</a> for posts, a better <a href=\"https://aaronparecki.com/2017/02/24/24/day-66-quill\">photo upload UI</a>, supporting posting <a href=\"https://aaronparecki.com/2017/03/13/11/day-83-quill-rsvp\">RSVPs</a>, <a href=\"https://aaronparecki.com/2017/09/25/10/\">showing the reply context</a> of the thing you're replying to, and <a href=\"https://aaronparecki.com/2017/02/02/18/day-44-quill\">cleaned up the HTML</a> that the visual editor creates. I also <a href=\"https://aaronparecki.com/2017/01/06/8/day-17-quill-docs\">improved</a> <a href=\"https://aaronparecki.com/2017/01/19/30/day30-quill\">the</a> <a href=\"https://aaronparecki.com/2017/03/17/16/day-87-quill\">docs</a>, made some other <a href=\"https://aaronparecki.com/2017/02/11/11/day-53-quill\">UI improvements</a>, <a href=\"https://aaronparecki.com/2017/02/12/11/day-54-quill\">fixed a JS vulnerability</a>.</p>\n\n<h3>XRay</h3>\n\n<p>My work on <a href=\"https://github.com/aaronpk/XRay\">XRay</a> has continued to be useful in many different other projects. XRay parses contents from other websites and returns the data it finds in a normalized format. I added support for <a href=\"https://aaronparecki.com/2017/01/09/4/day-20-instagram-for-xray\">parsing Instagram photos</a>, as well as <a href=\"https://aaronparecki.com/2017/01/10/6/day-21-twitter-xray\">tweets</a>. I also added support for two new Microformats vocabularies, <a href=\"https://aaronparecki.com/2017/01/25/14/day-36-xray-hreview\">h-review</a> and <a href=\"https://aaronparecki.com/2017/01/26/6/day-37-recipes\">h-recipe</a>. I made it easier for others <a href=\"https://aaronparecki.com/2017/01/11/8/xray-deploy\">to deploy XRay</a> in various hosting environments. I had to <a href=\"https://aaronparecki.com/2017/03/12/4/day-82-xray\">jump through some hoops</a> in order to deploy a Letsencrypt certificate on AppEngine where I run XRay.</p>\n\n<h3>Miscellaneous IndieWeb Projects</h3>\n\n<p>I <a href=\"https://aaronparecki.com/2017/10/07/4/overland-app\">published my GPS tracking app</a> in the App Store! I also <a href=\"https://aaronparecki.com/2017/02/22/7/day-64-gps-app\">wrote some documentation</a> for it.</p>\n\n<p>I made a few updates to <a href=\"https://news.indieweb.org\">IndieNews</a>, our community news aggregator. Some small <a href=\"https://aaronparecki.com/2017/01/20/13/day-31-indienews\">improvements to displaying text</a> in posts, <a href=\"https://aaronparecki.com/2017/01/21/4/day-32-indienews\">enabling WebSub</a> for IndieNews feeds, added a <a href=\"https://aaronparecki.com/2017/01/30/6/day-41-indienews\">Webmention form</a>, added support for <a href=\"https://aaronparecki.com/2017/02/01/4/day-43-timezones\">different timezones per post</a>, and added a <a href=\"https://aaronparecki.com/2017/12/31/3/indienews\">calendar view</a> of all stories submitted.</p>\n\n<p>The Slack/IRC gateway now <a href=\"https://aaronparecki.com/2017/02/04/8/day-46-slack-irc-gateway\">works across all our channels</a>, and <a href=\"https://aaronparecki.com/2017/02/05/8/day-47-slack-emoji\">Slack emoji are converted to unicode</a> in IRC. The gateway now also <a href=\"https://aaronparecki.com/2017/02/16/5/day-58-slack-images\">supports image uploads from Slack</a>.</p>\n\n<p><a href=\"https://aaronparecki.com/2017/01/02/6/day-13-curved-map-lines\">Atlas maps can now have curved lines</a>.</p>\n\n<p>I published a few new libraries used in various projects:</p>\n\n<ul><li><a href=\"https://aaronparecki.com/2017/01/12/8/day-23-timezone-library\">Timezone lookup for a location</a></li>\n<li><a href=\"https://aaronparecki.com/2017/02/18/12/day-60-emoji-detector\">Emoji detection</a></li>\n</ul><p>I had to <a href=\"https://aaronparecki.com/2017/03/11/22/day-81-indieauth\">make some changes</a> to indieauth.com since Clef shut down. I also used that opportunity to remove SMS logins as it is not the most secure. I also <a href=\"https://aaronparecki.com/2017/03/03/16/day-73-indieauth\">updated the documentation</a>.</p>\n\n<p>The \"This Week in the IndieWeb\" newsletter <a href=\"https://aaronparecki.com/2017/03/15/6/day-85-podcasts\">now also includes podcasts</a>.</p>\n\n<p>I <a href=\"https://aaronparecki.com/2017/03/27/9/day-97-known-micropub-json\">submitted a PR to Known</a> to improve its Micropub handling.</p>\n\n<p>I <a href=\"https://aaronparecki.com/2017/07/19/24/webmention-io\">added a dashboard to webmention.io</a> so that you can see at a glance the last few Webmentions you've received, as well as delete them if you want.</p>\n\n<p>I started publishing a podcast about my IndieWeb work, called <a href=\"https://percolator.today/\">Percolator</a>. I managed to publish 16 episodes from October to December, without much regularity. I hope to continue this in 2018.</p>\n\n<p>I finished a major effort to finally <a href=\"https://aaronparecki.com/2017/12/02/13/wiki-upgrades-and-backups\">update our MediaWiki</a> to a modern version. Part of this work was also replacing the way authentication is handled, so that it can be used across our other subdomains. This also included archiving plaintext backups of <a href=\"https://github.com/indieweb/wiki\">our wiki</a> as well as <a href=\"https://github.com/indieweb/indieweb-chat-archive\">chat logs</a> in Git repos.</p>\n\n<p>One of the last things I did was create a set of tiny <a href=\"https://aaronparecki.com/2017/12/30/7/indieweb-badge\">IndieWeb badges</a> you can use on your site! I added them to the footer of my website as well. There are badges for IndieWebCamp, Webmention and Microformats.</p>\n\n<h2>Looking Forward to 2018</h2>\n\n<p>Overall I had a pretty full 2017! It felt both busy at times and slow at other times.</p>\n\n<p>I'm already looking forward to <a href=\"https://2018.indieweb.org/baltimore\">IndieWebCamp Baltimore</a> later this month, and I'll begin planning IndieWeb Summit 2018 soon!</p>\n\n<p>Some of my concrete goals for 2018:</p>\n\n<ul><li>Finally settle the <a href=\"https://indieweb.org/IndieAuth#naming_confusion\">indieauth.com naming confusion</a> issue this year</li>\n<li>Run <a href=\"https://indieweb.org/2018\">IndieWeb Summit</a> in Portland</li>\n<li>Continue development of my IndieWeb reader, <a href=\"https://monocle.p3k.io\">Monocle</a>, as well as the <a href=\"https://indieweb.org/Microsub\">Microsub</a> spec</li>\n<li>Launch and run the <a href=\"https://streampdx.com/podcast-fellowship\">StreamPDX Podcast Fellowship</a>\n</li>\n<li>Continue filming the monthly <a href=\"http://donutjs.club\">DonutJS</a> meetups, and expand to cover more meetups as well</li>\n</ul>" }, "author": { "type": "card", "name": "Aaron Parecki", "url": "https://aaronparecki.com/", "photo": "https://aaronparecki.com/images/profile.jpg" }, "_id": "11668", "_source": "16", "_is_read": true }
{ "type": "entry", "published": "2018-01-02T22:15:22+0000", "url": "http://www.funwhilelost.com/2018/this-is-my-favorite-new-years-resolution-bring-back-your", "category": [ "indieweb" ], "in-reply-to": [ "http://mashable.com/2017/12/27/browser-bar-url-facebook-bad" ], "content": { "text": "This is my favorite new years resolution: Bring back your browser bar http://mashable.com/2017/12/27/browser-bar-url-facebook-bad/#k08SwFZ85mqa #indieweb", "html": "This is my favorite new years resolution: Bring back your browser bar <a href=\"http://mashable.com/2017/12/27/browser-bar-url-facebook-bad/#k08SwFZ85mqa\">http://mashable.com/2017/12/27/browser-bar-url-facebook-bad/#k08SwFZ85mqa</a> <a href=\"http://www.funwhilelost.com/tag/indieweb\" class=\"p-category\">#indieweb</a>" }, "author": { "type": "card", "name": "Andrew Jacobs", "url": "http://www.funwhilelost.com/profile/funwhilelost", "photo": "http://www.funwhilelost.com/file/fa79187640f271e6a8584ac106c82f5e/thumb.jpg" }, "_id": "123919", "_source": "232", "_is_read": true }
{ "type": "entry", "published": "2018-01-02T18:36:09+00:00", "url": "https://cleverdevil.io/2018/this-is-great-id-love-to-see-evergreen_mac-support-the", "category": [ "IndieWeb" ], "syndication": [ "https://twitter.com/cleverdevil/status/948261649265328128" ], "content": { "text": "This is great! I'd love to see @evergreen_mac support the broader #IndieWeb via Micropub and Microsub! We're doing that in Together \u2013 https://github.com/cleverdevil/together \u2013 but would love a native macOS alternative. Excited for @evergreen_mac!\n\nhttps://twitter.com/evergreen_mac/status/947562202730344448", "html": "This is great! I'd love to see @evergreen_mac support the broader <a href=\"https://cleverdevil.io/tag/IndieWeb\" class=\"p-category\">#IndieWeb</a> via Micropub and Microsub! We're doing that in Together \u2013 <a href=\"https://github.com/cleverdevil/together\">https://github.com/cleverdevil/together</a> \u2013 but would love a native macOS alternative. Excited for @evergreen_mac!<a href=\"https://twitter.com/evergreen_mac/status/947562202730344448\">https://twitter.com/evergreen_mac/status/947562202730344448</a>" }, "author": { "type": "card", "name": "Jonathan LaCour", "url": "https://cleverdevil.io/profile/cleverdevil", "photo": "https://cleverdevil.io/file/2fa19f964fb8970faaf20b909c69d6cb/thumb.png" }, "_id": "10513", "_source": "71", "_is_read": true }
{ "type": "entry", "url": "https://snarfed.org/2018-01-02_bridgy-stats-update-3", "name": "Bridgy stats update", "content": { "text": "A new year means new Bridgy stats. Perfect timing, too, since we\u2019re just about to hit 1 million webmentions!\nLet\u2019s go to the numbers. Since launch in December 2013: 4300 users, 940k webmentions sent successfully to >1500 unique domains, 9.5M responses handled (likes, comments etc), 26K POSSEs published, total cost ~$.02/user/month (up from ~$.01 18 months ago).\nData,\nmethodology,\npreviously,\npreviously,\npreviously.", "html": "<p>A new year means new <a href=\"https://brid.gy/\">Bridgy</a> stats. Perfect timing, too, since we\u2019re just about to hit <a href=\"https://snarfed.org/1-million-webmentions\">1 million webmentions!</a></p>\n<p>Let\u2019s go to the numbers. Since <a href=\"https://snarfed.org/2013-12-09_brid-gy-meet-webmentions\">launch in December 2013</a>: 4300 users, 940k <a href=\"http://webmention.net/\">webmentions</a> sent successfully to >1500 unique domains, 9.5M responses handled (likes, comments etc), 26K <a href=\"https://indiewebcamp.com/POSSE\">POSSE</a>s published, total cost ~$.02/user/month (up from ~$.01 18 months ago).</p>\n<p><a href=\"https://docs.google.com/spreadsheets/d/1VhGiZ9Z9PEl7f9ciiVZZgupNcUTsRVltQ8_CqFETpfU/edit\">Data</a>,\n<a href=\"https://github.com/snarfed/bridgy#stats\">methodology</a>,\n<a href=\"https://snarfed.org/2016-06-06_bridgy-stats-update-2\">previously</a>,\n<a href=\"https://snarfed.org/2015-12-07_bridgy-stats-update\">previously</a>,\n<a href=\"https://snarfed.org/2014-11-06_happy-1000th-bridgy\">previously</a>.</p>\n<p style=\"margin-left:0px;margin-right:-10px;\">\n <a href=\"https://snarfed.org/bridgy_stats/2018/costs_vs_users.png\">\n <img class=\"u-photo\" src=\"https://snarfed.org/bridgy_stats/2018/costs_vs_users_thumb.png\" alt=\"costs_vs_users_thumb.png\" /></a></p>\n\n<p style=\"margin-right:0px;\">\n <a href=\"https://snarfed.org/bridgy_stats/2018/features.png\">\n <img class=\"u-photo\" src=\"https://snarfed.org/bridgy_stats/2018/features_thumb.png\" alt=\"features_thumb.png\" /></a></p>\n\n<p style=\"margin-left:0px;margin-right:-10px;\">\n <a href=\"https://snarfed.org/bridgy_stats/2018/accounts_stacked.png\">\n <img class=\"u-photo\" src=\"https://snarfed.org/bridgy_stats/2018/accounts_stacked_thumb.png\" alt=\"accounts_stacked_thumb.png\" /></a>\n</p>\n<p style=\"margin-right:0px;\">\n <a href=\"https://snarfed.org/bridgy_stats/2018/accounts.png\">\n <img class=\"u-photo\" src=\"https://snarfed.org/bridgy_stats/2018/accounts_thumb.png\" alt=\"accounts_thumb.png\" /></a></p>\n\n<p style=\"margin-left:0px;margin-right:-10px;\">\n <a href=\"https://snarfed.org/bridgy_stats/2018/activity.png\">\n <img class=\"u-photo\" src=\"https://snarfed.org/bridgy_stats/2018/activity_thumb.png\" alt=\"activity_thumb.png\" /></a>\n</p>\n<p style=\"margin-right:0px;\">\n <a href=\"https://snarfed.org/bridgy_stats/2018/webmentions.png\">\n <img class=\"u-photo\" src=\"https://snarfed.org/bridgy_stats/2018/webmentions_thumb.png\" alt=\"webmentions_thumb.png\" /></a>\n</p>\n<p><br /></p>\n<ul><li><a class=\"u-syndication\" href=\"https://news.indieweb.org/en/snarfed.org/2018-01-02_bridgy-stats-update-3\"> </a></li></ul>" }, "author": { "type": "card", "name": "Ryan Barrett", "url": "https://snarfed.org/", "photo": "https://secure.gravatar.com/avatar/947b5f3f323da0ef785b6f02d9c265d6?s=96&d=blank&r=g" }, "_id": "9206", "_source": "3", "_is_read": true }
{ "type": "entry", "published": "2018-01-01T12:29:49Z", "url": "https://adactio.com/journal/13257", "category": [ "2017", "writing", "publishing", "blogging", "indieweb", "words" ], "syndication": [ "https://medium.com/@adactio/212162cad7bd" ], "name": "Words I wrote in 2017", "content": { "text": "I wrote 78 blog posts in 2017. That works out at an average of six and a half blog posts per month. I\u2019ll take it. \n\nHere are some pieces of writing from 2017 that I\u2019m relatively happy with: \n\nGoing Rogue. A look at the ethical questions raised by Rogue One \n\nIn AMP we trust. My unease with Google\u2019s AMP format was growing by the day. \n\nA minority report on artificial intelligence. Revisiting two of Spielberg\u2019s films after a decade and a half. \n\nProgressing the web. I really don\u2019t want progressive web apps to just try to imitate native apps. They can be so much more. \n\nCSS. Simple, yes, but not easy. \n\nIntolerable. A screed. I still get very, very angry when I think about how that manifestbro duped people. \n\n\u0410\u043a\u0443\u043b\u0430. Recounting a story told by a taxi driver. \n\nHooked and booked. Does A/B testing lead to dark patterns? \n\nUbiquity and consistency. Different approaches to building on the web. \n\nI hope there\u2019s something in there that you like. It always a nice bonus when other people like something I\u2019ve written, but I write for myself first and foremost. Writing is how I figure out what I think. I will, of course, continue to write and publish on my website in 2018. I\u2019d really like it if you did the same.", "html": "<p>I wrote <a href=\"https://adactio.com/journal/archive/2017\">78 blog posts in 2017</a>. That works out at an average of six and a half blog posts per month. I\u2019ll take it.</p>\n\n<p>Here are some pieces of writing from 2017 that I\u2019m relatively happy with:</p>\n\n<p><a href=\"https://adactio.com/journal/11702\">Going Rogue</a>. A look at the ethical questions raised by Rogue One</p>\n\n<p><a href=\"https://adactio.com/journal/12011\">In AMP we trust</a>. My unease with Google\u2019s AMP format was growing by the day.</p>\n\n<p><a href=\"https://adactio.com/journal/12230\">A minority report on artificial intelligence</a>. Revisiting two of Spielberg\u2019s films after a decade and a half.</p>\n\n<p><a href=\"https://adactio.com/journal/12461\">Progressing the web</a>. I really don\u2019t want progressive web apps to just try to imitate native apps. They can be so much more.</p>\n\n<p><a href=\"https://adactio.com/journal/12571\">CSS</a>. Simple, yes, but not easy.</p>\n\n<p><a href=\"https://adactio.com/journal/12658\">Intolerable</a>. A screed. I still get very, very angry when I think about how that manifestbro duped people.</p>\n\n<p><a href=\"https://adactio.com/journal/12898\">\u0410\u043a\u0443\u043b\u0430</a>. Recounting a story told by a taxi driver.</p>\n\n<p><a href=\"https://adactio.com/journal/13109\">Hooked and booked</a>. Does A/B testing lead to dark patterns?</p>\n\n<p><a href=\"https://adactio.com/journal/13229\">Ubiquity and consistency</a>. Different approaches to building on the web.</p>\n\n<p>I hope there\u2019s something in there that you like. It always a nice bonus when other people like something I\u2019ve written, but I write for myself first and foremost. Writing is how I figure out what I think. I will, of course, continue to write and publish on my website in 2018. I\u2019d really like it if you did the same.</p>" }, "_id": "8997", "_source": "2", "_is_read": true }
{ "type": "entry", "published": "2017-12-31T18:45:35-08:00", "url": "https://aaronparecki.com/2017/12/31/11/2017-in-numbers", "category": [ "2017", "indieweb", "qs", "quantifiedself", "annualreport", "stats" ], "name": "2017 in Numbers", "content": { "text": "Transportation \nMy 2017 Transportation Stats \n Overall, I traveled a little less in 2017 compared to 2016. My biking was down (I no longer commute downtown every day), but train travel was up, since I now live next to a MAX stop. I biked a total of 1,149 miles in 2017, down from 1,529 in 2016. I flew 44,796 miles in 2017, down from 55,271 in 2016. I spent only a little more time in cars this year, my least-used mode of transport other than walking. Car trips include me driving a car2go (very rarely), getting a ride in someone else's car, as well as taxis and Lyft rides. Sadly my bike mileage was just shy of 2x my car mileage, so perhaps I should make it my 2018 goal to double my car mileage on bikes.\n \n \nWhile my plane trips dominate in mileage, the time spent in each mode tells a very different story. \n I spent more time on my bicycle than any other mode of transport! 126 hours on bikes, and the next highest mode is 101 hours on planes. \nBeverages \nMy 2017 Beverage Consumption My beverage consumption was split almost 50/50 between alcoholic and caffeinated beverages, with very little of anything else. (I don't track my plain water consumption because I drink way too much water to track it easily.) Out of 1,794 beverages consumed, only 5.7% were non-caffeinated and non-alcoholic. \nMy top drinks of 2017 were: Americano (coffee), Beer, Coffee, and the Boulevardier cocktail. \n Overall, I tracked 16 different types of coffee, and 24 named cocktails. I lump specialty cocktails together and track them just as \"Cocktail\" otherwise it would take too long to enter all the data. \nMy cocktail of choice this year was apparently the Boulevardier, followed by the Negroni. I will also note that the Vieux Carr\u00e9 is way up there, which is notable because that is one that I don't make at home, I only have it at Imperial in Downtown Portland. It's $5 during happy hour so it's hard to pass up! \nHow I Collect This Data \n\n All this data is collected by my own tools and stored in my website. You can see the individual entries for each bike ride, walk, and other transport, as well as everything I eat and drink.\n \n \nFor tracking food, I use a web app, Teacup, which I bookmark to my phone's home screen. The interface prompts me with the most often used food and drink, and I can also type in new values if I need to. \nTeacup Prompt for Drinks For my trip tracking, I use my GPS tracking app, Overland, which I recently published to the iOS App Store! It's a pretty barebones app, but it works well. \nOverland for iOS It tracks my location all the time, which is used to geotag all my posts, as well as provide the weather information for the posts. It also lets me choose a mode of transport and start tracking a trip. Overland first sends the data to my Compass database, which then sends trips to my server which adds a map image and stores it on disk. Later I can query the server to find all the trip and the time/distance for each.", "html": "<h3>Transportation</h3>\n<img src=\"https://aaronparecki.com/2017/12/31/11/image-1.png\" alt=\"\" />My 2017 Transportation Stats<p>\n Overall, I traveled a little less in 2017 compared to 2016. My biking was down (I no longer commute downtown every day), but train travel was up, since I now live next to a MAX stop. I biked a total of <b>1,149 miles </b>in 2017, down from 1,529 in 2016. I flew 44,796 miles in 2017, down from 55,271 in 2016. I spent only a little more time in cars this year, my least-used mode of transport other than walking. Car trips include me driving a car2go (very rarely), getting a ride in someone else's car, as well as taxis and Lyft rides. Sadly my bike mileage was just shy of 2x my car mileage, so perhaps I should make it my 2018 goal to double my car mileage on bikes.\n </p>\n<p>While my plane trips dominate in mileage, the time spent in each mode tells a very different story.\u00a0</p>\n<img src=\"https://aaronparecki.com/2017/12/31/11/image-2.png\" alt=\"\" class=\"u-featured\" /><p><b>I spent more time on my bicycle than any other mode of transport! </b>126 hours on bikes, and the next highest mode is 101 hours on planes.\u00a0</p>\n<h3>Beverages</h3>\n<img src=\"https://aaronparecki.com/2017/12/31/11/image-3.png\" alt=\"\" />My 2017 Beverage Consumption<p>My beverage consumption was split almost 50/50 between alcoholic and caffeinated beverages, with very little of anything else. (I don't track my plain water consumption because I drink way too much water to track it easily.) Out of 1,794 beverages consumed, only 5.7% were non-caffeinated and non-alcoholic.\u00a0</p>\n<p>My top drinks of 2017 were: Americano (coffee), Beer, Coffee, and the <a href=\"https://makeitperfectly.com/drink/recipes/19f5c590-6ba2-11e5-b0db-97ade596895d\">Boulevardier</a> cocktail.</p>\n<img src=\"https://aaronparecki.com/2017/12/31/11/image-4.png\" alt=\"\" /><p>Overall, I tracked 16 different types of coffee, and 24 named cocktails. I lump specialty cocktails together and track them just as \"Cocktail\" otherwise it would take too long to enter all the data.</p>\n<p>My cocktail of choice this year was apparently the Boulevardier, followed by the Negroni. I will also note that the Vieux Carr\u00e9 is way up there, which is notable because that is one that I don't make at home, I only have it at <a href=\"http://www.imperialpdx.com/\">Imperial</a> in Downtown Portland. It's $5 during happy hour so it's hard to pass up!</p>\n<h3>How I Collect This Data</h3>\n<p>\n All this data is collected by my own tools and stored in my website. You can see the individual entries for each <a href=\"https://aaronparecki.com/rides\">bike ride</a>, <a href=\"https://aaronparecki.com/walks\">walk</a>, and <a href=\"https://aaronparecki.com/transport\">other transport</a>, as well as everything I <a href=\"https://aaronparecki.com/ate\">eat</a> and <a href=\"https://aaronparecki.com/drank\">drink</a>.\n </p>\n<p>For tracking food, I use a web app, <a href=\"https://teacup.p3k.io/\">Teacup</a>, which I bookmark to my phone's home screen. The interface prompts me with the most often used food and drink, and I can also type in new values if I need to.</p>\n<img src=\"https://aaronparecki.com/2017/12/31/11/image-5.png\" alt=\"\" />Teacup Prompt for Drinks<p>For my trip tracking, I use my GPS tracking app, <a href=\"https://overland.p3k.io/\">Overland</a>, which I recently published to the iOS App Store! It's a pretty barebones app, but it works well.\u00a0</p>\n<img src=\"https://aaronparecki.com/2017/12/31/11/image-6.png\" alt=\"\" /><a href=\"https://overland.p3k.io/\">Overland for iOS</a><p>It <a href=\"https://aaronparecki.com/gps/\">tracks my location</a> all the time, which is used to geotag all my posts, as well as provide the <a href=\"https://aaronparecki.com/2017/12/30/10/weather\">weather</a> information for the posts. It also lets me choose a mode of transport and start tracking a trip. Overland first sends the data to my <a href=\"https://github.com/aaronpk/Compass\">Compass database</a>, which then sends trips to my server which adds a map image and stores it on disk. Later I can query the server to find all the trip and the time/distance for each.</p>" }, "author": { "type": "card", "name": "Aaron Parecki", "url": "https://aaronparecki.com/", "photo": "https://aaronparecki.com/images/profile.jpg" }, "_id": "11680", "_source": "16", "_is_read": true }
{ "type": "entry", "published": "2017-12-31T10:19:11-08:00", "url": "https://aaronparecki.com/2017/12/31/3/indienews", "category": [ "indieweb", "indiewebchallenge", "indienews" ], "photo": [ "https://aaronparecki.com/2017/12/31/3/photo.png" ], "syndication": [ "https://news.indieweb.org/en/aaronparecki.com/2017/12/31/3/indienews" ], "content": { "text": "Just pushed some updates to IndieNews! Notes like this one, (posts with no name) will now be displayed better, hopefully encouraging people to post more short stuff instead of just blog posts. \n\nThere is also a calendar view for posts, similar to the calendar on https://indieweb.org/2017-12-indieweb-challenge Thanks to @sknebel for the idea! I didn't link to the calendar permalinks from the UI yet, but you can browse to them with URLs like this: https://news.indieweb.org/en/2017/12\n\nI also fixed an issue where the content and name of posts was not being truncated, which caused a minor IRC flood this morning due to a Microformats implied name containing an entire blog post being sent to IRC.", "html": "Just pushed some updates to IndieNews! Notes like this one, (posts with no name) will now be displayed better, hopefully encouraging people to post more short stuff instead of just blog posts. \n\nThere is also a calendar view for posts, similar to the calendar on <a href=\"https://indieweb.org/2017-12-indieweb-challenge\">https://indieweb.org/2017-12-indieweb-challenge</a> Thanks to <a href=\"https://www.svenknebel.de/\">@sknebel</a> for the idea! I didn't link to the calendar permalinks from the UI yet, but you can browse to them with URLs like this: <a href=\"https://news.indieweb.org/en/2017/12\">https://news.indieweb.org/en/2017/12</a>\n\nI also fixed an issue where the content and name of posts was not being truncated, which caused a minor IRC flood this morning due to a Microformats implied name containing an entire blog post being sent to IRC." }, "author": { "type": "card", "name": "Aaron Parecki", "url": "https://aaronparecki.com/", "photo": "https://aaronparecki.com/images/profile.jpg" }, "_id": "11681", "_source": "16", "_is_read": true }
{ "type": "entry", "published": "2017-12-30T20:15:08-08:00", "url": "https://aaronparecki.com/2017/12/30/10/weather", "category": [ "indieweb", "newwwyear", "weather" ], "name": "Adding Weather to my Posts!", "content": { "text": "I'm super happy to be able to add myself to the list of people who publish weather info in their posts! \nI've had a long-standing goal to include weather info on all of my posts on my site! In fact, I actually started collecting historical weather info just so that I could backfill the data on my site once I added the feature. The weather database I've been collecting goes back to 2012! I decided it's been long enough and bit the bullet and sat down to finally knock it out. \nI've had the current weather up in my website header since 2016, and it turns out that I was able to reuse a lot of that existing code. \nToday I finally added support for storing weather info per post, and adding it when new posts are created. The weather is based on my current location, which I've already been automatically including in my posts for a long time. So now, when a new post is created, if the cached weather info that is shown in the header is recent enough, it bakes it into the post's storage file. \nNow my posts will all have little weather icons and the current temperature! \n I decided on using an icon font for the weather icons so that they are all visually consistent and inline with the text. The icon set I'm using is http://erikflowers.github.io/weather-icons/ The weather info itself comes from Wunderground, although I may switch to Dark Sky in the future since they have a higher per-day API limit. \nI also decided to put the weather info on the same line as the location name, since I feel like this information very closely linked to the location. (It's also stored in the location property internally.) \nI'm pretty excited to finally have this done, just in time for all my posts in 2018 to be weather-tagged! \nI'm postponing the work of backfilling all my past posts since that is going to take quite a bit of effort. I'll add it to the ever-growing list of old data to import to my site! \ud83d\ude02", "html": "<p>I'm super happy to be able to add myself to the <a href=\"https://indieweb.org/weather#IndieWeb_Examples\">list of people</a> who publish weather info in their posts!</p>\n<p>I've had a long-standing goal to include weather info on all of my posts on my site! In fact, I actually started collecting historical weather info just so that I could backfill the data on my site once I added the feature. The weather database I've been collecting goes back to 2012! I decided it's been long enough and bit the bullet and sat down to finally knock it out.</p>\n<p>I've had the current weather up in my website header since 2016, and it turns out that I was able to reuse a lot of that existing code.</p>\n<p>Today I finally added support for storing weather info per post, and adding it when new posts are created. The weather is based on my current location, which I've already been automatically <a href=\"https://aaronparecki.com/gps/\">including in my posts</a> for a long time. So now, when a new post is created, if the cached weather info that is shown in the header is recent enough, it bakes it into the post's storage file.</p>\n<p>Now my posts will all have little weather icons and the current temperature!</p>\n<img src=\"https://aaronparecki.com/2017/12/30/10/image-1.png\" alt=\"\" /><p>I decided on using an icon font for the weather icons so that they are all visually consistent and inline with the text. The icon set I'm using is\u00a0<a href=\"http://erikflowers.github.io/weather-icons/\">http://erikflowers.github.io/weather-icons/</a>\u00a0The weather info itself comes from Wunderground, although I may switch to Dark Sky in the future since they have a higher per-day API limit.</p>\n<p>I also decided to put the weather info on the same line as the location name, since I feel like this information very closely linked to the location. (It's also stored in the location property internally.)\u00a0</p>\n<p>I'm pretty excited to finally have this done, just in time for all my posts in 2018 to be weather-tagged!\u00a0</p>\n<p>I'm postponing the work of backfilling all my past posts since that is going to take quite a bit of effort. I'll add it to the ever-growing list of old data to import to my site! \ud83d\ude02</p>" }, "author": { "type": "card", "name": "Aaron Parecki", "url": "https://aaronparecki.com/", "photo": "https://aaronparecki.com/images/profile.jpg" }, "_id": "11682", "_source": "16", "_is_read": true }
{ "type": "entry", "published": "2017-12-30T17:47:53-05:00", "summary": "I made a goal of adding weather to my site by January 1st, 2018. Today, I\u2019m happy to announce that I completed that goal. Here\u2019s what it looks like:", "url": "https://eddiehinkle.com/2017/12/30/20/article/", "category": [ "indieweb", "indieweb-goals" ], "name": "Adding weather to my site", "author": { "type": "card", "name": "Eddie Hinkle", "url": "https://eddiehinkle.com", "photo": null }, "_id": "9543", "_source": "39", "_is_read": true }
{ "type": "entry", "author": { "name": null, "url": "https://strugee.net/blog/", "photo": null }, "url": "https://strugee.net/blog/2017/12/announcing-lazymention-elegant-outbound-webmention-for-static-sites", "published": "2017-12-29T18:52:04+00:00", "content": { "html": "<p>Last night I hit publish on version 1.0.0 of a new project, <a href=\"https://github.com/strugee/lazymention\">lazymention</a>! Whoohoo!</p>\n<p>tl;dr: lazymention exists to add Webmention support to static sites!</p>\n<p>To elaborate a little bit, I developed lazymention because I had a problem with this site: I wanted to send outbound <a href=\"https://indieweb.org/Webmention\">Webmentions</a> when I link to things, but my website is completely static. (Webmention, in case you didn't know, is a way to notify another website that you linked to them, so the other website can display some UI about your reply or whatever.) The page builds happen on my local machine, not on the server. One option would be to just send Webmentions from my local machine too, but this isn't really a good solution for a couple reasons. First, I couldn't do it automatically at build-time because the built pages wouldn't have been deployed to the server yet, so receivers of my Webmentions would reject the mentions due to the source being nonexistant. That meant that I would have to have a separate step, which wouldn't really be <em>that</em> big of a deal (lazymention reqires pinging a server too) except for the second reason: I would need some way to keep track of where I'd already sent Webmentions to, and that would require synchronizing across computers. Probably the only decent way to do that would be to check it into Git, but having a program's data store checked in right next to the source code just feels kinda ugly. Plus, then it can't be shared with other people as a service.</p>\n<p>So instead of doing it locally, I elected to build a server instead. Here's how it works: you mark up your stuff with <a href=\"https://indieweb.org/h-feed\"><code>h-feed</code></a> and <a href=\"https://indieweb.org/h-entry\"><code>h-entry</code></a>, and whenever anything happens (e.g. you publish a new blog post or whatever), you ping lazymention with the URL (either the feed or the post itself). lazymention will use your microformats2 markup to find the canonical location for a given post, then it will find all the links in the post and send Webmentions for them. And presto! You've just sent Webmentions for your blog. lazymention also records when it's sent mentions, so if you ping it again, nothing will happen unless you've updated your content. I'm also planning to add <a href=\"https://indieweb.org/WebSub\">WebSub</a> support to lazymention, too, and that'll work in the exact same way.</p>\n<p>lazymention is super easy to get started with, especially because I've provided thorough documentation in the <a href=\"https://github.com/strugee/lazymention/blob/master/README.md\">README</a>. If you find anything that's confusing or missing, please let me know by <a href=\"https://github.com/strugee/lazymention/issues/new\">filing an issue</a>! I'd love to get it fixed. In fact, I'd be thrilled to hear about both positive <em>and</em> negative installation experiences.</p>\n<p>Oh, and one more thing - lazymention is reusable in other applications. If you're writing a Node.js app and want to reuse its HTTP API, you can use its embedding API to get at the Express application and <code>Router</code> used internally. I'm not sure if people will actually find this useful, but I wrote it just for kicks anyway. See <a href=\"https://github.com/strugee/lazymention/blob/master/README.md#embedding\">the embedding documentation</a> for more!</p>\n<p>Cheers, and happy mentioning! Elegant outbound Webmention for static sites is here.</p>", "text": "Last night I hit publish on version 1.0.0 of a new project, lazymention! Whoohoo!\ntl;dr: lazymention exists to add Webmention support to static sites!\nTo elaborate a little bit, I developed lazymention because I had a problem with this site: I wanted to send outbound Webmentions when I link to things, but my website is completely static. (Webmention, in case you didn't know, is a way to notify another website that you linked to them, so the other website can display some UI about your reply or whatever.) The page builds happen on my local machine, not on the server. One option would be to just send Webmentions from my local machine too, but this isn't really a good solution for a couple reasons. First, I couldn't do it automatically at build-time because the built pages wouldn't have been deployed to the server yet, so receivers of my Webmentions would reject the mentions due to the source being nonexistant. That meant that I would have to have a separate step, which wouldn't really be that big of a deal (lazymention reqires pinging a server too) except for the second reason: I would need some way to keep track of where I'd already sent Webmentions to, and that would require synchronizing across computers. Probably the only decent way to do that would be to check it into Git, but having a program's data store checked in right next to the source code just feels kinda ugly. Plus, then it can't be shared with other people as a service.\nSo instead of doing it locally, I elected to build a server instead. Here's how it works: you mark up your stuff with h-feed and h-entry, and whenever anything happens (e.g. you publish a new blog post or whatever), you ping lazymention with the URL (either the feed or the post itself). lazymention will use your microformats2 markup to find the canonical location for a given post, then it will find all the links in the post and send Webmentions for them. And presto! You've just sent Webmentions for your blog. lazymention also records when it's sent mentions, so if you ping it again, nothing will happen unless you've updated your content. I'm also planning to add WebSub support to lazymention, too, and that'll work in the exact same way.\nlazymention is super easy to get started with, especially because I've provided thorough documentation in the README. If you find anything that's confusing or missing, please let me know by filing an issue! I'd love to get it fixed. In fact, I'd be thrilled to hear about both positive and negative installation experiences.\nOh, and one more thing - lazymention is reusable in other applications. If you're writing a Node.js app and want to reuse its HTTP API, you can use its embedding API to get at the Express application and Router used internally. I'm not sure if people will actually find this useful, but I wrote it just for kicks anyway. See the embedding documentation for more!\nCheers, and happy mentioning! Elegant outbound Webmention for static sites is here." }, "name": "Announcing lazymention: elegant outbound Webmention for static sites", "_id": "123840", "_source": "227", "_is_read": true }
Three technologies that Ada is excited about:
{ "type": "entry", "published": "2017-12-29T11:29:45Z", "url": "https://adactio.com/links/13247", "category": [ "technology", "frontend", "development", "indieauth", "comlink", "apis", "webcomponents" ], "bookmark-of": [ "https://medium.com/samsung-internet-dev/raindrops-on-roses-whiskers-on-kittens-declarative-web-apis-and-truly-serverless-web-endpoints-50d733e6d867" ], "content": { "text": "Raindrops on roses, whiskers on kittens, declarative web APIs and truly serverless web endpoints\n\n \n\nThree technologies that Ada is excited about: \n\na service: IndieAuth, \na front end library: Comlink, \na pattern: APIs as Web Components.", "html": "<h3>\n<a class=\"p-name u-bookmark-of\" href=\"https://medium.com/samsung-internet-dev/raindrops-on-roses-whiskers-on-kittens-declarative-web-apis-and-truly-serverless-web-endpoints-50d733e6d867\">\nRaindrops on roses, whiskers on kittens, declarative web APIs and truly serverless web endpoints\n</a>\n</h3>\n\n<p>Three technologies that Ada is excited about:</p>\n\n<ol><li>a service: IndieAuth,</li>\n<li>a front end library: Comlink,</li>\n<li>a pattern: APIs as Web Components.</li>\n</ol>" }, "_id": "8377", "_source": "2", "_is_read": true }
Dunstan is back, blogging again. Hurrah!
{ "type": "entry", "published": "2017-12-29T11:20:18Z", "url": "https://adactio.com/links/13246", "category": [ "blogging", "blogs", "indieweb", "personal", "publishing" ], "bookmark-of": [ "https://dunstanorchard.com/" ], "content": { "text": "Dunstan\u2019s blog\n\n \n\nDunstan is back, blogging again. Hurrah!", "html": "<h3>\n<a class=\"p-name u-bookmark-of\" href=\"https://dunstanorchard.com/\">\nDunstan\u2019s blog\n</a>\n</h3>\n\n<p>Dunstan is back, blogging again. Hurrah!</p>" }, "_id": "8378", "_source": "2", "_is_read": true }
{ "type": "entry", "published": "2017-12-27T20:25:53-05:00", "url": "https://david.shanske.com/2017/12/27/thinking-homepage-mentions/", "syndication": [ "https://www.facebook.com/100002356503167/posts/1556381637783705", "https://twitter.com/dshanske/status/946190463857512450" ], "name": "Thinking of Homepage Mentions", "content": { "text": "Going to get a bit technical. This is your only warning.\nOne of the challenges I have been looking at has actually come because of others. Now, if you\u2019ve been looking at my website, you might notice that, thanks to the efforts of myself, Matthias Pfefferle, and Ryan Barrett that there have been major improvements to the presentation of different types of responses on my site. I have a screenshot of the replies on a recent post.\nFacepiles, the row of faces representing people who \u2018liked\u2019 or what have you, was actually the first project I tackled when I joined the Indieweb community back in 2014. I\u2019ve learned a lot since then.\nEither way, the current work not only builds on what I\u2019ve learned, but the contributions by Ryan, who really wanted this feature available, really jumpstarted things. Now, all of these people below don\u2019t know they commented on my site\u2026as they commented elsewhere and I pulled it back to my site via webmention.\nSo, it brings me to a new problem I want to solve. Homepage mentions. What is that? So, in June, we implemented the ability to direct webmentions(which I\u2019ve talked about before) that reference your homepage as opposed to a specific article to a designated page.\nWordPress doesn\u2019t allow the attachment of responses directly to the homepage, and david.shanske.com represents me, having a direct relationship to me on Twitter, Facebook, etc. So, any mention of my website or my username on one of those sites generates a mention that is sent to my site.\nThis is a problem in display. In recent weeks, I\u2019ve had the following scenarios my website doesn\u2019t yet deal with in a satisfactory way\nSomeone referencing my website as me, effectively tagging me in their post as having been somewhere. Example: With David(david.shanske.com)\nSomeone referencing my website as me in mentioning something I did. Example: David(david.shanske.com) kindly helped me.\nNeither of this usages by others are displayed properly website, which is why they are not showing at all. I\u2019m not sure how or where to display them.\nShould someone mentioning me in this manner give me the option of generating a post, ala Facebook\u2019s service of letting others post on your timeline, even if I moderate it somehow?\nAt the least, it should generate a message appropriate to the situation. And if it does, where should it go? Should I display recent mentions on the sidebar of my homepage? On a dedicated page?\nThe Indieweb declares a person tag as a tag on a post that refers to a specific person by URL and is done as a explicit action. Many of these mentions are explicit, but some are less so.\nMy goal is by mid January to figure out how I\u2019m going to display these, one way or another, and write some code to do this. Perhaps as my project for Indiewebcamp Baltimore, coming up in late January.\n\u00a0", "html": "Going to get a bit technical. This is your only warning.\n<p>One of the challenges I have been looking at has actually come because of others. Now, if you\u2019ve been looking at my website, you might notice that, thanks to the efforts of myself, <a href=\"https://notiz.blog/author/matthias-pfefferle/\">Matthias Pfefferle</a>, and <a href=\"https://snarfed.org/about\">Ryan Barrett</a> that there have been major improvements to the presentation of different types of responses on my site. I have a screenshot of the replies on a recent post.</p>\n<p>Facepiles, the row of faces representing people who \u2018liked\u2019 or what have you, was actually the first <a href=\"https://david.shanske.com/2014/05/26/semantic-comments-user-testing/\">project</a> I tackled when I joined the Indieweb community back in 2014. I\u2019ve learned a lot since then.</p>\n<p>Either way, the current work not only builds on what I\u2019ve learned, but the contributions by Ryan, who really wanted this feature available, really jumpstarted things. Now, all of these people below don\u2019t know they commented on my site\u2026as they commented elsewhere and I pulled it back to my site via webmention.</p>\n<p>So, it brings me to a new problem I want to solve. Homepage mentions. What is that? So, in June, we implemented the ability to direct webmentions(which I\u2019ve talked about before) that reference your homepage as opposed to a specific article to a designated page.</p>\n<p>WordPress doesn\u2019t allow the attachment of responses directly to the homepage, and david.shanske.com represents me, having a direct relationship to me on Twitter, Facebook, etc. So, any mention of my website or my username on one of those sites generates a mention that is sent to my site.</p>\n<p>This is a problem in display. In recent weeks, I\u2019ve had the following scenarios my website doesn\u2019t yet deal with in a satisfactory way</p>\n<ul><li>Someone referencing my website as me, effectively tagging me in their post as having been somewhere. Example: With David(david.shanske.com)</li>\n<li>Someone referencing my website as me in mentioning something I did. Example: David(david.shanske.com) kindly helped me.</li>\n</ul><p>Neither of this usages by others are displayed properly website, which is why they are not showing at all. I\u2019m not sure how or where to display them.</p>\n<p>Should someone mentioning me in this manner give me the option of generating a post, ala Facebook\u2019s service of letting others post on your timeline, even if I moderate it somehow?</p>\n<p>At the least, it should generate a message appropriate to the situation. And if it does, where should it go? Should I display recent mentions on the sidebar of my homepage? On a dedicated page?</p>\n<p>The Indieweb declares a person tag as a tag on a post that refers to a specific person by URL and is done as a explicit action. Many of these mentions are explicit, but some are less so.</p>\n<p>My goal is by mid January to figure out how I\u2019m going to display these, one way or another, and write some code to do this. Perhaps as my project for Indiewebcamp Baltimore, coming up in late January.</p>\n<p>\u00a0</p>\n<p><a href=\"https://david.shanske.com/wp-content/uploads/2017/12/Screenshot-from-2017-12-27-19-51-03.png\"><img src=\"https://david.shanske.com/wp-content/uploads/2017/12/Screenshot-from-2017-12-27-19-51-03.png\" alt=\"\" width=\"614\" height=\"546\" /></a></p>" }, "author": { "type": "card", "name": "David Shanske", "url": "https://david.shanske.com", "photo": "https://secure.gravatar.com/avatar/681eba02e72ba1d894097034a8110e61?s=125&d=default&r=g" }, "_id": "8076", "_source": "5", "_is_read": true }
So maybe we need to look at the whole package and create an… oh, I don’t know, what’s the phrase I need… an “indie web”?
{ "type": "entry", "published": "2017-12-23T18:20:34Z", "url": "https://adactio.com/links/13232", "category": [ "indieweb", "publishing", "zines", "design", "trends" ], "bookmark-of": [ "https://kottke.org/17/12/zines-are-the-future-of-media" ], "content": { "text": "Zines are the future of media\n\n \n\n\n So maybe we need to look at the whole package and create an\u2026 oh, I don\u2019t know, what\u2019s the phrase I need\u2026 an \u201cindie web\u201d?", "html": "<h3>\n<a class=\"p-name u-bookmark-of\" href=\"https://kottke.org/17/12/zines-are-the-future-of-media\">\nZines are the future of media\n</a>\n</h3>\n\n<blockquote>\n <p>So maybe we need to look at the whole package and create an\u2026 oh, I don\u2019t know, what\u2019s the phrase I need\u2026 an \u201cindie web\u201d?</p>\n</blockquote>" }, "_id": "7106", "_source": "2", "_is_read": true }