<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Website on Flo's Thoughts</title><link>https://flohei.de/tags/website/</link><description>Recent content in Website on Flo's Thoughts</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 19 Feb 2026 21:07:22 +0100</lastBuildDate><atom:link href="https://flohei.de/tags/website/index.xml" rel="self" type="application/rss+xml"/><item><title>Note to Self: On Working With Hugo</title><link>https://flohei.de/2026/02/note-to-self-on-working-with-hugo/</link><pubDate>Thu, 19 Feb 2026 21:07:22 +0100</pubDate><guid>https://flohei.de/2026/02/note-to-self-on-working-with-hugo/</guid><description>&lt;p&gt;In early 2026, I had the urge to start using my website again. I had a few ideas for some blog posts that I want to write about. While checking out the page and updating what&amp;rsquo;s been here, I had to figure a few things out. This is just for me to remember what I did for the next time I have to do a major jump.&lt;/p&gt;
&lt;h2 id="updating-the-theme"&gt;
 Updating the theme
 &lt;a class="heading-link" href="#updating-the-theme"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;At the time of writing, I&amp;rsquo;m using the theme &lt;a href="https://themes.gohugo.io/themes/hugo-coder/" class="external-link" target="_blank" rel="noopener"&gt;hugo-coder&lt;/a&gt;. I did not install it as a submodule but as a plain copy. When updating to the newest version, I had to replace a few files.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;To always link to a link post&amp;rsquo;s url of to the associated external link: &lt;em&gt;themes/hugo-coder/layouts/posts/li.html&lt;/em&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;{{ .Date | time.Format (.Site.Params.dateFormat | default &amp;ldquo;January 2, 2006&amp;rdquo; ) }}&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;{{ .Title }}&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;li&gt;To display link post&amp;rsquo;s title with an arrow: &lt;em&gt;themes/hugo-coder/layouts/posts/single.html&lt;/em&gt;
…
&lt;!-- raw HTML omitted --&gt;
{{ if .Params.ExternalLink }}
&lt;!-- raw HTML omitted --&gt;→ &lt;!-- raw HTML omitted --&gt;{{ .Title }}&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;
{{ else }}
&lt;!-- raw HTML omitted --&gt;{{ .Title }}&lt;!-- raw HTML omitted --&gt;
…&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="overview"&gt;
 Overview
 &lt;a class="heading-link" href="#overview"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;I liked this video tutorial by Luke Smith that helped me understand how Hugo works.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ZFL09qhKi5I?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;
</description></item><item><title>Hey Kirby!</title><link>https://flohei.de/2016/02/hey-kirby/</link><pubDate>Tue, 16 Feb 2016 19:14:37 +0200</pubDate><guid>https://flohei.de/2016/02/hey-kirby/</guid><description>&lt;figure&gt;&lt;img src="https://flohei.de/media/getkirby.com.png"&gt;
&lt;/figure&gt;

&lt;p&gt;For the last couple of years I have been &lt;a href="https://flohei.de/2014/07/moving-to-jekyll/" &gt;using Jekyll&lt;/a&gt; for this website and I really enjoyed it. It&amp;rsquo;s nerdy nature spoke to my inner, well, nerd. Unfortunately, this nerdism isn&amp;rsquo;t always practical. Jekyll requires you to rebuild your website and sync the resulting website files to your host. I know there are solutions to this but they all seemed kinda hacky to me. This was fun for a while but I felt like it got more and more in the way when just wanting to quickly share something. Hey, who would&amp;rsquo;ve thought a backend can make total sense when you want to manage contents?&lt;/p&gt;
&lt;p&gt;So I started looking at different solutions and what stuck with me is &lt;a href="http://getkirby.com" class="external-link" target="_blank" rel="noopener"&gt;Kirby&lt;/a&gt; by Bastian Allgeier. The migration process took quite some manual labour as I wanted to migrate my old post and I wasn&amp;rsquo;t able to find an automated way to that. But now that I have moved everything over I&amp;rsquo;m glad to have a backend which I can also use on my iPad. Unfortunately, I don&amp;rsquo;t speak any CSS anymore. Therefore, I&amp;rsquo;ll have to stick with the default theme for now. But that doesn&amp;rsquo;t look to bad anyway, if you asked me.&lt;/p&gt;
&lt;p&gt;So, welcome to my site, Kirby!&lt;/p&gt;</description></item><item><title>Jekyll Auto-Build With Git Hooks</title><link>https://flohei.de/2015/10/jekyll-auto-build-with-git-hooks/</link><pubDate>Tue, 13 Oct 2015 19:26:26 +0200</pubDate><guid>https://flohei.de/2015/10/jekyll-auto-build-with-git-hooks/</guid><description>&lt;p&gt;&lt;em&gt;tl;dr: Use the full path to your &lt;code&gt;jekyll&lt;/code&gt; executable when running it from a git hook.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As much as I love Jekyll for it&amp;rsquo;s nerdiness and it&amp;rsquo;s speed, as much can it be annoying at times when you have to &amp;ldquo;compile&amp;rdquo; your website and upload it to your server every time you fix a comma. This situation lends itself to get automated.&lt;/p&gt;
&lt;p&gt;First things first: I host my website on &lt;a href="https://uberspace.de" class="external-link" target="_blank" rel="noopener"&gt;Uberspace&lt;/a&gt;. I mentioned before that they&amp;rsquo;re just the best, right&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;? Anyway, at Uberspace, they don&amp;rsquo;t have Jekyll pre-installed so you have to install it yourself. And since you can&amp;rsquo;t just install it for the entire machine, you have to install it on a per-user basis:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gem install --user jekyll
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This allows you to still run &lt;code&gt;jekyll&lt;/code&gt; from the terminal as you normally would. However, this doesn&amp;rsquo;t seem to apply when working executing a &lt;code&gt;post-receive&lt;/code&gt; git hook included in your server repository.&lt;/p&gt;
&lt;p&gt;Therefore, I had to enter the full path&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; to the &lt;code&gt;jekyll&lt;/code&gt; executable to the &lt;a href="http://jekyllrb.com/docs/deployment-methods/#git-post-receive-hook" class="external-link" target="_blank" rel="noopener"&gt;example&lt;/a&gt; provided on the official Jekyll site. So, what I ended up with looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;GIT_REPO=$HOME/git/flohei.de.git
TMP_GIT_CLONE=$HOME/tmp/myrepo
PUBLIC_WWW=$HOME/html

