<?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: Ethan Roberts</title>
    <description>The latest articles on DEV Community by Ethan Roberts (@eroberts).</description>
    <link>https://dev.to/eroberts</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%2F139521%2F0dbfb76e-2240-4e0d-88b3-e65c8e6c1575.png</url>
      <title>DEV Community: Ethan Roberts</title>
      <link>https://dev.to/eroberts</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eroberts"/>
    <language>en</language>
    <item>
      <title>Troubleshooting Protip</title>
      <dc:creator>Ethan Roberts</dc:creator>
      <pubDate>Tue, 16 Apr 2019 20:13:49 +0000</pubDate>
      <link>https://dev.to/eroberts/troubleshooting-protip-24g0</link>
      <guid>https://dev.to/eroberts/troubleshooting-protip-24g0</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sStZppi2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/55581635532c6f91050ad6558140ffb9/tenor.gif%3Fitemid%3D5213422" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sStZppi2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media1.tenor.com/images/55581635532c6f91050ad6558140ffb9/tenor.gif%3Fitemid%3D5213422" width="480" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Many times I have found myself trying to figure out an issue, whether it's troubleshooting code or a problem with configuration, OS, or even hardware. After hours of banging my head against the wall confused why it doesn't work, then I realize the problem is something very simple that I should have started with. Often, people will overlook the simple solution because they are assuming it must be another cause.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overconfidence
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/V0fYT9sYUK1J6/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/V0fYT9sYUK1J6/giphy.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Even when you have years of experience, you are not immune to this same problem. If you are a beginner, you shouldn't assume those who are more experienced than you have followed every basic troubleshooting procedure.&lt;/p&gt;

&lt;p&gt;Always start from the ground up. Start troubleshooting with the simplest and easiest explanation first. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/Oe4V14aLzv7JC/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/Oe4V14aLzv7JC/giphy.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Code not working? Check for spelling errors, basic syntax errors, etc. &lt;br&gt;
Computer not working? Reboot. Make sure everything is plugged in and turned on. &lt;br&gt;
Already rebooted and you're still stumped? Reboot it again!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9d7Xl3is--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/8166xCVDGnL.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9d7Xl3is--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/8166xCVDGnL.jpg" height="25%" width="25%"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://en.wikipedia.org/wiki/Rubber_duck_debugging"&gt;rubber duck&lt;/a&gt; technique is based on this idea, where you explain what your code is supposed to do to someone (or something) in the smallest increments. This forces you to analyze every part of your code that you would likely have overlooked because you assumed it was working the way you wanted it to.&lt;/p&gt;

&lt;p&gt;This most basic tip has saved me countless hours of wasted time, and similarly not following this tip has wasted more than I would like to admit.&lt;/p&gt;

&lt;p&gt;If you have a horror story of a simple overlooked problem that plagued you, please share it in the comments.&lt;/p&gt;

</description>
      <category>beginners</category>
    </item>
    <item>
      <title>Reference Guide: Building a Mobile Friendly Website</title>
      <dc:creator>Ethan Roberts</dc:creator>
      <pubDate>Tue, 02 Apr 2019 09:13:20 +0000</pubDate>
      <link>https://dev.to/eroberts/reference-guide-building-a-mobile-friendly-website-2015</link>
      <guid>https://dev.to/eroberts/reference-guide-building-a-mobile-friendly-website-2015</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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fnndbkjpgob84vdn17y8w.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fnndbkjpgob84vdn17y8w.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're a new web developer you've probably made some small web-apps or websites that you want to show off to your friends and family. However, most of those people will likely be checking out your nifty web-app on their mobile device. If you designed your project on a desktop you may not have thought about how it looks or works on a mobile device. If that's the case you probably received plenty of feedback from those you shared your project with who either used a mobile device or sub-1080p display to check out your cool new project. &lt;/p&gt;

&lt;p&gt;Now you're exploring how to make your project &lt;strong&gt;mobile friendly&lt;/strong&gt; and I'll &lt;em&gt;introduce&lt;/em&gt; you to the tools you need to make that happen. All of these tools are useful for making your website &lt;em&gt;responsive&lt;/em&gt; or &lt;em&gt;adaptive&lt;/em&gt;, but there is no definitive way to use them to make your project look great on devices of all sizes. It entirely depends on how your website is used and what you need displayed.&lt;/p&gt;

