pblog https://pblog.bt.ht Pandoc static blog generator Copyright 2022, Bradley Taunt 60 Fri, 15 Jul 2022 01:00:00 EST 2022/07/15/5 First Community Patch & Tweaks https://pblog.bt.ht/blog/community-patch.html

First Community Patch & Tweaks

Fri, 15 Jul 2022

pblog has received its first community patch! By “community” I mean someone other than myself has helped make this blog generator even better. So special thanks to Matthew Graybosch for contributing to this humble project and patching in some solid quality of life improvements.

This is why open source is great: smarter people can help fix your mashed-up spaghetti code!

The Changes

  1. Both pages and posts now generated Table of Contents by default
    • You have the ability to disable this site-wide in the pblog config
  2. Ability to disable Pandoc generated syntax highlighting
  3. xsltproc will now generate HTML5 and include the RSS feed description under the title
  4. New metadata variable (HTML_LANG) in the pblog.sh config
  5. Generated pages and posts now have “Table of Contents” by default
    • This can be disabled in individual files with toc: false
  6. Cleaned up redundant find statements

Some Features Left Behind…

Also suggested in this patch was the addition of more advanced image manipulation via ImageMagick. This additional feature was pretty great from my testing but I felt as though adding an extra dependency and slightly more complex settings to pblog was moving things further from simplicity.

BUT - that doesn’t mean you can’t take this great feature with you!

Introducing “Tweaks”

I feel that pblog should always remain as simple as possible at the core. Let people get something up-and-running with the least amount of friction as possible. But I know that some users might want to squeeze just a little bit more out of it. This is where the new Tweaks section comes in.

Feel free to check out the official Tweaks page and don’t be afraid to add your own by opening a patch-set!

That’s all for now, thanks for reading!

– Brad

]]>
brad@bt.ht (Bradley Taunt) https://pblog.bt.ht/blog/community-patch.html
Wed, 27 Jul 2022 01:00:00 EST 2022/07/27/3 New Default Styling and 2x Faster! https://pblog.bt.ht/blog/default-styles.html

New Default Styling and 2x Faster!

Wed, 27 Jul 2022

If it wasn’t already obvious, this project has received a minor styling overhaul. But looks weren’t the only thing updated with this latest patch.

The total build process time is now two times faster!

Keep reading for more details.

The Default “Theme”

The styling changes aren’t anything ground breaking. They simply center the main content and add a little more visual separation of the content and backdrop. Again, you can customize pblog as you see fit, but having a sane default is always nice.

New Config Setup

Since updates and performance fixes might continue to come through in the future, I didn’t want to make users play around with their default configuration every single time. Now, all main configuration is handled in the new _config.sh file.

#!/bin/sh

# Site specific settings
###################################################################################
DOMAIN="https://pblog.bt.ht"
TITLE="pblog"
DESCRIPTION="Pandoc static blog generator"
COPYRIGHT="Copyright 2022, Bradley Taunt"
AUTHOR="brad@bt.ht (Bradley Taunt)"
OS="Linux" # "Linux" for Linux, "BSD" for BSD Systems (including MacOS)
HTML_LANG="en_US" # Your document (HTML) language setting

# Blog structure settings (most users should use these defaults)
###################################################################################
TOC=true
SYNTAX=true
PAGES_DIR="pages/"
POSTS_DIR="posts/"
PAGES=$(find $PAGES_DIR -type f)
POSTS=$(find $POSTS_DIR -type f)
WEB_HTML="blog/"
OUTPUT="_output/"
TIME="01:00:00 EST"
TTL="60"

Feels cleaner already, right?

Cutting the Build Time in Half

I must give big kudos to Matthew Graybosch for inspiring this pretty big improvement. After some discussion over emails we both agreed that it seemed overkill to render the blog content twice (once for the XML feed itself and then again for all posts listed under blog). Performance wasn’t the initial goal when I first launched this project, but now that the dust has settled it seemed appropriate to go back and fix some things.

pblog now only needs to render the blog posts found in the posts directory once. It still produces semantic XML and keeps the webview versions of the articles looking solid. Overall I’m pretty happy with this little improvement - it should pretty noticeable on projects rendering many posts.

Far From Perfect

This project is still very much in it’s infancy. So if you notice something odd or broken in your own testing, please don’t hesitate to open a patch or simply bring up the issue!

Thanks for reading,

– Brad

]]>
brad@bt.ht (Bradley Taunt) https://pblog.bt.ht/blog/default-styles.html
Mon, 04 Jul 2022 01:00:00 EST 2022/07/04/1 Introducing pblog https://pblog.bt.ht/blog/pblog-intro.html

Introducing pblog

Mon, 04 Jul 2022

This article is a living document. It will always have the most up-to-date information on getting started with pblog.

Last Updated: July 27, 2022


