<?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: John Rock</title>
    <description>The latest articles on DEV Community by John Rock (@johnrock).</description>
    <link>https://dev.to/johnrock</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%2F240700%2F505a8fdf-1e4d-4f63-9305-695744191e6a.jpeg</url>
      <title>DEV Community: John Rock</title>
      <link>https://dev.to/johnrock</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/johnrock"/>
    <language>en</language>
    <item>
      <title>Two Years Later: Not Another Portfolio Refresh</title>
      <dc:creator>John Rock</dc:creator>
      <pubDate>Mon, 09 Sep 2024 13:24:14 +0000</pubDate>
      <link>https://dev.to/johnrock/two-years-later-not-another-portfolio-refresh-4ncj</link>
      <guid>https://dev.to/johnrock/two-years-later-not-another-portfolio-refresh-4ncj</guid>
      <description>&lt;p&gt;It's been two years since I &lt;a href="https://www.johnrock.me/blog/nextjs-portfolio-site" rel="noopener noreferrer"&gt;last posted here&lt;/a&gt;, and honestly, it's wild to think about how much has happened since then. Time's definitely been weird, but working at a startup through all the craziness has warped time in its own special way.&lt;/p&gt;

&lt;p&gt;In the past two years, life has thrown a lot at me—both professionally and personally—and I figured it's time for an update. Here are some highlights:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I started working at my first startup.&lt;/li&gt;
&lt;li&gt;Bought my first house (YouTube University has been my go-to for repairs).&lt;/li&gt;
&lt;li&gt;Adopted a dog.&lt;/li&gt;
&lt;li&gt;Learned a lot about the things I do for work and fun.&lt;/li&gt;
&lt;li&gt;And yep, gave my portfolio a refresh.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before you roll your eyes about yet &lt;em&gt;another&lt;/em&gt; portfolio update, let me explain-this one's not just about showing off a new design. As a matter of fact, the design is almost exactly the same. (You'll notice the portfolio section missing as well, stay tuned-we'll build that in a later post.) It's more about reflecting on what's stayed the same and what's evolved over these past two years.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Stayed the Same?
&lt;/h2&gt;

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

&lt;p&gt;Still team Next.js here. It's hands down the most versatile platform I've worked with, and it continues to grow in all the right ways. Sure, it has its quirks like any framework, but Next.js gets the job done—whether I'm working on personal projects or dealing with the complexity of startup life.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://nextjs.org/docs/app" rel="noopener noreferrer"&gt;App Router&lt;/a&gt; was a recent game-changer for me. It's made Next.js even more adaptable and has been a fun tool to experiment with, making my workflow more efficient.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tailwind CSS
&lt;/h3&gt;

&lt;p&gt;I've also stuck with &lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;Tailwind&lt;/a&gt;. This framework's utility-first approach just works, making it quick and painless to go from a basic prototype to something polished and production-ready. I honestly can't see myself moving away from it anytime soon—it's become an essential part of my toolkit.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Changed?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  MDX Over Sanity CMS
&lt;/h3&gt;

&lt;p&gt;First off, no shade to &lt;a href="https://www.sanity.io/" rel="noopener noreferrer"&gt;Sanity CMS&lt;/a&gt;—it's still a solid platform. In fact, in my day job, I've led several migrations to Sanity because it's incredibly flexible and ticks all the boxes for stakeholders. It's one of those platforms you can't help but appreciate when you need a powerful CMS with great support.&lt;/p&gt;

&lt;p&gt;That said, for my personal site, I needed something lighter. Enter &lt;a href="https://nextjs.org/docs/pages/building-your-application/configuring/mdx" rel="noopener noreferrer"&gt;MDX&lt;/a&gt;. MDX is just simpler, which is what I was looking for. I can drop React components directly into blog posts and I don't have to mess with CMS overhead or schema configurations. It's exactly what I needed for this refresh—lightweight and efficient.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vercel Over Netlify
&lt;/h3&gt;

&lt;p&gt;I've been a fan of &lt;a href="https://www.netlify.com/" rel="noopener noreferrer"&gt;Netlify&lt;/a&gt; since 2017 for all my personal projects. It has always served me well, but after transitioning to &lt;a href="https://vercel.com/home" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt; with my team over the past couple of years, I couldn't help but notice how well it fits my current needs.&lt;/p&gt;

