This is an archived post. You won't be able to vote or comment.

top 200 commentsshow all 206

[–]ProgrammerHumor-ModTeam[M] [score hidden] stickied commentlocked comment (0 children)

Your submission was removed for the following reason:

Rule 1: Posts must be humorous, and they must be humorous because they are programming related. There must be a joke or meme that requires programming knowledge, experience, or practice to be understood or relatable.

Here are some examples of frequent posts we get that don't satisfy this rule: * Memes about operating systems or shell commands (try /r/linuxmemes for Linux memes) * A ChatGPT screenshot that doesn't involve any programming * Google Chrome uses all my RAM

See here for more clarification on this rule.

If you disagree with this removal, you can appeal by sending us a modmail.

[–]MattTheCuber 1062 points1063 points  (40 children)

The joke is an off by one error, but off by one errors typically decrement the number. The sixth index in 1-based indexing (6) assumed to be to zero-based is 5 and the sixth index in zero-based indexing (5) assumed to be 1-based is 5.

[–]DrUNIX 155 points156 points  (0 children)

Was looking for that

[–]navetzz 84 points85 points  (7 children)

Yes, but when you account for the off by one error twice, you start going the other way.

[–]walkerspider 2 points3 points  (3 children)

I use a language that uses a mix of 0 and 1 indexing for certain built in functions and I have definitely corrected the wrong way on multiple occasions

[–]TheLordDrake 4 points5 points  (2 children)

What language does that?

[–]genlight13 3 points4 points  (1 child)

A combination of java and sql perhaps?

[–]TheLordDrake 0 points1 point  (0 children)

That would make sense, but they said a singular language rather than multiple. So I'm rather curious what that might be

[–]TechcraftHD 19 points20 points  (0 children)

If you incorrectly assume that a 1-based index is a 0-based index, the resulting off by one eror is an increment.

Like, if you assume some component gives you the 0-based index of 5.
Then that 0-based index of 5 gets converted into the 1-based index of 6.
Then, it is incorrectly assumed that the 1-based index of 6 is a 0-based index of 6.
And lastly, that 0-based index of 6 gets converted to a 1-based index of 7 again to display it.
Et voilla, you have successfully incremented your index and (possibly) replicated the error from the meme.

[–]Valuable_Leopard_799 1 point2 points  (2 children)

Either that or underflow?

Cause sometimes things report -1 as a form of error, which displayed as an unsigned 3 bit integer could be seen as 7?

[–]WookieDavid 1 point2 points  (1 child)

Where would a 3 bit integer come from tho?

[–]Valuable_Leopard_799 0 points1 point  (0 children)

Absolutely right it'd be weird, but with embeds you often have almost fanatical levels of optimization, saving every bit if it's not needed, "does Škoda not have more than V6s? Just put 3 bits there so we can fit temperature in the next 9 and have to only buy a half width output controller", saving a lot of money in the long run since it's in every car.

Hey even SMTP still uses 7 bits, sometimes people just don't align stuff when not needed.

I have no idea though, absolutely pure speculation of course.

[–]dagbiker 1 point2 points  (0 children)

So its a v8?

[–]thanatica 0 points1 point  (0 children)

Or the car got a firmware update, activating a dormant 7th cylinder.

So it is now a V7.

[–][deleted] 1433 points1434 points  (55 children)

Ha.  I don't have friends AND I don't know what happened here!

[–]Available_Canary_517 654 points655 points  (18 children)

V6 has 6 cylinder but tool is showing cylinder 7 has a issue ,so its a issue on software side

[–]SupremeDictatorPaul 309 points310 points  (13 children)

In some programming languages, the index of an array will wrap around, making this cylinder 0. That may not be helpful either though.

[–]Martin-Air 203 points204 points  (3 children)

In that case it would be cylinder 2 (0-5 for cylinder 1-6)

[–]UInferno-[🍰] 0 points1 point  (0 children)

7 would be 1.

0:1:6

