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
-
Things I didn't know existed, but now do because of devrant:
1 - calico dicks
2 - naughty trolling C devs that are girls
3 - dev elitists (actual elitists, not just trolls)
4 - superior German devs
5 - starving webdevs
6 - angular anger
7 - forum spam wars
8 - super shitters
9 - pedophile game devs who get banned
10 - you shouldn't say your mom to people because sometimes people's moms are dead21 -
A word on languages.
I really like C, did it since I'm 11 at school with some Pascal. Simple language, 32 reserved words (unlike COBOL ahem) and never wanted to change, just discover some new languages, never replace it.
I saw Rust in 2020, and it catched some of my time, like a year. It's not bad, but you feel strangled with rust. In C, I can walk on water, and my programs run in under a second with less than 100mb.
The syntax [Rust] is also hard and ugly.
So C won over Rust.
Then Go, in 2022. Better syntax than Rust, prettier code and it had a garbage collector ! Works easy. But still, C was better. Faster programs, I can do whatever I want.
Then I discovered Zig in 2023. It was cool bc I could cross-compile C and C++ alongside Zig. The Syntax (yeah third time I repeat it) was annoying. Like Rust. But I like the fact there is no memory-safe aspect in the language design.
So even now, I use C and sometimes Assembly (doing a bootloader for my [breadboard computer](https://github.com/3dgoose/65b02), I know there's no MarkDown in DevRant) for some lowlevel projects and god does it go fast : 50kO max for assembly and 10mb for C, with some amazing compile time ! In fact I did a program to estimate Pi with Montecarlo method in Rust and Python and it got 20 minutes for 10^10000000000000000000000000000000000 while C and Assembly got 70 second (I swear at this point).
The world now is preferring memory safe languages like Rust but if you know how to manage memory in C, why use Rust ?
Sorry for bad english, bye
I hate C++17 -
Every ticket I work on involves some nebulous, undocumented BS nobody can satisfactorily explain. And worse, even if it’s something I’ve already worked with before, it’s almost invariably different from the last time I saw it, so it’s still nebulous BS. It’s like I’m walking through Steven King’s Mist, except the bugs are more metaphorical.
Everything is spec’d out, except for the views, and half of the logic. But the rest is still technically covered because tests indirectly call the code, so that means it won’t crash right? 😅 Also, the tests that are there are also fucking nebulous, such as calling helper methods that are heavily abstracted, or that are written to test completely different things but kinda sorta work for this too if you set things up just right.
I’m going insane.3 -
One of the devs was let go after his probation period. Today was his last day. I didn't review a lot of his code, but it seemed to be fine. I'm not sure if his output was just slow.
Either he wasn't working out or the startup decided maybe they shouldn't have hired new people yet. There's been a freeze for a while and this guy started in October. The company's revenue targets keep slipping. Profitability was moved from 2026 to 2027.
We're on a slowly sinking ship.2 -
Got moved to higher prio project
- disastrous security
- Built with Knockout.js in 2016
- entire folders of business logic duplicated 3 times to allow for the business requirements of separate regional branches to evolve independently
- Application server in ASP.NET Core MVC but the *real* backend is a WCF service
- there is an outstanding ticket for a list view that fails to load because the API response exceeds the .NET serializer's maximum length. The proposed solution is to stream it down to the client which then collects it into a JS array and renders a DOM node for all 6k rows
- mgmt wants to scale up to the entire European region, not with a single installation but still with a single codebase
- the Germans want interactivity with Relay
- prod database copied around and cleaned to establish new environments, migrations lost to time
- read-only queries have a tendency to deadlock18 -
The most unrealistic deadline I got was the project must complete within 16 hours.
Setting: Freelance
Did I accept this? No
Client budget: 10 usd
What is the project? A iOS app which is the a combination of all LLM into one, like a clone of Poe. The API key must use my own because client refused to pay. I negotiate about the project, explain to him why this project, deadline and the budget is not aligned He said " Now everything can be done by using AI, why are yoh cheating me, i will report you" ( I was like report what?) I rejected the gig, then day's later my email junk folder is occupied with racist content and insulting me.
So yea. This is the whole story. This project is doable, just a wrapper. I don't mind if client will pay for all the API , the pay and dealings is logical.38 -
The third most significant world altering scenario after ww3 and climate catastrophe is deglobalization, with countries closing their borders and moving production inland. I analyzed everything, and France seems to be the best place to live if it happens. Here’s why:
- It’s a democracy with strong culture of political opposition
- Strong economy
- It produces its own military equipment: Leclerc tanks, Dassault Rafale/Mirage 2000 fighter jets (and others), Mistral battle ships
- It has a very strong army, including the infamous foreign legion
- It can make its own passenger jets
- It produces a lot of food — enough to sustain itself many times over
- Great climate diversity
- Sea
- Nuclear energy. When gas/oil-exporting states like russia and middle eastern countries stop exporting, nuclear energy will make all the difference in the world.
Every other country that can compete in those categories fail miserably in one of them:
- Germany is a good all-rounder as well, but is too dependent on importing fossil fuels
- USA has the strongest economy and military, but it’s very divided
- China has a lot of resources, including production and nuclear energy, but it’s a dictatorship
- Russia is a dictatorship too, and a disfunctional one. It’s bad at food production too
- Nordic states are way too cold, and they get too few sunny days — keeping your body healthy might be a challenge. Also, no growing food there
Am I missing something?39 -
I hate tech.
Trying to find a solution to problem in tech:
- 5 to 10 minutes searching for the correct terminology for the problem you are having.
- 5 to 10 minutes trying to find a solution.
- 5 to 10 minutes trying to find the correct terminology because the first terminology was wrong.
- 5 to 10 minutes finding the correct solution for your platform version.
- all the while dodging sketchy AI results
- Either you find a solution or you find it can't be fixed on your platform because X vendor is a POS.
So, this is not quite what happened today, but it pisses me off. I cannot imagine not being non-technical trying to use any platform this day and age.
I am trying to access data off of a backup. The data I want is in a user directory on a windows backup. I cannot get to user content because the user for the machine the backup came from is not known. I try with explorer and it says I need to elevate priv. So I do. It sits there and just spins icon doing nothing forever. The volume for viewing the backup is read only (actually a good idea, but annoying, can't change permissions).
So I remember that explorer artificially enforces permissions on folders. So I get Q-Dir which has worked in the past. So I get it installed and it fails to elevate privs. WTF! Everywhere I search I see no solution and shitty AI results. Then from the back of my mind I remember. Run Q-Dir as admin (which doesn't work on explorer due to artificial enforcement). So I do. It can access anything from the backup regardless of location.
WHY THE FUCK DO THESE BULLSHIT BARRIERS EXIST? It only causes frustration from users and locks people out of their data.
I hate technology.5 -
Saw someone complaining not enough dev rants.
I have a coworker who's a good friend. Got him this job. He has good output, smart kid, but our coding styles clash.
I believe in DevEx (since we write internal tools). He sees it as premature optimization.
Example:
He won't validate data from input we don't control because "it shouldn't change that much".
Results:
He codes fast, but delivers shit that breaks in production and others (me) have to fix.
It's frustrating.4 -
Hey, been gone a hot minute from devrant, so I thought I'd say hi to Demolishun, atheist, Lensflare, Root, kobenz, score, jestdotty, figoore, cafecortado, typosaurus, and the raft of other people I've met along the way and got to know somewhat.
All of you have been really good.
And while I'm here its time for maaaaaaaaath.
So I decided to horribly mutilate the concept of bloom filters.
If you don't know what that is, you take two random numbers, m, and p, both prime, where m < p, and it generate two numbers a and b, that output a function. That function is a hash.
Normally you'd have say five to ten different hashes.
A bloom filter lets you probabilistic-ally say whether you've seen something before, with no false negatives.
It lets you do this very space efficiently, with some caveats.
Each hash function should be uniformly distributed (any value input to it is likely to be mapped to any other value).
Then you interpret these output values as bit indexes.
So Hi might output [0, 1, 0, 0, 0]
while Hj outputs [0, 0, 0, 1, 0]
and Hk outputs [1, 0, 0, 0, 0]
producing [1, 1, 0, 1, 0]
And if your bloom filter has bits set in all those places, congratulations, you've seen that number before.
It's used by big companies like google to prevent re-indexing pages they've already seen, among other things.
Well I thought, what if instead of using it as a has-been-seen-before filter, we mangled its purpose until a square peg fit in a round hole?
Not long after I went and wrote a script that 1. generates data, 2. generates a hash function to encode it. 3. finds a hash function that reverses the encoding.
And it just works. Reversible hashes.
Of course you can't use it for compression strictly, not under normal circumstances, but these aren't normal circumstances.
The first thing I tried was finding a hash function h0, that predicts each subsequent value in a list given the previous value. This doesn't work because of hash collisions by default. A value like 731 might map to 64 in one place, and a later value might map to 453, so trying to invert the output to get the original sequence out would lead to branching. It occurs to me just now we might use a checkpointing system, with lookahead to see if a branch is the correct one, but I digress, I tried some other things first.
The next problem was 1. long sequences are slow to generate. I solved this by tuning the amount of iterations of the outer and inner loop. We find h0 first, and then h1 and put all the inputs through h0 to generate an intermediate list, and then put them through h1, and see if the output of h1 matches the original input. If it does, we return h0, and h1. It turns out it can take inordinate amounts of time if h0 lands on a hash function that doesn't play well with h1, so the next step was 2. adding an error margin. It turns out something fun happens, where if you allow a sequence generated by h1 (the decoder) to match *within* an error margin, under a certain error value, it'll find potential hash functions hn such that the outputs of h1 are *always* the same distance from their parent values in the original input to h0. This becomes our salt value k.
So our hash-function generate called encoder_decoder() or 'ed' (lol two letter functions), also calculates the k value and outputs that along with the hash functions for our data.
This is all well and good but what if we want to go further? With a few tweaks, along with taking output values, converting to binary, and left-padding each value with 0s, we can then calculate shannon entropy in its most essential form.
Turns out with tens of thousands of values (and tens of thousands of bits), the output of h1 with the salt, has a higher entropy than the original input. Meaning finding an h1 and h0 hash function for your data is equivalent to compression below the known shannon limit.
By how much?
Approximately 0.15%
Of course this doesn't factor in the five numbers you need, a0, and b0 to define h0, a1, and b1 to define h1, and the salt value, so it probably works out to the same. I'd like to see what the savings are with even larger sets though.
Next I said, well what if we COULD compress our data further?
What if all we needed were the numbers to define our hash functions, a starting value, a salt, and a number to represent 'depth'?
What if we could rearrange this system so we *could* use the starting value to represent n subsequent elements of our input x?
And thats what I did.
We break the input into blocks of 15-25 items, b/c thats the fastest to work with and find hashes for.
We then follow the math, to get a block which is
H0, H1, H2, H3, depth (how many items our 1st item will reproduce), & a starting value or 1stitem in this slice of our input.
x goes into h0, giving us y. y goes into h1 -> z, z into h2 -> y, y into h3, giving us back x.
The rest is in the image.
Anyway good to see you all again.26 -
Working on graphing points in a Cartesian space (4 quadrants). I am wondering why the software I am mimicking has the x axis going the wrong direction. I am absolutely certain the x axis went the other way. So I talk to my boss about it. He is like it went this way when he learned math. I am like wtf? This generation learned all new math? I look it up and realize it always went positive to the right. I slowly remember the things I graphed in the past. This shit didn't change.
I have been away from doing any real math so long I am starting to hallucinate axis the wrong way. WTF is this shit!? For like 2 to 3 minutes I was gaslighting my boss with my ignorance. He was gracious enough to let grandpa figure it out for himself. Thank you kind boss.
I can whirl beautiful interfaces and make efficient memory contraptions, but I can't remember how equations dance in the moonlight...10 -
AI can do fancy autocomplete and generate code from prompts but the fucking jetbrains IDE needs me to manually set the fucking SDK java version shit in 3 different places? I feel like I don't remember doing this toil in the past.
On the one hand I feel validated to find a slack thread of seniors and up also irritated, remarkign it's not intuitive, and asking about this , and thankful to see the 3 screenshots there.
Yes I'm salty as fuck6 -
In the light of the recent events.....
I've almost made my peace with the fact that I will probably be nicked in the upcoming few years, as well as many others trying to stay free and/or flee countries in conflict. I just hope it won't be too long and agonising.
Thanks to the miracle of the internet, I will still be alive there in a form of online profiles and my posts/rants here. Maybe retoor's dR-trained LLM will be able to mimic me well enough to trick you all I'm still out there :))
just some doom and gloom shower thoughts.. running circles in my head for years now.11 -
Yes, I am debugging a 37 year old (more than me) x86 ASM university code. What does it do ? GNU Autotools-like with a custom Make.
And I will be giving a course on them later so I need to learn the codebase by HEART to present it and compare it with GNU's
In fact assembly isn't that hard (especially x86), we're stigmatized and it influences us.
Jk I'm dying
Sorry for bad english7 -
I always felt a bit bad for scammers. That your life must suck so hard that you screw over people. But now i watched them working on YouTube and i don't feel bad for them at all anymore. First of all, trash people, the lowest of the lowest. Second - they show no mercy to their victims. And that shouting and stuff. Is that normal in India? If you do that to a Dutch, it won't engage a phone call with you at all. They start the phone calls in a fucked up way already.
Trash people.5 -
I just had the most confusing error ever where clang ast randomly replaced classes with just int in type signatures
...wat? I guess the class only has one int field so maybe there's a cpp rule that requires replacing classes with their only field or something?
But when I add other fields it doesn't change. Even if the class has no int fields, it's still replaced by int in the ast
....
Yeah turns out I had the definitions in the wrong order and clang just uses int for unknown types instead of... you know maybe raising a fucking error
Thanks clang...18 -
The year is 2025.
WSL2 still makes it a major, excruciating pain in the ass to expose a port over the network without having to look up the fucking command and think about the stupid cancerous networking model every time.
All I wanted to do was run some experiments with AI models on my gaming laptop using its GPU, and expose an API to my other laptop, having the latter as a client.
Guess I have to get fucking rid of Windows forever if I want a fucking usable computer.12 -
YOU KNOW WHAT I AM DONE WITH PR REVIEWS , LIKE WHY DO THEY EVEN EXIST THOSE mf's dont know anything aboutT how much I HAVE worked on MY CODE FOR THEM TO SAY can you make this function more descriptive bro its fucking getuserinput Wth do you want it like(GETUSERSSHITFROMTHEIR..nvm)Screw you Grammarly
AFTER their stinky a doble ss stops commenting LITERally I have made phaking changes in half of the CODE and what do I receive "LGTM" you m.. you look like you belong the african Sh..LGBTQ community YOU look LIKE YOU NEED SOME EVOLUTIONARY GLOWUP , STOP MAKING MY LIFE HELL, next PR I am merging it straight INTO his A double S , Love you grammarly5 -
Q: How do you know Xcode 16.2 is a mess?
A: The code it generates for a new project is rejected by the compiler.
You generate a framework project, and besides having to manually sign the damn thing (really, can't setup for success?), it won't compile and link due to some other obscure error IT generates.
/<pathToFramework>/<ProjectName>.framework: resource fork, Finder information, or similar detritus not allowed
Command CodeSign failed with a nonzero exit code
Yes, boys and girls, Xcode is broken right out of the gate on building a framework template it creates!
I'll tell you what is "detritus", it's Xcode. Hint to Xcode team: "Just Say NO" - Nancy Regan10 -
Some people have a very confusing way of communicating things…
And you need to painfully pull out of them every bit of information.
Colleague:
```
ITEM_ID <- only this will work
1200
1201
1300
1301
1400
1401
```
Me:
What does this list mean?
(I want to know if this is supposed to be a white list, but that doesn‘t make sense business wise)
Colleague:
*explains what the ITEM_ID means*
Me:
(Yeah I know what it means)
Are those ids in the list examples or the only possible values?
Colleague:
Yes, examples. But there are restrictions. Not all will work.
Me:
(Ok this is confusing again)
What are the restrictions?
Colleague:
*Explains the restrictions.*
(Those have nothing to do with the list)15 -