<?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: Steven Borrie</title>
    <description>The latest articles on DEV Community by Steven Borrie (@saborrie).</description>
    <link>https://dev.to/saborrie</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%2F1078549%2F0126a822-77b3-44ac-bff1-bb7b44d3f21b.jpeg</url>
      <title>DEV Community: Steven Borrie</title>
      <link>https://dev.to/saborrie</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saborrie"/>
    <language>en</language>
    <item>
      <title>The mistaken assumption of software startups</title>
      <dc:creator>Steven Borrie</dc:creator>
      <pubDate>Wed, 22 Nov 2023 05:53:49 +0000</pubDate>
      <link>https://dev.to/saborrie/the-mistaken-assumption-of-software-startups-d7b</link>
      <guid>https://dev.to/saborrie/the-mistaken-assumption-of-software-startups-d7b</guid>
      <description>&lt;p&gt;We all know that most startups must fail. But after working on many different projects, it surprised me that many seemed to struggle because of essentially the same problem - &lt;strong&gt;they underestimated the difficulty of acquiring users.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Building a product is just the first step, so here is some of my advice to deal with the real challenge of attracting and retaining users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Balance confidence with scepticism
&lt;/h2&gt;

&lt;p&gt;As a startup founder, you'll spend a lot of time talking about your ideas. While pitching confidently is essential for inspiring teams and attracting investors, it is important to balance confidence with scepticism in the planning of your product. When you're building your product, you have to ensure that you test your ideas.&lt;/p&gt;

&lt;p&gt;Don't let your confidence become dogmatic over-confidence. Until you've actually shipped anything, it's not a done deal - you don't have any users yet.&lt;/p&gt;

&lt;p&gt;You're probably working on your product because you're excited about it. You may be surprised by the indifference of your potential users - even if your product is objectively better than what they currently use, they may not care enough about the advantages to make the switch. &lt;/p&gt;

&lt;p&gt;Until you've acquired users who have begun to rely on your product, you are the one who cares the most about it, and all your potential users care less than you do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't build too much in one go
&lt;/h2&gt;

&lt;p&gt;Most ideas can be built, it just takes &lt;em&gt;time&lt;/em&gt;. The more features you include, the longer it will take. The longer it takes, the more it costs.&lt;/p&gt;

&lt;p&gt;If you have too much confidence in your idea, and in your ability to acquire users, you might conclude that you may as well build all your features now. After all, why bother having multiple releases if you're going to have tons of users as soon as you announce your completed product to the world? &lt;/p&gt;

&lt;p&gt;But that's not how it works. If you don't release and test your first features with real users immediately, you're robbing yourself of essential feedback. &lt;/p&gt;

&lt;p&gt;If your product is not complete enough to convince anyone to pay for it yet, give it to your test users for free, or &lt;em&gt;you&lt;/em&gt; can even pay &lt;em&gt;them&lt;/em&gt; to use it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gather &lt;em&gt;facts&lt;/em&gt; in your user research
&lt;/h2&gt;

&lt;p&gt;You can actually pay your potential users for information before you've built anything at all, but make sure you focus on the facts.&lt;/p&gt;

&lt;p&gt;If you ask your potential users whether they would find your product or feature idea useful, you'll get misled by the number that say "yes" when they are really a "no".&lt;/p&gt;

&lt;p&gt;They don't mean to mislead you, some might say "yes" out of politeness, but it's mostly because they can't predict their own behaviour until they actually try using it.&lt;/p&gt;

&lt;p&gt;Instead, it is better not to put too much weight on these subjective questions and to ask your potential users things that are much easier for them to answer - simple facts. You can ask them how many times in the past year they've experienced the problem that your product solves, or how much money they spend on similar products.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measure impact as well as value
&lt;/h2&gt;

&lt;p&gt;Solving a real problem is important, but impact matters equally.&lt;/p&gt;

&lt;p&gt;This is a bit like Bayes' Theorem - having a brilliant solution to a problem doesn't matter much if very few of your potential users ever experience that problem, or if they only experience it infrequently.&lt;/p&gt;

&lt;p&gt;This applies to feedback too. If 80% of your users tell you they need a new feature, but it is the other 20% that account for most of your usage, it may be more worthwhile to make small improvements that only 20% want, instead of building new features that 80% want.&lt;/p&gt;

&lt;h2&gt;
  
  
  Avoid feature overload
&lt;/h2&gt;

&lt;p&gt;The mentality of continuously adding features in the hope of attracting users can lead to product bloat. &lt;/p&gt;

&lt;p&gt;Don't assume that your struggle to acquire users is because you haven't got enough features yet, and set about adding more features that no-one will ever use.&lt;/p&gt;

