<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tuomo Kankaanpää</title>
    <description>The latest articles on DEV Community by Tuomo Kankaanpää (@tumee).</description>
    <link>https://dev.to/tumee</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F79821%2Feb7d28e4-d891-421e-ae94-1676afbb12fb.jpg</url>
      <title>DEV Community: Tuomo Kankaanpää</title>
      <link>https://dev.to/tumee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tumee"/>
    <language>en</language>
    <item>
      <title>Dump the mouse</title>
      <dc:creator>Tuomo Kankaanpää</dc:creator>
      <pubDate>Fri, 20 Dec 2024 10:52:30 +0000</pubDate>
      <link>https://dev.to/tumee/dump-the-mouse-794</link>
      <guid>https://dev.to/tumee/dump-the-mouse-794</guid>
      <description>&lt;p&gt;When I started to use keyboard shortcuts, instead of relying on the mouse, everything changed. &lt;/p&gt;

&lt;p&gt;I got faster and more efficient in writing code plus I actually have to remember less things now. In today's email I want to show you my top 3 keyboard shortcuts that I use every day all the time:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. CMD + TAB (ALT + TAB) - Change between open windows
&lt;/h3&gt;

&lt;p&gt;This is by far the most important and most used shortcut for me. I am amazed how many times I run into people who don't use this. I could not live without this! If you don't use it yet, START NOW!&lt;/p&gt;

&lt;h3&gt;
  
  
  2. CMD + S (CTRL + S) - Save
&lt;/h3&gt;

&lt;p&gt;If you are using your mouse to save your code, I am sorry but you are doing it wrong. I save my code hundreds of times a day and doing it without a shortcut would not only be a lot more work but it would be much slower too.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. CMD + SPACE (WIN) - Search / open any app
&lt;/h3&gt;

&lt;p&gt;I don't use mouse for opening up apps and files. I always open up the spotlight search (Start menu in Windows) and type in the app name. Opening everything this way is first of all faster, but it also saves you from having to remember where everything is.&lt;/p&gt;

&lt;h3&gt;
  
  
  Start using them
&lt;/h3&gt;

&lt;p&gt;The problem with keyboard shortcuts is that you don't know that you need them until you use them.&lt;/p&gt;

&lt;p&gt;Learning to remember new keyboard shortcuts might feel like harder thing to do than just keep using your mouse. I have been coding for the better part of 10 years and using computers daily over 20 years and if there is one tip I would give, it is to start using keyboard shortcuts. It is one of those things that you need to try out yourself to realise how handy they are.&lt;/p&gt;

&lt;p&gt;Try to adopt one of the shortcuts above and I promise, you won't go back using your mouse for that function.&lt;/p&gt;

&lt;p&gt;Cheers, Tuomo&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS. If you’re looking to grow as a developer, then my newsletter is for you.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I will show you how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Speak confidently in meetings &amp;amp; presentations&lt;/li&gt;
&lt;li&gt;Reduce stress&lt;/li&gt;
&lt;li&gt;Become a developer everybody wants on their team&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://bit.ly/hdpdev" rel="noopener noreferrer"&gt;Join hundreds other subscribers here!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>programming</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>4 Caching Mechanisms Next.js Uses to Optimize Application Performance</title>
      <dc:creator>Tuomo Kankaanpää</dc:creator>
      <pubDate>Thu, 04 Apr 2024 16:09:11 +0000</pubDate>
      <link>https://dev.to/tumee/4-caching-mechanisms-nextjs-uses-to-optimize-application-performance-5eo8</link>
      <guid>https://dev.to/tumee/4-caching-mechanisms-nextjs-uses-to-optimize-application-performance-5eo8</guid>
      <description>&lt;p&gt;Caching in Next.js is hard to understand, but it doesn't have to be.&lt;/p&gt;

&lt;p&gt;Next.js does a lot of caching under the hood to improve app performance. It does this by using different kind of caching mechanisms that all have their differences and use cases. Once you know the mechanisms you can better and easier understand how the caching as a whole works.&lt;/p&gt;

&lt;p&gt;In this post I'll go through all four mechanisms and explain their differences. This will give you a deeper understanding of Next.js and help you make better decisions when designing your application.&lt;/p&gt;

&lt;p&gt;Let's dive in!&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Request Memoization
&lt;/h2&gt;

&lt;p&gt;Common problem we have in React is that we need same data in multiple components of our app.&lt;/p&gt;

&lt;p&gt;To solve this problem we can pass the data as props, add some kind of global state to store our data in or we can just fetch the data from an api in every component we need it. In my experience this can get complicated pretty fast and it is not efficient. So we need a better solution for this kind of situations.&lt;/p&gt;

&lt;p&gt;Enter Fetch Memoization.&lt;/p&gt;

&lt;p&gt;In Next.js we can indeed make a fetch request in each component that needs the data, without worrying about efficiency. This is because the fetch requests are memoized (=cached) inside &lt;strong&gt;server components&lt;/strong&gt;. So whenever you make a fetch request inside a server component, the return value of it is cached.&lt;/p&gt;