&lt;p&gt;The goal of this post is to not overwhelm you with a ton of information, but instead give a brief overview for each tool with links to more in-depth information so you can skip to the part you want to implement or just get an idea of what is available for when you need it.&lt;/p&gt;

&lt;h1&gt;
  
  
  Viewport
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;The width property controls the size of the viewport. It can be set to a specific number of pixels like width=600 or to the special value device-width, which is the width of the screen in CSS pixels at a scale of 100%.&lt;/p&gt;

&lt;p&gt;The initial-scale property controls the zoom level when the page is first loaded. The maximum-scale, minimum-scale, and user-scalable properties control how users are allowed to zoom the page in or out.&lt;br&gt;
-MDN&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;"A pixel is not a pixel." Devices with higher DPI (Dots Per Inch) or PPI (Pixels Per Inch) can make designs made for desktops look off. The average desktop monitor can range from ~80dpi to ~200ppi where a mobile device can often be more than double that.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag" rel="noopener noreferrer"&gt;MDN: Viewport Meta Tag&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  @viewport
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@viewport&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;device-width&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;@-ms-viewport&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;device-width&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;blockquote&gt;
&lt;p&gt;The @viewport CSS at-rule lets you configure the viewport through which the document is viewed. It's primarily used for mobile devices, but is also used by desktop browsers that support features like "snap to edge" (such as Microsoft Edge).&lt;br&gt;
-MDN&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@viewport" rel="noopener noreferrer"&gt;MDN: @Viewport&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Viewport units! (vw, vh, vmin, vmax)
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50vw&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50vh&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;blockquote&gt;
&lt;p&gt;The new units – vw, vh, vmin, and vmax - work similarly to existing length units like px or em, but represent a percentage of the current browser viewport.&lt;br&gt;
-&lt;a href="https://css-tricks.com/author/miriam/" rel="noopener noreferrer"&gt;Miriam Suzanne&lt;/a&gt; @ CSS-Tricks&lt;/p&gt;
&lt;/blockquote&gt;