&lt;p&gt;The biggest thing for me is the UX—it just feels more aligned with what I'm doing now. Netlify's great, but Vercel's been the smoother choice for the direction I'm headed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;So, there it is—a two-year journey full of growth, new experiences, and of course, another portfolio refresh. If you're thinking about updating your own portfolio or rethinking your tech stack, hopefully, this gives you some ideas to consider!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>NextJS Portfolio Site</title>
      <dc:creator>John Rock</dc:creator>
      <pubDate>Mon, 14 Feb 2022 14:24:05 +0000</pubDate>
      <link>https://dev.to/johnrock/personal-site-overhaul-2n33</link>
      <guid>https://dev.to/johnrock/personal-site-overhaul-2n33</guid>
      <description>&lt;p&gt;Hi All,&lt;/p&gt;

&lt;p&gt;After two years I decided it was time to give my personal website an overhaul.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stack:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;NextJs&lt;/li&gt;
&lt;li&gt;Sanity CMS&lt;/li&gt;
&lt;li&gt;Tailwind&lt;/li&gt;
&lt;li&gt;Netlify&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've been enjoying working with this stack lately. I was a little apprehensive about Tailwind at first but after working with it recently on a few projects I can safely say that I am a fan. On the previous version of my site I used NetlifyCMS and while I didn't have issues with that SanityCMS has just been a blast to work with. With their robust plugin system, community Slack, and impressive documentation it is currently my go-to CMS.&lt;/p&gt;

&lt;p&gt;I plan on writing more about the inner workings of this site in the future but for now take a look and let me know what you think. Any feedback is appreciated :)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://johnrock.me/"&gt;https://johnrock.me/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>nextjs</category>
      <category>tailwindcss</category>
      <category>portfolio</category>
    </item>
    <item>
      <title>Benford's Law Calculator</title>
      <dc:creator>John Rock</dc:creator>
      <pubDate>Mon, 17 Aug 2020 02:36:26 +0000</pubDate>
      <link>https://dev.to/johnrock/benford-s-law-calulator-4hf1</link>
      <guid>https://dev.to/johnrock/benford-s-law-calulator-4hf1</guid>
      <description>&lt;p&gt;Benford's Law is a little known law that observes first digits in a naturally occurring data set. I just recently found out about it after watching episode four ("Digits") of the Netflix original series &lt;em&gt;Connected&lt;/em&gt;. The law states that given a set of data, the first digits do not display a uniform distribution, but instead are arranged in a way that the digit "1" occurs most often, followed by "2", "3", etc.&lt;/p&gt;

&lt;p&gt;Per &lt;a href="https://en.wikipedia.org/wiki/Benford%27s_law"&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It has been shown that this result applies to a wide variety of data sets, including electricity bills, street addresses, stock prices, house prices, population numbers, death rates, lengths of rivers..."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Because of this, Benford's Law has been used to detect anomalies and fraud.&lt;/p&gt;

&lt;p&gt;I found this fascinating and wanted to build a calculator to test it on my own.&lt;/p&gt;

&lt;p&gt;Using React and a little bit of &lt;a href="http://recharts.org/en-US/"&gt;Recharts&lt;/a&gt; I created an app that lets you input data, grab the first digits, calculate the percent of occurrence, and outputs the data to a chart.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://benfords-law.netlify.app/"&gt;Play around with the app here&lt;/a&gt;.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dSnBw99s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/dtjq41ey953aupkeqqs1.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dSnBw99s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/dtjq41ey953aupkeqqs1.PNG" alt="Screenshot of Benford's Law Calculator"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/john-rock/benfords-law"&gt;View source&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;I highly recommend taking a look into Benford's Law yourself. It's one of those mind-boggling pieces of information that makes you question everything you've learned.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--owczXl6c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/gms0004jdgnlw301cuz9.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--owczXl6c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/gms0004jdgnlw301cuz9.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cover photo by Ian Panelo from Pexels&lt;/em&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>react</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