&lt;p&gt;For example&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;1st fetch to /products -&amp;gt; hits the api endpoint and returns the data which is then cached&lt;/li&gt;
&lt;li&gt;2nd fetch to /products -&amp;gt; does not hit the api endpoint and data is returned from the cache&lt;/li&gt;
&lt;li&gt;3rd fetch to /products -&amp;gt; does not hit the api endpoint and data is returned from the cache&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The fetch request memoization lasts the &lt;strong&gt;lifetime of a request&lt;/strong&gt;, so the cache won’t be persisted over requests.&lt;/p&gt;

&lt;p&gt;Even though it might rise red flags at first, seeing same fetch request in multiple components, it is actually very good and efficient way to utilise data in your Next.js app.&lt;/p&gt;

&lt;p&gt;​&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Data Cache
&lt;/h2&gt;

&lt;p&gt;Where fetch memoization cached the fetch requests per request, data cache persists the results of data fetches across incoming server requests and deployments.&lt;/p&gt;

&lt;p&gt;When we make a fetch request in a server component, Next.js first checks if the fetch request is memoized. If not, it checks the data cache if the request is cached there. If not, only then will it make the request to the actual api.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;GET /products -&amp;gt; is fetch memoized: false -&amp;gt; is in data cache: false -&amp;gt; hit the api&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Data cache &lt;strong&gt;persists the cache across server requests and even deployments&lt;/strong&gt;. This means that we have to define or explicitly tell it when to revalidate or clear the cache. Data cache can be revalidated using either time-based revalidation or on-demand revalidation.&lt;/p&gt;

&lt;p&gt;Data cache shines when you have a page which data rarely changes e.g. blog post. Whereas for a comment block, using data cache is not ideal because the data changes more often.&lt;/p&gt;

&lt;p&gt;We can &lt;strong&gt;opt out using data cache by giving cache: 'no-store'&lt;/strong&gt; setting for the fetch request. This means the data will be fetched whenever the fetch is called.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1isaaya1el8281yffrul.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1isaaya1el8281yffrul.jpeg" alt="We can opt out using Data Cache by setting cache: 'no-store' option for a fetch request."&gt;&lt;/a&gt;&lt;br&gt;
​&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Full Route Cache
&lt;/h2&gt;

&lt;p&gt;This mechanism revolves around rendering and caching static pages &lt;strong&gt;during the build time rather than during runtime.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you build your application, Next.js identifies pages that are static, pages that don’t use any dynamic data such as user-specific information or query parameters. These static pages will then be cached to full route cache. When a user then requests this kind of page, it will be served directly from the cache instead of it being rendered when request arrives, making the page much faster.&lt;/p&gt;

&lt;h3&gt;
  
  
  There are three ways to opt out of the full route cache
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Using dynamic functions such as cookies, headers or searchParams&lt;/li&gt;
&lt;li&gt;Opt out using data cache. If a page has a fetch request that is not cached, it will also opt out the full route cache.&lt;/li&gt;
&lt;li&gt;Using “dynamic = ‘force-dynamic’” or “revalidate = 0” in route segment config options.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Places where full route cache works well is e.g. blog post page. Yes it uses probably data from an api or database, but it rarely changes and it is data that we already have in build time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full route cache does persists across requests but not across deployments&lt;/strong&gt;. This is why if we want to clear the cache, we need to either invalidate the cache or re-build &amp;amp; deploy our application. Invalidating can be done with on-demand revalidation to the data cache.&lt;/p&gt;

&lt;p&gt;It's important to note also that the Next.js full route cache is effective only in &lt;strong&gt;production environments&lt;/strong&gt;. During development, requests are dynamically rendered, meaning they are not saved to full route cache, to facilitate rapid iteration and debugging.&lt;/p&gt;

&lt;p&gt;​&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Router Cache
&lt;/h2&gt;

&lt;p&gt;Router cache is used for caching route segments &lt;strong&gt;in the browser&lt;/strong&gt;, so unlike the previous mechanisms this one saves the cached data to the browser.&lt;/p&gt;

&lt;p&gt;Next.js automatically &lt;strong&gt;caches visited routes, but also possible future routes&lt;/strong&gt; by prefetching all the pages that are pointed to by Link components on the given page. If the Link component is in the viewport, page it is pointing to will be pre-fetched and cached to the router cache.&lt;/p&gt;

&lt;p&gt;Thanks to router cache, there is no full-page reloads between navigations and we get the instant backward / forward navigation that we are used to with Next.js.&lt;/p&gt;

&lt;p&gt;There is &lt;strong&gt;no way to opt out using router cache&lt;/strong&gt;, but we can invalidate it by calling router.refresh, revalidatePath or revalidateTag. Cache will be cleared on a page refresh too.&lt;/p&gt;

&lt;p&gt;​&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Next.js uses these four mechanisms under the hood to handle caching of our applications.&lt;/p&gt;

&lt;p&gt;As we see it is not super clear and simple on the first glance how they work. Understanding at least the basics of them and how they work together, will in my opinion help you make more informed decisions when faced with design choices with your own applications.&lt;/p&gt;

