Skip Navigation

InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)P
Posts
0
Comments
74
Joined
2 yr. ago

  • Stateless functions still deal with state, they just don't hold onto it. Without state to mutate, a so-called stateless function doesn't do anything.

    In declarative languages, your state is the sum of everything you've declared. You don't query results out of thin air. Computational results logically conclude from everything you set up.

    HTML ""has state"", as in it has a DOM, but it doesn't do anything with it. You don't mutate the DOM after it's built, or query the DOM to compute results that weren't trivially evident from the state you declared.

    You can do those things with JavaScript. But all that proves is JavaScript is a programming language, and HTML is just a data format it can interact with.

  • Sure. Which is why I would only make this distinction in a place where I can reasonably expect people to know better. Like, perhaps, a niche community on an experimental social media platform dedicated to programming.

  • The bar for me is whether the language describes an executable program that has state and control flow.

    You could perhaps be generous and describe the DOM as a (write-only) state and the parser as a control flow. I don't, personally.

    HTML is just a data container format to me. Belongs with the likes of XML, JSON, JPG, PNG, GIF, MP3, MOV, etc.

    The umbrella term I'd use for all of these is "coding". That's the skill of understanding structured languages and format specifications, and understanding how you can and can't piece things together to make something coherent. This is a critical requisite skill to programming. But programming is more.

    Programming is the art of juggling of state and control flow in clever ways to trick funny rocks into computing something you don't know. It doesn't need to be general purpose, but I would argue it indeed needs to have a purpose. It has to be something more than just a pile of declarations you know from the outset. Otherwise it's just structured data.

  • oh cool. now I can block every trash news article that includes phrases like "blasts", "slams", "says", "should", "could", "might", and "need to".

  • This is almost word for word what I said in another friend group today. Protecting individuals is literally why LLCs exist. It's what "LLC" stands for.

    Nintendo Hyper Beam'd them into oblivion but they got a Substitute up first. The defense strategy was smart. The strategy that put them in the position of needing to use the defense strategy was idiotic, yes, but the defense was smart.

    Short of Nintendo doing nothing at all, this is probably the best outcome that could have realistically happened.

  • There are really only three licenses you should ever consider when making a new project in earnest: GPL if you want it to stay free forever, MIT if you don't care. Put an L in front of GPL if your project is a library. The end.

    Any CC license including CC0 looks fine on paper, and they are court-tested, but anyone with a legal department won't risk dealing with one in the context of software, because CC licenses are for creative works and scientific research, not software. The main thing they're missing is a warranty release.

    The Unlicense feels like an earnest attempt to fill the void that CC0 fails to fill, but it isn't a tested license. Everyone with a lawyer won't touch it with a 10 foot pole because they don't want to be the ones to find out how enforceable it really is. Besides, the only thing it gains you over the MIT is the ability to go uncredited. Which is nice feature; if people didn't want this we wouldn't have so many attempts to make a license that has it. But I feel like of all the features of a free software license one should be concerned about, explicit lack of credit is a pretty low-rung one.

    Direct public domain insertion is good and effective, but is not global. Many places in the world have no formal legal system to do this (Germany is a famous example). PD dedication without a permissive fallback license makes your code completely unusable in these places. It's exactly why the CC0 and Unlicense exist in the first place.

    Every single other license is either a meme license not worth the toilet paper it's written on, a weaker version of the GPL/MIT, or the GPL/MIT with extra steps.

  • Apple

    Jump
  • In a rather unorthodox way, yes.

    Android is one of those rare examples of a Linux kernel not being paired with GNU tools. I believe Android wrote their own versions of all the tools they wanted.

    The kernel is also extremely locked down by default. They very intentionally designed the OS in such a way that every facet of the kernel is kept abstracted away from you. It's about as black-boxed as you can get, to the point where the fact that it's Linux underneath is almost meaningless.

  • Indeed, it is my choice. And as of now, even in light of all of this article's information, I have chosen Discord. For now.

    Deal breaking flaws to others are not necessarily deal breaking flaws to me. If their differences in principles prevent them from reaching me on my preferred platform, tough noogies for them.

  • You'd certainly think so. But never underestimate a user's ability to jury-rig a piece of software into doing something it wasn't designed to do, ignoring any and all obviously better solutions as they do so.

    I don't think I've ever actually seen documentation published on Discord and nowhere else. But I do very often see no documentation whatsoever except a "just ask around on the Discord" link serving the role.

    Discord probably isn't used as a robust ticketing system either; usually if anything it's a bot that will push all tickets to an actual GitWhatever issue, which is fine. But again, what I do see often is projects with no ticketing system whatsoever, and a Discord link to just dump your problems at. If the issue tracker on the repo isn't outright disabled, it's a ghost town of open issues falling on deaf ears.

    Announcements can be pretty bad. Devs can get into a habit of thinking the only people who care about periodic updates are already in the Discord server, so they don't update READMEs, wikis, or docs on the repo as often as they should, allowing them to go out of date.

    Fwiw I've also seen several projects that have Discord servers with none of these problems, because they handle all those other parts properly.

  • I don't mind Discord being a centralized platform for open source project discussion, if and only if the only roles it serves specifically play to its one strength, which is real time discussion. Asking for live support (from the dev if they are there, or the community if they are not) and doing live bug triage are the two big use cases.

    Should contact for these things be real time? Maybe, maybe not. Async discussion like you get on forums or via email can do the job. But if you value real-time chat, Discord does it well.

    Everything else? Do it elsewhere. Do not make Discord your only bug tracker. Do not make it your only wiki. Do not make it your only source of documentation. Do not make it the only place you broadcast updates or announcements. Do not make it your only distribution platform for critical downloads. And for the love of god please do not make it the only way to contact you. I don't care if you allow Discord to additionally do these things using integrations, that's fine, just stop trying to contort Discord into your only way of doing these.

    Is Discord the only capable option for real time chat? No. But it has several things going in its favor, namely how one can reasonably expect a good sum of their target user base is already using it independently for other purposes, in addition to its numerous QoL features.

    It can also better integrate into the dev's personal routine if they already use it independently. Like, do I have an email address? Yeah. Do I read my email on any reasonable interval? Hell no. My email inbox is little more than a dustbin for registration confirmations and online order receipts. I've had email for decades and I think I can count the number of non-work, non-business conversations I've held over it in that whole span of time on one hand. Meanwhile, I'm terminally online on Discord. So if I'm gonna be a small independent FOSS project developer, am I gonna want to interface with everyone over email? No. I'll still make it an option, because being only contactable on Discord is cringe, but it will not be fast. Discord will be my preferred channel.

    Should I put more effort into being contactable on other platforms, because it's the right thing to do? Meh. I have no duty of stewardship to be available on platforms available to anyone in particular. I maintain this hypothetical project for free, on my own time, of my own volition, and I provide it to you entirely warranty-free. I have the courtesy to make all static resources available in sensible public places, and I provide email as a slow, async way to reach me. But if you want to converse with me directly in real time, you can come to me where I'm hanging out.

  • PHP stack traces are effectively identical to Java's in every metric I'm concerned about.

    If you get them sensibly in a log file, anyway. If you allow PHP to render this god awful fugly table inline with your page? Well, have fun. Yes, all the same info is there, and on paper it's organized in an easier to read format. But oftentimes the table will collide with and mangle with other elements and styling on your page, making the trace irritating or impossible to read.

    This isn't much of a problem of course, because aforementioned log file is absolutely the way to do it in the first place, and PHP lets you. And hey, absolutely obliterating your page DOM in strange and exciting ways on error sounds like a fantastic way to ensure errors get caught and addressed in testing, so even the unpredictable mangled DOM bullshit is useful in its own way.

    But if someone wants to dunk on PHP for at least outwardly appearing to promote trying to debug it with these awful stack trace tables, I think that's a well-earned roasting.

  • There is a long, long list of classifications they may put you in. I believe appointing one to you is their job, so you don't get to pick. I read through all of these and couldn't decide which of them really applies to, "I am building a FOSS app/library".

    There is a "scientific research" designation. Does that count? Well, if so, it says this:

    Scientific research does not include activities of a type ordinarily carried on as an incident to commercial or industrial operations, as, for example, the ordinary testing or inspection of materials or products, or the designing or construction of equipment or buildings.

    Is building software "designing or construction of equipment" that is "incident to commercial operations"?

    Maybe it belongs under classification U41, which is Computer Science? Does building software count as "research" into comp sci for the benefit of the general public?

    Maybe it's W80, public utilities? I think that's intended more for municipal utilities like electricity, water, gas, and sewer, not public software projects.

    I really have no clue. Here be dragons.

  • IANAL and I have zero experience doing anything remotely like this.

    But from my cursory reading of the IRS instructions on their website, doing this in the US specifically is more or less a two step process:

    1. Form an organization by filing with your local state. Every state handles this process differently; in some (most?) this can be as straightforward as filling out a form, paying a processing fee on the order of $100 or so, and waiting for approval. Just don't form an LLC in particular, as that complicates the next step.
    2. Fill out Form 1023-EZ with the IRS. This requires proving your organization qualifies for tax exemption (it is not clear to me whether this would) and a filing fee of $275. Your org also cannot possess more than $250,000 of assets, cannot receive more than $50,000 of revenue from donations within the span of a year, and cannot be registered as an LLC. If you fail to meet these, you need to fill out the regular Form 1023, which I believe is more involved and has a more expensive filing fee.

    If both of these forms are accepted, kapow! You are now a tax-exempt organization, and other corporations can charitably donate to your project for tax breaks. Just remember to do your station-keeping tasks like filing your annual company and tax exemption status renewals, reporting your earnings to the IRS, and sending receipts to donors.

  • I use KDE on Debian and did not encounter this problem when I did the reverse action (migrated /home from a second drive back to the system drive).

    This may be an insulting question, but are your files in the new home partition inside a /home directory on that partition? Because if they are, that would definitely mess it up. If you mounted that to /home in your fstab file, then the path to your home dir would be /home/home/user instead of /home/user. Your user directory needs to be at the root of the filesystem on that partition.

    I expect you did not make this mistake, but a sanity check never hurts...

    Oh, and check the files on the new partition with ls -l as well. See who owns them. If you did the copy with the root account or with sudo, the owner of the files might be root. They should be owned by the user you are trying to log in as.

  • I can't give you precise directions on how to troubleshoot this, hoping someone else can chime in with some wisdom.

    What I can tell you is that being able to log in and then failing to launch a session is definitely evidence that your system either cannot find or cannot access the /home directory. I ran into the same thing not too long ago, but I guarantee you that we don't have the same problem. Mine was file permission related due to installing a new OS. You have the same OS.

    When you installed your OS, did you create a root user account? Not an account that can use sudo, I mean the root user. That user has a special home directory, /root, which is entirely separate from /home. If you can find a guide that tells you how you can boot your OS as the root user, try that.

    Put your system back into the broken state with the new partition in the fstab file, reboot, log in as root, and check the filesystem. If you did things correctly, a /home directory should be there, and there should be files in it. If you don't see it, it means for whatever reason it failed to mount on startup. Try using the mount command manually to force it to mount, and see if it gives an error. If it works with the command, it means your fstab is not correct.

    Best of luck! Welcome to the Linux experience... lmao

  • or is it a really good OS for privacy that sacrifices in usability?

    Privacy and usability are inversely correlated. Anyone who tells you otherwise either has a relatively weak definition of "privacy" or a relatively exotic definition of "usable". If you're at the point of installing an OS like Gentoo just for its privacy benefits alone, I'd say you're already the latter case, even from the perspective of most fellow Linux users.

    Of course, that doesn't necessarily imply very un-private software is always very usable, or that highly privacy-respecting tools with good UX don't exist. Just that most highly UX-polished software tends to have poor privacy, and most privacy-focused software expects the user to do a lot of hoop-jumping to make up for all the systems and workflows the user can't utilize due to having some dealbreaking non-privacy-respecting component to them.

  • Here's an overview of how Linux reads its filesystems on boot:

    1. You press the power button on your PC.
    2. Your motherboard receives power and begins a process called Power-On Self-Test, or POST. This is essentially the motherboard "feeling out" on all of its ports to see what's connected. It senses all of your hard drive(s).
    3. The motherboard picks one of the partitions on one of the connected drives and tries to run it as an operating system. For a linux system, you want this to be /boot.
    4. /boot finds your actual system partition and tries to spin up the OS using it. This partition becomes the "main" one you'll see by default when it's fully up and running.
    5. At some point in the boot process, Linux checks the contents of the file at /etc/fstab. "fstab" here is short for "file system table". It's basically a list of other partitions plugged into your PC, and a mapping of where it should be mounted in your filesystem. If your system partition was Partition A, for example, and you had another Partition B that you want to be accessed at the path /B, you'd add a line to your fstab file that says something to the effect of, "hey, reach out to the connected partition with ID

      <long id string>

      , and if it's there, create the folder /B, and make the files inside of the partition show up there." This is called "mounting" the filesystem. You can do it manually at any time with the mount command. The fstab file is just a way to get Linux to auto-mount permanent partitions on startup. You can mount any drive to any path, including /home.

    What you need to do is:

    1. Format your new drive, and create a new partition there.
    2. Mount the new partition with the mount command. Park it anywhere you want. /media/new_home or whatever you like. This will just be a temporary place.
    3. Copy everything from your /home directory to the newly mounted one.
    4. Move the existing /home folder to literally anyplace else than where it currently is. \home_old would do. It just needs to be out of the way. You almost certainly want to do this only when logged in as the root user, or from another OS running off a USB. You will not be able to log in as any user after you do this until you finish the following steps.
    5. Edit your /etc/fstab file to point your new home partition to the path /home. This will "hook up" the new partition.
    6. Reboot to make Linux mount the new partition.
    7. Verify everything works.
    8. Delete the backup home directory.

    Answering some of your questions:

    Can /home live on a separate drive from the system partition?

    Yes. Linux does not care in the slightest where any mounted drives are. A drive is a drive is a drive. If it mounts, it mounts. Just make sure it's in your fstab file.

    How should I organize my partitions?

    There is no right answer. It depends entirely on what you need and how you intend to use your PC. But since that answer is unhelpful, I'll tell you how I've done mine. I currently have a single 2TiB SSD split up like this:

    [ 200 MB boot | ~500 GB system | 2 GB free | ~1.5 TiB home | 8 GB swap ]

    Boot comes first and is tiny. System is probably an order of magnitude bigger than it ought to be, but whatever. 2 GB of deliberately unallocated space is there for the exceedingly rare situation where a dumb bug chews up all the storage on the system partition rendering it un-runnable; it's emergency expansion space I can tack on to get it running just long enough to resolve the problem. Home gets the lion's share. And swap goes at the end, where home can cannibalize it if some day I decide I don't need so much swap space.

    You would probably organize your drives in a similar way, except one drive would be entirely dedicated to /home and nothing else, and system taking up the bulk of the other drive. That would be the easy and naive solution. Some users may be inclined to create other partitions for organizational purposes. I personally don't care for that organizational pattern, so, w/e.

    I cannot help you with your display troubles. :(

  • Distrohopping sounds exhausting. I don't know why people bother.

    How people can just wake up one day and go, "Man, FUCK all my apps and settings, today I want to reinstall and reconfigure 70% of them and then find and learn alternatives to the 30% that aren't transferrable, and completely disrupt my workflow for several weeks" is utterly beyond me.

    It's like a miniature version of people who get tired of living in a place and just... move. For no reason. All that effort, selling your home, finding a new one, finding a new job, just because you're... bored?? I am not knocking it, I just can't relate at all.

    I started my Linux life in Ubuntu MATE, and then to Debian when I figured I no longer needed Ubuntu's handholding and I was tired of dealing with MATE's abysmal lack of community resources and documentation. Unless and until Debian either becomes antagonistic to me or their support for new software becomes severely crippling, I have no intentions to leave.

    It just works. Leave it be. This is my home.

  • I have asked many a friend to play modded Minecraft with me.

    Unfortunately, I am reminded time and time again that the Venn diagram of people I know who are interested in that and people with PCs who can run that is two circles.