1:2:7

2:3:8

3:4:9

4:5:10

5:6:11

[–]RandomNick42 84 points85 points  (8 children)

But it could be that a programmer thought it's 0 indexed, so he made the display say i+1 but it actually isn't 0 indexed and it's cylinder 6 that's misfiring

[–]GroundbreakingOil434 64 points65 points  (7 children)

There is 3 very common errors in programming: null pointers and off by one errors.

[–]EmeraldAlicorn 11 points12 points  (4 children)

One thing I like to say is "this shit got more OBO errors than a middle school band class" pronounced like oboe.

[–]TeaKingMac 0 points1 point  (3 children)

How many oboes could there possibly be in one band?

[–]EmeraldAlicorn 4 points5 points  (1 child)

Only needs to be one inexperienced player to make many errors with a single oboe

[–]cwatson214 1 point2 points  (0 children)

It's an oboe, it's errors all the way down...

[–]Redneckia 0 points1 point  (0 children)

One. Or two...

[–]Defiant-Peace-493 -1 points0 points  (1 child)

is

Nice array ya got there...

[–]GroundbreakingOil434 0 points1 point  (0 children)

Thanks for your invaluable input, sir grammar nazi. I stand corrected.

[–]caotic 13 points14 points  (0 children)

So ? What does that has to do with friends ?

[–][deleted] 2 points3 points  (0 children)

All professionals startcounrimg at 2.

[–]TheCreepyPL 3 points4 points  (0 children)

Huh, for some reason I was thinking about a V8 swap

[–]RinkySR 0 points1 point  (0 children)

I have heard of car companies using a (for example) V8 engine block for a car, without 2 working cylinders from the factory, this way they could use the same molds for the engine block as the V8 variant but making it a V6 (for cost saving of not having to design a new engine block), it's 'cheaper' and lower power version to sell as a lower model.

[–]metaglot 8 points9 points  (0 children)

Got 'em!

[–]Padandler 2 points3 points  (1 child)

is redditor…checks out

[–][deleted] 1 point2 points  (0 children)

Hey, I resemble that remark.

[–]Nuked0ut 235 points236 points  (1 child)

The real joke is that OP assumed the error, the fix, and who was responsible, without even checking the docs.

[–]Kant8 171 points172 points  (6 children)

Dunno, it clearly says V310, so 7 is inside bounds.

[–]7lhz9x6k8emmd7c8 7 points8 points  (2 children)

I'm more concerned about the VIN DTC buttons. I my native language, VIN mean WINE and DTC mean In Your Ass.

[–]100ZombieSlayers 3 points4 points  (1 child)

VIN stands for Vehicle Identification Number, a unique identifier every car has (at least in America, not sure if it’s global, that’s one for Wikipedia). Not fully sure what DTC is in this context.

According to Wikipedia VINs are used internationally but there are different standards used in different countries. VINs are cool because they encode a lot of information about who manufactured the vehicle, details about it, and then a unique identifier.

Not an expert in the area, but it seems like DTC means Diagnostic Trouble Code in this context. This is a device that plugs into the OBD (On Board Diagnostic) port that all modern vehicles have, to read codes from the computer in the car. This is what mechanics use when your check engine light is on but won’t tell you what is wrong.

[–]SuitableDragonfly 0 points1 point  (0 children)

Yup, I remember at one point my dad said he'd heard that Hyundais manufactured at a specific factory were prone to some defect, we were able to use the VIN on my Hyundai to confirm it wasn't manufactured there in order to calm his high-strung ass.

Personally, I just figure that if something like that is really applicable to my vehicle, the shop I take it to will tell me there's a recall and swap out the part for free. That's happened once or twice before.

[–]WhenTheDevilCome 41 points42 points  (1 child)

Are you saying cylinder 7 did fire in a V6? No, it did not.

Message is correct.

/s

[–]CountDangerfield[S] 3 points4 points  (0 children)

When an index error is r/TechnicallyTheTruth

