<?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: jjroush</title>
    <description>The latest articles on DEV Community by jjroush (@jjroush).</description>
    <link>https://dev.to/jjroush</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%2F86125%2F0a321ec1-f8ab-4f8a-a98b-ca17c1ea67a7.jpeg</url>
      <title>DEV Community: jjroush</title>
      <link>https://dev.to/jjroush</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jjroush"/>
    <language>en</language>
    <item>
      <title>What's your personal site setup?</title>
      <dc:creator>jjroush</dc:creator>
      <pubDate>Mon, 29 Jul 2019 02:29:24 +0000</pubDate>
      <link>https://dev.to/jjroush/what-s-your-personal-site-setup-20al</link>
      <guid>https://dev.to/jjroush/what-s-your-personal-site-setup-20al</guid>
      <description>&lt;p&gt;Stack:&lt;/p&gt;

&lt;p&gt;My personal site is built upon &lt;a href="https://www.gatsbyjs.org/"&gt;Gatsby&lt;/a&gt;. So it's a static React site. My newsletter sign-up is powered by a Lambda function which sends responses to Mailgun.&lt;/p&gt;

&lt;p&gt;Host: &lt;/p&gt;

&lt;p&gt;I host it using an AWS S3 bucket with CloudFront as a CDN.&lt;/p&gt;

&lt;p&gt;Deploy:&lt;/p&gt;

&lt;p&gt;I just got a npm script setup for deployment to AWS, but I am not ashamed to admit that I used to drag and drop files into the uploader.&lt;/p&gt;

&lt;p&gt;What does your personal site setup look like?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://roush.io"&gt;roush.io&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/jjroush/New-Roush-io"&gt;roush.io github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>portfolio</category>
      <category>website</category>
      <category>stack</category>
    </item>
    <item>
      <title>HTTP2: Why should I check it out?</title>
      <dc:creator>jjroush</dc:creator>
      <pubDate>Wed, 17 Jul 2019 04:32:33 +0000</pubDate>
      <link>https://dev.to/jjroush/http2-why-should-i-check-it-out-2obc</link>
      <guid>https://dev.to/jjroush/http2-why-should-i-check-it-out-2obc</guid>
      <description>&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%2Froush-image.s3.amazonaws.com%2Fhttp2-cover.jpg" 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%2Froush-image.s3.amazonaws.com%2Fhttp2-cover.jpg" alt="HTTP2 80's cover"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a developer, I began looking into HTTP2 because I noticed Node.js implemented &lt;a href="https://nodejs.org/api/http2.html" rel="noopener noreferrer"&gt;native support&lt;/a&gt;. As I dug in, it was puzzling why people weren't making a bigger deal out of the update of the 20+ year-old HTTP 1.1 spec.&lt;/p&gt;

&lt;p&gt;There were fewer examples than I anticipated for setting up Node.js HTTP2 which was confusing because javascript developers are always ahead of the curve. I realized HTTP2 must be the most utmost of &lt;em&gt;cutting edge&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  HTTP super mini history lesson
&lt;/h2&gt;

&lt;p&gt;The Hypertext Transfer Protocol is how we access information on that good old world wide web. It's the application-level protocol used for a client to communicate with a server.&lt;br&gt;
HTTP 1.1 came out in 1997. A lot has changed since 1997, HTTP hadn't. That was until 2015.&lt;/p&gt;

&lt;h2&gt;
  
  
  Should I care?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Yes.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is a great all-around performance improvement. The amount of work to implement is dependent on the stack you're using. Currently, ~30% of the web &lt;a href="https://w3techs.com/technologies/details/ce-http2/all/all" rel="noopener noreferrer"&gt;uses HTTP2&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Speed Test (It's Faster)
&lt;/h3&gt;

&lt;p&gt;With a quick unscienfic test of my &lt;a href="https://roush.io" rel="noopener noreferrer"&gt;own site&lt;/a&gt; toggling http2 on and off; I found my website containing ~20 network request was about 12% faster with HTTP2. A &lt;a href="https://css-tricks.com/" rel="noopener noreferrer"&gt;&lt;em&gt;CSS Tricks&lt;/em&gt;&lt;/a&gt; test shows a 25% speed improvement.&lt;/p&gt;

