HN user

lieks

168 karma
Posts0
Comments54
View on HN
No posts found.

I haven't used s6 much, so I can't really comment on that, but Chimera tends to boot significantly faster on the same hardware, compared to Alpine with OpenRC, mostly because of dinit's parallel initialization.

As for system performance, mimalloc's effect isn't particularly noticeable in regular use. Or maybe I just don't stress the allocator often enough. There may be more daemons running by default, but they are also activated on demand if you aren't using them, so YMMV on that.

For desktop use, it feels like an early (but already quite usable) version of what a respectable systemd replacement would look like, and I think that's its greatest strength in practice.

I've switched to Chimera from Alpine a few months ago. It's much nicer for desktop use. The service supervision is great, and many things that require some setup on Alpine just work out of the box. The packaging system is nicer too, though it does have less stuff already packaged.

Christianity considers any sexual activity other than heterosexual sex for procreation within marriage to be sinful,

Mostly true, except the "for procreation only" part. That's specific to Cathlicism.

Protestant doctrine tends to be "anything goes, so long as it's in marriage", with the implication that marriage is heterosexual.

and female sexuality to be inherently corrupting because "it was Eve who tempted Adam in the Garden of Eden."

I don't know of any non-sectarian modern Christian group that think like this. I don't think it was even current thought at the time of the Reformation.

The Christian dogma

You are, once again, talking about Catholicism. No other denomination calls their teaching "dogma", because only Catholicism claims to be infallible. And for that reason, any serious error in their dogma is nearly impossible to excuse without some serious mental gymnastics. Other denominations can go to the Bible and point to a passage showing some attitude was wrong, change their doctrine and move on. But not Catholicism.

I also heard these things in sociology class at school, but they are outdated and partially incorrect. And it's a very anachronistic interpretation of history.

That isn't "sex positive" in any commonly understood sense of the term.

No indeed. Modern Christians aren't either. But that's not what the GP was referring to. What you got was women actually being consulted on who they should marry, getting basic human rights and so on. Which, at the time of the first century A.C., was rather revolutionary. A lot of these were weakened over time by Catholic (and also some Protestant) culture, but treating people like people is very much a big message in the Bible.

Another big message in the Bible is restraint, so of course Christianity can never be fully "sex positive" in the modern anything-goes sense of the term.

It works as a fork deterrent; forks can't easily prove they are still correct without the test suite, so if a company needs to tweak SQLite for any reason, they are better off paying for the tests so they know their tweaks won't break anything.

Because the whole goal is to not need any sort of "pointer discipline". The way he does it, you can store as many pointers to the arena as you want without keeping track of them, as long as they don't survive the deallocation of the arena.

One example would be having a big graph inside the arena. Pointers to other elements can just be plain pointers.

With "conventional RAII" you need to know if your pointer is the only pointer left to know whether to call the destructor. That requires some sort of pointer tracking.

They have already shown themselves to be both able and willing. Hopefully the backlash from this current decision will delay their plans long enough for GrapheneOS, Lineage and others to figure out how to work around it somehow, which is why I'm eagerly watching where this is going.

You can install full uBlock Origin in the Orion browser, on iOS. It also has decent built-in ad blocking (though uBlock Origin is still better).

I had been thinking for a long time to switch to Android (GrapheneOS, probably) when my current iPhone 13 dies, but this whole thing with "sideloading" on Android is making me reconsider. If I can't have the freedom I want either way, might as well get longer support, polished animation and better default privacy (though I still need to opt-out of a bunch of stuff).

It was originally designed to be used by government software in the EU. AFAIK, it doesn't really get used for much else, but it fills a niche not covered by the GPL family, which is weak/non-viral copyleft (as the LGPL provides), plus handling SaaS in a reasonable way (as the AGPL provides).

Copyleft protects against proprietary forking, and also assures the community you can't close the source in the future. Weak/non-viral copyleft makes it so you can still link it to proprietary software, so you could sell integrations (non-LSP) or closed-source plugins.

LGPL and GPL licensed software can be provided over a network with proprietary changes. The AGPL and EUPL both close that hole. Every change to the modules covered by the EUPL must be open sourced, even in that case.

If your intention is to monetize the LSP itself, open source is probably not what you want. It's fundamental to open source that anyone can use it for any purpose, and also fork it. Permissive licenses like the MIT license allow relicensing to a proprietary license later (see Redis) but that causes problems with the community (see Redis), and is nearly guaranteed to cause a fork.

If you are already considering the AGPL, I'd like to suggest the EUPL. It also covers SaaS, is copyleft (forbids nonfree forks), but non-viral (can link to nonfree software), a lot easier to read, and also doesn't have the "bad name" some people attach to the GPL family.

I can't speak to how well it fits in your usecase. There are too many ways to do monetization, and I don't know which one you have in mind. But copyleft at least stops other entities from monetizing without sharing their contributions, so if you want to keep it open source, that's my recommendation.

As a Brazilian, I'm a bit torn on this issue. On the one hand, our social media regulations are terrible, are being approved without due process, and will certainly be used for (political) censorship. On the other hand, it's annoying that the US has to interfere, and concerning that they even can interfere in the first place.

