There have been multiple accounts created with the sole purpose of posting advertisement posts or replies containing unsolicited advertising.

Accounts which solely post advertisements, or persistently post them may be terminated.

programmer_humor

This magazine is from a federated server and may be incomplete. Browse more on the original instance.

seth , (edited ) in Me after I got fired

This is more evil than changing someone’s SSMS batch separator from GO to FROM or JOIN.

words_number , in FLOSS communities right now

FCK DSCRD!

(They should use lemmy instead :-P)

dipshit , in What's stopping you from coding like this ?

my neck. my back. my…

ShepherdPie ,

… full development stack?

rimjob_rainer , in What's stopping you from coding like this ?

My inflexibility

andioop , in What's stopping you from coding like this ?
  1. I can easily bend in half and reach past my toes, but this is another ask entirely.
  2. Even if I could do this, I don’t have eyes in my back or a computer screen in my knees.
Comradesexual , in What's stopping you from coding like this ?
@Comradesexual@lemmygrad.ml avatar

I can’t code. :(

pearsaltchocolatebar , in What's stopping you from coding like this ?

My hamstrings

NoSpiritAnimal , in What's stopping you from coding like this ?
@NoSpiritAnimal@lemmy.world avatar

Too close to my own dick, gonna try to suck it and get distracted.

SkyNTP , in Me after I got fired

This wouldn’t pass PR review and automated tests, unless they were a senior dev and used elevated privileges to mess with things behind the scenes.

maynarkh ,

It’s bold to assume those exist. Maybe there’s a reason the coworker left

Hazzia ,

Can confirm, just left a team that had 3 people for 4 pieces of legacy software and still used subversion

maynarkh ,

SVN has legit use cases still though. Git LFS is not or just barely supported in a lot of industries.

frezik ,

rand() will be infrequent < 10 (at least ten in 2^15 times, if not exponentially more), so automated tests are likely to pass. If they don’t, they’re likely to pass on the second try, and then everyone shrugs and continues. If it’s buried in 500 other lines, then it’s likely the code reviewer will give it all a quick scan and say “it’s fine”. It’s the three line diffs that get lots of scrutiny.

In other words, you seem to have a lot more faith in the process than I do.

killeronthecorner ,
@killeronthecorner@lemmy.world avatar

rand will be called every time true is used, which could be hundreds of times for all we know

frezik ,

If it’s a 16-bit integer platform, it might hit every once in a while.

If it’s a 32-bit integer platform, it’ll hit very rarely.

If it’s a 64-bit integer platform, someone would have to do the math with some reasonable assumptions, but I wouldn’t be surprised if it would never hit before the universe becomes nothing but black holes.

Morphit ,
@Morphit@feddit.uk avatar

The point being made is that it also depends how often the ‘true’ value gets used in the code. Tests might only evaluate it a few times per run, or they could cause billions of evaluations per run. You can’t know the probability of a test failure without knowing the occurrence rate of that expression.

killeronthecorner , (edited )
@killeronthecorner@lemmy.world avatar

Yes you’re correct, this was the point I was making.

To elaborate: could be 100s of times in a codebase, even 1000s, being executed in tests on local machines and build servers 100s of times a day, etc. etc.

themusicman ,

But it would hit a different place every time… Most developers wouldn’t even consider checking for this, and the chance of getting a repro in a debugger is slim to none

PrettyFlyForAFatGuy ,

you’d be surprised what slips through review

sunbeam60 ,

Yeah but even a single automated test would catch it and reject the PR. You just need a single test.

frezik ,

No, you can’t assume that. The probability of hitting the condition each time is low. If there aren’t very many calls that hit this, it could easily slip through. Especially on 64-bit int platforms.

sunbeam60 ,

Yes agree if you’re talking about unit tests. I’m thinking smoke tests, which is are the most common automated tests in games, where I’ve spent most of professional career. The amount of booleans checks that happen in a single frame I doubt the game wouldn’t crash within the first couple seconds.

steal_your_face , (edited )
@steal_your_face@lemmy.ml avatar

Write a 5 line PR and receive 5 comments. Write a 500 line PR and receive no comments.

autokludge ,
@autokludge@programming.dev avatar

lgtm

nephs ,

It works on my machine, most of the time.

grandkaiser ,

Attn: security team

Hi,

I think someone on Lemmy has hacked into every work environment I’ve ever coded in

ransomwarelettuce , (edited ) in Me after I got fired

That’s easy to find, now gremlins is a proper way to quit, but even then it would be easy to fix with git by reverting a commit.

tkk13909 ,

That’s why you gotta slip it in with a very large commit so they don’t know what they’re looking for and don’t want to revert the changes.

lseif ,

or somehow commit it a year prior to leaving, and add a current_time > when_i_leave

tkk13909 ,

Now THAT would be evil!

AceFuzzLord , in Me after I got fired

I hope I learn some day how to code a bug in python that will not show up in any error messages and absolutely ruins a program. I’d love to find a random program at whatever job I end up at and before quitting just ruin it with a random line of code that doesn’t output an error code.

stembolts ,

It’s not hard to do. What would be hard would be getting it through code review. Like the example provided… how would that ever get through code review for a merge? Must not be a well-protected code base?

maynarkh ,

Publish your own package to PyPI that on import does some evil stuff. Name the package something similar to a known, but not too well known package. Supply chain attacks are even less defended against than other stuff.

All this relies on companies being shit though, but well, we all know that’s the case in a lot of places.

MotoAsh ,

Yea… pipeline and dependency auditing isn’t trivial if you want to catch the subtle stuff. Even most of the devs that know how to do it are going to respond with, “above my pay grade…” unless they’re somehow actually getting paid enough to be arsed to do it correctly…

MotoAsh ,

Logical errors are an entire domain of programmer troubleshooting. All you’ll have to do is attempt to learn programming, and you WILL write something that throws no errors, performs terribly, and confuses you for hours.

We all do. It’s almost a badge of honor to push past a few of them.

Hell, sometimes it happens when no one has made an error but a particular mix of data or odd arrangement of hardware it ends up running on hits an undiscovered edge case that buggers things up.

philm ,

Easy, it’s just… continue programming in python. (large codebases are a mess in python…)

More seriously: Don’t do that, it’ll only create headaches for your fellow colleagues and will not really hit those (hard) that likely deserve this.

deur ,

What the hell? Thats not funny or anything it just fucks with your ex-coworkers who probably werent the problem, management isnt affected by that.

Pro tip, you seem really arrogant these days and you need to tone that down before you enter the industry. Its nothing to be ashamed of and I’m not trying to insult you, you just assume your experiences are way more universally valid than they are.

lseif ,

learn C and u will get undefined behaviour for free :)

