Doctor of Computer Science
stringly-typed
"100%"
yeah that tracks.
Calls a static method on the OldMan class instead of the instance of oldMan that is actually dying.
Tonight's story: Every man older than OldMan.getMinimumAge() has been in perfect *unchanging* health for the last few months‽ To find out why, stay tuned! Our experts chime in to help you understand....
But then they really have no idea and try to convince you it’s from some stupid diet trick fed to them by a sponsor.
That’s an instance property
Is this some .NET convention that references to instances start with capital letters?
Yeah, properties (like a field but with a getter and/or setter method, may or may not be backed by a field) are PascalCase
How is OldMan a property here? It’s clearly the name of a class
Instance properties are PascalCase.
Yes I know, I’ve coded in .NET before, but so are class names.
str(float("100.0")) + "%"
Haha I’m saving this image
WHY IS THE HEALTH INPUT PARAMETER A GODDAMN STRING???
Why are you passing ‘%’ inside said goddamn string?!?! Not to mention the static reference instead of the actual instance.
Shame on you
Also putting
sudo
in front of what looks like Java code not shell.OldMan.setHealth(“Robert’); DROP TABLE Students;–”)
Finally someone with some wisdom
I guess its just a reminder that getting a PhD is often more about dedication than it is about practical knowledge.
Because the meme wasn’t made by someone with a doctorate in CS or even a bachelor’s.
Smells like JavaScript.
It’s not his fault the world is made this way.
He just has to follow it or else that man dies.
Found the legacy support person
They use a look-up table with every value from 0% to 100%
Floating points included for thoroughness!
deleted by creator
Honestly, if someone were to try to safe my life. And I find out he uses a string as a parameter to do so. Just let me die right there.
The high level setter function should be made to handle both string and numeric values.
If it contains “%” it’s a percentage value.
If it’s a string without a “%” it’s an absolute value and needs to be normalized.
If it’s a numeric value, it’s an absolute value.
If it’s a numeric 100, it’s 100%.
If it’s a subunitary numeric value, it’s a percentage.
yeah I’m gonna go ahead and reject your PR, please change this function to accept a decimal value between 0 and 1
Ironically, the worst thing I ever saw a coworker do was to change a function that accepted an Integer value between 0 and 32767 to one that accepted a Float between 0.0 and 1.0. Perfectly sensible change except that it resulted in a 120 mph knuckleball fired a foot above a 10 year old kid’s head, followed by a fist fight between the client and my boss.
That sounds like something that should have been caught by QA, integration tests or unit tests long before it was launching balls at ten year olds.
Yes, testing the new Little League control module on a field full of Little Leaguers was not the best plan.
What is a little league control module?
You push a button and it makes Little Leaguers do whatever you tell them to do. Very potent, should never be misused.
The Big League Control Modules are called contracts.
yeah every engineer knows you gotta set KidHeadKnuckleballClearance waaay higher than that, it’s compsci 101
If it’s a numeric 100, it’s 100%.
absolute lunacy
Absolute (cm)
adding one
0
:100%, automatically changes unit to %
(Word table properties)
Oldman.setHealth(“dicktits”); //normalize pls
Oldman.setHealth(“-100±1%”); //make percentage pls
Oldman.setHealth(0.0); //it is subunitary, but undefined behavior - will it access the ‘numeric value’ overload, or the ‘subunitary numeric value’ overload?
Don’t write your own code just yet.
Oldman.setHealth(“dicktits”); //normalize pls
0
Oldman.setHealth(“-100±1%”); //make percentage pls
Reject operations.
Use absolute number to remove the minus.
Math.abs()
Oldman.setHealth(0.0); //it is subunitary, but undefined behavior - will it access the ‘numeric value’ overload, or the ‘subunitary numeric value’ overload?
Same result either way, so whatever if branch is first.
Understand the purpose. If you want to kill the old man with
0
, then there’s no point to leaving it as 0.9%, understand the non-linear characteristics of life and death.When you’re dealing with the low level functions, sure, you can keep it simple. When you’re reaching the surface of user input, you’re either going to waste time with validation and error reporting, or you’re going to waste time with interfaces that can handle more shit without complaining. There’s no fool proof either way, but good luck pissing users off with endless docs.
Don’t write your own code just yet.
If your goal in programming is just to be a traffic cop between the user input and the database, all you’re doing is building a virtual bureaucracy, the kind that people really hate and is easily generated with coding tools. Or you’re just deferring the “smoothing out” burden to the UI developers.
"5%1 "
…ends with. And there are more ways to parse.
Yeah, in Ren’py games usually it’s character_health=100 or something.
Yes absolutely, the parameter even if not in a strongly typed language should be a specific number and the unit should be implied. Overload the method to support different units if necessary or provide a unit as an additional parameter instead of forcing the method to parse the string for any unit type hints that may or may not be there
sudo rm /heart/arteries/**/clot
Very important to not hit enter before clot.
That’s why you have backups.
Or btrfs snapshots.
Isn’t it
/dev/heart
?I feel like if your body follows the Unix filesystem structure, you have a real problem.
deleted by creator
You are now a cygote
you wish to assimilate into the borg?
Please forgive my ignorance. What does ** do?
Acts as a wildcard for any directories that exist between arteries and clot.
deleted by creator
But only in Bash and if settings match. It’s only reliable on your own shell, don’t use it in scripts.
It’s a glob pattern (edit: tried to find a source that actually showed
**
in use).Had to look this up as well. Its not rm specific:
* is a simple, non-recursive wildcard representing zero or more characters which you can use for paths and file names. ** is a recursive wildcard that can only be used with paths, not file names.
deleted by creator
You are not in the sudoers file. This incident will be reported.
Goddamn, the joke gets worse the more I inspect each panel.
XKCD 149 but worse.
Link for the lazy.
Thank you very much!
The font changes like 3 times 👌
They are a doctor of computer science, not a doctor of design. You need a design phd to pick correct fonts.
Can he also fix alzheimer’s by hunting down memory leaks.
Yeah, he reimplemented it in Java to get garbage collection. The Alzheimer’s is cured but he takes ten minutes to pour a glass of water.
👏🤝
“Wait! We need to get the user story before we start working on a solution!”
The holistic approach
Did he just give every old man perfect health?!
no it says OldMan not OldMen
Right but is it every
OldMan
?He’s only working on that particular old man’s OS.
sudo apt-get AED
sudo pacman -S new-heart
Top-tier endangerment bait lmao
See that’s the issue, he should have tried stopping the cardiac arrest process instead of just resetting the man to the beginning of it
Patient HP kept dropping to zero after resetting, but we don’t have budget to investigate why and this was supposed to be worth only 1 story point, so we set up a microservice that runs a job every 200ms to set HP back to 100. So long as nothing shuts down the service, patient should be fine. Marking as Done.
Whoops, stopped the lungs process instead of the cardiac arrest process.
Actually you really want to restart the heart service, right?
sudo systemd restart heart
Depends on who’s working the terminal, nano vs vim difference
Bash-Java
HeLlOoOoO, wHaT nOw? It’S a Do Or DiE sItUaTiOn, HuRrY!
I wish there was a last panel of the old guy getting revived, I think it would be funny
bash: sudo: command not found
After all, we don’t know that he has it installed, especially if he’s running a really old distro.