The nerdy jokes thread (bonus original title mode!)



  • You just know some smart kid is going to interpret the first one inclusively. :)



  • You just know some dumb adult is going to interpret the second one exclusively. 😄



  • Thank you~
    /me takes a 🍪 and a 🍫.



  • You just know when someone's a computer programmer by the way they organise their sentences specifically to avoid such confusion.


  • Discourse touched me in a no-no place

    @Captain said:

    The point being that you can't prove these Godel statements because they're not true in every model. The universe of mathematics is richer than was previously thought.

    One of the key consequences is that the set of all possible disjoint axioms (let's ignore putting in things that are derivable from other, already-admitted axioms) is not finite. Which I've thought was a tremendously cool thing for quite some time.


    Proving that a program terminates can be deeply non-trivial. Consider a program (assuming you've got bignum math implemented) that searches for a value which disproves Goldbach's conjecture. It should be trivial to show that it is type-correct, but really hard to prove that it either terminates or doesn't terminate, as that is dependent on an unsolved problem in mathematics. (The Wikipedia page indicates that if you are going search, you might as well start at 4×1018…)

    Type theories only address some kinds of ways in which programs fail, even when working with systems that are much more sophisticated than are normally used for programming. The problem is that the more detail you have in the type theory, the more time you spend satisfying the theory instead of actually working on the algorithm itself. (I have worked with code that induced a richer theory over the integers via a Galois Connection — essentially, each decision point in the program would impose a partition in the type-space and you'd also split things according to what they necessarily did and what the potentially did — but it was a total PITA for much beyond trivial stuff. Even for something as trivial as a hailstorm sequence, the amount of work involved was horrid.)



  • If compile-time optimizations could figure out the results of the program for all possible inputs, then we wouldn't need compilers because all the possible programs would already be compiled by that point. (assuming compilers are still programs and not some higher lifeform or something)



  • @ben_lubar said:

    (assuming compilers are still programs and not some higher lifeform or something)

    For some time now, I've been certain that the end of humanity, if by AI, will not be at the hands of some military skynet or vengeful basilisk, rather, it will be an advanced analysis module within GCC, trying to enable the ultimate optimization.


  • BINNED

    @Buddy said:

    For some time now, I've been certain that the end of humanity, if by AI, will not be at the hands of some military skynet or vengeful basilisk, rather, it will be an advanced analysis module within GCC, trying to enable the ultimate optimization.

    And any potential remnants of the species will refer to the event as The last -Wall.


  • Discourse touched me in a no-no place

    @ben_lubar said:

    If compile-time optimizations could figure out the results of the program for all possible inputs

    There's a significant proportion of programs where you don't want that. Most services are almost entirely dependent on being not 100% predictable.


  • ♿ (Parody)

    @Onyx said:

    And any potential remnants of the species will refer to the event as The last -Wall.

    Proof that @chubertdev was wrong.



  • The problem is that the more detail you have in the type theory, the more time you spend satisfying the theory instead of actually working on the algorithm itself.

    I think it's still a net time saving. Just yesterday, I spent like 5 hours trying to figure out why some JavaScript was silently failing. It was because I forgot to put in a ().

    That said, there are diminishing returns. You want your types to be a sketch of your model, not the whole model. That makes it easy to validate the types' correctness.

    (I have worked with code that induced a richer theory over the integers via a Galois Connection — essentially, each decision point in the program would impose a partition in the type-space and you'd also split things according to what they necessarily did and what the potentially did — but it was a total PITA for much beyond trivial stuff. Even for something as trivial as a hailstorm sequence, the amount of work involved was horrid.)

    What language was this in? A Galois connection is just an adjoint functor between posets. What kind of interface to the functor were you working with?



  • @boomzilla said:

    Proof that @chubertdev was wrong.

    Wait, why? What did I miss?


  • ♿ (Parody)

    @chubertdev said:

    Wait, why? What did I miss?

    @Onyx said:

    And any potential remnants of the species will refer to the event as The last -Wall.

    Of course, the non-funny discussion continued below.



  • Oh, got it. Necroing the funny?


  • ♿ (Parody)

    Probably better than funnying the necro.



  • @boomzilla said:

    Probably better than funnying the necro.

    Dickcorpse strikes again.


  • BINNED

    @Arantor said:

    Dickcorpse strikes again.

    Just don't blame me for it!



  • What happens to Anonymous agents who are found to not be who they didn't say they were?
    They get redoxed.


  • Discourse touched me in a no-no place

    @Captain said:

    What language was this in? A Galois connection is just an adjoint functor between posets. What kind of interface to the functor were you working with?

    The analysis code was implemented in SML, but the language being analysed was one designed for hardware synthesis (so we had constructively finite types, and absolutely no recursion). The rest of the system was a mix of Java and Tcl (because only an idiot would willingly code a GUI in Java, then or now; wait, that's a small part of what I do…). It was all around 15 years ago, so I'd do things differently now.


  • Discourse touched me in a no-no place

    @Captain said:

    Just yesterday, I spent like 5 hours trying to figure out why some JavaScript was silently failing. It was because I forgot to put in a ().

    OK, that beats today's fail for me, where I spent 30 minutes trying to figure out why a generated download URL wasn't working in a browser only to realise eventually that I'd put the wrong value in a config file. Derp.



  • I just spent about half an hour debugging this code:

    void CASW_Alien::LookupBurrowActivities()
    {
    	if ( m_iszUnburrowActivityName == NULL_STRING )
    	{
    		m_UnburrowActivity = (Activity) ACT_BURROW_OUT;
    	}
    	else
    	{
    		m_UnburrowActivity = (Activity) LookupActivity( STRING( m_iszUnburrowActivityName ) );
    		if ( m_UnburrowActivity == ACT_INVALID )
    		{
    			Warning( "Unknown unburrow activity %s", STRING( m_iszUnburrowActivityName ) );
    			if ( m_hSpawner.Get() )
    			{
    				Warning( "  Spawner is: %d %s at %f %f %f\n", m_hSpawner->entindex(), m_hSpawner->GetDebugName(), VectorExpand( m_hSpawner->GetAbsOrigin() ) );
    			}
    			m_UnburrowActivity = (Activity) ACT_BURROW_OUT;
    		}
    	}
    
    	if ( m_iszUnburrowIdleActivityName == NULL_STRING )
    	{
    		m_UnburrowIdleActivity = (Activity) ACT_BURROW_IDLE;
    	}
    	else
    	{
    		m_UnburrowIdleActivity = (Activity) LookupActivity( STRING( m_iszUnburrowIdleActivityName ) );
    		if ( m_UnburrowActivity == ACT_INVALID )
    		{
    			Warning( "Unknown unburrow idle activity %s", STRING( m_iszUnburrowIdleActivityName ) );
    			if ( m_hSpawner.Get() )
    			{
    				Warning( "  Spawner is: %d %s at %f %f %f\n", m_hSpawner->entindex(), m_hSpawner->GetDebugName(), VectorExpand( m_hSpawner->GetAbsOrigin() ) );
    			}
    			m_UnburrowIdleActivity = (Activity) ACT_BURROW_IDLE;
    		}
    	}
    }
    

    Let's see who can spot the bug first.


  • Discourse touched me in a no-no place

    @ben_lubar said:

    Warning( " Spawner is: %d %s at %f %f %f\n", m_hSpawner->entindex(), m_hSpawner->GetDebugName(), VectorExpand( m_hSpawner->GetAbsOrigin() ) );

    What language? Looks almost C++ (and /raw/ supports that) , but I see 5 format specifiers and only 3 parameters - Does VectorExpand() serve as 3 parameters or is that the problem (in that it doesn't)?



  • VectorExpand(foo) is a macro for (foo).x, (foo).y, (foo).z to save precious source code bytes for debugging code.


  • Discourse touched me in a no-no place

    Then, I suggest - for the sanity of the person coming across that code in 6 months - that a similar macro should be used to replace the three %f's in the format string...


  • Discourse touched me in a no-no place

    		m_UnburrowIdleActivity = (Activity) LookupActivity( STRING( m_iszUnburrowIdleActivityName ) );
    		if ( m_UnburrowActivity == ACT_INVALID )
    

    if ( m_UnburrowIdleActivity == ACT_INVALID ), no?



  • You found it! @PJH wins!

    And this code has been like that since the game's release in 2010.


  • Discourse touched me in a no-no place

    Long variable names making code readable FTW!



  • But now we're back here:

    @chubertdev said:

    Welp, the funny in this thread is dead.



  • MOAR FUNNEH! plz?


  • ♿ (Parody)

    @chubertdev said:

    But now we're back here:

    You were just ahead of your time, I guess.



  • @dkf said:

    the language being analysed was one designed for hardware synthesis

    Verilog or VHDL?



  • Or Esterel?



  • @Buddy said:

    Or Esterel?

    TIL. Never heard of it before. I mostly work with SystemVerilog these days.


  • Discourse touched me in a no-no place

    @HardwareGeek said:

    Verilog or VHDL?

    Nope.

    @Buddy said:

    Or Esterel?

    Not that either.

    It was our own custom language designed specifically to support synthesis of unclocked logic. Everything was done with asynchronous self-timed processing units. Not a big hit, but not actually WTFy.



  • @Buddy said:

    For some time now, I've been certain that the end of humanity, if by AI, will not be at the hands of some military skynet or vengeful basilisk, rather, it will be an advanced analysis module within GCC, trying to enable the ultimate optimization.

    Are you referring to the Cybermen?



  • @dkf said:

    It was our own custom language designed specifically to support synthesis of unclocked logic. Everything was done with asynchronous self-timed processing units.

    I can see why you might want to write a specialized synthesizer for that, but I don't understand the need for your own language. What constructs did you need that were missing from the standard languages? How long ago was this? Was it before Verilog and VHDL became popular/standardized? More fundamentally, why asynchronous self-timed logic? That's way out of the mainstream of modern hardware design; some would even say it's crazy.


  • BINNED

    @abarker said:

    Are you referring to the Cybermen?

    Cybermen don't "optimize", they "upgrade". Eh, close enough I guess.



  • @Onyx said:

    Cybermen don't "optimize", they "upgrade". Eh, close enough I guess.

    I thought so, too. And don't forget the "Delete" option.



  • A programmer went to the horse races, and indulged in a spot of gambling. Fellow race watchers became increasingly intrigued as the day went on and the programmer exulted in victory on every race, heading to the book keepers to collect his winnings each time. "YES!" he would exclaim as each race ended with a win for him, his fellow punters began to think he had something going on. As the wins racked up, one of them plucked up the courage to ask "How do you keep winning mate?" the programmer looked at him with a sly smile "I have a system!" and then trotted off to the book keepers to collect his winnings once more. Eventually the day's races were over, and he had a perfect record, 6 races, 6 wins.

    The next day, the regulars were surprised to see him back at the track, and even more surprised that he kept winning race after race. after half the races were done, and he was still maintaining his streak, others were sufficiently interested that they were asking to get in on his system. Unfortunately, the programmer was steadfast "I can't give this secret away... I am testing the results from my new gambling application, you can pre-order it if you like!" He would cheerily give them the details to buy his software suite, and the pre-orders started rolling in.

    As time went by, and news of the programmer's success spread, the rate of pre-orders started rocketing up. People saw the programmer winning race after race, no one had ever seen him fail to cash in at the book keepers in any race since he had first appeared. The system worked, and everyone wanted in.

    So it was, with much fanfare, that the programmer broke 1 million pre-orders, then 2 million. Then 3. Milestone after milestone of pre-order counts fell, and the application was eagerly awaited by the paying public, eager to hang the book-keepers out to dry, now that it seemed that the shoe was on the other foot.

    With great pomp and ceremony, a release date was finally announced, pre-orders spiked as it became clear that the application's price would double on release, and the pre-order price was a special discount. the release date loomed, and still the programmer was claiming his payout race after race, without fail. Each win helped encourage the pre-orders, and the eagerly awaited system was the talk of the betting community. Everybody who was serious about wasting their money knew about the system, and they all had their pre-orders. It was going to turn the betting world on it's head, everyone knew it.

    finally, the release date rolled around, and the application was released. Everyone eagerly downloaded it, and looked to get in on the success as quick as possible.

    To everyone's dismay, the system would let them pick a race, and then make it's betting recommendations. The recommendations were to bet on every single horse, in every single race. In a shocking revelation, it became very clear that the developer had cashed out on every race, because he had bet on every single horse in every single race. He couldn't fail to claim a prize, even if it was significantly less than he bet in the first place. So it was that the pre-order customers were outraged.

    "The system does exactly what I said, it emulates my success!" the programmer replied to his outraged customers. "I never told anyone that I was winning more than I was spending!". Following the press-conference, the programmer hopped into his shiny new Jaguar, and drove away with a roar of overpriced unnecessary engine noise. Programmer

    The programmer had made a fortune from the lack of thorough investigation on the part of the betting community, and had taken all of them for as long a ride as the betting shops themselves. Even the most cynical gamblers had been taken in, having carefully measured the statistical significance of the seemingly impossibly long winning streak.

    Eventually, everything boiled over. There were riots in betting shops by furious gamblers demanding their money back, but the programmer was nowhere to be found. Anger spread and innocent software houses were burned to the ground in retribution for the programmer's trickery. Software professionals were murdered in the streets. Once proud system architects were assassinated. an IED was triggered on silicon roundabout. Sir Clive Sinclair was publicly executed by vigilantes, and even the holiest of holies, the Alan Turing statue was smashed, and the replica of colossus destroyed.

    In a final bid to find the programmer responsible, the outraged gamblers rounded up all software professionals that had not already been brutally murdered, and tied them to stakes above a huge pile of software manuals (each one only 1/4 of a page long, since no one writes documentation, but together they made a pyre large enough to burn hundreds), ready to burn them alive, if he did not show himself. This last ditch attempt at rooting out the cowardly programmer proved successful. HE arrived, on the back of a white horse, clad in full armour, with a mighty sword at his hip. "I have come to stop this madness" he declared, as he dismounted. and he walked to the pyre and climbed the mountain of software manuals. Without a word, he drew his sword and held it aloft "Hear me gamblers! I have led you astray, and fooled you out of your money in a foul and devious ploy, verily it has made me a wealthy gentleman, and for that I offer no apology! I am here today to do one thing, and one thing alone! I am here to utter to all of you the sacred words passed down from generation to generation in my family, from many hundreds of years ago. I am here to say these words, as my father told me the must be said, as his father told him, and his father was told before. I say unto you now, as has been foretold for many hundreds of years. The great message of our age:"

    And so it was that the programmer spake, and the words he spake did fall on the attentive ear of all those around, who were shocked and amazed at their form and meaning...

    "LOL THX NOOBS GOT UR MNY NOW KKTHXBYE GG LOL YOU GOT BM'D"

    and with that, he stripped out of his armour, bent down, and took a huge dump on the pyre, and ran away.

    The onlookers, too stunned to pursue him, just stood there in confusion, trying to comprehend the situation they now found themselves in. Then, getting a grip of themselves, they lit the software manuals, and burned all the remaining pogrammers to death. Their screams audible over the sound of the mob chanting "die programmers die!", and the smell of their charring flesh mixing with the smell of the burning turd left by the one programmer they had truly sought, and failed to apprehend.

    Then, the alarm went off, and the world winked out of existence as he opened his eyes. He reached out and shut off the alarm, before turning to the camera and saying triumphantly "TURNS OUT IT WAS A DREAM.... ALL ALONG!"

    with that said, M Night Shrewsbury Bypass got up, got dressed, and went out to make another terrible film where it turns out the donkey was a functioning alcoholic with racial prejudices all along.

    PLOT TWISTS



  • +1 would read again


  • BINNED

    NOOOO! I expected a sequel where the programmer has to save the world because all the shitty VB apps running in financial institutions started crashing, and he's the only programmer alive so he has to fix it...



























    ... by using Excel!



  • it would be called "diehard vb 6.0: Please, for the love of god die and set us free from your tyranny"



  • Needs more shaggy dogs.


    Filed under: and then john was a zombie



  • Don't give Bruce another reason to come out of retirement.


  • BINNED

    @Arantor said:

    Don't give Bruce another reason to come out of retirement.

    Does he need one? After all isn't he RED? And RED2?



  • @Luhmann said:

    Does he need one? After all isn't he RED? And RED2?

    Yes, yes he is. But that's still no excuse for Die Hard 6th Sense


  • BINNED

    @Arantor said:

    Die Hard 6th Sense

    Hmmm I think that would give some great one-liners. Add a few explosions, a heist going wrong, at least 1 babe and you're all settled for a blockbuster.



  • @Luhmann said:

    Hmmm I think that would give some great one-liners. Add a few explosions, a heist going wrong, at least 1 babe and you're all settled for a blockbuster.

    Get michael bay and one night in shyamalan to direct it, it will turn out that the 2 hours of explosions were actually Daniel Day Lewis method acting ALL ALONG!



  • @algorythmics said:

    Get michael bay and one night in shyamalan to direct it, it will turn out that the 2 hours of explosions were actually Daniel Day Lewis method acting ALL ALONG!

    You know M Night Shalamalallamaman directed The Sixth Sense, right?



  • No, I didn't know that.

    ITS A MIGHTY NIGHTLITE SILMARILLION PLOT TWIST! IT TURNS OUT THAT MARTINI NEOLITHIC SHARAPOVA DIRECTED EVERY FILM WITH A PLOT TWIST... ALL ALONG!

    .
    .
    .

    secondary plot twist, it turns out, I DID KNOW THAT! ALL ALONG! I have studied long under the tutelage of Microsoft .NIGHT Shamework. I know the secrets of this trade.

    I am going to do this joke to death, just like microbial nitrifying surge did with plot twists.


Log in to reply