git clone $GIT_REPO $TMP_GIT_CLONE
cd $TMP_GIT_CLONE
~/.gem/ruby/1.9.1/bin/jekyll build -s $TMP_GIT_CLONE -d $PUBLIC_WWW
rm -Rf $TMP_GIT_CLONE
exit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I assume that this applies to any setup where you&amp;rsquo;re not able to install software on a machine-level but only on your user account. So feel free to &lt;a href="https://flohei.de/contact" &gt;drop me a line&lt;/a&gt; if this helped you, even with another setup.&lt;/p&gt;
&lt;p&gt;If you can see this post, this means that this system is working as intended.&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;They operate on a pay-what-you-want basis and offer a shit-ton of features. Besides, their support is insane. And I mean that in the best possible way.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;If you don&amp;rsquo;t know how to find that full path just run &lt;code&gt;which jekyll&lt;/code&gt;.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Trying Medium</title><link>https://flohei.de/2015/10/trying-medium/</link><pubDate>Thu, 08 Oct 2015 19:38:31 +0200</pubDate><guid>https://flohei.de/2015/10/trying-medium/</guid><description>&lt;p&gt;Cat just found my post on &lt;a href="https://flohei.de/2015/08/geofencing" &gt;Geofencing&lt;/a&gt; and the &lt;a href="https://flohei.de/2015/08/rtfm-flo" &gt;follow-up&lt;/a&gt; on my site and suggested that I should cross-post them to Medium, just to reach a wider audience. So I decided to give it a shot. If you prefer reading some of my posts on Medium, you can now do so. As usual, my profile can be found &lt;a href="http://medium.com/@flohei" class="external-link" target="_blank" rel="noopener"&gt;@flohei&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Combining Matt Gemmell's Staging Script and Jekyll-Post-Link</title><link>https://flohei.de/2015/02/combining-matt-gemmells-staging-script-and-jekyll-post-link/</link><pubDate>Sun, 08 Feb 2015 15:00:00 +0200</pubDate><guid>https://flohei.de/2015/02/combining-matt-gemmells-staging-script-and-jekyll-post-link/</guid><description>&lt;p&gt;Last week, Matt Gemmell released a pretty handy &lt;a href="http://mattgemmell.com/staging-drafts-with-jekyll/" class="external-link" target="_blank" rel="noopener"&gt;staging script&lt;/a&gt; for Jekyll.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; This temporarily removes all your posts from your site and copies a draft into &lt;code&gt;_posts&lt;/code&gt;. This way, building your Jekyll site with your new draft post is way faster than your regular builds with all your content.&lt;/p&gt;
&lt;p&gt;Unfortunately, this does not work when you&amp;rsquo;re using the &lt;a href="https://github.com/liabru/jekyll-post-link" class="external-link" target="_blank" rel="noopener"&gt;jekyll-post-link&lt;/a&gt; in one of your &lt;em&gt;pages&lt;/em&gt;. (Yes, I mean pages, not posts.) The build process for your staged website will fail with an error like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Liquid Exception: Could not find post &amp;quot;2015-02-05-foo bar&amp;quot; in tag 'post_link'. Make sure the post exists and the name and date is correct. in baz.md
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This morning I talked to Matt about this over on Twitter. He mentioned, that it should be fairly easy to make it work. And he was right. I forked the jekyll-post-link project and made it check if we&amp;rsquo;re in staging mode before failing on us when a &amp;ldquo;broken&amp;rdquo; link appears.&lt;/p&gt;
&lt;p&gt;Whenever it finds a post link now, it replaces it with a dummy link. Next time you do the actual build outside of staging mode everything will be back to normal.&lt;/p&gt;
&lt;p&gt;You can find my version on &lt;a href="https://github.com/flohei/jekyll-post-link" class="external-link" target="_blank" rel="noopener"&gt;GitHub&lt;/a&gt;. Hope this helps. If you have any questions or suggestions feel free to &lt;a href="https://flohei.de/contact/" &gt;get in touch&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks to Matt and Liam for their great plugins!&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;As of today, it&amp;rsquo;s also available as a Ruby gem with multi-site support.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Two New Jekyll Scripts</title><link>https://flohei.de/2015/02/two-new-jekyll-scripts/</link><pubDate>Sat, 07 Feb 2015 14:00:00 +0200</pubDate><guid>https://flohei.de/2015/02/two-new-jekyll-scripts/</guid><description>&lt;p&gt;Every now and then I try to make the process of writing posts in Jekyll a bit more pleasant. &lt;a href="https://flohei.de/2014/08/jekyll-script-to-easily-create-new-posts" &gt;Last time&lt;/a&gt;, I shared a script that was supposed to make the post creation process a bit easier. It turned out, though, that I almost never really use this script because of its complexity. There are just too many switches and configuration options. (Of which some don&amp;rsquo;t even work reliably.)&lt;/p&gt;
&lt;p&gt;Though this script did not help me as much as I hoped it would, it led me to two new, extremely simple scripts in my toolchain.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h2 id="draftsh"&gt;
 draft.sh
 &lt;a class="heading-link" href="#draftsh"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;This one just takes the title of the new draft as an argument and creates the appropriate file markdown file inside my general purpose drafts folder on my Dropbox&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; and opens it in TextMate.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/sh
# variables
site_path=~/Sites/example.com
drafts_path=~/Dropbox/Drafts
title=$1
# create the file name
lowercase=`echo $title | awk '{print tolower($0)}'`
stripped=`echo ${lowercase// /-}`
filename=$stripped.md
file_path=$drafts_path/$filename
echo &amp;quot;File path: $file_path&amp;quot;
# create the file and add content
echo &amp;quot;---\n&amp;quot; &amp;gt;&amp;gt; $file_path
echo &amp;quot;title: \&amp;quot;$title\&amp;quot;&amp;quot; &amp;gt;&amp;gt; $file_path
echo &amp;quot;layout: post&amp;quot; &amp;gt;&amp;gt; $file_path
echo &amp;quot;published: false&amp;quot; &amp;gt;&amp;gt; $file_path
echo &amp;quot;categories: &amp;quot; &amp;gt;&amp;gt; $file_path
echo &amp;quot;tags: &amp;quot; &amp;gt;&amp;gt; $file_path
echo &amp;quot;date: &amp;quot; &amp;gt;&amp;gt; $file_path
echo &amp;quot;\n---\n&amp;quot; &amp;gt;&amp;gt; $file_path
echo &amp;quot;Content goes here.&amp;quot; &amp;gt;&amp;gt; $file_path
# open file if wanted
mate $file_path
# done
exit 0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This way I get a basic post file and I can just start typing right away. I usually fill in details like tags, categories and the date later.&lt;/p&gt;
&lt;h2 id="publishsh"&gt;
 publish.sh
 &lt;a class="heading-link" href="#publishsh"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;When I feel like publishing that new draft as a post on the site I could just locate it in Finder, move it to &lt;code&gt;_posts&lt;/code&gt;, rename it, open it, add the additional information, rebuild the site and upload it to my server.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;publish.sh&lt;/code&gt; takes the draft&amp;rsquo;s name as a single argument, renames it, moves it to &lt;code&gt;_posts&lt;/code&gt; and opens it in TextMate so I can make some final changes before going into build mode.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/sh
