Issue Let’s Encrypt SSL certificates with the control panel
Starting next week, our in-house developed ACME client will go live and you’ll be able to issue and install a free Let’s Encrypt SSL certificate for the majority of your WebFaction hosted websites.

We will enable this feature in two waves. On Monday, the 17th of September, 2018, at 13:00 UTC for all websites on cloud servers and, baring any major issues, for websites on shared servers a week later, on Monday, the 24th of September, 2018, at 13:00 UTC.

In order for our Let’s Encrypt certificate tool to work, the website you want to generate the certificate for should be resolving to the IP address of our server, either by having it’s NS records pointing to our nameservers or have it’s A records pointing to the web server’s IP address.

We’ve already updated our control panel documentation to include instructions on how to secure your websites, but if you have any questions feel free to raise a ticket and our support team will gladly answer any questions you might have.

Please note that there are currently three limitations on our custom ACME client:

there is no support for wildcard domains
it is not possible to enable or disable a Let’s Encrypt certificate using our API
no certificates for subdomains. If you have one in your https websites, you will need to remove it before issuing a certificate
All are in our road-map to work out in a future version.

Also note that Let’s Encrypt has set some rate limits, which you can review here. Our control panel will show an error if you try to hit them.

UPDATE: Our ACME client is now enabled on all sites hosted on cloud servers.

UPDATE: We’ve postponed the deployment of our ACME client to the shared servers for tomorrow, the 25th of September, 2018, at 13:00 UTC.
16 hours ago
RSS Feed Validation Service
This is the W3C Feed Validation Service, a free service that checks the syntax of Atom or RSS feeds. The Markup Validation Service is also available if you wish to validate regular Web pages.
3 days ago
RSS for Jekyll blogs
Recently I rebuilt my blog on Jekyll, a sweet static site generator. However when a friend noticed I had no way for him to subscribe to my content, he suggested adding an RSS feed.

Turns out adding an RSS feed to a Jekyll site is SUPER SIMPLE by just using jekyll-rss-feeds. Here’s how:

1. Add site details for your Jekyll config file

Add the following key/value pairs to your _config.yml file:

name: Your Blog's Name
description: A description for your blog
These values will be used as site info in your feed. As a bonus, you can now access these as variables anyplace else in your Jekyll templates by using {{ }}, {{ site.description }} and {{ site.url }}.

2. Add feed.xml to the site root

The jekyll-rss-feeds project includes several options for types of feeds you can use, including a category feed. But we’re just going to keep it simple.

The following jekyll template will generate a properly formatted list of your 10 most recent posts. Just create a feed.xml file in your site root, and paste this into it:

layout: none
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="">
<title>{{ | xml_escape }}</title>
<description>{{ site.description | xml_escape }}</description>
<link>{{ site.url }}</link>
<atom:link href="{{ site.url }}/feed.xml" rel="self" type="application/rss+xml" />
{% for post in site.posts limit:10 %}
<title>{{ post.title | xml_escape }}</title>
<description>{{ post.content | xml_escape }}</description>
<pubDate>{{ | date: "%a, %d %b %Y %H:%M:%S %z" }}</pubDate>
<link>{{ site.url }}/{{ post.url }}</link>
<guid isPermaLink="true">{{ site.url }}/{{ post.url }}</guid>
{% endfor %}
If you wish to increase the number of posts that are output in your feed, just modify the integer in the following line that reads { for post in site.posts limit:10 } from 10 to whatever output you wish.

3. Build your site and push

Yup, that’s it! Just jekyll build your site and push, or if you are on GitHub Pages, just push your changes to master and your new RSS feed will be in place.

Don’t forget to put a link to your feed somewhere where in your page layout so your readers will know about it and be able to find it.

Also, it’s a good idea to add a <link> element in the document <head> for browsers that have built in support for RSS feed-readers. You can use a line like this: <link href='' rel='alternate' type='application/atom+xml'> (props to @pengwynn for pointing this one out with a PR).

Mad props to @snaptortoise for creating these simple and easy to use RSS Jekyll templates!
3 days ago
Jekyll RSS files
Jekyll RSS Feed Templates

