Learn How To Build Modern Web Apps With SvelteKit

SvelteKit is the Swiss army knife of web frameworks for building resilient apps that run anywhere where JavaScript runs.
👉️ Support
▶️ KZread Membership
youtube.com/@joyofcodedev/join
🔴 Patreon
/ joyofcode
👉️ Links:
Learn SvelteKit Playlist:
• Learn SvelteKit
Learn Svelte Playlist:
• Learn Svelte
Posts:
1. joyofcode.xyz/what-is-sveltekit
2. joyofcode.xyz/sveltekit-proje...
3. joyofcode.xyz/sveltekit-routing
4. joyofcode.xyz/sveltekit-loadi...
5. joyofcode.xyz/working-with-fo...
6. joyofcode.xyz/sveltekit-advan...
7. joyofcode.xyz/sveltekit-hooks
8. joyofcode.xyz/sveltekit-deplo...
👉️ Uses:
🔗 joyofcode.xyz/uses
👉️ Socials:
🐦️ / joyofcodedev
💬 / discord
🔖 Timestamps
0:00 Intro
2:15 What Is SvelteKit?
5:00 SvelteKit Blurs The Line Between Frontend And Backend
8:29 Convention Over Configuration
11:17 Best Of Both Worlds: Server-Side Rendering With Client-Side Navigation
16:57 SvelteKit Uses The Web Platform
19:18 SvelteKit Apps Are More Resilient Using Progressive Enhancement
21:02 SvelteKit Runs Where javaScript Runs
22:12 SvelteKit For Component Libraries
22:45 SvelteKit Is Made For Everyone
23:14 SvelteKit Project Setup
24:06 Creating A SvelteKit Project From Scratch
34:12 Using The SvelteKit CLI
45:24 SvelteKit Routing
47:14 Project Setup
48:44 Pages
59:17 Layout
1:03:44 The Power of Nested Routes
1:12:51 Dynamic Routes
1:14:55 Advanced Routing
1:14:58 Multiple Route Parameters
1:16:43 Optional Parameters
1:18:04 Rest Parameters
1:20:18 Matching Parameters
1:23:41 Loading Data
1:23:48 Project Setup
1:24:28 Database Setup
1:38:49 API Endpoints
1:59:28 Showing Page Data Using Client-Side Rendering
2:05:14 Showing Page Data Using Server-Side Rendering
2:13:17 Sometimes You Only Want To Run Code On The Server
2:20:05 Your Layout Files Can Also Load Data
2:29:42 Making Your Data Available Everywhere
2:33:09 Using Data From The URL
2:40:28 Using Parent Layout Data
2:45:09 How Load Functions Work
2:51:19 Working With Forms
2:51:25 Project Setup
2:52:14 Creating A Fake Database
2:55:27 Reintroduction To Forms
2:59:25 Working With Forms Using API Endpoints
3:16:52 Working With Forms The SvelteKit Way Using Form Actions
3:26:31 Progressive Form Enhancement
3:30:44 Customize The Enhance Action To Show A Loading UI
3:37:09 Form Validation In SvelteKit
3:48:27 Advanced Enhance Action Customization
3:53:39 Advanced Layouts
3:53:45 Project Setup
3:54:10 Sometimes You Want Routes With Different Layouts
3:56:18 Using Group Layouts To Group Related Routes
4:03:19 Breaking Out Of Layouts
4:04:28 Layout Reset
4:06:28 SvelteKit Hooks
4:06:34 What Are Hooks?
4:07:44 Creating Routes
4:11:58 Authentication
4:16:39 Transforming HTML
4:19:24 Measuring Page Load Speed
4:21:58 Error Logging
4:23:46 Modifying A Fetch Response
4:25:12 Parsing Form Data
4:28:45 Using Multiple Hooks Together
4:29:53 SvelteKit Deployment
4:30:54 Web Hosting Types
4:36:11 Deploying A SvelteKit Project
4:48:09 Optimizing Your Site
4:59:58 Outro
#joyofcode #svelte #sveltekit