# variables
site_path=~/Sites/flohei.de
drafts_path=~/Dropbox/Drafts
file_name=$1
file=$drafts_path/$file_name
# check if the draft exists
if [ ! -e $file ]; then
	echo &amp;quot;draft $file does not exist&amp;quot;
	exit 1
fi
# create the file name
post_date=`date +%Y-%m-%d`
target=$site_path/_posts/$post_date-$file_name
# move and open the file
mv $file $target
mate $target
exit 0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I&amp;rsquo;m rather confident that I will use these simple scripts way more often than the other bulky one.&lt;/p&gt;
&lt;p&gt;Hope this helps.&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;I keep all my site-related scripts in a &lt;code&gt;_script&lt;/code&gt; folder in my Jekyll site directory. This way I can easily access them when needed.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;I switched to storing drafts on Dropbox because it&amp;rsquo;s way easier to access the files on there from my iOS devices via 1Writer (&lt;a href="http://1writerapp.com" class="external-link" target="_blank" rel="noopener"&gt;http://1writerapp.com&lt;/a&gt;), for example.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Password Protected Pages With Jekyll</title><link>https://flohei.de/2014/11/password-protected-pages-with-jekyll/</link><pubDate>Wed, 12 Nov 2014 15:04:06 +0200</pubDate><guid>https://flohei.de/2014/11/password-protected-pages-with-jekyll/</guid><description>&lt;p&gt;When I moved to Jekyll &lt;a href="https://flohei.de/2014/07/moving-to-jekyll/" &gt;I didn’t have a way to password protect pages&lt;/a&gt;. Actually, I didn&amp;rsquo;t really need it so it wasn&amp;rsquo;t a real concern to me and I did not yet look into it. Until today. I was contacted by &lt;a href="https://timesvr.com" class="external-link" target="_blank" rel="noopener"&gt;Osama of TimeSvr&lt;/a&gt; who asked me about this and so I thought it might be a good idea to share what we came up with.&lt;/p&gt;
&lt;p&gt;Since we only needed to protect pages within a certain context we decided that &lt;code&gt;.htaccess&lt;/code&gt; protection would be sufficient enough.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update 2014-11-18&lt;/em&gt;: This does only apply to Apache installations. If you&amp;rsquo;re using nginx or something else you might not be able to make use of this approach.&lt;/p&gt;
&lt;h2 id="project-structure"&gt;
 Project Structure
 &lt;a class="heading-link" href="#project-structure"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The setup for password protected pages looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;my-website.com
|-my-project
 |-index.md
 |-htaccess
 |-htpasswd
|-...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Based on &lt;a href="http://newbieonruby.com/jekyll-include-htaccess/" class="external-link" target="_blank" rel="noopener"&gt;this suggestion&lt;/a&gt; I created template files for &lt;code&gt;htaccess&lt;/code&gt; and &lt;code&gt;htpasswd&lt;/code&gt; jekyll style using an appropriate front matter (which basically only defines the permalink to the actual, hidden &lt;code&gt;.ht*&lt;/code&gt; files).&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
layout: null
permalink: my-project/.htaccess
---
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(For &lt;code&gt;htaccess&lt;/code&gt;; adapt for &lt;code&gt;htpasswd&lt;/code&gt; appropriately.)&lt;/p&gt;
&lt;p&gt;Additionally, &lt;code&gt;htaccess&lt;/code&gt; needs the configuration:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;AuthType Basic
AuthName &amp;quot;Protected Area&amp;quot;
AuthUserFile /full/path/to/.htpasswd
Require valid-user
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;index.md&lt;/code&gt; is the template for the website with the protected content. Just a basic Jekyll page.&lt;/p&gt;
&lt;h2 id="creating-credentials"&gt;
 Creating Credentials
 &lt;a class="heading-link" href="#creating-credentials"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;This actually caused some trouble for me. I first started googling for webservices that offered credential creation for &lt;code&gt;.htaccess&lt;/code&gt; files, since I wasn&amp;rsquo;t aware of the appropriate way to do it: &lt;a href="http://httpd.apache.org/docs/2.2/programs/htpasswd.html" class="external-link" target="_blank" rel="noopener"&gt;The official &lt;code&gt;htpasswd&lt;/code&gt; tool&lt;/a&gt;. The credentials created by the websites did somehow never work for me. I&amp;rsquo;m not a hundred percent certain that it wasn&amp;rsquo;t my fault, though…&lt;/p&gt;
&lt;p&gt;Anyway, &lt;code&gt;htpasswd -m -c /path/to/my-website.com/my-project/tempcreds foo&lt;/code&gt; creates a file &lt;code&gt;tempcreds&lt;/code&gt; containing the user &lt;code&gt;foo&lt;/code&gt; and the encrypted password (which you&amp;rsquo;ll be asked for after hitting return). Next, I had to take this entire string and added it to the end of my &lt;code&gt;htpasswd&lt;/code&gt; file.&lt;/p&gt;
&lt;h2 id="publishing"&gt;
 Publishing
 &lt;a class="heading-link" href="#publishing"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;After re-building my site I uploaded &lt;code&gt;_site/my-project/&lt;/code&gt; to my server. Make sure to not forget the hidden &lt;code&gt;.ht*&lt;/code&gt; files as well. That&amp;rsquo;s it!&lt;/p&gt;
&lt;p&gt;Hope this helps.&lt;/p&gt;</description></item><item><title>Jekyll: Script To Easily Create New Posts</title><link>https://flohei.de/2014/08/jekyll-script-to-easily-create-new-posts/</link><pubDate>Sat, 16 Aug 2014 19:39:12 +0200</pubDate><guid>https://flohei.de/2014/08/jekyll-script-to-easily-create-new-posts/</guid><description>&lt;p&gt;Jekyll is amazing for me. It gives me full control over all my content in an easy to maintain way while keeping it in a sustainable format.&lt;/p&gt;
&lt;p&gt;Though creating a new post is as simple as creating a new Markdown file and setting some variables within the &lt;a href="http://jekyllrb.com/docs/frontmatter/" class="external-link" target="_blank" rel="noopener"&gt;front matter&lt;/a&gt;, this usually takes a few moments and most of these steps are the same over and over again.&lt;/p&gt;
&lt;p&gt;To make life a little bit easier (and to just have something to fiddle around with, to be fair) I wrote a small script that helps jump-start on new posts. It creates the file, sets the title and date and tags and categories if I wish to and opens that new file in my favorite text editor.&lt;/p&gt;
&lt;p&gt;So,&lt;/p&gt;
&lt;p&gt;&lt;code&gt;./jekyll-new-post.sh -n &amp;quot;New Cool Post&amp;quot; -d &amp;quot;2014-08-17 15:23:45&amp;quot; -o -t &amp;quot;Jekyll&amp;quot; -c &amp;quot;Development, Thoughts&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;would create a new file called &lt;code&gt;2014-08-17-new-fancy-post.md&lt;/code&gt; with the front matter date property set to August 17, 2014 at 15:23:45, the categories and tags set as well and open it in your preferred text editor.&lt;/p&gt;
&lt;p&gt;You can find this script over on &lt;a href="http://gist.github.com/flohei/9c1c744f49106e6f794b" class="external-link" target="_blank" rel="noopener"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, I you find yourself using Jekyll and keeping a Terminal window open all day this might be for you. Feel free to adapt it to your needs. I will probably fix the remaining todos and add some features I still have on my list. So you should consider this beta.&lt;/p&gt;</description></item><item><title>Searching Jekyll</title><link>https://flohei.de/2014/07/searching-jekyll/</link><pubDate>Sat, 26 Jul 2014 23:39:57 +0200</pubDate><guid>https://flohei.de/2014/07/searching-jekyll/</guid><description>&lt;p&gt;Using a static site generator like Jekyll for your personal blog brings a few new challenges in some areas. Searching, for example is not possible in pure HTML. There are a few different options to find posts on your website, though.&lt;/p&gt;
&lt;h2 id="tldr"&gt;
 tl;dr
 &lt;a class="heading-link" href="#tldr"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;jekyll-lunr-js-search&lt;/code&gt; is great, just head over to &lt;a href="https://github.com/slashdotdash/jekyll-lunr-js-search" class="external-link" target="_blank" rel="noopener"&gt;GitHub&lt;/a&gt; and get started.&lt;/p&gt;
&lt;h2 id="external-search-engine"&gt;
 External Search Engine
 &lt;a class="heading-link" href="#external-search-engine"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Both &lt;a href="https://www.google.com/cse/" class="external-link" target="_blank" rel="noopener"&gt;Google&lt;/a&gt; and &lt;a href="https://github.com/seanredmond/jekyll-ddg-search" class="external-link" target="_blank" rel="noopener"&gt;DuckDuckGo&lt;/a&gt; offer search engines for your own website which are more or less easy to integrate in your own site. Unfortunately, DDG did not seem to index my site {% post_link 2014-07-02-moving-to-jekyll since I installed Jekyll %} and this plugin a few weeks ago.&lt;/p&gt;
&lt;p&gt;Besides that, integrating an external service ruins the whole point of being mostly independent with your site. Everything that&amp;rsquo;s on here should still work if the rest of the world collapses. Well, there are some videos and external photos that would not be displayed anymore but most of the content and functionality of the site would still be available.&lt;/p&gt;
&lt;h2 id="local-search-engine"&gt;
 Local Search Engine
 &lt;a class="heading-link" href="#local-search-engine"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;So I started looking into search engines that work locally on my own server. Starting on &lt;a href="http://brettterpstra.com" class="external-link" target="_blank" rel="noopener"&gt;Brett Terpstra&amp;rsquo;s site&lt;/a&gt; I found out that he uses a custom solution which basically works the same way the two following ones do. They all create an index file (&lt;code&gt;search.json&lt;/code&gt;) which can then be used to filter all the posts based on a keyword with some JavaScript.&lt;/p&gt;
&lt;h3 id="jekyll-dynamic-search"&gt;
 &lt;code&gt;jekyll-dynamic-search&lt;/code&gt;
 &lt;a class="heading-link" href="#jekyll-dynamic-search"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;The documentation on &lt;a href="https://github.com/slashdotdash/jekyll-lunr-js-search" class="external-link" target="_blank" rel="noopener"&gt;this one&lt;/a&gt; is a bit minimalistic so I had a hard time integrating it into my site. If you&amp;rsquo;re more adventurous than I&amp;rsquo;m check out the project &lt;a href="https://github.com/cobbler/jekyll-dynamic-search" class="external-link" target="_blank" rel="noopener"&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="jekyll-lunr-js-search"&gt;
 &lt;code&gt;jekyll-lunr-js-search&lt;/code&gt;
 &lt;a class="heading-link" href="#jekyll-lunr-js-search"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;Talking to &lt;a href="http://twitter.com/brettterpstra" class="external-link" target="_blank" rel="noopener"&gt;Brett&lt;/a&gt; and &lt;a href="http://twitter.com/olivernn" class="external-link" target="_blank" rel="noopener"&gt;Oliver Nightingale&lt;/a&gt; on Twitter I got pointed to this plugin based on &lt;a href="http://lunrjs.com" class="external-link" target="_blank" rel="noopener"&gt;&lt;code&gt;lunr.js&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;lunr.js is a simple full text search engine for your client side applications. It is designed to be small, yet full featured, enabling you to provide a great search experience without the need for external, server side, search services.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here the documentation is way better and it&amp;rsquo;s rather easy to integrate. The only pitfall I ran into is the fact that it did not work for me when I added the &lt;code&gt;search.min.js&lt;/code&gt; file at the and of my new search page. So I had to integrate it right above that script part. If you&amp;rsquo;re curious &lt;a href="https://gist.github.com/flohei/91d987a1827023bef8ca" class="external-link" target="_blank" rel="noopener"&gt;you can find my template on GitHub&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Re-Routing RSS Feed</title><link>https://flohei.de/2014/07/re-routing-rss-feed/</link><pubDate>Sun, 06 Jul 2014 15:08:30 +0200</pubDate><guid>https://flohei.de/2014/07/re-routing-rss-feed/</guid><description>&lt;p&gt;Quick follow-up on &lt;a href="https://flohei.de/2014/07/moving-to-jekyll" &gt;the Feed Forwarding section from that other post on Jekyll&lt;/a&gt;: Turns out, the forwarding in the header of that HTML file did not work as expected. Opening the URL in the browser passed you through to your favorite RSS reader if you have one installed. Feed readers that had already subscribed to the original feed before did not get any updates, though.&lt;/p&gt;
&lt;p&gt;So I changed that re-routing to be handled in my &lt;code&gt;.htaccess&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;RewriteRule ^feed/?$ /feed.xml [L,NC]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This line fixes the issue. For more information about &lt;code&gt;.htaccess&lt;/code&gt; files and the syntax see the &amp;ldquo;&lt;a href="http://httpd.apache.org/docs/current/rewrite/intro.html" class="external-link" target="_blank" rel="noopener"&gt;Apache mod_rewrite Introduction&lt;/a&gt;&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Moving to Jekyll</title><link>https://flohei.de/2014/07/moving-to-jekyll/</link><pubDate>Wed, 02 Jul 2014 21:48:05 +0200</pubDate><guid>https://flohei.de/2014/07/moving-to-jekyll/</guid><description>&lt;p&gt;Listening to Brett Terpstra&amp;rsquo;s podcast &lt;a href="https://esn.fm/systematic" class="external-link" target="_blank" rel="noopener"&gt;Systematic&lt;/a&gt;, I found out about the static website generator Jekyll. After hearing and reading about it for a while I started wanting to try it for my own website.&lt;/p&gt;
&lt;p&gt;There are some great tutorials out there that describe the basic setup of a new Jekyll website, like &lt;a href="http://pixelcog.com/blog/2013/jekyll-from-scratch-core-architecture/" class="external-link" target="_blank" rel="noopener"&gt;Jekyll From Scratch&lt;/a&gt; by Mike Greiling, so I don&amp;rsquo;t want to talk about that. What I want to talk about, though, are the bits and pieces that these tutorials were missing for my very own situation. There might be some more people with a similar setup. There were three major questions I still had after reading the different tutorials:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;How do I migrate my old posts?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;How do I reflect password-protected pages?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;How do I make the website handle old links?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;How do I handle stats? I somehow don&amp;rsquo;t want to use Google Analytics.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My website up until today was a self-hosted WordPress at &lt;code&gt;blog.flohei.de&lt;/code&gt;. &lt;code&gt;flohei.de&lt;/code&gt; would automatically redirect to the subdomain and not hold any information itself. I was using pages and posts for my content. A few pages were kinda hidden and password protected. I was watching the site stats using the built-in Jetpack module. I was the only author.&lt;/p&gt;
&lt;h2 id="import"&gt;
 Import
 &lt;a class="heading-link" href="#import"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Jekyll comes with importers for different other blogging systems. The importer for self hosted WordPress instances did not work for me so I tried using the one for WordPress.com sites. That one uses an WordPress export file that your backend can provide.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ruby -rubygems -e 'require &amp;quot;jekyll-import&amp;quot;; 
JekyllImport::Importers::WordpressDotCom.run({ &amp;quot;source&amp;quot; =&amp;gt; 
&amp;quot;/Users/flohei/Downloads/wordpress.xml&amp;quot; })'
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="cleanup"&gt;
 Cleanup
 &lt;a class="heading-link" href="#cleanup"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;After that import I got a bunch of HTML files for all those old posts and pages.&lt;/p&gt;
&lt;p&gt;First things first: As always, when moving my blog, I revisit my old posts and remove/archive the most embarrassing ones as they&amp;rsquo;re probably to no good use for anybody. I think that&amp;rsquo;s only fair to all the internet people.&lt;/p&gt;
&lt;p&gt;All the remaining posts were then manually converted from HTML to markdown. That took some time but it also gave me the chance to fix some typos and adapt some of the old links.&lt;/p&gt;
&lt;p&gt;Most of the important pages were just recreated in markdown since they&amp;rsquo;re not that many. I got rid of the old ones as well.&lt;/p&gt;
&lt;h2 id="password-protected-pages"&gt;
 Password protected pages
 &lt;a class="heading-link" href="#password-protected-pages"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Unfortunately, I did not yet find a way to migrate my password protected pages. I&amp;rsquo;ll let you know once I find a way. If you have an idea feel free to &lt;a href="https://flohei.de/contact" &gt;drop me a line&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update 2014-11-12&lt;/em&gt;: I wrote a post about a &lt;a href="https://flohei.de/2014/11/password-protected-pages-with-jekyll" &gt;&lt;code&gt;htaccess&lt;/code&gt; based&lt;/a&gt; approach.&lt;/p&gt;
&lt;h2 id="links"&gt;
 Links
 &lt;a class="heading-link" href="#links"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Keeping the links up was one of my main goals. The problem was divisible into two sub-problems.&lt;/p&gt;
&lt;h3 id="keeping-the-permalinks"&gt;
 Keeping the Permalinks
 &lt;a class="heading-link" href="#keeping-the-permalinks"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;In WordPress I used &lt;code&gt;/YYYY/mm/title&lt;/code&gt; for my permalinks. Setting the same format in &lt;code&gt;_config.yml&lt;/code&gt; was easy. The corresponding line looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;permalink: /:year/:month/:title/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This would keep all the old links up once I replace the WordPress site with the Jekyll data at &lt;code&gt;blog.flohei.de&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="re-routing-requests"&gt;
 Re-routing Requests
 &lt;a class="heading-link" href="#re-routing-requests"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;I had the idea to take the migration a step further and drop the blog subdomain in favor for the cleaner &lt;code&gt;flohei.de&lt;/code&gt; itself. I remembered, that there was an option for the &lt;code&gt;.htaccess&lt;/code&gt; file to re-route requests by preserving everything behind the TLD. A quick question on &lt;a href="http://stackoverflow.com/questions/24538184/re-route-request-to-domain-without-subdomain" class="external-link" target="_blank" rel="noopener"&gt;StackOverflow&lt;/a&gt; brought up the solution:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;RewriteEngine On
RewriteCond %{HTTP_HOST} ^blog\.(flohei\.de)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301,NE]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This works like a charm.&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h3 id="feed-forwarding"&gt;
 Feed-Forwarding
 &lt;a class="heading-link" href="#feed-forwarding"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Update 2014-07-06&lt;/em&gt;: Turns out, the original approach did not work. I wrote an extra post about how to fix it &lt;a href="https://flohei.de/2014/07/re-routing-rss-feed" &gt;here&lt;/a&gt;. Hint: It works using the &lt;code&gt;.htaccess&lt;/code&gt; file.&lt;/p&gt;
