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

help-circle
  • Software engineering is usually distinct from programming in that it isn’t about the logic behind programming, but about the project management that all software projects typically have in common.

    Besides agile methodology, a lot of software engineering involves creating reproducible environments. While NixOS doesn’t provide anything that much different from tools like Ansible,

    NixOS follows a functional/declarative design paradigm, functional/declarative design paradigms communicate similar logic for solving the same problem. It’s a restrictive paradigm. Consider how javascript is not restrictive, as in, you can code with any design paradigm in javascript, and how it’s ugly for that.

    I also think functional paradigms mirror the natural language closer than imperative paradigms. That’s subjective, but I would still argue Math is a logical language that is a subset of the natural language, and since functions in programming represent a process of doing something, functions make for natural verbs. Meaning, understanding the naming convention for the functions, is a natural naming convention for when I communicate with other software engineers, even when I’m not asking about making configurable/reproducible systems in NixOS

    Or when I look at how to config things like firewall, ssh, vpn servers, user group permissions… it’s a minimalist description that I could communicate to other people configuring even on a debian server

    So, it’s hard because it’s restrictive, but if you’re willing to put up with a learning curve, you get a language agnostic framework for describing computing environments, more or less. Then there’s more advanced stuff with nix flakes, which still doesn’t make sense to me functionally/linguistically, but I’m starting to see the value in parallel package management and the precision in reproducibility they provide by requiring sha256 git commits






  • Exactly, like ansible.

    Unused packages aren’t typically a problem unless you imperatively change your systems state. Otherwise, If you remove it from your configuration.nix, it’s removed when you switch to your next build. Previous builds/generations keep those versions of those packages, which wastes space, but you can specify garbage collection to remove generations older than a month

    My only complaint so far is the best way to properly make a development shell for a python project is either with a still somewhat experimental feature called flakes, or a 3rd party solution poetry2nix. Im probably going to switch to using docker/podman for python projects.

    On the other hand, pip is the worst package manager, so being incentivized away from it is kind of a plus


  • Man I still suck at NixOS and it has it’s kinks/learning curve, but if you’re tired of tweaking things constantly the nice thing about NixOS is all your little tweaks get recorded into a single file which builds your base OS into your particular configuration. So after you tweak it and get it right, you’ll never have to tweak it again even if you change computers







  • It’s a problem when you’re dealing with decentralized systems (read: Byzantines general probelm). If there’s no central authority, how do you verify the person actually has the money and isn’t lying / double spending?

    Bitcoin is an example. A wallet is unique data (private key) that is stored only the users storage. That private key proves ownership of funds owned by a wallet address / hash. A wallet address has funds if someone with valid funds sent money to it. A person initially gets that data by mining, which is like spending computational power to solve a puzzle, in which solving also processes a set of transactions at the same time. This is like the process of minting, except anyone is allowed to mint. It also helps identify who the miners/minters are, since utilizing energy gives a signature (It’s really hard to hide using a megawatt of energy with a thousand computers, for example)

    A use case is it allows people in war torn countries to consolidate their wealth digitally. Gold, for example, could easily be confiscated at the border, or the refugees currency could only have value in their country. Lebanese people had their money squandered by the banks and the government, because they were the central authority. In a system managed by people, over a long enough period of time, a bad actor will gain some control of the system. This effect is worse the more control is centralized.

    It also means you couldn’t sanction other countries the way the America is doing to Russia’s banking system right now. I’m indifferent about that argument but maybe you think those sanctions are good in which case would be a point against decentralized currencies.

    I think more interesting ideas in blockchain involve decentralizing ID. A microchip in the heart can both act like a smart watch by monitoring health data and represent a unique identity in a decentralized system by using the biometric information like a fingerprint scanner. With a secure decentralized way to establish identity, you can decentralize voting, and remove politicians from the political system







  • Alright it’s early so I’m not structure this so much, but here’s my cypherpunk argument

    So, a decentralized ID system could be implemented by having a microchip implanted in the heart. The measured signals are more unique than your fingerprint, and if someone stole it, they’d have to kill you by ripping it out of your heart.

    But no one can trust a single company or government to make such a chip and not abuse that very rich health data which you can infer emotional states with. So instead a standard is developed so other people can develop the device independently.

    But decentralization goes beyond just manufacturing of the device itself, but also in governance of the data it collects. It doesn’t matter if your data is encrypted on the way to a single corporations servers, they still own the data.

    Furthermore, fully homomorphic encryption could be used to perform operations on encrypted data without ever decrypting it (unless you decrypt it with the keys from your microchip)

    So decentralization and FHE can remove the element of human trust from both monitoring health and establishing an identity system. While being transparent but also keeping your personal information hidden. For me, trusting humans is a security flaw. If that element of trust can be automated away, it should be.

    The problem has always been can you trust the people automating. With Blockchain, you can trust the servers are running the code that’s been agreed upon by the node operators and miners. With FHE, the data processed by the miners stays anonymous, and if you need to display that data say to a doctor, you have the ability to retrieve your encrypted data from a decentralized database (no one wants to manage their own data, like how most people don’t manage their own Lemmy instance)

    Anyone can splinter off and change the code, but if its incompatible they’re isolated on their own network. Kind of like if sublemmy instances content moderation policy is incompatible with others, they get defederated