&lt;p&gt;Hopefully this has helped you at least a bit to understand how caching works in Next.js.&lt;/p&gt;

&lt;p&gt;Here is an excellent table from &lt;a href="https://nextjs.org/docs/app/building-your-application/caching" rel="noopener noreferrer"&gt;Next.js caching docs&lt;/a&gt;, summarising the four mechanisms.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdvp283kovajorko31akw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdvp283kovajorko31akw.jpeg" alt="Summary of all the four caching mechanisms."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you like posts like this, you might enjoy my exclusive newsletter.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In-depth web dev content I don't talk about anywhere else&lt;/li&gt;
&lt;li&gt;Exclusive Q&amp;amp;A videos only for newsletter subscribers&lt;/li&gt;
&lt;li&gt;Lessons learned working +10 years as a web developer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Join here: &lt;a href="https://bit.ly/tk-signup" rel="noopener noreferrer"&gt;https://bit.ly/tk-signup&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Want FASTER build time with Next.js? DO THIS! ⚡</title>
      <dc:creator>Tuomo Kankaanpää</dc:creator>
      <pubDate>Tue, 28 Dec 2021 16:53:43 +0000</pubDate>
      <link>https://dev.to/tumee/want-faster-build-time-with-nextjs-do-this-39lc</link>
      <guid>https://dev.to/tumee/want-faster-build-time-with-nextjs-do-this-39lc</guid>
      <description>&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;my newsletter&lt;/a&gt;. If you want to stay up to date and read these as soon as they are published, &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;sign up&lt;/a&gt; for the newsletter!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ahoy,&lt;/p&gt;

&lt;p&gt;In my last email I mentioned that I was planning on still making one or two Next.js videos this year. Last week I published one of those.&lt;/p&gt;

&lt;p&gt;The video is about reducing your Next.js application build time with Incremental Static Regeneration (ISR).&lt;/p&gt;

&lt;p&gt;This Next.js feature is super cool since it allows you, among other things, to render dynamic content on static pages!&lt;/p&gt;

&lt;h3&gt;
  
  
  Want FASTER build time with Next.js? DO THIS!
&lt;/h3&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/r3yqNI4v47g"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;I also published another video about how you can use GIT branches to easily test different features or make a demo of a new feature. If your GIT-game is not in a good shape, this video is great refresher / tutorial for you!&lt;/p&gt;

&lt;h3&gt;
  
  
  Use this GIT trick to test new features fast &amp;amp; easily
&lt;/h3&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/DSyg1MJVBTY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;That's all for this week!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Tuomo&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>webdev</category>
      <category>git</category>
    </item>
    <item>
      <title>Underrated Next.js feature 🤯</title>
      <dc:creator>Tuomo Kankaanpää</dc:creator>
      <pubDate>Fri, 10 Dec 2021 14:42:16 +0000</pubDate>
      <link>https://dev.to/tumee/underrated-nextjs-feature-56ii</link>
      <guid>https://dev.to/tumee/underrated-nextjs-feature-56ii</guid>
      <description>&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;my newsletter&lt;/a&gt;. If you want to stay up to date and read these as soon as they are published, &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;sign up&lt;/a&gt; for the newsletter!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ahoy,&lt;/p&gt;

&lt;p&gt;Winter has come to Finland. It has been snowing a lot and the temperature has been around -15C for the past week or two. Although I love that there is snow (helps with the darkness) and cold weather in December, I have been mostly staying inside and doing a lot of coding lately.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7gu2qjewl47lu5y52s0l.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7gu2qjewl47lu5y52s0l.jpg" alt="Winter is here!" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On top of coding, I have been planning to do one or two Next.js videos before the end of the year. As always, if you have any wishes or suggestions on what kind of videos you would like me to do, let me know (reply this email or &lt;a href="https://www.twitter.com/tuomokankaanpaa"&gt;hit me up on Twitter&lt;/a&gt;)!&lt;/p&gt;

&lt;h2&gt;
  
  
  Latest Youtube videos
&lt;/h2&gt;

&lt;p&gt;As always, I have been uploading one video per week on my &lt;a href="https://www.youtube.com/tuomokankaanpaa"&gt;Youtube channel&lt;/a&gt;. Here are the latest videos from the channel since my last email.&lt;/p&gt;

&lt;h3&gt;
  
  
  Need to show DRAFT content in PRODUCTION? THIS IS HOW!
&lt;/h3&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/bQRhCTlXJQw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;This is part 3 of the unofficial "Building a blog with Next.js" series.&lt;/p&gt;

&lt;p&gt;In this part we add possibility to view draft blog posts from the headless CMS in production environment. So there is no need for a preview or staging environment and it enables you (or who ever writes the blog posts) to preview the posts in the environment they will be shown for end users.&lt;/p&gt;

&lt;p&gt;This is possible with the Next.js Preview feature. Preview feature is one of the less talked about features in Next.js. I also think it is kind of underrated, even though it makes it possible to easily implement the draft content viewing feature, which is in my opinion crucial for every blog application.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best VS Code Theme! My HONEST opinion.
&lt;/h3&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/6C26mVeDjxo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;I have been looking for a nice new theme for my VS Code and I think I've finally found one that I really like. You might have seen me using it already in some of the previous videos since I've been testing it out for some time now.&lt;/p&gt;

