Prime Reacts: Creating JSF#*!

  Рет қаралды 64,850

ThePrimeTime

ThePrimeTime

Жыл бұрын

Recorded live on twitch, GET IN
/ theprimeagen
MY MAIN YT CHANNEL: Has well edited engineering videos
/ theprimeagen
Discord
/ discord

Пікірлер: 126
@GameJunkiesChannel
@GameJunkiesChannel Жыл бұрын
Both of us watching vids at 1.5x ain't going to cut it!!!
@ThePrimeTimeagen
@ThePrimeTimeagen Жыл бұрын
yeah, i have since stopped doing that
@GameJunkiesChannel
@GameJunkiesChannel Жыл бұрын
@@ThePrimeTimeagen Luv the vids!
@catalinoprea5313
@catalinoprea5313 Жыл бұрын
:)))))
@VivekYadav-ds8oz
@VivekYadav-ds8oz Жыл бұрын
for some reason this reminds me of the TCP over TCP problem.
@ronniebasak96
@ronniebasak96 Жыл бұрын
2.25x
@heron619
@heron619 Жыл бұрын
Imagine having such a low level in depth understanding of a language that even Prime is impressed by it just to use it to create a meme JSF*ck compiler. What a flex!
@ThePrimeTimeagen
@ThePrimeTimeagen Жыл бұрын
such a flex
@theshermantanker7043
@theshermantanker7043 8 ай бұрын
Well, easily doable if you're bored enough to read the language specification
@godowskygodowsky1155
@godowskygodowsky1155 10 ай бұрын
In college, my systems professor once said, "If you're programming in a high-level language like C..." I forget what the context was or how that sentence ended, but those words will echo in my head until the day I die.
@goblincrimes8524
@goblincrimes8524 5 ай бұрын
Any language is high level if you program by switching individual bits on and off
@W0lfCL
@W0lfCL 2 ай бұрын
I bet ur college professor was an experienced computer scientist from 1970's-80's who coded in machine code, a, b and assembly Ofc C is high level for him
@VivBrodock
@VivBrodock 2 ай бұрын
did my man insert punch cards into his room sized computer?
@amr3162
@amr3162 Жыл бұрын
0:37 creating a slice of a string in V8 just creates a `SlicedString` object which is like a `string_view` it only contains reference to start and end. This actually leads to some funny and unexpected results like when you take a small slice of a 100mb string, the garbage collector in V8 is not able to collect the larger string because the SlicedString holds a reference to it.
@ThePrimeTimeagen
@ThePrimeTimeagen Жыл бұрын
that was my suspicion and i wish i would of said that because this comment would of been amazing!
@vytah
@vytah Жыл бұрын
@@ThePrimeTimeagen Fun fact: Java used to work like this until version 7 update 6, when it started to copy the substring into a new array. Yes, it was a change in a patch release, and yes, tons of code that relied on the previous behaviour suddenly started sporting quadratic performance instead of linear. According to the API, both behaviours are correct, so theoretically it was the API users' fault that they were relying on undocumented behaviour.
@fulconandroadcone9488
@fulconandroadcone9488 Жыл бұрын
When he asked the question I thought about and 15 seconds latter I thought, well how do you handle that in a garbage collector? Do you split the string in 3 parts so only one can be retained? How do you handle that? Ah well I guess they would do just a copy and have some parts of the string duplicate. Guess not.
@seannewell397
@seannewell397 Жыл бұрын
I love it when you realized about interpolated property access via indexing. Your brain aligned but your heart sank.
@ThePrimeTimeagen
@ThePrimeTimeagen Жыл бұрын
hah, it hurt so good
@techwithattila
@techwithattila Жыл бұрын
Happy that today I learned something which I can use in my team’s codebase. I’m sure they will like it
@DesTr069
@DesTr069 Жыл бұрын
Imagine you see there’s a new PR up, one file added, +200k lines, you run it and it just logs a message LMAOOO
@xarunoba3894
@xarunoba3894 Жыл бұрын
For "obfuscation purposes"
@kahnzo
@kahnzo Жыл бұрын
Your face at 9:56 is amazing. This is the reason that I watch these mostly throwaway videos, that moment that you realize the horror....
@ThePrimeTimeagen
@ThePrimeTimeagen Жыл бұрын
haha, it hurts once you realize what's happening
@Richard-sp3ul
@Richard-sp3ul Жыл бұрын
Hey buddy on Banana: as an English from Bristol. We say put wa'er in the baff. We don't mess about in 'Brizzle', we just say bannaner . On another note so much of the code community is defined by American English and thinking, as an English, I still have to process what you hell you guys are talking about. But I love it.
@ThePrimeTimeagen
@ThePrimeTimeagen Жыл бұрын
haha! LOVE THIS RESPONSE
@channel_zero
@channel_zero Жыл бұрын
I have never seen Prime be so shocked and appalled and impressed simultaneously. At 10:08, you can see th- entire head-brain explode.
@PhilipAlexanderHassialis
@PhilipAlexanderHassialis Жыл бұрын
10:05 "He is beginning to believe" 15:31"Do you want to know more?"
@marcotroster8247
@marcotroster8247 Жыл бұрын
If you watched the video until the end, you would have seen the guy transpile his transpiler into JSF*ck as well which makes it even more funny because he actually deduced an entire language with his charset 😂
@KyleHarrisonRedacted
@KyleHarrisonRedacted Жыл бұрын
10:50 I remember the first time learning a similar “trick”/“language feature” in php that lets me just dynamically reference an object BY string and thus access any members that dynamically. I wondered.. JavaScript could do that.. And sure enough it could. But in was a flash Developer at the time, and knowing ActionScript2 was based off ECMAScript just as JavaScript was.. sure enough… could do it there too. I suddenly became way too loose and dangerous with that knowledge lol
@tokiomutex4148
@tokiomutex4148 Жыл бұрын
let first = undefined;
@ThePrimeTimeagen
@ThePrimeTimeagen Жыл бұрын
GET EM, and i love you my little, safe mutex
@SimGunther
@SimGunther Жыл бұрын
TECHNICALLY you could write low level stuff in JS or Haskell, but the results are...macabre to say the least.
@el.bromas
@el.bromas Жыл бұрын
macabre
@kellybmackenzie
@kellybmackenzie Жыл бұрын
Haskell actually has really good C interop! And it has pointers too. You can do manual memory allocation/management with Haskell just fine (in the IO monad, of course), it just sadly isn't fast as C (for obvious reasons). GHC (the main Haskell compiler) has a lot of tools that make it really easy to call C from Haskell and vice versa, it's super neat! The only downside is that cross-compilation is really hard with GHC.
@mario7501
@mario7501 Жыл бұрын
I have never written javascript, but I'm also no longer surprised that I haven't been able to switch Microsoft accounts when logging into Microsoft teams without deleting my browser cache.
@fulconandroadcone9488
@fulconandroadcone9488 Жыл бұрын
I don't think that has as much to do with JS as it has to do with Microsoft
@7heMech
@7heMech Жыл бұрын
If they only compiled the compiler, it would have been perfection.
@DrewryPope
@DrewryPope Жыл бұрын
"you don't make a compiler by accident" ehehehehehehe are you sure
@ThePrimeTimeagen
@ThePrimeTimeagen Жыл бұрын
yeah, i was caught off guard by that
@seannewell397
@seannewell397 Жыл бұрын
The feels when he reached for hex! THE FEELS
@rthurJ
@rthurJ Жыл бұрын
It's really only missing a benchmark, pretty sure going low level like that is going to yield some sweet performance gains /jk
@theodorealenas3171
@theodorealenas3171 Жыл бұрын
lol. I made a BF program once which did division, and to divide 2 digit numbers it took like half a second? I don't remember. That was BF, not JSF.
@elin4364
@elin4364 Жыл бұрын
I mean in the end its basically just eval-ing a string of normal js code right? So once you've parsed through everything it should be reasonably fast
@ko-Daegu
@ko-Daegu Жыл бұрын
This is helpful really helpful for obfuscation when we pentest web apps
@HelloThere-xs8ss
@HelloThere-xs8ss Жыл бұрын
This was actually the primary way JS was to be written. The people got it wrong.
@suman_js495
@suman_js495 25 күн бұрын
Really? Is there a compiler that can turn the normal js into that? 😮 If it does can you share the name of the compiler? Thanks
@theodorealenas3171
@theodorealenas3171 Жыл бұрын
This is one of the things where C would actually be easier to use for. Because chars are one byte integers. I don't know, but the same tricks would probably be much easier.
@RunningRay9
@RunningRay9 Жыл бұрын
but even if it's easy to construct any string, i don't think in C you can run strings as code tho
@dancom6030
@dancom6030 Жыл бұрын
This sort of thing would be impossible in c because it's a compiled language with no type coercion.
@theshermantanker7043
@theshermantanker7043 8 ай бұрын
​@@dancom6030Type coercion is literally everywhere in C, there's a reason it's a weakly typed language
@dancom6030
@dancom6030 8 ай бұрын
@theshermantanker7043 yeah idk what I was saying lol. Technically this kind of thing actually is possible because global strings in C are executable. It's just that that code would then be highly platform dependent.
@dus10dnd
@dus10dnd 11 ай бұрын
"It sucks to invent something and also get it wrong." So much truth!
@antsii
@antsii Жыл бұрын
love that winky winky after you got all that delicious food
@ThePrimeTimeagen
@ThePrimeTimeagen Жыл бұрын
its the best way to live your life
@godowskygodowsky1155
@godowskygodowsky1155 10 ай бұрын
3:10 Intrusive R and linking R are common in SBE because Anglophones hate vowel hiatus.
@beebakrizzle
@beebakrizzle Жыл бұрын
Make a jsf interpreter in Rust for blazing fast performance
@luisguilherme2403
@luisguilherme2403 7 ай бұрын
Bro just summoned food in the middle of the live
@jonathancrowder3424
@jonathancrowder3424 Жыл бұрын
Feed the source compiler into the compiler and make it self contained
@EwanMarshall
@EwanMarshall Жыл бұрын
I would point out, we figured this out in C ages ago, and there are so many ways to do it there we ended up with the international obfuscated c code contest, ioccc :D
@AndrewTSq
@AndrewTSq Жыл бұрын
Imagine first day at work, and you have to debug jswtf code :) ive seen this been used to obfuscate code for malware, since the virusscanner dont have any idea what is going on.
@rumplstiltztinkerstein
@rumplstiltztinkerstein Жыл бұрын
We should create a transpiler that converts javascript code into that format.
@KnightMirkoYo
@KnightMirkoYo Жыл бұрын
This video literally shows it in the end :)
@samtv19981
@samtv19981 Жыл бұрын
Haha I hoped you would cover JSF (Java Server Faces).
@draguve3821
@draguve3821 Жыл бұрын
This is high level rop chaining
@xBZZZZyt
@xBZZZZyt Жыл бұрын
00:40 which JavaScript engine?
@seannewell397
@seannewell397 Жыл бұрын
THE FUNCTION CTOR Goooood damn this guy
@shimadabr
@shimadabr Жыл бұрын
Imagine an employee rage quitting a small company and changing an entire project to work based on this unholy implementation haha. Wrap everything to work like this underneath the hood and only the next cursed employee would notice it hahaha.
@RedHandedBug
@RedHandedBug Жыл бұрын
"I am that guy" - ThePrimeagen
@M3R14M.
@M3R14M. 3 ай бұрын
3:20 LOL, the guy is so obviously not British. By the way he pronounces words ending with 'd', I'd say his native language is Dutch.
@xdman2956
@xdman2956 11 ай бұрын
its funny to me that you have to get backslash character despite it being in the character list
@hexdiqoreprime7974
@hexdiqoreprime7974 3 ай бұрын
Now this is code.
@ollystoppa9155
@ollystoppa9155 Жыл бұрын
Is this a payload obfuscation masterclass?
@NuncNuncNuncNunc
@NuncNuncNuncNunc 5 ай бұрын
@3:25 Don't get Prime started on how brits say "bag" or "flag." JS: true + "0" = "true0" Also JS: true + true + "0" = "20" and since addition is commutative: Also JS: "0" + true + true = "0truetrue"
@loganhall1529
@loganhall1529 7 ай бұрын
God had no hand in this
@Veptis
@Veptis 5 ай бұрын
Hrey hoodie prime? Is this how esolangs started?
@isaakarslan9485
@isaakarslan9485 Жыл бұрын
I thought this video was going to be about primagen implementing Java server faces in rust 😂
@ab.3800
@ab.3800 Жыл бұрын
I rewrote this “compiler” in about 500 lines of C
@ExpertOfNil
@ExpertOfNil Жыл бұрын
Low Level Learning is shaking his head in disgust right now 😝
@derzw3rg
@derzw3rg Жыл бұрын
At 10:08 prime had a small meltdown.
@CaptainWumbo
@CaptainWumbo Жыл бұрын
the only usecase for this is obfuscating malicious code. Probably a little more subtly than running the whole application through this, but you could probably sneak a line into an open source project abusing coersion and claim you're a genius who is just doing fast inverse square root.
@JackDespero
@JackDespero 10 ай бұрын
I read "JSF" and my brain went to "JeSus, Fuck".
@Ikxi
@Ikxi 3 ай бұрын
why at 1.5x??
@martijn3151
@martijn3151 Жыл бұрын
The start of the video was right, this truly was some low level JS code trickery.
@seannewell397
@seannewell397 Жыл бұрын
Legend
@TeodorDimitrov1991
@TeodorDimitrov1991 Жыл бұрын
Please watch videos at 1x speed.. otherwise love the content
@ThePrimeTimeagen
@ThePrimeTimeagen Жыл бұрын
i have stopped doing this as it doesn't allow people to speed tihngs up :)
@psilogismo30
@psilogismo30 8 ай бұрын
The cool thing: JSF#* behaves more consistently than vanilla js!
@Ironication
@Ironication Жыл бұрын
God, I love this language.
@venc0r
@venc0r Жыл бұрын
add a stream command !js for it
@soyitiel
@soyitiel Жыл бұрын
Video should have ended at 21:49
@romanmaciel8072
@romanmaciel8072 Жыл бұрын
Cool but is that a default dunst notification I see in the corner? Real programmers rice.
@JacobCanote
@JacobCanote Жыл бұрын
No words!
@Kavukamari
@Kavukamari Жыл бұрын
no words, only ()[]+!
@ofeenee
@ofeenee Жыл бұрын
You can turn an open source JavaScript into a closed source JavaScript available publicly using this compiler. 😂
@kebien6020
@kebien6020 Жыл бұрын
Not really, if you just remove the () at the end you get a function instead of calling it. You can then call .toString() on the function and get the decoded source code. For reversing any JSFuck compiler output, and not specifically this one, there is also the option of monkey-patching eval and Function.prototype.constructor to print out their input before eval'ing it. Kinda like this const original = Function.prototype.constructor Function.prototype.constructor = code => { console.log(code); return original(code) }
@venc0r
@venc0r Жыл бұрын
I'm dying here
@ThePrimeTimeagen
@ThePrimeTimeagen Жыл бұрын
in a good way?
@heron619
@heron619 Жыл бұрын
Bananer
@ThePrimeTimeagen
@ThePrimeTimeagen Жыл бұрын
got me
@jacoblockwood4034
@jacoblockwood4034 Жыл бұрын
btw for the ppl in chat who are all WRONG: brainfuck is not inspired by javascript, jsfuck is inspired by brainfuck. sorry for the nitpick
@4idenn
@4idenn Жыл бұрын
Why is this even possible...?
@JhonatasRosendo
@JhonatasRosendo Жыл бұрын
I clicked thinking this was gonna be about Java server faces 😅
@andythedishwasher1117
@andythedishwasher1117 Жыл бұрын
I've seen this before and I took it as a kind of thesis on how Javascript is a high level language for a reason. Tbh, it was the first language I was exposed to and I find myself increasingly disliking it the more I explore outward. It's a language made of hacks because 90% of its history consists of people hacking it to do stuff it wasn't previously designed for.
@0644dev
@0644dev Жыл бұрын
Primeagenanar
@TomasKonrady
@TomasKonrady Жыл бұрын
try THIS with Rust
@vimaximus1360
@vimaximus1360 Жыл бұрын
just use rust
@yuriblanc8446
@yuriblanc8446 10 ай бұрын
baNaNa
@draakisback
@draakisback 11 ай бұрын
I think I want to write a lisp compiler using a JS fuck compiler. I've seen this video before but it's always impressive. Seriously though this is probably the biggest fuck you to any serious JavaScript evangelist. Every time they say their language is so great and so safe, all you have to do is show them this.
@sadboisibit
@sadboisibit Жыл бұрын
By "low level JavaScript" I really hope they mean all the C++ under the hood.
@theideaot140
@theideaot140 Жыл бұрын
Like for the floating sandwich
@unusedTV
@unusedTV 9 ай бұрын
This guy sounds Dutch, not British.
@HaKazzaz
@HaKazzaz Жыл бұрын
Hey Prime, I'm gonna save this vid for later when I'm next to a 70' TV. Thank's for not full screening a coding video :)
@Deepfri3d
@Deepfri3d Жыл бұрын
Bloody Rust developers, telling us how to talk in English. Stick your Banana in a compiler Developer Disrespect. Still better than that Theo guy though.
@m1kr0kosmos
@m1kr0kosmos Жыл бұрын
the letter d is *bloat*
@brunomello7499
@brunomello7499 Жыл бұрын
first hehe
Prime Reacts: 7 Days to make a WebSite
12:06
ThePrimeTime
Рет қаралды 148 М.
VIM - I DIDNT KNOW THIS!!! | Prime Reacts
18:27
ThePrimeTime
Рет қаралды 93 М.
Como ela fez isso? 😲
00:12
Los Wagners
Рет қаралды 33 МЛН
Hot Ball ASMR #asmr #asmrsounds #satisfying #relaxing #satisfyingvideo
00:19
Oddly Satisfying
Рет қаралды 22 МЛН
СҰЛТАН СҮЛЕЙМАНДАР | bayGUYS
24:46
bayGUYS
Рет қаралды 832 М.
Git Flow is Bad | Prime Reacts
34:31
ThePrimeTime
Рет қаралды 246 М.
10 javascript Changes You Missed in 2023 | Prime Reacts
17:07
ThePrimeTime
Рет қаралды 62 М.
Is JSON Blazingly Fast or...?
9:57
ThePrimeagen
Рет қаралды 184 М.
Destroyed By A Regex
17:14
ThePrimeTime
Рет қаралды 90 М.
TS vs JSDoc | Prime Reacts
22:11
ThePrimeTime
Рет қаралды 88 М.
100 Seconds of Rust | Prime Reacts
10:38
ThePrimeTime
Рет қаралды 304 М.
Dear ThePrimeagen, You Are Wrong | Prime Reacts
22:14
ThePrimeTime
Рет қаралды 88 М.
This Algorithm is 1,606,240% FASTER
13:31
ThePrimeagen
Рет қаралды 711 М.
UI Libraries Are Dying, Here's Why
13:28
Theo - t3․gg
Рет қаралды 265 М.
Не обзор DJI Osmo Pocket 3 Creator Combo
1:00
superfirsthero
Рет қаралды 1,3 МЛН
wyłącznik
0:50
Panele Fotowoltaiczne
Рет қаралды 24 МЛН