&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;1vw: 1% of viewport width&lt;/li&gt;
&lt;li&gt;1vh: 1% of viewport height&lt;/li&gt;
&lt;li&gt;1vmin: 1vw or 1vh, whatever is smallest&lt;/li&gt;
&lt;li&gt;1vmax: 1vw or 1vh, whatever is largest&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-&lt;a href="https://dev.opera.com/authors/chris-mills/" rel="noopener noreferrer"&gt;Chris Mills&lt;/a&gt; @ Dev.Opera&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://css-tricks.com/fun-viewport-units/" rel="noopener noreferrer"&gt;CSS-Tricks: Fun with Viewport Units&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.opera.com/articles/css-viewport-units/" rel="noopener noreferrer"&gt;Dev.Opera: CSS Viewport Units: vw, vh, vmin and vmax&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;a class="mentioned-user" href="https://dev.to/media"&gt;@media&lt;/a&gt; queries
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="n"&gt;screen&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;900px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5vw&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5vw&lt;/span&gt;&lt;span class="p"&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;blockquote&gt;
&lt;p&gt;Media queries are useful when you want to modify your site or app depending on a device's general type (such as print vs. screen) or specific characteristics and parameters (such as screen resolution or browser viewport width).&lt;br&gt;
-MDN&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://css-tricks.com/css-media-queries/" rel="noopener noreferrer"&gt;CSS-Tricks: CSS Media Queries&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries" rel="noopener noreferrer"&gt;MDN: Using Media Queries&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another option would be to create whole stylesheets that load per screen size, aka the 'Adaptive' model&lt;br&gt;
&lt;a href="https://css-tricks.com/resolution-specific-stylesheets/" rel="noopener noreferrer"&gt;CSS-Tricks: Resolution Specific Stylesheets&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  CSS Grid
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;grid-template-columns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="n"&gt;fr&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="n"&gt;fr&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="n"&gt;fr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;grid-template-rows&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="n"&gt;fr&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="n"&gt;fr&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="n"&gt;fr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;grid-column-gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;grid-row-gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;If&lt;/span&gt; &lt;span class="nt"&gt;you&lt;/span&gt; &lt;span class="nt"&gt;had&lt;/span&gt; &lt;span class="err"&gt;9&lt;/span&gt; &lt;span class="nt"&gt;divs&lt;/span&gt; &lt;span class="nt"&gt;inside&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="nt"&gt;with&lt;/span&gt; &lt;span class="nt"&gt;the&lt;/span&gt; &lt;span class="nt"&gt;classs&lt;/span&gt; &lt;span class="nc"&gt;.container&lt;/span&gt; 
&lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;this&lt;/span&gt; &lt;span class="nt"&gt;will&lt;/span&gt; &lt;span class="nt"&gt;create&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="err"&gt;3&lt;/span&gt; &lt;span class="nt"&gt;x&lt;/span&gt; &lt;span class="err"&gt;3&lt;/span&gt; &lt;span class="nt"&gt;grid&lt;/span&gt; &lt;span class="nt"&gt;of&lt;/span&gt; &lt;span class="nt"&gt;those&lt;/span&gt; &lt;span class="err"&gt;9&lt;/span&gt; &lt;span class="nt"&gt;inner&lt;/span&gt; &lt;span class="nt"&gt;divs&lt;/span&gt; &lt;span class="nt"&gt;with&lt;/span&gt; &lt;span class="err"&gt;5&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt; &lt;span class="nt"&gt;between&lt;/span&gt; &lt;span class="nt"&gt;them&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;CSS Grid Layout is the most powerful layout system available in CSS. It is a 2-dimensional system, meaning it can handle both columns and rows, unlike flexbox which is largely a 1-dimensional system. &lt;/p&gt;

&lt;p&gt;You work with Grid Layout by applying CSS rules both to a parent element (which becomes the Grid Container) and to that element's children (which become Grid Items).&lt;br&gt;
-CSS-Tricks&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The &lt;strong&gt;fr&lt;/strong&gt; unit is a fleixible unit for defining CSS grids. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The fr unit (a "fraction") can be used when defining grids like any other CSS length such as %, px or em.&lt;br&gt;
-&lt;a href="https://css-tricks.com/author/robinrendle/" rel="noopener noreferrer"&gt;Robin Rendle&lt;/a&gt; @ CSS-Tricks&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://css-tricks.com/getting-started-css-grid/" rel="noopener noreferrer"&gt;CSS-Tricks: Getting Started With CSS Grid&lt;/a&gt;&lt;br&gt;
&lt;a href="https://css-tricks.com/snippets/css/complete-guide-grid/" rel="noopener noreferrer"&gt;CSS-Tricks: A Complete Guide to CSS Grid&lt;/a&gt;&lt;br&gt;
&lt;a href="https://css-tricks.com/introduction-fr-css-unit/" rel="noopener noreferrer"&gt;CSS-Tricks: An Introduction to the fr CSS unit&lt;/a&gt; &lt;/p&gt;




&lt;h1&gt;
  
  
  Flexbox
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* or inline-flex */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;A flex container expands items to fill available free space, or shrinks them to prevent overflow.&lt;/p&gt;

&lt;p&gt;Note: Flexbox layout is most appropriate to the components of an application, and small-scale layouts, while the Grid layout is intended for larger scale layouts.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://css-tricks.com/snippets/css/a-guide-to-flexbox/" rel="noopener noreferrer"&gt;CSS-Tricks: A Complete Guide to Flexbox&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Responsive Fonts: em and rem
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2rem&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;While em is relative to the font-size of its direct or nearest parent, rem is only relative to the html (root) font-size.&lt;br&gt;
-&lt;a href="https://css-tricks.com/author/chriscoyier/" rel="noopener noreferrer"&gt;Chris Coyier&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://zellwk.com/blog/rem-vs-em/" rel="noopener noreferrer"&gt;REM vs EM – The Great Debate&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  calc()
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.content&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c"&gt;/* Subtract the header size */&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="n"&gt;-&lt;/span&gt; &lt;span class="m"&gt;50px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&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;blockquote&gt;
&lt;p&gt;calc() is a native CSS way to do simple math right in CSS as a replacement for any length value (or pretty much any number value). It has four simple math operators: add (+), subtract (-), multiply (*), and divide (/). Being able to do math in code is nice and a welcome addition to a language that is fairly number heavy.&lt;/p&gt;