NOTE: If you're a fan of this project you should checkout the sister project: jekyll-json-feeds.

A few Liquid templates to use for rendering RSS feeds for your Jekyll blog. Featuring four kinds of feeds:

feed.xml — Renders the 10 most recent posts.
feed.category.xml — Only renders posts for a specific category. This example renders posts for a "miscellaneous" category.
feed.links.xml — Only contains posts that link to external websites noted by a link variable in the YAML Front Matter. Not a common Jekyll convention, but a good way to generating a linked list.
feed.articles.xml — Only showing articles that don't link to external sites; The opposite of feed.links.xml
How to use

Update _config.yml as noted below, or manually replace the variables.
Copy one of the xml (ie, feed.xml) files to the root directory of your Jekyll blog.
Run jekyll.
In your generated _site folder you should find a properly formatted feed at feed.xml.

Customizing _config.yml

These templates rely on a customized version of _config.yml. The following lines have been added:

name: Your Blog's Name
description: A description for your blog
feed_items: 10
feed_update_period: daily
feed_update_frequency: 1
This makes it easy to reference the title, description and URL for your site in the feed templates using {{ }}, {{ site.description }} and {{ site.url }}. Even if you're not using these feed templates, you might find these variables useful when you're designing your layouts.

The feed_* items shown above are the default. You can safely omit them.


Note on YAML Front Matter block: The xml files contain an empty YAML Front Matter block. This is necessary because Jekyll will not process a page with Liquid unless there is a YAML block at the top of the file. Previously, this block contained the line layout: none but that was found to cause a separate issue for some:

RSS Autodiscovery: If your template is not already setup to do so, make sure the RSS feeds are discoverable by browsers, bots, etc. by providing proper link tags to your Jekyll layout files (adapt href and title appropriately):

<link href="/blog/feed.xml" type="application/rss+xml" rel="alternate" title="Latest 10 blog posts (atom)" />
Refer to for details.

Validation: You can use the W3C Validator to make sure your feeds are formatted correctly:

If you're a Pinboard user and found this repo useful, take a look at jekyll-pinboard. It allows you to load your Pinboard bookmarks into your Jekyll site with just a couple lines.

If you're looking for JSON feed templates to add to your Jekyll blog please checkout the sister project: jekyll-json-feeds.
3 days ago
Creating a Jekyll Blog with Bootstrap 4 and Sass
I recently updated this blog to use Bootstrap 4. I decided to document the process for getting Jekyll working with Bootstrap and Sass.

In this article we’ll build out a very minimal framework which allows us to easiy manipulate our CSS via Sass. In subsequent post(s) we’ll add more features and pages.

I’d encourage you to follow along, but if you want to skip directly to the code, it’s available on GitHub at:
3 days ago
Color Wheel
Easily pick colors that compliment each other.
3 days ago
3 Simple Steps To Setup Jekyll Categories And Tags
Why Jekyll Categories or Tags?

Imagine you have a blog where you discuss very different things all together. Many bloggers post their personal experiences along with some professional posts. Curating information is very important to make users browse through your website with ease. What if New York Times had no categories like Politics, Business, Tech etc..? How hard would it be to track what happened to last night’s football game? There should be a Sports category to make readers’ life easy.

One more thing I want to clear right away is that tags are nothing but categories in Jekyll. And if you want your post links to be /category/title/ or /tag/title/ then you can do that in _config.yml file by using this line
3 days ago
Adding and Displaying Tags on Jekyll Posts
When I started this blog, I knew I wanted to tag the posts and use tag based navigation. Unfortunately, my Jekyll theme didn’t display post tags so I modified it tonight. This post covers how to add tags to posts and how to display them.

Defining Tags
Tags must be defined in the post YAML Front Matter.

layout: post
title: A Post Without Tags
There are two alternatives to define the tags. The first one is the simplest. Just add the tags, separating them by at least one space. This is suitable when the tags are single words.

layout: post
title: A Post With One Word Tags
tags: FirstTag SecondTag ThirdTag
If the tags are made of more than one word, the second alternative is needed. The tags must be in a YAML array, separated by at least one space.

layout: post
title: A Post With Multi Word Tags
tags: [ First Tag, Second Tag, Third Tag ]
Displaying Tags
The tag array is available in the post.tags variable.

