Code along - I built Vercel in 4 Hours (System Design, AWS, Redis, S3)

แชร์
ฝัง
  • เผยแพร่เมื่อ 1 ส.ค. 2024
  • In this video, Harkirat takes you through building a system like Vercel end to end.
    This covers the system design of building vercel, how you would build a website like this end to end.
    Code along - projects.100xdevs.com/tracks/...
    Github - github.com/hkirat/vercel
    Timestamps -
    00:00 - Intro
    00:46 - What we're building
    03:42 - Building Vercel from first principles
    10:48 - FAQs
    15:02 - System design
    25:07 - Coding the upload server
    1:21:02 - Coding the Deploy service
    02:00:03 - Coding the Request Handler
    02:25:00 - Frontend
    Links:
    Open Source Cohort: harkirat.classx.co.in/
    Twitter: / kirat_tw
    Linkedin: / kirat-li
    Instagram: / kirat_ins
    Discord: / discord
    Telegram: t.me/kirat_internal_group

ความคิดเห็น • 399

  • @vrajpatel3266
    @vrajpatel3266 5 หลายเดือนก่อน +23

    This content is like most fine thing u can ever get on TH-cam just love it pure educational video , tremendous learning , straight to the point teaching hope to I could also give back to dev community after some years just like harkirat is doing for all of us

  • @neutron417
    @neutron417 5 หลายเดือนก่อน +14

    wait, this turned out to be more straightforward than I expected. Thanks for making us thorough with the process!

  • @gyanprakash9176
    @gyanprakash9176 5 หลายเดือนก่อน +71

    I am a Data Scientist but I still watch and try to code along with all his tutorials to just learn dev stuff and I must say I have learnt a lot from you Harkirat, Great video and things are way more simpler and easier to understand if you know basic stuffs ..

    • @vaibhavkumar-ql2fw
      @vaibhavkumar-ql2fw 5 หลายเดือนก่อน +2

      Hi Gyan Prakash, can you give me a referral for any data science role. I am new into data science with 1+ year of experience. Currently working in TCS.

    • @sodrulamin9607
      @sodrulamin9607 5 หลายเดือนก่อน

      E11😊qp😊p😊😊0​@@vaibhavkumar-ql2fw

    • @stewiegriffin6503
      @stewiegriffin6503 5 หลายเดือนก่อน

      @gyanprakash9176 ti si karina a ne data scientist

  • @alroyloh9135
    @alroyloh9135 5 หลายเดือนก่อน +3

    So much condensed contextual knowledge and you explain terminology explicitly so it is so easy to understand.
    Very well organized content as well, and you're using a use case as a story the entire time, so it's very easy to follow.
    Learnt a lot and recapped a lot, also enhanced my existing knowledge about deployment through your terminology and good practice explanations.
    Love it!

  • @LotsOfFunyoutubechannel
    @LotsOfFunyoutubechannel 5 หลายเดือนก่อน +70

    Insane tutorial. I have watched only few minutes yet but the topics you are trying to cover here are advanced tier. I can't believe this is all free. I also tried to make a simple deployment system for plain html css js and this is just 10x more advanced than it

    • @eren-qu9uu
      @eren-qu9uu 5 หลายเดือนก่อน +6

      voh paid kardega , tu jayda bolega toh

    • @OmSinghChandel
      @OmSinghChandel 5 หลายเดือนก่อน

      @@eren-qu9uu

    • @meishimanshu
      @meishimanshu 5 หลายเดือนก่อน +1

      ​@@eren-qu9uu😂😂 Are bro, I guess wo paid nhi krenge, because jb unhone kuch courses paid kiya to log telegram se free me access kr hi lete h usse better h directly free me access krle

    • @kes_have
      @kes_have 5 หลายเดือนก่อน +1

      Can I use Microsoft Azure instead of AWS

  • @josgraha
    @josgraha 5 หลายเดือนก่อน +3

    this is an excellent tutorial from a systems design perspective. the key value proposition isn't just serving static assets via http but the proxied endpoints mapped to backend process (serverless, server process etc) http routes. so in the end I would say we're halfway there, what's beautiful about your solution is that for the most part the services in your architecture don't change. i also love that you added citations to vercel's archtectural blog post. wonderfully explained, thank you so much, you're a great teacher

  • @ApexModi6000
    @ApexModi6000 5 หลายเดือนก่อน +72

    You are not the every day creator on TH-cam you are the real deal and one of the best teachers out there unlike other on TH-cam who just sells courses and output low quality content ❤

  • @RupeshKumar-ky8zf
    @RupeshKumar-ky8zf 5 หลายเดือนก่อน +1

    This is insane content man. Please keep uploading such videos where we can learn high level stuff while building real world projects. Thank you harkirat.

  • @ineshreddy6626
    @ineshreddy6626 5 หลายเดือนก่อน +6

    Hey @harkirat Singh, I am in the last part[frontend] of this video.........Your video is incredibly informative! . Your clear and concise explanations make your videos stand out, majorly, I love how you break down complex topics into digestible chunks(most of this i had seen from cohort[Top-Notch]). Hats off Ser!!!!

    • @Coder_97886
      @Coder_97886 5 หลายเดือนก่อน

      Bro just asked before start ,any paid thing use in video ?

  • @girijeshthodupunuri1300
    @girijeshthodupunuri1300 4 หลายเดือนก่อน +1

    Love the system Design instruction at the beginning, Please make more interesting projects! Great job on demystifying apps we all use. Would love to see you break down more complicated apps and simplify them like this!

  • @adriangora2415
    @adriangora2415 4 หลายเดือนก่อน

    one of the best tutorials for me, thanks for it. I like that you introduced the architecture and showed what the process looks like.

  • @user-ft2hj8in6k
    @user-ft2hj8in6k 5 หลายเดือนก่อน +7

    I am in between of video but paused just to comment.
    I am having 3 years of development experience and wanted to start a startup. But things were messed up how things will be done in backend.
    I think the concepts in this video will help me a lot. I will be updating this comment if i got success in making my startup. Thank you Harkirat

  • @SD-qz9jk
    @SD-qz9jk 5 หลายเดือนก่อน

    A great video, i was engaged by the beautiful content throughout the video and also tried to code along. Thanks!

  • @asadanik5987
    @asadanik5987 5 หลายเดือนก่อน +1

    Harkirat you are doing Awesome brother. I appreciate your all works and your efforts for our community. Stay long front of us bro. 😎

  • @Granthcodes
    @Granthcodes 5 หลายเดือนก่อน +1

    harkirat bhaiya you stands out with a true commitment to empowering and educating. Their belief in the importance of sharing knowledge freely and making learning accessible to as many people as possible is both refreshing and commendable. Your support not only motivates but also ensures that the content delivered adds genuine value to our learning experiences. Here's to a creator who prioritizes education over profit, making a positive impact in the learning community!

  • @imchiragkumar
    @imchiragkumar 5 หลายเดือนก่อน +39

    you kill it man we are good to go with this pace , next tutorial on webrtc or , or something real-time protocol ❣❣❣

    • @carver0019
      @carver0019 5 หลายเดือนก่อน +2

      Let's make this comment Lil popular so that harkirat can read it

  • @LuveenWadhwani
    @LuveenWadhwani หลายเดือนก่อน +1

    On the upload service:
    1. Seems more straightfoward to do a fast zip compress of the downloaded repo so listing all files recursively isn't needed. That would make the upload step much faster.
    2. Highlighting a limitation for folks following along that is worth calling out in an interview - deeper integration between git remote and local copy would be good here. Specifically, add a cache of git project URL -> id-based folder name, and track the remote branch in the cloned repo folder. This will unlock incremental downloads on subsequent triggers of the same URL. Incurs storage cost, so use an LRU cache and tune TTL as needed to purge stale repos and only maintain hot repos.
    3. ID generation best practice is to use base58. This guarantees a unique 21- or 22-character ID that scales well and transmits well over the wire.

  • @manan.jain01
    @manan.jain01 5 หลายเดือนก่อน

    I'm watching Harkirat in videos from his IIT-Roorkee days where he made a music video (Sorry - Justin Bieber) 8 years ago. Kudos .He is doing great & I have seen every bit of his growth

  • @HiteshSharma.2314
    @HiteshSharma.2314 5 หลายเดือนก่อน +4

    bhai jab bhi teri video ya live stream dekhta hu mujhe lagta hai ki mujhe to kuch nhi aata, you are a role model

  • @rushabhajain3977
    @rushabhajain3977 5 หลายเดือนก่อน

    Wow, amazing tutorial just the way I wanted. Please record more code alongs like this. Thank you :)

  • @i8you
    @i8you 4 หลายเดือนก่อน

    Getting this quality of Free resource is just mindblowing..Thank you so much for this awesome effort. hats-off ❤. keep doin this stuff for us :)

  • @jamalmydeenms3950
    @jamalmydeenms3950 5 หลายเดือนก่อน +1

    VERY NICE PROJECT . I WILL TRY TO UNDERSTAND COMPLETELY

  • @64chaitanyaanand59
    @64chaitanyaanand59 4 หลายเดือนก่อน

    amazing video. loved it throughout. perfect pace.

  • @hemantsinghparmar
    @hemantsinghparmar 5 หลายเดือนก่อน

    Keep bringing such tutorials, its Really helpful!!

  • @NewAwesomeTech
    @NewAwesomeTech 5 หลายเดือนก่อน +1

    Great job explaining these concepts. 🎉

  • @bhanuprakasht9405
    @bhanuprakasht9405 5 หลายเดือนก่อน +3

    Thank you for providing great content

  • @alkhamistic
    @alkhamistic 5 หลายเดือนก่อน

    Absolutely insane to get this level of content on youtube. I've been on here for years looking at different devs. This year alone I've found two incredible - you are one of them. This is a super crash course for devs. Thank you so much. Top quality

    • @mr.entropic7356
      @mr.entropic7356 5 หลายเดือนก่อน

      who's the other one though?

    • @alkhamistic
      @alkhamistic 5 หลายเดือนก่อน

      @@mr.entropic7356 bytegrad ;)

  • @manikmehta2727
    @manikmehta2727 5 หลายเดือนก่อน

    Interestingly my approach was very similar to yours. This video really boosted my confidence about my way of thinking to make a system!

  • @pedromiranda5293
    @pedromiranda5293 5 หลายเดือนก่อน

    It’s great to get a sense of how a platform like that works with such a straightforward explanation! Wish you had gone through the containerizing part though. Is that something you think you might eventually put into a video? Maybe kind of like a sequel to this one 😂

  • @SatyamWakchaure
    @SatyamWakchaure 5 หลายเดือนก่อน +1

    Salute to you man 🫡🫡🫡🫡🫡🫡
    Please please keep uploading such high level content.

  • @PatelMuhammad-kh1lb
    @PatelMuhammad-kh1lb 5 หลายเดือนก่อน +1

    We need more of thisss!! (Thanks alot!)

  • @raghavendersinghchouhan3428
    @raghavendersinghchouhan3428 5 หลายเดือนก่อน

    Thanks Harkirat you gave me an overall idea how to make TH-cam video uploader which you discussed in one of your project ideas video will start working on from today only Thanks again

  • @GRAVENAP
    @GRAVENAP 5 หลายเดือนก่อน

    Bro that's a sick project idea. Genuinely impressive.

  • @RockstahRolln
    @RockstahRolln 5 หลายเดือนก่อน

    CHEEZ-UZ! What an Incredible Project! First time on your channel and I have subbed!

  • @sumatoken
    @sumatoken 5 หลายเดือนก่อน +1

    The video is amazing! And you do know your stuff! One thing I find weird is how you're trying to build something which can be quite complex in terms of architecture but also you're explaining basic stuff like shell commands and what API handlers are. I can't really get which audience you're trying to target. Keep it up!

  • @wiseboardnotes
    @wiseboardnotes 5 หลายเดือนก่อน

    During explaining, the words "K Bhai" gives a smile. A very informative material you are sharing with us. ❤❤❤

  • @WoWbob396
    @WoWbob396 5 หลายเดือนก่อน +2

    For the getAllFiles function at 49:48, instead of using the sync filesystem functions, you can use the built in node util promisify function to use the non-blocking (i.e. non-sync) filesystem functions. This is a huge benefit because sync functions will block the main thread, preventing any concurrent requests from being processed. A web server that receives many requests will be hindered by the use of sync functions.

  • @visheshpandey2001
    @visheshpandey2001 5 หลายเดือนก่อน +1

    amazing explaination and video editting!... this is best reply of controversy!!!!!!!!!!

  • @saurabhpatil9348
    @saurabhpatil9348 3 หลายเดือนก่อน

    Amazing video. I like it because it didn't took much of time as pace was very nice, Thank You

  • @Tushar_995
    @Tushar_995 5 หลายเดือนก่อน

    Thanks Brother ! It's just my starting on building projects. Sometimes it happens that i am not getting sequence of project in my mind but Now i can atleast try to make different projects in these type of domain....

  • @akaabhinavraj
    @akaabhinavraj 5 หลายเดือนก่อน

    just complete in 2 session, i didn't code along . But i did understood all of the things. Thanks sir.

  • @blueguy5588
    @blueguy5588 5 หลายเดือนก่อน

    Great video! Interesting stuff that you're very adept at explaining.

  • @iminoaruu
    @iminoaruu 5 หลายเดือนก่อน

    that short intro and history at beginning was great.

  • @proofhundred986
    @proofhundred986 5 หลายเดือนก่อน

    High quality video, we want videos like this

  • @bijoyjogi7111
    @bijoyjogi7111 5 หลายเดือนก่อน

    Yaa this is I am looking for, make this type of content, it's very help full for a developer really appreciate, in TH-cam there are few content like that....

  • @igorbudimir573
    @igorbudimir573 4 หลายเดือนก่อน

    Very valuable video as all are. Thank you so much.

  • @avishekdas4947
    @avishekdas4947 5 หลายเดือนก่อน +14

    Few days back I was thinking how do I build vercel like service? Now you are here. Thanks a lot.
    Please build a Resend like service.

    • @eren-qu9uu
      @eren-qu9uu 5 หลายเดือนก่อน +3

      kaffi age ki sochte ho

  • @srikarreddypochana6513
    @srikarreddypochana6513 19 วันที่ผ่านมา

    Just marvelous content 👏👏👏

  • @prateekkumar1683
    @prateekkumar1683 5 หลายเดือนก่อน

    Bro, this video is awesome. I want more

  • @nftdestin3821
    @nftdestin3821 5 หลายเดือนก่อน

    Amazing job ser, good speed.

  • @androiddev884
    @androiddev884 5 หลายเดือนก่อน +2

    You are a gem harkirat..

    • @s4sunshine01
      @s4sunshine01 5 หลายเดือนก่อน

      harkimouse

  • @BulletSP
    @BulletSP 5 หลายเดือนก่อน

    Wow, u r a great motivator, learn, code, share.

  • @ShubhamLutade
    @ShubhamLutade 5 หลายเดือนก่อน

    This is masterpiece. This man is legend

  • @21abdullah89
    @21abdullah89 5 หลายเดือนก่อน

    Very detailed explanation as a dev. It was fun to watch. Although i am not at the level of system desgin as your sir.

  • @Anandharajan.a
    @Anandharajan.a 5 หลายเดือนก่อน

    These videos are like gold mine, people only love hype videos

  • @rutwikshinde6021
    @rutwikshinde6021 5 หลายเดือนก่อน

    Loving the videos ❤🎉

  • @Vamsibl
    @Vamsibl 4 หลายเดือนก่อน

    Just learned Python Basics & watched your video. I could able to understand how an entire application can be developed.

  • @burhanuddin2719
    @burhanuddin2719 5 หลายเดือนก่อน

    We want more videos like this 🎯🙏🏻

  • @retr0-ck6md
    @retr0-ck6md 5 หลายเดือนก่อน

    GOOD quality tutorial.
    It was neither slow nor fast.
    if you have time please do the hosting, it would be cool .
    Thank you for this video.

  • @androidx2133
    @androidx2133 5 หลายเดือนก่อน +1

    Awesome project bro

  • @mukeshsiyak5623
    @mukeshsiyak5623 4 หลายเดือนก่อน

    bro started at 3 in night and finished around 11 in noon. That's great dedication, hats off.

  • @udipsuri7861
    @udipsuri7861 5 หลายเดือนก่อน

    Bro amazing khatarnak project thankyou sir g

  • @DharmanaPrasannaSai
    @DharmanaPrasannaSai 5 หลายเดือนก่อน

    Interesting video keeping making similar kind of videos more

  • @la_niina
    @la_niina 5 หลายเดือนก่อน

    Have always loved to create real life complex tutorials developing seemingly complex systems like this thanks for the motivation.
    Actually written a cloud platform similar to gcp using next express and front end with next js tailwind shadcn and I was really happy on what I achieved with scalability using dockers on say your raspberry pi and users uses containers to deploy there systems. Definitely deleting it and writing it again from scratch and uploading to TH-cam.

  • @indway
    @indway 5 หลายเดือนก่อน

    I'm waiting for a Vercel-like open-source service to emerge. 😅
    Keep going, teacher!

  • @AJAYSINGH-yg8re
    @AJAYSINGH-yg8re 5 หลายเดือนก่อน +2

    this is content, for which i pay my network bills

  • @samarjeetsinghkheda9460
    @samarjeetsinghkheda9460 5 หลายเดือนก่อน +15

    It feels unfair that this man have a paid bootcamp but is still uploading high quality content like this on youtube. Salute man. I would also become a kick-ass dev like you soon.

    • @nikhilnair1393
      @nikhilnair1393 5 หลายเดือนก่อน +5

      Tere jaise 100 Ghazi aayr, 200 Gaye. Chal nikal

    • @Bhavishya_est
      @Bhavishya_est 5 หลายเดือนก่อน

      @@nikhilnair1393 lmao

  • @copilotcoder
    @copilotcoder 5 หลายเดือนก่อน +12

    Awesome this is a real world project unlike a TODO APP or ECOMMERCE website

    • @vrohan07
      @vrohan07 5 หลายเดือนก่อน +2

      but that's essential too

    • @Ayush37262
      @Ayush37262 5 หลายเดือนก่อน +1

      Those two applications are the most important applications

    • @lightyagami-jj4ve
      @lightyagami-jj4ve 5 หลายเดือนก่อน +1

      Actually these small projects are necessary to build that's what i feel , As these small project gives better clarity of concepts to a beginners like me

    • @Ayush37262
      @Ayush37262 5 หลายเดือนก่อน +3

      @@lightyagami-jj4ve Ecommerce is small project?? 🙂

    • @ChitrangGoyaniThatIndianGeek
      @ChitrangGoyaniThatIndianGeek 5 หลายเดือนก่อน

      exactly you can do a lot more with an e-commerce project aswell@@vrohan07

  • @priyanshubartwal8464
    @priyanshubartwal8464 5 หลายเดือนก่อน

    Yes! Quality content.

  • @trading-university.
    @trading-university. 5 หลายเดือนก่อน

    Great tutorial. thanks

  • @laturdaily5110
    @laturdaily5110 5 หลายเดือนก่อน +1

    Best tutorial ❤

  • @tandaramandaraba
    @tandaramandaraba 4 หลายเดือนก่อน

    Respect for this tutorial

  • @proofhundred986
    @proofhundred986 5 หลายเดือนก่อน +2

    Priceless content Harkirat bhai, please dont stop this high quality.

    • @lolhackerdude6577
      @lolhackerdude6577 5 หลายเดือนก่อน

      Actually, this is a part of the cohort

  • @jaiphookan
    @jaiphookan 2 หลายเดือนก่อน +1

    Hi Harkirat, I've done a number of projects from YT, and I've always been searching for a solid backend one that wasn't trivial - this is the very first one that fit the bill and the best bit is you explain incredibly well! Just one thing though, any chance you could add in the bit of how to add the 3 services to the EC2 instance? That would be incredibly helpful and help us to add to our portfolio. Thanks again.

    • @AnuragVarmaP
      @AnuragVarmaP หลายเดือนก่อน

      Yess, need a continuation video of deploying all the services on different ec2 instances and connecting them to work together

    • @AnuragVarmaP
      @AnuragVarmaP หลายเดือนก่อน

      @Harkirat Singh need a complete video with integration of ec2 with loadbalancers, autoscaling, route 53, cloud watch, etc services

  • @bobobobo-ki2fw
    @bobobobo-ki2fw 5 หลายเดือนก่อน

    i love these videos thank you. Redis always been so confusing to me lol i feel dumb.

  • @theunknown2090
    @theunknown2090 4 หลายเดือนก่อน +1

    Hi great tutorial. One suggestion instead of uploading and donwload files individually u can zip, tar compress them and upload them this way u dont need
    1. The resirsive logic
    2. The network usage is less.

  • @zerodegreecoder
    @zerodegreecoder 5 หลายเดือนก่อน

    This quality I need

  • @ankur219
    @ankur219 5 หลายเดือนก่อน

    Loved the video please make a similar video about nextjs .

  • @alirazajafri6092
    @alirazajafri6092 5 หลายเดือนก่อน

    just harkirat being harkirat

  • @hcd8889
    @hcd8889 5 หลายเดือนก่อน

    Bhai pura hero lg rha haii... 😀😀

  • @falcan7752
    @falcan7752 5 หลายเดือนก่อน

    You are the best brother.

  • @jesussavedme3507
    @jesussavedme3507 5 หลายเดือนก่อน

    Thank you sir 🌝

  • @mustafajawed918
    @mustafajawed918 5 หลายเดือนก่อน

    You can use traditional for loop instead of forEach at 2:30:27
    For loop and for await are the only loop in nodejs that waits for the complete traversal.

  • @bollywoodboxoffice7017
    @bollywoodboxoffice7017 2 หลายเดือนก่อน

    bhai tu genius hai

  • @shreechatane9215
    @shreechatane9215 5 หลายเดือนก่อน

    Super impressive can't believe we are getting this for free😮

  • @readdaily5680
    @readdaily5680 5 หลายเดือนก่อน

    More code along videos please

  • @tanny3080
    @tanny3080 5 หลายเดือนก่อน

    I wish I had seen your video when I started learning how to code.

  • @rutikbhanushali957
    @rutikbhanushali957 5 หลายเดือนก่อน

    Crazy stuff!

  • @codlover1468
    @codlover1468 5 หลายเดือนก่อน

    Awesome 💯

  • @sunnyheheheh9401
    @sunnyheheheh9401 5 หลายเดือนก่อน

    Thank you very much

  • @larrykipkemoi6958
    @larrykipkemoi6958 5 หลายเดือนก่อน

    Do more of these tutorials. Many tutorials here do not have system design in them

  • @hussainbhagat8855
    @hussainbhagat8855 5 หลายเดือนก่อน +5

    How are you even able to put out such.a info rich video along with you working full time and also running a cohort? How are you at the optimum level?

  • @SameerShaikh-zf9gm
    @SameerShaikh-zf9gm 5 หลายเดือนก่อน

    Just thank you :)

  • @Ishubhamsharma7
    @Ishubhamsharma7 5 หลายเดือนก่อน +1

    Hi harkirat the video was fantastic. But i have a question that you are using async await in forEach loop and forEach itself does not directly support async/await because it does not wait for promises to resolve. to overcome this you can for..of loop or map and then use promise.all(). Please correct me if i'm wrong over.

  • @vaibhavaggarwal6591
    @vaibhavaggarwal6591 5 หลายเดือนก่อน

    bhai maza aa gya

  • @7obudantkale477
    @7obudantkale477 5 หลายเดือนก่อน

    Dude kudos to what you are doing
    Just a question: can you give a glimpse of how would their Vercel Edge Functions work?

  • @RockRespawn
    @RockRespawn 5 หลายเดือนก่อน +2

    50:46 for anyone wondering, with node v20.1+, something like:
    const filelist = await fs.readdir(dir, { recursive: true });
    is possible

  • @user-hw4mc7wh6q
    @user-hw4mc7wh6q 5 หลายเดือนก่อน +1

    you aren't regular uploader on youtube but if you upload it will be a big bomb !!!!! :). By the way are you only backend developer in your company where you are working?

  • @rahulkumar11a98
    @rahulkumar11a98 5 หลายเดือนก่อน +4

    I am not saying to make a video on controversy but answer some of the general questions like
    1. How much content is covered in the cohort and how it is going
    2. If any want to join now your cohort how to approach the cohort
    3. How senior engineer things will help us as a fresher to get are first job in todays job market
    Just answer these questions please 🥺🥺

  • @AvanaVana
    @AvanaVana 5 หลายเดือนก่อน

    Great video.
    PS 50:00 in Node 20 you can now just do: `const files = await fs.readdir(dir, { recursive: true });`. Either way I would not use a synchronous loop to generate the file list, it will be very slow compared to doing it asynchronously and in parallel.

    • @MaulikParmar210
      @MaulikParmar210 5 หลายเดือนก่อน

      Awaiting is bad, it blocks thread. Simple, change how you do chunks of code, not how you sync the code, that's the key in whatever eventloop paradiam has.