<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://docwhat.org/</id>
    <title>docwhat's blog</title>
    <updated>2025-03-25T23:39:43.935Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>Christian Höltje</name>
        <uri>https://docwhat.org/</uri>
    </author>
    <link rel="alternate" href="https://docwhat.org/"/>
    <link rel="self" href="https://docwhat.org/feed.atom"/>
    <subtitle>The personal blog of Christian Höltje</subtitle>
    <logo>https://docwhat.org/favicon.png</logo>
    <icon>https://docwhat.org/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[For those upgrading to macOS Catalina]]></title>
        <id>https://docwhat.org/upgrading-to-catalina</id>
        <link href="https://docwhat.org/upgrading-to-catalina"/>
        <updated>2019-10-23T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Catalina (macOS 1.15) comes with tighter security.</p>
<p>Tighter security can cause headaches for developers.</p>
<p>I’m here to help out by providing…</p>]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[User credentials in a Jenkins pipeline]]></title>
        <id>https://docwhat.org/jenkins-user-credentials</id>
        <link href="https://docwhat.org/jenkins-user-credentials"/>
        <updated>2019-05-22T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>The
<a href="https://github.com/jenkinsci/credentials-plugin/blob/master/docs/user.adoc" rel="noopener"><em>Credentials User Guide</em></a>
implies you can use <em>user credentials</em>. These are credentials that are owned
and managed by a user instead of the administrator or the owner of a folder.</p>
<p>The guide explains how to use them with <em>Freestyle</em> jobs (classic
<a href="https://jenkins.io/" rel="noopener">Jenkins</a> jobs) but not how to use them with the newer
<a href="https://jenkins.io/doc/book/pipeline/syntax/#declarative-pipeline" rel="noopener"><em>declarative pipeline</em></a>
jobs.</p>
<p>In this post, I’ll show you how to:</p>
<ul>
<li>Set up a job to ask for credentials when triggered.</li>
<li>Allow users to provide their <em>user credentials</em> as a parameter.</li>
<li>Configure the pipeline job to use the passed in credentials.</li>
</ul>
]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[DNS not working with Go binaries and VPNs]]></title>
        <id>https://docwhat.org/macos-dns-and-go</id>
        <link href="https://docwhat.org/macos-dns-and-go"/>
        <updated>2019-04-10T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>If you are having DNS problems (i.e., <code class="language-text">Host not found</code>) while using a Go
binary while connected via a VPN… then I have a solution for you.</p>
<p>The solution is <a href="https://github.com/greenboxal/dns-heaven" rel="noopener">dns-heaven</a>. Just
use this command if you trust shell scripts running as root from random people
on the…</p>]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Rules for a good announcement]]></title>
        <id>https://docwhat.org/rules-for-a-good-announcement</id>
        <link href="https://docwhat.org/rules-for-a-good-announcement"/>
        <updated>2019-03-29T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Writing for the digital medium (email, blog posts, slack, discord, etc.)
requires breaking the rules you learned in school.</p>
<p>I’m going to explain some rules I use to create announcements for email and
slack. These rules work for other digital mediums as well.</p>
<p>To be clear; By announcement I mean notices saying there will be an outage or
an upgrade, etc.</p>
]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Vim: indirect variable access]]></title>
        <id>https://docwhat.org/vim-indirect-variable-access</id>
        <link href="https://docwhat.org/vim-indirect-variable-access"/>
        <updated>2018-07-26T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>In Vim you can use a variable as a variable name.</p>
<p>Instead of using the variable name directly, wrap it in curly braces (<code class="language-text">{}</code>).
This will use the contents of the variable as the variable name.</p>
<div class="gatsby-highlight" data-language="vim"><pre style="counter-reset: linenumber 0" class="language-vim line-numbers"><code class="language-vim"><span class="token keyword">let</span> <span class="token keyword">l</span><span class="token punctuation">:</span>variable_name <span class="token operator">=</span> <span class="token string">'b:infosec_username'</span>
<span class="token keyword">let</span> <span class="token punctuation">{</span><span class="token keyword">l</span><span class="token punctuation">:</span>variable_name<span class="token punctuation">}</span> <span class="token operator">=</span> <span class="token string">'George'</span>