&lt;p&gt;HTTP2 speed improvements will be more noticed on a site with a greater number of network request and a client with a slower connection.&lt;/p&gt;

&lt;p&gt;It's faster due to the transferred data format being binary instead of text, multiplexing, reuse of TCP connections... I'll spare you the nitty-gritty but if you're into that, the spec's &lt;a href="https://http2.github.io/faq/" rel="noopener noreferrer"&gt;FAQ page&lt;/a&gt; is a great start. I found a sick &lt;a href="https://imagekit.io/demo/http2-vs-http1" rel="noopener noreferrer"&gt;real-world example&lt;/a&gt; too.&lt;/p&gt;

&lt;h3&gt;
  
  
  Server Push
&lt;/h3&gt;

&lt;p&gt;A great feature of HTTP2 is server push. On the request for the original HTML document, you can tell the server to send: the document requested, stylesheet, and javascript all together. Any resource that you don't want to cache but know the user will need is a good candidate for server push.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation
&lt;/h2&gt;

&lt;p&gt;The easy-ness or difficulty of implementing HTTP2 depends on the server. Node.js involves a couple of extra lines of code to tell your preferred server framework to use Node's HTTP2 server (for a very barebones example). With .NET and .Net core frameworks, HTTP2 support comes from the operating system. Windows 10 or Windows Server 2016. Now in both Node and .NET scenarios, a part of HTTP2 is enforcing TLS. So if you want to move to the modern era of the web, you'll need an SSL certificate. And no exception for localhost.&lt;/p&gt;

&lt;p&gt;When attempting to implement HTTP2 on some projects I'm a part of, I noticed something. If you are using CloudFlare, you get HTTP2 for free &lt;a href="https://www.cloudflare.com/website-optimization/" rel="noopener noreferrer"&gt;out of the box&lt;/a&gt;. Including features like server push. Amazon's CloudFront also has HTTP2 out of the box. I am kind of surprised this isn't more of a selling point for web service providers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Check if you're using it now
&lt;/h3&gt;

&lt;p&gt;Hopefully you're at least a little amped for HTTP2, even if its just 12% amped up. To see if your website is using it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the network tab of your favorite browser (chrome or firefox).&lt;/li&gt;
&lt;li&gt;Right click the network table header selecting &lt;code&gt;protocol&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Refresh the page.&lt;/li&gt;
&lt;/ol&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%2Froush-image.s3.amazonaws.com%2Fhttp2-firefox-devtools.jpg" 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%2Froush-image.s3.amazonaws.com%2Fhttp2-firefox-devtools.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's important to note that HTTP2 is dependent on the server hosting the resource, so if using an image CDN is without support for HTTP2, your site may support the latest and greatest stuff but images may not benefit from the speed increase.&lt;/p&gt;

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

&lt;p&gt;Now hold up before you feel to excited for feeling ahead of the curve on this HTTP stuff. In 2018 &lt;strong&gt;HTTP3&lt;/strong&gt; began to enter the market. Originally developed by Google under the name of Quic; HTTP3 is set to become a &lt;a href="https://quicwg.org/base-drafts/draft-ietf-quic-http.html" rel="noopener noreferrer"&gt;standard&lt;/a&gt; sometime soon.&lt;/p&gt;

&lt;p&gt;For now though, I'll just make sure I'm caught up with 2015's technology.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.commitstrip.com/en/2018/11/15/http-3/" rel="noopener noreferrer"&gt;&lt;br&gt;
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Froush-image.s3.amazonaws.com%2Fhttp-commit-strip.jpg" alt="http3 commit strip"&gt;&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I swear there's a &lt;em&gt;Commit Strip&lt;/em&gt; for everything...&lt;/p&gt;

&lt;h2&gt;
  
  
  Question
&lt;/h2&gt;

&lt;p&gt;Have you had any personal experience implementing HTTP2 if so, what stack? What were the pain points?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thanks for reading my first DEV.to post!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>server</category>
      <category>performance</category>
      <category>http2</category>
    </item>
  </channel>
</rss>