&lt;p&gt;The most useful ability of calc() is its ability to mix units, like percentages and pixels.&lt;br&gt;
-&lt;a href="https://css-tricks.com/author/chriscoyier/" rel="noopener noreferrer"&gt;Chris Coyier&lt;/a&gt; @ CSS-Tricks&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;calc()&lt;/code&gt; can really save your butt when you have tight rules, but also need responsive design.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/buildit/hardcore-css-calc-bdfb0162993c" rel="noopener noreferrer"&gt;Hardcore CSS calc( )&lt;/a&gt;&lt;br&gt;
&lt;a href="https://css-tricks.com/a-couple-of-use-cases-for-calc/" rel="noopener noreferrer"&gt;A Couple of Use Cases for Calc()&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Adaptive vs Responsive
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Adaptive&lt;/strong&gt; takes your current structure and scales it for many sizes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responsive&lt;/strong&gt; serves different templates based on the user agent and the device type.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://dev.to/equinusocio/the-adaptive--responsive-model-45mn"&gt;dev.to: The Adaptive + Responsive model - Mattia Astorino&lt;/a&gt;&lt;br&gt;
&lt;a href="https://css-tricks.com/the-difference-between-responsive-and-adaptive-design/" rel="noopener noreferrer"&gt;CSS-Tricks: The Difference Between Responsive and Adaptive Design&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Other tools:
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://developers.google.com/web/tools/chrome-devtools/device-mode/" rel="noopener noreferrer"&gt;Device Mode in Chrome DevTools&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.mydevice.io/" rel="noopener noreferrer"&gt;Detect device viewport size&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ui</category>
      <category>mobile</category>
      <category>css</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Why you should use Netlify instead of GitHub Pages</title>
      <dc:creator>Ethan Roberts</dc:creator>
      <pubDate>Tue, 19 Mar 2019 22:33:04 +0000</pubDate>
      <link>https://dev.to/eroberts/why-you-should-use-netlify-instead-of-github-pages-3on1</link>
      <guid>https://dev.to/eroberts/why-you-should-use-netlify-instead-of-github-pages-3on1</guid>
      <description>&lt;h1&gt;
  
  
  Netlify is awesome!
&lt;/h1&gt;

&lt;p&gt;I am not being paid to say that. I just think they provide some fantastic free services. There are too many to list here, but these are some features of their &lt;em&gt;totally free&lt;/em&gt; services that I would like to highlight to get you to consider checking them out. There are more features that you pay for, but I am only highlighting features for free users. Go check out their website &lt;a href="https://netlify.com"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Free Private Repository Hosting
&lt;/h3&gt;

&lt;p&gt;The best reason to use Netlify is that you can host a private repository. Normally this is a GitHub Pro feature. That's a minimum of $84 per year that not everyone can afford.&lt;/p&gt;

&lt;h3&gt;
  
  
  Custom Netlify Subdomains
&lt;/h3&gt;

