<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>WayneHoover.com</title>
  <subtitle></subtitle>
  <link href="https://waynehoover.com/feed.xml" rel="self"/>
  <link href="https://waynehoover.com/"/>
  <updated>2020-05-08T00:00:00Z</updated>
  <id>https://waynehoover.com</id>
  <author>
    <name>Wayne Hoover</name>
  </author>
  
    
    <entry>
      <title>Modern Web Development in a Serverless World</title>
      <link href="https://waynehoover.com/writing/modern-web-development-in-a-serverless-world/"/>
      <updated>2018-08-06T00:00:00Z</updated>
      <id>https://waynehoover.com/writing/modern-web-development-in-a-serverless-world/</id>
      <content type="html">
        <![CDATA[
      <p>The future of web development is being shaped by the need for fast loading websites and the rise of serverless architecture. I can see a future where most web development backends are made up of serverless functions and most frontends are static.</p>
<p>Speed is king. The faster your website loads the more money you make, the better your search ranking, and the happier your visitors are.
Now that the majority of users consuming content are on mobile networks it is more important than ever to have fast loading websites.</p>
<p>The rise of IaaS (AWS, Google Cloud, etc) has helped give rise to a new generation of PaaS utilities that are fast secure and stable. We now have an API for pretty much everything. User authentication, eCommerce, Content Management, nearly everything a web developer could need is an API call away.
The backend will turn into primarily glue code for all these various APIs. A “serverless” PaaS like stdlib or Amazon lambda could actually become most of what traditionally has made up “the backend.” If you can outsource most of your business logic to APIs why not? It’s faster and you don’t have to worry about maintaining a server or the code.</p>
<p>This then leaves the frontend. To make a site load fast nothing beats static assets served over a CDN. Static assets are faster than serving dynamic content. I see static site generators becoming more and more popular. Compile one time and have your site load fast for all users after.
Smashing Magazine just converted their whole blog and website to a SSG. SSGs are simple and make websites easier to maintain.
There are also all sorts of cool tricks for SSGs. For example you could use a headless CMS (via an API) to add CMS functionality to your site. A flow might be once someone edits content in the CMS it triggers a build and a deploy of the site via the SSG.</p>
<p>I see SSGs and PaaS APIs glued together by services like stdlib, webtask.io, amazon lambda, google cloud functions, and others as a very compelling choice, especially for getting started fast. Websites become faster and easier to maintain compiled with SSGs. The backend becomes glue code between all the APIs in use.</p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>Track video view percentages in ActiveCampaign</title>
      <link href="https://waynehoover.com/writing/track-video-view-percentages-in-active-campaign/"/>
      <updated>2019-04-08T00:00:00Z</updated>
      <id>https://waynehoover.com/writing/track-video-view-percentages-in-active-campaign/</id>
      <content type="html">
        <![CDATA[
      <img src="https://res.cloudinary.com/wayneslife/image/upload/v1587251618/Group_1_fzr15z.png">
<p>A friend wanted to know how to track video view percentages, and get this information into his CRM so he could send targeted emails to contacts based on how much they watched his video. For example if a contact only watched the first 20% of a video, he wanted to follow up with them.</p>
<p>There are a couple of tools around that day this already. You can generally do this with <a href="https://www.analyticsmania.com/post/google-tag-manager-video-tracking/">Google Tag Manager</a> and write custom code to connect to your CRM or <a href="https://www.plusthis.com/tools/50-video-triggers?ac=sgvdz5">PlusThis</a> and integrate directly with a handful of CRMs.</p>
<p>While PlusThis looked like a good solution we didn’t want to spend money each month to just use a single feature of their service. So I decided to code up my own solution.</p>
<p>My friend is using <a href="https://www.activecampaign.com/?_r=WN36PB97">ActiveCampaign</a> as his CRM and email service provider so I decided to whip something together to track Wistia video view percentages with ActiveCampaign.</p>
<p><a href="https://github.com/waynehoover/wistia-ac-track">Here is a link to the repo with the code</a>.</p>
<p>To set it up you’ll need a bit of technical knowledge but not much. Here is how to set it up with ActiveCampaign.</p>
<ol>
<li>In ActiveCampgain enable event tracking in <code>settings-&gt;Tracking-&gt;Event Tracking</code> and add a <code>videoTrack</code> event</li>
<li>Remix my glitch project by <a href="https://glitch.com/edit/#!/remix/wistia-ac">clicking here</a>. Put in your <code>actid</code> and <code>eventKey</code> in the <code>.env</code> file, you can find these in the Event Tracking settings area.</li>
<li>Add your glitch project created in the step above to the <code>acProxyUrl</code> in the config at the bottom of wistia-ac-track.js.</li>
<li>Place wistia-ac-track.js on any page you want to track wistia videos.</li>
<li>Make sure the link on the page you are tracking contains a url parameter <code>acEmail</code> with the value being an email in your ActiveCampgain account. So for example <code>https://waynehoover.com&amp;acEmail=email@test.com</code></li>
</ol>
<p>And that’s it. I know there are quite a few ways to make this better (like adding tagging via the API), and there is a detailed todo list in the repo, but I feel this is a good start.</p>
<p>If you have any questions or would like help implementing something like this for your business <a href="mailto:w@waynehoover.com">email me</a> 👋</p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>Fast Blogs with Eleventy</title>
      <link href="https://waynehoover.com/writing/fast-blogs-with-eleventy/"/>
      <updated>2020-04-17T00:00:00Z</updated>
      <id>https://waynehoover.com/writing/fast-blogs-with-eleventy/</id>
      <content type="html">
        <![CDATA[
      <p>I decided it was time that my website had a blog. I wanted to keep it simple and static so that it would fast to load. So I began to research some of the more popular <a href="https://www.staticgen.com/">static site generators</a>. I was looking for something written in javascript, because I wanted to manage all frontend and tooling dependencies through one package manager. It eventually came down to either using <a href="https://gatsbyjs.org">Gatsby</a> or <a href="https://www.11ty.dev/">Eleventy</a>. I could have picked the Vue (<a href="https://gridsome.org/">Gidsome</a>) or Svelte (<a href="https://sapper.svelte.dev/">Sapper</a>) equivalents of Gatsby but the huge Gatsby community of plugins and starters had me sold.</p>
<h2>Too Much javascript</h2>
<p>Just as I was about to re-(re?)build this site with Gatsby I read a <a href="https://www.swyx.io/writing/svelte-static">great blog post</a> that mentioned how a React/Gatsby sites pushes <strong>138kb</strong> of javascript to the client 🤔. That is hard for me to justify. So I went in the opposite direction and gave myself the challenge of creating this blog with no frontend javascript at all.</p>
<h2>No javascript</h2>
<p>Other than one small <a href="https://instant.page">snippet</a> of javascript to preload pages to make this site even faster, You'll find no other javascript here. No big frameworks or libraries, just pure html and css.</p>
<p>To build this site I started off with the 11ty <a href="https://xity-starter.netlify.com/">xity starter</a> because it had a well organized file structure. From that I removed all the frontend JS, and added <a href="https://tailwindcss.com/">tailwindcss</a>.</p>
<p>If you are interested in the source code you can find it <a href="https://github.com/waynehoover/waynehoover.com/">here</a>.</p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>8 Tips for a Blazing Fast Website</title>
      <link href="https://waynehoover.com/writing/how-to-speed-up-your-website/"/>
      <updated>2020-04-29T00:00:00Z</updated>
      <id>https://waynehoover.com/writing/how-to-speed-up-your-website/</id>
      <content type="html">
        <![CDATA[
      <h2>Why optimize for speed?</h2>
<p>Speeding up your website might be <em>the</em> best thing you could do to your website. Users don't want to wait for your website to load and neither does Google. Google with reward your fast website with higher rankings in its search engine, and users will thank you by, well, not leaving your site.</p>
<p>It's clear that <em>every second counts</em>. In fact I every tenth of a second counts. For example, Amazon famously found that for every 100ms of load time 1% of sales where lost. Walmart came to a similar conclusion when it found a 2% conversion improvement per 1 second load time improvement.</p>
<h2>8 tips to optimize your website speed</h2>
<p>In the list below I go over my top eight things I do to speed up a website. In a later post I'll share some more advanced tricks, but for now here are the top areas I focus on to optimize for website speed.</p>
<h3>CDN</h3>
<p>Use A CDN to serve your assets, and limit the number of domains hosting your assets. As HTTP/2 becomes ever more common <a href="https://istlsfastyet.com/">establishing an SSL connection</a> becomes a bottleneck. If we can limit the domains a client must create an SSL connection to and serve our assets from a CDN this is becomes a big win.</p>
<h3>Resource hints</h3>
<p>Use <a href="https://developer.mozilla.org/en-US/docs/Web/Performance/dns-prefetch#Best_practices">resource hints</a>. This helps speed up SSL handshakes and DNS resolution time by hinting to the browser the site will need this later so cache it now.</p>
<h3>Minify assets</h3>
<p>Consider using tools like <a href="https://github.com/mishoo/UglifyJS2">UglifyJS</a> for javascript, <a href="https://github.com/kangax/html-minifier">HTMLMinifier</a> for html, <a href="https://cssnano.co/">cssnano</a> and <a href="https://purgecss.com/">PurgeCSS</a> for css in your build step to reduce the size and minify your final HTML, CSS and Javascript.</p>
<h3>Reduce javascript size</h3>
<p>The <a href="https://v8.dev/blog/cost-of-javascript-2019">cost of javascript</a> is high because you pay in performance at least twice. Once at download time and again at execution time. There are many tricks to get your javascript size down and to speed up your javascript that you do send, so many tricks that you could fill books. But the easiest thing to do is just <strong>SHIP LESS JAVASCRIPT</strong>. Do you really need that big framework just to add validations to your form? Do you really need that library just to toggle a class on a button? Think before you javascript.</p>
<h3>Lazy load images and videos</h3>
<p>This technique is <a href="https://css-tricks.com/a-deep-dive-into-native-lazy-loading-for-images-and-frames/">natively supported in chrome</a>, and a simple polyfill is worth it for other browsers. You can make your website feel blazing fast by lazy loading images and videos. If a user is scrolling on your page they are have already signaled they like what they are seeing and will have no issue with waiting for an image to load as they scroll to it. In fact this is becoming the standard that users have become used to.</p>
<h3>Image optimization</h3>
<p>The TLDR here is just to use an image host like <a href="https://cloudinary.com/">Cloudinary</a> or <a href="https://www.imgix.com/">imgIX</a>. They will automatically scale and transform your images based on the device and resolution of the user. This can be huge because most of the size of a website is in images, and to reduce your image size is to reduce your site size. I can't stress this enough. You could also use a service like <a href="https://sharp.pixelplumbing.com/">sharp</a> in your build step instead of an image host.</p>
<h3>Video optimization</h3>
<p>There is so much to be said here about optimizing video. I suggest watching this great <a href="https://www.youtube.com/watch?v=--U9EUy6oFA">learn with Jason</a> episode to get a good rundown on how to make video fast. But again the TLDR is use an image host and only ship video that your user can actually see and use.</p>
<h3>Continuously monitor your website speed</h3>
<p>You can only fix what you can measure, and <a href="https://developers.google.com/speed/pagespeed/insights/">Google Page Speed</a> is critical in giving you insightful metrics on the speed of your website. I highly recommend implementing <a href="https://github.com/GoogleChrome/lighthouse-ci">lighthouse-ci</a> CI/CD pipeline, there is even a nifty <a href="https://github.com/treosh/lighthouse-ci-action">github action</a> that can give you insight on how each commit effects page speed.</p>
<h3>Make your site static</h3>
<p>Static websites will outperform dynamic websites every time. Of course not all websites can be made static, but usually most marketing pages (like your homepage) can be made static. Serving html/css and js from a local CDN node will always outperform serving dynamic html from a single origin server. If you plan to reach a geographical diverse population this can bring a huge advantage in speed.</p>
<p>If you have any questions, or want to make your website faster feel free to <a href="https://www.waynehoover.com/hire-me/">contact me</a> or find me on <a href="http://twitter.com/blissofbeing">twitter</a> ⚡</p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>The Four Core Values of a Successful Company</title>
      <link href="https://waynehoover.com/writing/core-values/"/>
      <updated>2020-05-08T00:00:00Z</updated>
      <id>https://waynehoover.com/writing/core-values/</id>
      <content type="html">
        <![CDATA[
      <p>The four values I believe are key to the longterm success of any company are:</p>
<ol>
<li>Openness</li>
<li>Autonomy</li>
<li>Curiosity</li>
<li>Transparency</li>
</ol>
<p>The more a company chooses to implement these values the more it will succeed, and more importantly the more the people working there will experience high levels of work satisfaction.</p>
<h2>Openness</h2>
<p>When we focus on results we can focus on what really matters and drop the things that don't, and when we make those results open to everyone, inside and outside the company, everyone stands to benefit. What matters is the results of your work, less so where or when or how you work.
When the key metrics of a company are clear and open we can begin to start optimizing for what is important, we can see the positive impact we are having on the company and the positive impact the company is having on others. This goes beyond simple revenue charts.</p>
<h2>Autonomy</h2>
<p>The freedom to choose where we work, how we work, and when we work. This creates an atmosphere of trust and respect. This also fosters an async first communication culture, which when mastered allows a company to excel in the global market.</p>
<h2>Curiosity</h2>
<p>Foster learning for personal and professional growth. A company that has curiosity at its heart is always helping those in it to learn and grow, try new things and innovate. Learning and growth is important as everything is constantly changing, to be successful we must prioritize and embrace learning and growth.</p>
<h2>Transparency</h2>
<p>Information asymmetry fosters adversarial relationships. When everyone knows how much everyone is making and the company books are open it creates an amazing atmosphere of trust and respect.</p>
<p>Some links that inspired this thinking:</p>
<ul>
<li><a href="https://docs.opencollective.com/help/about/the-open-collective-way">Open Collective</a></li>
<li><a href="https://m.signalvnoise.com/employee-surveillance-software-is-not-welcome-to-integrate-with-basecamp/">DHH on SvN</a></li>
</ul>

    ]]>
      </content>
    </entry>
  
</feed>