&lt;h2 id="stats"&gt;
 Stats
 &lt;a class="heading-link" href="#stats"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;As I said, I somehow did not want to use Google Analytics. So I remembered that Daniel used &lt;a href="http://piwik.org" class="external-link" target="_blank" rel="noopener"&gt;Piwik&lt;/a&gt; for a few web projects in the past. I don&amp;rsquo;t care too much about my stats so I&amp;rsquo;m not that familiar with all the features these tools have but from what I can tell Piwik looks a lot more useful than Jetpack and a lot less cluttered than Google Analytics.&lt;/p&gt;
&lt;p&gt;The setup was as easy as downloading the package to the server, unzipping it in a special subdomain, creating a database and following the on-screen instructions.&lt;/p&gt;
&lt;h2 id="other-plugins"&gt;
 Other Plugins
 &lt;a class="heading-link" href="#other-plugins"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;To make life a bit easier I installed a few plugins into my Jekyll site.&lt;/p&gt;
&lt;h3 id="youtube"&gt;
 YouTube
 &lt;a class="heading-link" href="#youtube"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;This &lt;a href="https://gist.github.com/joelverhagen/1805814" class="external-link" target="_blank" rel="noopener"&gt;YouTube plugin&lt;/a&gt; adds a new tag that allows me to add a YouTube video to a post using just this single line &lt;code&gt;{% youtube youtubeid %}&lt;/code&gt;, where &lt;code&gt;youtubeid&lt;/code&gt; is the id that you would find in the URL for any video.&lt;/p&gt;
