News for hackers. Stuff that matters.
Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by nailer on Saturday May 27, 2023 @05:24PM (#36098470)
Short version: he’s the lead dev (and lead designer, created fallout, and much more).

There is a showstopper bug that is hard to reproduce they effectively bisect the code until they find it.

They fix the bug. He is asked whose error it was by his boss, and to protect the person, he says it’s not important. His bonus - keep in mind he created a new successful IP from scratch - is drastically reduced as a result.

Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by rowanG077 on Saturday May 27, 2023 @06:09PM (#36098876)
Wow. Insane that he lost his bonus for being a good lead dev.

Some dev had put the classic `<=` instead of `<` in a for loop check and the for loop body promptly corrupted some memory leading to heisencrashes. It took weeks to narrow done with 10+ hour days. Once they did and fixed it the boss asked for a name who had written the code. Timothy did not bend. Boss was salty and cut his bonus.

Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by zabzonk on Saturday May 27, 2023 @07:41PM (#36099578)
whenever i see '<=' in code, my bug detectors start twitching. to begin with, doing effectively two tests in one always seems to over-complicate things.
Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by symlinkk on Saturday May 27, 2023 @07:48PM (#36099625)
Seriously?
Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by zabzonk on Saturday May 27, 2023 @07:49PM (#36099638)
yep - i am not saying there are no cases for using it, but use of it is always worth looking at.
Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by CamperBob2 on Saturday May 27, 2023 @08:28PM (#36099908)
Same whenever I see a do...while loop.

Nothing wrong with a do...while loop, but I've learned to look twice when crossing that particular street. Most loops that don't have bugs tend to support zero iterations seamlessly and inherently.

Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by dllthomas on Saturday May 27, 2023 @10:27PM (#36100584)
If you squint, aren't those the same case?
Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by zabzonk on Saturday May 27, 2023 @11:03PM (#36100776)
um, a do...while always does something at least once - a for-loop not.
Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by dllthomas on Saturday May 27, 2023 @11:14PM (#36100832)
I was trying to say that the difference between a for loop with < and a for loop with <= is roughly the same as the difference between a while loop and a do-while loop, and to whatever degree that's true they might be due suspicion for the same reason.
Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by jonhohle on Saturday May 27, 2023 @11:56PM (#36100985)
I agree with parent. do-while communicates that a thing will always execute once, and maybe more, and a while or for loop (even in the higher level for-each/for-in case) may never execute at all.

Being able to choose the right control structure (and data structures) can provide additional information to the correctness of the code than arbitrary choices which may perform the same function. Choosing the Most expressive options may or may not conflict with performance, in which case, comments are helpful to describe why more obvious approaches weren’t taken.

Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by dllthomas on Sunday May 28, 2023 @01:34PM (#36106065)
zabzonk is obviously correct about the behavior of the control structures - that's not something I ever meant to disagree about.

The thread had had one poster state they find <= suspicious in a for loop, and another about any do-while loop. I don't think these are literally the same thing (hence "if you squint") but I think they share a meaningful similarity of adding an extra pass through the loop compared to the other form and I thought that was interesting.

Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by derefr on Saturday May 27, 2023 @08:24PM (#36099883)
x <= y isn't two tests.

In a low-level sense, branch-if-greater-or-equal is one instruction even on RISC machines — and not one any more "complex" than branch-if-greater.

In an abstract boolean-algebra sense, x <= y is the same as !(x > y).

Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by zabzonk on Saturday May 27, 2023 @08:54PM (#36100037)
> x <= y is the same as !(x > y)

i.e. two tests, or perhaps i should say logical operations. i'm not saying don't use '<=', but do check that it is doing what you think it should.

Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by derefr on Saturday May 27, 2023 @09:05PM (#36100108)
Let me put it another way: the following are the same code:

if: x <= y, do: foo(), else: nothing()

if: y < x, do: nothing(), else: foo()

Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by AugurCognito on Sunday May 28, 2023 @03:43AM (#36102001)
Shouldn't the last statement be:

if: y > x, do: nothing(), else: foo()

Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by rurban on Sunday May 28, 2023 @10:42AM (#36104392)
Nope, order of evaluation might matter with impure code.
Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by rowanG077 on Wednesday May 31, 2023 @08:50AM (#36137745)
How exactly? Well there is an extreme case where x and y are volatile but even then the order is implementation defined so I can't see a world where it matters.
Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by rgbgraph on Saturday May 27, 2023 @09:19PM (#36100178)
This form is basically always used for enumeration.

Might as well just do (x != y); unless you're specifically looking to guard against erroneous bitflips that would be caught by the prior (x < y), but not the former. But at that point -- it's likely your result is going to be garbage.

In essence they're the same; but one you never have to think about whether you're using it correctly.

Can anyone find a reason not to swap out (x < y) for (x != y)?

Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by olkingcole on Saturday May 27, 2023 @09:39PM (#36100293)
(If I'm understanding correctly) one example is if have two places where you x++ in the loop, so if you make an error in there you might end up hitting both of them and incrementing from y-1 to y+1.
Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by rowanG077 on Saturday May 27, 2023 @09:30PM (#36100247)
`<` communicates the intent way better. It also more readable

Example: The loop should run as long as the counter is smaller then 10. `i /= 10` achieves the same thing but communicates something very different. It implies `i` may be changed inside the loop to become larger then 10. The condition itself implies a larger valid state space.

Anyway it's a moot point anyway. Modern languages have much better looping constructs.

Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by rincebrain on Sunday May 28, 2023 @10:35AM (#36104333)
If you have a bug and produce x+=2, you never terminate?

One might argue corrupting much larger swathes of memory is better from a "fail-fast" perspective, but there's always tradeoffs.

Re:Why Timothy Cain creator of Fallout left Fallout 2 during... by thrwy41 on Saturday May 27, 2023 @06:50PM (#36099192)
Perhaps it was him (and that is what they assumed when they cut his bonus)