Stumblinbear ,
@Stumblinbear@pawb.social avatar

That’s just called malware

PoolloverNathan ,

<span style="font-weight:bold;color:#a71d5d;">import </span><span style="color:#323232;">os
</span><span style="color:#323232;">os._exit(</span><span style="color:#0086b3;">2</span><span style="color:#323232;">)
</span>
AAA ,

If you’re thinking about rage quitting a job you don’t even have yet, maybe take a different career from the beginning?

What the hell.

cm0002 , in We are not same

I don’t think that will have the impact people think it will, maybe at first, but eventually it’ll just start treating “wrong” code as a negative and reference it as a “how NOT to do things” lmao

Nighed ,
@Nighed@sffa.community avatar

It needs to understand that that code is bad to be able to do that though

cm0002 ,

For sure, but just like that whole “poison our pictures” from artists thing, the people building these models (be it a company or researchers or even hobbyists) are going to start modifying the training process so that the AI model can recognize bad code. And that’s assuming it doesn’t already, I think without that capability from the getgo the current models would be a lot worse at what they generate than they are as is lmao

FaceDeer ,
@FaceDeer@kbin.social avatar

That's just a matter of properly tagging the training data, which AI trainers need to do regardless.

alexdeathway , in What's stopping you from coding like this ?
@alexdeathway@programming.dev avatar

probably not having enough money to replace the laptop.

bruhduh , in What's stopping you from coding like this ?
@bruhduh@lemmy.world avatar

c/fullshrimp

perviouslyiner , in Me after I got fired

define it as ( LINE % 10) so that the problem goes away when you add a debug statement

CodexArcanum ,

Makes the error a little too frequent, but does obscure any performance penalty and is some truly evil genius work!

perviouslyiner ,
jettrscga , (edited )
Mad_Punda ,

Or just both

Prunebutt ,

Can someone ELI5 what this does?

AdlachGyfiawn ,
@AdlachGyfiawn@lemmygrad.ml avatar

Every tenth line, this would evaluate to False, while on lines that aren’t multiples of ten, it would evaluate to True.

yggdar ,

That exact version will end up making “true” false any time it appears on a line number that is divisible by 10.

During the compilation, “true” would be replaced by that statement and within the statement, “LINE” would be replaced by the line number of the current line. So at runtime, you end up witb the line number modulo 10 (%10). In C, something is true if its value is not 0. So for e.g., lines 4, 17, 116, 39, it ends up being true. For line numbers that can be divided by 10, the result is zero, and thus false.

In reality the compiler would optimise that modulo operation away and pre-calculate the result during compilation.

The original version constantly behaves differently at runtime, this version would always give the same result… Unless you change any line and recompile.

The original version is also super likely to be actually true. This version would be false very often. You could reduce the likelihood by increasing the 10, but you can’t make it too high or it will never be triggered.

One downside compared to the original version is that the value of “true” can be 10 different things (anything between 0 and 9), so you would get a lot more weird behaviour since “1 == true” would not always be true.

A slightly more consistent version would be


<span style="color:#323232;">((__LINE__ % 10) > 0)
</span>
BananaOnionJuice ,
@BananaOnionJuice@lemmy.dbzer0.com avatar

If the error is too frequent it will be hunted down very fast, what you want is errors that happen no more than once every month, maybe add another level that ensures this only triggers based on the running time.

BaumGeist ,

The original version constantly behaves differently at runtime

It actually doesn’t, since rand() is deterministic.

When no seed value is specified, rand() is automatically seeded with 1 at the initial call within any program It then uses the previous output as seed for the next, so it will always have the same output sequence

yggdar ,

That is true, but from a human perspective it can still seem non-deterministic! The behaviour of the program as a whole will be deterministic, if all inputs are always the same, in the same order, and without multithreading. On the other hand, a specific function call that is executed multiple times with the same input may occasionally give a different result.

Most programs also have input that changes between executions. Hence you may get the same input record, but at a different place in the execution. Thus you can get a different result for the same record as well.

ImplyingImplications ,

__ LINE __ is a preprocessor macro. It will be replaced with the line number it is written on when the code is compiled. Macros aren’t processed when debugging. So the code will be skipped during debug but appear in the compiled program, meaning the program will work fine during debug but occasionally not work after compile.

“__ LINE __ % 10” returns 0 if the line number is divisible by 10 and non-zero if not. 0 is considered false and non-zero is considered true.

is also macro. In this case, it will replace all instances of “true” with something that will only sometimes evaluate to true when the program is compiled.

tunawasherepoo ,
@tunawasherepoo@iusearchlinux.fyi avatar

__LINE__ returns the line of code its on, and % 10 means “remainder 10.” Examples:


<span style="color:#323232;">1 % 10 == 1
</span><span style="color:#323232;">...
</span><span style="color:#323232;">8 % 10 == 8
</span><span style="color:#323232;">9 % 10 == 9
</span><span style="color:#323232;">10 % 10 == 0 <-- loops back to 0
</span><span style="color:#323232;">11 % 10 == 1
</span><span style="color:#323232;">12 % 10 == 2
</span><span style="color:#323232;">...
</span><span style="color:#323232;">19 % 10 == 9
</span><span style="color:#323232;">20 % 10 == 0
</span><span style="color:#323232;">21 % 10 == 1
</span>

In code, 0 means false and 1 (and 2, 3, 4, …) means true.

So, if on line 10, you say:


<span style="font-weight:bold;color:#a71d5d;">int</span><span style="color:#323232;"> dont_delete_database </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#0086b3;">true</span><span style="color:#323232;">;
</span>

then it will expand to:


<span style="font-weight:bold;color:#a71d5d;">int</span><span style="color:#323232;"> dont_delete_database </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#323232;">( </span><span style="color:#0086b3;">10 </span><span style="font-weight:bold;color:#a71d5d;">% </span><span style="color:#0086b3;">10 </span><span style="color:#323232;">);
</span><span style="font-style:italic;color:#969896;">// 10 % 10 == 0 which means false
</span><span style="font-style:italic;color:#969896;">// database dies...
</span>

if you add a line before it, so that the code moves to line 11, then suddenly it works:


<span style="font-style:italic;color:#969896;">// THIS COMMENT PREVENTS DATABASE FROM DYING
</span><span style="font-weight:bold;color:#a71d5d;">int</span><span style="color:#323232;"> dont_delete_database </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#323232;">( </span><span style="color:#0086b3;">11 </span><span style="font-weight:bold;color:#a71d5d;">% </span><span style="color:#0086b3;">10 </span><span style="color:#323232;">);
</span><span style="font-style:italic;color:#969896;">// 11 % 10 == 1, which means true
</span>
BaumGeist ,

A lot of these replies have high hopes for 5 year olds

IphtashuFitz ,

Decades ago I had to debug a random crash. It only happened on Wednesdays. On Wednesdays in September. On Wednesdays in September after the 10th…

perviouslyiner ,

only when your coordinates were within a train depot in Poland?

www.youtube.com/watch?v=XrlrbfGZo2k

  • All
  • Subscribed
  • Moderated
  • Favorites
  • [email protected]
  • random
  • lifeLocal
  • goranko
  • All magazines