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
Feed
All
Post Types
- Rants
- Jokes/Memes
- Questions
- Collabs
- devRant
- Random
- Undefined
Cancel
All
-
Holy shit! Just watched "Hardcore Henry". The most Cyberpunk thing I have ever seen. What a wild ride.
Warning, if you have issues with motion sickness then it is not recommended. I don't have issues, but some of the camera work really tested me.5 -
I have this impression that non-devs have this idea that you can ask for a developer to learn and implement a new technology with the same ease as ordering a Happy Meal.
Oh, you want me to learn a completely new technology, write very high quality, bug-minimal code, test it, document it, in a matter of hours?! Maybe senior devs can do this, but for me, it's like asking me to build software for NASA and guaranteeing it will work wonderfully without being given the time to thoroughly test it, design it or even think about it. Wooh, just code this as fast as possible and to industry standards quality!
Anyway... just another frustration.3 -
I accepted a nice offer by my current company.
Boss invited us to a nice dinner today for some planning and whatnot.
Was quite nice actually.
Definitely looking forward to the future atm...3 -
So there I was, maintaining our rock-solid Java 7 codebase, older than this Gen Z intern who still thinks floppy disks are 3D-printed save icons.
First day in, he’s like, “Bro, let’s rewrite this in Next.js! Microservices! Serverless! AI!”
Son, this code has been running longer than your TikTok attention span. It doesn’t need scaling, it needs to keep working.
But nooo, he wants TypeScript. He wants to Dockerize a Hello World. He saw a YouTube tutorial and now thinks Java is dead.
I asked, "Why do we need microservices?"
Silence. Blank stare. You could hear a single thread in our monolith peacefully executing a transaction.
Then he mumbled something about "scalability" and "modern architecture"—like we’re running a billion-dollar SaaS, not a POS that’s been happily running since the Nokia ringtone era.
Microservices? Buddy, our biggest spike is the Sunday brunch buffet reservations when the retirees remember they have grandkids. Sit down.7 -
Why do people who put camera's on always insist others must do so as well? I don't mind when it's a special meeting like a retro or some form of team building thing, but I cannot be assed during standup - that MFer is meant to be over after 10 minutes. You guys go on an hour-long tangent, while I'm busy writing code, chatting to people and getting shit done, do you really need to see me not paying attention to the issues with the PHP project that are there because client X did something stupid. I'm already rolling my eyes while listening right now. Also, I don't want to put a "good" shirt on for 20 minutes to an hour meeting.16
-
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.27 -
Yay, my bootloader/kernel now properly set's up long mode and successfully jumps to compiled 64-bit Rust code!9
-
Yep, seems tots legit. Not a scam at all. Especially with that sexy email extension! Rrrrrraw! You go TikTok Recruitment Dept!!!!6
-
This comic is completely generated by AI. Yes, the new image generator update in GPT-4o is insane! 🚀6
-
In Software Development, if you have a problem to solve, you break it down into smaller, easier-to-solve problems.
Does this always hold true? I imagine there are situations where you can't do this. I would need to see different perspectives.9 -
I'm half assing my job and my manager thinks micromanaging me is a good solution.
"Any junior engineer could try those things"
Yes. And then need help to make it actually work.
I'm slow because he's an asshole. I'm still better than anyone else.
Fuck him.2 -
I've just wasted 3 hours on this shit
Apparently when you use -device loader in qemu to load raw code into your vm and start executing it, qemu thinks that - actually - you didn't really want to execute from 0x00007c00. What you *really* wanted is to execute random fucking gibberish at 0xffff07c00
Yes qemu, that's *exactly* what I wanted!
*grumble* fckingpieceofshitsoftware *grumble*14 -
So uh, I haven't been here in a while.
Are there actual rants about dev topics anywhere or is it all schizoposting, AI and politics..?6 -
On the day of my birthday, both Skype and Boris Spassky, the chess grandmaster world champion, died. Our metamodernist timeline is so fucking weird2
-
What's the point of having a filter "Job not already seen" if the first one that appears are marked "You have already applied to this job" Indeed?3