somat
Joined 4 years ago
Joined 4 years ago
And yes I know it's not really a linux specific thing, but that gets the point across. It is very common on linux. I could twirl my os/desktop hipster mustache and say "my obsd/spectrwm desktop handles no window chrome really well" but then I feel really pretentious instead of only slightly.
They are so close that people can and often do build rand() as "internal state s = hash(s) return s" (or similar). then other people, wanting that deterministic hash() behavior thus accidentally exposed, build entire worlds(literally) out of rand().
Another problem with this is that the rand() internals are opaque and unknown and can change without violating the spec. hash(), because it is supposed to be deterministic, usually has an exposed stable algorithm.
A specific example. At one job I found they were storing long term customer order archives encrypted where the key was a hash of the date, this in itself is a little suspicious but the archives were offline and physically locked up on site, so not too bad. The real wtf was that the encryption was done on a win98 machine with a perl script that was basically "seed(date); key = rand(); encrypt(data, key)". expecting to regenerate the key if they ever wanted to look at the data. When I saw that I went "I don't know much about perl, but that does not feel stable" and did a few checks. Sure enough the behavior of rand() could change depending on the operating system or even version. making the keys highly dependent on that exact win98 machine with that exact version of perl, I think they ended up using that machine to generate and store all used keys in a database so other machines could decrypt the archives.
Another pet peeve is when people use the rand() when they want hash() but I will leave that rant for another day.
And on the subject of the useless use of cat, I like the form because it makes input a normal command(replaceable by any other command), rather than a shell special form. I sort of wish that "tee" would not default to emitting on stdout to better act as cat's compliment.
"As soon as we started programming, we found to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs."
Maurice Wilkes 1949
Note, that I never mapped much, but my standard approach was generally to cut a few large rooms out in the general shape of the map(because despite the clever opening if you got too ambitious too quick unreal absolutely would leak like a sieve) then use a mix of add and subtract brushes to make the fine geometry, which was exactly the same as quake maps, large simple rooms to avoid leaks(this time needing to be assembled) filled with fine geometry via adds/subtracts.
This is sort of the early id, Epic engines in a nutshell, id better technically, Epic better tooling and ergonomics.
And a footnote on brushes, because I did not understand this until long after I stopped mapping, A "brush" is a 3d primitive unique from the point,face one commonly used in 3d modeling software. A brush is defined as the convex shape made from intersecting planes. So where for a point,face model you define where the points are and which points form a face, for a brush you define where the face is(point, normal) and what faces are in the brush, the shape comes out of how they intersect. I assume this was because for large simple geometry that you are going to be doing csg operations on the plane model is more attractive than the point model.
If I remember correctly, it had better csg and a neat method to link planes so they would texture as one surface.
"There are the live video compositors everyone complains about and there are the ones nobody uses."
But really, it is great to see a piece of open source software as the default choice in a field where they tend to suffer, desktop applications.
I mean, that is why they exist, to replace names, or perhaps more accurately act as a surrogate key for names. The government specifically said don't use the SSN as a secret, and businesses did so anyway.