1. 3

    in nearly 30 years I have never had a bug introduced into my code because a local function variable was mutable when I didn’t expect it. It does nothing for me to aid in code analysis or tracking. It has at most a tiny impact on performance.

    This is a huge annoyance of mine in JavaScript. JavaScript const only prevents reassignment, so using it with function local objects is a waste of time (and a source of bugs where junior devs might naively believe that the object is immutable), but it’s very popular for some reason. Yet I have essentially never seen a bug caused by function local reassignment. The closest thing to it is that in Vue 3, you should do x.value = thing instead of x = thing, so declaring x as const does help prevent bugs. But it’s really just a weird quirk of Vue 3’s reactivity system that makes it valuable.

    1. 5

      I have no idea why JavaScript has const for local variables but IME it is very useful in Typescript because TS uses constness of variables to make type guards more useful. Especially in async code.

      e.g. if I have const x: string | null = ... and I write if (typeof x === "string") { ... } then inside the body of that if statement Typescript continues to believe that x is a string. Whereas if I write let there then the information that Typescript inferred from control flow gets invalidated quite quickly (offhand I think at any function call and after any await in an async function).

      1. 4

        On the other hand, since const and let were standardized I’ve never needed to use let (reassignement) outside of a rare for (let i = start; i < n; i += step). I always use const on the basis that while I don’t need reassignement I shouldn’t enable it.

        1. 2

          I always use let on the basis that it’s shorter and looks better to me.

          1. 1

            while I don’t need reassignement I shouldn’t enable

            Why? Reassigning locals doesn’t cause bugs. Why spend even a second thinking about it?

            1. 6

              That’s a nice zugzwang, he can’t respond with the obvious retort “I didn’t spend a second thinking about it; I just used const” because then he’ll have spent more energy on the argument and lost by the metatheory that you put in place.

              1. 1

                A functional programming mentality encourages immutability by default.

                1. 1

                  But const is mutable. That’s literally the whole complaint I have about it. That’s why I don’t think you should use it in most cases.

                2. 1

                  Because let semantically means “I’m going to reassign to this binding later on” while const means “this binding is assigned to only once here”. Like yourself I didn’t really think about it. That just makes sense to me.

                  Both convey some intention to me.

                  1. 1

                    You could have blorf mean you’re going to access a variable an odd number of times and splork mean you’re going to access it an even number of times. You could probably even get very quick at knowing in advance whether a variable if a blorf or a splork. It’s still a waste of time because odd versus even access doesn’t cause bugs and so there’s no reason to keep track of it whatsoever.

                    Mutation causes bugs. Reassigning a local looks similar to mutation, but unlike mutation it is not a source of bugs. People want const to do something about mutation because that’s the source of bugs, but it just doesn’t. It instead prevents reassignment, which is a waste of time. Use const for exported values and primitives (which has the side effect of making them immutable, which is what you want). Don’t use const for local objects because you’re not preventing any bugs.

            1. 1

              :(

              1. 15

                While this is an interesting post, I’m not sure how the content here is relevant to this website.

                1. 19

                  wut. It’s about configuring a variety of software and hardware components to enable streaming an avatar over the internet. That seems pretty par for the course to me…

                  1. 12

                    What config though? I don’t see a single line of config. I don’t see much more than a line or two on the justification for picking any of those options. Don’t get me wrong, these sorts of explorations are important, but important in the way that organizing my house is important; important but not necessarily useful to share to a programming audience. The tag chosen, “programming”, also doesn’t really apply to the content of the post which is another Yellow Flag in my mind.

                    Once content like this becomes relevant, what’s stopping us from sharing personal productivity tips (explicitly called out in the rules), Twitch streaming setups, DVR setups, Usenet downloading chains, etc, etc. This feels more like “nerd lifestyle” than it does coding which I’m seeing more and more of in Lobsters in recent years.

                    1. 5

                      I’m interested in doing the exact same kind of vtuber-style streaming as the OP, and would definitely appreciate a technical writeup of exactly how they got their hardware+software setup working and their overall impression of the quality of it. I recall seeing other articles on @cadey ‘s blog about this sort of thing a while ago (about setups which, disappointingly, didn’t seem to work all that well). I haven’t gotten to reading the post in detail yet; I would hope that it has enough technical detail that someone else can replicate the setup. But even so I think it’s topical on the grounds of being an example of what one can in principle achieve with modern video streaming and VR tech.

                      1. 4

                        The hardware bit that I missed in the post and will edit in soon:

                        CPU: AMD Ryzen 5 3600

                        RAM: 48GB DDR4

                        GPU: AMD RX6700XT

                        Webcam: Logitech Logi Stream (it’s impossible to get a solid model number on this, sorry)

                        VR headset: Valve Index / Oculus Quest 2

                        Other tools (not mentioned in the article): Steam Controller (with OBS keybinds), Xbox Series X controller (for games), NAS to store stream recordings offline

                        1. 1

                          Also, this stuff only really works on Windows. I haven’t tried running it on Linux, mostly because VSeeFace pretends to be a webcam and that doesn’t work on Linux.

                      2. 3

                        The “programming” tag’s description is,

                        Use when every tag or no specific tag applies

                        So I’ll hazard a guess it was chosen in its role as the default fallback. We don’t have a VR tag or a system setup tag, though those topics are of interest to many of us.

                        1. 5

                          though those topics are of interest to many of us

                          That doesn’t matter. There are many here that are interested in personal productivity, yet it is off topic. Same with the vague definition of “business news” (anything with products, except Apple it seems).

                          This site has a set of things that are on topic, otherwise they are not. If you can’t find a fitting tag, don’t use “programming”, just don’t submit, because it is off topic.

                          1. 3

                            If you can’t find a fitting tag, don’t use “programming”, just don’t submit, because it is off topic.

                            The definition of the “programming” tag literally is “Use when every tag or no specific tag applies” though.

                            1. 4

                              If it is not about programming and you use that tag, it is very likely off-topic.

                              1. 2

                                I agree :).

                                Since there is a backlog of tags that the lobste.rs community wants (= thinks is on-topic for lobste.rs) but that haven’t been created yet, the absence of a tag isn’t a perfect heuristic for whether something is on-topic or not (otherwise nix wouldn’t have been on-topic until last month ;) ).

                                1. 4

                                  For me there is a difference: I think that nix was always on-topic, since Unixy systems are on-topic. The new tag represents a specialization. It is as if we did not have a python tag here and programming was flooded with python related articles. The python tag is a specialization of programming,

                                  The above article however has nothing to do with programming, so when we add a tag that captures “tech setups” the site broadens its topical landscape. That is different to me. I am not against it, but I think they are not comparable.

                            2. 2

                              I don’t think personal productivity is an equivalent point of comparison. This is specifically a technical puzzle. I think it’s surely in the spirit of the site’s topic law if not also the letter. The best evidence I can give is the vote count on this thread. There are many naysayers, but it’s still an overwhelmingly positive score.

                              1. 3

                                This is specifically a technical puzzle.

                                This site isn’t just about technical things. For example, we don’t talk about civil engineering or automotive engineering here despite both of these fields being deeply technical. From the rules: “Some rules of thumb for great stories to submit: Will this improve the reader’s next program? Will it deepen their understanding of their last program? Will it be more interesting in five or ten years?” I don’t think stories about personal setups do any of these things. Nor does discussing viaduct construction or catalytic converters.

                                The best evidence I can give is the vote count on this thread. There are many naysayers, but it’s still an overwhelmingly positive score.

                                This gets to the heart of the question. Should Lobsters be a site foremost driven by its community and only slightly driven by its rules, or should it be bound by rules with the community acting as a guide around these rules? When I joined Lobsters ~7 years ago I had finished my graduate studies a couple years back. I was looking for a site that offered me what academic conferences used to offer me. The strong topicality on Lobsters made it feel like a good fit. From what I’ve been seeing, many Lobsters who have joined over the last 3-4 or so years (N.B. this may just be recency bias and I’m not feeling motivated enough to make a Bayesian CI around my hypothesis to check, though I may at some point, so take this with a large dose of salt) seem to be more interested in creating a community than sticking to a topic. You can actually see the differences in the topics being posted and the discussions being had though. To me the topicality of Lobsters is what makes it unique, not just Yet Another Tech Forum.

                                There are many other technical sites with a focus on community. Off the top of my head, there’s HackerNews, Slashdot, Reddit, Twitter, Tildes, Yarn/twtxt, Usenet newsgroups, and the hundreds of Mastodon instances that discuss tech. What makes Lobsters unique is its strong focus on topicality. Ideally, I can come here and be guaranteed to read a story that would “improve my next program.” If I wanted a community, I could go onto any of the many other community sites that are out there. Moreover I’m definitely not a fan of building closed communities around invite only systems because they almost always lead to predictable clique dynamics (for that matter, I have pretty negative thoughts on closed general communities as a whole but this is off-topic). For me, losing the topicality of the site would probably cause me to want to leave the site, truth be told.

                              2. 2

                                lol I love that “except Apple it seems” - why is it that they can maintain such a good brand and be so hostile to open source? I just don’t get it. I’m not sure microsoft has ever been as bad as apple when it comes to FOSS but still they have somehow a bit worse optics fwict. Absurd.

                                Anyway, that was off-topic… I don’t really care about trying to find the infinitely thin line that separates “acceptable on lobste.rs” from “unacceptable on lobste.rs” … the question itself only exists because we have to coordinate this aggregate entity “lobste.rs” and while we try to be a bit decentralized with the voting and the discussing I think the definition will always be “whatever the mods think” - so right now I guess I am making a risky comment if this whole discussion ends up in some purge like has happened a couple of times (where I only arrived to see the aftermath but could have been baited into it if I had arrived sooner).

                              3. 2

                                Good desserts are interesting to many of us, but sadly off-topic. I’ve always been a bit concerned about Lobsters getting overrun with consumer product trip reports, which in some ways this is. Still a neat article though–I’m just a little torn on its topicality.

                                1. -4

                                  What is your favorite dessert? I like chocolate-y things :)

                          2. 5

                            Well for what it is worth, some of the information in this article was extremely interesting and potentially useful to me in my job as a professional programmer. I agree it is niche and I can see how it might be irrelevant to 99.99% of programmers but for me, well lets just say I will look into building this functionality directly into the application I my company is building.

                            Having said that, more technical details would be useful. On the other hand I probably can’t use the exact software the author was using anyway so I will have to do my own research.

                            1. 1

                              Why would “fully asynchronous I/O” be a good idea?

                              (Assuming the usual meaning of async = “programming w/out control flow”.)

                              1. 6

                                In general, it’s easy to implement synchronous API on top of asynchronous API, but not vice versa. Managarm implements POSIX synchronous API on top of its asynchronous API, for example.

                                1. 1

                                  It is impossible to implement synchronous API on top of asynchronous API in the most widely used programming language, JavaScript.

                                  If you have threads then yes, it might be possible, but why not use threads to begin with?

                                  1. 4

                                    The difference is that asynchronous I/O in Javascript works only via callback. For an OS kernel it is trivial to provide a single synchronous completion-wait syscall and thus all asynchronous I/O can be made synchronous by turning it into two steps: schedule asynchronous I/O, then wait for that I/O to complete. This doesn’t require the application to be multi-threaded.

                                    1. 2

                                      It is impossible to implement synchronous API on top of asynchronous API in the most widely used programming language, JavaScript.

                                      I’m not sure I entirely understand what you mean. If you want to block on a fetch in JavaScript, you can simply await it. That makes it synchronous, does it not?

                                      There’s of course an event loop / scheduler that decides when to schedule your function’s executive, but the same is true of processes/threads on Linux.

                                      1. 1

                                        await is only possible within special contexts (at the top-level or within async functions). Now say for example you want to use an API that requires a non-async function as parameter. Can’t use await in there.

                                        1. 1

                                          But isn’t that like saying “Now say for example you want to use an API that doesn’t do any context switches. You can’t make blocking IO calls in there.”?

                                          1. 0

                                            I am just saying that you can’t - in general - program async as if it was sync. Not in JS.

                                            You can do it in a language with threads (because a thread can be blocked anywhere, whereas async/await can only block in particular contexts).

                                            P.S. I don’t think my example is frivolous. Let’s say the API in question does some sophisticated compute work and you can’t replace or modify it easily. But your requirements also force you to make an async IO call from the callback. Well, you can’t with async/await.

                                            P.P.S. Context-switching behavior is usually not under the control of app programmers so I don’t really get your comparison.

                                            1. 1

                                              I’m just thinking out loud, essentially. I’m still on the fence about the whole function colors debate.

                                              I think it’s interesting, though, that while the syntax of async/await is different, the semantics is essentially the same as traditional processes/threads and context switching. Until you introduce parallel execution primitives such as Promise.all, at which point async/await becomes strictly more expressive.

                                              From this perspective, it seems like async IO is indeed a better foundation on which to build an OS.

                                      2. 1

                                        how are threads implemented? microkernels are just on top of hardware, I don’t know anything about this but from reading a bit on the hurd website the issue is that the synchronous microkernels block a lot whereas the async ones can get more done >.> idk

                                    2. 6

                                      You seem to be thinking in terms of language-level abstractions, not OS abstractions. Your definition is definitely not ‘the usual meaning of async’ in the context of systems programming. When you do synchronous I/O in an OS, the following sequence happens:

                                      1. The OS deschedules the calling thread.
                                      2. The OS notifies the relevant subsystem (e.g. storage, network) to begin processing the I/O.
                                      3. The relevant subsystem may return immediately if it has some cached value (e.g. disk I/O in the buffer cache, incoming network packets) but typically it issues some DMA commands to tell the hardware to asynchronously deliver the result.
                                      4. The scheduler runs some other threads.
                                      5. The I/O completes.
                                      6. The kernel wakes up the calling thread.

                                      The flow with asynchronous I/O is very similar:

                                      1. The OS allows the calling thread to remain scheduled after processing the request.
                                      2. The OS notifies the relevant subsystem (e.g. storage, network) to begin processing the I/O.
                                      3. The relevant subsystem may return immediately if it has some cached value (e.g. disk I/O in the buffer cache, incoming network packets) but typically it issues some DMA commands to tell the hardware to asynchronously deliver the result.
                                      4. The scheduler runs some other threads, including the calling thread.
                                      5. The I/O completes.
                                      6. The kernel either asynchronously notifies the calling thread (e.g. via a signal or writing an I/O-completed bit into a userspace data structure) or waits for an explicit (blocking or non-blocking) call to query completion state.

                                      Given the latter and a blocking wait-for-completion call, you can trivially simulate the former by implementing a synchronous I/O call as an asynchronous request followed by a blocking wait-for-completion. The converse is not true and requires userspace to maintain a pool of threads that exist solely for the purpose of blocking on I/O and waiting for completion.

                                      If your program wants to take advantage of the asynchronous nature of I/O then it can perform other work while waiting for the I/O.

                                      Most OS interfaces are synchronous for two reasons:

                                      • They were designed before DMA was mainstream.
                                      • They originated on single-core systems.

                                      On DOS or early ‘80s UNIX, for example, if you wanted to read a file then you’d do a read system call. The kernel would synchronously call through the FS stack to find the right block to read, then would write the block request to the device’s I/O control registers and then sit doing a spinning read of the control registers to read each word that the device returned. There was no point making it async because there was no way of doing anything on the CPU other than polling the device. Even back then, this model didn’t work particularly well for things like networks and keyboards, where you may have no input for a while.

                                      With vaguely modern (late ‘90s onwards) hardware neither of these is really true. The kernel may synchronously call through the FS stack to get a block, but then it writes a DMA request to the device. The device eventually writes the result directly into memory and notifies the kernel (either via an interrupt or via a control register that the kernel periodically polls). The kernel can schedule other work in the middle. On a multicore system, all of the kernel’s work can happen on a different core to the userspace thread and so all of the FS stack work can happen in parallel with the userspace application’s work.

                                      There’s one additional dimension, which is the motivation for POSIX APIs such as lio_listio and Linux APIs such as io_uring: system calls can be expensive. In the simple async model outlined above, you potentially double the number of system calls because each call becomes a dispatch + block (or, worse, dispatch + poll multiple times) sequence. You can amortise this if you allow the dispatch to start many I/O operations (you generally don’t want to do this with sync I/O because if you had to, for example, wait until a network packet was received before seeing the result of a disk read then you’d introduce a lot of latency. APIs such as readv and writev do this for the case where it is useful: multiple I/Os to the same descriptor). You can make the poll fast by making the kernel just write a completion flag into userspace memory, rather than keeping state in the kernel that you need to query.

                                      Don’t conflate this with a language’s async keyword, especially not JavaScript’s. JavaScript has a run loop and event model tied into the language. It handles a single event to completion and then processes the next one. This is already asynchronous because if you had synchronous event polling then you’d block handling of any other event (you can already mess this up quite easily by spending too long servicing one event). The JavaScript async keyword does CPS construction to generate a handler for an event that captures all of the state of the things that happen after an await.

                                    1. 15

                                      The emerging centralization is exactly what happened on “traditional” web, and is human nature. The web IS decentralized, its just that nobody wants the burden of constant upkeep and baseline of knowledge/skills necessary to host their own stuff. Its 0% surprising to see that in the crypto world because its even more complicated and has an added feature that mistakes can live forever and be technically irreversible. Thinking about people who have gotten wallets stolen or scammed or irretrievable for other reasons - or how the adidas smart contract meant to limit purchases was not well-designed-enough and there is zero recourse BY DESIGN.

                                      Theres this belief in the crypto community that these are all things that can be ironed out and that there is a technical crypto-based solution to all of this, but it seems to me like they are banging their heads against a wall trying to recreate something that exists and functionally works a lot better for 99.9999% of cases with something new with tons of baggage and unsolved problems for a benefit to 0.0001% of cases. Theres a huge UX gap, and it’s going to get bridged (if at-all) by a centralized company - this whole thing feels like a play for usurpation rather than changing the game.

                                      Knowing that there’s major problems with crypto “to be solved” it’s frustrating to see the hype at this level. Its 100% in gold rush / prospecting mode and so many people are going to lose big even if it emerges as a longterm technology.

                                      My own perspective on crypto/blockchain hasn’t changed much in the last 5 years - its a solution looking for a problem. Lately it’s being touted as “the solution to everything”, and I don’t see that. Even more-problematic is that theres an emerging phenomenon where if you don’t play, you get scammed - lots of noise about people minting NFTs on Openseas for content they don’t own, and theres no recourse for creators outside the system.

                                      More writing along these lines:

                                      Is it technically neat? Yes. Time will tell if it pans out anywhere near the hype, and there is a lot of reason to believe it won’t.

                                      1. 10

                                        a solution looking for a problem

                                        Ain’t that the truth. I think there’s also an assumption that “decentralized” is automatically good, as if fiat currency must be bad because SVN was bad. When the central currency authority is a democracy of citizens, decentralization throws away “one person, one vote” with regard to what money is, in favor of “one node owned, one vote”. That should only be a benefit in places where people didn’t get to vote in the first place.

                                        1. 4

                                          When the central currency authority is a democracy of citizens, decentralization throws away “one person, one vote” with regard to what money is, in favor of “one node owned, one vote”.

                                          Can’t agree more. One of the fundamental supposed advantages of cryptocurrency is that unlike centralized banking, it’s democratic, right? You have to convince 51% of the network to adopt your change in order to make it, instead of the bank unilaterally changing the rules. But the problem with this in practice is that the ability to do this is imbalanced and heavily favors people who are able to run nodes and especially people who know how to code.

                                          The exact same power structures exist, except instead of banks - which are at least somewhat accountable to the government and therefore citizens - being in charge, crypto people are creating a future where they are the ones in charge, with no real accountability or oversight because the ability to code is a prerequisite for active participation in the system. I find this idea terrifying. The US Congress (feel free to mentally change this to your country’s legislature or whatever) is dysfunctional, but I would still rather they were in charge of the entire financial system than the comments section of the Orange Site.

                                        2. 5

                                          Knowing that there’s major problems with crypto “to be solved” it’s frustrating to see the hype at this level.

                                          personally the must frustrating/exhausting aspect of the current crypto hype cycle is the unbridled optimism and lack of foresight i see from users. these systems are supposed to be trustless and magical, except “they’re not fleshed out yet, but we’ll fix it in the future by adding trusted third parties to the system in a way that somehow doesn’t undermine its value proposition”.

                                          imagine if someone advertised DNS V2 today as completely trustless but glossed over the fact that root servers are still going to exist.

                                          1. 1

                                            Even more-problematic is that theres an emerging phenomenon where if you don’t play, you get scammed - lots of noise about people minting NFTs on Openseas for content they don’t own, and theres no recourse for creators outside the system.

                                            From the sidelines, I’ve heard this practice described as scamming or even “theft” or couple of times and I’m really not seeing it. It’s as if I looked at this submission and thought “wow this is a great post by Moxie. I wish I owned the lobste.rs submission; maybe I could buy it off faitswulff?” Suppose faitswulff agreed and for $50 I became the official submitter. Has anyone of Moxie, me or faitswulff been ripped off? Not at all. It’s totally bonkers but I’m hard pressed to see the scamming element.

                                            1. 7

                                              Except that NFTs are always advertised as real, indisputable, true, verified-on-the-blockchain, no-pesky-government-can-ever-confiscate-it ownership. If you go far enough down the rabbit hole you end up in the cliché that the only thing you “own” is a receipt that says “you own this receipt”, but that’s not how people actually talk about or advertise the amazing incredible unbelievable future of “web3” and NFTs and such.

                                              1. 1

                                                Leaving aside many artists’ emotional view of copyright, which does tend to veer mostly towards the “theft” part of the spectrum, it’s a fact that being seen as involved in NFTs is a reputational black mark. Some minter creating NFTs without the artists consent can direct a ton of ire onto the artist, simply because many, many people view NFTs as money-grabbing scams, and hate that their favorite artists and projects are “selling out”.

                                              2. 0

                                                a solution looking for a problem

                                                Have to disagree. This new era of finance brings a lot of possibilities not available in the old bureaucratic system with all its guardians. Not talking about dog coins and outright scams, but the legit projects.

                                                There’s so much composeability and innovation happening. One system plugs into the other, and suddenly you have an ecosystem of financial products miles ahead of what’s available to the average pleb “in the normal world”.

                                                Imagine if we only had closed-source software from old giants like IBM, Oracle, Microsoft and Apple instead of the wild-west of creativity and innovation that is open-source. Same idea.

                                                1. 15

                                                  “An ecosystem of financial products” that burn copious amounts of energy, are susceptible to rug-pulls, have no actual technical innovation behind any of them, have their users go through shady leaps and bounds to realize their immaterial wealth, were centralized from the start, and only grow in value if there’s enough committed exchange of actual currencies.

                                                  Ponzi scheme enthusiasts/grifters can keep spouting this “everything is great” rhetoric, it is not true and never will be. You are part of the problem.

                                                  1. 3

                                                    What possibilities? There’s a lot of rhetoric and hopes here, but I don’t see much substance.

                                                    1. 1

                                                      There’s a bunch depending on how deep you wanna go. But starting from the top, you can:

                                                      • Borrow dollars against your portfolio and have a line of credit not available to you in legacy finance

                                                      • Deposit dollars and earn a pretty good interest rate not available to you in legacy finance (https://app.anchorprotocol.com/)

                                                      • Buy stock derivatives, enabling people in for example Thailand to invest in American stocks like Apple or Tesla (https://mirrorprotocol.app/)

                                                      • Pay online or in real life with your digital assets using something like Chai, Alice, Kash etc. Chai is used by millions of unsuspecting users in South Korea, and thousands of merchants connected: https://techcrunch.com/2020/12/09/seoul-based-payment-tech-startup-chai-gets-60-million-from-hanhwa-softbank-ventures-asia/

                                                      https://www.alice.co/ https://www.kash.io/

                                                      Alice and Kash goes even further than Chai I think. They are basically neo banks.

                                                      Then, there are some more advanced features which might not be for everyone, but you can also:

                                                      • Help secure the ledger/network by staking assets with a validator node, and get rewarded a portion of the transaction fees. It’s like if Visa or Chase Bank would partner with you and give you a small portion of the revenue.

                                                      • Provide liquidity to various projects and get paid for doing so, for example on exchanges. A little bit of passive income with assets that might otherwise only be speculative.

                                                      Personally I think it’s pretty cool with the composeability of a lot of projects. It’s like Lego or functional programming. The output of one project plugs into the input of another, and you can build some pretty sophisticated products/services using the basic building blocks.

                                                      1. 2

                                                        I can’t tell if you’re just really really enthusiastic about cryptocurrencies to a naive degree or just trying to advance an agenda. But referring to fiat currency as “legacy finance” and linking cryptocurrencies to the idea of functional programming seems to me as cheap attempts at gaining more mindshare among the folks here. Either that, or you’re living in a bubble which is sure to burst at some point.

                                                        In any case, maybe you should relax and stop commenting so much here trying to win people over that don’t want to be won over.

                                                        1. 1

                                                          Yeah ofc I’m just here to corrupt your virtuous souls

                                                          But referring to fiat currency as “legacy finance”

                                                          I didn’t. There’s plenty of fiat (stable coins) in crypto as well. I was talking about old banks & their old tech stacks.

                                                          linking cryptocurrencies to the idea of functional programming seems to me as cheap attempts at gaining more mindshare among the folks here

                                                          I’m just writing about aspects that interests me, one of which is FP. There are even a few projects written in Haskell.

                                                          stop commenting so much here trying to win people over that don’t want to be won over.

                                                          A.k.a you want to maintain the echo chamber? There must be room for other views as well.

                                                          bubble which is sure to burst at some point

                                                          There’s booms and busts everywhere. Same in the stock market & tech startups. The long game matters more.

                                                    2. 2

                                                      Mandrean, I think it is great that you showed up in the discussion since you’ve done a very polite job of representing a naive crypto-influenced hopeful.

                                                      A few things I’d like to point out:

                                                      • Proof of Stake is not decentralized and in fact cannot be decentralized. It is a permissionsed system where the only way to get voting rights is an out-of-band transaction (buying tokens) there’s also a convincing argument that you can force these platforms to recentralize if they become decentralized via coordinated bribery offers (but only if you have an oracle).
                                                      • The oracle problem is the elephant in the room and addressing that requires social networking technology not verifiable runtimes (blockchains).
                                                      • Proof of Work and also probably Chia’s Proof of Space+Time are things that work but /just barely/, with chia we may have a energy friendly settlement layer to build a p2p digital society on top of but they decided to premine as much as will be mined over the next 20 years.
                                                      • The fundamental coordination problem is not byzantine fault tolerance but rather the tragedy of the commons (sybil resistance is implied by resistance to TotC). Proof of Space+Time is still a resource wasting race so it’s not an improvement over bitcoin until we have the social layer to regulate the competition.
                                                      • NFTs can eventually become deeds to content but only once we have a legitimate platform, which people believe the combination of twitter and ethereum to be. However the legitimate platform (for the time being) is called government.

                                                      Basically, what someone said about the crypo-world programmers not needing to do their jobs to get paid is not only correct but I also think it is the other way around, if you want to get paid you need to do a scam; the problems are hard to solve, require large investment to make a noticable change in the state of tooling to address the problems and finally there is no way our current economic system will value charitable work. Sorry I have to run to lecture now I’d be willing to go deeper into these points.

                                                      1. 1

                                                        Proof of Stake is not decentralized and in fact cannot be decentralized.

                                                        Disagree; PoS can be decentralized not only in terms of geographic location & jurisdiction, but by voting power as well (and maintained that way).

                                                        For example, see study from Leeds University:

                                                        Our results based on simulated paths of the dynamics of nodes’ coins at stake suggest that decentralization of PoS blockchains can be largely maintained with moderate constant or dynamically adjusted coin inflation while decreasing inflation yields a large loss in active staking nodes over time when coin prices are static. Target node participation rates are not only fairer in terms of coin distribution but also yield higher value-weighted returns for participants.

                                                        The oracle problem is the elephant in the room

                                                        There are already decentralized oracle networks, for example Chainlink and Witnet https://chain.link/use-cases https://witnet.io/

                                                        sybil resistance / ToTC

                                                        It’s an interesting space to follow. Witnet’s whitepaper proposes algorithmic reputation: https://witnet.io/witnet-whitepaper.pdf

                                                        I’m sure researchers will come up with other interesting approaches in the coming years as well.

                                                        if you want to get paid you need to do a scam; the problems are hard to solve

                                                        Same applies to being an engineer at Netflix, Spotify, Tesla etc. as well then. Also scams!

                                                        1. 1

                                                          Disagree; …

                                                          Not a matter of opinion if mathematics is to be trusted. Democracy suffers from the same unsustainability problem (via totc).

                                                          chainlink … witnet..

                                                          I am aware of them, they don’t solve the incentive problem. Chainlink seems more bad-faith than witnet but neither works.

                                                          Netflix, Spotify, Tesla, …

                                                          Yes, this is a very good point. Our economic system systematically undermines non-scams so it’s no surprise that you can name many big companies, this is infact what prompted me to comment in the first place. People like to jump on a “solution” whenever there is a hard scary problem and some con man with a rationalization but the problem of “pollution” needs to be managed no matter whether or not we have a proper solution to it in the abstract, however, what we are actually seeing is that the problem is being ignored or made worse by people following the advice of those who claim to have a solution. COVID is being run on the same dynamic.

                                                  1. 2

                                                    I’d just like to say that the #clschool channel that was on freenode and is now on liberachat is a beautiful place where I’ve gotten more moral support than in many of the other places I go to ask questions (to try and avoid unstucking myself - because usually the problem is that you’re lonely not that you don’t know how to debug).

                                                    What I’d really wish for is a real in-person kind of community where people would occasionally take the time to point out some tricks for interacting with a computer and give each other some recognition for their struggles or at least, you know, “share the moment”…

                                                    I know many people would call that a “workplace” or a “university” but so far that is not really my experience with such places. It’s more likely that someone will place a workload on my shoulders that is either make-believe (university) or creating more problems than it is solving (workplace, sometimes it’s not about the specific problem but rather the nature of the company / economy). In either case it is anxiety-inducing and really I have plenty of stuff to work on and basically an infinite roadmap. What I don’t have is (real life) friends, reliable income sources, (real or digital) coworkers or any realistic way to obtain these things without having already (at least partially) succeeded in what I’m trying to do.

                                                    Writing it down like this makes it kind of an absurd complaint but I’d really rather die than “keep up appearances” - the play is over, let’s close the theatre and get to work repairing infrastructure and preparing for the fuckton of things that can and will go wrong in the future. This awkward transition period where we still persist in the delusion that all the arbitragers are doing good in the world while free software is obviously not worth our taxes… it’s coming to an end eventually and if I die first then so be it.

                                                    Edit: I strayed away from the point I initially wanted to discuss, which was all about how it is hard to offer or receive mentorship in our current culture and some anecdotes about personal experience teaching people a bit of CS or math. However I don’t trust myself to write that now because I got a bit angry writing the above.

                                                    1. 1

                                                      I guess you could generate an adversarial map using this heuristic; if there are two choices for how to start a sequence of jumps (jump moves you mod 4 so there is space for branching by only allowing 2 of the equiv classes per 4 tiles) and one of the two paths is a dead end (final jump only allows 1 of the 2 equiv classes you could initially choose from) then you must hardcode the path to choose if the dead end is further away than the vision of the robot, now you can alternate which branch to take and force the program complexity up (similar to how the dyck language is not regular).

                                                      1. 2

                                                        This is super impressive! I think this is much more interesting than Github Copilot - specification-driven code generation still involves the programmer guiding the generation. I think that’s a a more useful usage of programmer ingenuity and skill.

                                                        One question I’ve always had about Z3 - how much can we trust the solutions that it finds? Are there proofs anywhere that say something like, if Z3 finds a solution then it is guaranteed to be a correct one? I guess if it returns something, you can check by substituting the given values, but that doesn’t give a guarantee for all possible models and solutions.

                                                        1. 6

                                                          I would be surprised if a solution returned by Z3 is not guaranteed to be correct since the whole point of the complexity class it tries to attack is that you can verify solutions in polynomial time (definition of NP) so the expensive part is the searching not the verifying.

                                                          1. 2

                                                            This is like saying “Djikstra’s algorithm is guaranteed to be correct because it is a search algorithm.” We can easily devise an incorrect search algorithm. I’m curious about Z3’s correctness in general, not its ability to find valid solutions sometimes.

                                                            1. 1

                                                              Yup. Verifying a sat result is simple since it’s cheap to check that the solution works with the given constraints. The harder part is verifying that no solution exists when the solver claims it can’t find one. In that case you need the solver to produce an unsat certificate or unsat core that serves as the proof that the input is unsatisfiable.

                                                              1. 1

                                                                I understand that verifying one solution is simple, but my question is about all possible solutions. The fact that verifying any given solution is easy does not help, because it wouldn’t be practical to test them one by one. The fact that one correct solution is found does not imply all found solutions are correct.

                                                                1. 3

                                                                  The solver doesn’t give a certificate for all possible satisfying solutions. You either get a solution for one satisfying solution or a certificate that states that no satisfying solution exists. Re: your original question “how much can we trust the solutions that it finds”. This is the same question that comes up for any formal analysis tool - there is an unavoidable core engine that is trusted via human examination and/or verification outside the tool itself. The same reasoning about whether or not you can trust that core has been discussed pretty extensively in the formal methods literature. There are papers out there talking about using program extraction to lift proven components for SAT solvers from a specification encoded in a system like Isabelle or Coq such that the extracted code is correct by construction. Here’s an example: http://poincare.matf.bg.ac.rs/~filip/phd/sat-verification-shallow.pdf

                                                                  That route could be used to build a higher degree of trust in the core of a SAT or SMT solver if you don’t trust the hand written implementation in tools like Z3 or minisat. I think the big takeaway from work to formally verify things like solvers is that it is possible, but exceptionally hard - especially if you want to verify not a basic DPLL or CDCL implementation, but one with all kinds of clever optimizations that modern solvers tend to have.

                                                                  1. 1

                                                                    there is an unavoidable core engine that is trusted via human examination and/or verification outside the tool itself

                                                                    Let’s take the example of a proof assistant. It has a small “core engine,” but it is only the implementation that we have to trust. Meaning, the actual logical inferences that the engine is performing are sound and proven in the real world. So it’s not the algorithm that has to be trusted, it’s the implementation.

                                                                    I’m asking about the algorithm for finding satisfying solutions, not the implementation. I’ve searched around for this more than once, but can’t find any properties that have been proven about SMT solvers in general. Just curious if they’re out there.

                                                                    1. 2

                                                                      I’m surprised you haven’t found any - there is tons of work on proving soundness properties of SAT and SMT solvers. SAT is easier to search for (e.g., search for soundness proofs for CDCL, DPLL, etc. - or look at the proceedings of the annual SAT competition and chase references that papers cite for soundness proofs of more modern and specialized methods). For SMT, there are papers about the soundness of the Nelson-Oppen procedure for combining theory solvers (E.g., the original paper from 1979: https://dl.acm.org/doi/10.1145/357073.357079 or more recent papers like https://citeseer.ist.psu.edu/showciting?cid=199925) as well as proofs of soundness for specific theory solvers (some references in https://resources.mpi-inf.mpg.de/departments/rg1/conferences/vtsa08/slides/barret2_smt.pdf). Just sampling the papers that cite the 1979 Nelson-Oppen paper gives a pretty rich coverage of what you’re looking for if you’re interested in SMT specifically.

                                                                      1. 1

                                                                        That’s exactly what I’ve been looking for, thanks!

                                                                        So then would you agree - SMT solvers are actually at a similar trust level to proof assistants, i.e. it is just their implementation that we have to trust?

                                                          1. 2

                                                            I’d recommend brick for haskell and tui-rs for rust, I tried both and they are very well organized software.

                                                            If you want to use ncurses then I’d use a lisp, if you use C then notcurses is probably cool.

                                                            1. 3

                                                              It would be very interesting to compare this to Guix (Nix with scheme instead of a Haskell inspired esolang).

                                                              1. 2

                                                                nix is a json inspired esolang .. I don’t think it is very haskell-y

                                                                1. 1

                                                                  Nix really isn’t an esolang, but a DSL.

                                                                1. 1

                                                                  This linked to: https://github.com/prathyvsh/morphisms-of-computational-structures which I found very useful, there was a cool interview with Robin Milner and many cool papers.

                                                                  1. 6

                                                                    This looks extremely exhaustive. Afraid to dive in, bookmarking >.>

                                                                    1. 4

                                                                      It’s not too bad if you read it in bite sized chunks. I’m generally only interested in a subset of the documentation, so I’m reading that while skimming the rest.

                                                                    1. 1

                                                                      I realized that I don’t make plans so that I can stick to them but more to enjoy the idea of the reality where I did before I go back to the reality where I just do whatever I do.

                                                                      This weekend I will do some homework and work on my dev env.

                                                                      1. 2

                                                                        This got 89 upvotes and not many comments because it is simply beautiful and leaves you speechless.

                                                                        1. 1

                                                                          Algebraic Topology.

                                                                          This has been the big demon to slay for a while now.. I have the books, I have the time, I have the reasons, I’m going to grind through Hatcher, Stone Spaces and SGL (not all of them in 2022 but the first two to a significant degree and the latter one at least a peek).

                                                                          Programming.

                                                                          I know quite a bit about formal languages and computer science, I even know quite a lot about the history, implementation and tradeoffs of different programming languages, I’ve even worked professionally as a software engineer but I am still desperately lacking when it comes to applying these ideas to real world problems. My resolution for 2022 is a program a day for the whole year. I need to just put in the hours and attack my todolist, there’s so much low hanging fruit as things stand and so many quality of life improvements I can make (mostly because I enjoy painting myself into a corner with bleeding edge setups - I am perpetually on an auxiliary laptop where something is broken and now my only phone is a pinephone so I am in an even deeper hole than usually).

                                                                          Bureaucracy

                                                                          I struggle a lot with following through on filling out forms and doing all the tedious nonsense they feel entitled to (the bureaucrats) nevertheless I could benefit substantially from relatively minimal effort, if I would open a bank account, get registered as living in the country and get a phone number then I’d almost be a normal person. There are also student discounts available if I pursue that and various grant programs available. To be honest I doubt I will actually do this one though, I’ll just keep saying that I’ll do it one day and meanwhile I will focus on the other two (nobody manages to fully follow through on new years resolutions….)

                                                                          1. 5

                                                                            Yay, I’ve been using this branch for months to get the Wayland scaling and I’ve had zero problems.

                                                                            1. 7

                                                                              I think that Wayland support is so important that they should cut ASAP Emacs 29 just for it, but probably we’ll have to wait a couple more years for a “stable” release.

                                                                              1. 3

                                                                                Curious what your use case for Wayland is?

                                                                                1. 21

                                                                                  I am a Wayland user with a boring desktop use case. I like the:

                                                                                  • Fractional DPI scaling (I have a 27” 4K monitor that I like to have somewhere between 1.25x and 1.5x)
                                                                                  • Handling of multiple monitors (I have monitors with different desired DPIs and refresh rates)
                                                                                  • Lack of screen tearing even with the aforementioned refresh rate mismatch (X11 multihead gives you a single Screen with numerous Displays that view the screen, so you can’t really do VSync with mismatched refresh rates that aren’t simple multiples of each other)
                                                                                  • (What feels like?) lower latency: Compositors on X seem to do a lot of copies but Wayland applications seem to have a culture of dmabuf and it seems to make my experience of wayland much snappier when compared to X11 with compton/picom or something.
                                                                                  1. 2

                                                                                    I feel that last point. When using X11, it feels like I have a choice between no compositor (and the lack of features and slightly buggy rendering that entails) and compton (with the very bad performance that entails). Workspace switching with i3 would make the every OpenGL window look initially blank before it pops in half a second later when using compton.

                                                                                    Sway, on the other hand, Just Works.

                                                                                    Everything else on that list is important too of course.

                                                                                    1. 3

                                                                                      Curious: what specific features do you like about the compositors? I’ve personally found them completely useless.

                                                                                      1. 2

                                                                                        I don’t remember 100% since it’s a long time ago, but IIRC, a compositor was necessary for reducing screen tearing, and parts of the screen would sometimes fail to update properly without a compositor.

                                                                                        1. 2

                                                                                          Screen tearing is easier to avoid with a compositor (nothing to do) than without. And in my case, true transparency (this helps me to check if a window is focused, but also for eye candy).

                                                                                          1. 1

                                                                                            Even if you don’t care about shiny stuff like shadows, you don’t need damage.

                                                                                        2. 2

                                                                                          X can do all those things too, except maybe the refresh rate thing though, I’m not sure about that. It is a pity that applications are just rewriting in Wayland instead of fixing their bugs on X and maintaining full compatibility.

                                                                                          1. 5

                                                                                            X11 can’t really avoid screen tearing. There are lots of different hacks which each somewhat reduce tearing in certain situations, but I’ve yet to see an X11 system which doesn’t have at least some screen tearing in at least some circumstances – while I’ve yet to see a Wayland system with screen tearing issues.

                                                                                            Fractional scaling on X11 is a hack which partially works sometimes but doesn’t work perfectly.

                                                                                            We’re long overdue for an X11 replacement. We’ve been adding hacks upon hacks upon hacks for far too long, and the fundamental limitations are really starting to show. It’s not enough to “just fix application bugs on X”. Screen tearing by itself is enough reason to throw X11 in the garbage and start fresh with something that’s actually reasonably well designed.

                                                                                            1. 1

                                                                                              As far as I understand, X cannot have different fractional scaling factors for different monitors, while Wayland can. It’s the main motivation for me to use Wayland, given I have a 1440p 25’ and 2160p 27’.

                                                                                            2. 1

                                                                                              I was always curious about fractional scaling. I thought that Wayland didn’t handle it (see https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/47). From my understanding, you are rendering at 2x, then downscaling. If you happen to have two monitors, this can be a lot of pixels to render.

                                                                                              1. 1

                                                                                                From my understanding, you are rendering at 2x, then downscaling.

                                                                                                This is how macOS does it, IIRC.

                                                                                                1. 1

                                                                                                  I think there are non-mainline GDK protocols for it. At least all the non-XWayland applications I use look perfectly crisp

                                                                                              2. 12

                                                                                                For me personally, I use Wayland because it’s the only thing supported on my hardware (MNT Reform).

                                                                                                The only thing I use it for is to run XWayland so I can immediately launch Emacs and exwm, and then I run Firefox inside that.

                                                                                                At first glance it appears slower than using Wayland directly, but that’s only before you factor in the time you have to spend retrieving your laptop because you threw it out the window in rage because Firefox’s keybindings (when running outside exwm) are so bad and holding down C-n opened seventeen windows again instead of scrolling down.

                                                                                                1. 1

                                                                                                  Doesn’t Firefox run directly with Wayland now?

                                                                                                  1. 1

                                                                                                    Probably, but if you run Firefox outside exwm there’s no way to fix the key bindings. The Firefox extension mechanism bans rebinding C-n and C-p for “security reasons”, making it completely unusable for me.

                                                                                                    1. 1

                                                                                                      Supposedly it does https://twitter.com/omgubuntu/status/1379818974532280321?s=20, but I guess exwm doesn’t.

                                                                                                      1. 1

                                                                                                        Yeah. I guess exwm is the problem and not Firefox.

                                                                                                        1. 2

                                                                                                          No, the problem is that Firefox doesn’t allow the user to change some keybindings, like C-n. EXWM is the solution to that problem.

                                                                                                          1. 1

                                                                                                            It’s exactly this.

                                                                                                      2. 1

                                                                                                        For a while now already. Gotta define the MOZ_ENABLE_WAYLAND=1 env variable and it will start in Wayland mode. Have been doing this for 2(?) years now on Sway without issue. (Maybe the env thing is a thing of the past…)

                                                                                                        1. 2

                                                                                                          Sway + Firefox here as well. MOZ_ENABLE_WAYLAND=1 is no longer needed. Rejoice!

                                                                                                    2. 8

                                                                                                      I’m surprised by your question. My (perhaps naive?) understanding is that the Xorg maintainers decided years ago that they don’t like the X protocol anymore for modern graphics stacks, that the stuff that was added on top of it is painful to design/implement/maintain, and that they wanted to start with something fresh with a more solid design. Wayland, as I understand it, this is “something fresh with a more solid design” (but its own protocols are still evolving and probably imperfect, as everything is.)

                                                                                                      With this understanding, if I have the choice to use both (that is, I’m not depending on worklows that are not supported on Wayland for fundamental reason (no support for easy forwarding) or due to lack of maturity), it seems natural to use Wayland. I want to use the new stuff that is the future and benefits from a growing userbase to mature (and benefit more users that currently have fewer options), and not the old stuff that keeps working but people dread maintaining.

                                                                                                      So: my use case is “moving to the new software stack that was designed from the start to be a better, more robust successor than the old software stack”.

                                                                                                      1. 6

                                                                                                        From my PoV Wayland is still in “second system redesign” territory like the early days of PulseAudio. Some people find it useful, some people like to help test the bleeding edge, but it’s not the default in anything I set up and since I’ve never had any issues with X I don’t currently go through the extra work to set it up. The only time I’ve worked with Wayland was to help my mom switch her computer back to X because some app was misbehaving under her Wayland setup.

                                                                                                        But if it’s working for you, that’s great of course. Just providing my PoV so hopefully my question is less surprising now.

                                                                                                        1. 3

                                                                                                          There is always a bias towards “not fixing what aint broken” so once you know a tool you’re likely to stick to it.

                                                                                                          That being said I don’t think wayland represents enough progress to consider it a successor to X, it’s a competitor for sure but I think by the time I move off X it won’t be to wayland.

                                                                                                          1. 5

                                                                                                            With most Linux distros gradually switching to Wayland and Windows adopting it as well for WSL, I think it’s fairly certain that Wayland is going to (mostly) replace X in the next 3-5 years. I doubt some other alternative will emerge before the transition to Wayland is complete.

                                                                                                      2. 5

                                                                                                        Desktops built on Wayland are amazing compared to desktops built on X11. I couldn’t go back anymore.

                                                                                                  1. 11

                                                                                                    The only “utility” for a cryptocurrency (outside criminal transactions and financial frauds) is what someone else will pay for it and anything to pretend a possible real-word utility exists to help find new suckers.

                                                                                                    It’s also useful for making transactions that are strictly legal under the laws of the state, but that the people running the common payment processors don’t want you to make (possibly due to some amount of informal, off-the-record coercion from the government, or possibly on their own volition). I’ve personally used cryptocurrency transactions to send money to people who were being informally blacklisted by certain parts of the financial system.

                                                                                                    In any case, I don’t think that the utility of being able to make criminal transactions is worthy of casual dismissal. There are lots of states in the world, with lots of laws regulating financial activity, either for its own sake or in order to accomplish some other state goal, and I don’t trust that all such laws are actually good.

                                                                                                    It’s true that you can use cryptocurrency to commit fraud; but you can also do that with electronic fiat currency, or physical cash or gold or Ea-Nasir’s famous copper ingots. That’s not an argument against using cryptocurrency specifically.

                                                                                                    1. 31

                                                                                                      In any case, I don’t think that the utility of being able to make criminal transactions is worthy of casual dismissal.

                                                                                                      I do. People bring this up as a defense of web3, but it’s libertarian insanity. Government is a thing we do together. If government is broken, that’s the problem. You don’t fix the problem by having people flout the law. That’s just adding a second problem instead of fixing the first!

                                                                                                      It’s like saying there’s a tiger in my house, but it’s okay because all the windows are smashed. Tigers are extremely bad, and you should not tolerate them! Broken glass is also very bad (not as bad as tigers, but quite bad!), and while yes, the tiger does make having a broken window seem useful, it’s not actually helping in any way. Also, the tiger can just jump out the window and eat you anyway! (In the analogy, a bad government can still force you to not do crypto transactions by use of force. Crypto only mitigates against bad but lazy governments.)

                                                                                                      At the end of the day, there’s no alternative to society. Lone human beings die. At the very least you need a decade of training to learn how to survive in the woods alone, and then you need unoccupied woods! If your society is bad, you can try to change it or you can join a different society, but you can’t just ignore it and think you’ve solved things.

                                                                                                      1. 9

                                                                                                        Government is a thing we do together. If government is broken, that’s the problem.

                                                                                                        I agree, but sadly, this is a version of reality exclusive to relatively-well-functioning democracies. Lots of people don’t live in those. That said, cryptocurrency probably isn’t necessarily going to help those people much either.

                                                                                                        1. 8

                                                                                                          Government is a thing we do together everywhere. The reason democracy is good is that it has a mechanism built in to acknowledge this reality, but even in e.g. North Korea, the system doesn’t work without apparatchiks who do whatever Kim Jong-un tells them to do. In every case, government is based on the consent of the governed. In any event, crypto in NK just helps the state evade global currency controls, but does not help the man on the street who is not able to afford or allowed to have an internet connected computer.

                                                                                                          1. 2

                                                                                                            In every case, government is based on the consent of the governed.

                                                                                                            This is true for some definition of “consent”, but I don’t think it’s a very useful definition. Indeed, in repressive regimes the choice is often “live your life as well as you can under the circumstances”, or “fight the system and almost certainly die or be imprisoned”. I don’t think it’s at all fair to claim that NK governs “by consent of its people” when this is the situation for most of those people.

                                                                                                            There is of course always a question of whether a given technology is helpful or harmful to those who might want to change the government, and it’s not clear to me which way this goes with respect to decentralized currency and apps - it seems highly contingent on facts about each regime and its citizens.

                                                                                                            1. 4

                                                                                                              It’s a semantic argument about the meaning of “consent”. Certainly, in dictatorships where the Schelling point changes, the dictator ends up hung in a town square. If you want to use a different word for that than a withdraw of “consent” fine, but no government works without 80%+ of people going with the flow.

                                                                                                        2. 3

                                                                                                          I’m on my phone so I am not going to be able to give as good a response as I’d like but I believe you are making a unfair assumption about the means of fixing government (namely you assume it is always good and possible to fix government using government) however I think that in certain (extreme!) situations it is necessary to essentially “rewrite it” furthermore I believe we just happen to be living in such an extreme time so I am sympathetic to the “crime must be possible” viewpoint because we certainly have not made a sound+complete system of law and our governance is failing to adjust to various changes (mostly internet right now but global warming is also an elephant in the room).

                                                                                                          1. 14

                                                                                                            namely you assume it is always good and possible to fix government using government

                                                                                                            I am not assuming that.

                                                                                                            furthermore I believe we just happen to be living in such an extreme time

                                                                                                            LOL, not if you live in the United States or the EU. Not even close.

                                                                                                            mostly internet right now but global warming is also an elephant in the room

                                                                                                            Climate change is an international coordination problem. Making it easier to evade national rules does not help with international coordination. The opposite, in fact.

                                                                                                            1. 1

                                                                                                              Our premise is not compatible, I’d be curious how you define coordination because from how you use it I read it almost as a synonym for “benevolent dictator” - one concept that may nudge your premise closer to mine is “evolving to extinction” - the “high modernism” of monoculture agriculture + GMO + pesticide / antibiotics are examples of these hyper-efficient but very brittle optimizations that can blow up in out face if the climate shifts a bit (or any of our current assumptions gets invalidated).

                                                                                                              Web3 is nonsense (or at least the way it is marketed) and PoS/PoW as a consensus mechanism are also not a solution to the real problems but that doesn’t mean that you are right about these other points you make; evading national rules will likely become a necessity in some places (arguably already has).

                                                                                                              Anyway all your responses are just catchy soundbites I don’t see any real point being made.

                                                                                                              Flouting national law is exactly going to be a very important thing to do if we want the international coordination required to react to climate problems (fwict).

                                                                                                              1. 2

                                                                                                                Are you proposing wildcat geoengineering? I mean, if you think it’s come to that, wow, but I don’t think so, and to the extent we do climate hacking, it should be with international treaties and as much democracy as possible because we all share the same planet.

                                                                                                                1. 1

                                                                                                                  No I am suggesting that the economic system is the driver of pollution and that by rights it shouldn’t be considered legitimate, countries that could perfectly well stand on their own are in ruins due to economic policies that citizen should be able to subvert or circumvent in order to organize into actually functioning communities and economies for dealing with the actual problems.

                                                                                                                  1. 1

                                                                                                                    I see. I agree that capitalism is problematic and needs to be constrained because the core assumption of endless growth is not healthy. OTOH, the Soviets literally erased the Aral Sea by mismanaging their economy, so I don’t want make the mistake of assuming that something else is going to work just because it purports to be different. It’s not a good situation when there’s one huge, seemingly impossible problem, and then someone says, Oh, to solve that problem we just need to solve this other huge, seemingly impossible problem.

                                                                                                          2. 2

                                                                                                            In the analogy, a bad government can still force you to not do crypto transactions by use of force.

                                                                                                            Offering up that choice is exactly the point. Eroding a bad government’s ability to masquerade as a good one is a means of social change.

                                                                                                          3. 9

                                                                                                            That’s not an argument against using cryptocurrency specifically.

                                                                                                            So what we’re saying isn’t that “cryptocurrency can be used to buy illegal drugs and therefore crypto is bad”. We’re saying “one of the few use cases of cryptocurrency is to buy illegal drugs”.

                                                                                                            Cryptocurrency has other problems (efficiency, climate impact, cost, volatility), some of which are outlined in the article.

                                                                                                            If the only point in cryptocurrency’s favor (scoring some tabs on the DL) is getting misinterpreted as an argument against it, then that’s saying something about how awful cryptocurrency is overall.

                                                                                                            1. 6

                                                                                                              And I’m saying that the ability to buy “illegal drugs” is actually a really important use case that itself justifies the use of cryptocurrencies - especially when you extend the category to any type of transactions that is illegal or informally restricted by payment processors.

                                                                                                              My point was about fraud though - I don’t care that it is possible to defraud people using cryptocurrency, because it has always been possible to defraud people with non-cryptocurrencies. Mitigating the possibility of fraud is something that has been a consideration for every economic transaction we’ve ever done in our lives, going back 4000 years to the Ea-Nasir tablet. Cryptocurrencies allow both new types of fraud and new ways to mitigate fraud; they are not fundamentally a fraud-prone medium of exchange distinct from other ways of implementing money.

                                                                                                              1. 12

                                                                                                                We’re still talking past each other.

                                                                                                                You don’t need to convince me that enabling restricted transactions is a pro (although your defensiveness around it tells me that it’s a kind of iffy pro).

                                                                                                                Instead, look at the enormity of what’s more unambiguously in “con” column.

                                                                                                                We who hate cryptocurrency are arguing against a world computer weaker than a Raspberry Pi, insane energy waste and electronics waste..

                                                                                                                That’s what tech dorks urgently need to have a conversation about.

                                                                                                                The web3 hype as a whole with its weak and flaky tech is a scam to suck bagholders into crypto.

                                                                                                                The article is about web3, about wack stuff like Reddit tying upvotes and karma into proof of work blockchain tokens etc. That kind of kooky BS is what we need to put a kibosh to because it’ll eat the Earth.

                                                                                                                The tech stack sucks and is fraudulently oversold.

                                                                                                                That’s a bigger problem than getting the best dope stash on the cinder.

                                                                                                                If someone says “the only use case (outside of foo) is bad, and there’s these thirty thousand other horrible showstopping problems” there’s no point in trying to convince them that “foo is good”. They said outside of foo,

                                                                                                                Like, my foot is pretty good and important but If someone said “The only reason (outside of you getting to keep your foot) that you should take this new medicine is that we’ll make money, because the drawbacks include your head falling off and your heart stopping and your tongue turning to ash”. I don’t wanna hear about how good it is to have a foot, I’m not ready to lose my head over it!

                                                                                                                1. 7

                                                                                                                  We who hate cryptocurrency are arguing against a world computer weaker than a Raspberry Pi, insane energy waste and electronics waste..

                                                                                                                  It doesn’t bother me that the Ethereum blockchain is a weaker computer than a RasPi in some sense, any more so than it bothers me that the RasPi is weaker in some sense than a commercial server rack. These are different constructs designed for different tasks, and there’s no reason why I can’t use all of them at different times for different purposes. The point of the Ethereum blockchain is that it’s a censorship-resistant global smart contract platform, which is not a thing an individual RasPi can do. It doesn’t matter that the Ethereum blockchain would be bad at doing things I might do with my RasPi, like running my home automation system. Of course I’m not arguing that it would be bad if the Ethereum blockchain had higher computational throughput, or that Ethereum specifically is the best smart contract platform.

                                                                                                                  I also don’t care that some people think the existence of blockchains constitutes energy and hardware waste. Whether or not you view the use of some resource as waste depends on your judgment of the ends to which those resources are put, which is the actual thing we disagree about. It takes a lot of energy and raw materials to manufacture Raspberry Pi’s, but I wouldn’t call that waste because RasPi’s are a product people are willing to pay money for to accomplish goals, just like blockchain computations.

                                                                                                                  That’s what tech dorks urgently need to have a conversation about.

                                                                                                                  As a tech dork (I prefer the term “professional computer programmer”), I deliberately decided to seek software developer jobs at companies working on cryptocurrency-adjacent technologies, because I think this technology is important and I want to work on making it better. If other technologists think that cryptocurrency is bad and that I shouldn’t do this, then I do so in defiance of those people. If other people want to impose political changes in polities I live in to try to make it harder to legally work with cryptocurrencies, I will fight them on the political level.

                                                                                                                  The article is about web3, about wack stuff like Reddit tying upvotes and karma into proof of work blockchain tokens etc. That kind of kooky BS is what we need to put a kibosh to because it’ll eat the Earth.

                                                                                                                  I don’t think it is a bad idea for a Reddit-like communication platform to be implemented using smart contracts, although I am skeptical of the motivations of Reddit as a company in doing so. A lot of the problems with Reddit are precisely that a single, rather-small private firm controls the canonical database holding the upvotes and karma and so forth, and can mess with them in arbitrary ways, including ways that the userbase disapproves of. A smart-contract based solution removes the single point of control, which is worth the computational efficiency hit.

                                                                                                                  See also here for interesting ideas about practical applications of blockchains to create better versions of existing internet technologies (in this particular case, user logins).

                                                                                                                  The tech stack sucks and is fraudulently oversold.

                                                                                                                  I don’t think it is actually true that the tech stack is fraudulently oversold, and that it “sucks” only in the sense that the technology is in its infancy right now. This is the same point of view that someone could reasonably have taken about any number of particular technological innovations in computing, in their early days.

                                                                                                                  1. 16

                                                                                                                    I also don’t care that some people think the existence of blockchains constitutes energy and hardware waste. Whether or not you view the use of some resource as waste depends on your judgment of the ends to which those resources are put

                                                                                                                    Unlike any other human endeavor, proof-of-work is exceptionally inefficient and wasteful, and it’s wasteful by design: if humanity comes up with a more efficient process to mine, the difficulty factor increases to meet that ten minute dream time, immediately wasting all that newfound efficency. If everyone were mining on like a hand-cranked soroban they’d get the same rate as if everyone were mining on a 1.21 gigawatt beowulf cluster of skyscrapers-sized hypercubes. All efforts of making it more efficient is inherently wasted (but because of prisoner’s dilemma, miners are still incentivized to pour more and more juice in).

                                                                                                                    A product people are willing to pay money for to accomplish goals, just like blockchain computations.

                                                                                                                    A transaction that doesn’t adequately account for the cost in externalities (such as planets being wrecked up). That’s why the “it’s none of your business what we wanna spend resources on” doesn’t apply. It’s one world, we all need to take care of it.

                                                                                                                    If other people want to impose political changes in polities I live in to try to make it harder to legally work with cryptocurrencies

                                                                                                                    OMG yes that’s what I want! Specifically proof of work needs to be banned.

                                                                                                                    I don’t think it is a bad idea for a Reddit-like communication platform to be implemented using smart contracts

                                                                                                                    What I’m specifically arguing against is the proposed implementation which is going to suck and which is going to be a layer-2 app on the original proof-of-work iteration of Etherium. For the third time: I’m not saying that the promised benefits are bad: if someone would’ve told me a few years ago that Reddit was going federated and decentralized like email or Jabber I would’ve been overjoyed. It’s burning down the world to do it that I don’t quite think is worth it. I don’t wanna have the smartest contracts on the cinder.

                                                                                                                    A smart-contract based solution removes the single point of control, which is worth the computational efficiency hit.

                                                                                                                    We’re not talking about a bounded efficiency trade-off that we could reason about, do LCA on, or try to mitigate or offset. Instead, it’s a runaway inefficency spiral. No programmer would willingly leave memory leaks in their code.

                                                                                                                    1. 10

                                                                                                                      For the third time: I’m not saying that the promised benefits are bad: if someone would’ve told me a few years ago that Reddit was going federated and decentralized like email or Jabber I would’ve been overjoyed. It’s burning down the world to do it that I don’t quite think is worth it. I don’t wanna have the smartest contracts on the cinder.

                                                                                                                      Notably, Lemmy already provides a federated and decentralized Reddit-alike, without any Web3 nonsense — it uses ActivityPub for federation. Obviously, that means trusting your local admin to some extent, and other site admins to a lesser extent, but I don’t really think “trustlessness” as an ideal or as a practical matter is a good thing, and certainly not worth the costs of cryptocurrency. I don’t need to have the most censorship-resistant shitposting site on the cinder, either.

                                                                                                                      1. 9

                                                                                                                        For that matter, I don’t trust the crypto admins either. I mean, you mine shit these days in pools? There, I have to give trust. Just like in the article. We don’t remove anything technologically, we only add a lot of complexity (and burn the planet as a bonus) and I still have to trust someone.

                                                                                                                2. 6

                                                                                                                  And I’m saying that the ability to buy “illegal drugs” is actually a really important use case that itself justifies the use of cryptocurrencies - especially when you extend the category to any type of transactions that is illegal or informally restricted by payment processors.

                                                                                                                  Buying illegal drugs (and ethically-produced artisanal porn) are good, but blockchains are so bad that even being able to use them to buy illegal drugs and pay a fursuited femboy to read “State and Revolution” to me in a throaty whisper when PayPal won’t let me pay them still isn’t enough to justify their use. Like ~snan said, I don’t want the best drug and porn stash on the cinder.

                                                                                                                  Obviously, this mainly applies to proof-of-work, which is an existential threat to human civilization; proof-of-stake has other, separate, intolerable problems.

                                                                                                                  1. 5

                                                                                                                    I don’t care that it is possible to defraud people using cryptocurrency, because it has always been possible to defraud people with non-cryptocurrencies

                                                                                                                    The big selling point for centralised payment processing systems is that it’s possible to reverse fraud. If someone empties my bank account, my bank has a mechanism for reversing the transaction. This has, itself, been used as a mechanism for fraud where someone sends you a million dollars and asks you to send them a hundred thousand as a processing fee, you send them a hundred thousand and at the end of the window to reverse the transaction, they pull back the million and unless you notice immediately you’re too late to pull back the hundred thousand. Aside from cases like that, it’s very useful. I can spend money on my credit card knowing that, if the seller doesn’t actually deliver the goods or if they’re defective, then I can reverse the transaction. With a crypto currency, the only way that I can reverse a transaction is if 50% of the participants agree. In theory, you can implement this kind of thing with smart contracts, but you then need a trusted arbiter who will decide whether the transaction should be reverted. At this point, you’ve just reinvented a centralised system (that arbiter could just be a bank) but with all of the inefficiencies of cryptocurrencies.

                                                                                                                    Most of the regulations surrounding consumer banking exist because they address problems that impact consumers in an unregulated banking system (not all, some exist to promote lock in, as happens in any system susceptible to regulatory capture). Any system that wants to replace the banking system and be useful to normal people will need to provide the same protections.

                                                                                                                    For drug buying, it’s effectively an incredibly inefficient way of implementing unbacked IOUs. It may be useful in removing the Mafia (who traditionally provide backing for IOUs used for black-market transactions) from the equation.

                                                                                                                    1. 1

                                                                                                                      In any money transfer system where it’s possible for some party to reverse a fraudulent transaction, it’s possible for that same party to fraudulently declare a legitimate transaction fraudulent, and commit fraud in the other direction. It’s sometimes useful to be able to engage in a monetary transaction where all parties to the transaction know it is impossible to reverse (e.g. if one or both of those parties does not trust the centralized bank system). For other cases, it is possible to build arbitrarily complex trusted arbiter systems with smart contracts, including systems that haven’t yet been tried in traditional banking.

                                                                                                                      For drug buying, it’s effectively an incredibly inefficient way of implementing unbacked IOUs. It may be useful in removing the Mafia (who traditionally provide backing for IOUs used for black-market transactions) from the equation.

                                                                                                                      “drug buying” needs to be understood as synechdoche for a large class of transactions, not all of which are actually illegal, just opposed to the political and moral sensibilities of private payment processing firms. But in any case, what’s a more efficient way of implementing unbacked IOUs? The ability to facilitate monetary transactions between parties that don’t trust each other is exactly the technological innovation that blockchains make possible; they can serve as a replacement for informal mafia violence backing black- or grey-market IOUs for the exactly the same reason they can serve as a replacement for the (usually) implicit state violence backing fiat currencies.

                                                                                                                      1. 6

                                                                                                                        In any money transfer system where it’s possible for some party to reverse a fraudulent transaction, it’s possible for that same party to fraudulently declare a legitimate transaction fraudulent, and commit fraud in the other direction.

                                                                                                                        Fraud is rare in existing centralized systems due to many externalities, and recovering from it is possible and normal. Fraud is categorically more common in decentralized systems due in large part to the lack of those externalities, and recovering from it is extremely difficult at best and usually literally impossible.

                                                                                                                        Pointing out that fraud exists in both models and other similar equivocations are not convincing arguments, because the fundamental point being made is about degree, not mere existence.

                                                                                                                        It’s sometimes useful to be able to engage in a monetary transaction where all parties to the transaction know it is impossible to reverse

                                                                                                                        “Sometimes” is doing a lot of heavy lifting in this sentence. In fact these situations are extraordinarily rare.

                                                                                                                        For other cases, it is possible to build arbitrarily complex trusted arbiter systems with smart contracts, including systems that haven’t yet been tried in traditional banking.

                                                                                                                        It certainly is. And when you burn through enough iterations of those things, stomp out all of the bugs and fraud and graft and incentives for malicious actors, build in protections for users to make the systems humane, what you end up with will be an inefficient clone of the current monetary system. And a whole new generation of cynics fed up with its idiosyncrasies, chomping at the bit to reinvent it all over again.

                                                                                                                        The ability to regulate a system to constrain it is actually good and important and necessary if that system will serve humanity. A system that can’t be regulated is actually a bad system!

                                                                                                                3. 2

                                                                                                                  Also the quote applies to state fiat currency just as much as to cryptocurrency.

                                                                                                                1. 3

                                                                                                                  I have lost a good few hours to this game today, it’s quite fun and has a very solid core.

                                                                                                                  1. 2

                                                                                                                    Yes I spent an embarrassing amount of time playing it.. It’s very well balanced although some types feel stronger (eg. mirror is definitely stronger than alchemy if the other two are random) fwict heaven seems the strongest; the tempo gain from the winged chalice is so powerful if you use it well.

                                                                                                                  1. 5

                                                                                                                    Write some common lisp, I have a few things in progress that I sometimes have spurts of progress with:

                                                                                                                    • implementing some random algorithms and markov chains from a course on probabilistic methods in computer science I’m taking this semester.
                                                                                                                    • I’m also taking combinatorics (a.k.a. How to encode stuff) and I’m playing with different ways to represent motzkin paths (and transforming them into one another).
                                                                                                                    • I am designing a set of tools for designing lattices including a notation for working with them. So far the largest part of this is thinking about different representations and interpretations but I have some experiments now that I may poke over the weekend.

                                                                                                                    The interaction pattern is to walk a path from the bottom and once you reach the top the computer does something (that’s very abstract but I’d like a consistent organizing principle so it’ll have to be quite abstract).

                                                                                                                    I’ve gone in so many circles but every time I return lisp holds me tighter. Anyway that’s what I want to do but then there’s stuff I have to do:

                                                                                                                    • write a landing page (pure html) for this lattice project
                                                                                                                    • write a script that lets me update my dns settings to point to a new ipfs pin and update pinata to pin the new site version.
                                                                                                                    • wrestle with my system and get it to perform basic tasks that I haven’t configured it to be able to do because I’m bikeshedding.