&lt;p&gt;So in this video I want to share with you this theme I currently use in my VS Code. Even though I really love this theme, I reserve the right to change my opinion in the future if I come across an even more awesome theme 😂&lt;/p&gt;

&lt;p&gt;That's all for this week!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Tuomo&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>vscode</category>
      <category>watercooler</category>
      <category>javascript</category>
    </item>
    <item>
      <title>If you use React, DO THIS!</title>
      <dc:creator>Tuomo Kankaanpää</dc:creator>
      <pubDate>Fri, 26 Nov 2021 16:41:14 +0000</pubDate>
      <link>https://dev.to/tumee/if-you-use-react-do-this-gh8</link>
      <guid>https://dev.to/tumee/if-you-use-react-do-this-gh8</guid>
      <description>&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;my newsletter&lt;/a&gt; last week. I publish previous week's newsletter here on the blog. If you want to read these as soon as they are published, &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;sign up&lt;/a&gt; for the newsletter!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ahoy,&lt;/p&gt;

&lt;p&gt;Are you using React? If your answer is YES then you need to keep reading!&lt;/p&gt;

&lt;p&gt;When using React, browsing the React docs is something that at least I do frequently. So I was super excited when I learned that the React team is rewriting the documentation and we can actually already access the new docs!&lt;/p&gt;

&lt;p&gt;The new React.js docs are still in beta and a work in progress but by going to &lt;a href="https://beta.reactjs.org"&gt;beta.reactjs.org&lt;/a&gt; you can already take them for a spin!&lt;/p&gt;

&lt;h2&gt;
  
  
  So what's new in the docs?
&lt;/h2&gt;

&lt;p&gt;One of the things that I really like in the new docs is the fact that all the explanations are written using Hooks and functional components rather than classes and class based components.&lt;/p&gt;

&lt;p&gt;For me I'm nowadays always using hooks + functional components and the only time I use class based components is when I'm working with an older codebase and modify existing components.&lt;/p&gt;

&lt;p&gt;I uploaded a video this week talking about all my thoughts on the new docs and I also go more in depth on what's new in them. You can watch the video on the &lt;a href="https://www.youtube.com/tuomokankaanpaa"&gt;Youtube channel&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/LyrZEho45yw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;That's all for this week!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Tuomo&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Working on my Next.js Crash Course 📚</title>
      <dc:creator>Tuomo Kankaanpää</dc:creator>
      <pubDate>Fri, 12 Nov 2021 08:01:13 +0000</pubDate>
      <link>https://dev.to/tumee/working-on-my-nextjs-crash-course-4nch</link>
      <guid>https://dev.to/tumee/working-on-my-nextjs-crash-course-4nch</guid>
      <description>&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;my newsletter&lt;/a&gt; last week. I publish previous week's newsletter here on the blog. If you want to read these as soon as they are published, &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;sign up&lt;/a&gt; for the newsletter!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ahoy,&lt;/p&gt;

&lt;p&gt;If last email was a bit long, this one will be a shorter one.&lt;/p&gt;

&lt;p&gt;I didn't upload any videos last week because since the week before was so hectic with Next.js conf and uploading three different videos on &lt;a href="https://www.youtube.com/tuomokankaanpaa"&gt;the channel&lt;/a&gt;, I felt like taking a bit time off from making videos was sufficient.&lt;/p&gt;

&lt;p&gt;I wasn't sitting on my hands though! I was working on planning my next couple of videos. One of which will be the next part of my Next.js Crash Course.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next.js Crash Course
&lt;/h2&gt;

&lt;p&gt;If you didn't know, I have a Next.js Crash Course on my &lt;a href="https://www.youtube.com/tuomokankaanpaa"&gt;Youtube channel&lt;/a&gt;. I was contemplating on making the course a &lt;a href="https://www.skillshare.com/r/user/tume"&gt;Skillshare&lt;/a&gt; course, but decided to make it free and available on Youtube. You can find the course from &lt;a href="https://www.youtube.com/playlist?list=PLxCkFZQohykkReLJlYsrAoMFjB1b2w7CT"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The course is "work in progress" because instead of making the full course and then publishing it, I decided to publish the videos one by one. That said, I don't have all the videos made yet, so if there is something you would like me to cover, let me know by replying to this email!&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;As I said, this week's email was a shorter one. I want to respect your time and I don't want to make the email a longer one just for the sake of it. Hope you have a great rest of the week!&lt;/p&gt;

&lt;p&gt;That's all for this week!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Tuomo&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>jamstack</category>
    </item>
    <item>
      <title>Week full of Next.js</title>
      <dc:creator>Tuomo Kankaanpää</dc:creator>
      <pubDate>Sat, 06 Nov 2021 09:56:30 +0000</pubDate>
      <link>https://dev.to/tumee/week-full-of-nextjs-37di</link>
      <guid>https://dev.to/tumee/week-full-of-nextjs-37di</guid>
      <description>&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;my newsletter&lt;/a&gt; last week. I publish previous week's newsletter here on the blog. If you want to read these as soon as they are published, &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;sign up&lt;/a&gt; for the newsletter!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ahoy,&lt;/p&gt;