echo <span class="token function">exists</span><span class="token punctuation">(</span><span class="token keyword">l</span><span class="token punctuation">:</span>variable_name<span class="token punctuation">)</span> <span class="token comment">" => 1</span>
echo <span class="token punctuation">{</span><span class="token keyword">l</span><span class="token punctuation">:</span>variable_name<span class="token punctuation">}</span> <span class="token comment">" => George</span></code><span aria-hidden="true" class="line-numbers-rows" style="white-space: normal; width: auto; left: 0;"><span></span><span></span><span></span><span></span><span></span></span></pre></div>
]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[El Capitan and the evils of OpenSSL]]></title>
        <id>https://docwhat.org/el-capitan-and-the-evils-of-openssl</id>
        <link href="https://docwhat.org/el-capitan-and-the-evils-of-openssl"/>
        <updated>2015-11-03T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Are you having trouble with SSL on El Capitan (OS X 10.11)?</p>
<p>Me too.</p>
]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spread your knowledge]]></title>
        <id>https://docwhat.org/spread-your-knowledge</id>
        <link href="https://docwhat.org/spread-your-knowledge"/>
        <updated>2015-04-01T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>I found myself trying to figure out how to disable something called
<a href="https://github.com/Shougo/neocomplete.vim" rel="noopener">NeoComplete</a> (previously known as
<a href="https://github.com/Shougo/neocomplcache.vim" rel="noopener">NeoComplCache</a>) when editing
markdown in…</p>]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Chef, Puppet, Heat, Juju, Docker, etc.]]></title>
        <id>https://docwhat.org/chef-puppet-heat-juju-docker-etc</id>
        <link href="https://docwhat.org/chef-puppet-heat-juju-docker-etc"/>
        <updated>2015-02-04T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Someone emailed me with this question:</p>
<blockquote>
<p>I am interested in learning different orchestration mechanisms and would
like to understand how they differ.</p>
<p>What are the differences between Chef, Puppet, Heat/HOT, Juju…</p></blockquote>]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Setting your environment in test-kitchen]]></title>
        <id>https://docwhat.org/setting-environment-test-kitchen</id>
        <link href="https://docwhat.org/setting-environment-test-kitchen"/>
        <updated>2014-10-15T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>When using <a href="http://kitchen.ci/" rel="noopener">test-kitchen</a> it may be necessary to set the
environment of your nodes.</p>
<p>You can do with by changing your <code class="language-text">.kitchen.yml</code> file. In my example, I’ll show
it at the root, but they can be set on a per-suite level as well, which is
handy to test different environments.</p>
]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Unindenting HEREDOCs in Ruby]]></title>
        <id>https://docwhat.org/unindenting-heredocs-ruby</id>
        <link href="https://docwhat.org/unindenting-heredocs-ruby"/>
        <updated>2014-07-29T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>This is a bit of code I wanted to save.</p>
<p>When using HEREDOCs in Ruby, the <code class="language-text">&lt;&lt;-</code> operator is handy to keep everything
indented in the source. But…</p>]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to rename a Chef node]]></title>
        <id>https://docwhat.org/rename-chef-node</id>
        <link href="https://docwhat.org/rename-chef-node"/>
        <updated>2014-04-28T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>In <a href="http://getchef.com" rel="noopener">Chef</a> the <code class="language-text">node_name</code> is for human usage. By default
it is set to the <code class="language-text">fqdn</code>. Which is annoying for typing.</p>
<p>In my network, all hosts have the same domain name. However, we
<code class="language-text">knife bootstrap</code>ed this one system without setting the node name with the
<code class="language-text">-N</code> flag.</p>
<p>Therefore I wanted to rename the nodes. With some experimentation, I figured
it out.</p>
]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Tracebacks in bash]]></title>
        <id>https://docwhat.org/tracebacks-in-bash</id>
        <link href="https://docwhat.org/tracebacks-in-bash"/>
        <updated>2013-06-29T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>I don’t like to write programs in
