Since my post on non-fungible tokens last month, I've come to the radical and totally shocking conclusion that I personally don't care if corporations start using NFTs as a Digital Restrictions Management scheme to further lock down their products. Actually, I take that back: I hope they do, and quickly, because the more restricted their products are, whether software or music or games, the less appealing said products will be for the end consumer and thus the less money said companies will make.
I follow a great deal of Tumblr accounts without having an account myself due to this funny little thing called RSS. Over the past month, one of them, which I followed for the occult memes, has been throwing a shitfit over the public backlash from their planned NFT collection. It turns out that almost nobody actually wants to pony up large chunks of money for the privilege of... accessing a full-quality GIF in a digital locker.
And why should they? It's not as if the art, from what the preview GIFs show me, is of high artistic merit. Why would someone go through the hassle of setting up a crypto wallet, paying the money, and figuring out what convoluted authentication scheme the digital locker uses to access the art just to... claim ownership over a chunk of ones and zeros? Thanks to the analog hole, either the value would tank when the buyer tried to show off the GIF they'd bought as it would be the full-quality one and now available to everyone to see and steal, or whatever site they uploaded it to would compress it, in which case there would be no point to having bought it as they could have just used the preview one to get the same end quality.
This person losing a large chunk of their followers from what they perceived to be as "selling out" is, to me, a microcosm of what is to come if corporations start trying to use NFTs as a DRM mechanism. Any PC gamer knows what a hassle existing DRM methods like Denuvo are, especially when trying to get games working on any operating system that isn't Microshaft Wangblows. There comes a point where the software's attempts to ensure it isn't an "unauthorized" copy are so intrusive- remember the Sony rootkit?- that it becomes more of a hassle to tolerate it than to learn how to use a less-restrictive alternative. Even the most dedicated "bugman" has a limit. (That is, when one is aware an alternative exists...) I originally learned how to use Linux because my Windows install had found a way to break itself, and fixing it every day would have been more effort than just learning how to run Ubuntu, even though I was terrified of breaking my computer at the time due to my then-incompetence. The more opaque and DRM-ridden a product is, the closer to "path of least resistance" a pirated version of said product with the DRM removed or an alternative that never had the DRM becomes.
Rejecting intrusive DRM need not mean a loss of revenue for artists. Before my parents finally allowed me access to my bank account in 2019 (which had existed before then, but they hadn't allowed me to withdraw any money...?) and I got my first real job later that year, my consumptive habits were limited to whatever I could squeeze past my parents' censors or what I could acquire on my own for free. Any music that I could not torrent, any video games that I could not find an emulator (or, later, a hacked console) for, any books I could not find on eBook Bike (which later went to shit when they required registration to download) or Z-Library, I had to go without. This restriction led me to places like Bandcamp, which had a plethora of music free to download from every genre I could possibly think of. There was (and still is) no DRM to be had, just an optional prompt to donate whatever money one thought the album was worth.
And, as it turned out, many of those albums which were free to me ended up becoming some of my favorites:
As soon as I had access to my money, I made sure to give some to these artists in appreciation for the many hundreds upon hundreds of hours I'd spent listening to them over the years. And although many of them have fallen into hiatus, I am still finding new music, new books, new games for free to this day. And as for the games and books I had pirated? The ones I ended up liking, I bought physical copies of, money they would have never received if I hadn't had the opportunity to experience them for free first.
There is a world of art that exists outside DRM, outside the purview of corporations. There is a Second Realm waiting to destroy the First by making it obsolete and irrelevant. And it exists now. And if corporations, and the occasional indie artist, want to shoot themselves in both feet with NFTs thinking them an impenetrable form of DRM, I say: let them. Let them lock down their works so tightly that they become utterly inaccessible. Let them miss out on the money they would have earned from now-disgruntled customers. Let the corporations destroy themselves in building a dam to maximize every dollar flowing to them only to find their river is drying up. Let that money flow instead to those who respect computing freedom, to those not hamstrung by corporate interests. I would rather live in a creative culture with millions upon millions of indie artists who make a few things out of love than a single corporate powerhouse with a monopoly, a monoculture.
]]>This tutorial assumes you already have a functioning Node.js and Caddy installation.
git clone https://github.com/fraction/oasis.git
cd oasis
npm install
Test the installation by running node .
(yes, including the period).
systemd
file.node . --port PORTNUMBER
instead, where PORTNUMBER
is any open port you want.If your instance immediately throws an error about ssb.friends.get
:
git checkout 4e8f7426a4eb1d95f6e55cf894a3168f523f8af8
rm -rf node_modules
npm install
systemd
daemon file.Edit /lib/systemd/system/oasis.service
as root with your favorite text editor. Paste the following:
[Unit] Description=Oasis client for Secure Scuttlebutt After=network.target [Service] User=YourUsername Group=YourUsername ExecStart=/path/to/your/node/binary . --port 8787 WorkingDirectory=/path/to/where/you/cloned/oasis/ TimeoutStopSec=5s LimitNOFILE=1048576 PrivateTmp=true ProtectSystem=full [Install] WantedBy=multi-user.target
Replace /path/to/your/node/binary
with whatever comes up when you run which node
. You may need to change this if you update Node.
yourdomain.tld { reverse_proxy 127.0.0.1:PORTNUMBER { header_up Host 127.0.0.1 header_up Referer http://localhost } basicauth * { AnyUsernameYouWant EXTREMELYLONGCADDYHASHHERE } }
EXTREMELYLONGCADDYHASHHERE
is used instead of an actual password so you don't have cleartext credentials hanging around. Generate this with caddy hash-password
. Make sure you save your actual password in a password manager, as you can't reverse a hash!
The header_up
lines are there to trick Oasis into thinking it is running on a local machine, as it (very aggressively) wants to be. Normally this would be true, as Secure Scuttlebutt is peer-to-peer and intended to be run on a personal device that may see intermittent internet connectivity. However, if you're looking at this tutorial, you probably want to host a public peer as an actually functioning alternative to a pub or room.
sudo systemctl daemon-reload
sudo systemctl restart caddy
sudo systemctl start oasis && sudo systemctl enable oasis
]]>
The "analog hole" is the last inevitable loophole in DRM. We humans (or those stuck in human bodies) are analog creatures whose brains cannot run DRM, and so anything digital must be somehow converted into analog signals- music to soundwaves, pictures to an array of pixels on a screen- before it can be experienced. And as long as we remain analog without computer chips in our brains, this hole will never be patched, meaning any (noninterative) piece of media can be copied in some form. Maybe it means plugging a phone playing Spotify or some other streaming service into an aux cord and that into a computer's microphone port. Maybe it means pulling out a cheap old point-and-shoot camera and taking a picture or video of one's screen. There may be some loss of fidelity or quality along the way, but something can always be extracted beyond the reach of DRM.
This is the main problem with NFTs as they stand today. Because an NFT is essentially a line in a blockchain somewhere that says that a particular wallet holds a particular integer. And someone, somewhere, one day decided to make this integer represent the hash of a file, because blockchains usually don't have the capacity to hold the raw image data in a single entry. This means the file has to be hosted elsewhere in order for anyone to see or care about it. And, to be seen, the file has to be converted into an... analog format. Meaning, if I don't give a shit about the "ownership" of an NFT, I can just right-click the image or video or whatever, or take a screenshot or recording of it, and have a copy of it on my hard drive without having to spend any money.
The value of an NFT isn't in the JPEG or whatever in and of itself because of the analog hole. They're just JPEGs on a screen. And no sane person is going to buy an image that they can right-click and reproduce to infinity. The "value" comes from what the NFT represents: a tradeable asset. However, almost all of the NFTs I've ever seen don't actually seem to have any... function beyond being a reference to an image that one can waste Ethereum gas money moving around to other people. And I, and I suspect most of the people reading this, don't put any monetary value on a JPEG in and of itself. But what about a JPEG that was a token, a proof of ownership, of... an account slot in an online game? A tradeable item in an MMORPG? Because games are interactive, they are immune to the analog hole, and thus an online game would be a perfect medium for using NFTs to supplant its in-game economy. Due to the append-only nature of every blockchain I've ever seen, the NFTs would be nigh-immune to hacks to duplicate items or save editing or other methods of cheating.
The uses of NFTs could extend well beyond the gaming sphere. What about proof of holding a ticket to a conference or concert? An alternative to traditional notaries for real-world contracts between people? Land deeds or other proof of purchases that would benefit from being publicly auditable? Anything that needs artificial scarcity or cryptographic proof of having happened or being owned by a person in a transferrable format could theoretically be made into an NFT. Only once more applications of NFT technology like this are made as accessible to the average layperson as "JPEG trading platforms" like OpenSea are will NFTs grow beyond their reputation of blatant ape-themed Picrew knockoffs.
]]>I was going to title this post "'Dying makes you gay' and other sayings my brothers insist aren't homophobic", but this one is funnier, if only because it's the excuse I've been using throughout this month to try to get my youngest brother to shut up about his video game waifu. "It doesn't make any sense," I keep reminding him. "Don't you think it's a little hypocritical to constantly call me a degenerate and tell me to kill myself, and then copy all my spiritual beliefs while still calling yourself a Christian? How do you think your God feels about your imaginary girlfriend?"
His only reply, of course, is a "joke" about ejaculation.
The radical feminist in me wants me to give up. He is unlikely to ever change, the sweet boy he was in elementary school gone forever. I bought him a computer because his shitty Chromebook couldn't emulate N64 games, and he still persists in his abhorrent behavior. I took him out on myriad bike rides and bought him ice cream, and he still persists in his abhorrent behavior. I spent three days working on his birthday present: I installed homebrew on his Wii U and set up a modding environment for Sm4sh (on his second hard drive, which has the only copy of Windows 10 between us) so that he could play as... a shopping cart, an Oreo, a literal island straight out of the sea, and a penguin who always seems to be high on marijuana. Along with others.
And he still persists in his abhorrent behavior.
Normally, I would not have bothered. Unless there are "funny meme" mods installed, said brother hates Sm4sh (and, really, any game I've ever expressed even the slightest interest towards) with a burning passion, and would rather play the next entry in the series where he can start a private online lobby with his friends and bang on my door to taunt me about how he's purposely excluding me. (Of course, most of the time, I am busy with something else anyway, and so I barely notice.) But Sm4sh is where I met my girlfriend, almost... seven years ago? (Has it really been that long since Christmas Eve 2014? Where has the time gone?) Having to suffer through the millionth Mario joke gleaned from an overrated YouTube video is a small price to pay for also being able to shove in whichever mods I want. Which means, finally, better skins for The Person Who Is Definitely Not My Girlfriend.
Having to endure my brother complaining that I am not slaving away for his memes fast enough is a small price to pay for spending time with the person I love (ah, good old technomancy) and also having something to distract me from my downward spiral.
When I started MayVaneDay, I made a rule for myself to not discuss my "consoom"ing hobbies beyond maybe a passing comment or two. I did not want it to turn into a "fan site" for anything. I wanted it to only be about me and the things I had done, not to be beholden to someone else's creation for a sense of identity. But this is the Eschaton, after all, the Grand Downward Spiral... So now, for myself and no others, I shall recount all the little oddities I've found while compiling a family modpack.
This stupid game takes forever to dump to a microSD card, even when using specialized programs that generally run faster than traditional methods of dumping Wii U discs. The reason for this is because the game is just shy of sixteen gigabytes large, and about half of that is taken up by two files, dt00
and dt01
. These contain basically any files that aren't DLC, background music, or sound clips for the various Easter eggs on certain stages. And after that, one needs to dump the patch files as well. The DLC doesn't need to be dumped; the actual models and textures live in the patch data, since all Smash games since Super Smash Bros. Brawl for the Wii have had an online play feature and DLC users need to be able to play with those only using the base game. The DLC basicaly amounts to a piece of paper saying "the player can use this". Not useful for modding.
Then one has to extract the files in dt00
and dt01
. The only way I know of is with Sm4shExplorer. The developers only supply Windows binaries, and I couldn't figure out how to compile things in Visual Studio Code (which I only installed for the purpose of trying to compile this). After backing up the entire dump onto a spare flash drive I had in case my brother somehow managed to delete everything on accident and copying the dumped patch folder into the base folder, Sm4shExplorer "unzipped" (no actual extraction happened; it's a purely virtual file system) dt00
and dt01
and gave me access to the files.
Most character mods consist of two parts: the texture (sometimes a model comes along in the same folder), and the character selection portraits (hereafter referred to as CSPs). The texture goes in data\fighter\FIGHTERNAME\model\body
, where FIGHTERNAME
is the name of the character in lowercase and occasionally in some halfway localization with the original romaji. (For example, the files for Charizard live in "lizardon", and Jigglypuff in "purin".) CSPs live in data\ui\replace\chr
and use the same names as above, just with the first letter capitalized.
Most characters have eight costume slots available for shoving mods into. But knowing which slot to put a mod into can get tricky, because for whatever godforsaken reason CSP numbering starts at one while the model numbering starts at zero. It also doesn't help that some characters have special models optimized for "eight player mode" (the standard is up to four players in a room) and so, if playing in a room with more than four players or a singleplayer mode that would use eight player mode's engine (like Classic or All-Star), the mods might just not show up anyway.
(The green parts in the above screenshots are how Sm4shExplorer indicates which files have been modded.)
Super Smash Bros. Ultimate came out on December 7, 2018. I only remember this date because I was so desperate to get my hands on a copy of the game that I concocted an elaborate scheme to call in sick from my work-study (as I was at Hell College at the time) and convince my father to bring me home that weekend, as normally I would come home every other weekend due to work and that was the weekend I was scheduled to work. He was resistant at first, mocking me for not just buying a digital copy until I informed him that he had given me an ATM card, not an actual debit card, and I had no way of getting off campus to buy eShop gift cards.
Of course, as I was the only one in the family who owned a Switch at the time, we had to stick to the Wii U version if we wanted to play online with each other. Given this was at least twice a week, I am surprised it took as long as it did for me to realize that the Switch version seems to run at an abysmal resolution given its predecessor.
Take, for instance, this sample screenshot from my Switch, henceforth deemed "The Funny Butt Picture":
Gwenview says this image is 1280x720 pixels. That makes 0.9 megapixels. The actual resolution of the screen being played on doesn't seem to affect what size the Switch outputs screenshots at. Nor would an unusual aspect ratio affect it: the TV downstairs appears to have a perpetual overscan, whereas the one in my room (which I only ever use as a computer monitor) doesn't, meaning I have to constantly switch between 95% and 100% screen size for TV mode. (At least, until the USB port in my Switch got damaged and it lost the ability to connect to docks. Still charges with my phone cable, though.)
Now, for science, let's attempt to recreate this picture in Sm4sh. Because this is a Totally Legitimate science experiment, we have to keep as many variables constant as possible: the Battlefield stage, healing items enabled, playing team mode as Pyra accompanied by a purple Person Who Is Definitely Not My Girlfriend.
"Come on! We gotta recreate The Funny Butt Picture!"
"No."
"Please?"
"No. I thought you said we were going to play games together, not have you pause every five seconds to take a picture of me."
"Please?"
"Stop looking at me so much. Are we going to play or not?"
Gwenview says this image is 1920x1080 pixels, which comes out to 2.1 megapixels. This means, if my calculator isn't malfunctioning, the Sm4sh screenshot has more than twice as many pixels in it as the supposed "upgraded" Switch version is. But raw pixels alone doesn't determine which system takes more visually pleasing screenshots. Ultimate has a rather... overbearing art style, which I personally dislike because it makes cartoony characters edge too close to the uncanny valley of realisticness. It also makes much heavier use of shadows and other visual effects than its predecessor, and the characters have a wider range of facial expressions. If it output at the same resolution, it would make for superior screenshots, but the lack of visual clarity bothers me too much.
There is, of course, the minor issue that Pyra in the Sm4sh screenshot is an alternate costume over Shulk, and the model seems to have some rigging issues. But let's not focus on that.
My little brother comes downstairs while I'm screenshot farming. He starts chanting. "I love rings, rings, rings! I love rings, rings, rings! I love..." His voice suddenly drops an octave. "Divorce papers."
The only character mods I've found usable come with textures, models, and CSPs. For whatever reason, the textures also need to be "TexID fixed", an arcane process which I don't understand and don't bother with as every skin I want seems to already be "fixed" and functional. However, some mods only seem to come with a model. Which means, unless one goes through the process of "TexID fixing", said model doesn't mesh with the pre-existing textures and appears as a red blob. This makes me very sad, as I can't plunder skins from other modpacks I like.
But sometimes I put up with the red blobs anyway, because the end result is too funny to trash.
"Damn, boi! He thicc!"
Nearly everything in Sm4sh can be modded, not just the characters. One of my favorite stage mods is what my brothers and I have come to affectionately refer to as "Instant Death Minecraft Island". "Instant Death" because it goes over the DLC stage Pirate Ship, and the ship has two stage hazards that can result in a character getting thrown off the stage: a little... flip thing that pops out on occasion, and a cannonball shot from another ship in the distance. Instant Death Minecraft Island hides both of these, but doesn't remove them, meaning, while the original Pirate Ship stage might make one have to jump back onto the ship or take a little damage, Instant Death Minecraft Island will just randomly make a player zoom off the screen at Mach 5, resulting in an instant death.
I was going to record some gameplay to prove this, but it turns out replays can only be ripped off a Wii U by uploading them to YouTube first or using an HDMI capture card, and I've already put too much effort into this post.
Clown. That is all I have to say.
The phrase "considered harmful" in regards to computer science originated in a 1968 essay by Edsger W. Dijkstra, in which he argued that the "go to" statement was harmful because it too easily invited programmers to make an absolute mess of their code. That means, for more than fifty years, computer nerds have been arbitrarily deeming software they don't like, whether they can articulate a proper argument (like the above) or not, "harmful".
But what does it mean to be "harmful", anyway? Let's open a dictionary (or just dictionary.com) and see:
harmful: adj. causing or capable of causing harm; injurious: a harmful idea; a harmful habit.
So a piece of "harmful" software would be one that caused the user harm or is capable of doing so. I specify the user because software meant to facilitate piracy might "harm" a corporation's profits, or a tool to break through firewalls might "harm" a control freak's attempt to filter the outside world, but I do not think a reasonable person would consider any of those programs harmful. The user in this sense must also be extended to the computer the user, well, uses, as impairing a person's tools would also impair their ability to complete whatever tasks they were using the tools for, thus harming the user albeit indirectly.
Right and away, we can consider all malware and viruses to be "harmful" under this definition, for hopefully obvious reasons. If a program is so poorly written that it results in catastrophic data loss or leaks information to parties said information was not intended for, it is harmful because it has done tangible harm to the user. But much like trying to determine what's bloat and what's not, the waters turn murky from here. What makes a program harmful, if not for its actual capacity to do harm to the user? According to the types of people who unironically still use "considered harmful" in Current Year, some of the reasons include:
systemd
is widely considered harmful by much of the Linux community, and yet I find it worlds easier to write a service file to daemonize something for systemd
than a startup script for any other init system. Much ado has been made about systemd
's supposed myriad bugs, and yet I have never personally encountered any of them. systemd
has never caused me any harm, so how could I honestly consider it "harmful"?
JavaScript is also similarly maligned. It is responsible for much of the corporatization of the internet, facilitating "rich user experiences" like being able to buy things without going into a physical store or at the expense of also making possible targeted advertisements, legion browser exploits, cryptocurrency miners, bloated "news" sites that refuse to show any text to, well, text-based browsers or those without JavaScript support... JavaScript demonstrably does the end user much harm when opening only a few tabs can slow their entire machine down to a crawl, but it also means I can run college-mandated software like Microsoft Office without having to actually install it on my computer. (Which, since Office is perennially allergic to WINE, would mean having to install Windows 10 as well.) If I can enable JavaScript when I need to do the aforementioned college tasks and keep it disabled the rest of the time, am I really harmed by it? Has my computing freedom really been damaged?
However, I would consider Discord harmful because it demonstrably causes harm to the end user:
Both of my brothers and my one "real-life" friend use Discord. I have tried time and time again to explain why Discord is spyware meant to suck advertising data from them and that they should use software that respects them, but their response is only ever "but all my friends are on it".
Discord is harming them, but they don't consider it harm because their values are different. A "starvingdev" (the opposite of a "soydev"; one who seeks minimalism at all costs) considers Python harmful because it's "slow" and "bloated", but I do not consider Python a harm to me as it enables me to write software I otherwise would not have as I don't have the attention span to learn a "real" programming language.
I'd rather spend that time writing poetry, or watering my garden, or riding my bike...
A Windows user is consistently harmed by Microsoft due to the constant telemetry that cannot be disabled and the updates that take forever to install and, well, Windows just being a pile of shit that crashes a lot. They might concede that having to sit through blue screen after blue screen or update after update is a harm as it prevents them from using their computer for what they bought it for, but I would argue that a Windows user happily making music or Photoshopping to their heart's content is doing them a lot less harm than forcing them to use Linux and forgo the programs they need for their hobbies due to no Linux support for them. In the same vein, I am much happier when my computer setup is Debian set to boot straight to a TTY (as opposed to a graphical session) and I can write in a Byobu session with no tray icons or notifications or other distractions (caused by the computer, anyway) and can startx
into i3 for playing games than when I am forced to use a Windows computer for a program with no Linux equivalent, constantly nagged every five minutes with update popups and Cortana begging me to sign in. We have different values and different needs and are harmed when our computers prevent us from fulfilling these.
The purpose of a computer is to assist the user in completing the tasks they need to do in their life. For a computer program to obstruct the user in this pursuit, or to exploit them in the process, is to do the user harm. That is, I believe, what "considered harmful" should mean, not anything that falls outside of the cult of ultra-minimalism.
]]>