&lt;p&gt;You can set a custom subdomain (as long as it's not already being used). &lt;/p&gt;

&lt;h3&gt;
  
  
  Custom SSL
&lt;/h3&gt;

&lt;p&gt;If you have your own SSL certificate that you purchased, you can use your custom SSL certification instead LetsEncrypt. Otherwise they also provide an automatic LetsEncrypt SSL certificate like GitHub.&lt;/p&gt;

&lt;h3&gt;
  
  
  Speed up your website with Asset Optimization
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Bundle and Minify CSS and JavaScript
&lt;/h4&gt;

&lt;p&gt;If you're linking a handful of CSS and/or JavaScript files Netlify can bundle them all together and minify them (remove unnecessary whitespace) to speed up loading your pages.&lt;/p&gt;

&lt;h4&gt;
  
  
  Lossless compression for images
&lt;/h4&gt;

&lt;p&gt;Netlify also provides the option to compress images to make for a speedier download.&lt;/p&gt;

&lt;h4&gt;
  
  
  Prerendering
&lt;/h4&gt;

&lt;p&gt;When turned on, Netlify can host your site from one of their CDNs to serve to a crawler to greatly improve SEO.&lt;/p&gt;

&lt;h2&gt;
  
  
  Forms
&lt;/h2&gt;

&lt;p&gt;You can receive up to 100 form submissions for free without having to have a backend.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does git cmd scare you or your client?
&lt;/h2&gt;

&lt;p&gt;You can deploy using drag &amp;amp; drop as well and still rollback to previous versions with a couple clicks.&lt;/p&gt;

</description>
      <category>hosting</category>
      <category>netlify</category>
      <category>githubpages</category>
      <category>speed</category>
    </item>
    <item>
      <title>The Real Facts About VPNs</title>
      <dc:creator>Ethan Roberts</dc:creator>
      <pubDate>Mon, 04 Mar 2019 07:47:26 +0000</pubDate>
      <link>https://dev.to/eroberts/the-real-facts-about-vpns-38e0</link>
      <guid>https://dev.to/eroberts/the-real-facts-about-vpns-38e0</guid>
      <description>&lt;p&gt;A VPN stands for a &lt;b&gt;V&lt;/b&gt;irtual &lt;b&gt;P&lt;/b&gt;rivate &lt;b&gt;N&lt;/b&gt;etwork, and does exactly what it sounds like. It connects your device to an encrypted private network through software. It's a useful tool, but why is it important for security and privacy? First, we'll go over briefly what a VPN does.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does a VPN do?
&lt;/h2&gt;

&lt;p&gt;A VPN works by hiding your IP address and making connections to other servers on the internet on your behalf, then sending that data to you. This makes it harder to track you. It protects you from &lt;a href="https://en.wikipedia.org/wiki/Denial-of-service_attack"&gt;DDoS attacks&lt;/a&gt; and &lt;a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack"&gt;MITM attacks&lt;/a&gt;. It encrypts your data between your computer and their servers which protects you from being easily spied on through WiFi or other computers on the same network. It allows you to bypass censorship and &lt;a href="https://en.wikipedia.org/wiki/Geo-blocking"&gt;Geoblocking&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  What does a VPN &lt;u&gt;not&lt;/u&gt; do?
&lt;/h2&gt;

&lt;p&gt;A VPN will generally only encrypt your data between you and their servers. There are also many methods of identifying you through your browser alone, including cookies, scripts, and HTTP request header information. That's only what your browser sends to each website you connect to and doesn't count the data your browser can collect from you and send to their own servers. No VPN can protect you from these methods of collecting your data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why should I use a VPN?
&lt;/h2&gt;

&lt;p&gt;A VPN is still the most effective first step in protecting your data and an important step for privacy. A VPN is just one part of full privacy and security. Even if you don't care about your privacy (even though you should), it is still worth it for the security benefits alone. Any time you are connected to a network, wireless or wired, you are trusting that no one else is trying to sniff out your personal data. Also, on a wireless network anyone can intercept data that you are broadcasting even if they are not connected to the same network.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a good VPN?
&lt;/h2&gt;

&lt;p&gt;There are many services out there, but no single VPN service is best for everyone. It depends on your needs and what the individual VPN service provides. Always research before trusting your data with someone. How do you know they are actually encrypting your data? What information about you are they keeping? A good rule of thumb is: if the product is free then you are the product, meaning they are probably selling your data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use a VPN when you are using a public network and/or when transmitting sensitive data on a network that is broadcasting wirelessly&lt;/li&gt;
&lt;li&gt;A VPN is not a total solution for privacy and security&lt;/li&gt;
&lt;li&gt;Research the VPN service provider before you trust them with your security&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>vpn</category>
      <category>privacy</category>
      <category>security</category>
      <category>networking</category>
    </item>
  </channel>
</rss>