<a href="https://en.wikipedia.org/wiki/Bash_(Unix_shell)" rel="noopener"><code class="language-text">bash</code></a>. It’s not a very
pretty language. But it has one advantage over a lot of other languages:</p>
<p>It’s on your system. Every Unix-like system has <code class="language-text">/bin/bash</code>; Redhat, Ubuntu,
and even OS X.</p>
<p>But bash is still a lousy language.</p>
<p>This is where bash tracebacks come in…</p>
<p><em>“Whaaaaa? Bash has tracebacks?”</em> I can hear you ask.</p>
<p>Yup, it can.</p>
]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Busting cached 301 redirects in Chrome.]]></title>
        <id>https://docwhat.org/busting-cached-301-redirects-in-chrome</id>
        <link href="https://docwhat.org/busting-cached-301-redirects-in-chrome"/>
        <updated>2013-04-18T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>The <a href="http://www.google.com/chrome/" rel="noopener">Chrome browser</a> caches
<a href="http://en.wikipedia.org/wiki/HTTP_301" rel="noopener">HTTP 301</a> permanent redirects very
aggressively. This is normally a good thing, unless you’re the one setting up
the 301 and you make a mistake…</p>
<p>There is no obvious place in chrome to refresh that cache, but there is a
nifty trick.</p>
]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[40days - Simple isn't easy]]></title>
        <id>https://docwhat.org/40days-simple-isnt-easy</id>
        <link href="https://docwhat.org/40days-simple-isnt-easy"/>
        <updated>2013-02-28T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p><span
      class="gatsby-resp-image-wrapper"
      style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 500px; "
    >
      <a
    class="gatsby-resp-image-link"
    href="/static/9dbaa3ad68ee3d777565f6817b1c8587/0b533/40days.png"
    style="display: block"
    target="_blank"
    rel="noopener"
  >
    <span
    class="gatsby-resp-image-background-image"
    style="padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAACG0lEQVQ4y8WT65KaMBiGuf8b2J1Fx/+9AHfbcbuigIddUCraoKJAgkXdQQjBA8cOWE+tdra/+kwmk/nmfZN8bybUj9lMA/2JOpjqUwUoowOTHF3XdU3XDB2ZJtJ1iCBEyDAMVVURQlSr0RSZ59f219Zr8+nxia1zHMuzdVYQxF6vByE0DAPIfW2sSgMFQcOEsCt2mq0Wx/EUx3FgNIZoJnUla25puj4aZoyHymg0nluW6/u68CaUv3ySzNn36oSpTOV+HwCOZannav0zw7M1psrU2q02K/RqLF9naoIoAqBwXKPBN9vttigIlWbnpVrLlC/VBs8zDEOJnY5HiO/7JMfF2POIl0PO8AnBeWmv3G63sixTsiyn/0iSJGmaDofDX+bkQBgGYbjz1jvLJlEcedjzfQ/j1WazPsriOE7TVFGU08n7/dbrDYQLZfrOdpHt+HxDBEAdyMOupOSWk/LCnFezWdOctzerJy00zfkmv0PoTaZYVZ3NJtxrrptvNnmt5+vmvK18JGmcnPib+ZjEfnGuTg/XvWmOosg0zcViaVmWYRiO47qugzHGrmsikxDftm0Tmcd9/wwsPh6bJMl8Pl8sl3EcB7tdVo+iIAiOLXw0sPTjgf1nc7JP9zyC5PLZbpqjKFguQ01LbXu7Wtm2vSKEYIyzH+UREyWWlQIAqEqlUiqV6EsKBfrhgb67y+ZisfAb9/c0TRfLj+WfjlVNeivQ5HQAAAAASUVORK5CYII='); background-size: cover; display: block;"
  ></span>
  <picture>
          <source
              srcset="/static/9dbaa3ad68ee3d777565f6817b1c8587/ba381/40days.webp 200w,
/static/9dbaa3ad68ee3d777565f6817b1c8587/7f61c/40days.webp 400w,
/static/9dbaa3ad68ee3d777565f6817b1c8587/b0a15/40days.webp 500w"
              sizes="(max-width: 500px) 100vw, 500px"
              type="image/webp"
            />
          <source
            srcset="/static/9dbaa3ad68ee3d777565f6817b1c8587/772e8/40days.png 200w,
/static/9dbaa3ad68ee3d777565f6817b1c8587/e17e5/40days.png 400w,
/static/9dbaa3ad68ee3d777565f6817b1c8587/0b533/40days.png 500w"
            sizes="(max-width: 500px) 100vw, 500px"
            type="image/png"
          />
          <img
            class="gatsby-resp-image-image"
            src="/static/9dbaa3ad68ee3d777565f6817b1c8587/0b533/40days.png"
            alt="40days"
            title="Screenshot of 40days web app"
            loading="lazy"
            decoding="async"
            style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"
          />
        </picture>
  </a>
    </span></p>
<p>I wrote a simple one-page web application called
<a href="http://docwhat.github.com/40days/" rel="noopener">40days</a>. It shows you what the date is for
40 days in the future. I say “simple” but simple isn’t easy. It never is.</p>
]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Re: All https, all the time]]></title>
        <id>https://docwhat.org/re-all-https-all-the-time</id>
        <link href="https://docwhat.org/re-all-https-all-the-time"/>
        <updated>2013-02-26T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p><a href="https://willnorris.com/" rel="noopener">Will Norris</a> posted a blog post titled
