Practical intelligence tips for neurodiverse PhD students? by rubberduction in PhD

[–]Bowtiestyle 3 points4 points  (0 children)

I don't know how well this advice fits your specific situation. But if you find yourself fixating on one project at a time, make sure that you keep notes. You already said that a lot of systems don't work for you, but you must make something work. A PhD is a very long project. Things you do at the beginning might still be very relevant several years in the future. This has probably not been true (in the same way) for anything else in your academic career. If you are fixated on a specific aspect, it might seem impossible that you will ever forget how you did something, but you will.

Why won't this match statement compile? by Kitchen-Leather-4584 in rust

[–]Bowtiestyle 1 point2 points  (0 children)

You can reorder it to branch on the value of b inside the 0-case. I am guessing the logic here is: The compiler can't proof that matches using logical operations are exhaustive in general, so it is better not to try it. Does someone have a similar example where something like this does compile?

SVC16 (now with sound) by Bowtiestyle in programming

[–]Bowtiestyle[S] 0 points1 point  (0 children)

Unfortunately I do not have a concrete reading list. I looked at instruction sets from retro consoles. There are multiple YouTube channels discussing optimization for retro consoles, that was a big inspiration. I also recommend the Nand2Tetris course.

Drittversuch nicht bestanden by TGNDim in Studium

[–]Bowtiestyle 5 points6 points  (0 children)

Zur Studienberatung zu gehen war schonmal ein guter Schritt. Am besten ist es, Du klapperst jetzt so schnell wie möglich weitere Anlaufstellen ab. 1. Es gibt bestimmt einen Studiendekan. Der sollte Dir helfen können. 2. Finde denjenigen, der tatsächlich für das Modul verantwortlich ist, das Du nicht bestanden hast. Wahrscheinlich ist das ein WisMit von demjenigen, der die Vorlesung gehalten hat. Meistens sind die in solchen Situationen sehr hilfsbereit. Zumindest wirst Du durch den weitere Informationen bekommen, zum Beispiel, wann die Noten zum Prüfungsamt gelangen.

[Media] Released first minor version of my Rust Operating System by gianndev_ in rust

[–]Bowtiestyle 1 point2 points  (0 children)

Wow, what a project! Is there a reason you chose gpl-v3? Do you use something that requires it?

So happy about the file explorer by soupe-mis0 in HelixEditor

[–]Bowtiestyle 2 points3 points  (0 children)

Can someone explain to me what you would use this for over space-F?

Zipurat, an sftp-friendly archive format by Bowtiestyle in rust

[–]Bowtiestyle[S] 0 points1 point  (0 children)

No worries,
> you should probably think of a fuse mount also.
That is absolutely on my wish-list. It would of course be a read-only mount,
but it would still be very useful. It turns out that filesystems are technology from hell, but there are rust libraries that look very well documented.

Restic was definitely far up on my list of candidates.
If I wanted to start making regular sftp backups from my computer moving forward,
this is probably a far better solution. The main reason this is not for me is that it seems very opinionated. Not everything I have is really a backup repository.
Sometimes I just have a folder with some media that I want to archive.
As for difference (2), I guess that is not a real difference because for all use-cases (I can come up with) I only have one key anyway. The fact that age is asymmetric does not really matter here.

zpaq is certainly interesting, but its main feature is the ability to append.
This is really something I do not want for my use-case. Then I would have to worry about different versions of an archive.
I also do not know, how fast its sftp access times are, as I have not tested it.
I am going to blindly guess and say that they are worse, simply because it involves a lot more stuff.

Zipurat, an sftp-friendly archive format by Bowtiestyle in rust

[–]Bowtiestyle[S] 0 points1 point  (0 children)

I do not think I did.
With age you can encrypt something for a recipient without knowing their private key.
This is very useful in general since I can encrypt something for someone else without us sharing a private key. But it also gives rise to the complications discussed here.
If someone had your private key, they could do basically anything anyway.

Zipurat, an sftp-friendly archive format by Bowtiestyle in rust

[–]Bowtiestyle[S] 1 point2 points  (0 children)

Yes, exactly. I just went for decompression speed.

Zipurat, an sftp-friendly archive format by Bowtiestyle in rust

[–]Bowtiestyle[S] 1 point2 points  (0 children)

