<?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>Forem: ⧉ infominer</title>
    <description>The latest articles on Forem by ⧉ infominer (@infominer33).</description>
    <link>https://forem.com/infominer33</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%2F163868%2F64f0aa29-2874-42ff-8041-b1d02c885f1a.jpg</url>
      <title>Forem: ⧉ infominer</title>
      <link>https://forem.com/infominer33</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/infominer33"/>
    <language>en</language>
    <item>
      <title>Creating the back end for a weekly newsletter on decentralized identity</title>
      <dc:creator>⧉ infominer</dc:creator>
      <pubDate>Sun, 15 Nov 2020 13:52:25 +0000</pubDate>
      <link>https://forem.com/infominer33/creating-the-back-end-for-a-weekly-newsletter-on-decentralized-identity-3fk2</link>
      <guid>https://forem.com/infominer33/creating-the-back-end-for-a-weekly-newsletter-on-decentralized-identity-3fk2</guid>
      <description>&lt;p&gt;Interested in the development of decentralized-identity technology, I began creating an &lt;a href="https://github.com/topics/awesome-list"&gt;Awesome List&lt;/a&gt; which quickly grew into it's own website &lt;a href="https://decentralized-id.com"&gt;Decentralized-ID.com&lt;/a&gt; a few years ago.  (&lt;a href="https://www.indiehackers.com/post/gaining-some-traction-after-years-on-the-grind-4b31373f6a"&gt;read my IndieHackers intro for some background&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  Developing the backend for a sustainable weekly newsletter
&lt;/h2&gt;

&lt;p&gt;I'd been chatting with &lt;a href="https://identitywoman.net/"&gt;Kaliya Identity Woman&lt;/a&gt; for around a year, after contacting her about the potential for our collaborating on decentralized identity. At some point, she proposed the idea of writing a newsletter together, under the &lt;a href="https://identosphere.net"&gt;Identosphere.net&lt;/a&gt; domain. &lt;/p&gt;

&lt;p&gt;Instead of jumping in head first, like I usually do, we've spent a lot of time figuring out how to run a newsletter, sustainably, with as few third party services as possible, while I'm learning my way around various web-tools.&lt;/p&gt;

&lt;p&gt;We're tackling a field that touches every domain, has a deep history, and is currently growing faster than anyone can keep up with. But this problem of fast-moving information streams isn't unique to digital identity, and I'd like to share this process for others to benefit from.&lt;/p&gt;

&lt;h3&gt;
  
  
  GitHub Pages
&lt;/h3&gt;

&lt;p&gt;Once my 'Awesome List' outgrew the Awesome format, I began learning to create static web-sites with &lt;a href="https://pages.github.com/"&gt;GitHub Pages&lt;/a&gt; and &lt;a href="https://jekyllrb.com/"&gt;Jekyll&lt;/a&gt;. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://web-work.tools/jamstack/github-pages-starter-pack/"&gt;GitHub Pages Starter Pack&lt;/a&gt;  (a resource I've created along that journey)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Static Websites are great for security and easy to set up, but if you're an indie hacker, you're gonna want some forms so you can begin collecting subscribers! However, forms are &lt;em&gt;not&lt;/em&gt; supported natively through Jekyll or GitHub Pages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enter Staticman
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/eduardoboucas/staticman"&gt;Staticman&lt;/a&gt; is a comments engine for static websites, but can be used for any kind of form, with the proper precautions. &lt;/p&gt;

&lt;p&gt;It can be deployed to Heroku with a click of a button, made into a GitHub App, or run on your own server.  Once set up, it will submit a pull-request to your repository with the form details (and an optional &lt;a href="https://www.mailgun.com/"&gt;mailgun&lt;/a&gt; integration).&lt;/p&gt;

&lt;p&gt;I set it up on my own server and created a &lt;a href="https://travisdowns.github.io/blog/2020/02/05/now-with-comments.html"&gt;bot account on GitHub&lt;/a&gt; with permissions to a private repository for the Staticman app to update with subscriptions e-mails to. &lt;/p&gt;