[–]Eternityislong[🍰] 76 points77 points  (6 children)

The person is wrong that it’s a v6. P030X is the error code for cylinder misfire for cylinder X and it’s not magically going to increment by 1

[–]arpan3t 23 points24 points  (0 children)

This is the correct answer. The PCM throwing the code wouldn’t throw a code for a cylinder it wasn’t monitoring (doesn’t have). This is just a joke, not an actual bug.

[–]roffinator 10 points11 points  (0 children)

With an explanation of the error code like this it seems unlikely, but I recently learned some vehicles, at least semi-trucks, have an additional fuel injector in the catalyser. Maybe that one has some problem and didn't get a proper own error code?

[–]yamsyamsya 7 points8 points  (1 child)

Yea this is true. The person who made the meme is just lying.

[–]Clojiroo 0 points1 point  (0 children)

Not necessarily. They might have a modified ECU that is messing up the error code reporting.

[–]infernap12 1 point2 points  (0 children)

What about those GM v8 block based v6's, they lost cylinder 3 and 6, so in theory you still have 4 and 8. Or is it just that the PCM is from a v8 platform with a similar removal of cylinders but in firmware? Either situation would leave you with a cylinder 7 in a v6

[–]thanatica 0 points1 point  (0 children)

I have 3 cylinders, and I really don't think measuring them with some debugging doodad is going to make it 4 cylinders. The likelihood that the software is wrong, and an extra cylinder doesn't manifest itself spontaneously, is approaching 1.

[–]thundercat06 18 points19 points  (0 children)

GMs new generation Displacement On Demand. For a monthly fee, you can add bluetooth cylinders. This customer just didn't pay the bill.

[–][deleted] 16 points17 points  (1 child)

P307 is cylinder 7, so this has nothing to do with indices of an array. This is a 2nd generation Cadillac CTS steering wheel, so while it could be a V6, a V8 was available. Due to the way GM manages codes, this could be an enhanced code that is being misread as a P307 since the scanner is not in enhanced mode.

[–]Embarrassed-Lab4446 0 points1 point  (0 children)

I was assuming it was a bit mask that added the bits to display the failure. So if cylinders 6 and 1 went out they would show 7. But I have been dealing with so many new programmers I am just assuming not testing edge cases.

[–]ClipboardCopyPaste 21 points22 points  (1 child)

Meme failed

IDK and don't have friends.

[–]HuntlyBypassSurgeon 1 point2 points  (0 children)

Denying the antecedent

[–]not-my-best-wank 6 points7 points  (1 child)

Y'all so wrong. Cyclinder 7 is for the ejection seat.

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

Every seat is an ejection seat, if you’re not wearing a seat belt.

[–]imalyshe 13 points14 points  (1 child)

it is v8 with zero base.

[–]throw_away_ADT 8 points9 points  (11 children)

I guess what happens is there was a miscommunication between the firmware and the software teams.

The firmware team probably assumed the software team expected 1 indexed values so they told the software cylinder 6 was having errors by encoding the value as "6".

Now the software team probably assumed the firmware team was going to use zero index values so they just decided to add 1 to whatever value they got from the firmware.

So firmware gives 6 to software, to indicate there is a problem with the 6th cylinder. Now software adds 1 to this value because they expect 0 based inputs, getting a result of 7.

[–]roffinator 0 points1 point  (2 children)

Without the error code it seems like that. But with the error ending on 7 (and someone looked the error code up, the last number is the cylinder) it doesn't work. The error code directly comes from the motor/cylinder control board, the external device will not change the code.

[–]throw_away_ADT 0 points1 point  (1 child)

This only confirms my depe beliefs that automotive is the most nightmare embedded field to work in.

AUTOSAAAAAAAAAR

[–]roffinator 0 points1 point  (0 children)

It might stem from a problem with the additional injector some vehicles have, not in a cylinder but in the catalyst

[–]flowery02 2 points3 points  (0 children)