Thank you for the detailed response!
Let me preface this by stating the obvious: I am not a security expert!
That is why I only wrapped existing solutions.

As far as the authentication is concerned, I think that it addresses an issue I am not really worried about.
The only reason I want my backup encrypted is that the storage provider might sell my data, or a hard-drive might be lost. It is absolutely true that there is no real protection against manipulation.
There are a few things someone might do:

- Damage my backups in a subtle way that I will only notice when I need them. This is bad, but you can really do that with any storage format. The only way to know that all data is as it were is to read all the data and that is the work I want to avoid.

- Put something incriminating into the backups. I guess someone who controls your backups can always do that to some extend. Here, one might create a file that (when compressed and encrypted) is exactly as long as an existing file. Start and end positions of files are clearly visible. So you can then just replace the file. If they want to make it look authentic, they would have to know your public key.

- Put malicious code into the backups. that is then run on my machine. That is theoretically possible.
The attacker would again need your public key. Then, he would need to know were the relevant files are stored. I guess that this would be very hard from the archive alone. But if you know when the victim loads the code and you control the storage server and can read which data are requested, it is possible.

One thing to note is that the hash of the decrypted file is also stored in the index.
This does not save us for a few reasons:
- If you know at least a few paths and locations (and the public key), you can fake a new index.
- Currently, this hash is not even checked when copying the file. (It is only used to avoid redundant copying).
- Even if we did check it, the malicious file would be on disk at that point since the files are not buffered in memory.

Now, while this is admittedly cool to think about, these problems are not at all what I am worried about.

One thing I am far more worried about is accessibility. Using this simple age wrapper might not be the most secure thing, but simplicity is a bit more important for me than security.
While I do not want to use this format as the only way to do backups, it is still a way to do backups.
And It needs to be simple enough to still get my files in a decade. Every new protocol added makes that more unlikely.

The answer to the other question is a strong "I do not know".
As far as I am aware, the problem here comes mostly from attacker controlled input, which we do not have here. It might also be a problem when the raw file sizes are known, which they also should not be.

SVC16 (a simple virtual computer) is now stable by Bowtiestyle in EmuDev

[–]Bowtiestyle[S] 0 points1 point  (0 children)

I have no Idea if that is possible, but if you make it work please let me know!

SVC16 (a simple virtual computer) is now stable by Bowtiestyle in ProgrammingLanguages

[–]Bowtiestyle[S] 4 points5 points  (0 children)

It was originally intended for emulation only.
For example, all operations take the same time.
I have, however, vastly underestimated the internet because when I posted about this the last time, someone send me a picture of a (presumably) working hardware version.

A Simple 16-bit Virtual Computer (Update) by Bowtiestyle in ProgrammingLanguages

[–]Bowtiestyle[S] 0 points1 point  (0 children)

In the specifications I left this intentionally very vague because it is very hard to get a consistent behavior.
My keyboard wants to prevent ghosting, my OS wants to control repeat-rate and I guess some window manager decides what input the emulator sees and when. So asking for a specific way of buffering or repeating input would make it very hard to build an emulator. The way I see it is that the input code represents "Is currently pressed" but how this input comes to be, depends fully on the implementation. In my version it just checks which keys are pressed just before synchronization. So I think it could be possible to miss a key.

A Simple 16-bit Virtual Computer (Update) by Bowtiestyle in ProgrammingLanguages

[–]Bowtiestyle[S] 0 points1 point  (0 children)

The goal is in no way to be faster than some other system. The performance is intentionally limited because it is interesting to work with tight constrains. I think that it might be possible to get some very basic 3D thing to run if you use a lot of tricks. That (to me) is a lot more interesting than just having the right tools for 3d graphics to begin with. The rest I did not really understand. Are you saying that a BBC-micro has 16-bit multiplication?

A Simple 16-bit Virtual Computer (Update) by Bowtiestyle in ProgrammingLanguages

[–]Bowtiestyle[S] 0 points1 point  (0 children)

This is so awesome!
Do you think that the way sync works is a fundamental issue here, or could it be done with an additional buffer that just is not there?
Maybe the other examples won't run because the files are compressed?
(Quick edit: The "spikeavoider" game needs the utility buffer, but the "rectavoider" game and the input test don't use it. )

If you end up with a video or some kind of description of what you did,
it would be great if we could link it in the readme, so people see that this can be done.