Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "true-pain"
-
Algorithm: from the Greek "algos" (pain) and rhythmos (repetition), we derive the true meaning of this word: REPEATED PAIN.
:D5 -
fork() can fail: this is important
Ah, fork(). The way processes make more processes. Well, one of them, anyway. It seems I have another story to tell about it.
It can fail. Got that? Are you taking this seriously? You should. fork can fail. Just like malloc, it can fail. Neither of them fail often, but when they do, you can't just ignore it. You have to do something intelligent about it.
People seem to know that fork will return 0 if you're the child and some positive number if you're the parent -- that number is the child's pid. They sock this number away and then use it later.
Guess what happens when you don't test for failure? Yep, that's right, you probably treat "-1" (fork's error result) as a pid.
That's the beginning of the pain. The true pain comes later when it's time to send a signal. Maybe you want to shut down a child process.
Do you kill(pid, signal)? Maybe you do kill(pid, 9).
Do you know what happens when pid is -1? You really should. It's Important. Yes, with a capital I.
...
...
...
Here, I'll paste from the kill(2) man page on my Linux box.
If pid equals -1, then sig is sent to every process for which the calling process has permission to send signals, except for process 1 (init), ...
See that? Killing "pid -1" is equivalent to massacring every other process you are permitted to signal. If you're root, that's probably everything. You live and init lives, but that's it. Everything else is gone gone gone.
Do you have code which manages processes? Have you ever found a machine totally dead except for the text console getty/login (which are respawned by init, naturally) and the process manager? Did you blame the oomkiller in the kernel?
It might not be the guilty party here. Go see if you killed -1.
Unix: just enough potholes and bear traps to keep an entire valley going.
Source: https://rachelbythebay.com/w/2014/...12 -
Python: I hate the way it uses True/False over true/false
Java: Static. Just fuck static. oh and System.out.println(), why the fuck did they make the basic print function so long to write.
C#: I despise the way the curly braces get automatically put under the function declaration rather than beside it since it's a language style thing.
C: the inability to declare vars in altho declaration of a forloop. Although I think C11 let's you do this.
Javascript: Fucking prototypes.
Coldfusion: it runs like an elephant. Slow and heavy.
Go: The way the compiler won't let you have unused variables/imports. Pain in the ass for testing.17 -
I've been lurking for a while but I had it up to here with these goddamned "js sucks" posts.
I'm not gonna deny js has severe design problems,
or that chromium is a motherfucking vampire
or that it's a goddamn pain in the ass to understand how to babel webpack + plugins correctly
that is all true.
the problem is that it's just a lazy damn circlejerk at this point where no learning is gained, with no outlook on any possible solution of these problems, let alone ANY type of actual collaboration to help the situation.
sometimes people don't even care to specify what is specifically wrong with js. It's just "js sucks" and that's it, farm ++.
slack is a ram hog, yes, yes, we know... WE KNOW.
every 5 days someone has to remind that!
is there any solution? why is it a ram hog? is electron the problem, or is the slack source code doing weird shit?
are there any lightweight alternatives to electron?
That's actual good conversation, but no, apparently it's impossible to drop the snarky tone for 2 seconds.
I think it's fine to point out defficiencies in applications, but it's not ok to shitpost on and on.
I would very ok with someone shitcomplaining about js is if they were doing something about it.
I'm still ok with people letting of some steam, I'm fine with people expressing frustration from direct work experience with js. I'm not ok with people and their ignorance and snarky comments and non helpfulness while comfortably laughing from their own camp of totally unrelated technologies.
Hearing sysadmins or people that code exclusively in c shit on js makes me feel my insides twirl.
Imagine I didn't do shit for linux, but I went around forums pointing out the defficiencies, like the lack of standards, and saying that mac is way better.
Or I if yapped on and on about openvpn and having an obscure as fuck api, meanwhile not doing a single fucking thing about it, or not even using it in a day to day basis.
do you hate slack's ram usage? me too and js isn't going anywhere in the next 5 years, so either do something or provide smart conversation, diagnosis of the problem or possible alternstives/solutions, otherwise stfu12 -
" I wish to have a job where I can sit all day and still have a salary " said the 9 years old me not really considering the consequences. 11 years old later, here I am with *a dream come true* along with a constantly killing back and knees pain at my 20's writing some java codes.4
-
At 20 I thought my life would be an adventure. At 30 it seems like it's a rerun.
The reality is that life is full of grey areas, "good guys and bad guys" on all sides of most issues, and the story and excitement eventually end.
sometimes getting old feels like becoming comfortable with being numb and mediocre.
you are not the star at the center of your own story.
there is no story. there is only today, and then tomorrow, and then the day after that for as long as they happen to go on.
I can see no greater meaning or purpose behind this circus.
people think in months, seasons, years. maybe some of you even have five year plans.
but for me, rome was yesterday. and every rome to come. thats how near it is. It is so close, it and so many times before and after it, I cannot explain the sensation.
and in the vast gulfs of time, I see the wars, the conflicts, the narratives, and they unfold like dust or scum swirling on a pond, mechanistic, telling stories about nothing, algae struggling over territory on a rock.
as clearly as day, I see it all.
I saw your birth, and I saw your death. Your pain, and your greatest joy. How is it possible to love a total stranger and know them intimately because of their shared humanity? And still.
And from afar, in the stillness, I can't help being detached from the world and its problems.
And when we die, it is as if the world dies with us. Because it is not the end of the world, but the death of our own.
Softly go mortals, gently to their gods, like flowers in the fading summer. Never grasping that the permanence of the true identity and the temporality of the spirit are as fundementally distinct as the permanence of say "the G note", against the brief sound it makes when touched.
Eh. forget it. Sentimentality is a curse sometimes.10 -
Everyone and their dog is making a game, so why can't I?
1. open world (check)
2. taking inspiration from metro and fallout (check)
3. on a map roughly the size of the u.s. (check)
So I thought what I'd do is pretend to be one of those deaf mutes. While also pretending to be a programmer. Sometimes you make believe
so hard that it comes true apparently.
For the main map I thought I'd automate laying down the base map before hand tweaking it. It's been a bit of a slog. Roughly 1 pixel per mile. (okay, 1973 by 1067). The u.s. is 3.1 million miles, this would work out to 2.1 million miles instead. Eh.
Wrote the script to filter out all the ocean pixels, based on the elevation map, and output the difference. Still had to edit around the shoreline but it sped things up a lot. Just attached the elevation map, because the actual one is an ugly cluster of death magenta to represent the ocean.
Consequence of filtering is, the shoreline is messy and not entirely representative of the u.s.
The preprocessing step also added a lot of in-land 'lakes' that don't exist in some areas, like death valley. Already expected that.
But the plus side is I now have map layers for both elevation and ecology biomes. Aligning them close enough so that the heightmap wasn't displaced, and didn't cut off the shoreline in the ecology layer (at export), was a royal pain, and as super finicky. But thankfully thats done.
Next step is to go through the ecology map, copy each key color, and write down the biome id, courtesy of the 2017 ecoregions project.
From there, I write down the primary landscape features (water, plants, trees, terrain roughness, etc), anything easy to convey.
Main thing I'm interested in is tree types, because those, as tiles, convey a lot more information about the hex terrain than anything else.
Once the biomes are marked, and the tree types are written, the next step is to assign a tile to each tree type, and each density level of mountains (flat, hills, mountains, snowcapped peaks, etc).
The reference ids, colors, and numbers on the map will simplify the process.
After that, I'll write an exporter with python, and dump to csv or another format.
Next steps are laying out the instances in the level editor, that'll act as the tiles in question.
Theres a few naive approaches:
Spawn all the relevant instances at startup, and load the corresponding tiles.
Or setup chunks of instances, enough to cover the camera, and a buffer surrounding the camera. As the camera moves, reconfigure the instances to match the streamed in tile data.
Instances here make sense, because if theres any simulation going on (and I'd like there to be), they can detect in event code, when they are in the invisible buffer around the camera but not yet visible, and be activated by the camera, or deactive themselves after leaving the camera and buffer's area.
The alternative is to let a global controller stream the data in, as a series of tile IDs, corresponding to the various tile sprites, and code global interaction like tile picking into a single event, which seems unwieldy and not at all manageable. I can see it turning into a giant switch case already.
So instances it is.
Actually, if I do 16^2 pixel chunks, it only works out to 124x68 chunks in all. A few thousand, mostly inactive chunks is pretty trivial, and simplifies spawning and serializing/deserializing.
All of this doesn't account for
* putting lakes back in that aren't present
* lots of islands and parts of shores that would typically have bays and parts that jut out, need reworked.
* great lakes need refinement and corrections
* elevation key map too blocky. Need a higher resolution one while reducing color count
This can be solved by introducing some noise into the elevations, varying say, within one standard div.
* mountains will still require refinement to individual state geography. Thats for later on
* shoreline is too smooth, and needs to be less straight-line and less blocky. less corners.
* rivers need added, not just large ones but smaller ones too
* available tree assets need to be matched, as best and fully as possible, to types of trees represented in biome data, so that even if I don't have an exact match, I can still place *something* thats native or looks close enough to what you would expect in a given biome.
Ponderosa pines vs white pines for example.
This also doesn't account for 1. major and minor roads, 2. artificial and natural attractions, 3. other major features people in any given state are familiar with. 4. named places, 5. infrastructure, 6. cities and buildings and towns.
Also I'm pretty sure I cut off part of florida.
Woops, sorry everglades.
Guess I'll just make it a death-zone from nuclear fallout.
Take that gators!5 -
Finally made some progress with the project that has been kicking my ass the past three or so months.
Also finally free from the migraines I've been having the last couple of days. First time in a week I'm not either nauseous, in pain or both.
Now I'm going to make grilled cheese sandwiches and watch some true crime youtube. -
When you don't have enough money for a Standing Desk , but can't bear the back pain , and can't bear not Coding
True Story :D1 -
Be me, get a consultant job, go to a supposedly great client that has fame of getting scouted by Google. (attn: I doubted all this shit before I started)
Learn the basics by a awesome mentor and trial/error stuff at the same time to get the hang of things, after that was done, I noticed there was no documentation whatsoever, code is spaghetti and your documentation, good luck!
Royal spaghetti, you can't make heads or tails of it, dev code in production, empty try/catch blocks, empty statements, if (true)... (incl. their core classes)
Keep in mind this is a multi milion dollar company...
Someone please understand my pain...6 -
No matter what I try, I cannot get sharp text on my work macbook. When I use my external display for my editor, all of the text is slightly blurry and a pain to read, especially the tiny text in the status bar, which is just a fuzzy mess.
Like, I know why mac fonts are "fuzzy" -- it uses subpixel rendering to attempt to stay true to the font's curves, whereas e.g. windows tries to snap those curves to the pixel grid. So, on macs, fonts look amazing when they're normal to large, but small font sizes are just yuck. Windows is the opposite: small fonts look crisp and clear, and normal-sized fonts look.. okay.
but why can't OSX just switch between subpixel and snapping based on font size? i'm tired of reading blurs! it makes my eyes blur!12 -
Setting up a single node Hadoop cluster. Then installing intellij idea, to find that it doesn't detect any installed jdk. Then uninstalled all jdks, and then reinstalled one, then Hadoop won't work. Now everything seems fine.
-
the worst part about studying networks is that I can't even say it's useless and that i won't use it in my life, because it's very not true. it's a pain, but god dammit I should know this shit7
-
rant == false && help == true
I usually don't like posting non rant stuff here but I need help.
How do you usually design your service communication class?
I am working on a mobile app which contains talking to a REST service, I usually put all network calls in one class. Down side if it becomes a big class it becomes a pain to maintain. Any thoughts?
For a backend service I usually go with Repository design and it is working out well for me. But for mobile Apps I'd like to see if there is a better approach4 -
Not a specific bug, but I always have that satisfactory feeling when I fix a bug inside a code like this:
1. Spaghetti af
2. Duplicated af
3. Heavy use of static fields instead of passing via callback when required
4. variable names like: textbox1 ..etc.
5. No comments
It is true that is a huge pain in the ass to deal with, but then I look at it as I was able to create something out of that mess, I mean all is mixed up nothing is clear, no clue where it starts and what caused it, but then I put the pieces together and end up with a solution of what I thought to be: It will never be solved when that mess is here.
Not an excuse for messed up code, I try fixing whenever possible, but hey, at least I did not run away and give up -
Aaaaarggghhh
Having to think about what and when to eat is such a fucking pain in the ass. I don't want to search for recipes. I don't want to think about nutrition. I don't want to count calories. I just want something to tell me exactly what to eat, when I should eat and what to buy. Same goes for workout routines. Just tell me what to do I'll do it. I want an autopilot for that sort of stuff so I don't have to ducking think about it anymore. It's such a giant waste of time to have to manually plan this shit through, I want to use my brain for other things like math or chemistry or Programming. In fact I don't even want to cook because I am alone and cooking for one person is so ducking pointless. I lost over 40kg in the last years. I learned my lesson, most things taste like shit now because I associate food with all the pain and depression that I had to overcome to achieve a normal weight and fit body. Food went from being a joy to being an annoying necessity. I got fit and I want to work out even more but I really don't want to think about this shit. The exercises and pain and hunger are all nothing but planning is my true enemy. It bores me to death, it's more painful than running until I break down I absolutely fucking hate it.
I am really close to start some kind of open source food planner where you can type in your goals ( weight loss, muscle gain etc.) In great detail with all kind of options ( vegetarian, vegan, allergies, budget, country where you live in for local recipes etc.) And it generates a food plan for you with exact details of where exactly to buy the ingredients how to cook them etc. No fancy Ui No bullshit ads for some kind of wonder drug nothing annoying. Something so easy that it can be used as an autopilot for ones fitness and life. Do what it says and you'll look decent, don't think about the rest. Having that would be so great and I could finally think about more important shit than this. Less overhead more time for things that can't be automated.
And Yes I know that this is exactly what a personal trainer would do, but I am not going to spend 600€ a month for someone to tell me exactly what to buy, what to eat and how to work out.23 -
This is so true, a pain in the arse not only for designers but devs too: https://youtube.com/watch/...1
-
Sure, languages with automatic conversion to truthy and falsy values can be a pain in the ass, but in languages without that feature you need to use foo != true to see whether foo is either false or null. How fucking ugly is that?9
-
Since regexes have been mentioned, I'll take this opportunity to make this one thing abundantly clear...
The chief weakness of C++ is not safety concerns but the ultradiarrheic verbosity proudly inherited by it's claimants and successors. See here, straight from reference pages, a basic example of substitution:
{
std::regex_replace(std::ostreambuf_iterator<char>(std::cout), text.begin(), text.end(), vowel_re, "*");
};
Not so bad, right? By which I mean, there's worse still. Now hold my sigils:
{
$text=~ s[$vowel_re][*]g;
say $text;
};
It may be true that people don't respect your intelligence, due in great part to the well-known argumentative proclivities typical of closeted visual basic enthusiasts that are deeply rooted within your innermost self, however no matter how oft-denigrated and disparaged for their shortcomings an individual is, they are still nonetheless physically capable of seeing that the line in question doesn't even exceed 32 characters. Else this wouldn't be a discussion of syntax, or semantics, but rather your ability to count, which would be a much more dire situation.
And now that I have degenerated any semblance of reason existing within this discussion in favor of shame and humiliation towards my enemies in a bid to assert dominance, I've honestly forgotten what my point even was, and no doubt, this will be used against me; truly, the most lethal of double-edged gambits.
In any case, may a razor-sharp serrated diamond obelisk violently penetrate your rear orifice with such excessive force and excruciating pain so as to render your nervous system henceforth inoperable from cheeks to the core, most cavernous depths of your asshole.
Forever yours,
I nevertheless like C++4 -
I'm in a big fat fucking stinking rut, as in progress on this project has absolutely stagnanted.
Gonna rubber face your duck now **UNZIPS** excepts I don't have zippers, as joggers are the one true way; fake Adidas til I fucking drop.
Brain damage aside, I understand both how I've layed out the data and what I'm supposed to do with it. We have a virtual machine, an array of instructions and arguments for a given process within it, and we need to walk this array and map values to registers.
We also need to spill values inside registers to stack, IF they are required at a further point within that block. This also isn't terribly complex. We simply look forward in the array and see if the value is an argument to any instruction that *needs* this value to be loaded (ie, within a register).
So this implies multiple iterations; we need to better understand how one particular value is used throughout an F before we can make a final decision on how many registers and stack space are actually needed for the whole block.
Here's where it gets tricky. If there's a call, we need to be certain that the symbol being invoked has already been fully processed. Besides the obvious fact that recursion fucks me up, there's another matter: say a private method gets invoked by another private method. We can take advantage of this, by which I mean, sacrilege incoming so put on this toga.
Looking at the output for C compilers, it would seem this is not done in practice, I would assume because it's a pain in the ass. But when you have the guarantee that F will only be called internally, as that's what "private" means, there's two ways it can go:
0. It's well below the 13-20 cycle threshold, so you inline the fucker. No suprises there.
1. It's a more involved affaire, and invoked in more than one place, so you don't inline it. Codesize matters.
Recursion and [1] are the big deal things holding me back. Not because it's too hard, like I said this is kindergarten level abstraction. I'm just slow and fanatical, which is how I prefer to spell "constant obsessive paranoid delusions". I can see the potential optimization I can pull here, so I'm stuck trying to figure it out.
Idea would be, handling the register allocation and stack spill for an internal-internal (or deep internal; what we like to call a "guts" method) in synchronization with the *calling* processes. This is, fundamentally, violating all conventions -- but so under the hood no one will notice.
Let me give you an example. If we were to pass some value to a function, expecting to mutate it and get a different value back, in a lot of cases it'd be stupid to make an implicit copy by using two registers, one for input and another for the output. Dude, it's one cycle. Multiply it by a million, say sixty times per second, for every time you __needlessly__ make a copy of a value that we've already stated is mutable.
Clearly unacceptable. This is, in the strictest sense, everywhere in every single codebase. Premature micro optimization is the root of all goodness, God is great and praiseworthy. So how do we go about it?
Answer is I know and I don't know. By which I mean to say, this very thing I've done by hand. Assembly is fun. Now the issue is teaching a calculator how to do it. Not so fun.
There is a dependency chain between processes, as I believe I've kind of alluded to. I'm trying to make decisions on the side of the caller depending on the details of the callee, which is why recursion is rawdogging my soul. This is the same situation, it's inverting the direction of one or more links in the dependency chain, which makes no fucking sense.
And yet it does.
Brain, explain yourself.
How do *you* handle this without crashing?
Brain?
<<ME STEWPED; BEEP-BOOP>>
Alright then, that was a useless attempt at fuckery. Let's have a nap then, maybe it'll come to me in the morning. That's what I've been saying to myself for almost a month now.
Perhaps it is a hardcoded fuk.1 -
In reply to this:
https://devrant.com/rants/260590/...
As a senior dev for over 13 years, I will break you point by point in the most realistic way, so you don't get in troubles for following internet boring paternal advices.
1) False. Being go-ahead, pro active and prone to learn is a good thing in most places.
This doesn't mean being an entitled asshole, but standing for yourself (don't get put down and used to do shit for others, or it will become the routine) and show good learning and exploration skills will definitely put you under a good light.
2)False. 2 things to check:
a) if the guy over you is an entitled asshole who thinkg you're going to steal his job and will try to sabotage you or not answer acting annoyed, or if it's a cool guy.
Choose wisely your questions and put them all togheter. Don't be that guy that fires questions in crumbles, one every 2 minutes.
Put them togheter and try to work out the obvious and what can be done through google or chatgpt by yourself. Then collect the hard ones for the experienced guy and ask them all at once. He's been put over you to help you.
3) Idiotic. NO.
Working code = good code. It's always been like this.
If you follow this idiotic advice you will annoy everyone.
The thing about renaming variables and crap it's called a standard. Most company will have a document with one if there is a need to follow it.
What remains are common programming conventions that everyone mostly follows.
Else you'll end up getting crazy at all the rules and small conventions and will start to do messy hot spaghetti code filled with syntactic sugar that no one likes, included yourself.
4)LMAO.
This mostly never happens (seniors send to juniors) in real life.
But it happens on the other side (junior code gets reviewed).
He must either be a crap programmer or stopped learning years ago(?)
5) This is absolutely true.
Programming is not a forgiving job if you're not honest.
Covering up mess in programming is mostly impossible, expecially when git and all that stuff with your name on it came out.
Be honest, admit your faults, ask if not sure.
Code is code, if it's wrong it won't work magically and sooner or later it will fire back.
6)Somewhat true, but it all depends on the deadline you're given and the complexity of the logic to be implemented.
If very complex you have to divide an conquer (usually)
7)LMAO, this one might be true for multi billionaire companies with thousand of employees.
Normal companies rarely do that because it's a waste of time. They pass knowledge by word or with concise documentation that later gets explained by seniors or TL's to the devs.
Try following this and as a junior:
1) you will have written shit docs and wasted time
2) you will come up to the devs at the deadline with half of the code done and them saying wtf who told you to do that
8) See? What an oxymoron ahahah
Look at point 3 of this guy than re-read this.
This alone should prove you that I'm right for everything else.
9) Half true.
Watch your ass. You need to understand what you're going to put yourself into.
If it's some unknown deep sea shit, with no documentations whatsoever you will end up with a sore ass and pulling your hair finding crumbles of code that make that unknown thing work.
Believe me and not him.
I have been there. To say one, I've been doing some high level project for using powerful RFID reading antennas for doing large warehouse inventory with high speed (instead of counting manually or scanning pieces, the put rfid tags inside the boxes and pass a scanner between shelves, reading all the inventory).
I had to deal with all the RFID protocol, the math behind radio waves (yes, knowing it will let you configure them more efficently and avoid conflicts), know a whole new SDK from them I've never used again (useless knowledge = time wasted and no resume worthy material for your next job) and so on.
It was a grueling, hair pulling, horrible experience that brought me nothing in return execpt the skill of accepting and embracing the pain of such experiences.
And I can go on with other stories. Horror Stories.
If it's something that is doable but it's complex, hard or just interesting, go for it. Expecially if the tech involved is something marketable.
10) Yes, and you can't stop learning, expecially now that AI will start to cover more and more of our work.4 -
Honestly I've had good luck, every single boss I've ever had has been great up until the most recent project manager (not people manager) at my latest consultant gig.
Guy was 60+, had the mindset that NOTHING can get done without a meeting, and that your ass in a seat is the most important metric of true productivity.
Coming from a mostly remote background with 50% travel, this was a huge pain in the neck to deal with for the last 2 months.
Luckily he's gone now (no one liked him...who would have thought). -
follow up from https://devrant.com/rants/2377758/...
As theKarlisK and Root stated "When it works it works beautifully, when it doesn't a bit of Google-fu finds a fix".
some issues I found in this journey:
- stuttering in some games, even using custom proton build(halo mcc)
- some titles are hard to even start(my RE7 D:)
- bluetooth with my dongle isn't good, takes to long to connect my xbox s controller, sometimes with doesn't even work at all. had to do a workaround in the first place to pair (but this is a problem with ubuntu, not linux gaming but had to mention it)
- games outside the proton ecosystem can be a pain in the ass to get working. LoL on lutris crashes 3 times at startup, don't wanna even try to install overwatch on lutris
- rbg software can be "hard" to find or the alternative is not that good. (got an alternative for mystic light but is just command line. did not found a logitech keyboard software :/, hadn't search hard enough )
pros:
- being able to game on linux is like a dream come true
- most of my steam games runs out of the box
- is linux
- is linux
but the issues are starting to bother me...5