HN user

machinestops

69 karma

meet.hn/city/51.4538022,-2.5972985/Bristol

Posts1
Comments36
View on HN

I struggle to take such an article seriously when it cites Brainfuck as an example. A common use of Brainfuck isn't to write programs, but rather to prove that it is possible to write programs. This isn't exactly comparable with small Lisps or Forth.

This is very funny. Let's take a different approach.

You are in a situation where you have a particular benefit. You may choose to share part of this benefit with another individual, who can be said to be deprived without it. This individual lacks the capacity to gain the benefit by their own means. Said individual shall be a permanent stranger: you will never again meet, your choice here being without future consequence as a result. Sharing your benefit diminishes it, but does not lose it.

What decision do you make?

Precisely. As of such, those with increased capacity for access will deprive access to others. No balance of care forms. Your recommended ethic is what Kant wished to address with his categorical imperative.

Of course this is a unifaceted way of posing a problem: it's a model, given we're dealing with philosophical ideas. I should hope that I needn't provide examples for the model, given the state of the world at present won't let you swing a cat without hitting one.

No, it isn't, which is why I added "definitionally". Let's say we have a limited resource, X, that is beneficial to hold, and it is more beneficial to hold more of it. As it is limited, acquiring necessarily means depriving another of it. Assuming one has the means to acquire more without impacting oneself negatively, in which situation (taking optimising for oneself as a maxim) you not seek to acquire more?

The problem with optimising exclusively for oneself is that you definitionally optimise at the expense of others. Gaps are easily widened, and your balancing idea falls apart when the scales are tipped from the start.

Graphene mitigates the locked bootloader issue by only supporting one line of phones (Pixel), which have unlocked bootloaders.

A large amount of work has been put into making Graphene specifically work with banking apps. Mine does, for instance.

For what? The simplest possible ISA? Something like an OISC or a ZISC, probably. Simplest "virtual computer"? Maybe the SK(I) combinator system? Specific improvements to this architecture? My personal preference would be to ditch the three arguments that aren't always used, have two 8bit instructions per 16bit word, use a stack (to eliminate the operands). But that's just one mode of thought for a very simple computer, not the only one. This line of thought is particularly inspired by the F18 Forth chips. They're quite minimal, simple, tight CPU designs: https://www.greenarraychips.com/home/documents/greg/DB001-22...

See https://github.com/oasislinux/oasis for a proof of concept.

No dynamic linking locks you out of Clang+LLVM (mostly: static clang isn't an officially supported configuration, but it can probably be forced to exist. I haven't properly looked into it yet.), Firefox, Chromium, QtWebEngine, (so no alt browsers, either), and probably a lot more. Statically linking every single package out there requires a lot of patches to build systems to get them to properly do it. Many build systems don't respect LDFLAGS and CFLAGS, or respect one or the other, or only partially respect them, causing a great deal of annoyance if you have a nonstandard desired result, such as fully static builds.

The ISA leaves something to be desired for "simplest". Simple, sure, but parameters (and unused ones, at that!)? Memory copy instructions? Multiply and no shifts? Addition _and_ subtraction?

Others have mentioned Subleq (Subtract And Branch If Less Than Or Equal To), but there's more useful designs that meet all the design constraints. They state that "It is also not intended to be as simple and elegant as it could possibly be.", but it's called "The Simplest Virtual Computer" - that kind of name is a challenge.

Note: Child processes can't change the working directory of the parent. An external command (that is, not a shell builtin, shell function, or externally loaded module) cannot change the working directory, because they're launched as child processes.

In past, there have been Linux-based operating systems that have been certified as Single Unix Specification compliant, and part of said specification is POSIX. I would imagine GNU and Busybox and Musl will be willing to implement the changes proposed by POSIX 2024, which inevitably leads down the road of newlines being banned.

Most utilities that create files are encouraged to error on newline filenames, which makes this effective illegality stronger. The post also discusses the future of this encouragement, which is turning it into a requirement.

However, older systems will not be enforcing this

Eventually, newlines in filenames will go the way of /usr/xpg4/bin/sh.

I'd like to note that up until this point, there hasn't (and isn't) been a fully POSIX compliant way to do many shell operations on newline containing filenames. They are already effectively unsupported, and the standard that adds support also discourages them from being created and used. The best way to handle them up until this point has been to not use sh(1).

I'm not joking. I used to be an Alpine user, but I ran it in disk mode. Any OS can probably be made to boot to RAM. You just need to get the initramfs to extract a rootfs image to RAM (tmpfs), and set that filesystem as root before handing off to init. What makes Puppy special is the stuff it does to persist changes.

I use a Framework. I would advise looking up the parts you select prior to ordering. I didn't, and I accidentally selected an SSD that has known firmware issues (it unmounts itself randomly while in use). No fixes for this issue in 2 years has me skeptical of buying again, but I'm otherwise pretty happy with the device.