&lt;h3 id="flickr"&gt;
 Flickr
 &lt;a class="heading-link" href="#flickr"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;The &lt;a href="https://gist.github.com/richardp2/10020777" class="external-link" target="_blank" rel="noopener"&gt;Flickr plugin&lt;/a&gt; works pretty much the same. It does have some options to manipulate the size of your photo. It also requires you to create an app on the &lt;a href="http://developer.flickr.com" class="external-link" target="_blank" rel="noopener"&gt;Flickr developer page&lt;/a&gt; to acquire a &lt;code&gt;API scecret&lt;/code&gt; and a &lt;code&gt;API key&lt;/code&gt;. Once you got those just add them to your script and use it with these few characters&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{% flickr_image 12543944883 b %}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="duckduckgo"&gt;
 DuckDuckGo
 &lt;a class="heading-link" href="#duckduckgo"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;Now that I&amp;rsquo;m trying something new I figured why not give DuckDuckGo a shot. I&amp;rsquo;m using &lt;a href="https://github.com/seanredmond/jekyll-ddg-search/blob/master/ddg_search.rb" class="external-link" target="_blank" rel="noopener"&gt;this script&lt;/a&gt; in my &lt;code&gt;header.html&lt;/code&gt;. I&amp;rsquo;m not sure yet if I will keep it this way. I might change this to Google or an internal solution later.&lt;/p&gt;