Пікірлер: 174

  • @JoyofCodeDev
    @JoyofCodeDev Жыл бұрын

    🔴 Patreon: www.patreon.com/joyofcode 💬 Discord: joyofcode.xyz/invite

  • @kyouma7067
    @kyouma7067 Жыл бұрын

    Commenting for algorithm, this quality content needs to be seen

  • @gustihenry749
    @gustihenry749 Жыл бұрын

    Using your sveltekit code snippets/tutorials on your website for reference has been a life saver

  • @7heMech
    @7heMech Жыл бұрын

    For people following the course now, I have to note that pnpx is depreciated, when you encounter it being used in the tutorial you can just replace it with: pnpm dlx

  • @rumble1925

    @rumble1925

    10 ай бұрын

    Ah gotta love the frontend churn

  • @Aldraz

    @Aldraz

    10 ай бұрын

    Honestly it still works well, so why not just use it? I doubt it has a different fuction. Either way, they should just keep pnpx, because pnpm dlx or pnpm exec is dumb and too long.

  • @7heMech

    @7heMech

    10 ай бұрын

    ​@@AldrazI didn't have pnpm installed, so I installed it while following the tutorial, and pnpx isn't installed by default with pnpm now. (because it's depreciated) It took me a while to figure it out so I just decided to leave a comment providing a solution which doesn't require you to download more stuff/create aliases.

  • @Aldraz

    @Aldraz

    10 ай бұрын

    @@7heMech Interesting, because I updated pnpm to the last version and it still works. I didn't know it was somehow separated from that package.

  • @kyrregjerstad
    @kyrregjerstad Жыл бұрын

    This is awesome, you and huntabyte really got the best sveltekit content!

  • @black-purple

    @black-purple

    Жыл бұрын

    You can even say the only svetekit serious content.

  • @onz9950

    @onz9950

    Жыл бұрын

    You're missing lihautan's channel and others !

  • @bilza2023

    @bilza2023

    10 ай бұрын

    Is lihautan's amost the maintainers of Svelte ????

  • @garywaddell6309
    @garywaddell630910 ай бұрын

    OMG I am only 2 hours into this course and I can't believe how good it is. By far the best Svelte course I have seen, can't believe its available for free too. Well done Joy of Code!

  • @JoyofCodeDev

    @JoyofCodeDev

    10 ай бұрын

    I'm glad you love it.

  • @waffle-codes-js
    @waffle-codes-js Жыл бұрын

    Oh sick. Been working with sveltekit a lot recently, excited to give it a watch and pick up anything I have missed :)

  • @AlphaKanalBiH
    @AlphaKanalBiH Жыл бұрын

    Just fantastic work, cheers!

  • @talmann
    @talmann Жыл бұрын

    yeah! that's what I was looking for!! thank you sooomuch

  • @gitlit5489
    @gitlit5489 Жыл бұрын

    Wow! This is insane thank you ❤

  • @user-jz5vh7sl1d
    @user-jz5vh7sl1d Жыл бұрын

    in love with your course, thank you a lot

  • @daniel-nagy
    @daniel-nagy Жыл бұрын

    Svaka čast! 👏

  • @nickstaresinic4031
    @nickstaresinic40319 ай бұрын

    Very informative, very thorough, and very well presented, too. Good job, Matija.

  • @pablozuta2402
    @pablozuta2402 Жыл бұрын

    Top quality content as always 🚀

  • @Linkplay9
    @Linkplay9 Жыл бұрын

    Damn dude! Thanks for releasing this for free ❤

  • @mathiasodlund
    @mathiasodlund Жыл бұрын

    I will keep watching your tutorials, I've been here from the start of the channel and will continue to support you. I work as a Software Developer using primarily Vue, though, I wish companies would integrate Sveltekit in the future (would switch jobs immediately)

  • @Loui3Hunna
    @Loui3Hunna Жыл бұрын

    Thanks so much for this series and everything you do for teaching the community! You are a true svelte ambassador

  • @AakashGoplani
    @AakashGoplani Жыл бұрын

    How awesome is this course 💯

  • @dimusss
    @dimusss Жыл бұрын

    Thank you for the great tutorial! It's so awesome 🎉

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    Glad you enjoy it. 😄

  • @ElTebe
    @ElTebe Жыл бұрын

    Freakin awesome work, congrats & thanks!!

  • @user-fw4hw3cc8k
    @user-fw4hw3cc8k Жыл бұрын

    Dude! Amazing content! Thanks!

  • @21Guitars_
    @21Guitars_7 ай бұрын

    Best svelte kit video I've seen so far!

  • @cv3787
    @cv37877 ай бұрын

    Thanks for the video! Best channel to learn about Sveltekit!

  • @sebastiandromundo4133
    @sebastiandromundo413311 ай бұрын

    This is a gem, thank you

  • @akmalraj121
    @akmalraj12111 ай бұрын

    Awesome content as always !

  • @andrijaoreskovic386
    @andrijaoreskovic3865 ай бұрын

    One of the best tutorials in general not just for sveltekit!

  • @jaguar3957
    @jaguar395710 ай бұрын

    By far the best sveltekit course on youtube 👌❤

  • @darbhasailu
    @darbhasailu Жыл бұрын

    Oh my GOD this is what i needed today thanks so much

  • @adammalec9315
    @adammalec9315 Жыл бұрын

    Joy of course! Thanks a lot for sharing the knowledge

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    You're welcome! 😄

  • @chmouelkessous164
    @chmouelkessous16411 ай бұрын

    this tutorial is just awsome thanks for that !🤟

  • @guynatumanya
    @guynatumanya Жыл бұрын

    Now this is a Tutorial 5 hours of 🎉🎉 Thank you

  • @codewithguillaume
    @codewithguillaume Жыл бұрын

    MY FRIEND this course is just amazing ! Congratulations !

  • @MrRe-sj2iv
    @MrRe-sj2iv Жыл бұрын

    Great work 🎉

  • @user-xu7jz4li7e
    @user-xu7jz4li7e Жыл бұрын

    nice! Been waiting for this.

  • @NuclearInsanity
    @NuclearInsanity Жыл бұрын

    Just starting learning Sveltekit and you've made me so much more confident and understanding of how it works. Really love that you show the cumbersome route of solving a problem followed by how svelte kit makes things better. Really highlights how great it makes things for developers! Thanks a million!

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    I'm so glad to hear that! 😄

  • @KumananMurugesan
    @KumananMurugesan Жыл бұрын

    Thank you very much for a wonderful tutorial.

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    You're welcome! ❤️

  • @olafurbjarkibogason7148
    @olafurbjarkibogason7148 Жыл бұрын

    Thank you for all your hard work, it is deeply appreciated.

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    Thank you! 🙏

  • @tassilohansen5541
    @tassilohansen5541 Жыл бұрын

    Thanks for kickstarting my career as SvelteKit professional (C)

  • @lukaernestini4233
    @lukaernestini4233 Жыл бұрын

    Awesome, thanks !!

  • @djillian47
    @djillian473 ай бұрын

    This address every question i'd have on sveltekit and more.Really great content. Thank you so much for that.

  • @maxmakhrov7867
    @maxmakhrov7867 Жыл бұрын

    Thanks for that! Tons of tips and interesting info

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    You're welcome! 😄

  • @Mat12143
    @Mat12143 Жыл бұрын

    You inspired me to get started playing around with Svelte and i want to thank u a lot your content is soo well explained.

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    I appreciate it! 😄

  • @JeremyBlack1
    @JeremyBlack1 Жыл бұрын

    Fantastic! Great speed and illustration of key concepts right down to deployment. One area that could use more detail, maybe in another video, is the github, supabase, integration. Or is there another good place to see that which shows local development and then production deployment. Thanks again for amazing content!!!

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    You could have a development and production database and use an environment variable to switch between them based on your environment.

  • @yendar9262
    @yendar9262 Жыл бұрын

    Thank you!

  • @Manuel-DaSilva
    @Manuel-DaSilva Жыл бұрын

    Excellent!

  • @onepointproduction9092
    @onepointproduction9092 Жыл бұрын

    Superbbbbb.... big thanks

  • @sammy_vee
    @sammy_vee Жыл бұрын

    This is really help me a lot thank you!

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    I'm glad to hear that! 😄

  • @sistana
    @sistana Жыл бұрын

    Thanks, thanks, thanks. How I wish the world was full of people like you, how I wish I could spread my little knowledge like that my dear friend. Thank you for your teachings

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    You could write a post! 😄

  • @gadgetboyplaysmc
    @gadgetboyplaysmc11 ай бұрын

    really like the "optimization" part here

  • @user-nw8we9ul5p
    @user-nw8we9ul5p Жыл бұрын

    You are literally awesome.

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    Thank you! 😄

  • @precisionchoker
    @precisionchoker Жыл бұрын

    مجهود رائع 🎉

  • @mayanksharma6927
    @mayanksharma6927 Жыл бұрын

    Cool desktop setup 🔥

  • @swyxTV
    @swyxTV Жыл бұрын

    wooo sveltekit!

  • @user-by8dr9zg4p
    @user-by8dr9zg4p Жыл бұрын

    Thank you very much.

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    You're welcome! 😄

  • @twd2
    @twd2 Жыл бұрын

    Big efforts ❤

  • @voodoochilee6713
    @voodoochilee6713 Жыл бұрын

    Thanks!

  • @AlexanderDemin
    @AlexanderDemin Жыл бұрын

    Great course!

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    Thank you! 😄

  • @prashlovessamosa
    @prashlovessamosa Жыл бұрын

    Thank you Sir

  • @namthanhnguyen2554
    @namthanhnguyen2554 Жыл бұрын

    Thank you

  • @budsyremo
    @budsyremo7 ай бұрын

    Awesome tutorial.

  • @shaftymaze
    @shaftymaze10 ай бұрын

    Commenting because this channel should have a million subs. Quality.

  • @JoyofCodeDev

    @JoyofCodeDev

    10 ай бұрын

    Thank you! 😄

  • @fazex4185
    @fazex4185 Жыл бұрын

    Thank you very much

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    You're welcome! 🙂

  • @explosivecl
    @explosivecl10 ай бұрын

    Great video, liked and subbed 👍

  • @Ondry96CZ
    @Ondry96CZ11 ай бұрын

    Awesome, love this 🎉 I am sending all bananas for you 😄

  • @JoyofCodeDev

    @JoyofCodeDev

    11 ай бұрын

    Thank you! 🍌

  • @Jack-vv7zb
    @Jack-vv7zb Жыл бұрын

    you are brilliant

  • @miraclenerdkidchiki6249
    @miraclenerdkidchiki6249 Жыл бұрын

    I was adamant about svelte and svelte kit cuz it didn't feel like JavaScript......but after coming to the conclusion that it was probably the future,i am ready to learn

  • @jamiewalker1745
    @jamiewalker1745 Жыл бұрын

    Amazing! Can't wait for a spare..... 5 hours to play along! 😂

  • @tandaramandaraba
    @tandaramandaraba4 ай бұрын

    if you carefully check this tutorial i think you can be master of svelte haha :D thank you man!

  • @riendlyf
    @riendlyf Жыл бұрын

    Awesome

  • @dejangegic
    @dejangegic9 ай бұрын

    That tiling window manager looks really good

  • @JoyofCodeDev

    @JoyofCodeDev

    9 ай бұрын

    It's Pop Shell.

  • @nidhish6966
    @nidhish696610 ай бұрын

    5:25 CORS is not fun stuff 😅😅. I have been using svelte kit for 3 days and I can already see why its so good. Thanks for the brief tutorial !

  • @JoyofCodeDev

    @JoyofCodeDev

    10 ай бұрын

    Thank you! 😄

  • @gramaphenia
    @gramaphenia11 ай бұрын

    Good morning, teacher. First and foremost, I must thank you for the great dedication present in this video. The content is excellent. I don't want to take up too much of your time. I just want to let you know that, as a self-taught student, I find your work invaluable. I'm reaching out to briefly mention that while working with this video at the 2:20:00 mark and in the +page.svelte file, an error appeared when using the word 'post' in the 'hgroup' and 'div'. I'm mentioning this because it might be of interest to you. The only way to solve this issue was by removing the three 'post' occurrences, and that way, all the content I was expecting rendered on the screen, and my errors disappeared. Well, I hope I'm not bothering you with my comment. Once again, I'm deeply grateful, as other methods were giving me quite a hard time. I hope you have a good week.

  • @JoyofCodeDev

    @JoyofCodeDev

    10 ай бұрын

    I appreciate you for taking the time to provide feedback. 🙏

  • @WyzrdCat
    @WyzrdCat Жыл бұрын

    I don't get why this video doesn't have hundreds of thousands of views if not a million plus

  • @greendsnow
    @greendsnow Жыл бұрын

    Now that's something! Thank you! How about mobile development with Svelte? That area is never covered anywhere. Svelte Native is a black box. Svelte with Capacitor is a complete mystery. Also PWA with Svelte... How does it work?

  • @SoreBrain

    @SoreBrain

    Жыл бұрын

    I would like to see something like svelte + electron too

  • @minikame2272
    @minikame2272 Жыл бұрын

    In the time it must have taken to craft this video, SK went and did away with the need to manually import ./$types !! It's now built straight into the VSC extension.

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    I started the SvelteKit series over 3 months ago! 😄

  • @ExiT93oRg
    @ExiT93oRg10 ай бұрын

    I'm using Angular, but thiiiis man... this is a m a z i n g 🚀 Why? => SIMPLE => CLEAN => INTUITIVE PS: Keep up your interesting presentation because you are cracking these learning videos ⭐

  • @antepenava841
    @antepenava841 Жыл бұрын

    amazing! great work, just one question did I miss it maybe or you didnt cover query params?

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    There's an example using query params.

  • @aidsadsl999
    @aidsadsl99911 ай бұрын

    thanks for this amazing tutorial. I'm wonder if there is a way to create SPA for my website?

  • @JoyofCodeDev

    @JoyofCodeDev

    11 ай бұрын

    There is: kit.svelte.dev/docs/single-page-apps.

  • @mr.nefario
    @mr.nefario Жыл бұрын

    Interesting. Did you decide to check by this video if it's still worth to write this kind of long tutorial things? Inspired by the last video.

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    It's easier to discover and I already made the series which serves both audiences.

  • @forno_nicolas
    @forno_nicolas Жыл бұрын

    Vercel is awesome

  • @redemption330
    @redemption3307 ай бұрын

    "What does X do? X gon give it to ya" got me rolling ngl 😂

  • @thedevnoteyt
    @thedevnoteyt Жыл бұрын

    Thanks for this awesome course. One question, do I need to have a basic idea of Svelte for this course ?

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    Yeah! 😄

  • @dev.mufeedcm

    @dev.mufeedcm

    Жыл бұрын

    did u learn svelte 😄

  • @thedevnoteyt

    @thedevnoteyt

    Жыл бұрын

    @@dev.mufeedcm still learning :)

  • @Ricardoromero4444
    @Ricardoromero4444 Жыл бұрын

    Please do a follow-up using TRPC!

  • @SoreBrain

    @SoreBrain

    Жыл бұрын

    Joy of code seems to be the kinda svelte guy that would say sveltekit doesn't need trpc but I would like to see a follow up too. Would probably catch the attention of t3 Fans.

  • @kickbuttowsk2i
    @kickbuttowsk2i Жыл бұрын

    🎉🎉🎉

  • @adrianfgutierrez2836
    @adrianfgutierrez2836 Жыл бұрын

    Nice job 😮. Exist a git repo of this code?

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    Not every section has it but each one has a post you can find in the description.

  • @d42
    @d424 ай бұрын

    great work. are you working on something similar for the new sveltekit version?

  • @JoyofCodeDev

    @JoyofCodeDev

    3 ай бұрын

    SvelteKit is not changed.

  • @muadzrosli
    @muadzrosli Жыл бұрын

    Hi. May I know the theme you were using for vscode? Love the colors

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    joyofcode.xyz/uses

  • @AakashGoplani
    @AakashGoplani Жыл бұрын

    Can you please add one video dedicated for debugging SSR flow in SvelteKit? Thanks!

  • @bitterheat3415
    @bitterheat3415 Жыл бұрын

    What VSCode extensions were you using during this video?

  • @dgtemp
    @dgtemp10 ай бұрын

    2:22:15 How did message data and post data combined together into the type PageData? Shouldn't you need a LayoutData type to get the message string?

  • @foitzer4839
    @foitzer48396 күн бұрын

    1:33:00 what happens if slugify gets the same title? It adds something to be different like "same-title1"?

  • @jricardoprog
    @jricardoprog Жыл бұрын

    Parsing formData on all urls can be a loophole for attacks and parsing all data as well. It is open to attacks focused on slowing down the system, increasing memory consumption... I believe that parsing only what matters and where necessary would be correct. Does anyone know any form parse lib that does this, receives the expected keys, reads the data without loading it into memory and parses only what is enabled?

  • @MrRe-sj2iv
    @MrRe-sj2iv Жыл бұрын

    Could you please make one video for i18n? I've use typesafe-i18n but somewhat not satisfied.

  • @esdev
    @esdev7 ай бұрын

    what shortcut use to generate or JSON.stringify() in one go?

  • @JoyofCodeDev

    @JoyofCodeDev

    7 ай бұрын

    I made a video on it: kzread.info/dash/bejne/f56XqY-lZZnPZso.html.

  • @budsyremo
    @budsyremo7 ай бұрын

    I noticed something : At 2:08:22 const response = await fetch('/api/posts'); const posts : Post[] = await response.json(); So do we need to have await for a response too since we have already received the result ?

  • @kyoumei

    @kyoumei

    5 ай бұрын

    The json() method returns a promise, so you need to await it. Otherwise, you'll get a promise of Posts which you can't really do much with synchronously

  • @esiwk7
    @esiwk7 Жыл бұрын

    한국어. 자막이있다면 너무좋았을거에요. 감사합니다

  • @good-dev-student
    @good-dev-student Жыл бұрын

    Try drizzle orm instead of Prisma 🎉

  • @JoyofCodeDev

    @JoyofCodeDev

    Жыл бұрын

    It's on my list.

  • @Damienxx
    @Damienxx7 ай бұрын

    Hello JoC, do you plan to record a material like this about SvelteKit 2?

  • @JoyofCodeDev

    @JoyofCodeDev

    7 ай бұрын

    SvelteKit 2 is mostly just a version bump with some improvements because they upgraded to Vite 5 but there are no major breaking changes and everything works the same as before.

  • @ilahazs

    @ilahazs

    6 ай бұрын

    It's almost indentical

  • @novakoder
    @novakoder10 ай бұрын

    Sorry, about the section of form enhancement around 3:35:00 you say that you can do checks before the form submits, and use "check if username is available before submitting" example. Can I ask how can you perform this type of action if it needs to be performed by the server, checking the database? Using an API call? I think that using enhance, I will display the error after I did the check in the server file, am I wrong?

  • @JoyofCodeDev

    @JoyofCodeDev

    10 ай бұрын

    You do it inside the form action.

  • @novakoder

    @novakoder

    10 ай бұрын

    @@JoyofCodeDev Let's say I'm using PocketBase as database, I can't (or usually I don't) use it in the +page.svelte but in the +page.server.ts. You will do it with an api fetch or something similar?

  • @nykowow
    @nykowow2 ай бұрын

    You created an api with svelte, does that mean I don't need a backend server because I can do everything with svelte except the database?

  • @JoyofCodeDev

    @JoyofCodeDev

    2 ай бұрын

    It depends what you're doing.