Plutus, Haskell, Nix, Purescript, Swift/Kotlin. laser-focused on FP: formality, purity, and totality; repulsed by pragmatic, unsafe, “move fast and break things” approaches


AC24 1DE5 AE92 3B37 E584 02BA AAF9 795E 393B 4DA0

  • 0 Posts
  • 13 Comments
Joined 1 year ago
cake
Cake day: June 25th, 2023

help-circle
  • Sounds great! Thanks for looking into that. I’m a bit of a jack of all trades. So, I tend to try and thoroughly vet a technology before I really dive in and commit my blood, sweat, and tears.

    A couple of weeks ago, I found a previous implementation in Haskell. If I were really approaching the stack that I think will be best for the future, perhaps I should fork that one. I’m wishing Purescript was ready for prime time (was popular enough to have more educational material) because that would be a no brainer…especially the work they’ve recently been doing with a Chez Scheme back end.

    I’ll start to look into it more in the coming week. Thank you so much! I have a community setup for this idea at https://infosec.pub/c/Lemventory

    I may change it, though, since this is no longer Lemmy-related. As I realized, inventory is just not suited to Pub/Sub due to the need to have varying levels of security for the information being broadcast and subscribed to.


  • I’m a fan of crypto but I happen to hold the strong opinion that BTC’s authentication algorithm shouldn’t have been chosen because it’s not secure enough for future proofing. Furthermore, that BTC tie-in will alienate many people including myself. Anyway, I’d love some help forking NOSTR to NOT use BTC authentication because that task is FAR beyond my skills.


  • Perhaps I’m the one who’s mistaken.

    I came to this conclusion because: From my initial cursory investigation of NOSTR, in all of the instructions to get started I found, the first step was to create a lightning wallet. Maybe I’m incorrect but, from what I understood, BTC’s authentication is one and the same with NOSTR’s authentication.


  • If you want to have a go at using that NOSTR tech but stripping the lightning wallet thing out for another (less BTC maximalist but equally or even more secure) form of authentication, I’d be very interested. I’m obviously not going to roll my own auth from scratch….but as I see it, tying BTC to it could prevent MANY people from giving an otherwise very promising tech a chance. Besides, there are already far more secure cryptographic elliptical curves in use by other cryptocurrencies that NOSTR conspicuously passed over in favor of BTC’s.

    I probably don’t have the resources nor experience to do it myself but I’d love for this tech to exist.


  • If you find that the fediverse isnt the right tech for this kind of thing, have a look at NOSTR. I recently learned about it in the context of my hypothetical Lemmy fork. For what I am trying to do with it (decentralized retail inventory), NOSTR was much better suited than Lemmy. My only issue with it is that it ties bitcoin lightning walllets into its authentication mechanism (a dealbreaker for me at least). My future uses for it would be FAR different than yours but it also seems more well-suited to activism as well.


  • In my experience, Voyager is still pretty buggy too. For example, try editing a post then go to do anything else after the fact. I always have to restart the whole app when I go to edit a post I made. They have a ton more features than anyone else but there are still tons of bugs.

    react native is another layer and lags behind the dev of swift by at least a year. This is a huge problem for new api’s like SwiftUI, in my experience. Ps. Native is ALWAYS better than an approximation of native.




  • Over the last decade, free software developers have been repeatedly tempted by development tools that offer the ability to build free software more efficiently or powerfully.

    The only cost, we are told, is that the tools themselves are nonfree or run as network services with code we cannot see, copy, or run ourselves. In their decisions to use these tools and services—services such as BitKeeper, SourceForge, Google Code and GitHub—free software developers have made “ends-justify-the-means” decisions that trade away the freedom of both their developer communities and their users. These decisions to embrace nonfree and private development tools undermine our credibility in advocating for software freedom and compromise our freedom, and that of our users, in ways that we should reject.

    In 2002, Linus Torvalds announced that the kernel Linux would move to the “BitKeeper” distributed version control system (DVCS). While the decision generated much alarm and debate, BitKeeper allowed kernel developers to work in a distributed fashion in a way that, at the time, was unsupported by free software tools—some Linux developers decided that benefits were worth the trade-off in developers’ freedom. Three years later the skeptics were vindicated when BitKeeper’s owner, Larry McVoy, revoked several core kernel developers’ gratis licenses to BitKeeper after Andrew Tridgell attempted to write a free replacement for BitKeeper. Kernel developers were forced to write their own free software replacement: the project now known as Git.

    Of course, free software’s relationships to nonfree development tools is much larger than BitKeeper. The source to the free software development support service SourceForge was once available to its users but its authors have returned to a completely closed model. While SourceForge is built using free software, SourceForge users interact with the software over the web. Because users never have any copy of the SourceForge software, they can never demand source. Similar projects like CollabNet’s Tigris.org, Google Code’s “Open Source Project Hosting” services, and GitHub, each served similar purposes and have kept their code similarly out of reach. Their services are often provided without charge and promoted for free software development, but this commitment does not extend to their own software that runs the development platforms. The source code to each of these systems remains private and unmodifiable by the developers using the services.

    These nonfree development tools present a dilemma for many free software developers. The goal of many of these tools is, through more efficient free software development, more free software and more freedom. CollabNet, Google and GitHub each claim to want free software to succeed and claim they want to help it. For a series of reasons though these companies choose to support software freedom through means that are less in line with free software ethics than the ones they seek to create. The result is developers who are disempowered. The software freedom of the code these hackers produce is contingent on unacceptable exclusivity.

    First, the use of nonfree tools sends an unacceptable message to users of the free software produced. “Software freedom is important for you as users,” developers seem to say, “but not for us.” Such behavior undermines the basic effectiveness of the strong ethical commitment at the heart of the free software movement. As those that are already committed to free software, we should demonstrate that we can succeed—and thrive—using free software. We should support free alternatives to proprietary systems such as Savane which can replace SourceForge or Google Code and runs GNU Savannah, or Gitorious which can replace GitHub—by using them and by improving them in the areas where they fall short.

    Secondly, we should realize that, going forward, the software we produce is only as free as the software it depends on for its continued use, distribution, and evolution.

    The GNU GPL license and source code mean little to a user attempting to modify a program without free access to the software required to make that modification. It is not only developers’ freedom at stake but, eventually, their users and all future “downstream” developers as well. Those choosing to use nonfree tools put everyone at the whim of the groups and individuals who produce the tools they depend on.

    While proprietary development tools may help free software developers create more free software in the short term, it is at an unacceptable cost. In the controversial area of private software and network services, free software developers should err on the side of “too much” freedom. To compromise our principles in attempts to achieve more freedom is self-defeating, unstable, and ultimately unfair, to our users and to the larger free software development community.

    Just as the early GNU maintainers first focused on creating free tools for creating free software, we should ensure that we can produce software freely and using unambiguously free tools. Our failure to do so will result in software that is, indirectly, less free. We should resist using tools that do not allow us the freedoms we are trying to provide our users in the development of their software and we should apply pressure on the producers of our development tools. Free software has not achieved success by compromising our principles. We will not be well served, technically, pragmatically, or ethically, by compromising on freedom of the tools we use to build a free world.





  • This amazing interview with Philip Wadler dances around this very topic quite eloquently.

    Here’s the conclusion of the paper Wadler is referring to in this interview:

    Proposition as Types informs our view of the universality of certain programming languages. The Pioneer spaceship contains a plaque designed to communicate with aliens, if any should ever intercept it (see Figure 9). They may find some parts of it easier to interpret than others. A radial diagram shows the distance of fourteen pulsars and the centre of the galaxy from Sol. Aliens are likely to determine that the length of each line is proportional to the distances to each body. Another diagram shows humans in front of a silhouette of Pioneer. If Star Trek gives an accurate conception of alien species, they may respond “They look just like us, except they lack pubic hair.” However, if the aliens’s perceptual system differs greatly from our own, they may be unable to decipher these squiggles. What would happen if we tried to communicate with aliens by transmitting a computer program? In the movie Independence Day, the heroes destroy the invading alien mother ship by infecting it with a computer virus. Close inspection of the transmitted program shows it contains curly braces—it is written in a dialect of C! It is unlikely that alien species would program in C, and unclear that aliens could decipher a program written in C if presented with one. What about lambda calculus? Propositions as Types tell us that lambda calculus is isomorphic to natural deduction. It seems difficult to conceive of alien beings that do not know the fundamentals of logic, and we might expect the problem of deciphering a program written in lambda calculus to be closer to the problem of understanding the radial diagram of pulsars than that of understanding the image of a man and a woman on the Pioneer plaque. We might be tempted to conclude that lambda calculus is universal, but first let’s ponder the suitability of the word ‘universal’. These days the multiple worlds interpretation of quantum physics is widely accepted. Scientists imagine that in different universes one might encounter different fundamental constants, such as the strength of gravity or the Planck constant. But easy as it may be to imagine a universe where gravity differs, it is difficult to conceive of a universe where fundamental rules of logic fail to apply. Natural deduction, and hence lambda calculus, should not only be known by aliens throughout our universe, but also throughout others. So we may conclude it would be a mistake to characterise lambda calculus as a universal language, because calling it universal would be too limiting.