Details
-
AboutSoftware Developer
-
SkillsJavascript, React, Node.js, Express.js, HTML, CSS, SQL, Perl
-
LocationNew York
Joined devRant on 10/10/2020
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
-
We just had a server outage this morning and my colleague was heading to the office. He was already in a meeting on his phone and got stopped by the police for calling while driving.
He got a fine, lost his driving license for 2 weeks and has to go police court for it. That's an expensive server outage for him8 -
Every time you scroll past this without upvoting, a junior dev pushes straight to main, and a senior dev sighs in despair. Save the repo. Upvote.8
-
What’s the most frustrating bug you've ever encountered, and how did you finally fix it (or did you just give up and rewrite everything)?10
-
this crap is pasted on to the end of every ""migration" in the project. Migration in heavy quotes because they do everything and they are run by different tools according to different rules depending on where they are and whether certain words appear in the file name.4
-
dude1: Some man died from euthanasia.
dude2: He committed suicide?
dude1: No, he was killed by a gang of kids in China.
So I thought of this joke today so its definitely a work in progress. But then I wondered what happened with the suicide machine in Europe. So I found this horrifying account.
https://care.org.uk/news/2024/...
I mean, she got what she paid for...but...this is so fucked. I have seen a few discussions on this and there are complications to this account of what happened. I expect it will take months if not years to sort out what actually happened.
Imagine if it failed due to a dev bug? Who would want to work on such a machine? Seems so fucked.13 -
I had a suggestion a week ago. I was told to do a different (simpler) approach. The current approach doesn't work and I'm about to point out the problem basically means I've got to go do what I originally said.6
-
I haven't been on in a while because I got laid off two weeks ago. I made it three years and survived two layoffs. I'm relieved honestly; got a decent severance package. Technically I got an extra week of "PTO" where I still had access to two Slack rooms if I wanted to say goodbye to people.
I've taken two weeks to unwind. Time to update my cover sheet and get back into the flow of contacting old buddies to see what work is available.
I've been at it for over 20 years at this point: Java, Scala, Python, Ruby and even a couple of years of devops/sys admin. Let's see how bad the remote and local job markets suck now.9 -
Interviewer: Where do you see yourself in five years?
Candidate: Well, I checked your LinkedIn... and most employees leave in two years.
Interviewer: Uh... welcome to the team?" 😂 -
Consider,
```
namespace A;
macro m00 a,b;
··display a,b;
end macro;
macro m01 a;
··m00 a,$0A;
end macro;
m01 $24;
end namespace;
```
OUT: $0A24 ("$\n").
Ah, but you just HAD to fuck me in the ass, didncha fasm2? Initializing anal bleeding:
```
namespace B;
A.m01 $24;
end namespace;
```
OUT: illegal instruction 'm00'.
Explanation: macros carry no context, and so 'm00' is unreachable from 'B' namespace.
Could I maybe write a code-capture macro to generate a wrapper that resets the namespace? Yes, and in fact, I did; brilliant exercise in mystical mindfuckery.
But why try so hard? Just pass the fucking ref, like a MAN.
EXPLICIT CTX, BITCH.
```
define @CAS $non; current addressing space
define %ICE @CAS;
macro self:PA&; recursive macro, uuuh spooky-spooky
··match ice , %ICE;
····; self->proc(args)
····match =-=> proc (args) , PA;
······path.proc ice,args; pass ref and args
····; ^self->proc()
····else match =-=> proc () , PA;
······path.proc ice; pass ref only
····; ^sneaky sneaky. set current context when self ctx;
····else match cas , @CAS;
······%ICE equ cas.PA;
····end match;
··end match;
end macro;
```
ALL TOGETHER NOW
```
namespace A;
macro m00 ice,a,b;
··display a,b;
end macro;
macro m01 ice,a;
··self->m00(a,$0A); could also be 'ice.m00 ice,a,$0A' lmao
end macro;
end namespace;
namespace B;
self A; set ice
self->m01($24);
restore %ICE; back to previous
end namespace;
```
OUT: $0A24 ("$\n").
A-há, now **I** got you from behind motherfucker!
Final note: this is 100% perl DNA seeping through the cracks of my sanity and into a fresh fasm2 framework. Why? Dingle-dongle-jungle-berries, that's why. Also crack.
Have a nice wallop.45 -
is there some trendy definition for "keyboard pattern" that im unaware of?
seriously though... while not always current on whatever scammer\phisher\wannabe hackers\etc are doing... im still one hell of a, beyond capable, cyber security pro... mainly cuz I've been networking professionally since half-duplex existed, know, and thoroughly enjoy data architectures, encryption and things like hardware drivers and low level systems down to the literal, physical\mechanical and digital bits...
basically,i have a rare viewpoint in comprehension; I'm used to nonsensical tactics being enforced as if they were actually valid (basically everything other than a min length (~6+) and *don't use basic words found in a pocket dictionary* is typically a double edged sword).
so wtf do they mean? i mean, technically, everything typed can be a keyboard pattern... itd be like how people say "vps" when they are talking about a proxy.23 -
I am not a particularly vengeful one, but today I was, and everyday onwards I'll be turning it up a notch on recurrence. WTF is Kobenz talking about? Well, let me fill you in. For the worst part of 7 months I've been having my already fucked up hearing beaten to a pulp by the neighboring apartment's renovation works, sounds that would often balloon over 120dB, continuously. Last week the actual owner finally moved into their apartment and the sounds had stopped. Of course, i had spent every minute of my blight concocting vengeful schemes to get even. But while I was so full of think hatred and maliciousness, I, of course, let it all got. As i said, not a particularly vengeful individual, that I am not. Until yesterday that is, when the whole reformation crew was back here at 8am, banging my ears with those awful noises... So today, i woke up at 4am, set up my blender and my speakers, waited until 6am sharp and turned it all on, ALL of it. If today I hear even so much as a wisp of that deranged reformation noise, tomorrow at 5am I'll do it all over again. And every day from now on, I'll rinse and repeat it an hour earlier than before, speakers cranked up a notch above their previous noise, the blender running half hour longer than its previous running time and I'll add a new source of noise every single FUCKING DAY!6
-
President Musk, vice-president Trump, Sean “Puff Daddy” Combs, Harvey Winestein — THE 2025 team of STRONG LEADERS the world needs!
PARDON DIDDY
PARDON H.Weinstein
Trans rights is MENTAL DISORDER12 -
If fungi were able to evolve as fast as viruses do, Earth would’ve been called ᖃᓂᐅᔮᖅᐸᐃꙮᑦᑖᒻ ᔅᑳᑦ, fungi would’ve ruled it, and every other life form would’ve been put in their zoos.
Imagine: one huge fungus, a unified consciousness, the size of our planet.11 -
Yep, seems tots legit. Not a scam at all. Especially with that sexy email extension! Rrrrrraw! You go TikTok Recruitment Dept!!!!6
-
Was taking the garbage out. I had left a heavy creme carton sitting out as it was empty and the garbage was full. It had a slight bulge to it.
my thoughts: Hmmm... a bulging cream vessel...
This was a series of words I had not yet thought about before. It could have multiple meanings. Some more enjoyable than others.5 -
We had a series S Xbox. Somebody left a drink too close and I think it spilled inside. The series S no longer functions. My son has been bugging me for a few months to fix it. He is gone this week for a competition.
Last night I went to walmart at around 6pm. All the weirdos were already there. (so was I, what does that say?) Got heckled in the parking by some randos in a car. (honestly have no idea what they said because lazy asses don't even try to speak anything but inner city garbage) I looked toward them and looked away. Fuck that noise. Shit heads keep showing up in my town. (thanks California, you are leaking)
Anyway I get a series X and brought it home. I set it up where the older one was. Am not going to say a word. I named it: "Dad's XBox". Gonna see what the kids say when they all get back. I stood it on end so nobody can spill anything into it.
Looked through gamepass. Not that great a selection IMO. Noticed Starfield is there. It sucked so bad it will probably always be on gamepass. Trying to recoup lost revenue. I might try and see just how bad it is. I dunno. Would rather play a TES game. Gonna try Outer Worlds I think.
I think the charcoal series X actually looks cool. Seems to have cool features too. Like you can play a game on there on your phone or some shit. I think steam has that too. Wild.12 -
say what you want, but z-index: 99999 and z-index war in general means you’re an uneducated amateur.8
-
Third dick related injury on devrant in 2 weeks. I was walking and stepped on mine. I hate it when that happens. Its still black though.4
-
Week : 78 ( Year 1 )
What are the plans for the weekend?
What movie made you cry the first time you saw it?
Previous Week : https://devrant.com/rants/135372297 -
Conversation at work
Colleague 1: "Have you added it to our documentation system?"
Colleague 2: "Not yet."
Colleague 1: "The Sumerians created the first writing systems 5000 years ago, but sadly, not everyone got the memo."2 -
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