Determining Whether Tags Should Be Displayed
The size attribute of the tags array can be checked to determine whether they should be displayed.

{% if post.tags.size > 0 %}
# Display tags
{% endif %}
Displaying the Singular or Plural Form
When there’s only one tag, “Tag:” should be displayed instead of “Tags:”. All this code must be on a single line unless spaces will be added in place of new lines.

Tag{% if post.tags.size > 1 %}s{% endif %}:
Displaying Tags
The Liquid template engine used by Jekyll offers a lot of filters. The sort filter is useful to sort the values of an array and the join filter can be used to separate each entry of an array by a string. It is useful to separate each tag by a comma.

{{ post.tags | sort | join: ", " }}
Assemble Everything
Once assembled, the code to display the tags is not very complicated.

{% if post.tags.size > 0 %}
Tag{% if post.tags.size > 1 %}s{% endif %}:
{{ post.tags | sort | join: ", " }}
{% endif %}
The result for this post is:

Tags: Jekyll, Tags
With tagged posts, pages to list posts by tag would be nice. Jekyll doesn’t generate those by default, but plugins exist to do it. Unfortunately, plugins are not allowed on GitHub Pages. The workaround would be to generate the Jekyll site locally with plugins enabled, and commit only the output to the GitHub repository.
7 days ago
How to list your jekyll posts by tags
The below example code demonstrates how to show and organize your posts by tags using jekyll and the liquid template language. This is basically the same code I use for my own listing of posts by tag.

The below code shows:

How to generate a list all the tags on your website. A tag cloud could be created by using the number of posts and CSS.
How to get the number of posts per tag
How to use filters to convert the tag to lowercase and strip out spaces, which is useful for creating anchors
How to list all the tags and includes a sublist of posts that are associated to that tag.
Listing all Tags

<ul class="tags">
{% for tag in site.tags %}
{% assign t = tag | first %}
{% assign posts = tag | last %}
<li>{{t | downcase | replace:" ","-" }} has {{ posts | size }} posts</li>
{% endfor %}
Listing all Tags and the posts containing that Tag

{% for tag in site.tags %}
{% assign t = tag | first %}
{% assign posts = tag | last %}

{{ t | downcase }}
{% for post in posts %}
{% if post.tags contains t %}
<a href="{{ post.url }}">{{ post.title }}</a>
<span class="date">{{ | date: "%B %-d, %Y" }}</span>
{% endif %}
{% endfor %}
{% endfor %}
7 days ago
How to Safely Test Software Without Messing Up Your System
The internet is full of sweet apps, but it's also packed with shady software. Before you install something awful, give yourself an infosec education. Here are the best tools to protect yourself out there when you're experimenting with new programs.

Unless you have spare computers lying around, you need to protect your system when trying out software you don't trust. This post will guide you through several methods that can help contain any malicious changes or prevent rogue apps from doing something you don't want. Some methods are focused on staying as secure as possible. Others are better at trying out apps without messing up your settings, but may not be perfectly secure. We'll explain which ones are best for which at the end of each section.
7 days ago
Posts by month in Jekyll
You can modify your date filter to integrate the month, e.g. date: "%B %Y". That's what I used in a layout, with a separate <ul> for each month.

From documentation, month-only values for the date filter are:

%b: abbreviated month name.
%B: full month name.
%m: month of the year (01 - 12).
Complete loop:

{% for post in site.posts %}
{% assign currentdate = | date: "%B %Y" %}
{% if currentdate != date %}
<li id="y{{currentdate}}">{{ currentdate }}</li>
{% assign date = currentdate %}
{% endif %}
<li><a href="{{ post.url }}">{{ post.title }}</a></li>
{% endfor %}
9 days ago
A dead simple, responsive boilerplate
You should use Skeleton if you're embarking on a smaller project or just don't feel like you need all the utility of larger frameworks. Skeleton only styles a handful of standard HTML elements and includes a grid, but that's often more than enough to get started. In fact, this site is built on Skeleton and has ~200 lines of custom CSS (half of which is the docking navigation).
16 days ago
« earlier      

Copy this bookmark: