• 0 Posts
  • 66 Comments
Joined 3 years ago
cake
Cake day: June 9th, 2023

help-circle
  • In Haskell, that’s “unit” or the empty tuple. It’s basically an object with no contents, behavior, or particular meaning, useful for representing “nothing”. It’s a solid thing that is never a surprise, unlike undefined or other languages’ nulls, which are holes in the language or errors waiting to happen.

    You might argue that it’s a value and not a function, but Haskell doesn’t really differentiate the two anyway:

    value :: String
    value = "I'm always this string!"
    
    funkyFunc :: String -> String
    funkyFunc name = "Rock on, "++name++", rock on!"
    

    Is value a value, or is it a function that takes no arguments? There’s not really a difference, Haskell handles them both the same way: by lazily replacing anything matching the pattern on the left side of the equation with the right side of the equation at runtime.



  • I got the .net and .org of my last name, and offered $50 to the owner of the .com as he wasn’t doing anything with it. Kind of a lowball, admittedly, but I would’ve gone up to a hundred or two. Instead, he told me it was worth thousands, which, lol, but then he didn’t renew it, which I only found out because a random third person reached out to me as the owner of the .net offering me the .com. Turns out they hadn’t actually bought it yet, though, so instead I scooped it up and now I’ve got the trifecta!



  • Opt out means “we will be doing this, without permission, unless you tell us not to” and opt in means “if you give us permission we will do this.” Codebases can contain important and sensitive information, and sending it off to some server to be shoved into an LLM is something that should be done with care. Getting affirmative consent is the bare minimum.


  • The right thing is to make it opt-in for everyone, simple as that. The entire controversy goes away immediately if they do. If they really believe it’s a good value proposition for their users, and want to avoid collecting data from people who didn’t actually want to give it, they should have faith that their users will agree and affirmatively check the box.

    If free users are really such a drain on them, why have they been offering a free version for so long before it became a conduit to that sweet, sweet data? Because it isn’t a drain, it’s a win-win. They want people using their IDE, even for free, they don’t get money from it but they get market share, broad familiarity with their tool amongst software engineers, a larger user base that can support each other on third party sites and provide free advertising, and more.












  • Fan art is generally protected because of a rule called “fair use”, which allows people to use copyrighted work without permission. For example, if you briefly quote a book, the author won’t have success if they go after you for copying from their book, even though you clearly did. Generally speaking, a person making fan art and not selling it is going to be protected under fair use. The law wants creators to have control of the thing they created, but we all live in a shared culture and we all deserve to participate in the art we experience, so there’s some wiggle room, and this has been the case long before AI was a thing.

    What these AI companies are doing, on the other hand… well, it hasn’t really been tested in court yet, but they’re doing a lot more than single images or brief quotes, and they’re doing it for money, so they’ll likely have some work to do.


  • My characterization would be that there’s a spectrum here:

    • 100% yes code: compilers, IDEs, scripting environments, databases, you wanna get something done, you are going to be specifying it in something that at the very least looks like traditional source code.
    • Completely on the other side of the spectrum, traditional consumer-oriented software: word processor, web browser, accounting/bookkeeping (not spreadsheets though, we’ll get to those), photo/video/audio editor, maps, music player, etc.

    That first side of the spectrum is pretty easy to pin down. It has little to no metaphor or abstraction, and the pointy tip of this side is no metaphor at all, just writing machine code and piping it directly into the CPU. A higher level language will let you gloss over some details like registers, memory management, multithreading, maybe pretend you’re manipulating little objects or mathematical functions instead of bits on a wire, but overall you are directing the computer to do computer things using computer language, and forced to think like a computer and learn what computers can and cannot do. This is, of course, the most powerful way to use a computer but is also completely inaccessible to almost everybody.

    The second, I’d link together as all being software with a metaphor that is not particularly related to computing itself, but to something more real world. People edited music by physically splicing tapes together, an audio editor does an idealized version of that. Typewriters existed, and a word processor basically simulates that experience. Winamp wasn’t much more than a boom box and a sleeve of CDs. There is usually a deliberate physicality and real-world grounding to the user’s mental model of the software, even if it is doing things that would be impossible if the metaphor were literal. You don’t need to use code, but you also don’t get anything code-like out of it.

    No-code is in between. It’s intended for a similar audience as the latter category, who want a clear, easy-to-understand mental model that doesn’t require a computer science degree, but it tries to enable that audience to perform code-like tasks. Spreadsheets are the original example of this; although they originate as a metaphor for paper balance sheets, the functions available in formulas fundamentally alter the metaphor to basically “imagine if you had a sheet of paper that could do literal magic” and at that point you’re basically just describing a computer with a screen. Everything in a spreadsheet is very tactile, it’s easy to see where your data is, but when you need to, you can dip into a light programming environment that regular people can still make work. In general, this is the differentiator for “no code” apps: enabling non-coders to dip their toes into modifying program behavior, scripting tasks, and building software. They’re limited to what the tool provides, but the tool is trying to give them the power that actual coding would provide.

    I’d never thought of WordPress as low-code, but I think that fits. Websites go beyond paper or magazines, and WordPress allows people to do things that would otherwise require code and databases and web servers and so on.



  • Safari on iOS has always had some pretty strict limits on what extensions can do. For example, content blockers don’t get to run code on the pages you browse, it’s more like they give the browser a list of what type of thing to block when you install and configure it, then when you’re browsing, the extension isn’t even doing anything, it’s just the browser using the list. Obviously that’s more limiting, there might be ads that are best dealt with by running a bit of code, so it makes sense that they’d consider it “lite”. (The benefit of those limits is that ad blocking extensions can’t run amok and kill your phone’s battery since the browser’s handling it by itself.)