&lt;p&gt;Past week was full of web development and Next.js!&lt;/p&gt;

&lt;h2&gt;
  
  
  Next.js + Headless CMS + GraphQL - Next.js tutorial for beginners
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/_VIF1if-dNA"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;I released an extensive Next.js tutorial which was almost an hour long. I have never done a tutorial this extensive before. It was great to be able to finally release it because I had been working on it quite a lot.&lt;/p&gt;

&lt;p&gt;The tutorial teaches you how to integrate a headless CMS to a Next.js blog application. This was a part 2 for the "&lt;a href="https://www.youtube.com/watch?v=giHGL3ZppTQ"&gt;Building a blog with Next.js - Next.js tutorial for beginners&lt;/a&gt;" tutorial I mentioned in the newsletter &lt;a href="https://tuomokankaanpaa.com/blog/how-to-build-a-blog-with-next-js"&gt;couple of weeks ago&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can find the tutorial (both part 1 and part 2) from the &lt;a href="https://www.youtube.com/tuomokankaanpaa"&gt;Youtube channel&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next.js Conf
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://nextjs.org/conf"&gt;Next.js conf&lt;/a&gt; 2021 was held on 26.10.2021. I watched the conference live and was really excited about all the new things that were announced. Here are some highlights.&lt;/p&gt;

&lt;h3&gt;
  
  
  Next.js 12
&lt;/h3&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/S9jrLAyVvx4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;First of all Next.js 12 was announced which is their biggest release ever. With Next.js 12 we get faster build and fast refresh times, URL imports, Native ES Modules support and Next.js Middleware just to mention few.&lt;/p&gt;

&lt;p&gt;If you want to learn more about Next.js 12, I made a video detailing and explaining all the new features and improvements of Next.js 12. You can watch it on the &lt;a href="https://www.youtube.com/tuomokankaanpaa"&gt;Youtube channel&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vercel edge functions
&lt;/h3&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/NlBSheYPKkg"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Another thing that was announced in the Next.js conf was &lt;a href="https://www.vercel.com/edge"&gt;Vercel Edge functions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This is how edge functions are described by the &lt;a href="https://vercel.com/docs/concepts/functions/edge-functions"&gt;docs&lt;/a&gt;: To achieve both speed and dynamism, you can use Edge Functions. They allow you to deliver content to your sites visitors with speed and personalization, are deployed globally by default on Vercel's Edge Network, and have zero cold starts. They enable you to move server-side logic to the Edge, close to your visitors origin.&lt;/p&gt;

&lt;p&gt;These were a bit hard for me to first understand at first when watching the conference. After the conference I started to study them in more in depth. After some hours spent drinking coffee and reading docs and testing different things, I finally was able to wrap my head around them.&lt;/p&gt;

&lt;p&gt;At this point I felt that I wanted to make a video sharing what I had learned. So I published my third video of the week: &lt;a href="https://www.youtube.com/watch?v=NlBSheYPKkg"&gt;Next.js 12 - Middleware &amp;amp; Edge functions explained&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In the video I also explain what the new Next.js 12 feature Middleware is because it is actually something that works together with Edge functions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping it up
&lt;/h2&gt;

&lt;p&gt;So as you can see, it was a pretty busy but exciting week! I am super excited that I was able to make the videos about Next.js 12 and Edge functions + Middleware this week, on top of my regular Tuesday video.&lt;/p&gt;

&lt;p&gt;It is also encouraging that the videos got a really good response and you guys have really liked them! So I want to say thank you for all the comments and likes you have sent!&lt;/p&gt;

&lt;p&gt;That's all for this week!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Tuomo&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>webdev</category>
      <category>jamstack</category>
      <category>javascript</category>
    </item>
    <item>
      <title>React state management: Context API vs Recoil 🎯</title>
      <dc:creator>Tuomo Kankaanpää</dc:creator>
      <pubDate>Mon, 01 Nov 2021 17:49:08 +0000</pubDate>
      <link>https://dev.to/tumee/react-state-management-context-api-vs-recoil-30mb</link>
      <guid>https://dev.to/tumee/react-state-management-context-api-vs-recoil-30mb</guid>
      <description>&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;my newsletter&lt;/a&gt; last week. I publish previous week's newsletter here on the blog. If you want to read these as soon as they are published, &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;sign up&lt;/a&gt; for the newsletter!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ahoy,&lt;/p&gt;

&lt;p&gt;For the past week I have been diving more into React state management. Especially I have learned more about Recoil and the Context API. I also published a new video on the Youtube channel listing some of my favourite Github repos for developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  React Context API vs Recoil
&lt;/h2&gt;

&lt;p&gt;I found myself needing some sort of state management for a small React application. I have previously worked with Redux, but in this case I felt like it would just be overkill to use Redux and I would be better off with something a bit lighter.&lt;/p&gt;

