“the contract between a web browser and a web server, outlining how HTML would work. These standards didn’t define just software, but also culture; this was the raw material of human interaction.” - @ftrain https://www.bloomberg.com/news/features/2018-03-09/bitcoin-is-ridiculous-blockchain-is-dangerous-pau... #indieweb
{
"type": "entry",
"published": "2018-03-09T17:14:33+0000",
"url": "http://known.kevinmarks.com/2018/the-contract-between-a-web-browser-and",
"category": [
"indieweb"
],
"syndication": [
"https://twitter.com/kevinmarks/status/972158712918958080"
],
"content": {
"text": "\u201cthe contract between a web browser and a web server, outlining how HTML would work. These standards didn\u2019t define just software, but also culture; this was the raw material of human interaction.\u201d - @ftrain https://www.bloomberg.com/news/features/2018-03-09/bitcoin-is-ridiculous-blockchain-is-dangerous-pau... #indieweb",
"html": "\u201cthe contract between a web browser and a web server, outlining how HTML would work. These standards didn\u2019t define just software, but also culture; this was the raw material of human interaction.\u201d - @ftrain <a href=\"https://www.bloomberg.com/news/features/2018-03-09/bitcoin-is-ridiculous-blockchain-is-dangerous-paul-ford\">https://www.bloomberg.com/news/features/2018-03-09/bitcoin-is-ridiculous-blockchain-is-dangerous-pau...</a> <a href=\"http://known.kevinmarks.com/tag/indieweb\" class=\"p-category\">#indieweb</a>"
},
"author": {
"type": "card",
"name": "Kevin Marks",
"url": "http://known.kevinmarks.com/profile/kevinmarks",
"photo": "http://known.kevinmarks.com/file/9255656669173b7867ab839ee6556f9e"
},
"_id": "118469",
"_source": "205",
"_is_read": true
}
Monocle just got real fancy. I can now set a default account for each channel from which responses should be sent. (Stored in my Microsub server, not in Monocle, so it can work across clients). Monocle recognizes when alternate accounts are available and provides an account switcher UI in the footer. Any "like/repost/reply" actions are then sent via that account instead of to my main site!
{
"type": "entry",
"published": "2018-03-08T14:54:52-0800",
"url": "https://aaronparecki.com/2018/03/08/13/monocle-account-switcher",
"category": [
"microsub",
"monocle",
"aperture",
"p3k"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/68dff476f923513b48e73de1a20b89a2a0239b768528124fc6af200f6ed17a85.png"
],
"content": {
"text": "Monocle just got real fancy. I can now set a default account for each channel from which responses should be sent. (Stored in my Microsub server, not in Monocle, so it can work across clients). Monocle recognizes when alternate accounts are available and provides an account switcher UI in the footer. Any \"like/repost/reply\" actions are then sent via that account instead of to my main site!"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/2b8e1668dcd9cfa6a170b3724df740695f73a15c2a825962fd0a0967ec11ecdc.jpg"
},
"_id": "115873",
"_source": "16",
"_is_read": true
}
“For both YouTube and Facebook, solving this problem would actually be easy: kill Trending Topics, which has a terrible track record. But neither tech giant will do that, because that’s where the advertising money is.” https://mondaynote.com/there-is-no-easy-fix-for-facebooks-reliability-problem-eb7dd45fd360 #indieweb
{
"type": "entry",
"published": "2018-03-08T10:29:18+0000",
"url": "http://known.kevinmarks.com/2018/for-both-youtube-and-facebook-solving-this",
"category": [
"indieweb"
],
"syndication": [
"https://twitter.com/kevinmarks/status/971694343252684800"
],
"content": {
"text": "\u201cFor both YouTube and Facebook, solving this problem would actually be easy: kill Trending Topics, which has a terrible track record. But neither tech giant will do that, because that\u2019s where the advertising money is.\u201d https://mondaynote.com/there-is-no-easy-fix-for-facebooks-reliability-problem-eb7dd45fd360 #indieweb",
"html": "\u201cFor both YouTube and Facebook, solving this problem would actually be easy: kill Trending Topics, which has a terrible track record. But neither tech giant will do that, because that\u2019s where the advertising money is.\u201d <a href=\"https://mondaynote.com/there-is-no-easy-fix-for-facebooks-reliability-problem-eb7dd45fd360\">https://mondaynote.com/there-is-no-easy-fix-for-facebooks-reliability-problem-eb7dd45fd360</a> <a href=\"http://known.kevinmarks.com/tag/indieweb\" class=\"p-category\">#indieweb</a>"
},
"author": {
"type": "card",
"name": "Kevin Marks",
"url": "http://known.kevinmarks.com/profile/kevinmarks",
"photo": "http://known.kevinmarks.com/file/9255656669173b7867ab839ee6556f9e"
},
"_id": "113363",
"_source": "205",
"_is_read": true
}
Posting a note using Indigenous to my site, this is awesome! Guess I have to start on an Android version now .. #drupal #indieweb // cc @Dries @EddieHinkle
{
"type": "entry",
"url": "https://realize.be/notes/1227",
"content": {
"text": "Posting a note using Indigenous to my site, this is awesome! Guess I have to start on an Android version now .. #drupal #indieweb // cc @Dries @EddieHinkle",
"html": "<p>Posting a note using Indigenous to my site, this is awesome! Guess I have to start on an Android version now .. #drupal #indieweb // cc @Dries @EddieHinkle</p>"
},
"_id": "111963",
"_source": "213",
"_is_read": true
}
Had some great discussions with @qubyte at Homebrew Website Club Brighton—webmentions, service workers, static sites …lots of food for thought.
{
"type": "entry",
"published": "2018-03-07T19:34:48Z",
"url": "https://adactio.com/notes/13550",
"photo": [
"https://adactio.com/images/uploaded/13550/small.jpg"
],
"syndication": [
"https://twitter.com/adactio/status/971469342926876673",
"https://flickr.com/photos/adactio/26806178428"
],
"content": {
"text": "Had some great discussions with @qubyte at Homebrew Website Club Brighton\u2014webmentions, service workers, static sites \u2026lots of food for thought.",
"html": "<a href=\"https://adactio.com/notes/13550\">\n</a>\n<p>Had some great discussions with <a href=\"https://twitter.com/qubyte\">@qubyte</a> at Homebrew Website Club Brighton\u2014webmentions, service workers, static sites \u2026lots of food for thought.</p>"
},
"_id": "111749",
"_source": "2",
"_is_read": true
}
I think my favorite new weird feature of Aperture is the ability to switch it into "Demo Mode" which will hide certain channels from view and from Microsub clients. This comes in handy when taking screenshots and doing presentations where I don't want to reveal some of my private channels I have!
{
"type": "entry",
"published": "2018-03-07T10:42:02-0800",
"url": "https://aaronparecki.com/2018/03/07/16/",
"category": [
"aperture",
"indieweb"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/3332aebc1dd41d45d68c64976db72e2ab2f2ce1b7489ec3fa14da87202e17515.jpg"
],
"content": {
"text": "I think my favorite new weird feature of Aperture is the ability to switch it into \"Demo Mode\" which will hide certain channels from view and from Microsub clients. This comes in handy when taking screenshots and doing presentations where I don't want to reveal some of my private channels I have!"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/2b8e1668dcd9cfa6a170b3724df740695f73a15c2a825962fd0a0967ec11ecdc.jpg"
},
"_id": "111443",
"_source": "16",
"_is_read": true
}
Part of the point and beauty of the IndieWeb movement is that you can choose any platform or set up you choose! There are far more options than just Known and WordPress. The harder problem is is to figure out what it is you want to do online. Then you can find, build, or find and build a tool that best suits those needs. If you need help, feel free to try the chat rooms at https://indieweb.org/discuss.
{
"type": "entry",
"published": "2018-03-06T19:24:56+0000",
"url": "http://stream.boffosocko.com/2018/part-of-the-point-and-beauty-of-the-indieweb-movement",
"in-reply-to": [
"https://lo.hn/2018/hello-why-should-we-use-known-instead-of-wordpress-for",
"http://boffosocko.com/about/ama/"
],
"content": {
"text": "Part of the point and beauty of the IndieWeb movement is that you can choose any platform or set up you choose! There are far more options than just Known and WordPress. The harder problem is is to figure out what it is you want to do online. Then you can find, build, or find and build a tool that best suits those needs. If you need help, feel free to try the chat rooms at https://indieweb.org/discuss.",
"html": "Part of the point and beauty of the IndieWeb movement is that you can choose any platform or set up you choose! There are far more options than just Known and WordPress. The harder problem is is to figure out what it is you want to do online. Then you can find, build, or find and build a tool that best suits those needs. If you need help, feel free to try the chat rooms at <a href=\"https://indieweb.org/discuss\">https://indieweb.org/discuss</a>."
},
"author": {
"type": "card",
"name": "Chris Aldrich",
"url": "http://stream.boffosocko.com/profile/chrisaldrich",
"photo": "http://stream.boffosocko.com/file/600427b81f7785e704eadfe511a9270f/thumb.jpg"
},
"_id": "109383",
"_source": "192",
"_is_read": true
}
So if you now reply on Twitter, it will create a comment on that node on my site (moderated though, I know you all like spamming!) #indieweb #drupal
{
"type": "entry",
"url": "https://realize.be/notes/1225",
"content": {
"text": "So if you now reply on Twitter, it will create a comment on that node on my site (moderated though, I know you all like spamming!) #indieweb #drupal"
},
"_id": "107848",
"_source": "213",
"_is_read": true
}
Exactly, that’s the plan. @aaronpk who is the editor is also the editor of Micropub which is what allows some people on micro.blog to import photos from Instagram by using the OwnYourGram app (because micro.blog supports Micropub).
{
"type": "entry",
"published": "2018-03-06T08:40:05-0500",
"summary": "Exactly, that\u2019s the plan. @aaronpk who is the editor is also the editor of Micropub which is what allows some people on micro.blog to import photos from Instagram by using the OwnYourGram app (because micro.blog supports Micropub).",
"url": "https://eddiehinkle.com/2018/03/06/1/reply/",
"in-reply-to": [
"https://micro.blog/hjertnes/383180"
],
"content": {
"text": "Exactly, that\u2019s the plan. @aaronpk who is the editor is also the editor of Micropub which is what allows some people on micro.blog to import photos from Instagram by using the OwnYourGram app (because micro.blog supports Micropub).",
"html": "<p>Exactly, that\u2019s the plan. <a href=\"https://micro.blog/aaronpk\">@aaronpk</a> who is the editor is also the editor of <a href=\"https://www.w3.org/TR/micropub/\">Micropub</a> which is what allows some people on micro.blog to import photos from Instagram by using the OwnYourGram app (because micro.blog supports Micropub).</p>"
},
"author": {
"type": "card",
"name": "Eddie Hinkle",
"url": "https://eddiehinkle.com/",
"photo": "https://eddiehinkle.com/images/profile.jpg"
},
"refs": {
"https://micro.blog/hjertnes/383180": {
"type": "entry",
"url": "https://micro.blog/hjertnes/383180",
"name": "https://micro.blog/hjertnes/383180"
}
},
"_id": "123241",
"_source": "226",
"_is_read": true
}
Hello! Why should we use Known instead of WordPress for indieweb? It looks like a Hard choice!
{
"type": "entry",
"published": "2018-03-06T12:36:27+0000",
"url": "https://lo.hn/2018/hello-why-should-we-use-known-instead-of-wordpress-for",
"in-reply-to": [
"https://boffosocko.com/about/ama/"
],
"content": {
"text": "Hello! Why should we use Known instead of WordPress for indieweb? It looks like a Hard choice!"
},
"author": {
"type": "card",
"name": "Josemar M\u00fcller Lohn",
"url": "https://lo.hn/profile/lohn",
"photo": "https://lo.hn/file/76399b154d0950e403e20cea30820e0a/thumb.jpg"
},
"_id": "107465",
"_source": "222",
"_is_read": true
}
Finally got to expose webmentions in a block. Getting slower and slower to alpha state! #drupal #indieweb
{
"type": "entry",
"url": "https://realize.be/notes/1223",
"content": {
"text": "Finally got to expose webmentions in a block. Getting slower and slower to alpha state! #drupal #indieweb"
},
"_id": "105490",
"_source": "213",
"_is_read": true
}
Killed the webmention_io module, new module at https://github.com/swentel/indieweb : minimal microformats (more coming soon) and brid.gy publishing in it!
{
"type": "entry",
"url": "https://realize.be/notes/1219",
"content": {
"text": "Killed the webmention_io module, new module at https://github.com/swentel/indieweb : minimal microformats (more coming soon) and brid.gy publishing in it!",
"html": "Killed the webmention_io module, new module at <a href=\"https://github.com/swentel/indieweb\">https://github.com/swentel/indieweb</a> : minimal microformats (more coming soon) and brid.gy publishing in it!"
},
"_id": "104834",
"_source": "213",
"_is_read": true
}
Website owners of Brighton—it’s Homebrew Website Club this Wednesday at 6pm in the @Clearleft office. Come along and we’ll work on our personal sites together.
https://indieweb.org/events/2018-03-07-homebrew-website-club#UK
{
"type": "entry",
"published": "2018-03-05T18:26:29Z",
"url": "https://adactio.com/notes/13537",
"syndication": [
"https://twitter.com/adactio/status/970727267352576000"
],
"content": {
"text": "Website owners of Brighton\u2014it\u2019s Homebrew Website Club this Wednesday at 6pm in the @Clearleft office. Come along and we\u2019ll work on our personal sites together.\n\nhttps://indieweb.org/events/2018-03-07-homebrew-website-club#UK",
"html": "<p>Website owners of Brighton\u2014it\u2019s Homebrew Website Club this Wednesday at 6pm in the <a href=\"https://twitter.com/Clearleft\">@Clearleft</a> office. Come along and we\u2019ll work on our personal sites together.</p>\n\n<p><a href=\"https://indieweb.org/events/2018-03-07-homebrew-website-club#UK\">https://indieweb.org/events/2018-03-07-homebrew-website-club#UK</a></p>"
},
"_id": "104716",
"_source": "2",
"_is_read": true
}
Posting GitHub issues from my site makes my day permalinks look much less sad on days I spend a lot of time on the computer. #indieweb
{
"type": "entry",
"published": "2018-03-05T10:21:26-0800",
"url": "https://aaronparecki.com/2018/03/05/17/",
"category": [
"indieweb"
],
"content": {
"text": "Posting GitHub issues from my site makes my day permalinks look much less sad on days I spend a lot of time on the computer. #indieweb",
"html": "<p>Posting GitHub issues from my site makes my <a href=\"https://aaronparecki.com/2018/03/05\">day permalinks</a> look much less sad on days I spend a lot of time on the computer. #indieweb</p>"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/2b8e1668dcd9cfa6a170b3724df740695f73a15c2a825962fd0a0967ec11ecdc.jpg"
},
"_id": "104646",
"_source": "16",
"_is_read": true
}
Just implemented mp-destination on my site! I can connect multiple Micropub or Twitter accounts to my site to be able to post to other accounts from Micropub clients when I'm logged in as me. This is the first step of turning Monocle into more of a Tweetdeck-like experience!
{
"type": "entry",
"published": "2018-03-05T07:48:10-0800",
"url": "https://aaronparecki.com/2018/03/05/4/micropub-destination",
"category": [
"micropub",
"p3k"
],
"content": {
"text": "Just implemented mp-destination on my site! I can connect multiple Micropub or Twitter accounts to my site to be able to post to other accounts from Micropub clients when I'm logged in as me. This is the first step of turning Monocle into more of a Tweetdeck-like experience!",
"html": "<p>Just implemented <a href=\"https://github.com/indieweb/micropub-extensions/issues/3\">mp-destination</a> on my site! I can connect multiple Micropub or Twitter accounts to my site to be able to post to other accounts from Micropub clients when I'm logged in as me. This is the first step of turning Monocle into more of a Tweetdeck-like experience!</p>"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/2b8e1668dcd9cfa6a170b3724df740695f73a15c2a825962fd0a0967ec11ecdc.jpg"
},
"_id": "104106",
"_source": "16",
"_is_read": true
}
He actually meant Microsub which is a early draft of a way for feed reader servers and clients to talk to each other. Allowing for simplified innovative feed reader interfaces to be developed, rather than everyone having it’s own backend and parsing.
{
"type": "entry",
"published": "2018-03-05T10:09:16-0500",
"summary": "He actually meant Microsub which is a early draft of a way for feed reader servers and clients to talk to each other. Allowing for simplified innovative feed reader interfaces to be developed, rather than everyone having it\u2019s own backend and parsing.",
"url": "https://eddiehinkle.com/2018/03/05/9/reply/",
"in-reply-to": [
"https://micro.blog/hjertnes/380825"
],
"content": {
"text": "He actually meant Microsub which is a early draft of a way for feed reader servers and clients to talk to each other. Allowing for simplified innovative feed reader interfaces to be developed, rather than everyone having it\u2019s own backend and parsing.",
"html": "<p>He actually meant <a href=\"https://indieweb.org/Microsub\">Microsub</a> which is a early draft of a way for feed reader servers and clients to talk to each other. Allowing for simplified innovative feed reader interfaces to be developed, rather than everyone having it\u2019s own backend and parsing.</p>"
},
"author": {
"type": "card",
"name": "Eddie Hinkle",
"url": "https://eddiehinkle.com/",
"photo": "https://eddiehinkle.com/images/profile.jpg"
},
"refs": {
"https://micro.blog/hjertnes/380825": {
"type": "entry",
"url": "https://micro.blog/hjertnes/380825",
"name": "https://micro.blog/hjertnes/380825"
}
},
"_id": "123249",
"_source": "226",
"_is_read": true
}
I’m really enjoying using Together from iOS for reading and posting on the IndieWeb: https://cleverdevil.io/s/A94HmEbBLALplpcALmAc.mov
{
"type": "entry",
"published": "2018-03-05T03:50:20+0000",
"url": "https://cleverdevil.io/2018/im-really-enjoying-using-together-from-ios",
"syndication": [
"https://twitter.com/cleverdevil/status/970506774464917505"
],
"content": {
"text": "I\u2019m really enjoying using Together from iOS for reading and posting on the IndieWeb: https://cleverdevil.io/s/A94HmEbBLALplpcALmAc.mov",
"html": "I\u2019m really enjoying using Together from iOS for reading and posting on the IndieWeb: <a href=\"https://cleverdevil.io/s/A94HmEbBLALplpcALmAc.mov\">https://cleverdevil.io/s/A94HmEbBLALplpcALmAc.mov</a>"
},
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://cleverdevil.io/profile/cleverdevil",
"photo": "https://cleverdevil.io/file/fdbc7696a5f73864ea11a828c861e138/thumb.jpg"
},
"_id": "102880",
"_source": "71",
"_is_read": true
}
@indiewebcat is trying out Monocle as well
{
"type": "entry",
"published": "2018-03-04T19:16:32-0800",
"url": "https://aaronparecki.com/2018/03/04/27/",
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/ddaa3e06cadfd99f06d1dc41f9695b524cbd7dd67911c20e94217618f3c5307e.jpg"
],
"content": {
"text": "@indiewebcat is trying out Monocle as well",
"html": "<a href=\"https://twitter.com/indiewebcat\">@indiewebcat</a> is trying out Monocle as well"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/2b8e1668dcd9cfa6a170b3724df740695f73a15c2a825962fd0a0967ec11ecdc.jpg"
},
"_id": "102801",
"_source": "16",
"_is_read": true
}
{
"type": "entry",
"published": "2018-03-05T01:43:51+0000",
"url": "https://cleverdevil.io/2018/freeing-myself-from-facebook",
"syndication": [
"https://facebook.com/10101416927213429/posts/10102754557751109",
"https://twitter.com/cleverdevil/status/970475617220222976"
],
"name": "Freeing Myself from Facebook",
"content": {
"text": "Ever since my discovery of the IndieWeb movement, I've wanted to free myself from Facebook (and Instagram) and their brand of surveillance capitalism. I want to own my own data, and be in control of how it is shared, and I don't want it to be used for advertising.\nI've had this incarnation of a personal website for a few years, and have mostly been following the POSSE publishing model, publishing most forms of content on my website, and then automatically (or manually) syndicating that content to silos like Facebook and Twitter. But, much of my content still remains trapped inside of Facebook and Instagram.\nUntil now.\nAs of March 4, 2018, I've pulled the vast majority of my Facebook content into my website, and all of my Instagram photos into my website, paving the way for me to delete myself from Facebook (and potentially Instagram) by the end of 2018. What follows is a high-level overview of how I made the move.\nFacebook\nExporting Data from Facebook\nWhile Facebook does offer an export feature, its extremely limited, only includes very low resolution versions of your photos, and is generally very difficult to process programmatically. After some research, I discovered the excellent fb-export project on GitHub. Once installed, this tool will dump a huge amount (though, not quite all) of your Facebook data into machine-readable JSON files.\nSince my website is compatible with the Micropub publishing standard, I then needed to convert this Facebook-native JSON data into microformats2 formatted JSON. Enter granary, an amazing swiss-army knife of IndieWeb by Ryan Barrett. Using granary, I whipped up a quick script that transforms the exported data into native microformats2 formatted JSON:\nhttps://gist.github.com/cleverdevil/f33530706d6e8dacd13a8bd8e8c15dba\nPublishing Liberated Data\nAt this point, I had a directory full of data ready to publish. Sort of. Unfortunately, not all of the data is easily translatable, or even desirable, to publish to my website. As a result, I created another script that let me, on a case by case basis, publish a piece of content, choose to skip it entirely, or save it to deal with later.\nhttps://gist.github.com/cleverdevil/c857695bb2de1e46686d720cad9d124c\nAfter running this script, I had a significant amount of my data copied from Facebook to my website. Huzzah!\nDealing with Photo Albums\nFacebook has a \"photo albums\" feature, and I definitely wanted to get those memories onto my website. Again, I wrote a script that processes the exported data, and selectively allows me to upload all of the photos in an album to my website via Micropub, and then drops microformats2 JSON out that I could publish later.\nhttps://gist.github.com/cleverdevil/d9c08ddc6eb2da0d060a5f6fe87ddf64\nOnce I finished processing and uploading all of the photos for the albums I wished to copy over, I ran a simple utility script I keep around to publish all of the albums as new posts to my website.\nHere are some of the results:\n\nhttps://cleverdevil.io/2015/the-lunds-visit-for-easter-and-palm-springs\n\n\nhttps://cleverdevil.io/2014/maui-2014\n\n\nhttps://cleverdevil.io/2012/hawaii-2012\n\n\nhttps://cleverdevil.io/2012/out-and-about-with-colette\n\n\nhttps://cleverdevil.io/2009/europe-trip---part-1\n\nNotice, one of these comes all the way back from 2009!\nAlmost There\nThere are still quite a few photos and other types of posts that I haven't yet been able to figure out how to migrate. Notably, Facebook has strange special albums such as \"iOS Uploads,\" \"Mobile Uploads,\" and \"iPhoto Uploads\" that represent how the photos were uploaded, not so much a group of related photos. Unfortunately, the data contained in the export produced by fb-export isn't quite adequate to deal with these yet.\nStill, I am quite pleased with my progress so far. Time to move on to Instagram!\nInstagram\nInstagram has been slowly deteriorating as a service for years, so much so that I decided to completely stop publishing to Instagram earlier this year. It turns out, dealing with Instagram is a lot easier than Facebook when it comes to liberating your data.\nDownloading My Data\nAfter some research, I found instaLooter on GitHub, which allowed me to quickly export every single photo in its original resolution, along with nearly every bit of data I needed... except the photo captions. I ran instaLooter, and embedded the unique identifier in the filenames (which instaLooter refers to as the \"code').\nGetting Metadata and Publishing\nI wrote a script that used granary to lookup the photo metadata and publish to my website via Micropub:\nhttps://gist.github.com/cleverdevil/5bb767fd152de9b4c246d01086e91399\nNote, I used the non-JSON form of Micropub in this case, because Known's Micropub implementation doesn't properly handle JSON for photos yet.\nConclusions\nIt turns out, that with a little knowhow, and a lot of persistence, you can liberate much of your data from Facebook and Instagram. I feel well on target to my goal of leaving Facebook (and maybe Instagram) entirely.",
"html": "<p>Ever since my discovery of the <a href=\"https://indieweb.org\">IndieWeb movement</a>, I've wanted to free myself from Facebook (and Instagram) and their brand of <a href=\"https://en.wikipedia.org/wiki/Surveillance_capitalism\">surveillance capitalism</a>. I want to own my own data, and be in control of how it is shared, and I don't want it to be used for advertising.</p>\n<p>I've had this incarnation of a personal website for a few years, and have mostly been following the <a href=\"https://indieweb.org/POSSE\">POSSE publishing model</a>, publishing most forms of content on my website, and then automatically (or manually) syndicating that content to <a href=\"https://indieweb.org/silo\">silos</a> like Facebook and Twitter. But, much of my content still remains trapped inside of Facebook and Instagram.</p>\n<p><em>Until now</em>.</p>\n<p>As of March 4, 2018, I've pulled the vast majority of my Facebook content into my website, and all of my Instagram photos into my website, paving the way for me to delete myself from Facebook (and potentially Instagram) by the end of 2018. What follows is a high-level overview of how I made the move.</p>\n<h2>Facebook</h2>\n<h3>Exporting Data from Facebook</h3>\n<p>While Facebook does offer an export feature, its extremely limited, only includes very low resolution versions of your photos, and is generally very difficult to process programmatically. After some research, I discovered the <a href=\"https://github.com/danburzo/fb-export\">excellent fb-export project</a> on GitHub. Once installed, this tool will dump a huge amount (though, not quite all) of your Facebook data into machine-readable JSON files.</p>\n<p>Since my website is compatible with the <a href=\"https://indieweb.org/Micropub\">Micropub publishing standard</a>, I then needed to convert this Facebook-native JSON data into <a href=\"http://microformats.org/wiki/microformats2\">microformats2 formatted JSON</a>. Enter <a href=\"https://github.com/snarfed/granary\">granary</a>, an amazing swiss-army knife of IndieWeb by <a href=\"https://snarfed.org\">Ryan Barrett</a>. Using granary, I whipped up a quick script that transforms the exported data into native microformats2 formatted JSON:</p>\n<p><a href=\"https://gist.github.com/cleverdevil/f33530706d6e8dacd13a8bd8e8c15dba\"></a><a href=\"https://gist.github.com/cleverdevil/f33530706d6e8dacd13a8bd8e8c15dba\">https://gist.github.com/cleverdevil/f33530706d6e8dacd13a8bd8e8c15dba</a></p>\n<h3>Publishing Liberated Data</h3>\n<p>At this point, I had a directory full of data ready to publish. Sort of. Unfortunately, not all of the data is easily translatable, or even desirable, to publish to my website. As a result, I created another script that let me, on a case by case basis, publish a piece of content, choose to skip it entirely, or save it to deal with later.</p>\n<p><a href=\"https://gist.github.com/cleverdevil/c857695bb2de1e46686d720cad9d124c\"></a><a href=\"https://gist.github.com/cleverdevil/c857695bb2de1e46686d720cad9d124c\">https://gist.github.com/cleverdevil/c857695bb2de1e46686d720cad9d124c</a></p>\n<p>After running this script, I had a significant amount of my data copied from Facebook to my website. Huzzah!</p>\n<h3>Dealing with Photo Albums</h3>\n<p>Facebook has a \"photo albums\" feature, and I definitely wanted to get those memories onto my website. Again, I wrote a script that processes the exported data, and selectively allows me to upload all of the photos in an album to my website via Micropub, and then drops microformats2 JSON out that I could publish later.</p>\n<p><a href=\"https://gist.github.com/cleverdevil/d9c08ddc6eb2da0d060a5f6fe87ddf64\"></a><a href=\"https://gist.github.com/cleverdevil/d9c08ddc6eb2da0d060a5f6fe87ddf64\">https://gist.github.com/cleverdevil/d9c08ddc6eb2da0d060a5f6fe87ddf64</a></p>\n<p>Once I finished processing and uploading all of the photos for the albums I wished to copy over, I ran a simple utility script I keep around to publish all of the albums as new posts to my website.</p>\n<p>Here are some of the results:</p>\n<ul><li>\n<a href=\"https://cleverdevil.io/2015/the-lunds-visit-for-easter-and-palm-springs\"></a><a href=\"https://cleverdevil.io/2015/the-lunds-visit-for-easter-and-palm-springs\">https://cleverdevil.io/2015/the-lunds-visit-for-easter-and-palm-springs</a>\n</li>\n<li>\n<a href=\"https://cleverdevil.io/2014/maui-2014\"></a><a href=\"https://cleverdevil.io/2014/maui-2014\">https://cleverdevil.io/2014/maui-2014</a>\n</li>\n<li>\n<a href=\"https://cleverdevil.io/2012/hawaii-2012\"></a><a href=\"https://cleverdevil.io/2012/hawaii-2012\">https://cleverdevil.io/2012/hawaii-2012</a>\n</li>\n<li>\n<a href=\"https://cleverdevil.io/2012/out-and-about-with-colette\"></a><a href=\"https://cleverdevil.io/2012/out-and-about-with-colette\">https://cleverdevil.io/2012/out-and-about-with-colette</a>\n</li>\n<li>\n<a href=\"https://cleverdevil.io/2009/europe-trip---part-1\"></a><a href=\"https://cleverdevil.io/2009/europe-trip---part-1\">https://cleverdevil.io/2009/europe-trip---part-1</a>\n</li>\n</ul><p>Notice, one of these comes all the way back from 2009!</p>\n<h3>Almost There</h3>\n<p>There are still quite a few photos and other types of posts that I haven't yet been able to figure out how to migrate. Notably, Facebook has strange special albums such as \"iOS Uploads,\" \"Mobile Uploads,\" and \"iPhoto Uploads\" that represent how the photos were uploaded, not so much a group of related photos. Unfortunately, the data contained in the export produced by fb-export isn't quite adequate to deal with these yet.</p>\n<p>Still, I am quite pleased with my progress so far. Time to move on to Instagram!</p>\n<h2>Instagram</h2>\n<p>Instagram has been slowly deteriorating as a service for years, so much so that I decided to <a href=\"https://www.instagram.com/p/Bd6HunOBMJ1/\">completely stop publishing to Instagram</a> earlier this year. It turns out, dealing with Instagram is a lot easier than Facebook when it comes to liberating your data.</p>\n<h3>Downloading My Data</h3>\n<p>After some research, I found <a href=\"https://github.com/althonos/instaLooter\">instaLooter</a> on GitHub, which allowed me to quickly export every single photo in its original resolution, along with nearly every bit of data I needed... except the photo captions. I ran instaLooter, and embedded the unique identifier in the filenames (which instaLooter refers to as the \"code').</p>\n<h3>Getting Metadata and Publishing</h3>\n<p>I wrote a script that used granary to lookup the photo metadata and publish to my website via Micropub:</p>\n<p><a href=\"https://gist.github.com/cleverdevil/5bb767fd152de9b4c246d01086e91399\"></a><a href=\"https://gist.github.com/cleverdevil/5bb767fd152de9b4c246d01086e91399\">https://gist.github.com/cleverdevil/5bb767fd152de9b4c246d01086e91399</a></p>\n<p>Note, I used the non-JSON form of Micropub in this case, because <a href=\"https://github.com/idno/Known\">Known</a>'s Micropub implementation doesn't properly handle JSON for photos yet.</p>\n<h2>Conclusions</h2>\n<p>It turns out, that with a little knowhow, and a lot of persistence, you can liberate much of your data from Facebook and Instagram. I feel well on target to my goal of leaving Facebook (and maybe Instagram) entirely.</p>"
},
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://cleverdevil.io/profile/cleverdevil",
"photo": "https://cleverdevil.io/file/fdbc7696a5f73864ea11a828c861e138/thumb.jpg"
},
"_id": "102577",
"_source": "71",
"_is_read": true
}
Monocle+Aperture are coming along nicely!
I just got my GitHub notifications piped into the reader, which is a much nicer experience than reading them via email or trying to track them down on github.com!
I have a few channels set to show just an indicator dot when there are new posts rather than showing the number of new posts, a much calmer experience.
Unread posts show up with a faint yellow glow around them, and they're automatically marked as read when they scroll off the screen.
At this point, I've actually moved all of the feeds I was previously following from IRC into Aperture as a way to force myself to continue putting the finishing touches on it!
{
"type": "entry",
"published": "2018-03-04T14:22:48-0800",
"url": "https://aaronparecki.com/2018/03/04/14/",
"category": [
"monocle",
"aperture",
"microsub"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/1586dde09bbac14b018bbda4ab77aa1630959ec97591ad441e10351073690ba4.png"
],
"content": {
"text": "Monocle+Aperture are coming along nicely!\n\nI just got my GitHub notifications piped into the reader, which is a much nicer experience than reading them via email or trying to track them down on github.com!\n\nI have a few channels set to show just an indicator dot when there are new posts rather than showing the number of new posts, a much calmer experience.\n\nUnread posts show up with a faint yellow glow around them, and they're automatically marked as read when they scroll off the screen.\n\nAt this point, I've actually moved all of the feeds I was previously following from IRC into Aperture as a way to force myself to continue putting the finishing touches on it!",
"html": "<p>Monocle+Aperture are coming along nicely!</p>\n\n<p>I just got my GitHub notifications piped into the reader, which is a much nicer experience than reading them via email or trying to track them down on github.com!</p>\n\n<p>I have a few channels set to show just an indicator dot when there are new posts rather than showing the number of new posts, a much calmer experience.</p>\n\n<p>Unread posts show up with a faint yellow glow around them, and they're automatically marked as read when they scroll off the screen.</p>\n\n<p>At this point, I've actually moved all of the feeds I was previously <a href=\"https://aaronparecki.com/2015/08/29/8/why-i-live-in-irc\">following from IRC</a> into Aperture as a way to force myself to continue putting the finishing touches on it!</p>"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/2b8e1668dcd9cfa6a170b3724df740695f73a15c2a825962fd0a0967ec11ecdc.jpg"
},
"_id": "102157",
"_source": "16",
"_is_read": true
}