oessessnex

@oessessnex@programming.dev
0 Post – 29 Comments
Joined 1 years ago

People saying something factually incorrect and insisting on it.

Some people consider working on programming languages fun, so they create new ones.

I don't have 2 mil, how do I get out of this? File for bankruptcy?

3 more...

When does the narwhal bacon?

2 more...

I usually kill them with my phone with the screen turned on (the background needs to be blueish and the room needs to be completely dark). For some reason they don't see it, they just sit there until they get squashed.

This doesn't work for tiger mosquitoes.

Nope. Monads enable you to redefine how statements work.

Let's say you have a program and use an Error[T] data type which can either be Ok {Value: T} or Error:

var a = new Ok {Value = 1};
var b = foo();
return new Ok {Value = (a + b)};

Each statement has the following form:

var a = expr;
rest

You first evaluate the "expr" part and bind/store the result in variable a, and evaluate the "rest" of the program.

You could represent the same thing using an anonymous function you evaluate right away:

(a => rest)(expr);

In a normal statement you just pass the result of "expr" to the function directly. The monad allows you to redefine that part.

You instead write:

bind((a => rest), expr);

Here "bind" redefines how the result of expr is passed to the anonymous function.

If you implement bind as:

B bind(Func[A, B] f, A result_expr) {
   return f(result_expr);
}

Then you get normal statements.

If you implement bind as:

Error[B] bind(Func[A, Error[B]] f, Error[A] result_expr) {
   switch (result_expr) {
       case Ok { Value: var a}:
           return f(a);
       case Error:
           return Error;
   }
}

You get statements with error handling.

So in an above example if the result of foo() is Error, the result of the statement is Error and the rest of the program is not evaluated. Otherwise, if the result of foo() is Ok {Value = 3}, you pass 3 to the rest of the program and you get a final result Ok {Value = 4}.

So the whole idea is that you hide the if Error part by redefining how the statements are interpreted.

Remove the wall plug, straighten the paper clip and insert it into the cable in between the wires, reinstall the wall plug.

Play chess.

You don't even need soil, you can just put them on the ground and cover them with hay, and they grow just fine.

None. I'm kind of surprised most people don't use lemmy the same way as reddit, I assume nobody just browsed /r/all?

The implementations mostly don't matter. The only thing that you need to get right are the interfaces.

If you create accounts on various sites with an email address on your new domain keep a list of those. If decide to let the domain expire you need to close the accounts beforehand, otherwise someone else can get access if they purchase the domain.

Also you will likely be playing for the domain forever, so just register/renew it for 10 years, maybe you'll also get a discount.

Inferior compared to what?

Well, most people installing Arch for the first time have no idea what a typical Linux install does under the hood. That makes it a worthwhile learning experience. The same commands you use during the setup you can later use to fix or change things. It basically forces you to become a somewhat proficient Linux user.

Cataclysm: Dark Days Ahead

It's a time machine that teleports you to 3am the next day.

Sanmill

Basically nine man's morris, it's pretty fun trying to beat progressively harder AI. Each difficulty requires a different (better) strategy. It's like unlocking levels in a puzzle game.

Turn JavaScript into Bash with these easy steps...

A whale swallowing the world.

1 more...

It's not really fully reproducible either.

3 more...

Haha, this made my day :)

On a phone with spyware installed that wouldn't do anything. There are probably ways to get rid of it, but how can you be sure?

1 more...

I quite enjoy Nix flakes for this. Only certain languages have good support though (C, Rust, Haskell, OCaml, ...).

Just buy a new SSD to install Linux on. If you decide to switch back just plug the old one in.

A package is reproducible if you use the same inputs, run the build, and get the same outputs.

The issue is that the build can produce different outputs given the same inputs. So you need to modify the build or patch the outputs. This is something that is being worked on by most distributions: https://reproducible-builds.org/who/projects/

NixOS is not special in that regard nor are all NixOS packages reproducible.

You can probably replace it with ImageMagick.

The recorder. It's easy to get started, there is a lot of good information online (look up Sarah Jeffery), and professional plastic instruments are very cheap. It also requires no special care and doesn't need maintenance, since it has no moving parts.

The downside is that in order to play larger recorders your hands need to stretch a bit, so I'm no sure if that is a problem if you have joint issues.

The other option is a hand ocarina, but it is very hard to even make a sound, even harder to make it clear and consistent. Also you need to play entirety by ear. It's a fun challenge, though.

I randomly generated mine using a Markov model. It's just pronounceable nonsense.

Nope, nix doesn't ensure or require that the builds are deterministic. It's not any better in that regard than other package managers.

1 more...

All is not a "for you" feed, it contains posts from the whole fediverse. You are supposed to add the filter yourself. Find the communities you are interested in, subscribe and then browse that.

IIRC Voat also added the option to block communities, which prevented the hateful ones from showing up on the front page.

That obviously didn't help...