&lt;p&gt;So even though there is bunch of different state management options available when it comes to React applications, I decided to test the &lt;a href="https://reactjs.org/docs/context.html"&gt;Context API&lt;/a&gt; and &lt;a href="https://github.com/facebookexperimental/Recoil"&gt;Recoil&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I was able to create a working "Redux-like" solution using the Context API based on &lt;a href="https://kentcdodds.com/blog/how-to-use-react-context-effectively"&gt;this&lt;/a&gt; blog post by Kent C Dodds. It worked well but it still had some boilerplate code that could probably be avoided. So it was Recoil's turn.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk7s59m01p2dj2i6lf2t1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk7s59m01p2dj2i6lf2t1.png" alt="Recoil" width="600" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Recoil turned out to be super handy and easy to understand. The learning curve was super shallow and I was able to get the hang of it pretty quickly.&lt;/p&gt;

&lt;p&gt;With Recoil it was easy to create a new piece of state and then just use it across the application. I'm not going to go any deeper right now on how Recoil works. Let me know if you would like to see Recoil demo or tutorial video and I shall do that.&lt;/p&gt;

&lt;p&gt;The downside with Recoil is that it is still "an experimental set of utilities for state management with React.". So using it in production might be a bit sketchy.&lt;/p&gt;

&lt;p&gt;I tried to find out if Recoil has some kind of roadmap or information on when they are planning on lifting the experimental status, but with no luck. So I guess time will tell when that is happening.&lt;/p&gt;

&lt;p&gt;At first I was a bit sceptical about Recoil, thinking that it might just be "another state management library" but I am happy to be proven wrong.&lt;/p&gt;

&lt;p&gt;Regardless of Recoil's experimental status, I am definitely going to keep using Recoil on smaller apps in the future. Given that it is developed by Facebook, it has over 14k stars on Github and bunch of contributors and users, chances are it is not going anywhere and it will keep getting better over time.&lt;/p&gt;

&lt;p&gt;I would love to hear your experiences on state management with React apps, what are you using and why? You can &lt;a href="https://www.twitter.com/tumee"&gt;tweet&lt;/a&gt; your answer to me.&lt;/p&gt;

&lt;h2&gt;
  
  
  Top Github repos for Web developers
&lt;/h2&gt;

&lt;p&gt;As usual, I published one video on the &lt;a href="https://www.youtube.com/tuomokankaanpaa"&gt;Youtube channel&lt;/a&gt; this week.&lt;/p&gt;

&lt;p&gt;There are bunch of different repos that I use and that have helped me over the time. So in this video I share 7 amazing repositories that will help you as a developer!&lt;/p&gt;

&lt;p&gt;You can watch the video below. If you are not yet subscribed to the Youtube channel you can do it from &lt;a href="https://www.youtube.com/channel/UC34UXFLKqdW3cpk5CBu2Siw?sub_confirmation=1"&gt;this link&lt;/a&gt;. By subscribing you get notified on all the latest videos and it is a great way to show your support for me!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/UAzWXI_tJyg"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;That's it for this week!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Tuomo&lt;/p&gt;

</description>
      <category>react</category>
      <category>redux</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How to build a blog with Next.js 👨‍💻</title>
      <dc:creator>Tuomo Kankaanpää</dc:creator>
      <pubDate>Fri, 22 Oct 2021 14:18:38 +0000</pubDate>
      <link>https://dev.to/tumee/how-to-build-a-blog-with-nextjs-10e8</link>
      <guid>https://dev.to/tumee/how-to-build-a-blog-with-nextjs-10e8</guid>
      <description>&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="//www.tuomokankaanpaa.com/newsletter"&gt;my newsletter&lt;/a&gt; last week. I publish previous week's newsletter here on the blog. If you want to read these as soon as they are published, &lt;a href="//www.tuomokankaanpaa.com/newsletter"&gt;sign up&lt;/a&gt; for the newsletter!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ahoy,&lt;/p&gt;

&lt;p&gt;Couple of weeks ago &lt;a href="https://tuomokankaanpaa.com/blog/best-vs-code-features-learning-material-ui"&gt;I wrote&lt;/a&gt; that I was working on a Next.js blog application and planning on making a video about it. I finally got the video done and I published it on the &lt;a href="//www.youtube.com/tuomokankaanpaa"&gt;Youtube channel&lt;/a&gt; last week.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/giHGL3ZppTQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;I ended up making it a two part video. In the first part, that is now published, I teach how to create a basic blog application with Next.js and in the process I will go through some basic concepts of Next.js, that are important to know especially for Next.js beginners.&lt;/p&gt;

&lt;p&gt;The second part I am planning on publishing in the near future (maybe next week). That will be about integrating a headless CMS with the blog. So after that the blog will basically be ready to use in production.&lt;/p&gt;

&lt;p&gt;Ok to be honest, it could use some styling before production, so I might also do another video about styling the blog and making it look a bit more nice. Let me know if this is something you would be interested in!&lt;/p&gt;