&lt;h2 id="todos"&gt;
 Todos
 &lt;a class="heading-link" href="#todos"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;There are still some bullet-points on my list left to figure out. I might want to adapt the style a bit (though I kinda like this clean and simple layout), I might want to include the old tags and categories somewhere on the site and I might want to add the comments back. I migrated them to Disqus before leaving WordPress so I still have them. But I&amp;rsquo;m not too sure if I need them anyway.&lt;/p&gt;
&lt;h2 id="other-resources"&gt;
 Other Resources
 &lt;a class="heading-link" href="#other-resources"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://jekyllrb.com/" class="external-link" target="_blank" rel="noopener"&gt;Jekyll&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://internet-inspired.com/wrote/install-jekyll-in-osx-mavericks/" class="external-link" target="_blank" rel="noopener"&gt;Install Jekyll in OS X Mavericks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hadihariri.com/2013/12/24/migrating-from-wordpress-to-jekyll/" class="external-link" target="_blank" rel="noopener"&gt;Migrating from WordPress.com to Jekyll&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://paulstamatiou.com/how-to-wordpress-to-jekyll/" class="external-link" target="_blank" rel="noopener"&gt;How To: WordPress to Jekyll&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://weedygarden.net/2012/12/hello-jekyll/" class="external-link" target="_blank" rel="noopener"&gt;Hello Jekyll, Goodbye Wordpress&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lc3dyr.de/blog/2012/07/22/Jekyll-auf-Uberspace/" class="external-link" target="_blank" rel="noopener"&gt;Jekyll auf Uberspace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://import.jekyllrb.com/docs/wordpress/" class="external-link" target="_blank" rel="noopener"&gt;WordPress Importer Jekyll&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jekyllthemes.org" class="external-link" target="_blank" rel="noopener"&gt;Jekyll Themes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://yeswejekyll.com" class="external-link" target="_blank" rel="noopener"&gt;Pros and cons, additional information&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.pixarea.com/2012/07/fetch-images-from-flickr-to-show-in-octopress-slash-jekyll" class="external-link" target="_blank" rel="noopener"&gt;Flickr-Plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pixelcog.com/blog/2013/jekyll-from-scratch-core-architecture/" class="external-link" target="_blank" rel="noopener"&gt;Jekyll from scratch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Hope this helps.&lt;/em&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;The other importer did not work for me since my provider Uberspace does not allow connecting to the database from another machine.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;For more information on &lt;code&gt;.htaccess&lt;/code&gt; files see the full documentation over on the Apache website: &lt;a href="http://httpd.apache.org/docs/current/rewrite/intro.html" class="external-link" target="_blank" rel="noopener"&gt;http://httpd.apache.org/docs/current/rewrite/intro.html&lt;/a&gt;.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;For the Flickr and the YouTube plugins I created TextExpander snippets that allow me to even faster add those to new posts.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Creating a Staging Environment for Your WordPress Installation</title><link>https://flohei.de/2012/08/creating-a-staging-environment-for-your-wordpress-installation/</link><pubDate>Mon, 27 Aug 2012 19:56:10 +0200</pubDate><guid>https://flohei.de/2012/08/creating-a-staging-environment-for-your-wordpress-installation/</guid><description>&lt;p&gt;For yesterday&amp;rsquo;s attempt to cleanup my database and &lt;a href="https://flohei.de/2012/08/fixing-the-post-id-2-1-issue/" &gt;fix the post id &amp;gt; 2³¹-1 issue&lt;/a&gt; I did not just want to fire the scripts and tests at my live site. So I quickly set up a WordPress staging environment. In my case, I created a special subdomain on my server, which makes things fairly easy. If you can do that as well: great, read on. If not: go check out &lt;a href="http://codex.wordpress.org/Moving_WordPress" class="external-link" target="_blank" rel="noopener"&gt;Moving WordPress&lt;/a&gt;. They described how to move your site for a few more different scenarios.&lt;/p&gt;