&lt;p&gt;Made the form, and a &lt;code&gt;staticman.yml&lt;/code&gt; config file in the root of the private repository where I'm collecting e-mail addresses.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Subscription Form
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;center&amp;gt;
&amp;lt;h3&amp;gt;Subscribe for Updates&amp;lt;/h3&amp;gt;
&amp;lt;form class="staticman" method="POST" action="https://identosphere.net/staticman/v2/entry/infominer33/subscribe/master/subscribe"&amp;gt;
    &amp;lt;input name="options[redirect]" type="hidden" value="https://infominer.xyz/subscribed"&amp;gt;
    &amp;lt;input name="options[slug]" type="hidden" value="infohub"&amp;gt;
    &amp;lt;input name="fields[name]" type="text" placeholder="Name (optional)"&amp;gt;&amp;lt;br&amp;gt;
    &amp;lt;input name="fields[email]" type="email" placeholder="Email"&amp;gt;&amp;lt;br&amp;gt;
    &amp;lt;input name="fields[message]" type="text" placeholder="Areas of Interest (optional)"&amp;gt;&amp;lt;br&amp;gt;
    &amp;lt;input name="links" type="hidden" placeholder="links"&amp;gt;
    &amp;lt;button type="submit"&amp;gt;Subscribe&amp;lt;/button&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;/center&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  The staticman.yml config in the root of my private subscribe repo
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;subscribe:
  allowedFields: ["name", "email", "message"]
  allowedOrigins: ["infominer.xyz","identosphere.net"]
  branch: "master"
  commitMessage: "New subscriber: {fields.name}"
  filename: "subscribe-{@timestamp}"
  format: "yaml"
  generatedFields:
    date:
      type: "date"
      options:
        format: "iso8601" 
  moderation: false
  name: "infominer.xyz"
  path: "{options.slug}" 
  requiredFields: ["email"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It seems to be &lt;a href="https://github.com/eduardoboucas/staticman/issues/366#issuecomment-726016008"&gt;struggling with GitHub's recent move&lt;/a&gt; to change the name of your default branch from master to main (for new repositories). So, unfortunately, I had to re-create a master branch to get it running.&lt;/p&gt;

&lt;h3&gt;
  
  
  Planet Pluto Feed Reader
&lt;/h3&gt;

&lt;p&gt;One of the most promising projects I found, in pursuit of keeping up with all the info, is &lt;a href="https://github.com/web-work-tools/awesome-planet-pluto"&gt;Planet Pluto Feed Reader&lt;/a&gt;, by Gerald Bauer. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In online media a planet is a feed aggregator application designed to collect posts from the weblogs of members of an internet community and display them on a single page. - &lt;a href="https://en.wikipedia.org/wiki/Planet_(software)"&gt;Planet (Software)&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For the uninitiated, I should add that websites generate RSS feeds that can be read by a newsreader, allowing users to keep up with posts from multiple locations without needing to visit each site individually. You very likely use RSS all the time without knowing, for example, your podcast player depends on RSS feeds to bring episodes directly to your phone.&lt;/p&gt;

&lt;p&gt;What &lt;a href="https://github.com/feedreader/"&gt;Pluto Feed reader&lt;/a&gt; does is just like your podcast app, except, instead of an application on your phone that only you can browse, it builds a simple webpage from the feeds you add to it, that can be published on GitHub, your favorite static web-hosting service, or on your own server in the cloud.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://planet-templates.github.io/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jBPTDN4p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/planet-templates/planet-hacker/master/screenshot.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pluto is built with &lt;a href="https://www.ruby-lang.org/en/"&gt;Ruby&lt;/a&gt;, using the &lt;a href="https://www.stuartellis.name/articles/erb/"&gt;ERB templating&lt;/a&gt; language for &lt;a href="https://github.com/planet-templates"&gt;web-page design&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One of the cool things about ERB is it lets you use any ruby function in your web-page template, supporting any capability you might want to enable while rendering your feed. This project has greatly helped me to learn the basics of Ruby while customizing its templates to suit my needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Feed Search
&lt;/h3&gt;

&lt;p&gt;I use the &lt;a href="https://github.com/DIYgod/RSSHub-Radar"&gt;RSSHub Radar&lt;/a&gt; browser extension to find feeds for sites while I'm browsing. However, this would be a lot of work when I want to get feeds for a number of sites at once. &lt;/p&gt;

&lt;p&gt;I found a few simple python apps that find feeds for me. They aren't perfect, but they do allow me to find feeds for multiple sites at the same time, all I have to do is format the query and hit enter.&lt;/p&gt;

&lt;p&gt;As you can see below, these are not fully formed applications, just a few lines of code. To run them, it's necessary to install &lt;a href="https://www.python.org/downloads/"&gt;Python&lt;/a&gt;, install the package with &lt;a href="https://pypi.org/project/pip/"&gt;pip&lt;/a&gt; (&lt;code&gt;pip install feedsearch-crawler&lt;/code&gt;), and type &lt;code&gt;python&lt;/code&gt; at the command prompt, which takes you to a Python terminal that will recognize these commands.&lt;/p&gt;

&lt;p&gt;From there you can type\paste python commands for demonstration, practice, or for simple scripts like this. I could also put the following scripts into their own feedsearch.py file and type &lt;code&gt;python feedsearch.py&lt;/code&gt;,  but I haven't gotten around to doing anything like that.&lt;/p&gt;

&lt;p&gt;Depending on the site, and the features you're interested in, either of these feed seekers has their merits.&lt;/p&gt;

&lt;h4&gt;
  
  
  Feedsearch Crawler
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/DBeath/feedsearch-crawler"&gt;DBeath/feedsearch-crawler&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from feedsearch_crawler import search
import logging
logging.basicConfig(filename='example.log',level=logging.DEBUG)
import output_opml
list = ["http://bigfintechmedia.com/Blog/","http://blockchainespana.com/","http://blog.deanland.com/"]
for items in list:
    feeds = search(items)
    output_opml(feeds).decode()
    logger = logging.getLogger("feedsearch_crawler")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Feed seeker
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/mitmedialab/feed_seeker"&gt;mitmedialab/feed_seeker&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from feed_seeker import generate_feed_urls
list = ["http://bigfintechmedia.com/Blog/","http://blockchainespana.com/","http://blog.deanland.com/"]
for items in list:
    for url in generate_feed_urls(items):
        print(url)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  GitHub Actions
&lt;/h3&gt;

&lt;p&gt;Pluto Feed Reader is great, but I needed to find a way for it to run a regular schedule, so I wouldn't have to run the command every time I wanted to check for new feeds. For this, I've used &lt;a href="https://github.com/actions/setup-python"&gt;GitHub actions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This is an incredible feature of GitHub that allows you to spin up a virtual machine, install an operating system, dependencies supporting your application, and whatever commands you'd like to run, on a schedule.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: Build BlogCatcher
on:
  schedule:
    # This action runs 4x a day.
    - cron:  '0/60 */4 * * *'
  push:
    paths:
    # It also runs whenever I add a new feed to Pluto's config file.
    - 'planetid.ini'
jobs:
  updatefeeds:
    # Install Ubuntu
    runs-on: ubuntu-latest
    steps:
    # Access my project repo to apply updates after pluto runs
    - uses: actions/checkout@v2
    - name: Set up Ruby
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: 2.6
    - name: Install dependencies
      # Download and install SQLite (needed for Pluto), then delete downloaded installer
      run: | 
        wget http://security.ubuntu.com/ubuntu/pool/main/s/sqlite3/libsqlite3-dev_3.22.0-1ubuntu0.4_amd64.deb
        sudo dpkg -i libsqlite3-dev_3.22.0-1ubuntu0.4_amd64.deb
        rm libsqlite3-dev_3.22.0-1ubuntu0.4_amd64.deb
        gem install pluto &amp;amp;&amp;amp; gem install nokogiri &amp;amp;&amp;amp; gem install sanitize
    - name: build blogcatcher # This is the command I use to build my pluto project
      run: pluto b planetid.ini -t planetid -o docs
    - name: Deploy Files # This one adds the updates to my project
      run: |
        git remote add gh-token "https://github.com/identosphere/identity-blogcatcher.git"
        git config user.name "github-actions[bot]" 
        git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
        git add .
        git commit -a -m "update blogcatcher"
        git pull
        git push gh-token master
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Identosphere Blogcatcher
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://identosphere.net/blogcatcher"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zfuDRFlQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://infominer.xyz/assets/img/identosphere-blogcatcher.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://identosphere.net/blogcatcher"&gt;Identosphere Blogcatcher&lt;/a&gt; (&lt;a href="https://github.com/identosphere/planetid-reboot"&gt;source&lt;/a&gt;) is a feed aggregator for personal blogs of people who've been working on digital identity through the years, inspired by the original &lt;a href="https://web.archive.org/web/20161029051802/http://planetidentity.org/"&gt;Planet Identity&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We also have a page for &lt;a href="https://identosphere.net/blogcatcher/companies/"&gt;companies&lt;/a&gt;, and another for &lt;a href="https://identosphere.net/blogcatcher/organizations/"&gt;organizations&lt;/a&gt; working in the field. &lt;/p&gt;

&lt;h3&gt;
  
  
  Identosphere Weekly Highlights
&lt;/h3&gt;

&lt;p&gt;Last month, &lt;a href="https://twitter.com/identitywoman"&gt;Kaliya&lt;/a&gt; suggested that since we have these pages up and running smoothly, we were ready to start our newsletter. This is just a small piece of the backend information portal we're working towards, and not enough to make this project as painless and comprehensive as possible, but we had enough to get started.&lt;/p&gt;

&lt;p&gt;Every weekend we get together, browse the BlogCatcher, and share essential content others in our field will appreciate.&lt;/p&gt;

&lt;p&gt;We'll be publishing our 6th edition, at the start of next week, and our numbers are doing well!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3PIMtlRY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://infominer.xyz/assets/img/identosphere-stats.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3PIMtlRY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://infominer.xyz/assets/img/identosphere-stats.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This newsletter is free, and a great opportunity for us to work together on something consistent while developing a few other ideas.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://identosphere.substack.com/"&gt;identosphere.substack.com&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Setting up a newsletter without third-party intermediaries is more of a challenge than I'm currently up for, so we've settled on Substack for now, which seems to be a trending platform for tech newsletters.&lt;/p&gt;

&lt;p&gt;It has a variety of options for both paid and free content, and you can read our content before subscribing.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://www.patreon.com/identosphere"&gt;Support us on Patreon&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;While keeping the newsletter free, we are accepting contributions via Patreon. (yes another intermediary, but we can draw upon a large existing userbase, and it's definitely easier than setting up a self-hosted alternative.) &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.patreon.com/identosphere"&gt;&lt;img src="/assets/img/identosphere-patreon.png" alt="Become a patron"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So far, we have enough to cover a bit more than server costs, and this will ideally grow to support our efforts, and enable us to sustainably continue developing these open informational projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Python, Twitter Api, and GitHub Actions
&lt;/h2&gt;

&lt;p&gt;Since we're publishing this newsletter, and I've gotten a better handle on my inner state, I decided it was time to come back to twitter. However, I knew I couldn't do it the old way, where I manually re-tweeted everything of interest, spending hours a day scrolling multiple accounts trying to stay abreast of important developments.&lt;/p&gt;

&lt;p&gt;Instead, I dove into the twitter api. The benefits of using twitter programmatically can't be understated. For my first project, I decided to try an auto-poster, which could enable me to keep an active twitter account, without having to regularly pay attention to twitter.&lt;/p&gt;

&lt;p&gt;I found a simple guide &lt;a href="https://dototot.com/how-to-write-a-twitter-bot-with-python-and-tweepy/"&gt;How To Write a Twitter Bot with Python and tweepy&lt;/a&gt; composed of a dozen lines of python. That simple script posts a tweet to your account, but I wanted to post from a pre-made list, and so figured out how to read from a &lt;a href="https://yaml.org/"&gt;yaml&lt;/a&gt; file, and then used &lt;a href="https://github.com/actions/setup-python"&gt;GitHub actions&lt;/a&gt; to run the script on a regular schedule.&lt;/p&gt;

&lt;p&gt;While that didn't result in anything I'm ready to share here, quite yet, somewhere during that process I realized that I could write python. After playing around with Ruby, in ERB, to build the BlogCatcher, and running various python scripts that other people wrote, tinkering where necessary, eventually I had pieced together enough knowledge I could actually write my own code!&lt;/p&gt;

&lt;h3&gt;
  
  
  Decentralized ID Weekly Twitter Collections
&lt;/h3&gt;

&lt;p&gt;With that experience as a foundation I knew I was ready to come &lt;a href="https://twitter.com/DecentralizeID/"&gt;back to Twitter&lt;/a&gt;, begin trying to make more efficient use of its wealth of knowledge, and see about keeping up my accounts without losing too much hair.&lt;/p&gt;

&lt;p&gt;I made &lt;a href="https://gist.github.com/vickyqian/f70e9ab3910c7c290d9d715491cde44c"&gt;a script that searches twitter&lt;/a&gt; for a variety of keywords related to decentralized identity, and write the tweet text and some other attributes to a csv file. From there, I can sort through those tweets, and save only the most relevant, and publish a few hundred tweets about decentralized identity to a weekly &lt;a href="https://medium.com/analytics-vidhya/creating-a-twitter-collection-via-api-1378ecfe20df"&gt;twitter collection&lt;/a&gt;, that make our job a lot easier than going to 100's of websites to find out what's happening. :D&lt;/p&gt;

&lt;p&gt;Soon, these will be regularly published to &lt;a href="https://decentralized-id.com"&gt;decentralized-id.com&lt;/a&gt;, which I found out is an approved method of re-publishing tweets, unlike the ad hoc method I was using before, sharing them to discord channels (which grabs metadata and displays the preview image \ text), exporting their contents and re-publishing that.&lt;/p&gt;

&lt;p&gt;I do intend to share my source for all that after I've gotten the kinks worked out, and set it running on an action.&lt;/p&gt;

&lt;h4&gt;
  
  
  Twitter collections I've made so far
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/DecentralizeID/timelines/1322735918386733057"&gt;Self Sovereign ID 101&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/DecentralizeID/timelines/1322785746915307520"&gt;October Week 5 #SSI #DID&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/DecentralizeID/timelines/1325219075463712769"&gt;November Week 1 #SSI #DID&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Thanks for Reading!
&lt;/h2&gt;

&lt;p&gt;Look forward to any feedback, suggestions or any ideas you have!&lt;/p&gt;

</description>
      <category>python</category>
      <category>ruby</category>
      <category>githubactions</category>
      <category>identity</category>
    </item>
    <item>
      <title>Jekyll HPSTR to Hugo HPSTR Theme Migration</title>
      <dc:creator>⧉ infominer</dc:creator>
      <pubDate>Wed, 05 Jun 2019 23:58:56 +0000</pubDate>
      <link>https://forem.com/infominer33/jekyll-hpstr-to-hugo-hpstr-migration-gia</link>
      <guid>https://forem.com/infominer33/jekyll-hpstr-to-hugo-hpstr-migration-gia</guid>
      <description>&lt;p&gt;I've tried to learn Hugo a few different ways, and finally found one that works for me, and I hope will help anyone who's trying to make the leap.&lt;/p&gt;

&lt;p&gt;This guide and the accompanying repository should assist anyone switching from either Jekyll to Hugo, &lt;em&gt;or&lt;/em&gt; Hugo to Jekyll.&lt;/p&gt;

&lt;p&gt;If you are familiar with other Jekyll themes by &lt;a href="https://github.com/mmistakes/" rel="noopener noreferrer"&gt;Michael Rose&lt;/a&gt;, such as &lt;a href="https://github.com/mmistakes/minimal-mistakes" rel="noopener noreferrer"&gt;Minimal Mistakes&lt;/a&gt;, then HPSTR shouldn't come with too many surprises. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/mmistakes/hpstr-jekyll-theme" rel="noopener noreferrer"&gt;mmistakes/hpstr-jekyll-theme&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dldx/hpstr-hugo-theme/releases" rel="noopener noreferrer"&gt;dldx/hpstr-hugo-theme&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Jekyll HPSTR has its quirks like any theme, but I'm a novice and didn't have trouble forking it and building locally without any changes to the code.&lt;/p&gt;

&lt;p&gt;When I found out there was a Hugo version of the HPSTR theme, I knew this was my opportunity to figure out Hugo, once and for all!&lt;/p&gt;

&lt;p&gt;Now, I've got two branches of the same exact website! &lt;/p&gt;

&lt;p&gt;One powered by &lt;a href="https://github.com/infominer33/web-work/tree/hpstr-jekyll" rel="noopener noreferrer"&gt;Jekyll&lt;/a&gt; and one the other by &lt;a href="https://github.com/infominer33/web-work/tree/test-hugo" rel="noopener noreferrer"&gt;Hugo&lt;/a&gt;!!&lt;/p&gt;

&lt;p&gt;That's pretty neat, if you ask me! &lt;/p&gt;

&lt;h2&gt;
  
  
  Why
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;mmistakes/hpstr-jekyll-theme&lt;/code&gt; is archived, and you can no longer submit issues or pull-requests.&lt;/li&gt;
&lt;li&gt;Hugo has a lot of support from the development community, and is growing quickly in features and popularity.&lt;/li&gt;
&lt;li&gt;There are a lot of awesome Hugo themes I've been itching to try, particularly those supporting &lt;a href="https://infominer.id/web-work/tags/indieweb/" rel="noopener noreferrer"&gt;indieweb&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/themes/&lt;/code&gt; directory allows for easy testing and switching between new themes.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  HPSTR Jekyll vs Hugo
&lt;/h2&gt;

&lt;p&gt;Since HPSTR is an older Hugo theme, I need to find an older version of Hugo to run it. I started near the release and worked my way forward through the releases.&lt;/p&gt;

&lt;h3&gt;
  
  
  Releases
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/mmistakes/hpstr-jekyll-theme/releases" rel="noopener noreferrer"&gt;mmistakes/hpstr-jekyll-theme&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dldx/hpstr-hugo-theme/releases" rel="noopener noreferrer"&gt;dldx/hpstr-hugo-theme&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It turns out that each version was released at the same time, and that they were built together from the very beginning!&lt;/p&gt;

&lt;p&gt;The nice thing about &lt;code&gt;hpstr-hugo-theme&lt;/code&gt; is that its not archived, and if you want to open any &lt;a href="https://github.com/dldx/hpstr-hugo-theme/issues" rel="noopener noreferrer"&gt;issues&lt;/a&gt; or &lt;a href="https://github.com/dldx/hpstr-hugo-theme/pulls" rel="noopener noreferrer"&gt;pull-requests&lt;/a&gt;, that can be done. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/mmistakes/hpstr-jekyll-theme/releases" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimgur.com%2FjNTAlGt.png"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/dldx/hpstr-hugo-theme/releases" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimgur.com%2Fdvapj4y.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Root Directories
&lt;/h3&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%2Fimgur.com%2FobcGfNc.png" 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%2Fimgur.com%2FobcGfNc.png"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimgur.com%2FKZQODtU.png" 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%2Fimgur.com%2FKZQODtU.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Which Version of Hugo Should I Run?
&lt;/h2&gt;

&lt;p&gt;Scrolling back through the hugo releases when the HPSTR theme was in active development, I come across:&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;a href="https://github.com/gohugoio/hugo/releases?after=v0.16.0" rel="noopener noreferrer"&gt;0.16.0 June 6th 2016&lt;/a&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Hugo 0.16 is our best and biggest release ever. The Hugo community has outdone itself with continued performance improvements, beautiful themes for all types of sites from project sites to documentation to blogs to portfolios, and increased stability.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  .deb packages for Debian, Ubuntu, etc.
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Hugo has become part of the official Debian and Ubuntu repositories since January 2016!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's a nice note to find, since I'm an Ubuntu user. &lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;a href="https://github.com/gohugoio/hugo/releases/tag/v0.30" rel="noopener noreferrer"&gt;v0.17&lt;/a&gt; - October 2016
&lt;/h2&gt;

&lt;p&gt;There are numerous options for different platforms, and this version of Hugo was released in October, one month after the final release of HPSTR.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hugo is going global with our 0.17 release. [...] Adding additional languages to your website is simple and straightforward.&lt;/p&gt;

&lt;p&gt;Hugo continues its trend of each release being faster than the last. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Apparently it's fast enough that people began using hugo's webserver in production, around this time.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;New in 0.17: Available as Snap package&lt;/p&gt;

&lt;p&gt;Thanks to the contribution #2443 and guidance from @dholbach, Hugo is now available as a Snap package! (Snaps are a new kind of universal Linux packages.) Check it out at &lt;a href="https://uappexplorer.com/app/hugo.hugo-authors" rel="noopener noreferrer"&gt;https://uappexplorer.com/app/hugo.hugo-authors&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  &lt;a href="https://github.com/gohugoio/hugo/releases/tag/v0.17" rel="noopener noreferrer"&gt;Download links for Hugo v0.17&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Now that I've got Hugo working, lets see how far I can go..&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;a href="https://github.com/gohugoio/hugo/releases/tag/v0.30.1" rel="noopener noreferrer"&gt;v0.30.1&lt;/a&gt; - Oct 16, 2017
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Hugo 0.30 is the Race Car Edition. Hugo is already very very fast, but much wants more. So we added Fast Render Mode. It is hard to explain, so start the Hugo development server with hugo server and start editing. Live reloads just got so much faster! The "how and what" is discussed at length in other places, but the short version is that we now re-render only the parts of the site that you are working on.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is a big release, so I'm going to look ahead for the closest bug-fixes, but avoid any feature releases.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;a href="https://github.com/gohugoio/hugo/releases/tag/v0.31.1" rel="noopener noreferrer"&gt;v0.31.1&lt;/a&gt; -  Nov 27, 2017
&lt;/h2&gt;

&lt;p&gt;So.. there's another big release after this, at the start of 2018, but I think I'll stick with this one. It was published one year after HPSTR completed its development. &lt;/p&gt;
&lt;h2&gt;
  
  
  Test Install
&lt;/h2&gt;

&lt;p&gt;Once it's installed, type I &lt;code&gt;hugo version&lt;/code&gt; and read:&lt;/p&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%2Fimgur.com%2FJ2lnKkR.png" 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%2Fimgur.com%2FJ2lnKkR.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;perfect!!&lt;/p&gt;
&lt;h2&gt;
  
  
  Clone the Hugo Theme.
&lt;/h2&gt;

&lt;p&gt;With some pre-requisites out of the way, lets jump in at the first step in the theme setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dldx.org/hpstr-hugo-theme/theme-setup/" rel="noopener noreferrer"&gt;Theme Setup - HPSTR Hugo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even Migrating from one to the other, it's easier to start fresh in a new directory and pull in content from the original as necessary.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ mkdir newProject
$ cd newProject
$ mkdir themes
$ cd themes
$ git clone https://github.com/dldx/hpstr-hugo-theme.git hpstr
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and you will see &lt;code&gt;hpster&lt;/code&gt; located in: &lt;code&gt;/web-work/themes/hpstr&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example Site
&lt;/h2&gt;

&lt;p&gt;Once you have the &lt;code&gt;newProject/themes/hpstr&lt;/code&gt; you'll find the folder &lt;code&gt;exampleSite&lt;/code&gt; in the &lt;code&gt;hpstr&lt;/code&gt; directory. &lt;/p&gt;

&lt;p&gt;Just Copy the contents of &lt;code&gt;exampleSite&lt;/code&gt; to the root of &lt;code&gt;newProject&lt;/code&gt;, and test to see if it will run.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ hugo&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It should print something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Started building sites ...
Built site for language en:
0 draft content
0 future content
0 expired content
10 pages created
0 non-page files copied
15 paginator pages created
9 tags created
0 categories created
total in 100 ms

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

&lt;/div&gt;



&lt;p&gt;Unless you get that print-out, don't bother changing your whole sites configuration just yet.&lt;/p&gt;

&lt;p&gt;Make sure you placed the contents of &lt;code&gt;exampleSite&lt;/code&gt; into the root of your project directory, and that your directories are structured properly.&lt;/p&gt;

&lt;p&gt;Just to be sure! I'll test the server, also, and see that I get a website.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ hugo server&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Started building sites ...
Built site for language en:
0 draft content
0 future content
0 expired content
10 pages created
0 non-page files copied
15 paginator pages created
9 tags created
0 categories created
total in 61 ms
Watching for changes in /newProject/ {data,content,static,themes}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yay!!!&lt;/p&gt;

&lt;h2&gt;
  
  
  Directory Structure HPSTR Jekyll vs Hugo
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://mmistakes.github.io/hpstr-jekyll-theme/theme-setup/" rel="noopener noreferrer"&gt;mmistakes.github.io/hpstr-jekyll-theme/theme-setup/&lt;/a&gt;
&lt;/h3&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%2Fimgur.com%2FEBIdUUo.png" 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%2Fimgur.com%2FEBIdUUo.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://dldx.org/hpstr-hugo-theme/theme-setup/#setup:b8b08bb87737c3c5c8e714d4f8821e60" rel="noopener noreferrer"&gt;hpstr-hugo-theme/theme-setup&lt;/a&gt;
&lt;/h3&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%2Fimgur.com%2FnnI1lou.png" 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%2Fimgur.com%2FnnI1lou.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  In with the new.
&lt;/h2&gt;

&lt;p&gt;Now, it's simply moving over the content, and swapping out some frontmatter, and configuration formating.&lt;/p&gt;

&lt;h2&gt;
  
  
  Content
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://dldx.org/hpstr-hugo-theme/theme-setup/#adding-new-content:b8b08bb87737c3c5c8e714d4f8821e60" rel="noopener noreferrer"&gt;Posts are stored in the content directory&lt;/a&gt;. By default, only content in the &lt;code&gt;content/posts&lt;/code&gt; will show up in the &lt;code&gt;All Posts&lt;/code&gt; section, however, you can link to other sections manually. For example, if you create a post at &lt;code&gt;gallery/photo1.md&lt;/code&gt;, your post will appear both under the home page and under /gallery.&lt;/p&gt;
&lt;/blockquote&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%2Fimgur.com%2F0hsOjV7.png" 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%2Fimgur.com%2F0hsOjV7.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll notice that your root directory mirrors the themes directory structure, because the theme always keeps a backup file of everything necessary to function.&lt;/p&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%2Fimgur.com%2F83WTq5g.png" 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%2Fimgur.com%2F83WTq5g.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  archetypes/
&lt;/h3&gt;

&lt;p&gt;I entered some tags and categories:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;web-work/themes/hpstr/archetypes/default.md&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+++
Description = ""
Tags = ["resources", "web-work"]
Categories = ["howto", "tools"]
menu = "main"
+++
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  data/
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;From YAML to TOML&lt;/strong&gt;&lt;/p&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%2Fimgur.com%2F83WTq5g.png" 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%2Fimgur.com%2F83WTq5g.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the &lt;code&gt;theme&lt;/code&gt; directory is a navigation.yml file, and even awhole &lt;code&gt;exampleSite&lt;/code&gt; that we can copy over to our root data directory and customize. &lt;/p&gt;

&lt;p&gt;Be sure to change &lt;code&gt;title:&lt;/code&gt; to &lt;code&gt;title =&lt;/code&gt; and so forth.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[[links]]
title = "Webwork.tools"
url = "/webwork.tools/"

[[links]]
title = "Services"
url = "/services/"

[[links]]
title = "Mostly Free SEO Tools"
url = "/seo-tools/"

[[links]]
title = "GitHub Pages Starter Pack"
url = "/github-pages-starter-pack/"

[[links]]
title = "Practical Public Key Crypto"
url = "/practical-public-key-crypto/"

[[links]]
title = "InfoMine"
url = "http://infominer.id/"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Frontmatter
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The main differences&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;using &lt;code&gt;type&lt;/code&gt; rather than &lt;code&gt;layout&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;using the frontmatter variable &lt;code&gt;date&lt;/code&gt; to signify publication date, rather than hardcoding it into the title.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  HPSTR-Jekyll
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
layout: post
title: "Sample Code Post"
description: "Examples and code for various HPSTR functions."
tags: [samples, code, snippets]
comments: true
image:
  thumb: /images/pgp-og.png
  feature: pgp-banner.png
  background: triangular.png
modified: 2019-05-30T13:15:59-23:00
permalink: /sample-code/
---
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  HPSTR-Hugo
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
type: post
title: Sample Post
description: "Just about everything you'll need to style in the theme: headings, paragraphs, blockquotes, tables, code blocks, and more."
date: 2011-03-10

tags: [sample post]
image:
  feature: /images/abstract-3.jpg
  credit: dargadgetz
  creditlink: http://www.dargadgetz.com/ios-7-abstract-wallpaper-pack-for-iphone-5-and-ipod-touch-retina/
---
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  config.toml
&lt;/h2&gt;

&lt;p&gt;Now we are getting places! Next step is to copy the &lt;code&gt;config.toml&lt;/code&gt; from the root of our example site into the root of our repository. &lt;/p&gt;

&lt;p&gt;This is the final stretch, and we should be good to go&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;baseurl = "https://infominer.id/web-work"
languageCode = "en-gb"
title = "Webwork.tools: Independent Web-Work and Skyscraper Publishing."
theme = "hpstr"
pluralizelisttitles = false
PygmentsCodeFences = true
Paginate = 5
disqusShortname = "hpstrhugo"
publishdir = "docs"
enableEmoji = true
[params]
    subtitle = "Digital Tools for a Digital Transformation."
    [params.author]
        name = "⧉ Infominer"
        avatar = "/images/info-id.png"
        bio = "Full-Time Crypto-Curation and Histories ⧉ #Bitcoin #Blockchain #DecentralizedID ⧉ Research, Publishing, #WebWork #Indieweb ⧉"
        github = "infominer33/web-work"
    [params.image]
      feature = "/images/web-work-tools.png"

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;a href="http://web.archive.org/web/20161110120102/http://gohugo.io/overview/configuration" rel="noopener noreferrer"&gt;Configuring Hugo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;publishdir = "docs"&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By setting this in our config.toml, we will be able to ask github pages to publish from the docs folder.&lt;/p&gt;

&lt;h2&gt;
  
  
  Redirects
&lt;/h2&gt;

&lt;p&gt;One thing that's important to note, if you are switching from Jekyll HPSTR to HPSTR Hugo with me. HPSTR Hugo makes all your posts live in the &lt;code&gt;/posts/&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;If you used to let your blog live at the root of the site, like me, then add aliases, which are how Hugo does redirects.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://gohugo.io/content-management/urls/#aliases" rel="noopener noreferrer"&gt;Content Manegement - Aliases&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aliases:
  - /title-goes-here/
  - /other-title-too/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Build and Serve
&lt;/h2&gt;

&lt;p&gt;You must type &lt;code&gt;hugo&lt;/code&gt; to actually build and publish to the docs directory. &lt;/p&gt;

&lt;p&gt;Even though &lt;code&gt;hugo server&lt;/code&gt; builds new updates, it doesn't seem to update the files going back to our hosting provider. I don't really understand, but that seems to be the case.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use a line-break before each list!
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Twitter Cards
&lt;/h2&gt;

&lt;p&gt;This part, I didn't figure out, and am too happy playing with various Hugo themes to worry about it, for the moment. I'll update here when I have a definitive answer.&lt;/p&gt;

&lt;p&gt;I don't understand why &lt;code&gt;.Title&lt;/code&gt; is not &lt;code&gt;.title&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I'm pretty sure I need to add &lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;meta name="twitter:site" content="{{ .site }}"&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;but I didn't have success with that yet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- Twitter Cards --&amp;gt;
&amp;lt;meta name="twitter:title" content="{{ .Title }}"&amp;gt;
&amp;lt;meta name="twitter:description" content="{{ with .Description }}{{ . }}{{ else }}{{ $.Site.Params.subtitle }}{{ end }}"&amp;gt;
{{ with .Site.Params.owner.twitter }}&amp;lt;meta name="twitter:creator" content="{{ . }}"&amp;gt;{{ end }}
{{ if isset ($.Scratch.Get "Params") "image" }}
    {{ $imageparams := index ($.Scratch.Get "Params") "image" }}
    {{ with $imageparams.thumb }}
        &amp;lt;meta name="twitter:card" content="summary"&amp;gt;
        &amp;lt;meta name="twitter:image" content="{{ . | absURL }}"&amp;gt;
    {{ else }}
        &amp;lt;meta name="twitter:card" content="summary_large_image"&amp;gt;
        &amp;lt;meta name="twitter:image" content="{{ $imageparams.feature | absURL }}"&amp;gt;
    {{ end }}
{{ end }}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I also added these lines to my config.toml&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
[twitter]
  card = "summary_image_large"
  site = "@infominer33"
  title =  "Webwork.tools: Independent Web-Work and Skyscraper Publishing."
  description = "Resources for Independent Webworkers: Web-Publishing, SEO, Static Site Generators, Ubuntu, Research Driven Content."
  image = "/images/web-work-tools.png"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fimgur.com%2Fe6egggQ.png" 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%2Fimgur.com%2Fe6egggQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Test Branches
&lt;/h2&gt;

&lt;p&gt;I'm already trying a few Hugo Themes for different sites, in particularly one designed to support &lt;a href="https://github.com/AngeloStavrow/indigo" rel="noopener noreferrer"&gt;indieweb&lt;/a&gt; priniciples. I have &lt;a href="https://infominer.id/web-work/images/" rel="noopener noreferrer"&gt;a few demo images&lt;/a&gt; of HPSTR-Hugo in the Master branch. I didn't think ahead and save images of the Jekyll version.&lt;/p&gt;

&lt;p&gt;However, I'll leave those branches to make sure anyone has a little easier time migrating from Jekyll to Hugo.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/infominer33/web-work/tree/test-hugo" rel="noopener noreferrer"&gt;https://github.com/infominer33/web-work/tree/test-hugo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/infominer33/web-work/tree/hpster-jekyll" rel="noopener noreferrer"&gt;https://github.com/infominer33/web-work/tree/hpster-jekyll&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://web.archive.org/web/20161110121524/http://gohugo.io/overview/installing" rel="noopener noreferrer"&gt;web.archive.org - Installing Hugo v0.17&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://web.archive.org/web/20161103072343/http://gohugo.io/overview/usage/" rel="noopener noreferrer"&gt;web.archive.org - Using Hugo v0.17&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://infominer.id/web-work/posts/branches-git/" rel="noopener noreferrer"&gt;Creating a Test Branch and Merging changes back to Master&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.jvt.me/posts/2019/01/04/goodbye-jekyll-hello-hugo/" rel="noopener noreferrer"&gt;Goodbye Jekyll - Hello Hugo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://infominer.id/web-work/github-pages-starter-pack/" rel="noopener noreferrer"&gt;GitHub Pages Starter-Pack&lt;/a&gt; - &lt;a href="https://infominer.id/web-work/github-pages-extended-resources/" rel="noopener noreferrer"&gt;&lt;em&gt;Extended Resources&lt;/em&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Other Hugo Themes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/EmielH/tale-hugo" rel="noopener noreferrer"&gt;https://github.com/EmielH/tale-hugo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Over the Rainbow
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://masayk.github.io/tech/hugo/" rel="noopener noreferrer"&gt;Blogging with Org-Mode and Hugo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reach out in the Comments
&lt;/h2&gt;

&lt;p&gt;I'd love to hear what your favorite themes are, Jekyll or Hugo. &lt;/p&gt;

&lt;p&gt;Feel free to ask any questions, I'm no expert, but am darn good with a search engine, and have plenty of opinions. :)&lt;/p&gt;

</description>
      <category>static</category>
      <category>webdev</category>
      <category>website</category>
      <category>codenewbie</category>
    </item>
  </channel>
</rss>