&lt;p&gt;Design is really a part that I probably struggle the most. If I have a design ready and I only need to implement it, that's easy. But making the actual design is not my strong suit. So it will be fun to try to implement that to the application and I am sure that I will learn a ton while working on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Top picks for this week 🎯
&lt;/h2&gt;

&lt;p&gt;⚡ &lt;a href="https://medium.com/quick-code/14-important-rules-that-every-developer-should-follow-9839a574b59e"&gt;14 Rules That Will Make You A Better Developer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⚡ &lt;a href="https://medium.com/quick-code/15-tips-to-instantly-improve-as-a-programmer-9c9dde55471f"&gt;How to Improve as a Programmer?&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⚡ &lt;a href="https://www.githubuniverse.com/"&gt;Github Universe (Oct 27-28)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it for this week!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Tuomo&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>jamstack</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to deploy Next.js app to production 🚢</title>
      <dc:creator>Tuomo Kankaanpää</dc:creator>
      <pubDate>Sun, 17 Oct 2021 16:47:20 +0000</pubDate>
      <link>https://dev.to/tumee/how-to-deploy-nextjs-app-to-production-dei</link>
      <guid>https://dev.to/tumee/how-to-deploy-nextjs-app-to-production-dei</guid>
      <description>&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;my newsletter&lt;/a&gt; last week. I publish previous week's newsletter here on the blog. If you want to read these as soon as they are published, &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;sign up&lt;/a&gt; for the newsletter!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ahoy,&lt;/p&gt;

&lt;p&gt;This week was pretty Jamstack focused for me. This was because of two reasons.&lt;/p&gt;

&lt;h2&gt;
  
  
  Jamstack conf
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://jamstackconf.com/"&gt;Jamstack conf&lt;/a&gt; was held 6.10-7.10 as a virtual conference. The first day was full of talks and the second day was dedicated to workshops. I wasn't able to participate on the workshops but I got a good dose of Jamstack watching the first day talks.&lt;/p&gt;

&lt;p&gt;If you missed the conference, no worries! You can find the videos of the talks from this playlist: &lt;a href="https://www.youtube.com/playlist?list=PL58Wk5g77lF-XaNacKxWk7yOKgeCMveAS"&gt;https://www.youtube.com/playlist?list=PL58Wk5g77lF-XaNacKxWk7yOKgeCMveAS&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to deploy Next.js app to production
&lt;/h2&gt;

&lt;p&gt;This week's video on the &lt;a href="https://www.youtube.com/tuomokankaanpaa"&gt;Youtube channel&lt;/a&gt; was also about Jamstack, well Next.js to be more specific.&lt;/p&gt;

&lt;p&gt;In the video I show you how to deploy your Next.js application to production (using Vercel) and setup the deploy in a way that it automatically deploys your app when ever there is updated code in your Github main branch.&lt;/p&gt;

&lt;p&gt;Setting it up is one of the easiest setups I know, because Vercel does all the heavy lifting and all you pretty much have to do is point Vercel to your Github repo and you are good to go.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/vFjlw3LaAcw"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=vFjlw3LaAcw"&gt;📹 View on Youtube&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Non-coding stuff
&lt;/h2&gt;

&lt;p&gt;While not working on coding stuff, I did some reading and actually read one whole book this week (rocking the Kindle!). The book I read was &lt;a href="https://amzn.to/3DBBDQD"&gt;Take Your Shot&lt;/a&gt; by Robin Waite.&lt;/p&gt;

&lt;p&gt;I liked the book a lot because it teaches business skills but in an interesting and captivating way. The book uses storytelling as a way of teaching which in my opinion is a great. You are entertained by the story but at the same time you learn a bunch. One other book that uses this kind of approach marvellously is &lt;a href="https://amzn.to/302w7aZ"&gt;The Wealthy Barber&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I warmly recommend reading Take your shot and Wealthy Barber if you haven't already!&lt;/p&gt;

&lt;p&gt;That's it for this week!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Tuomo&lt;/p&gt;

</description>
      <category>jamstack</category>
      <category>nextjs</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Working with Next.js + Headless CMS 👨‍💻</title>
      <dc:creator>Tuomo Kankaanpää</dc:creator>
      <pubDate>Fri, 08 Oct 2021 09:27:46 +0000</pubDate>
      <link>https://dev.to/tumee/working-with-next-js-headless-cms-32g</link>
      <guid>https://dev.to/tumee/working-with-next-js-headless-cms-32g</guid>
      <description>&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;my newsletter&lt;/a&gt; last week. I publish previous week's newsletter here on the blog. If you want to read these as soon as they are published, &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;sign up&lt;/a&gt; for the newsletter!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ahoy,&lt;/p&gt;

&lt;p&gt;Last week I talked about my top 5 features in Visual Studio Code. After publishing that video, I actually ran into a website that lists a bunch (35 to be exact) of useful, but kind of unknown, features in VS Code.&lt;/p&gt;

&lt;p&gt;The website is &lt;a href="http://vscodecandothat.com/"&gt;vscodecandothat.com&lt;/a&gt;. I highly recommend checking it out if you use VS Code.&lt;/p&gt;

