diff --git a/blog.hugo/archetypes/default.md b/blog.hugo/archetypes/default.md deleted file mode 100644 index 00e77bd..0000000 --- a/blog.hugo/archetypes/default.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "{{ replace .Name "-" " " | title }}" -date: {{ .Date }} -draft: true ---- - diff --git a/blog.hugo/assets/scripts/main.js b/blog.hugo/assets/scripts/main.js deleted file mode 100644 index b336f2a..0000000 --- a/blog.hugo/assets/scripts/main.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Use a window's inner dimensions for viewport units. -This fixes some mobile bugs -*/ - -var root = document.documentElement; -let vh = window.innerHeight * 0.01; -root.style.setProperty('--vh', `${vh}px`); - -// We listen to the resize event -window.addEventListener('resize', () => { - // We execute the same script as before - let vh = window.innerHeight * 0.01; - root.style.setProperty('--vh', `${vh}px`); -}); \ No newline at end of file diff --git a/blog.hugo/assets/scripts/search.js b/blog.hugo/assets/scripts/search.js deleted file mode 100644 index b3c1eb7..0000000 --- a/blog.hugo/assets/scripts/search.js +++ /dev/null @@ -1,226 +0,0 @@ -/* -tutorials used: -- https://aaronluna.dev/blog/add-search-to-static-site-lunrjs-hugo-vanillajs/#codepen-with-final-code -- https://victoria.dev/blog/add-search-to-hugo-static-sites-with-lunr/ -*/ - -let pagesIndex, searchIndex -const MAX_SUMMARY_LENGTH = 30 -const SENTENCE_BOUNDARY_REGEX = /\b\.\s/gm -const WORD_REGEX = /\b(\w*)[\W|\s|\b]?/gm - -async function initSearch() { - try { - const indexJsonUrl = document.getElementById("base-url").dataset["baseUrl"] + "/index.json"; - const response = await fetch(indexJsonUrl); - pagesIndex = await response.json(); - searchIndex = lunr(function () { - this.field("title"); - this.field("content"); - this.ref("href"); - pagesIndex.forEach((page) => this.add(page)); - }); - } catch (e) { - console.log(e); - } - console.log("Search index initialized") - // Get the query parameter(s) - const params = new URLSearchParams(window.location.search) - const query = params.get('query') - - // Perform a search if there is a query - if (query) { - // Retain the search input in the form when displaying results - document.getElementById('search-input').setAttribute('value', query) - - // Update the list with results - console.log("search performed") - let results = searchSite(query) - renderSearchResults(query, results) - } -} - -initSearch(); - -function searchSite(query) { - const originalQuery = query; - query = getLunrSearchQuery(query); - let results = getSearchResults(query); - return results.length - ? results - : query !== originalQuery - ? getSearchResults(originalQuery) - : []; -} - -function getLunrSearchQuery(query) { - const searchTerms = query.split(" "); - if (searchTerms.length === 1) { - return query; - } - query = ""; - for (const term of searchTerms) { - query += `+${term} `; - } - return query.trim(); -} - -function getSearchResults(query) { - return searchIndex.search(query).flatMap((hit) => { - if (hit.ref == "undefined") return []; - let pageMatch = pagesIndex.filter((page) => page.href === hit.ref)[0]; - pageMatch.score = hit.score; - return [pageMatch]; - }); -} - -function renderSearchResults(query, results) { - clearSearchResults(); - updateSearchResults(query, results); -} - -function clearSearchResults() { - const results = document.querySelector("#search-results"); - while (results.firstChild) results.removeChild(results.firstChild); -} - -function updateSearchResults(query, results) { - document.getElementById("results-query").innerHTML = query; - document.querySelector("#search-results").innerHTML = results - .map( - (hit) => ` -
${createSearchResultBlurb(query, hit.content)}
-- -i like that it's an outsider take on fedi and is not afraid to push boundaries and go beyond what mastodong has envisioned - -what's missing is muting/blocking actually being functional. i'd also like to see Room come back lol - -what should be removed: basically nothing. maybe proxy accounts. if i wanted minimal i'd go use some useless software like honk, misskey maximalism is actually really fun - -- ---- - -the general objection is "that's not how we currently federate", as if the way we currently federate should be preserved forever - ---- - -"relays" on fedi are like the worst possible interpretation of relays. imagine one big irc room that has no topic whatsoever. just thousands of people posting whatever they want. why - -also imagine your irc client had autologging turned on, and didn't have an easy way to clear specific logs - ---- - -this shit should be generic and it can be browsed by a social web browser or a linked data renderer - -i think it makes the most sense to lean into the Web and just focus on making the publishing as easy and straightforward as possible. i think most people (ideologues aside) don't actually want "federation" as commonly thought of. in absolute terms they want their posts to show up in a reader. - -there still is a place for federation, the "federation" i'm interested in is more like replication in a distributed database. and i'd like to link it all up across domains like "nomadic identity". - -example: imagine a network of generic servers - -your server shuts down, you walk up to any server that has your posts already, prove your identity, pick up like nothing happened - -basically you should be able to "claim" your federated profile on other domains, kind of like how on a centralized site you can claim your profile page if you're a celebrity or whatever - -nomadic identity is literally just doing this process yourself beforehand by setting up mirrors/replicas of your key - ---- - -i forget who it was that said "a single timeline is unsustainable" (aaron parecki?) but i'm feeling more like the real cardinal sin is publishing to a single profile. i don't mind *reading* everything in a single view, although making lists certainly helps. it's the *publishing* that annoys me. i almost *never* want to send a post to *all* of my followers. and this goes doubly for replies. i often want to reply within a specific context and only *optionally* tell my followers about it. - -"one account per feed" is a goddamn travesty. an account should be able to have multiple profiles, and a profile should be able to have multiple feeds, and you should be able to follow individual feeds instead of being forced to follow an entire profile. - -yeah, i was thinking similarly. except i was going to make Collections into actors that could be followed. which would be incompatible with mastodon, because mastodon assumes wrongly that actors must be exactly one of The Five Types. but then again, i am somewhat losing interest in this whole "social media" thing and would prefer to focus on a purer model of publishing web resources and managing them with collections. so maybe "mastodon compatibility" is not all it's cracked up to be... - -if anything, i was thinking of treating "mastodon compatibility" similar to a crossposter up until such point that mastodon relaxes or removes its unnecessary type-checking. you'd have an actor that you can send your activities to, and it will translate them into mastodon-flavoured activitypub and deliver out that translated copy. this actor would have its preferredUsername and all that compat stuff. - ---- - -btw i think that deletes being so costly is something that is entirely a consequence of having essentially replicated the data with a ttl of forever. that's the default mode of every "fedi" software. it makes no sense for most people and it stems from the ideological decisions of over a decade ago - -by which i mean: there's a word for having your published content be replicated to other sites, and it's "syndication". we had this technology for really simple syndication... rss. it later evolved into atom. the "fediverse" was founded on ostatus built on atom feeds. when we say we're "federating" we're really more accurately "syndicating". you just don't have control over the accounts being created on other domains, on your behalf. - -i keep talking about how the metaphors are wrong, like how we merged the concepts of publishing and messaging to the detriment of both. we're sending messages that contain the entirety of a resource that we meant to be published. of course it's going to lead to outcomes that don't make sense. maybe one day people will understand this - -also... authorized fetch won't solve this. if you have a password protected blog, and someone is saving every new post and republishing it, and you let this happen continually, then what's the point of the password? - ---- - -i think it's very important that users be able to understand and reason about the software that they are using! when it "does the thing", it should do so predictably. - -the argument for generic AP is that generic AP allows you to manage resources predictably, without having to care what others will do. it's a standardized storage layer. without it, you need a mastodon account, a pixelfed account, etc... every "platform" owns your data separately. - -imagine if switching from outlook to thunderbird necessitated losing all your emails and maybe even your contacts. \ No newline at end of file diff --git a/blog.hugo/content/_dump/socialhub-threads/_index.md b/blog.hugo/content/_dump/socialhub-threads/_index.md deleted file mode 100644 index f7ba421..0000000 --- a/blog.hugo/content/_dump/socialhub-threads/_index.md +++ /dev/null @@ -1,2 +0,0 @@ -+++ -+++ \ No newline at end of file diff --git a/blog.hugo/content/_dump/socialhub-threads/dereferencing-non-https.md b/blog.hugo/content/_dump/socialhub-threads/dereferencing-non-https.md deleted file mode 100644 index a597fa7..0000000 --- a/blog.hugo/content/_dump/socialhub-threads/dereferencing-non-https.md +++ /dev/null @@ -1,127 +0,0 @@ -+++ -title = "Dereferencing non-HTTPS URIs as `id`" -date = "2019-10-11" -+++ - -{{toc}} - -## Preserved text - -
I really like strawberries!
", - "source": { - "content": "I *really* like strawberries!", - "mediaType": "text/markdown"} -} -``` - -This example Note uses HTML for its `content`, in order to demonstrate the `source` property. - -Also, ActivityPub Example 4: - -``` -{"@context": "https://www.w3.org/ns/activitystreams", - "type": "Create", - "id": "https://chatty.example/ben/p/51086", - "to": ["https://social.example/alyssa/"], - "actor": "https://chatty.example/ben/", - "object": {"type": "Note", - "id": "https://chatty.example/ben/p/51085", - "attributedTo": "https://chatty.example/ben/", - "to": ["https://social.example/alyssa/"], - "inReplyTo": "https://social.example/alyssa/posts/49e2d03d-b53a-4c4c-a95c-94a6abf45a19", - "content": "Argh, yeah, sorry, I'll get it back to you tomorrow.
-I was reviewing the section on register machines, - since it's been a while since I wrote one.
"}} -``` - -This example Note uses two `` elements, representing two short paragraphs (once again not “less than a single paragraph”). - -So even the specs themselves are inconsistent on any distinction. - -# How much does this actually matter? - -Arguably not much, since implementations often convert Note and Article into their own internal schema for statuses anyway. But it could still be beneficial to set a clearer distinction going forward on how these types should be assigned, ideally. - -
- -hash of public key; hash of first version of document (in chain), like they did. many decent options! - -the did:plc approach allows you to rotate keys because your current identity document will eventually chain back to the original one which hashes to the value of your account ID - -the bit the central server is doing in this system is - basically - ordering things & letting you use your recovery key to oblitterate any updates from your primary key from the last 72 hours (for if your primary key was compromised) - -the key difficulty without any central server is timestamping things to ensure & validate ordering - -- -cobaltvelvet writes: - -
- -i think i just like the idea of a minimal relay as this resolver, that would keep the least state possible inside it, so it can be swapped in and out easily, maybe even transparently so by your instance. but it would always need A Way to validate the 'latest location', either the keypairs that arent very securely held atm but instances already have, or a third secret thing (a dedicated channel, like making the resolver email you to confirm a migration, or another layer of signatures) - -if i had to point to an inspiration, i think bittorrent trackers are great, easily replceable by a DHT, but also easy to just use two for redundency . ofc they don't really have to bother with any validation, but your instance can - -- ---- - -i'd just need to think through how to get consistency between different webfinger services, so that they agree on the response and serve you up the same JRD from some decentralized/distributed data store \ No newline at end of file diff --git a/blog.hugo/content/_index.md b/blog.hugo/content/_index.md deleted file mode 100644 index 7fda3a3..0000000 --- a/blog.hugo/content/_index.md +++ /dev/null @@ -1,4 +0,0 @@ -+++ -title = "threads" -summary = "originally posted as threads on social media" -+++ \ No newline at end of file diff --git a/blog.hugo/content/_search.md b/blog.hugo/content/_search.md deleted file mode 100644 index aa59033..0000000 --- a/blog.hugo/content/_search.md +++ /dev/null @@ -1,7 +0,0 @@ -+++ -layout = "search" -url = "search" -name = "Search results" -[_build] -list = "never" -+++ \ No newline at end of file diff --git a/blog.hugo/content/blog/_index.md b/blog.hugo/content/blog/_index.md deleted file mode 100644 index d51ae88..0000000 --- a/blog.hugo/content/blog/_index.md +++ /dev/null @@ -1,6 +0,0 @@ -+++ -title = "some of my threads out of context" -summary = "mostly a compilation of times i replied to myself on social media or in chat" -+++ - -[[rejected outtakes]](misc.md) \ No newline at end of file diff --git a/blog.hugo/content/blog/activitypub-proglang/index.md b/blog.hugo/content/blog/activitypub-proglang/index.md deleted file mode 100644 index 9d18fe2..0000000 --- a/blog.hugo/content/blog/activitypub-proglang/index.md +++ /dev/null @@ -1,27 +0,0 @@ -+++ -title = "an analogy between activitypub and programming languages" -summary = "you don't say \"compatible with c++\" you say \"written in/with c++\". similarly, we might say that fedi is \"written with activitypub\" or \"implemented using activitypub\"" -date = "2023-03-28T09:13:00-06:00" -source = "https://mastodon.social/@trwnh/110101321320240671" -+++ - -people think activitypub is a network protocol when it's really more like a programming language. you don't say "compatible with c++" you say "written in/with c++". similarly, we might say that fedi is "written with activitypub" or "implemented using activitypub", not "compatible with activitypub" or anything suggesting a network. - -analogously: - -ap = inter-process communication (e.g. d-bus) -as2 = data interchange format (e.g. protobuf) -json-ld = media type -rdf = facts and logic - -if we're being honest the majority of "fedi" is part of the "network" that is "compatible with mastodon". mastodon *is* the network protocol. we just express it in terms of "mastodon-flavoured activitypub" - -put another way, there is no such thing as "fedi", but rather, multiple different and distinct "fedis" that only partially overlap. - -it occurs to me that activitypub may be best thought of as a cms with an optional distributed storage backend - -similarly: no one in fedi is doing real activitypub. it is probably more appropriate to say we are doing AS2 + Linked Data Notifications - -side effects are more accurately defined by the mastodon documentation than by the activitypub spec - -we're kind of in the situation where someone has invented the C Programming Language, maybe D-Bus, but we still don't have a FreeDesktop.org or XDG equivalent. \ No newline at end of file diff --git a/blog.hugo/content/blog/art-not-commodity/index.md b/blog.hugo/content/blog/art-not-commodity/index.md deleted file mode 100644 index b3bb94d..0000000 --- a/blog.hugo/content/blog/art-not-commodity/index.md +++ /dev/null @@ -1,22 +0,0 @@ -+++ -title = "art is not a commodity" -summary = "the real answer to making sure artists get paid is to actually pay them for the work they do, not to commodify what they produce" -date = "2023-01-02T21:00:00-06:00" -source = "https://mastodon.social/@trwnh/109623038871646811" -+++ - -well opposing copyright isn't thievery, for a start. theft is the act of taking something without returning it, removing the original. digital information can be infinitely and perfectly copied. - -copyright enforcement is instead about giving certain parties exclusive monopolies on the spread of information. this gatekeeps culture and stifles free expression. in return for what? trying to sell access? - -note also this monopoly is only enforced via the threat of state violence. - -tangentially, there's also the fundamental inversion of value that occurs when artists try to fund themselves by selling art as if it were a commodity. the value in art is not necessarily in the final product alone but moreso in the creation of it. - -copyright asks us to perform creative labour for free, and hope to recoup our losses via the market (in which you must differentiate yourself from millions of functionally equivalent forms of art and entertainment -- good luck!) - -when you recognize this inversion of value, you recognize that the real answer to making sure artists get paid is to actually pay them for the work they do, not to commodify what they produce. things like commissions, patronage, public works funds, etc. all get to the root and heart of the issue. - -copyright is in effect more akin to theft -- theft from the public, from the commons, from culture. it benefits no one except those who "own" a lot of art -- the disneys of the world. - -in short: if you want artists to get paid, copyright is a really poor and ineffective way to do that. it just leads to big monopolies on art, at the expense of everyone else. \ No newline at end of file diff --git a/blog.hugo/content/blog/blocked/index.md b/blog.hugo/content/blog/blocked/index.md deleted file mode 100644 index 4a347b0..0000000 --- a/blog.hugo/content/blog/blocked/index.md +++ /dev/null @@ -1,16 +0,0 @@ -+++ -title = "blocked" -summary = "it's the finality of such a situation that bothers me the most; the knowledge that no amount of apology will matter, nor will any attempt at reconciliation even be seen" -date = "2018-02-27T21:23:00-00:00" -source = "https://mastodon.social/@trwnh/99599426061591957" -+++ - -i wish i wasn't autistic because i'm really bad at reading social situations and here i am thinking i'm making light banter when instead i'm one post away from being blocked, before i can even apologize for misreading intent. end result is i just feel extremely shitty and like i'm terrible at being a human. i don't know how to vent my frustrations without it seeming personal, apparently - -also it's the finality of such a situation that bothers me the most; the knowledge that no amount of apology will matter, nor will any attempt at reconciliation even be seen. i've never been able to properly handle irreversibility. even though a block is technically reversible, it isn't practically. one mistake and it's over. and i *will* make those mistakes, because not only am i not perfect, but i'm hopelessly broken beyond repair, no matter how hard i try to learn how to socialize. - -and yet... i've not really been blocked much in my life (bar some democrats on birdsite who refuse to listen to left-poc) so i'm not totally insufferable or an absolute troll or a toxic personality. but of the more "misunderstood" blocks, one particular one comes to mind, because it was the only case where that person actually unblocked me years later. but that was much worse and what i said then was extremely insensitive. i wish i knew why they unblocked me. i'm too afraid to ask. - -sometimes i wonder why i care what total strangers think of me, and i don't know if it's better or worse to not care. it's not "shame" or "approval-seeking"; it's more of an intense urge to not be hated or begrudged. - -i guess that's a part of life, but it's not a part i'm comfortable with and i don't know if i ever will be. \ No newline at end of file diff --git a/blog.hugo/content/blog/boktai-3/index.md b/blog.hugo/content/blog/boktai-3/index.md deleted file mode 100644 index b09ca22..0000000 --- a/blog.hugo/content/blog/boktai-3/index.md +++ /dev/null @@ -1,10 +0,0 @@ -+++ -title = "boktai deserved better" -summary = "where do you go to find quirky existentialist video games based on norse mythology and spaghetti westerns in the year of your lord 2018, you ask? you don't ;_;" -date = "2018-04-15T19:54:00-00:00" -source = "https://mastodon.social/@trwnh/99865201213509948" -+++ - -i'm so emo that boktai 3 never launched outside of japan and also that boktai as a series is super dead and konami will never continue it and kojima probably can't/won't either due to copyright and the fact that it's been over 10 years since boktai ds and also kojima doesn't work for konami anymore UGH - -where do you go to find quirky existentialist video games based on norse mythology and spaghetti westerns in the year of your lord 2018, you ask? you don't ;_; #boktai \ No newline at end of file diff --git a/blog.hugo/content/blog/camera-gear/index.md b/blog.hugo/content/blog/camera-gear/index.md deleted file mode 100644 index 5793393..0000000 --- a/blog.hugo/content/blog/camera-gear/index.md +++ /dev/null @@ -1,23 +0,0 @@ -+++ -title = "don't worry about camera gear" -summary = "I wouldn't recommend going for ILCs unless you have a dedicated use case [...] Once you've picked a niche, then the gear choices will result naturally." -date = "2018-04-09T22:28:00-00:00" -source = "https://mastodon.social/@trwnh/99831836537266861" -+++ - -> On a less cranky note, I really want to get myself a nice digital camera. Any photographers out there with strong opinions on the matter? - -* What type of photos do you want to take? -* What's your budget? -* Do you want to deal with carrying multiple lenses / heavy bodies / etc? -* What's the destination / use case for your photos? - -> all kinds. Budget isn't too much of an issue I can just save up longer. Multiple lenses are fun and I'll probably get a couple solid bags so not too put out about weight. Destination unknown. - -Well, I'm just going to say that if you don't have any idea at all, then that also means you can't really get a good answer. I wouldn't recommend going for ILCs unless you have a dedicated use case -- a compact or even a smartphone will do fine in most general cases. (I picked up a Sony RX100 M2 used for a few hundred bucks for my general shots.) - -Once you've picked a niche, then the gear choices will result naturally. As a general rule, spend more on glass than on bodies. Probably pick two telephoto lenses, one below ~70mm (down to 35mm or 24mm) and one above (up to about 200mm). Get a body with a sensor that's at least APS-C, and at least 12MP. A Sony a6000 or a6300 will be most versatile in the $750-1000 range (body only). You'll be spending an additional $400-$1000 for each quality lens you also pick up. - -> fair enough! I'm just doing my research right now so I appreciate the honesty. - -you're welcome :) it's really important to know what you're getting yourself into. a lot of people buy in way too early and stick with a kit lens because they didn't budget for lens -- and at that point, you might as well get a 1" compact, maybe even a Micro Four-Thirds like the Fujifilm X100 series if you can afford it. \ No newline at end of file diff --git a/blog.hugo/content/blog/crossposters/index.md b/blog.hugo/content/blog/crossposters/index.md deleted file mode 100644 index b3d4fa1..0000000 --- a/blog.hugo/content/blog/crossposters/index.md +++ /dev/null @@ -1,27 +0,0 @@ -+++ -title = "stop using crossposters" -summary = "crossposts really don't engender organic engagement. They feel robotic and distant, largely because they're just that" -date = "2017-11-26T02:20:00-06:00" -source = [ - "https://mastodon.social/@trwnh/99069749589979672", - "https://mastodon.social/@trwnh/99093644445157168", -] -+++ - -Stop using crossposters. - -Not to, like, force y'all to do something, but crossposters are self-defeating. - -It's far better to commit to a network rather than just make a carbon copy of yourself, because if you're posting exactly the same things, then what even is the point of having two networks? - -That's just unnecessarily redundant. - -I've been through this kinda rigmarole before when I tried using diaspora*, and the end result was that I completely abandoned it because I wasn't getting any meaningful interactions out of it compared to Twitter. Which was a shame, because I really liked diaspora*. - -The problem, of course, is that you will inevitably gravitate to whichever platform nets you more interaction. And crossposts really don't engender organic engagement. They feel robotic and distant, largely because they're just that - -## followup - -ugh i really hope crossposters don't slowly choke mastodon like they did to diaspora* - -if you're just crossposting everything you tweet on birdsite then what even is the point of making a mastodon account? that's glorified spam at worst, and a recipe for abandonment. \ No newline at end of file diff --git a/blog.hugo/content/blog/deactivating-twitter/index.md b/blog.hugo/content/blog/deactivating-twitter/index.md deleted file mode 100644 index 267ac3d..0000000 --- a/blog.hugo/content/blog/deactivating-twitter/index.md +++ /dev/null @@ -1,18 +0,0 @@ -+++ -title = "nothing is truly forever" -summary = "At some point, the final copy of any given data will be deleted. Or it will lose relevance. Or it will slip into obscurity." -date = "2017-12-20T04:53:00-06:00" -source = "https://mastodon.social/@trwnh/99206247716252048" -+++ - -I just deactivated some really old accounts I had on birdsite, ones I'd stopped using years ago, but had left up as a sort of archive... The last relics of a bygone era, of a personality long dead... A mark of my former selves. - -Makes me think about the fact that nothing is truly forever, not even the internet and the data we think will last forever. At some point, the final copy of any given data will be deleted. Or it will lose relevance. Or it will slip into obscurity. - -Of course, it was already not as I had left it. Accounts I had once conversed with, deleted. Maybe some of those people met the same fate as their accounts. Who knows? A lot changes in three years. - -I can't back up the DMs that have been deleted, and the only copy of the replies are in the notification emails sent out to an inbox of a Gmail I'd long forgotten I had. - -Kind of a heavy feeling. - -The pictures will be gone in 30 days, but I can't help but think of the pictures lost forever from Twitpic or Yfrog or all of those other image hosts we all used before image hosting became a standard part of any web app. \ No newline at end of file diff --git a/blog.hugo/content/blog/defining-quote-posts/index.md b/blog.hugo/content/blog/defining-quote-posts/index.md deleted file mode 100644 index 3271385..0000000 --- a/blog.hugo/content/blog/defining-quote-posts/index.md +++ /dev/null @@ -1,77 +0,0 @@ -+++ -title = "defining quote posts" -summary = "to me, the way i see quote posts is essentially as a \"loud reply\" or as a \"breakout thread\"" -date = "2023-05-01T12:07:00-06:00" -source = "https://mastodon.social/@trwnh/110294523321644375" -+++ - -fwiw my take about quotes is that either - -- they're just links with special tag markup that lets them be identifiable as activitypub objects -- they're supported more at the protocol level a la Announce with content, or possibly a "quotes" collection a la "likes" and "shares" -- they represent a new context (assuming mastodon ever adopts a first-class concept of conversations or threads, instead of relying solely on inReplyTo chains for logical grouping) - -my further idea was to decide if it notifies based on whether the type is Link or Mention (a la webmentions) - -in an alternate timeline we could have had generic rendering of activities based on name/summary/content and maybe actor/type/object - -such a generic renderer would be something like... - -> `
-- -If anything, the recent developments have definitely gotten me to more seriously revisit some ideas I had a few years back about a multi-protocol approach[^multi-proto-approach] and how best to synthesize several different protocols that have similar or different approaches to certain things. The main thing I'm trying to formulate right now is a generic understanding of what is a protocol and what makes up a protocol. To give an example limited to just 3 "protocols" that mostly work off of from/to semantics, we can look at SMTP, XMPP, and ActivityPub. - -- Data format: SMTP is more or less plaintext, XMPP is XML, and ActivityPub is JSON. -- Message payload format: SMTP uses RFC 822 messages, XMPP uses stanzas, and ActivityPub uses AS2 Activities. -- Message semantics: SMTP messages have headers and body content. XMPP stanzas can be message, presence, or information query. ActivityPub activities... are activities. That's it. - -So before you even get to the part where you can do anything interesting, you find that ActivityPub is really not much of a protocol. All three of these protocols let you "send and receive", but there's more to communication than just sending and receiving. So, given that, what does ActivityPub *actually* provide? - -The best I can describe it right now, ActivityPub provides the following "protocols" layered on top of LDN: - -- A protocol for "following". You send a `Follow`, it can trigger an `Accept` or `Reject`, you can `Undo` it later, and there are side effects of being added to `followers`/`following`. -- A protocol for "liking". You send a `Like`, there are side effects of being added to the `likes` collection. -- A protocol for "(re)sharing". You send an `Announce`, there are side effects of being added to the `shares` collection. - -Everything else is far too undefined or under-defined to constitute much of a "protocol". Things like Create have "surprisingly few side effects" according to the ActivityPub TR, because they were intended for the C2S API to be able to do basic CRUD and Collection management. But in the fediverse, Create actually has a lot more to it! So if we were to define a basic "social media post" application protocol for the lowest common denominator of most of the current fediverse, then we need to define more than what the ActivityPub spec concerns itself with, just to get to "hello world" levels of functionality. We need to explicitly define the following additional things to get from "AP Create notification" to "social media post" in its most limited form: - -- You send a `Create` where the `object` is a `Note`. - - The object MUST have `content` whose value is a string. - - The content MUST conform to some sanitized subset of HTML. - - The object MUST have a `published` whose value is a string containing a timestamp. - - The object MUST have an `attributedTo` whose value is exactly one actor. - - The actor MUST be of type `Person`. - - The actor MUST have a `name` whose value is a string. - - The name MUST be plain text, and will be interpreted as plain text. - - The actor MUST have an `icon` whose value is the URL to a 1:1 image file. - - The actor MUST have a `preferredUsername` whose value is a string. - - The username MUST be unique on the domain. - - The username MUST link back to the actor when querying that actor's domain's WebFinger endpoint for an `acct:` URI formed of the username and the domain. - - The object MUST have `to` or `cc` or both, whose value is an array which contains at least `https://www.w3.org/ns/activitystreams#Public`. - -Now, I'm simplifying a bit, so the above has the following caveats: - -- Requirements can be relaxed or willfully violated as various needs arise. For example, if an actor is missing an `icon`, the protocol can be modified such that a "default avatar" is assumed instead. -- Requirements can also be added or extended as the protocol matures and develops. For example, support for `inReplyTo`, `attachment`, `tag` can be added over time. -- Protocols may require other protocols or specifications. For example, WebFinger in the above "social media post" protocol. -- Additional protocols would be need to be defined for each use case. For example, a similar protocol for "making a blog post" could be defined using `Create Article`. -- Specifications ideally ought to be followed, but ultimately the real protocol is what implementers end up doing, and the above protocol codifies some mistakes and errors into itself. For example, hard assumptions of actor and object types, hard requirements on the maximum cardinality of properties like `attributedTo`, soft requirements for specifically `https://www.w3.org/ns/activitystreams#Public` instead of `as:Public`. (All of these things represent real incorrect assumptions by real implementers.) - -When you put it like this, it becomes clear that if the fediverse wants to continue to make use of ActivityPub, then there are a *lot* of things that need to be explicitly defined as protocols layered[^protocol-layering] on top of ActivityPub. The "implicit protocol of the fediverse" is not sufficiently described by "the ActivityPub specification". We need to standardize and align on common patterns and common protocols for those patterns. - -And the challenge here, the issue is, that if we don't do this work at a grassroots level, then Meta will do it for us. (Can you imagine a "developer portal" for "interoperating with Threads"?) Things like the FEP process allow writing up these "micro-protocols", and then after that, the difficult task of cat-herding begins, as you need to get implementers onboard with adhering to these specifications. And of course, we're all mostly doing this in our free time and without access to the resources that larger organizations have or can gain access to. So it's going to be an uphill battle. But whichever "protocol building blocks" we can agree and align upon, let's go for it. - -[^multi-proto-approach]: I was specifically looking at a "unified communication" project, which mapped abstract forms of communication like "messaging", "publishing", "discussing", "reading" onto existing protocols like SMTP, XMPP, ActivityPub, IRC, RSS, ATOM, HTTP. There's a risk of ending up with something like Pidgin here, but maybe that's not the worst thing. -[^protocol-layering]: And of course, other protocols and other layerings are possible. Libervia (formerly Salut a Toi) does AS2 with PubSub over XMPP, but offers an "ActivityPub gateway". You could, if you wanted to, send AS2 over an SMTP transport. \ No newline at end of file diff --git a/blog.hugo/content/blog/multiple-accounts/index.md b/blog.hugo/content/blog/multiple-accounts/index.md deleted file mode 100644 index afaaaa0..0000000 --- a/blog.hugo/content/blog/multiple-accounts/index.md +++ /dev/null @@ -1,26 +0,0 @@ -+++ -title = "multiple accounts" -summary = "why/when do people use multiple accounts, and what features can be implemented to reduce the friction in using just one account?" -date = "2017-12-17T03:55:00-06:00" -source = "https://mastodon.social/@trwnh/99189033326279405" -+++ - -unrelated thought: been trying to hash out a solution to the "multiple accounts" issue with social media. namely: why/when do people use multiple accounts, and what features can be implemented to reduce the friction in using just one account? would appreciate feedback. - -off the top of my head: - -- private vs public accounts for trusted people (answered by privacy options on toots) -- multiple interests (not really solved currently; perhaps implementing a tag system and letting people mute certain tags? Diaspora*-style aspects can get complicated) -- separate identity (unsolvable and would be insecure to attempt with one account) - -wrt multiple interests, this really is my biggest pain point with ANY social media (coming from someone who has had like 15 birdsite accounts at once) - -perhaps not exactly tags, but having a category system like google+ would be nice and perhaps easiest to manage when considering tootboosts. but this also might complicate the issue? nevertheless, it could be optional (default behavior would be to boost to your profile, no categorization involved) - -the tag approach would be easiest for your own toots, but the categories wouldn't be too bad and would also allow for separating different boosts - ---- - -## further discussion - -problem with diaspora*'s aspects (and by extension, Google+ circles which aped it) is that it's a bidirectional metaphor for a unidirectional relationship. you're supposed to pick who can see a post, but they might not even follow you. I would understand if instead it functioned and was advertised as a way to split your timeline into multiple timelines. As is, sharing to aspects/circles/etc. is needlessly confusing. \ No newline at end of file diff --git a/blog.hugo/content/blog/nation-stateification/index.md b/blog.hugo/content/blog/nation-stateification/index.md deleted file mode 100644 index f870d4d..0000000 --- a/blog.hugo/content/blog/nation-stateification/index.md +++ /dev/null @@ -1,5 +0,0 @@ -oh right i forgot we live in a geopolitical climate of tens of thousands of digital nation-states each with their own culture and borders. for a second there i thought i was using a general communication service - -anarchist, but against fediverse "instances" - -the dilemma of fedi is that i don't want to host my own service using current software, but i don't want to be judged by whose service i use or by who else uses that service \ No newline at end of file diff --git a/blog.hugo/content/blog/necromancy/index.md b/blog.hugo/content/blog/necromancy/index.md deleted file mode 100644 index 6451247..0000000 --- a/blog.hugo/content/blog/necromancy/index.md +++ /dev/null @@ -1,14 +0,0 @@ -+++ -title = "necromancy" -summary = "\"i saw the soul of my grandpa and he told me to keep working hard\" is almost mystic and folkloric, not really like \"i summoned the soul of my grandpa to give me encouragement\" and still one step removed from \"i inserted my grandpa's soul into a corpse / some bones to give him physical form\"" -date = "2018-04-12T07:31:00-00:00" -source = "https://mastodon.social/@trwnh/99845293118930539" -+++ - -i always have to stop and realize people don't mean actual necromancy (learning from the dead) and instead they mean some kinda pseudo-resurrection/reanimation thing in pop culture, haha - -> honestly, is divination through dead people's spirits any better? - -there's not as much stigma against it, compared to the physical. "i saw the soul of my grandpa and he told me to keep working hard" is almost mystic and folkloric, not really like "i summoned the soul of my grandpa to give me encouragement" and still one step removed from "i inserted my grandpa's soul into a corpse / some bones to give him physical form" - -it seems like souls are free to either stay in heaven or roam the land of the living, but giving them physical form is like playing god \ No newline at end of file diff --git a/blog.hugo/content/blog/neoliberalism/index.md b/blog.hugo/content/blog/neoliberalism/index.md deleted file mode 100644 index 6e86462..0000000 --- a/blog.hugo/content/blog/neoliberalism/index.md +++ /dev/null @@ -1,18 +0,0 @@ -+++ -title = "what is neoliberalism" -summary = "in short, everything is a market and the experts should decide the best policies to help the market" -date = "2018-03-14T08:10:00-00:00" -source = "https://mastodon.social/@trwnh/99681239150233207" -+++ - -> What is #neoliberalism? Is it a set defined thing or a term just like liberalism that could mean lots of different things to different people? - -kinda both? liberalism and neoliberalism have academic meanings, but get used differently by different people - -ie neoliberalism is just largely a return to liberalism; the idea that govt's role is to help business, that markets can be used as a force for good https://en.wikipedia.org/wiki/Neoliberalism - -maybe best exemplified by thatcher, reagan, greenspan, clinton; the support of "free trade" agreements like NAFTA and TPP or organizations like the IMF or WTO; opposition to people like ralph nader in the 1970s; concepts like "the marketplace of ideas" or "soft power"; in short, everything is a market and the experts should decide the best policies to help the market - -> [...] - -Neoliberalism seems like a big tent, but that's really only because it's ideologically sparse and lacks substance. Most of the Western world holds a neoliberal economic and domestic policy, and a neoconservative foreign policy. \ No newline at end of file diff --git a/blog.hugo/content/blog/net-neutrality-repealed/index.md b/blog.hugo/content/blog/net-neutrality-repealed/index.md deleted file mode 100644 index fe3e583..0000000 --- a/blog.hugo/content/blog/net-neutrality-repealed/index.md +++ /dev/null @@ -1,37 +0,0 @@ -+++ -title = "the day net neutrality was repealed" -summary = "The Open Internet Order of 2015 which was just repealed was not too much. It was not enough." -date = "2017-12-15T01:35:00-00:00" -source = [ - "https://mastodon.social/@trwnh/99175742733649566", - "https://mastodon.social/@trwnh/99175781630692764", -] -+++ - -> [...] - -Hey, remember when Comcast filtered P2P traffic including BitTorrent, Skype, and Spotify? - -Remember when AT&T blocked FaceTime and Google Voice on their network? - -Remember when Verizon throttled all video except mysteriously for their subsidiary go90? - -Because I remember. - -[Is it] a GOOD thing to have no legal authority to challenge ISPs when they pull the shit they clearly already did? - -Because that's literally all that happened in 2015, w/ forbearance - -In fact, Wheeler ONLY pursued the clauses of Title II that dealt with nondiscrimination (common carrier status), and didn't apply rate regulation or taxes or last-mile unbundling. - -He did this because Verizon successfully sued to prevent the FCC from using S706, and the judge told Wheeler he needed to reclassify as Title II. - -It should be obvious that the "free market" will not solve a problem created by the market. This is market failure, plain and simple. - -> [...] - -Which rules "allow" ISPs to monopolize regions? ISPs collude to not enter markets, renege on coverage expansion contracts, and prevent competition by claiming ownership of the backbone. - -In fact, I would support taking it out of the FCC's hands entirely, so that people like Pai can't take us backwards at their whims as the political winds change. The Open Internet Order of 2015 which was just repealed was not too much. It was not enough. There needs to be an act specifically protecting the free and open internet, and repealing the Telecommunications Act of 1996. Among other acts... - -So pardon me for thinking the decision today was not great. There's an overwhelming pile of evidence that Pai ignored wholesale in order to push an agenda that benefits the ISPs who simply want to profit more, users be damned. \ No newline at end of file diff --git a/blog.hugo/content/blog/one-piece-thematic-breakdown/index.md b/blog.hugo/content/blog/one-piece-thematic-breakdown/index.md deleted file mode 100644 index db59314..0000000 --- a/blog.hugo/content/blog/one-piece-thematic-breakdown/index.md +++ /dev/null @@ -1,42 +0,0 @@ -+++ -title = "a thematic breakdown of one piece" -summary = "east blue = dreams. paradise = family. new world = liberation." -date = "2024-09-30T11:22:54-0600" -source = "original" -+++ - -i was idly thinking about one piece this morning, as one does. mainly thinking about how east blue was peak one piece for me, and those first 100 chapters could honestly stand as their own self-contained story. one piece could have ended right there and i would have come away satisfied with what i read. but of course, it didn't end there, and i'm also glad it didn't end there. but it got me thinking about the overall theme of one piece, and specifically the overall theme of east blue as a self-contained saga. - - - -## from "romance dawn" onward to the "grand line" - -honestly, we could go further and say that the first chapter of one piece is also a self-contained story, and in fact, it actually *was* a self-contained story. romance dawn was of course released in various forms as one-shots, before it eventually became the first chapter of one piece. - -the story of that first chapter is very simple: it's about a boy with a dream. but it's everything else about the story that grips you, like the reason for that dream, and the magnitude of that dream, and what that dream involves. - -for the time spent in east blue, the story mainly covers a great adventure filled with romanticism. the character arcs in this part of the story are mainly centered around following your dreams. as you meet new characters, you learn about their dreams, and in learning about their dreams, you get to know them as people. everyone has a reason to keep going. everyone has drive and motivation. it's honestly a dynamic world that feels alive, even though it's pretty small at this point in the series. - -throughout it all, there is the end goal of entering the grand line, which is portrayed as a paradise for pirates, where wacky things happen all the time, and the adventure never ends. everyone has their reasons for seeking it out. luffy wants to become the pirate king, and to do that he needs to find the great treasure "one piece" at the end of the grand line. zoro wants to become the world's greatest swordsman, and to do that he needs to challenge the current world's greatest swordsman who lives in the grand line. nami wants to draw a map of the world, and that means she'll need to enter the grand line at some point. usopp wants to be a brave warrior of the sea, and the grand line is just the thing to toughen him up. sanji wants to find the all blue, which might exist somewhere in the grand line. - -## i still have my nakama - -once things go into the grand line, the theme of adventure is still there, but the focus of each arc is better summarized by the theme of "family". chopper is abandoned by his reindeer family, but finds new family in dr. hiruluk and later dr. kureha before eventually joining the crew. vivi knows that the straw hats will always be her family because of the whole x thing. robin finds family in the ohara researchers and in saul, only for the buster call to take it all. franky has tom and iceberg and later the franky family. brook's entire crew dies and his dream is to reunite with laboon. luffy's entire crew gets sent flying by kuma and he despairs over this because he lost his family. then he finds out his sworn brother is set to be executed, and he goes to save him. when he loses his brother he feels like he has no family left. until he is reminded that he still has his crew. - -## power, authority, and liberation - -by the time we enter the new world, it's endgame territory. this is the realm of the emperors. luffy has always been a liberator, but this part of the story is where it takes center stage. every arc has luffy liberating people and islands. and then you find out he's literally the warrior of liberation. - -it's all about the power struggle, the emperors who rule their territories, the world government who controls everything, and the warrior of liberation who is being set up to set the whole world free. - -## wealth. fame. power. he had it all - -in that order. - -## so what's the conclusion here - -idk i don't have a conclusion i'm just rambling \ No newline at end of file diff --git a/blog.hugo/content/blog/physical-bodies/index.md b/blog.hugo/content/blog/physical-bodies/index.md deleted file mode 100644 index 9715b61..0000000 --- a/blog.hugo/content/blog/physical-bodies/index.md +++ /dev/null @@ -1,6 +0,0 @@ -+++ -title = "physical bodies are so encumbering" -summary = "it would be great to never again have to feel pain from a stomach too empty, or perhaps too full; to never have crusty eyes after sleeping too much, or perhaps too little; to never suffer from physiology that at best will decay, and at worst will actively punish us." -date = "2018-05-09T14:42:00-00:00" -source = "https://mastodon.social/@trwnh/99999872996282760" -+++ \ No newline at end of file diff --git a/blog.hugo/content/blog/product-vs-profit/index.md b/blog.hugo/content/blog/product-vs-profit/index.md deleted file mode 100644 index d99fe9d..0000000 --- a/blog.hugo/content/blog/product-vs-profit/index.md +++ /dev/null @@ -1,12 +0,0 @@ -+++ -title = "product vs profit" -summary = "There will inevitably be a point where it is unprofitable to improve a product any further." -date = "2017-12-22T12:06:00-00:00" -source = "https://mastodon.social/@trwnh/99217860566004390" -+++ - -> maybe providing useful products turns a profit hmmm... - -Only to a certain extent. There will inevitably be a point where it is unprofitable to improve a product any further. - -i.e., if Apple's primary goal was to make useful products, it would make choices that result in a better product even if it was slightly more expensive. But their primary goal is profit, as it is for every corporation under capitalism. Making better stuff is unprofitable. \ No newline at end of file diff --git a/blog.hugo/content/blog/publishing-vs-discussing/index.md b/blog.hugo/content/blog/publishing-vs-discussing/index.md deleted file mode 100644 index 98f7830..0000000 --- a/blog.hugo/content/blog/publishing-vs-discussing/index.md +++ /dev/null @@ -1,36 +0,0 @@ -+++ -title = "publishing vs discussing" -summary = "eventually this kind of \"posting\" we have today would be split up and merged into the two new things. the UI would give you an option: do you want to publish a Post, or do you want to start a Discussion?" -date = "2023-03-24T10:33:00-0600" -source = "https://mastodon.social/@trwnh/110078983668243890" -+++ - -i am more and more taking the position that we should have forums, and we should have blogs, and nothing in between. "social media" carries inherently poor ergonomics and a lack of clarity of purpose. you're never clearly "publishing" anything when you post on social media, unlike when you post on your own blog or website. you're never clearly "discussing" anything either, because threads aren't actual topics or conversations. - -so my ideal flow is kinda like - -- you make a "post" to your website/profile -- it may or may not be "in reply to" some other post. this is just metadata -- it may or may not be part of some "context". this is a moderated conversation or logical grouping owned by someone -- the "audience" is up to you, completely arbitrary. it might be only visible from within the context of some other webpage, or it might be given a permalink on your website/profile - -fedi dropped the ball hard on those last two... - -we could realistically move toward something more context-and-audience-aware but it's gonna be a bit rough for the existing "instance" model because of structural limitations. you'd basically be building a new fediverse in the shell of the old. but i think it can be done... - -one prong is to support actual "publishing" with articles and a more fleshed-out web profile as a website. add webmentions as an optional thing. - -the other prong is to support "discussing" within walls/forums/rooms "context" - -eventually this kind of "posting" we have today would be split up and merged into the two new things. the UI would give you an option: do you want to publish a Post, or do you want to start a Discussion? - ---- - -in my mental model. i have the following areas mapped out: - -- Publishing (posts) -- Reading (feeds/timelines) -- Discussing (forums) -- Messaging (chats) - -all of these are types of communication, and naturally some apps are going to expand to cover more areas. but it's all dependent on context and presentation. a "chat room" and a "forum topic" and a "social media wall" are all just collections of objects, really. \ No newline at end of file diff --git a/blog.hugo/content/blog/reading-theory/index.md b/blog.hugo/content/blog/reading-theory/index.md deleted file mode 100644 index 09a9c67..0000000 --- a/blog.hugo/content/blog/reading-theory/index.md +++ /dev/null @@ -1,10 +0,0 @@ -+++ -title = "reading theory" -summary = "the point of reading theory is to see what ideas other people already came up with, so you don't have to spend time formulating them yourselves." -date = "2018-01-27T08:44:00-00:00" -source = "https://mastodon.social/@trwnh/99420908783601966" -+++ - -the point of reading theory is to see what ideas other people already came up with, so you don't have to spend time formulating them yourselves. like... you start out with political beliefs and experiences, but they can always be solidified if you have a framework to contextualize them. - -and that doesn't really require discussion unless you want to or need more understanding, and it doesn't require organizing if you're not capable of it, and it really doesn't require voting since many people can't vote and many voting systems are designed to minimize choice. it feels wrong to say one *can't* be politically engaged unless one does these things \ No newline at end of file diff --git a/blog.hugo/content/blog/responsive-web-design/index.md b/blog.hugo/content/blog/responsive-web-design/index.md deleted file mode 100644 index 6f7ace5..0000000 --- a/blog.hugo/content/blog/responsive-web-design/index.md +++ /dev/null @@ -1,12 +0,0 @@ -+++ -title = "fully responsive web design" -summary = "my pipe dream is to redesign my website to be fully responsive -- not across mere pixel widths, but by aspect ratio and overall size" -date = "2018-04-22T15:42:00-00:00" -source = "https://mastodon.social/@trwnh/99903847448978099" -+++ - -my pipe dream is to redesign my website to be fully responsive -- not across mere pixel widths, but by aspect ratio and overall size. - -does anyone consider what their website looks like when it's fullscreened across one of those samsung 3840x1080 monitors? probably not, and why would you? - -but i do \ No newline at end of file diff --git a/blog.hugo/content/blog/services-vs-communities/index.md b/blog.hugo/content/blog/services-vs-communities/index.md deleted file mode 100644 index 98c19ae..0000000 --- a/blog.hugo/content/blog/services-vs-communities/index.md +++ /dev/null @@ -1,24 +0,0 @@ -+++ -title = "services aren't communities" -summary = "imo the biggest mistake of fedi is tying together the social and technical layers [...] some people want services and some people want communities and they are not the same thing" -date = "2023-05-07T17:39:00-06:00" -source = "https://mastodon.social/@trwnh/110329802576726213" -+++ - -services aren't communities - -the gmail community - -imo the biggest mistake of fedi is tying together the social and technical layers. local timelines should have been group chats all along - -it's a huge misunderstanding because some people want services and some people want communities and they are not the same thing. some people can run a community but offer bad service. some people offer great service but can't run a community - -instances shouldn't exist as the only model. the service layer and the community layer should be separate. combining the two makes both of them worse -- as can be seen if you violate the rules of your community, you lose access not just to the community, but to the service entirely. and if the community cannot continue to provide service, you again lose both. - -i do think there is some value in being both, because then people feel more likely to donate as they are personally invested. but you could have incentives to donate even while keeping them separate. - ---- - -> Yes! I think I've been spiralling towards a less well articulated version of this for a while. Too many people have been trying to make the Fediverse just one big social network with many servers and erase the aspect that's many small social networks that can communicate, and it's exactly that they're viewing it purely as service and not as community, and it absolutely needs to be both or else it can't meaningfully be either. - -i have a slightly different view, which is that multiple communities exist here and their organization and distribution is very dysfunctional because of the "instance" model being both and neither at the same time \ No newline at end of file diff --git a/blog.hugo/content/blog/shorts-are-too-long/index.md b/blog.hugo/content/blog/shorts-are-too-long/index.md deleted file mode 100644 index 2d1014c..0000000 --- a/blog.hugo/content/blog/shorts-are-too-long/index.md +++ /dev/null @@ -1,8 +0,0 @@ -+++ -title = "shorts are too long" -summary = "if you're going to take away the video controls, prevent me from seeking, maybe autoloop? then i am NOT sitting there for a whole minute while you fail to get to the point." -date = "2023-01-25T08:40:00-06:00" -source = "https://mastodon.social/@trwnh/109750363384335885" -+++ - -i fucking hate the "shorts" format. vine was okay purely because it was limited to 6 or 7 seconds -- if you're going to take away the video controls, prevent me from seeking, maybe autoloop? then i am NOT sitting there for a whole minute while you fail to get to the point. i'm not doing more than 10 seconds, maybe 15 seconds at the most. anything over that should let me seek through the video!!!! videos should always be seekable but if you're not going to make them seekable then at least limit them to one coherent logical "moment" \ No newline at end of file diff --git a/blog.hugo/content/blog/smartphones-and-capitalism/index.md b/blog.hugo/content/blog/smartphones-and-capitalism/index.md deleted file mode 100644 index e8a0a0c..0000000 --- a/blog.hugo/content/blog/smartphones-and-capitalism/index.md +++ /dev/null @@ -1,26 +0,0 @@ -+++ -title = "i hate the smartphone market" -summary = "profit motives means that the entire market has abandoned me" -date = "2018-05-07T08:13:00-00:00" -source = "https://mastodon.social/@trwnh/99987017261137486" -+++ - -tbh like 90% of my day-to-day angst against capitalism is from how shit the smartphone market has become. if capitalism is so great then where the fuck is my <70mm-wide phone with a removable battery? fucking profit motives means that the entire market has abandoned me. I haven't been satisfied with any phone since 2010. hell, I'd buy an updated Nexus One with newer, more efficient internals. - -"capitalism brought you your smartphone!" yeah, and that phone /fucking sucks/. - -I wish I could build my own phone or have one built to spec, but alas, I do not own a machining and assembly factory, and I don't have the requisite circuitry knowledge... if only I could, I dunno, *cooperate* with some like-minded people, and we had *public ownership of those factories*... :thaenkin: - -> do you know about this company? https://www.fairphone.com/en/ . They do their best to source all their components ethically, and work with worker's organisations in the countries they are producing phones in. The fair phone also comes with root access by default, so you can install your own ROM if you want. - -yeah; they're well-intentioned but still restricted to operating within the confines of capitalism. and it's still too big of a phone for my liking, personally - -like, i'm using a sony xperia x compact right now because it's 4.6" and fits in one hand. the snapdragon 650 means the battery is *decent*, but for how long? i got it lightly used in september, and now it's may and the battery is starting to heat up and degrade after 8 months of heavy usage and all those recharge cycles. - -> my fair phone 1 is still working nicely after 3 years or so [...] - -I feel like the same could be said about several more devices from 2013 than could be said today. my mom is still using a Nexus 7 2013 tablet just fine. our Nexus 5 could have lasted until now, if she hadn't broken it accidentally in a fit of rage. my htc one m7 is still close to the "ideal" device for me, except its battery has long gone to shit and is a nightmare to replace. - -I wish there were like 400 more fairphones, because just 1 is too limited to accomplish much for my case. and part of why there's only 1, I imagine, is because they can't be profiting too much; they still rely on profit, don't they? It's not "sustainable" for companies to provide services at-cost under capitalism. - -[...] it's extremely hard to "build it yourself" at sufficient scale to make a difference... and even then, you're bound by the laws of capital. you need to make money to survive, so at-cost operation is not viable without external funding \ No newline at end of file diff --git a/blog.hugo/content/blog/social-media-flawed/index.md b/blog.hugo/content/blog/social-media-flawed/index.md deleted file mode 100644 index 5d9d17d..0000000 --- a/blog.hugo/content/blog/social-media-flawed/index.md +++ /dev/null @@ -1,14 +0,0 @@ -+++ -title = "social media is fundamentally flawed" -summary = "in pure terms you might send a message or publish a resource. but with these social networks [...] you're never unambiguously sending a message or publishing a resource, but instead, some weird hybrid that we call a \"post\". not quite message, not quite resource" -date = "2023-02-16T19:43:00-06:00" -source = "https://mastodon.social/@trwnh/109877540362444317" -+++ - -the more i think about and research communication paradigms, i'm starting to think more and more that this whole "social media" thing is just fundamentally flawed. in pure terms you might send a message or publish a resource. but with these social media platforms it's not that clear cut. you're never unambiguously sending a message or publishing a resource, but instead, some weird hybrid that we call a "post". not quite message, not quite resource. it exists in part or in whole exclusively on the platform. - -and i guess that makes it easier to put in a silo which is how companies maintain their profit motive. - -but in replicating the design of these social media sites we replicate their properties too. fedi hasn't entirely moved past silos because it's embedded in the design level. thankfully not the protocol level, but still. it's going to persist in implementations as long as we limit ourselves to "twitter but better", "instagram but better", etc. we're not building the commons that we could build. - -and the lack of clarity in our metaphors and associated abstractions leads to subtle violations of what people expect. there should be a clearer split. consider the duality of tumblr as both a social network and a publishing platform. they're making this split more apparent than it used to be. in addition to username.tumblr.com for blogs they now have tumblr.com/username for network profiles. \ No newline at end of file diff --git a/blog.hugo/content/blog/specs-arent-enough/index.md b/blog.hugo/content/blog/specs-arent-enough/index.md deleted file mode 100644 index d4dc3b5..0000000 --- a/blog.hugo/content/blog/specs-arent-enough/index.md +++ /dev/null @@ -1,40 +0,0 @@ -+++ -title = "specs aren't enough" -summary = "the question of \"interoperability\" makes no sense on its own. you must always ask, interoperability with what? and on which conditions? [...] is your view of the \"fediverse\" limited only to the conceptual space of existing projects? and, if so, then which ones?" -date = "2023-03-06T18:37:00-06:00" -source = "https://mastodon.social/@trwnh/109979200684979970" -+++ - -@ people who keep saying we should rewrite the activitypub spec to ensure better interoperability with existing fedi projects - -![](specs-are-enough.png) - -idk how else to say that if you want to be compatible with a project then you need to have a shared worldview and conceptual space, and this necessarily involves communicating with that project on some level (by reading their documentation, asking their devs questions, etc) in order to know what their expectations and requirements are - -the question of "interoperability" makes no sense on its own. you must always ask, interoperability with what? and on which conditions? - -like, we all use activitypub more or less according to the spec, and that's because the spec is simple, it's basically just "HTTP POST to inbox". we could theoretically construct any as2 payload we wanted, but we largely limit ourselves to Create Note... why? because you want to be compatible with mastodon, right? and that's the real issue. - -there are things that mastodon et al do that are within some spec -- webfinger for translating usernames to actors, for example. then there are things that are technically a spec but outdated, like http signatures (cavage draft) and ld signatures (obsoleted entirely). and then there are things that are not specced -- quirks of the implementation that must be respected, things like using Note, how to structure a Mention, the use of specific algorithms for signatures. maybe these can be negotiated - -crucially, sometimes the assumptions you make, the quirks your software has, these will not line up with the assumptions that others make, the quirks that their software has. you might even disagree entirely, and without the possibility of reconciling those opposing assumptions. - -consider the assumption that every actor has a username, and that this username identifies them more canonically than their own activitypub identifier. what if you disagree? well, that's an incompatibility. - -how do you handle the root of identity being the activitypub id, versus the root of identity being the username, versus the root of identity being some cryptographic key? what is one to do, if one wants to be "compatible" and "interoperate" with three different softwares each following a different one of the above assumptions about identity? are these softwares even meaningfully part of the same network? and which of these three networks is the "true" "fediverse"? - -and even within those identity schemes, we might still have to consider further parameters, like the expectation of only supporting HTTPS URIs. or, let's imagine that we choose to use or support DIDs -- now, which DID methods do we support? - -all of these are decisions that each project has to either make for itself, or vest authority in some other entity to make those decisions in a binding way -- by publishing some meta-spec, some conformance profile, basically a bundle of specs that should be followed and their particulars. - -and even *then*, you will find some quirks remain, some projects are coded in a way which has implicit expectations. the more you try to eliminate these, the narrower the scope or conceptual space becomes. - -with enough limitations, you end up with what is basically the same software, just with different implementations. if mastodon, pleroma, and misskey all were overspecced like this, you may as well view them as "fedi implemented in rails", "fedi implemented in elixir", and "fedi implemented in nodejs". - -so, in closing, i leave with this to consider: - -is your view of the "fediverse" limited only to the conceptual space of existing projects? and, if so, then which ones? - -or will you allow yourself to dream a little bigger? - -{{And from an activist perspective, I’d be very loud about starting to investigate other protocols – and why you’re doing it.
-
{{.Summary | safeHTML}}
--
- -
- {{.Date.Format "2006-01-02"}}:
- {{.Title}}
- {{.Summary}}
-
${createSearchResultBlurb(query, hit.content)}
-it's scary how much you know.--
you're the first person i've met that keeps a spreadsheet of their lightbulbs.--
VERY MUCH not garbage [...] a worthwhile human--
honestly, i trust your judgement more than i trust my own.- -
{{.Summary}}
-{{.Summary}}
- {{ with .Params.cover }} - - {{end}} -In reply to:
-Original: {{.Params.original}}
-{{.Summary}}
- - -abdullah tarawneh
- a@trwnh.com - a@trwnh.com - mastodon.social/@trwnh - abdullahtarawneh.com -i have approximate knowledge of many things. perpetual student. (nb/ace/they)
-- i have approximate knowledge of many things. perpetual student. (nb/ace/they) -
-
- xmpp/email: a@trwnh.com
- https://trwnh.com
- help me live: https://liberapay.com/trwnh or paypal
-
my triggers are moths and glitter
-nonbinary
-diff --git a/unified.test.hugo/content/_dump/replies/smartphones-arent-as-exciting-as-they-used-to-be/index.md b/unified.test.hugo/content/_dump/replies/smartphones-arent-as-exciting-as-they-used-to-be/index.md index e144f73..48e2164 100644 --- a/unified.test.hugo/content/_dump/replies/smartphones-arent-as-exciting-as-they-used-to-be/index.md +++ b/unified.test.hugo/content/_dump/replies/smartphones-arent-as-exciting-as-they-used-to-be/index.md @@ -1,11 +1,14 @@ +++ -indieweb_type = "reply" title = "in response to \"You're not wrong -- smartphones aren't as exciting as they used to be\" from Android Police" summary = "Honestly, phones really aren't even getting better anymore — they're getting worse since 2013. And the factors are mostly not technological — the technology continues to improve, of course. It's the corporate decisions that go into the making of the phones, which are based not on what makes a “better” phone, but on what they think will be most profitable. I want to call out [...]" date = 2018-08-02T04:37:00Z tags = ["capitalism", "technology", "mobile", "smartphones"] -inReplyTo = "https://www.androidpolice.com/2018/08/01/youre-not-wrong-smartphones-arent-exciting-used/" -original = "https://disqus.com/home/discussion/androidpolice/youre_not_wrong_smartphones_arent_as_exciting_as_they_used_to_be/#comment-4017813937" +[[params.inReplyTo]] +name = "You're not wrong -- smartphones aren't as exciting as they used to be" +url = "https://www.androidpolice.com/2018/08/01/youre-not-wrong-smartphones-arent-exciting-used/" +[[params.syndication]] +name = "Original comment on Disqus (Android Police)" +url = "https://disqus.com/home/discussion/androidpolice/youre_not_wrong_smartphones_arent_as_exciting_as_they_used_to_be/#comment-4017813937" +++ Honestly, phones really aren't even getting better anymore — they're getting worse since 2013. And the factors are mostly not technological — the technology continues to improve, of course. It's the corporate decisions that go into the making of the phones, which are based not on what makes a “better” phone, but on what they think will be most profitable. I want to call out a few specific quotes from this article and add my thoughts: diff --git a/unified.test.hugo/content/_dump/replies/4564-37/index.md b/unified.test.hugo/content/_dump/replies/socialhub-4564-37/index.md similarity index 85% rename from unified.test.hugo/content/_dump/replies/4564-37/index.md rename to unified.test.hugo/content/_dump/replies/socialhub-4564-37/index.md index 074dc6d..b767ec0 100644 --- a/unified.test.hugo/content/_dump/replies/4564-37/index.md +++ b/unified.test.hugo/content/_dump/replies/socialhub-4564-37/index.md @@ -1,17 +1,17 @@ +++ -inReplyTo = "https://socialhub.activitypub.rocks/t/socialwebfoundation-what-do-people-think/4564/36" -original = "https://socialhub.activitypub.rocks/t/socialwebfoundation-what-do-people-think/4564/37" -date = "2024-09-30T17:41:00-0600" +date = 2024-09-30T17:41:00-06:00 tags = ["capitalism", "social", "capital", "mastodon", "utility", "analysis"] -indieweb_type = "reply" +[[params.inReplyTo]] +name = "post #36 of \"SocialWebFoundation - what do people think?\"" +url = "https://socialhub.activitypub.rocks/t/socialwebfoundation-what-do-people-think/4564/36" +[[params.syndication]] +name = "Original post on SocialHub" +url = "https://socialhub.activitypub.rocks/t/socialwebfoundation-what-do-people-think/4564/37" +++ -{{< mf2/h-cite -post-url = "https://socialhub.activitypub.rocks/t/socialwebfoundation-what-do-people-think/4564/36" -author = "socialhub.activitypub.rocks/eprodrom" ->}} -I think that, before we had an open standard for social networking, protocol experimentation was more important. Now that we have an open standard, with a hundred implementations, tens of thousands of nodes, and tens of millions of users, I think efforts should go into encouraging the use of that standard and enhancing it through backwards-compatible extensions, rather than starting the whole process from the ground up. -{{< /mf2/h-cite >}} +> I think that, before we had an open standard for social networking, protocol experimentation was more important. Now that we have an open standard, with a hundred implementations, tens of thousands of nodes, and tens of millions of users, I think efforts should go into encouraging the use of that standard and enhancing it through backwards-compatible extensions, rather than starting the whole process from the ground up. +{cite="https://socialhub.activitypub.rocks/t/socialwebfoundation-what-do-people-think/4564/36" card="socialhub.activitypub.rocks/eprodrom"} + I think this is a bit too conservative of a take regarding backwards-compatibility. I really don’t think we’re at any sort of broad alignment, even within the ActivityPub space alone. Just about the only thing we universally do is POST to inbox. That payload is AS2 Activities. Things tighten up a bit when you consider e.g. the "Mastodon Protocol" as defined by https://docs.joinmastodon.org/spec/activitypub but even then, not everyone follows this protocol, and as a protocol, it’s got a lot of missing bits that are very important for a "social networking protocol" to have, not to mention it doesn’t closely follow the requirements laid out in AP or AS2. The main criticism that several people have raised (@hrefna @stevebate and @jenniferplusplus in particular) is that any interop we have on the fediverse today is more the result of the blood, sweat, and tears of implementers than it is the “open standard” that pretty much no one implements to the letter. The far more common outcome is to reverse-engineer Mastodon, or reverse-engineer Lemmy, with the aid of their documentation, with lots of hours spent looking at the code, and with outreach and collaboration involving other implementers. @@ -29,12 +29,8 @@ So, given all this, I have to ask: what are we targeting here? What are we tryin To bring up the perennial example of a chess extension to ActivityPub, you could imagine implementing a "chess protocol" that works client-to-client. You could even declare support for this protocol somehow, probably at an actor level you could indicate which clients are connected to your actor, but I'm getting ahead of myself here. The point is that just like we could have a "chess protocol", we similarly could define a "social media post" protocol, which isn't currently defined. Such a "protocol" would include things like interpreting a Create Note as a "status", and it would include which properties are required or recommended or optional, and it would include guidance on how to interpret those properties and how to render them to the user, but also very importantly it would include a description of the side effects that you can expect that client to perform. Using Mastodon as an example, one of the side effects of receiving a Create Note currently is that the "status" it gets transformed into will be stored indefinitely in the local database, irrespective of HTTP caching headers. The "protocol" would ideally also define how the "status" should be deleted, and when, under which circumstances. For example, sending a Delete of your own actor is not defined anywhere as deleting your "statuses" as well. And I don't think this belongs in the ActivityPub spec necessarily, because it's just as valid to say that all activities delivered by the actor prior to its own deletion are notification messages that could be stored indefinitely or externally in your on-disk cache (barring the presence of HTTP caching headers which would cause them to be expired from cache). Perhaps if that "social media protocol" actually existed in explicit, unambiguous, documented form, then it would be possible to target it with backward-compatible extensions. But we don't have any such thing today. The closest thing we have to that is https://docs.joinmastodon.org/spec/activitypub which is itself an incomplete description. -{{< mf2/h-cite -post-url = "https://socialhub.activitypub.rocks/t/socialwebfoundation-what-do-people-think/4564/36" -author = "socialhub.activitypub.rocks/eprodrom" ->}} -But protocols are about interoperability, and having incompatible protocols reduces interoperability. And protocol diversity is just not as important to me as connecting more people on the social web. -{{< /mf2/h-cite >}} +> But protocols are about interoperability, and having incompatible protocols reduces interoperability. And protocol diversity is just not as important to me as connecting more people on the social web. +{cite="https://socialhub.activitypub.rocks/t/socialwebfoundation-what-do-people-think/4564/36" card="socialhub.activitypub.rocks/eprodrom"} If this were the entire argument, then I would (facetiously) say to just use SMTP. After all, SMTP has billions of users, which is far more than ActivityPub has. Why does ActivityPub exist when the same mechanisms could have been specified on top of SMTP? Isn't the existence of ActivityPub harmful to the email social network? diff --git a/unified.test.hugo/content/_dump/replies/status-as-a-service/index.md b/unified.test.hugo/content/_dump/replies/status-as-a-service/index.md index 251daa6..9740a00 100644 --- a/unified.test.hugo/content/_dump/replies/status-as-a-service/index.md +++ b/unified.test.hugo/content/_dump/replies/status-as-a-service/index.md @@ -1,10 +1,13 @@ +++ -inReplyTo = "https://www.eugenewei.com/blog/2019/2/19/status-as-a-service" -original = "https://www.eugenewei.com/blog/2019/2/19/status-as-a-service#comment-5c823ae54e17b6230bbb5137" date = 2019-03-08T09:50:29Z title = "in response to \"Status as a Service (StaaS)\" from Eugene Wei" tags = ["capitalism", "social", "capital", "mastodon", "utility", "analysis"] -indieweb_type = "reply" +[[params.inReplyTo]] +name = "Status as a Service (StaaS)" +url = "https://www.eugenewei.com/blog/2019/2/19/status-as-a-service" +[[params.syndication]] +name = "Original comment on eugenewei.com" +url = "https://www.eugenewei.com/blog/2019/2/19/status-as-a-service#comment-5c823ae54e17b6230bbb5137" +++ Hmm. I must preface this comment by saying that I read this article as a Mastodon user, due to your brief mention of Mastodon within the article. But after having read the article, I would in particular make the distinction that there is less of a focus on copying the status game, and more of a focus on utility. Which is to say, I have made the observation that most people coming to Mastodon seeking an alternative to Twitter have generally followed one of two patterns: diff --git a/unified.test.hugo/content/_dump/socialhub-threads/exposing-edit-history.md b/unified.test.hugo/content/_dump/socialhub-threads/exposing-edit-history.md index 1690d2e..f731655 100644 --- a/unified.test.hugo/content/_dump/socialhub-threads/exposing-edit-history.md +++ b/unified.test.hugo/content/_dump/socialhub-threads/exposing-edit-history.md @@ -1,5 +1,5 @@ +++ -title = "Notifying remote servers that they should refetch an object" +title = "Exposing edit history via ActivityStreams" date = "2019-11-01" +++ diff --git a/unified.test.hugo/content/articles/_index.md b/unified.test.hugo/content/articles/_index.md index f7ba421..310286e 100644 --- a/unified.test.hugo/content/articles/_index.md +++ b/unified.test.hugo/content/articles/_index.md @@ -1,2 +1,4 @@ +++ +title = "articles" +summary = "" +++ \ No newline at end of file diff --git a/unified.test.hugo/content/articles/evolving-orderedcollection-to-be-more-useful/index.md b/unified.test.hugo/content/articles/evolving-orderedcollection-to-be-more-useful/index.md index 78cbfc1..cbcdd6e 100644 --- a/unified.test.hugo/content/articles/evolving-orderedcollection-to-be-more-useful/index.md +++ b/unified.test.hugo/content/articles/evolving-orderedcollection-to-be-more-useful/index.md @@ -1,22 +1,20 @@ +++ title = "Evolving OrderedCollection to be more useful" -date = "2024-10-04T21:50:07-0600" -syndication = [ - "https://socialhub.activitypub.rocks/t/pre-fep-evolving-orderedcollection-to-be-more-useful/4608" -] -inReplyTo = [ - "https://github.com/w3c/activitypub/issues/439" -] +date = 2024-10-04T21:50:07-06:00 toc = true autonumbering = true +[[params.inReplyTo]] +name = "Reordering user-created collections" +url = "https://github.com/w3c/activitypub/issues/439" +[[params.syndication]] +name = "Original post on SocialHub" +url = "https://socialhub.activitypub.rocks/t/pre-fep-evolving-orderedcollection-to-be-more-useful/4608" +++ Continuing from (and expanding on) this GitHub issue: https://github.com/w3c/activitypub/issues/439 Recently I've been thinking about OrderedCollection again and how the way it's specified doesn't actually match up with the way it's defined, or with what you'd need for it to be a useful data type. Some issues I could identify are laid out below. -{{"We are not a social network. We do not benefit from social graphs," Dorsey said. "People come to us when they're interested in events happening in the world or with a niche interest. We've been biasing a lot more of the service towards interest and topics."
diff --git a/unified.test.hugo/content/monologues/nation-stateification/index.md b/unified.test.hugo/content/monologues/nation-stateification/index.md index 752211c..96b49a2 100644 --- a/unified.test.hugo/content/monologues/nation-stateification/index.md +++ b/unified.test.hugo/content/monologues/nation-stateification/index.md @@ -1,7 +1,7 @@ +++ title = "fedi nation-states" summary = "i forgot we live in a geopolitical climate of tens of thousands of digital nation-states each with their own culture and borders. for a second there i thought i was using a general communication service" -date = "2023-03-24T10:25:00-0600" +date = 2023-03-24T10:25:00-06:00 source = "https://mastodon.social/@trwnh/110078954614492914" +++ diff --git a/unified.test.hugo/content/monologues/one-piece-thematic-breakdown/index.md b/unified.test.hugo/content/monologues/one-piece-thematic-breakdown/index.md index db59314..3133209 100644 --- a/unified.test.hugo/content/monologues/one-piece-thematic-breakdown/index.md +++ b/unified.test.hugo/content/monologues/one-piece-thematic-breakdown/index.md @@ -1,7 +1,7 @@ +++ title = "a thematic breakdown of one piece" summary = "east blue = dreams. paradise = family. new world = liberation." -date = "2024-09-30T11:22:54-0600" +date = 2024-09-30T11:22:54-06:00 source = "original" +++ diff --git a/unified.test.hugo/content/monologues/publishing-vs-discussing/index.md b/unified.test.hugo/content/monologues/publishing-vs-discussing/index.md index 98f7830..a2c596c 100644 --- a/unified.test.hugo/content/monologues/publishing-vs-discussing/index.md +++ b/unified.test.hugo/content/monologues/publishing-vs-discussing/index.md @@ -1,7 +1,7 @@ +++ title = "publishing vs discussing" summary = "eventually this kind of \"posting\" we have today would be split up and merged into the two new things. the UI would give you an option: do you want to publish a Post, or do you want to start a Discussion?" -date = "2023-03-24T10:33:00-0600" +date = 2023-03-24T10:33:00-06:00 source = "https://mastodon.social/@trwnh/110078983668243890" +++ diff --git a/unified.test.hugo/layouts/_default/_markup/render-blockquote.html b/unified.test.hugo/layouts/_default/_markup/render-blockquote.html index c11381d..c1aeacb 100644 --- a/unified.test.hugo/layouts/_default/_markup/render-blockquote.html +++ b/unified.test.hugo/layouts/_default/_markup/render-blockquote.html @@ -1,25 +1,35 @@ -