&lt;p&gt;Back to my situation. First log in to your server and create a new directory for the staging environment and copy all the content from your original WordPress directory to that new location. Then head over to your database management system and export your WP database. You should make the export file be able to create the tables. Import that export file into a new database. While being here on the database server open up the &lt;code&gt;wp_options&lt;/code&gt; table and alter values for &lt;code&gt;siteurl&lt;/code&gt; and &lt;code&gt;home&lt;/code&gt;. Set them to your new subdomain. Of course, if you did not create that one yet, go and do that now. Then jump back three sentences. Last but not least you&amp;rsquo;ve got to tell the &lt;code&gt;wp-config.php&lt;/code&gt; the new database name.&lt;/p&gt;
&lt;p&gt;For me that was all I needed to do to have a save environment to play around with. Hope that helps.&lt;/p&gt;</description></item><item><title>Fixing the Post Id &gt; 2³¹-1 Issue</title><link>https://flohei.de/2012/08/fixing-the-post-id-2-1-issue/</link><pubDate>Sun, 26 Aug 2012 19:47:03 +0200</pubDate><guid>https://flohei.de/2012/08/fixing-the-post-id-2-1-issue/</guid><description>&lt;p&gt;Regarding my &lt;a href="https://flohei.de/2012/08/the-wordpress-issues-i-had-after-importing-my-old-posts" &gt;WordPress issues&lt;/a&gt;, which I actually did not want to tackle anymore, I accidentally stumbled upon an &lt;a href="http://wordpress.stackexchange.com/questions/20395/wordpress-stats-keeps-showing-non-existent-post-as-a-top-post" class="external-link" target="_blank" rel="noopener"&gt;interesting post over on StackExchange&lt;/a&gt;, when I was looking for another issue. But as it turns out, this does fix the former issues as well. Nice.&lt;/p&gt;
&lt;p&gt;The new issue did appear to me when I clicked through the Jetpack stats pages. Top Pages &amp;amp; Posts did only show one entry which looked like this:&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://flohei.de/media/Top-Pages-Posts.png"&gt;
&lt;/figure&gt;