&lt;p&gt;This weeks &lt;a href="https://www.youtube.com/watch?v=qinZQstIpqY"&gt;Youtube video&lt;/a&gt; is also about vscodecandothat website. In the video I go over some of the features they have listed, that I found really helpful and cool!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/qinZQstIpqY"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=qinZQstIpqY"&gt;📹 View on Youtube&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I worked on / learned this week?
&lt;/h2&gt;

&lt;p&gt;One of the things was the Next.js blog application I mentioned &lt;a href="https://tuomokankaanpaa.com/blog/best-vs-code-features-learning-material-ui"&gt;last week&lt;/a&gt;. I tried to make it look a bit better, but I still think that it needs some work on that front 🙈&lt;/p&gt;

&lt;p&gt;Other thing I did was working on setting up a headless CMS as a datasource for the application. I started the application off with just static data in a Javascript file, but the goal is to have it use a headless CMS as a datasource.&lt;/p&gt;

&lt;p&gt;Implementing a headless CMS was pretty interesting and cool thing to explore. While working on it, I realised in practice how great it is to use technologies like Jamstack and Next.js.&lt;/p&gt;

&lt;p&gt;Swapping the datasource required some modifications on the existing application, like renaming few variables and adding the data as props instead of just direct import statement, but other than that it didn't require much work and it was surprisingly easy to swap the datasource.&lt;/p&gt;

&lt;p&gt;So at the end, I got a raw version of the blog with headless CMS working.&lt;/p&gt;

&lt;p&gt;As I mentioned in the last week's email, I am planning on shooting a video about the whole process. I think I will do two part video. First part showing how to code the blog and second part to show how to add headless CMS to the mix.&lt;/p&gt;

&lt;p&gt;What do you think? Hit the reply button and let me know if that is something you'd like to see.&lt;/p&gt;

&lt;p&gt;That's it for this week!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Tuomo&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>vscode</category>
      <category>nextjs</category>
      <category>jamstack</category>
    </item>
    <item>
      <title>Best VS Code features &amp; Learning Material UI ✏️</title>
      <dc:creator>Tuomo Kankaanpää</dc:creator>
      <pubDate>Thu, 30 Sep 2021 20:37:04 +0000</pubDate>
      <link>https://dev.to/tumee/best-vs-code-features-learning-material-ui-2o4</link>
      <guid>https://dev.to/tumee/best-vs-code-features-learning-material-ui-2o4</guid>
      <description>&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;my newsletter&lt;/a&gt; last week. I publish previous week's newsletter here on the blog. If you want to read these as soon as they are published, &lt;a href="https://www.tuomokankaanpaa.com/newsletter"&gt;sign up&lt;/a&gt; for the newsletter!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ahoy,&lt;/p&gt;

&lt;p&gt;I use Visual Studio Code as my main code editor. To be honest it is pretty much the only editor I use. There is bunch of great features in VS Code that I use daily. Features that honestly make my life a lot easier and productive.&lt;/p&gt;

&lt;p&gt;So I thought that it might be helpful to share those features in case you are not yet using them or leveraging them fully in your own workflow. You can find the features from the latest video on my &lt;a href="https://www.youtube.com/tuomokankaanpaa"&gt;Youtube channel&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ZKq5OIhKpzE"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Or if you just want to know the list, here it is&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Timeline&lt;/li&gt;
&lt;li&gt;Integrated Terminal&lt;/li&gt;
&lt;li&gt;Multiline editing&lt;/li&gt;
&lt;li&gt;Command palette&lt;/li&gt;
&lt;li&gt;Extensions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I learned this week?
&lt;/h2&gt;

&lt;p&gt;I worked on a Next.js project where I decided to use &lt;a href="https://mui.com/"&gt;Material UI&lt;/a&gt; as a component library. At first it was kind of hard to know and find what components I should use but after a while, I got actually something good looking on the screen.&lt;/p&gt;

&lt;p&gt;The project is actually a simple Next.js blog application. I plan on shooting a video about it, teaching how to code one by yourself. I'm not yet sure when I'll be making that video but it might be in the near future so &lt;a href="https://www.youtube.com/tuomokankaanpaa?sub_confirmation=1"&gt;stay tuned for that&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;I have used Material UI for the past couple of weeks on couple of projects in addition to the Next.js blog application. I am quite excited about Material UI, now that I have a bit better understanding on how the whole thing works and what kind of components should I use for certain situations and what kind of components they actually have!&lt;/p&gt;

&lt;p&gt;I have some time now thought that I need to learn something that I can use to make my apps and UIs look even half decent (I am terrible at designing and styling in general). So I was thinking of learning TailwindCSS next but now that I have worked with Material UI a bit, I'm thinking of giving Material UI a chance and learning that first. Of course they are not / don't do "the same thing" but Material UI serves the need that I have and there is only so much one can be learning simultaneously.&lt;/p&gt;

&lt;p&gt;Have you used Material UI or TailwindCSS? If you have, let me know what you think about them!&lt;/p&gt;

&lt;p&gt;That's it for this week!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Tuomo&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
