Updated post
the_architech -
r72:83a56bb1d2d8
Not Reviewed
Show More
Add another comment
TODOs: 0 unresolved 0 Resolved
COMMENTS: 0 General 0 Inline
@@ -2,7 +2,7
2 <feed xmlns="http://www.w3.org/2005/Atom">
2 <feed xmlns="http://www.w3.org/2005/Atom">
3 <id>https://blog.webb.page/</id>
3 <id>https://blog.webb.page/</id>
4 <title>the Webb blog</title>
4 <title>the Webb blog</title>
5 <updated>2019-12-04T03:59:28.472Z</updated>
5 <updated>2019-12-05T19:57:52.632Z</updated>
6 <generator>The 'Net</generator>
6 <generator>The 'Net</generator>
7 <author>
7 <author>
8 <name>Paul Anthony Webb</name>
8 <name>Paul Anthony Webb</name>
@@ -60,6 +60,20
60 <p>When you’re ready.<br/>— <a href="https://twitter.com/urbitlive/status/1192262246384230400" title="&#39;urbit live&#39; account on Twitter">urbit live</a></p>
60 <p>When you’re ready.<br/>— <a href="https://twitter.com/urbitlive/status/1192262246384230400" title="&#39;urbit live&#39; account on Twitter">urbit live</a></p>
61 </blockquote>
61 </blockquote>
62 <p>Only problem is, their official site makes their mission <a href="https://news.ycombinator.com/item?id=21672481">quite</a> <a href="https://news.ycombinator.com/item?id=18908051">confusing</a> <a href="https://news.ycombinator.com/item?id=6438320">to many</a>. I don&#39;t know about you but if I&#39;m entrusting my data to something I run, I want to have more than a <em>general idea</em> of how it works.</p>
62 <p>Only problem is, their official site makes their mission <a href="https://news.ycombinator.com/item?id=21672481">quite</a> <a href="https://news.ycombinator.com/item?id=18908051">confusing</a> <a href="https://news.ycombinator.com/item?id=6438320">to many</a>. I don&#39;t know about you but if I&#39;m entrusting my data to something I run, I want to have more than a <em>general idea</em> of how it works.</p>
63 <p><strong>EDIT (2019.12.05):</strong> This post has generated lively discussion on <a href="https://news.ycombinator.com/item?id=21684949">HackerNews</a> and as a result we now have more examples of prior art!</p>
64 <ul>
65 <li><a href="https://github.com/cjdelisle/cjdns">cjdns</a></li>
66 <li><a href="https://dogsheep.github.io">Dogsheep</a>, by Simon Willisons</li>
67 <li><a href="https://www.infoq.com/presentations/strong-types-actor-iot">Islet</a>, by Carl Hewitt</li>
68 <li><a href="https://libp2p.io">libp2p</a></li>
69 <li><a href="https://github.com/danfang/me-api">me-api</a>, by Daniel Fang</li>
70 <li><a href="https://github.com/karlicoss/my">my</a>, by Dmitrii Gerasimov</li>
71 <li><a href="https://perkeep.org">Perkeep</a></li>
72 <li><a href="https://solid.mit.edu">SOLID (Social Linked Data)</a>, by Tim Berners-Lee</li>
73 <li><a href="https://github.com/rigoneri/Syte2">Syte2</a> / <a href="https://github.com/jake-101/Syte2-4-Zeit2.0">Syte2 for Zeit Now v2</a>, by Rodrigo Neri and Jake Peterson</li>
74 <li><a href="https://unwalled.garden">Unwalled Garden</a></li>
75 <li><a href="https://github.com/yggdrasil-network/yggdrasil-go">Yggdrasil Network</a></li>
76 </ul>
63 <h2 id="fin">FIN</h2>
77 <h2 id="fin">FIN</h2>
64 <p>Elsewhere, there exists portions of the personalOS concept of various development maturation levels. To me, this is proof of the worthwhile nature of this idea. Will this likely end up sitting in a repo for years after months of initial work? Probably. Hopefully not...we&#39;ll see how it goes. 🕸</p>
78 <p>Elsewhere, there exists portions of the personalOS concept of various development maturation levels. To me, this is proof of the worthwhile nature of this idea. Will this likely end up sitting in a repo for years after months of initial work? Probably. Hopefully not...we&#39;ll see how it goes. 🕸</p>
65 ]]></content>
79 ]]></content>
@@ -12,7 +12,7
12 "items": [
12 "items": [
13 {
13 {
14 "id": "https://blog.webb.page/2019/a-personal-api",
14 "id": "https://blog.webb.page/2019/a-personal-api",
15 "content_html": "<h2 id=\"inspiration\">Inspiration</h2>\n<p>Shortly after <a href=\"/2019/future-of-the-operating-system-revisited-i\" title=\"The Future of the Operating System: Revisited, Part 1\">revisiting</a> my thoughts about the future of operating systems I was pestered with a recurring thought; what if one had a personal API sitting on a $5/month VPS (virtual private server) and interfaced with it for nearly everything they do online? It wasn&#39;t far-fetched for me to then imagine this personal API becoming more of a personal OS in a way (or maybe stylized, personalOS). With that in mind I realized that when thinking about updating <a href=\"https://webb.page\" title=\"My web page is Webb.Page! Hehehe\">my personal web page</a> I didn&#39;t want to update the content manually. Rather, I&#39;d want to update an API and have my site(s) automatically update. <strong>Oh yeah</strong>, why <em>not</em> have multiple sites update?</p>\n<p>A personal API would make it easy for people to decentralize parts of their digital lives. There are companies built upon the concept of decentralization and that&#39;s promising. A rising tide raises all ships, as they say, and I can see a day where non-technical people are spinning up servers as much as they&#39;re migrating data to a new smartphone (well, if they did all this via a nice UI).</p>\n<h2 id=\"use-cases\">Use Cases</h2>\n<p>Here&#39;s a use case: I&#39;m signed up to several social networks, forums, and I have a couple websites. I&#39;m a digital tastemaker and pride myself on being current and relevant. However, updating my account bio across these platforms is a 20-minute task that I dread doing. Never fear for my API has a biography module! Realistically, all the platforms I frequent won&#39;t have an API I can connect my own to, but a handful will. My personal API sends out update requests to the platforms it is connected to and updates my bio section when I publish the relevant changes to my API.</p>\n<p>That example may be a little contrived so let&#39;s try another one: I&#39;m a developer who prefers to self-host things whenever possible. I am also quite lazy and live by DRY (don&#39;t repeat yourself) and KISS (keep it simple, silly) principles to the extent I can without much difficulty. I&#39;m also fatigued and distrustful of the capability of online services in general to keep my data safe. If I trust nothing else I at least trust myself and a code base I can peruse.</p>\n<h2 id=\"version-alpha\">Version Alpha</h2>\n<p><em>Please keep in mind that this is still a super early idea and the purpose of this post is to get the particulars fleshed out.</em></p>\n<p>What follows is my proposed folder structure of the personal API. Modules come in two types: purpose and utility. Utility modules allow the purpose modules to do their thing, like retrieving/modifying/storing data (on DigitalOcean&#39;s Spaces, Amazon&#39;s S3, or your own storage location). Ideally you should never have to touch those modules unless you wanted to improve upon it or fork your own version. Purpose modules can be anything you think of and the examples I listed could be your personal Medium, Pinboard/Pinterest, Things, Spotify, Flickr/Instagram, Last.fm, and so on.</p>\n<pre><code class=\"language-text\">api\n├─ …\n├─ modules\n│ ├─ purpose\n│ │ ├─ blog\n│ │ ├─ bookmarks\n│ │ ├─ music\n│ │ ├─ photos\n│ │ ├─ portfolio\n│ │ ├─ reminders\n│ │ ├─ scrobbler\n│ │ └─ status\n│ └─ utility\n│ ├─ database\n│ └─ storage\n└─ …</code></pre>\n<p>The purpose functions would be able to call the utility functions to, well, function. <code>webb.page</code> will be the guinea pig for the initial release of personalOS. Once it works there I will update parts of <code>inc.sh</code> and <code>dsgn.agency</code> to take advantage of it as well.</p>\n<h2 id=\"why-bother\">Why Bother?</h2>\n<p>You, dear reader, are probably not terribly interested in self-hosting and dev ops. Even developers/engineers who know <em>how</em> to do it aren&#39;t interested. Some of the common reasons against self-hosting are fear (of the work involved), apathy (&quot;my data isn&#39;t super important anyway&quot;), time (the only valid reason IMHO), or a combination of the three. While I understand I also think <strong>it is incredibly important to claim your space on the Internet</strong>. We&#39;re all <a href=\"https://info.ideagrove.com/knowledgebase/digital-marketing/what-is-digital-sharecropping-and-why-is-it-a-bad-thing\" title=\"What is &#39;digital sharecropping&#39; and why is it a bad thing?\">digital sharecroppers</a> so why not tend to <em>our own space on the &#39;Net</em>?</p>\n<p>It&#39;s a helluva lot easier to monetize your content when it lives on your platform, or personalOS in this case. Monetization doesn&#39;t have to be your focus though. How about this: something that irritates me about Apple&#39;s Music app and iOS 13 is that I have no idea how to get my music that used to live in iTunes, onto my phone anymore. Once I build a music module for personalOS I can upload my music library to my own server and stream it on the go. The major streaming services are great and all but my music collection has rips from video game soundtracks, anime, and otherwise defunct groups with no content on these streaming services. Why would I give that up? Why <strong>should</strong> I?!</p>\n<h2 id=\"business-opportunity\">Business Opportunity?</h2>\n<p>Y&#39;know what would be nice? Having an easy way to share any files that you&#39;re hosting. Although, you may not want to expose your personal API server to the public. For this purpose, you could use a third-party site like <code>personal.sh</code> to generate shareable links (probably via <code>personal.sh/are</code>, I&#39;m a fan of <a href=\"https://en.wikipedia.org/wiki/Domain_hack\" title=\"Explanation of &#39;Domain hack&#39; on Wikipedia\">domain hacking</a>).</p>\n<p>Because the Internet is open to all, there will inevitably be disturbing/disgusting/morally-bankrupt content shared through <code>personal.sh</code>. If/when that happens, the offending user will have their IP address blacklisted and put on display at <code>personal.sh/it</code>. It&#39;s no secret that anonymity gives some people courage to behave in a way that&#39;s unbecoming.</p>\n<h2 id=\"prior-art\">Prior Art</h2>\n<p>There&#39;s a company named Urbit who&#39;s mission is quite similar:</p>\n<blockquote>\n<p>An Urbit is a networked personal server that runs your apps and stores your data, serves as your permanent online identity and puts you back in control of your digital life under a single login.</p>\n<p>When you’re ready.<br/>— <a href=\"https://twitter.com/urbitlive/status/1192262246384230400\" title=\"&#39;urbit live&#39; account on Twitter\">urbit live</a></p>\n</blockquote>\n<p>Only problem is, their official site makes their mission <a href=\"https://news.ycombinator.com/item?id=21672481\">quite</a> <a href=\"https://news.ycombinator.com/item?id=18908051\">confusing</a> <a href=\"https://news.ycombinator.com/item?id=6438320\">to many</a>. I don&#39;t know about you but if I&#39;m entrusting my data to something I run, I want to have more than a <em>general idea</em> of how it works.</p>\n<h2 id=\"fin\">FIN</h2>\n<p>Elsewhere, there exists portions of the personalOS concept of various development maturation levels. To me, this is proof of the worthwhile nature of this idea. Will this likely end up sitting in a repo for years after months of initial work? Probably. Hopefully not...we&#39;ll see how it goes. 🕸</p>\n",
15 "content_html": "<h2 id=\"inspiration\">Inspiration</h2>\n<p>Shortly after <a href=\"/2019/future-of-the-operating-system-revisited-i\" title=\"The Future of the Operating System: Revisited, Part 1\">revisiting</a> my thoughts about the future of operating systems I was pestered with a recurring thought; what if one had a personal API sitting on a $5/month VPS (virtual private server) and interfaced with it for nearly everything they do online? It wasn&#39;t far-fetched for me to then imagine this personal API becoming more of a personal OS in a way (or maybe stylized, personalOS). With that in mind I realized that when thinking about updating <a href=\"https://webb.page\" title=\"My web page is Webb.Page! Hehehe\">my personal web page</a> I didn&#39;t want to update the content manually. Rather, I&#39;d want to update an API and have my site(s) automatically update. <strong>Oh yeah</strong>, why <em>not</em> have multiple sites update?</p>\n<p>A personal API would make it easy for people to decentralize parts of their digital lives. There are companies built upon the concept of decentralization and that&#39;s promising. A rising tide raises all ships, as they say, and I can see a day where non-technical people are spinning up servers as much as they&#39;re migrating data to a new smartphone (well, if they did all this via a nice UI).</p>\n<h2 id=\"use-cases\">Use Cases</h2>\n<p>Here&#39;s a use case: I&#39;m signed up to several social networks, forums, and I have a couple websites. I&#39;m a digital tastemaker and pride myself on being current and relevant. However, updating my account bio across these platforms is a 20-minute task that I dread doing. Never fear for my API has a biography module! Realistically, all the platforms I frequent won&#39;t have an API I can connect my own to, but a handful will. My personal API sends out update requests to the platforms it is connected to and updates my bio section when I publish the relevant changes to my API.</p>\n<p>That example may be a little contrived so let&#39;s try another one: I&#39;m a developer who prefers to self-host things whenever possible. I am also quite lazy and live by DRY (don&#39;t repeat yourself) and KISS (keep it simple, silly) principles to the extent I can without much difficulty. I&#39;m also fatigued and distrustful of the capability of online services in general to keep my data safe. If I trust nothing else I at least trust myself and a code base I can peruse.</p>\n<h2 id=\"version-alpha\">Version Alpha</h2>\n<p><em>Please keep in mind that this is still a super early idea and the purpose of this post is to get the particulars fleshed out.</em></p>\n<p>What follows is my proposed folder structure of the personal API. Modules come in two types: purpose and utility. Utility modules allow the purpose modules to do their thing, like retrieving/modifying/storing data (on DigitalOcean&#39;s Spaces, Amazon&#39;s S3, or your own storage location). Ideally you should never have to touch those modules unless you wanted to improve upon it or fork your own version. Purpose modules can be anything you think of and the examples I listed could be your personal Medium, Pinboard/Pinterest, Things, Spotify, Flickr/Instagram, Last.fm, and so on.</p>\n<pre><code class=\"language-text\">api\n├─ …\n├─ modules\n│ ├─ purpose\n│ │ ├─ blog\n│ │ ├─ bookmarks\n│ │ ├─ music\n│ │ ├─ photos\n│ │ ├─ portfolio\n│ │ ├─ reminders\n│ │ ├─ scrobbler\n│ │ └─ status\n│ └─ utility\n│ ├─ database\n│ └─ storage\n└─ …</code></pre>\n<p>The purpose functions would be able to call the utility functions to, well, function. <code>webb.page</code> will be the guinea pig for the initial release of personalOS. Once it works there I will update parts of <code>inc.sh</code> and <code>dsgn.agency</code> to take advantage of it as well.</p>\n<h2 id=\"why-bother\">Why Bother?</h2>\n<p>You, dear reader, are probably not terribly interested in self-hosting and dev ops. Even developers/engineers who know <em>how</em> to do it aren&#39;t interested. Some of the common reasons against self-hosting are fear (of the work involved), apathy (&quot;my data isn&#39;t super important anyway&quot;), time (the only valid reason IMHO), or a combination of the three. While I understand I also think <strong>it is incredibly important to claim your space on the Internet</strong>. We&#39;re all <a href=\"https://info.ideagrove.com/knowledgebase/digital-marketing/what-is-digital-sharecropping-and-why-is-it-a-bad-thing\" title=\"What is &#39;digital sharecropping&#39; and why is it a bad thing?\">digital sharecroppers</a> so why not tend to <em>our own space on the &#39;Net</em>?</p>\n<p>It&#39;s a helluva lot easier to monetize your content when it lives on your platform, or personalOS in this case. Monetization doesn&#39;t have to be your focus though. How about this: something that irritates me about Apple&#39;s Music app and iOS 13 is that I have no idea how to get my music that used to live in iTunes, onto my phone anymore. Once I build a music module for personalOS I can upload my music library to my own server and stream it on the go. The major streaming services are great and all but my music collection has rips from video game soundtracks, anime, and otherwise defunct groups with no content on these streaming services. Why would I give that up? Why <strong>should</strong> I?!</p>\n<h2 id=\"business-opportunity\">Business Opportunity?</h2>\n<p>Y&#39;know what would be nice? Having an easy way to share any files that you&#39;re hosting. Although, you may not want to expose your personal API server to the public. For this purpose, you could use a third-party site like <code>personal.sh</code> to generate shareable links (probably via <code>personal.sh/are</code>, I&#39;m a fan of <a href=\"https://en.wikipedia.org/wiki/Domain_hack\" title=\"Explanation of &#39;Domain hack&#39; on Wikipedia\">domain hacking</a>).</p>\n<p>Because the Internet is open to all, there will inevitably be disturbing/disgusting/morally-bankrupt content shared through <code>personal.sh</code>. If/when that happens, the offending user will have their IP address blacklisted and put on display at <code>personal.sh/it</code>. It&#39;s no secret that anonymity gives some people courage to behave in a way that&#39;s unbecoming.</p>\n<h2 id=\"prior-art\">Prior Art</h2>\n<p>There&#39;s a company named Urbit who&#39;s mission is quite similar:</p>\n<blockquote>\n<p>An Urbit is a networked personal server that runs your apps and stores your data, serves as your permanent online identity and puts you back in control of your digital life under a single login.</p>\n<p>When you’re ready.<br/>— <a href=\"https://twitter.com/urbitlive/status/1192262246384230400\" title=\"&#39;urbit live&#39; account on Twitter\">urbit live</a></p>\n</blockquote>\n<p>Only problem is, their official site makes their mission <a href=\"https://news.ycombinator.com/item?id=21672481\">quite</a> <a href=\"https://news.ycombinator.com/item?id=18908051\">confusing</a> <a href=\"https://news.ycombinator.com/item?id=6438320\">to many</a>. I don&#39;t know about you but if I&#39;m entrusting my data to something I run, I want to have more than a <em>general idea</em> of how it works.</p>\n<p><strong>EDIT (2019.12.05):</strong> This post has generated lively discussion on <a href=\"https://news.ycombinator.com/item?id=21684949\">HackerNews</a> and as a result we now have more examples of prior art!</p>\n<ul>\n<li><a href=\"https://github.com/cjdelisle/cjdns\">cjdns</a></li>\n<li><a href=\"https://dogsheep.github.io\">Dogsheep</a>, by Simon Willisons</li>\n<li><a href=\"https://www.infoq.com/presentations/strong-types-actor-iot\">Islet</a>, by Carl Hewitt</li>\n<li><a href=\"https://libp2p.io\">libp2p</a></li>\n<li><a href=\"https://github.com/danfang/me-api\">me-api</a>, by Daniel Fang</li>\n<li><a href=\"https://github.com/karlicoss/my\">my</a>, by Dmitrii Gerasimov</li>\n<li><a href=\"https://perkeep.org\">Perkeep</a></li>\n<li><a href=\"https://solid.mit.edu\">SOLID (Social Linked Data)</a>, by Tim Berners-Lee</li>\n<li><a href=\"https://github.com/rigoneri/Syte2\">Syte2</a> / <a href=\"https://github.com/jake-101/Syte2-4-Zeit2.0\">Syte2 for Zeit Now v2</a>, by Rodrigo Neri and Jake Peterson</li>\n<li><a href=\"https://unwalled.garden\">Unwalled Garden</a></li>\n<li><a href=\"https://github.com/yggdrasil-network/yggdrasil-go\">Yggdrasil Network</a></li>\n</ul>\n<h2 id=\"fin\">FIN</h2>\n<p>Elsewhere, there exists portions of the personalOS concept of various development maturation levels. To me, this is proof of the worthwhile nature of this idea. Will this likely end up sitting in a repo for years after months of initial work? Probably. Hopefully not...we&#39;ll see how it goes. 🕸</p>\n",
16 "url": "https://blog.webb.page/2019/a-personal-api",
16 "url": "https://blog.webb.page/2019/a-personal-api",
17 "title": "A personal API",
17 "title": "A personal API",
18 "summary": "You are the operating system",
18 "summary": "You are the operating system",
@@ -69,6 +69,20 There's a company named Urbit who's mission is quite similar:
69
69
70 Only problem is, their official site makes their mission [quite](https://news.ycombinator.com/item?id=21672481) [confusing](https://news.ycombinator.com/item?id=18908051) [to many](https://news.ycombinator.com/item?id=6438320). I don't know about you but if I'm entrusting my data to something I run, I want to have more than a *general idea* of how it works.
70 Only problem is, their official site makes their mission [quite](https://news.ycombinator.com/item?id=21672481) [confusing](https://news.ycombinator.com/item?id=18908051) [to many](https://news.ycombinator.com/item?id=6438320). I don't know about you but if I'm entrusting my data to something I run, I want to have more than a *general idea* of how it works.
71
71
72 **EDIT (2019.12.05):** This post has generated lively discussion on [HackerNews](https://news.ycombinator.com/item?id=21684949) and as a result we now have more examples of prior art!
73
74 - [cjdns](https://github.com/cjdelisle/cjdns)
75 - [Dogsheep](https://dogsheep.github.io), by Simon Willisons
76 - [Islet](https://www.infoq.com/presentations/strong-types-actor-iot), by Carl Hewitt
77 - [libp2p](https://libp2p.io)
78 - [me-api](https://github.com/danfang/me-api), by Daniel Fang
79 - [my](https://github.com/karlicoss/my), by Dmitrii Gerasimov
80 - [Perkeep](https://perkeep.org)
81 - [SOLID (Social Linked Data)](https://solid.mit.edu), by Tim Berners-Lee
82 - [Syte2](https://github.com/rigoneri/Syte2) / [Syte2 for Zeit Now v2](https://github.com/jake-101/Syte2-4-Zeit2.0), by Rodrigo Neri and Jake Peterson
83 - [Unwalled Garden](https://unwalled.garden)
84 - [Yggdrasil Network](https://github.com/yggdrasil-network/yggdrasil-go)
85
72 ## FIN
86 ## FIN
73
87
74 Elsewhere, there exists portions of the personalOS concept of various development maturation levels. To me, this is proof of the worthwhile nature of this idea. Will this likely end up sitting in a repo for years after months of initial work? Probably. Hopefully not...we'll see how it goes. 🕸
88 Elsewhere, there exists portions of the personalOS concept of various development maturation levels. To me, this is proof of the worthwhile nature of this idea. Will this likely end up sitting in a repo for years after months of initial work? Probably. Hopefully not...we'll see how it goes. 🕸
@@ -98,5 +98,5
98 "app/dist"
98 "app/dist"
99 ]
99 ]
100 },
100 },
101 "version": "2019.12.03.1"
101 "version": "2019.12.05"
102 }
102 }
Comments 0
You need to be logged in to leave comments. Login now