&lt;p&gt;If you're testing your features &lt;del&gt;early&lt;/del&gt; immediately, you'll already know which ones are useful. Consider deleting the ones that aren't before letting your product get bloated. Quality trumps quantity.&lt;/p&gt;

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

&lt;p&gt;The path to building a successful product requires much more scepticism and adapting to feedback than you might expect. Hopefully by following these principles you will increase your chances of building not just a software product, but a thriving user base.&lt;/p&gt;

</description>
      <category>startup</category>
    </item>
    <item>
      <title>Building my portfolio blog with Dev.to and Next.js</title>
      <dc:creator>Steven Borrie</dc:creator>
      <pubDate>Thu, 11 May 2023 07:47:46 +0000</pubDate>
      <link>https://dev.to/saborrie/building-my-portfolio-blog-with-devto-and-nextjs-268f</link>
      <guid>https://dev.to/saborrie/building-my-portfolio-blog-with-devto-and-nextjs-268f</guid>
      <description>&lt;p&gt;Check out my website here: &lt;a href="https://stevenborrie.com"&gt;stevenborrie.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Previously I had experimented with tools like &lt;a href="https://nextra.site/"&gt;nextra&lt;/a&gt;, however I was unhappy with the lack of simplicity, and the default themes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dev.to API
&lt;/h2&gt;

&lt;p&gt;Turns out, the dev.to API is incredibly simple. You can give it a try: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JSON array of all my posts: &lt;a href="https://dev.to/api/articles?username=saborrie"&gt;https://dev.to/api/articles?username=saborrie&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;This post: &lt;a href="https://dev.to/api/articles/saborrie/building-my-portfolio-blog-with-devto-and-nextjs-268f"&gt;https://dev.to/api/articles/saborrie/building-my-portfolio-blog-with-devto-and-nextjs-268f&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I realised I can just put all my posts on dev.to, and use it as a CMS database for my website.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building my blog in Next.js
&lt;/h2&gt;

&lt;p&gt;All I wanted to create was 2 pages: a home page, and a blog post page. The home page would be at &lt;code&gt;/&lt;/code&gt; and the blog page at &lt;code&gt;/post/[slug]&lt;/code&gt;. On the home page, I wanted to show a list of links to all of my blog posts, and on the blog post page, I wanted to show the content based on the &lt;code&gt;[slug]&lt;/code&gt; parameter in the URL.&lt;/p&gt;

&lt;p&gt;After setting up my project using &lt;code&gt;yarn create next-app&lt;/code&gt; selecting typescript and the new app router, I added the following code to the homepage in &lt;code&gt;src/app/page.tsx&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Link&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;next/link&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Home&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;posts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://dev.to/api/articles?username=saborrie&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;next&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;revalidate&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Posts&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;posts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(({&lt;/span&gt; &lt;span class="nx"&gt;slug&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;description&lt;/span&gt; &lt;span class="p"&gt;}:&lt;/span&gt; &lt;span class="kr"&gt;any&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;`/post/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;slug&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"post-list-item"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;small&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;description&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;small&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The new app router supports server side fetching by making your page components an &lt;code&gt;async&lt;/code&gt; function. By default, Next.js will cache the results of the &lt;code&gt;fetch&lt;/code&gt; at build time. We can configure the &lt;code&gt;fetch&lt;/code&gt; to rerun during server rendering by setting the &lt;code&gt;revalidate&lt;/code&gt; setting - I've set it to revalidate every 10 seconds in the code above.&lt;/p&gt;

&lt;p&gt;To create the blog post page at &lt;code&gt;/post/[slug]&lt;/code&gt; I added the file &lt;code&gt;src/app/post/[slug]/page.tsx&lt;/code&gt;. Using the following code I am able to write out the title, cover_image, url, and body_html from the dev.to API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Post&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="p"&gt;}:&lt;/span&gt; &lt;span class="kr"&gt;any&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;post&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`https://dev.to/api/articles/francescoxx/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;slug&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;next&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;revalidate&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"post"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"cover image"&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"cover-image"&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cover_image&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;small&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;View on dev.to&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;small&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;dangerouslySetInnerHTML&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;__html&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body_html&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This worked great, except that I needed to do some work to get syntax highlighting in the code snippets. As dev.to is open source you can just go get the scss file at &lt;a href="https://github.com/forem/forem/blob/main/app/assets/stylesheets/components/syntax.scss"&gt;https://github.com/forem/forem/blob/main/app/assets/stylesheets/components/syntax.scss&lt;/a&gt;. To import scss in Next.js you need to run &lt;code&gt;yarn add sass&lt;/code&gt;. And that's it, it worked. I was then able to copy my existing css from my old nextra portfolio in and I was done.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
