I’ve had negative line number errors in an RPA program before. That one really caught me off guard.
kionay
- 0 Posts
- 10 Comments
kionay@lemmy.worldto
Programmer Humor@programming.dev•I wasted all my generational luck for thisEnglish
5·2 months agofrom a purely mathematical standpoint, yes
from a practical engineering standpoint, no, it’s impossible
I’m pedantic as they come, but pedantry has little use in an engineering discipline, software engineering included
like, if I take a cup of water and pour it into the Pacific Ocean strictly speaking I can say I “single-handed raised the water level of the ocean” and you’d be correct in the most unhelpful way
for the code in question if the PRNG is working as expected then for all meaningful purposes it can be considered impossible
edit oh also to fight pedantry with pedantry, technically even a check that would prevent duplicates might not prevent duplicates because you could argue there’s a non-zero chance a random cosmic ray flips just the right bit at just the right moment rendering even that pure chance. anything engineered (and not pure mathematical theory) has to draw the line of plausibility somewhere because we’re engineering inside of a chaotic reality. drawing the line to say that the image above is functionally impossible is just fine.
kionay@lemmy.worldto
Programmer Humor@programming.dev•I wasted all my generational luck for thisEnglish
48·2 months agoconsole.time()jots down the current time, if you do that twice and put stuff in the middle you get two times and the difference between them is how long that stuff took to doconsole.timeEnd()uses the last execution ofconsole.time()as the starting point to work out how long the stuff took to doconst originalUUID = crypto.randomUUID()generates a Universally Unique IDentifier, which can be thought of as a very large very random number, by use of a pseudorandom number generatorwhile(stuff)evaluates the stuff for truthiness (1 + 2 = 5 would be false, 50 < 200 would be true, ‘my username starts with the letter k’ would be true) it’s typically followed by a ‘block’ of code, that is lines beginning with{and ending with}, but we don’t see that here, which means we can readwhile(stuff)as “keep checking ifstuffis true in an endless loop, and only continue to the next line if one of the checks ends up beingfalse”the
stuffhere is creating another random UUID, and checking to see if it’s the same random number as the first one generated.functions like this are so incredibly random that chancing upon two executions creating the same number should be practically impossible. staggeringly impossible. If so this code should never complete, as that
whilecheck would be endless, never finding a matchthe image suggests that one such match was found in about 19 million milliseconds (a bit over 5 hours). this is probably faked, because the absurd unlikelihood of the same number being generated in so much as a single human lifetime, let alone a day, is laughable
the imagine is faked or something is terribly wrong with their pseudorandom number generator
I had success running unit tests for software deployments in pairs, one with pinned versions (error on a failed build) and one unpinned (warning on a failed build)
so at least you get forewarning when an upstream dependency messes everything up, and if the software changes are somewhat regular than each log of pipeline runs should show incremental changes making it easier to spot the package that started breaking everything
tristate as in three states or tristate as in five states?
kionay@lemmy.worldto
Programmer Humor@programming.dev•(How to trigger programmers (and make them irrationally angry)English
6·11 months agoOr a classic:
#define true (rand() % 2) #define false (rand() % 2)
I once worked in a program that allowed custom C# scripts to be written into it to add custom functionality. The way it worked under the hood however was that the code written in the text field would be stitched together into a longer file and the whole thing compiled and ran. The developers didn’t want people to have to write or understand boilerplate code like import statements or function declarations so the place you typed into was the body of a function and some UI was used to get the rest of the bits that would create generated code for everything else.
To add to that there was a section of global code where you could put code explicitly outside of functions if you knew what you were doing. This wouldn’t get code-generation-wrapped into a function, just at the top of the class. It did, however, only run and get runtime checking when one of the functions was ran. And since the program didn’t grasp that the global code error line number should be with respect to the global code block and not the function code block you could get errors on line -54 or whatever since the final generated file landed the global broken code 54 lines before the beginning of the function.
Not that any of this was told to the user. I only found out because early versions of the app wasn’t compiled with obfuscation so ILSpy let me see how they rigged the thing to work.
Error on line -54 will probably be what made me the most dumbstruck in all of development.
I prefer index variable names that are two words. The second word is always ‘index’ and the first word describes the enumerable objects. carIndex, productIndex, thingIndex
I’m not paid by the character count. Longer and more descriptive is better. Long lines that go past your 1080p monitor are probably not long because of variable names but because you insist on doing many things in one line (quit doin’ that). For small functions this isn’t necessary, but too often I’m shunted to the middle of a big function with two or three indecies doing acrobatics over one another and while working on it I have to constantly remind myself that this i and j mean particular things.

Perhaps consider Poetry
It’s my personal go-to package manager and venv solution.