&lt;p&gt;I had no clue what that meant, so I checked out another WordPress installation I&amp;rsquo;m maintaining. That blog showed the post titles (yes, more than one) without the enormous number just fine.&lt;/p&gt;
&lt;p&gt;Every post&amp;rsquo;s id &amp;gt; 2³¹-1 (&amp;gt; 2,147,483,647) was being max&amp;rsquo;d to that number, it seems. The above mentioned post explains, that these huge numbers come from Tumblr imports. Tumblr uses such high numbers to identify it&amp;rsquo;s posts. I actually did the import from Tumblr &lt;a href="https://flohei.de/2012/06/moving" &gt;when I set up this new blog&lt;/a&gt;. Mystery solved!&lt;/p&gt;
&lt;p&gt;But how do we fix this? Luckily, the guy who answered the post over at StackExchange had an idea that seemed to work: Just go through all your database entries and shrink the numbers manually. Yeah, well. It&amp;rsquo;s not that many posts on my site but lazy as I am even about 350 are too many to tackle them all manually. So I wrote a little script that did that for me. It can be found &lt;a href="https://gist.github.com/3481503" class="external-link" target="_blank" rel="noopener"&gt;here&lt;/a&gt;. I know, it&amp;rsquo;s spaghetti code and not beautiful, but for me it did the trick. And as I will probably only use it once that&amp;rsquo;s ok.&lt;/p&gt;
&lt;p&gt;So, let&amp;rsquo;s just go through the whole process step by step:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Export the needed tables. For me it was &lt;code&gt;wp_comments&lt;/code&gt;, &lt;code&gt;wp_postmeta&lt;/code&gt;, &lt;code&gt;wp_posts&lt;/code&gt; and &lt;code&gt;wp_term_relationships&lt;/code&gt;. If you have a more complex setup than me you might need to export more tables (and adjust the script appropriately). In order for the script to work you will need &lt;code&gt;.sql&lt;/code&gt; files (one for every table) with the permission to drop the old table and re-create it when it&amp;rsquo;s being imported.&lt;/li&gt;
&lt;li&gt;Run the script on all the exported files (see my warning below!). You should now have a second file for every single table you need to alter. If you looked at the script you might be wondering why I started &lt;code&gt;$post_count&lt;/code&gt; at &lt;code&gt;20&lt;/code&gt; instead of &lt;code&gt;0&lt;/code&gt;. For me, my &lt;code&gt;wp_term_relationships&lt;/code&gt; had some entries that had normal looking ids (up to 19) and as I wanted to avoid conflicts I thought starting one higher might be a good idea. These few entries had to be adapted manually because my script does not cover them. So I opened up both the original and the just created file and fixed these few lines.&lt;/li&gt;
&lt;li&gt;If you did a backup of your website (of course you did, right?) and if the new files are prepared you can go ahead and import them into your database (Again, see my warning below!). If you did it like described, this will drop your original tables, re-create them, and import the data afterwards.&lt;/li&gt;
&lt;li&gt;Check your website. That should be it.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;My site is still working fine and I hope so is yours. &lt;del&gt;Though I&amp;rsquo;m not sure if Jetpack will show the titles (I think this might take until tomorrow or until more posts have been clicked)&lt;/del&gt; &lt;strong&gt;Update:&lt;/strong&gt; It worked, my stats are being displayed nicely. And I&amp;rsquo;m happy the WordPress iOS apps aren&amp;rsquo;t confused anymore.&lt;/p&gt;
&lt;p&gt;So, thanks again to that guy on StackExchange for figuring this out. For a detailed explanation I suggest checking out his answer.&lt;/p&gt;
&lt;p&gt;I hope this helps someone.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Do only use the script and instructions at your own risk and if you know what you&amp;rsquo;re doing! I cannot guarantee that it&amp;rsquo;ll work with your configuration. You might blow up your machine or even the whole data center! Maybe. Also, you should adjust it to your needs. You might also consider to set up [a staging environment] for your blog to play around with.&lt;/p&gt;</description></item><item><title>The WordPress Issues I Had After Importing My Old Posts</title><link>https://flohei.de/2012/08/the-wordpress-issues-i-had-after-importing-my-old-posts/</link><pubDate>Tue, 21 Aug 2012 20:03:34 +0200</pubDate><guid>https://flohei.de/2012/08/the-wordpress-issues-i-had-after-importing-my-old-posts/</guid><description>&lt;p&gt;&lt;a href="https://flohei.de/2012/06/moving" &gt;Since I began&lt;/a&gt; using WordPress my website had this weird issue where it would show all my blog posts once you add the feed to an RSS reader but would never show new entries. Also, the official &lt;a href="http://ios.wordpress.org" class="external-link" target="_blank" rel="noopener"&gt;iOS app&lt;/a&gt; somehow mixed posts and pages and showed some of them multiple times and the newer ones (the ones I wrote after importing everything into WP) did only occasionally show up in there.&lt;/p&gt;
&lt;p&gt;I know, this is like the worst error descriptions ever, but unfortunately I had no chance to figure out what actually went wrong during the setup and import of that new WP site.&lt;/p&gt;
&lt;p&gt;So I began asking for help on this in different places to get this sorted out. Unfortunately, my problem description was probably to inaccurate to get valuable feedback. So I tried a few things myself like cleaning up the WP database using &lt;a href="http://wordpress.org/extend/plugins/wp-optimize/" class="external-link" target="_blank" rel="noopener"&gt;WP-Optimize&lt;/a&gt; and checking the database manually. Though I was not able to find anything suspicious in there. &lt;a href="http://twitter.com/damiensaunders" class="external-link" target="_blank" rel="noopener"&gt;Damien&lt;/a&gt; tried to help me over on &lt;a href="http://wordpress.stackexchange.com/questions/62141/wp-app-getting-confused-about-posts-and-pages" class="external-link" target="_blank" rel="noopener"&gt;StackExchange&lt;/a&gt; and we figured out, that the feed issue seems to be gone. I assume, that that has something to do with cleaning up the database since that&amp;rsquo;s the only thing I tried that was manipulating my data.&lt;/p&gt;
&lt;p&gt;The iOS apps are still not working but that&amp;rsquo;s ok for now. &lt;a href="http://www.red-sweater.com/marsedit/" class="external-link" target="_blank" rel="noopener"&gt;MarsEdit&lt;/a&gt; (App Store: &lt;a href="http://clk.tradedoubler.com/click?p=23761&amp;amp;a=2156700&amp;amp;url=http%3A%2F%2Fitunes.apple.com%2Fde%2Fapp%2Fmarsedit-blog-editor-for-wordpress%2Fid402376225%3Fmt%3D12%26uo%3D4%26partnerId%3D2003" class="external-link" target="_blank" rel="noopener"&gt;de&lt;/a&gt;, &lt;a href="http://clk.tradedoubler.com/click?p=23761&amp;amp;a=2156700&amp;amp;url=http%3A%2F%2Fitunes.apple.com%2Fus%2Fapp%2Fmarsedit-blog-editor-for-wordpress%2Fid402376225%3Fmt%3D12%26uo%3D4%26partnerId%3D2003" class="external-link" target="_blank" rel="noopener"&gt;us&lt;/a&gt;; affiliate links) does work perfectly and the WP backend is not that bad so I think I can live with that.&lt;/p&gt;</description></item><item><title>Moving</title><link>https://flohei.de/2012/06/moving/</link><pubDate>Mon, 11 Jun 2012 23:51:04 +0200</pubDate><guid>https://flohei.de/2012/06/moving/</guid><description>&lt;p&gt;Those who follow me on Twitter might have noticed that I&amp;rsquo;m currently in the middle of a move from Nuremberg back to the country side. Which is awesome. :) But that&amp;rsquo;s not what I wanted to talk about.&lt;/p&gt;
&lt;p&gt;A few years back, when I was still doing .NET stuff, I registered my name domain florian-heiber.de and a .NET webspace (with &lt;a href="http://centron.de" class="external-link" target="_blank" rel="noopener"&gt;centron&lt;/a&gt;) to set up a &lt;a href="http://www.dotnetblogengine.net" class="external-link" target="_blank" rel="noopener"&gt;BlogEngine.NET&lt;/a&gt; blog on there. A while later I registered my other domain flohei.de just to have a nice and short domain name for my personal email. The A-Record for that domain moved from one hip new service to the next. The last one was Tumblr.&lt;/p&gt;
&lt;p&gt;I was getting kinda tired about having all my stuff in different places and developed the idea of moving it all back into one space. Since I&amp;rsquo;m that kind of person who does not blog that much and therefor does not want to lose all the old (and sometime a little bit embarrassing ;-)) content, I needed a new space (a server would be oversized) and a new blog engine, which would let me import the posts from Tumblr and a BlogML file, that stuck around on my computer for quite a few years. After some time of research and comparison I decided to go with the German hoster &lt;a href="http://uberspace.de" class="external-link" target="_blank" rel="noopener"&gt;Uberspace.de&lt;/a&gt;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; and &lt;a href="http://wordpress.org" class="external-link" target="_blank" rel="noopener"&gt;WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now I&amp;rsquo;m happy to have all my stuff in one place again. Not only my physical goods.&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Uberspace is awesome. They let you decide what you want to pay for your space and even give you full SSH access to it. Besides that, you&amp;rsquo;ll get a ton of features (&lt;a href="http://uberspace.de/tech%29" class="external-link" target="_blank" rel="noopener"&gt;http://uberspace.de/tech)&lt;/a&gt;.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item></channel></rss>