<a href="https://willnorris.com/2012/12/all-https-all-the-time" rel="noopener"><em>All https, all the time</em></a>.</p>
<p>It’s a good article and I recommend you read it. <code class="language-text">docwhat.org</code> is now only
using https.</p>
<p>I…</p>]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[More on Vim with ruby crashing]]></title>
        <id>https://docwhat.org/vim-and-ruby</id>
        <link href="https://docwhat.org/vim-and-ruby"/>
        <updated>2013-01-26T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>I finally figured out all the reasons why <a href="https://www.vim.org/" rel="noopener">Vim</a> keeps
crashing on me. I started collecting info in
<a href="/os-x-vim-with-ruby-crashes/">OS X Vim with Ruby crashes</a> but there were
still crashes happening.</p>
<p>It’s an interesting story. Grab a beer and pull up a chair…</p>
]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[OS X Vim with Ruby crashes]]></title>
        <id>https://docwhat.org/os-x-vim-with-ruby-crashes</id>
        <link href="https://docwhat.org/os-x-vim-with-ruby-crashes"/>
        <updated>2012-12-08T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>On my OS X systems, <a href="https://www.vim.org" rel="noopener">Vim</a> and
<a href="https://github.com/macvim-dev/macvim" rel="noopener">MacVim</a> has been crashing a lot. The
main symptom is that anything using
<a href="https://vim.fandom.com/wiki/Omni_completion" rel="noopener">Omni completion</a>, such as
<a href="https://github.com/Shougo/neocomplcache" rel="noopener">NeoComplCache</a>, would try to use the
built in Ruby and cause vim to die with <code class="language-text">Vim: Caught deadly signal SEGV</code>.</p>
]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Dr.  Ross, O.D.]]></title>
        <id>https://docwhat.org/dr-ross-o-d</id>
        <link href="https://docwhat.org/dr-ross-o-d"/>
        <updated>2012-09-14T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p><a href="https://www.yelp.com/biz/edward-ross-od-pittsburgh-3" rel="noopener">Dr. Ross</a> and his staff
are awesome and let me tell you why.</p>
<p>He’s a very practical guy. He’ll get the job done quickly and efficiently.
And, he’ll answer any and all questions. Something that not all doctors do
well. His staff is awesome and helpful as well.</p>
]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[German windows for my home]]></title>
        <id>https://docwhat.org/german-windows-for-my-home</id>
        <link href="https://docwhat.org/german-windows-for-my-home"/>
        <updated>2012-09-11T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>I’m looking to replace the windows in my home. I’m fond of the German style
windows, known in the U.S.A. as tilt-turn windows.</p>
<p>I’ve found a couple places that look decent, and wanted to record them here
for future use. If you have any suggestions or recommendations, I’d appreciate
it. I’m also looking for someone to install them (and remove the existing
ones) in the Pittsburgh, PA area.</p>
]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[vim - preserve your cursor and window state]]></title>
        <id>https://docwhat.org/vim-preserve-your-cursor-and-window-state</id>
        <link href="https://docwhat.org/vim-preserve-your-cursor-and-window-state"/>
        <updated>2012-06-22T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>In vim, you can re-indent a whole buffer by using <code class="language-text">gg=G</code> in normal mode. I
like this command so much I have it mapped to <code class="language-text">&lt;leader>g&lt;/leader></code>.</p>
<p>This is great except that you loose your cursor (and window)
position.</p>]]></content>
        <author>
            <name>Christian Höltje</name>
            <uri>https://docwhat.org/</uri>
        </author>
    </entry>
</feed>