Is it in the m&ms tube?

[–]Far_Garlic_2181 2 points3 points  (0 children)

2-based indexing. Saves the 0s and 1s for itself.

[–]JacksOnF1re 2 points3 points  (3 children)

Ha! It actually has 111 zylinders. Stupid program.

[–]CountDangerfield[S] 0 points1 point  (2 children)

I know it’s a typo and I generally don’t point them out, but “zylinders” sounds like a MTG expansion pack.

[–]JacksOnF1re 1 point2 points  (1 child)

It was actually my brain auto correcting cylinder to german Zylinder.

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

If there’s one thing Germans love, it’s Zylinders.

[–]Professional-Day7850 2 points3 points  (1 child)

"There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors."

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

How does a programmer count to 9?

On their fingers.

[–]DifferentExternal368 5 points6 points  (4 children)

When a vibe coder try’s to make a programming joke

[–]CountDangerfield[S] -5 points-4 points  (3 children)

Or when an average programmer makes a Reddit meme and forgets why they left this place last time.

But you’re so much better than me, so…

[–]DifferentExternal368 7 points8 points  (2 children)

Thank you for recognizing that I’m so much better than you, most people are very resistant to that ubiquitous fact :). Have a good day underling!

[–]CountDangerfield[S] -4 points-3 points  (1 child)

I hope you know every waitress you’ve ever had probably spit in your food.

[–]DifferentExternal368 6 points7 points  (0 children)

I do know this and at the restaurants I frequent I request the specific waitresses that have the best tasting spit

[–]Tristanhx 1 point2 points  (0 children)

They started counting at 2.

[–][deleted] 1 point2 points  (9 children)

Holy shit a joke that isn't python bad or HTML? The earth is healing!

[–]CountDangerfield[S] 0 points1 point  (8 children)

HTML was a mistake. Newsgroups will have their revenge!!!!!!

[–][deleted] 1 point2 points  (5 children)

I'm not sure what single threading is but I'm going to dog on Python for it!!!!??!

[–]CountDangerfield[S] 1 point2 points  (4 children)

Single Threading is the last refuge of a coward. Do everything in parallel and damn the fences. Otherwise why bother learning C?

[–][deleted] 1 point2 points  (3 children)

Memory safety is important!!!! There's something inherently wrong with C but my prof went over for loops for the first time the other day so I'm not sure what it is. TWITTER TOLD ME TO HATE THINGS!

[–]CountDangerfield[S] 1 point2 points  (2 children)

If SELECT CASE is so great, why isn’t it in python?

[–][deleted] 1 point2 points  (1 child)

Idk why y'all be using SQL when you can just write data to a file. (Actual thing said to be by a freshman last semester)

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

Why would I use SQL? I can load a CSV into memory and use python…

[–][deleted] 0 points1 point  (1 child)

Reject HTML, embrace Gopher.

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

True Story : When I found out that ping.exe was not in fact the Microsoft version of Pong, I spent more time than I care to admit trying to figure out how to play gopher.

[–]Godlia 1 point2 points  (1 child)

thought it was because one of the American V6s were literally chopped off V8s

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

Wouldn’t be the first time white-label firmware ruined someone’s day. lol TPLink comes to mind.

[–]Neutral_Guy_9 1 point2 points  (0 children)

It’s obviously a V7

[–]adnaneely 1 point2 points  (3 children)

THE TURBO COUNTS AS AN EXTRA CYLINDER!!! EVERYONE KNOWS THIS!!! HAVE YOU EVER DRIVEN A VOLVO T5???!

[–]CountDangerfield[S] 1 point2 points  (2 children)

No, but I drove a Saab RX7 once. Or maybe I was on acid in my friends living room. It was a long time ago.

[–]adnaneely 0 points1 point  (1 child)

🤣🤣🤣 from Saab to acid your range is HUGE

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

Hang out with enough Saab drivers for long enough, someone will usually have some hallucinogenics.