I've been trying to solve that for a few years now. The closest existing thing I could find in my research was acme from Plan 9, which actually does a pretty good job. The trick it uses is to have you click on a typed command instead of "sending" it, and it stays on your screen after it runs. So you can save several commands in a file, and that's a menu. Or clear the current document and print out several commands from a script, and that's a dynamic menu.

I highly recommend reading the paper[a] and trying it out. It's really interesting, and pretty easy to program.

The main problems with it are that it's too text-centered, and the interaction model is kinda weird for modern standards. I feel these are solvable (Plan B's Omero tried, with partial success), but they are hard to do without integrating the UI and the script into a single process, which feels like cheating. But well. If I ever get around to making a prototype, it will be here on Show HN.

[a]: http://doc.cat-v.org/plan_9/4th_edition/papers/acme/

I have different reasons for avoiding AI.

I enjoy understanding what my programs do to the deepest level, so making or using AI are both boring; they remove the fun part of programming and leave only the boring parts (mainly debugging). I haven't liked the current ML field since the beginning (early 2010s in my case) for this reason.

I want a tool, not a slave. I don't want it to be "smart", but an extension of my body. A thinking body part is always more annoying to deal with, because you have to reverse-engineer what it's doing to get it to do what you want.

I don't think this reasoning applies to everyone. I think it's fine for other people to use ML algorithms. I just don't want them myself.

If copyleft is desired, the EUPL is very similar to the AGPL, but isn't viral, so you can link it as a library to a closed-source program. It's also compatible with most open-source licenses.

Not sure if it's what the OP wants, but I think it's a neat license and I don't see it used anywhere.

I agree that abortion is evil, but in my perception, once someone gets to a situation where they're willing to murder their own child, it won't be a law that'll stop them.

This problem should be considered moral, not legal.

It feels like this is aimed more at intermediary programmers (and seniors with careless attitudes).

A lot of them have this bizarre idea that since bugs will happen anyway, there's nothing we can do to avoid them. Then they come up with some bad architecture, or poorly-thought-out convention, or use a problematic library, which makes it easier for logic bugs to happen later, when someone else changes a convention elsewhere that interacted with it.

There often is a way (usually multiple ways) to architect software to avoid bugs. What Rust does to memory bugs and Haskell does to state bugs, can often be done manually in other languages, for whole categories of logic bugs, by being careful with your conventions and making sure they are easy to follow correctly.

I.e. software can be designed to avoid bugs. That requires some thought many people don't care to put in.

I have a theory that this generalizes to some extent.

Pitch perception is also logarithmic; an octave in music is a 2x ratio.

Memory is sort of logarithmic; you'd say a thing happened 1-2 days ago or 1-2 years ago, but not 340-341 days ago.

Same with age; someone being 10 years older than you is a much bigger deal when you're 10 than when you're 80.

If we're counting only programming languages (and not fill-out forms), Prolog had it in 1971, before ML. ASCII didn't include _ until its 1963 draft, so it's probably somewhere in that time.

I'll guess it's probably Prolog, but maybe Planner (Prolog's predecessor) had it too.

I used to not use any of those tools. In C, I split my source into logical modules, and added a short module prefix to each function, to make it easy to find.

Later, I found out about ctags and started using it; but it's not that useful for autocomplete. I kept to my old naming conventions: one verb whenever possible, plus any prepositions (is/has/etc.), noun if applicable, and module prefix.

This works well for the programs (not libraries) I write. Libraries have a different set of design considerations.

My function names end up like:

    memalloc (mem module, alloc verb)
    print (no module, print verb)
    gccollect (gc module, collect verb)
    vecappend (vec module/noun, append verb)
    Vec (module/noun)
    render (static function, render verb)
Most functions should end up private (static/not exported) anyway, so exported names can be short and still unambiguous.

In languages that have namespaces like Go or Python, I use their own namespace facility. I like to avoid the need for underscores or capitals in names so I don't have to press shift to type them, but some languages (Go) make this unnecessarily hard.

Eventually, when I started working in large Python and Java codebases written by others, I had to get an LSP plugin so it would take me to the correct definition. Ctags doesn't know about overloads. And some people don't care if they put a function in a logical place or not.

My editor's plugin doesn't have autocomplete, but giving functions a reasonably-sized name (and having two code windows open side-by-side) solves that problem.

The main reason I enjoy CLIs so much more than GUIs (or eves TUIs sometimes) is that it feels so consistent.

There are conventions, but following all the conventions in a CLI is a lot easier than designing a good GUI. So they tend to be higher quality as a result.

I spend a lot of time thinking how to bring this property to GUIs, but my best answers are still "lots of effort" or "lower your expectations".

As a programmer who dabbles in painting, what you are describing is indirect lighting and subsurface scattering (leaves are sort of transparent, so from the back they look yellowish, and the sky is blue, so shadows have some blue in them).

In a full rendering pipeline (not the simplified one just for the effect) this would already be implemented, but it's a good thing to remember.

Stupidity 2 years ago

In addition, everyone is stupid sometimes, especially me.