Although this project was already announced a couple days ago, I thought it might be best to actually breakdown pblog into greater detail.

Enough chit-chat, let’s get into it!

Main Goal

The entire purpose of pblog is to be as bare-bones as possible, while still maintaining a pleasant writing workflow. Users write their posts and pages in Markdown - pblog handles everything else:

  • Posts and pages generated via Pandoc with minimal CSS
  • RSS feed at feed.xml
  • Generated blog listing at blog/index.html
  • Browser-styled XML (in supported browsers)

Site Structure

After you’ve cloned the official pblog repo on sourcehut, the next thing you should do is edit the main _config.sh file in the root directory. This will give you a better understanding of how everything is built.

Once generated, pblog structures the final website files as such:

_output/
    |__blog/
        |__index.html
        |__blog-post-example.html
    |__media/
    |__feed.xml
    |__index.html
    |__rss.xsl
    |__style.css

This structure is completely customizable by simply editing the _config.sh file (if you so desire).

Headers and Footers

By default pblog will add the header and footer includes to every individual post and page. To edit these, simply open the _header.html and _footer.html files respectively.

Important: To avoid rendering issues DO NOT remove the included article opening and closing tags within those files. Everything else you can edit, remove, etc.

Posts and Pages

Posts and pages are written via Markdown inside the posts and pages folders respectively.

Individual posts require the following headers (take note of the date format):

---
title: Blog Title
date: Mon, 04 Jul 2022
---

while individual pages only require a title:

---
title: Page Title
---

This makes for an easier switch over from other SSG platforms like Jekyll or Hugo.

The Build Process

The main variables at the top of the pblog.sh file need to edited with your own details before generating your website. Those variables are fairly self-explanatory and simple to edit.

All you need to do now is run make (or make serve if you’re looking to test locally) and you’re done. Your website should now be fully generated inside the include _output directory. For quick reference:

  1. pblog converts your Markdown posts into two variations of HTML
    • One is used specifically for rendering itself inside the RSS feed
    • The other is used for linking in a browser
  2. Next, pblog converts your Markdown pages into HTML
  3. All of these generated HTML files are then moved to the _output folder

pblog is also smart enough to automatically generate a main blog list directory for you. This index.html file is placed inside the _output/blog folder on build. You can see an example of the blog list on this very website.

Uploading to the WWW

Those with more experience will probably lean towards using a utility like rsync to sync the contents of their _output folder with their web server. For those with less experience, I recommend using something like Netlify Drop to make things as friction-less as possible.

Wrapping Up

There isn’t much else to say. pblog is as static or flexible as you chose it to be. If you have any ideas on how to improve things or come across any bugs, please open a ticket or PR on the official repo.

Thanks and happy blogging with pblog!

]]>
brad@bt.ht (Bradley Taunt) https://pblog.bt.ht/blog/pblog-intro.html
Thu, 30 Jun 2022 01:00:00 EST 2022/06/30/4 Announcing pblog https://pblog.bt.ht/blog/pblog-launch.html

Announcing pblog

Thu, 30 Jun 2022

It’s time to celebrate! The official launch of pblog happened today.

There isn’t much else to say. All details and instructions on how to start your own pblog can be found on the main homepage for this project.

Thanks for reading!

]]>
brad@bt.ht (Bradley Taunt) https://pblog.bt.ht/blog/pblog-launch.html
Fri, 08 Jul 2022 01:00:00 EST 2022/07/08/5 Includes, rsync and Variables - Oh My! https://pblog.bt.ht/blog/small-patch.html

Includes, rsync and Variables - Oh My!

Fri, 08 Jul 2022

Even though pblog was just launched a week ago, it has since been updated with some nice quality-of-life improvements.

A new variable was added to the main pblog.sh configuration file called INC_HEAD_FOOT. By default this is set to true and simply pulls in two HTML files:

  • _header.html: all content within is placed directly after the opening body tag
  • _footer.html: all content within is placed directly before the closing body tag

These includes are added to every outputted file from inside both the posts and pages directories on build.

Syncing Changes with rsync

Although it adds another dependency to the project, I believe utilizing rsync for the generated files is far better then nuking the directory from orbit each time. This also provides a cleaner experience for users syncing their _output directory with their web server of choice.

On the Horizon…

My plan was to also tackle the issue of “auto rebuilds” when running pblog locally. This became more of a headache than I initially estimated - so it was dropped from this patch. My hope is to get something up-and-running in the near future, while avoiding the inclusion of yet another major dependency. Anyone more experienced than myself in the ways of “auto rebuilds” is free to open a patch if they so desire!

Thanks for your interest in these minor updates!

P.S. Don’t forget - if your website runs on pblog be sure to reach out and get it featured on the homepage!

]]>
brad@bt.ht (Bradley Taunt) https://pblog.bt.ht/blog/small-patch.html