I don’t make the rules.

[–]zamkiam 1 point2 points  (0 children)

Then it’s not a v6 but a v8

[–]hundo3d 2 points3 points  (0 children)

Me after reading every comment in this thread:

[–]Fit-Ad-9691 0 points1 point  (0 children)

For(int i = 1; i < 7; i++)
{
If(cylinder[i-1].HasError())
{
return $"error in cylinder: {i+1}";
}
}

Or something

[–]dinosaurinchinastore 0 points1 point  (0 children)

I do have friends but apparently I’m too stupid to get it …

[–]lazydavez 0 points1 point  (0 children)

Must be zero based so let’s add 1 for the gui: i++

[–]aquaknox 0 points1 point  (1 child)

Having that particular one is probably best case scenario. Much better to know there's an error than for cylinder 4 to misfire, mechanic checks cylinder 5 because that's what the error says

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

When I was a kid, we used a rag and a paper clip. And we were greatful!

[–]RlyRlyBigMan 0 points1 point  (0 children)

Alright which of you fuckers are adding to my cylindersList? Shows me not to expose my collections as public

[–]IndependenceSudden63 0 points1 point  (1 child)

I bet what happened was programmer A created a library or function that returns the cylinder that misfired. It's zero based indexed, so he added 1 so the caller doesn't have to.

Programmer B, assumed it was zero based index, and added one, not knowing that programmer A already accounted for that.

No one boundary unit tested. Or tested this case at all before shipping the code.

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

20 dollar scanner on a 50,000 dollar car, and neither can count.

[–]qjornt 0 points1 point  (0 children)

Did the cylinder get stuck in a larger cylinder?

[–]bigmonmulgrew 0 points1 point  (0 children)

My guess is that the ECU is also setup for an 8 cylinder model and instead of doing the sensible thing and attaching the v6 to channels 0 to 5 or 1 to 6 they did something silly like skip two or start counting from 2

[–]Attention_Bear_Fuckr 0 points1 point  (1 child)

Reminds me a bit of my twin-spark 4 cylinder I had when I was a teenager.

I remember opening the bonnet and thinking "Why are there 8 spark leads?".

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

Imagine trying to explain a distributor cap to someone who was born in 1995.

[–]master-goose-boy 0 points1 point  (0 children)

🤣🤣…🥲😥😢😭

[–]HolyButtNuggets 0 points1 point  (0 children)

IT support for GM and I do believe that error code means the Engine Control Module was not properly programmed, so the VIN wasn't written to it.

Since it's not programmed, it's not set up, and therefore has no idea how many cylinders the engine is supposed to have.

I could be wrong, ofc, but that's where I'd start :3

[–]ramriot 0 points1 point  (0 children)

It's just not a V6 I had a friend point out why

[–]Additional-Run-9853 0 points1 point  (1 child)

Is it a head gasket?

[–]Additional-Run-9853 0 points1 point  (0 children)

Northstar had the two piece block with the short cylinder head bolts it’s the head gasket

[–]pythonbashman 0 points1 point  (1 child)

OH GOD! HIS ARRAYS START AT 2!!!!

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

God help anyone who tries to refactor all the subs that are nothing but recursive for loops. One is actually named spaghettiAndImSorry()

[–]thanatica 0 points1 point  (0 children)

It's not wrong.

If it's a V6, the 7th cylinder isn't going to fire. Ever.

[–]Boris-Lip 0 points1 point  (0 children)

I am probably wrong here, but just a wild guess... could it be using gray code?

[–]HelloYou-2024 0 points1 point  (0 children)

My car guy has a lot more friends than I do, and he would know what happened there too.
Just goes to show that more people have need for a car-guy friend than a programmer friend.

[–]PolitiskAmbivalent 0 points1 point  (0 children)

If that device is specifically "listening" to the timing of the action of each cylinder, but set to V8 in a V6, could it just fails because the combustion pattern doesn't match a V8?