<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
   <channel>
      <atom:link href="http://hwarf.com/feed" rel="self" type="application/rss+xml" />
      <title><![CDATA[Hwarf Nugen]]></title>
      <link>http://hwarf.com/</link>
      <description>Random thoughts, tips, and how-tos.</description>
      <lastBuildDate>Sat, 21 Mar 2015 00:00:00 -0400</lastBuildDate>
      <language>en-us</language>
      <webMaster>josh@hwarf.com (Joshua Glemza)</webMaster>
      <copyright>Copyright 2018</copyright>
      <ttl>3600</ttl>

               <item>
         <title><![CDATA[DNS Caching and Forwarding with Unbound]]></title>
         <author>josh@hwarf.com (Joshua Glemza)</author>
         <link>http://hwarf.com/blog/dns-caching-forwarding-unbound</link>
         <guid>http://hwarf.com/blog/dns-caching-forwarding-unbound</guid>

                    <category>System Administration</category>
         

         <pubDate>Sat, 21 Mar 2015 00:00:00 -0400</pubDate>
         <description><![CDATA[<p>This howto shows the steps needed to configure unbound for DNS caching and forwarding from the 192.168.1.0/24 network. It assumes the server&#8217;s IP address is 192.168.1.22 and is running RHEL/CentOS 7.</p>

<h3>Installation</h3>

<pre><code>[root@rhce-server ~]# yum install unbound
</code></pre>

<h3>Configure Systemd</h3>

<pre><code>[root@rhce-server ~]# systemctl enable unbound
ln -s '/usr/lib/systemd/system/unbound.service' '/etc/systemd/system/multi-user.target.wants/unbound.service'
[root@rhce-server ~]# ^enable^start
systemctl start unbound
</code></pre>

<h3>Configure the Firewall</h3>

<pre><code>[root@rhce-server ~]# firewall-cmd --add-service=dns
success
[root@rhce-server ~]# firewall-cmd --add-service=dns --permanent
success
</code></pre>

<h3>Configure Unbound</h3>

<p>Unbound&#8217;s configuration is stored in <strong>/etc/unbound/unbound.conf</strong>.</p>

<p>By default unbound only listens on the loopback interface. Specify which interface you would like to use.</p>

<pre><code>interface: 192.168.1.22
</code></pre>

<p>Allow queries from 192.168.1.0/24.</p>

<pre><code>access-control: 192.168.1.0/24 allow
</code></pre>

<p>Disable DNSSEC.</p>

<pre><code>domain-insecure: *
</code></pre>

<p>Forward uncached requests to <a href="http://www.opendns.com/">OpenDNS</a>.</p>

<pre><code>forward-zone:
    name: *
    forward-addr: 208.67.222.222
    forward-addr: 208.67.220.220
</code></pre>

<h3>Check Your Configuration</h3>

<pre><code>[root@rhce-server ~]# unbound-checkconf 
unbound-checkconf: no errors in /etc/unbound/unbound.conf
</code></pre>

<h3>Restart the Unbound Service</h3>

<pre><code>[root@rhce-server ~]# systemctl restart unbound
</code></pre>

<h3>Verify it is Working</h3>

<p>Test from a different system on the network.</p>

<pre><code>mooose:~ jglemza$ dig fark.com A @192.168.1.22

; &lt;&lt;&gt;&gt; DiG 9.8.3-P1 &lt;&lt;&gt;&gt; fark.com A @192.168.1.22
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 60299
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;fark.com.          IN  A

;; ANSWER SECTION:
fark.com.       43200   IN  A   64.191.171.200

;; Query time: 234 msec
;; SERVER: 192.168.1.22#53(192.168.1.22)
;; WHEN: Sat Mar 21 13:16:54 2015
;; MSG SIZE  rcvd: 42
</code></pre>

<p>Verify the record is now in unbound&#8217;s cache.</p>

<pre><code>[root@rhce-server ~]# unbound-control dump_cache|grep fark.com
ns2.fark.com.   43197   IN  A   23.253.56.58
fark.com.   43197   IN  A   64.191.171.200
ns1.fark.com.   43197   IN  A   64.191.171.194
fark.com.   43197   IN  NS  ns1.fark.com.
fark.com.   43197   IN  NS  ns2.fark.com.
...
</code></pre>]]></description>
         </item>
               <item>
         <title><![CDATA[RHEL / CentOS 7 Network Teaming]]></title>
         <author>josh@hwarf.com (Joshua Glemza)</author>
         <link>http://hwarf.com/blog/rhel-centos-7-network-teaming</link>
         <guid>http://hwarf.com/blog/rhel-centos-7-network-teaming</guid>

                    <category>System Administration</category>
         

         <pubDate>Sat, 21 Mar 2015 00:00:00 -0400</pubDate>
         <description><![CDATA[<p>Below is an example on how to configure network teaming on RHEL/CentOS 7. It is assumed that you have at least two interface cards.</p>

<h3>Show Current Network Interfaces</h3>

<pre><code>[root@rhce-server ~]$ ip link
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno16777736: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:69:bf:87 brd ff:ff:ff:ff:ff:ff
3: eno33554984: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:69:bf:91 brd ff:ff:ff:ff:ff:ff
</code></pre>

<p>The two devices I will be teaming are eno33554984 and eno16777736.</p>

<h3>Create the Team Interface</h3>

<pre><code>[root@rhce-server ~]$ nmcli connection add type team con-name team0 ifname team0 config '{"runner": {"name": "activebackup"}}'
</code></pre>

<p>This will configure the interface for activebackup. Other runners include broadcast, roundrobin, loadbalance, and lacp.</p>

<h3>Configure team0&#8217;s IP Address</h3>

<pre><code>[root@rhce-server ~]# nmcli connection modify team0 ipv4.addresses 192.168.1.22/24
[root@rhce-server ~]# nmcli connection modify team0 ipv4.method manual
</code></pre>

<p>You can also configure IPv6 address by setting the ipv6.addresses field.</p>

<h3>Configure the Team Slaves</h3>

<pre><code>[root@rhce-server ~]# nmcli connection add type team-slave con-name team0-slave1 ifname eno33554984 master team0 
Connection 'team0-slave1' (4167ea50-7d3a-4024-98e1-3058a4dcf0fa) successfully added.
[root@rhce-server ~]# nmcli connection add type team-slave con-name team0-slave2 ifname eno16777736 master team0 
Connection 'team0-slave2' (d5ed65d1-16a7-4bc7-8c4d-78e17a1ed8b3) successfully added.
</code></pre>

<h3>Check the Connection</h3>

<pre><code>[root@rhce-server ~]# teamdctl team0 state
setup:
  runner: activebackup
ports:
  eno16777736
    link watches:
      link summary: up
          instance[link_watch_0]:
        name: ethtool
        link: up
  eno33554984
    link watches:
      link summary: up
      instance[link_watch_0]:
       name: ethtool
        link: up
runner:
  active port: eno16777736

[root@rhce-server ~]# ping -I team0 192.168.1.1
PING 192.168.1.1 (192.168.1.1) from 192.168.1.24 team0: 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.38 ms
...
</code></pre>

<h3>Test Failover</h3>

<pre><code>[root@rhce-server ~]# nmcli device disconnect eno16777736
[root@rhce-server ~]# teamdctl team0 state
setup:
  runner: activebackup
ports:
  eno33554984
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
runner:
  active port: eno33554984
</code></pre>]]></description>
         </item>
               <item>
         <title><![CDATA[Configuring Postfix as a Local Network Relay]]></title>
         <author>josh@hwarf.com (Joshua Glemza)</author>
         <link>http://hwarf.com/blog/configure-postfix-null-client</link>
         <guid>http://hwarf.com/blog/configure-postfix-null-client</guid>

                    <category>System Administration</category>
         

         <pubDate>Sat, 21 Mar 2015 00:00:00 -0400</pubDate>
         <description><![CDATA[<p>This howto assumes that the relay server&#8217;s IP address is 192.168.1.22 and is running RHEL/CentOS 7. Only mail from the 192.168.1.0/24 network should be accepted and relayed.</p>

<h3>Install Postfix</h3>

<pre><code>[root@rhce-server ~]# yum install postfix
</code></pre>

<h3>Configure Systemd</h3>

<pre><code>[root@rhce-server ~]# systemctl enable postfix
[root@rhce-server ~]# ^enable^start
</code></pre>

<h3>Configure the Firewall</h3>

<pre><code>[root@rhce-server ~]# firewall-cmd --add-service=smtp
success
[root@rhce-server ~]# firewall-cmd --add-service=smtp --permanent 
success
</code></pre>

<h3>Configure Postfix</h3>

<p>Postfix&#8217;s main configuration file is located at <strong>/etc/postfix/main.cf</strong>.</p>

<p>Configure Postfix to listen on the correct interface.</p>

<pre><code>inet_interfaces = all
</code></pre>

<p>Configure the trusted network.</p>

<pre><code>mynetworks = 192.168.1.0/24
</code></pre>

<p>Configure the list of domains that this Postfix service should consider itself the final destination for. In my case the server is named rhce-server.</p>

<pre><code>mydestination = rhce-server, localhost.localdomain, localhost
</code></pre>

<p>Configure all mail not destined for this server to be relayed to another SMTP server. I am using Time Warner Cable&#8217;s SMTP server for Northeast Ohio. The brackets tell Postfix to turn off MX lookups.</p>

<pre><code>relayhost = [smtp-server.neo.rr.com]
</code></pre>

<h3>Restart Postfix</h3>

<pre><code>[root@rhce-server postfix]# systemctl restart postfix
</code></pre>

<h3>Send a Test Email</h3>

<pre><code>[root@rhce-server postfix]# mail -s "rhce-server test" josh@example.com
testing our null postfix configuration
.
EOT
</code></pre>

<p>With any luck we should be all set. You can verify the mail was successfully relayed in <strong>/var/log/maillog</strong>.</p>]]></description>
         </item>
               <item>
         <title><![CDATA[Running pfSense in Proxmox/KVM with PCI Passthrough]]></title>
         <author>josh@hwarf.com (Joshua Glemza)</author>
         <link>http://hwarf.com/blog/pfsense-pci-passthrough-proxmox</link>
         <guid>http://hwarf.com/blog/pfsense-pci-passthrough-proxmox</guid>

                    <category>System Administration</category>
         

         <pubDate>Tue, 10 Feb 2015 00:00:00 -0500</pubDate>
         <description><![CDATA[<p>Below is how I was able to get <a href="http://pfsense.org/">pfSense</a> 2.2 running under <a href="https://www.proxmox.com/">Proxmox</a> 3.3 with PCI passthrough for two Intel NICs. My first attempts were trying to utilize VirtIO and e1000 network devices but the performance was abysmal. With PCI passthrough I was able to achieve native throughput in my environment.</p>

<p>I am assuming that you have Proxmox running and a pfSense virtual machine already created.</p>

<h4>Configure the Proxmox Test Repository</h4>

<p>The first thing we need to do is enable the Proxmox test repository so that we may install the 3.10 kernel.</p>

<pre><code>echo 'deb http://download.proxmox.com/debian wheezy pvetest' &gt;&gt; /etc/apt/sources.list
</code></pre>

<h4>Install the 3.10 Kernel</h4>

<pre><code>apt-get install pve-kernel-3.10.0-6
</code></pre>

<h4>Edit Grub Configuration</h4>

<p>We need to pass a kernel flag to enable IOMMU. In my case I am using an AMD processor and added amd_iommu=on to the following line in /etc/default/grub. If you are using an Intel processor you would add intel_iommu=on.</p>

<pre><code>GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"
</code></pre>

<p>Update the Grub configuration</p>

<pre><code>update-grub
</code></pre>

<p>Reboot the server. By default the 3.10 kernel should be selected.</p>

<h4>Identify Your NICs</h4>

<p>Identify the PCI devices you want to passthrough to your virtual machine.</p>

<pre><code>lspci
</code></pre>

<p>In my case I was looking for my Intel NICs.</p>

<pre><code>lspci | grep Intel

03:00.0 Ethernet controller: Intel Corporation 82541PI Gigabit Ethernet Controller (rev 05)
04:00.0 Ethernet controller: Intel Corporation 82541PI Gigabit Ethernet Controller (rev 05)
</code></pre>

<p>You will need to note their addresses.</p>

<h4>Edit the Virtual Machine Configuration</h4>

<p>Below is an example of my working configuration. You can find these configurations in /etc/pve/qemu-server/. The file you are looking for will correspond with the virtual machine ID. In my case 100.conf.</p>

<pre><code>boot: cdn
bootdisk: ide0
cores: 2
cpu: qemu32
hostpci0: 03:00.0,pcie=1,driver=vfio
hostpci1: 04:00.0,pcie=1,driver=vfio
ide0: local:100/vm-100-disk-1.qcow2,format=qcow2,size=16G
ide2: local:iso/pfSense-LiveCD-2.2-RELEASE-i386.iso,media=cdrom,size=206916K
machine: pc-q35-2.0
memory: 1024
name: pfSense
onboot: 1
ostype: other
smbios1: uuid=0f590e3e-88a0-4084-8a6f-f5a2380a01fa
sockets: 2
tablet: 0
</code></pre>

<p>Notice that I added the hostpci0, hostpci1, and machine options. The hostpciX options identify which PCI devices we want to passthrough. As we found above I was looking for my NICs at 03:00.0 and 04:00.0. The machine must be set to pc-q35-2.0 for PCI passthrough to work with FreeBSD from my experience.</p>

<h4>Conclusion</h4>

<p>With those options set you should be able to boot your pfSense virtual machine and see your PCI devices natively.</p>]]></description>
         </item>
               <item>
         <title><![CDATA[Using Apache as a Reverse Proxy with SiteMinder for Authentication]]></title>
         <author>josh@hwarf.com (Joshua Glemza)</author>
         <link>http://hwarf.com/blog/siteminder-authentication-apache-reverse-proxy</link>
         <guid>http://hwarf.com/blog/siteminder-authentication-apache-reverse-proxy</guid>

                    <category>System Administration</category>
         

         <pubDate>Wed, 07 Jan 2015 00:00:00 -0500</pubDate>
         <description><![CDATA[<p>When using Apache as a reverse proxy to pass authentication to another application from SiteMinder you may need to send the header variable to your application. By default Apache is not passing these variables on and you need to set them up for your proxy.</p>

<pre><code class="language-bash">RequestHeader set REMOTE_USER %{HTTP:UID}s
</code></pre>

<p>Above is an example of the variable UID being returned by SiteMinder and being assigned to the variable REMOTE_USER that will be provided to the end application.</p>]]></description>
         </item>
               <item>
         <title><![CDATA[Discard All Local Changes with Mercurial]]></title>
         <author>josh@hwarf.com (Joshua Glemza)</author>
         <link>http://hwarf.com/blog/mercurial-discard-all-local-changes</link>
         <guid>http://hwarf.com/blog/mercurial-discard-all-local-changes</guid>

                    <category>System Administration</category>
         

         <pubDate>Wed, 23 Jul 2014 00:00:00 -0400</pubDate>
         <description><![CDATA[<p>To discard all changes and revert back to the head in the current branch run the following Mercurial command.</p>

<pre><code class="language-bash">hg update -C
</code></pre>

<p>To remove all unversioned files run this command.</p>

<pre><code class="language-bash">hg purge
</code></pre>

<p>You may need to add the following to your .hgrc file for purge to work correctly.</p>

<pre><code>[extensions]
purge =
</code></pre>]]></description>
         </item>
               <item>
         <title><![CDATA[Disable Diffie-Hellman Ciphers on IIS]]></title>
         <author>josh@hwarf.com (Joshua Glemza)</author>
         <link>http://hwarf.com/blog/disable-diffie-helman-ciphers-on-iis</link>
         <guid>http://hwarf.com/blog/disable-diffie-helman-ciphers-on-iis</guid>

                    <category>System Administration</category>
         

         <pubDate>Tue, 11 Mar 2014 00:00:00 -0400</pubDate>
         <description><![CDATA[<p>To disable Diffie-Hellman ciphers on IIS you need to modify this registry key.</p>

<pre><code>HKLM\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002
</code></pre>

<p>From <strong>&#8220;Functions&#8221;</strong> you will need to remove all ciphers that contain <strong>&#8220;DH&#8221;</strong>. Once that is complete you can restart the server and verify (sslscan) that they are no longer being used.</p>

<p>Another approach would be to use <a href="https://www.nartac.com/Products/IISCrypto/Default.aspx">IIS Crypto</a>. It is a gui/cli freeware program that will modifiy the registry keys for you.</p>]]></description>
         </item>
               <item>
         <title><![CDATA[Detect a New Disk and Grow a Filesystem in Linux without Rebooting]]></title>
         <author>josh@hwarf.com (Joshua Glemza)</author>
         <link>http://hwarf.com/blog/detect-extend-new-disk-vmware-linux</link>
         <guid>http://hwarf.com/blog/detect-extend-new-disk-vmware-linux</guid>

                    <category>System Administration</category>
         

         <pubDate>Wed, 19 Feb 2014 00:00:00 -0500</pubDate>
         <description><![CDATA[<p>If you have ever wanted to add a new hard disk to a Linux VMware guest without rebooting here is the solution. After running this command you should be able to use the new disk as you please. This is really useful for growing an LVM filesystem on the fly.</p>

<p>Run this command after adding the new disk to you VMware configuration. This will allow your Linux guest to detect the new disk and assign it as a device.</p>

<pre><code class="language-bash">ls /sys/class/scsi_host/ | while read host ; do echo "- - -" &gt; /sys/class/scsi_host/$host/scan ; done
</code></pre>

<p>Once you have ran this command you can grow the LVM filesystem as usual. (Where X is the new device added.)</p>

<pre><code class="language-bash"># Create a new partition on the new disk. Assign it the type of Linux LVM, 8e.
fdisk /dev/sdX

# Create the new physical volume.
pvcreate /dev/sdX1

# Extend the volume group of your choice.
vgextend /dev/VolumeGroupName /dev/sdX1

# Confirm the new physical extents are available and take note of the number.
vgdisplay

# Extend a logical volume where 1234 is the number of PEs you would like to add.
lvextend -l +1234 /dev/VolumeGroupName/LogVolName

# Resize the EXT filesystem.
resize2fs /dev/VolumeGroupName/LogVolName

# Confirm the new space is available.
df -h
</code></pre>

<p>Once complete you should have extra space on your Linux guest.</p>]]></description>
         </item>
               <item>
         <title><![CDATA[Recursive Directory/File Permissions]]></title>
         <author>josh@hwarf.com (Joshua Glemza)</author>
         <link>http://hwarf.com/blog/recursive-file-directory-permissions</link>
         <guid>http://hwarf.com/blog/recursive-file-directory-permissions</guid>

                    <category>System Administration</category>
         

         <pubDate>Sun, 16 Feb 2014 00:00:00 -0500</pubDate>
         <description><![CDATA[<p>I&#8217;m constantly needing to recursively set different permissions on files and directories to make suPHP happy. I&#8217;m posting this here for easy reference.</p>

<pre><code class="language-bash"># Directories
find . -type d -exec chmod 755 {} +

# Files
find . -type f -exec chmod 644 {} +
</code></pre>]]></description>
         </item>
               <item>
         <title><![CDATA[Hello Tiny Tiny RSS]]></title>
         <author>josh@hwarf.com (Joshua Glemza)</author>
         <link>http://hwarf.com/blog/hello-tiny-tiny-rss</link>
         <guid>http://hwarf.com/blog/hello-tiny-tiny-rss</guid>

                    <category>Applications</category>
         

         <pubDate>Sun, 09 Feb 2014 00:00:00 -0500</pubDate>
         <description><![CDATA[<p>When <a href="http://googlereader.blogspot.com/2013/03/powering-down-google-reader.html">Google Reader shutdown July 1st, 2013</a> I was forced to find an alternative RSS solution. I set out to find the best solution that I could. RSS is something I use daily. It&#8217;s a part of my life routine. Below you can find a quick summary of the services I liked and which solution I preferred.</p>

<hr />

<p><strong>Requirements</strong></p>

<blockquote>
  <ul>
  <li><em>Pay-for or self-hosted.</em> I wanted to minimize the chances of the service shutting down. Self-hosted needs to run in a <a href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)">LAMP</a> configuration.</li>
  <li><em>Sleek web interface, good performance on my Chromebook.</em> I prefer the three-column look that Reeder made popular.</li>
  <li><em>Android integration.</em> Android is my primary mobile operating system.</li>
  <li><em>Frequent loading of personal feeds (e.g. feeds created by self-hosted <a href="http://fivefilters.org/content-only">Full-Text RSS</a>).</em> Some services load unpopular feeds very inconsistently.</li>
  </ul>
</blockquote>

<hr />

<p><strong>Paid Services Evaluated</strong></p>

<blockquote>
  <ul>
  <li><a href="http://feedbin.me/">Feedbin.me</a></li>
  <li><a href="http://newsblur.com/">Newsblur</a></li>
  </ul>
</blockquote>

<p><strong>Self-hosted Services Evaluated</strong></p>

<blockquote>
  <ul>
  <li><a href="http://feedafever.com/">Fever</a></li>
  <li><a href="http://tt-rss.org/redmine/projects/tt-rss/wiki">Tiny Tiny RSS</a></li>
  </ul>
</blockquote>

<p><strong>Android Applications Evaluated</strong></p>

<blockquote>
  <ul>
  <li><a href="http://twentyfivesquares.com/press/">Press</a></li>
  <li><a href="http://newsplus.co/">News+</a></li>
  <li><a href="http://www.newsblur.com/android">Newsblur</a></li>
  </ul>
</blockquote>

<hr />

<p><strong>Feedbin.me</strong></p>

<ul>
<li>Pay-for.</li>
<li>Very nice web interface.</li>
<li>Works great with Press.</li>
<li>RSS Feeds load on average about every 15 minutes.</li>
</ul>

<p><strong>NewsBlur</strong></p>

<ul>
<li>Pay-for.</li>
<li>Nice web interface. However, when pressing the keyboard shortcut to go to the next article it would hang sometimes.</li>
<li>Not may faviorite Android application.</li>
</ul>

<p><strong>Fever</strong></p>

<ul>
<li>Paid, self-hosted.</li>
<li>Not may favorite web interface. I missed the third column that showed the article headlines.</li>
<li>Works with Press. However, there is a race condition between updates and marking all read.</li>
<li>Only refreshes feeds based on a cronjob or having the site open in your browser.</li>
</ul>

<p><strong>Tiny Tiny RSS</strong></p>

<ul>
<li>Free, self-hosted.</li>
<li>Beautiful web interface. Highly customizable. Great performance.</li>
<li>Works with News+. A similar race condition exists marking all read. Also, when you resync it will not sync the read status of articles the app already knows about. This isn&#8217;t a big issue because you can mark items read as your scroll through the headline list.</li>
<li>Fine grained control of how often feeds are updated. Per URL you are able to set the frequency at which it is check for new content. This is great when combined with Full-Text RSS, as it minimizes the load required.</li>
</ul>

<hr />

<p>In the end all services could have sufficed for my needs. Yet the best solution for me was Tiny Tiny RSS with News+. In future posts I will detail my setup and custom tweaks I performed to get it working exactly the way I wanted.</p>]]></description>
         </item>
               <item>
         <title><![CDATA[New Year, New Blog]]></title>
         <author>josh@hwarf.com (Joshua Glemza)</author>
         <link>http://hwarf.com/blog/new-year-new-blog</link>
         <guid>http://hwarf.com/blog/new-year-new-blog</guid>

                    <category>Web Development</category>
         

         <pubDate>Sun, 05 Jan 2014 00:00:00 -0500</pubDate>
         <description><![CDATA[<p>Hwarf is moving away from Wordpress. All current content on <a href="http://blog.hwarf.com">blog.hwarf.com</a> will remain on Blogger for the time being. New content management systems are being tested over the course of the next few weeks.</p>

<p>The following flat-file CMS frameworks are being evaluated.</p>

<blockquote>
  <ul>
  <li><a href="http://statamic.com/">Statamic</a> ($29/$99)</li>
  <li><a href="http://getkirby.com/">Kirby</a> ($39)</li>
  <li><a href="http://staceyapp.com/">Stacey</a> (Free)</li>
  </ul>
</blockquote>

<p>I&#8217;m looking for the best solution that will allow me to create posts easily via Markdown. I am planning to evaluate using the <a href="http://foundation.zurb.com/templates.html">Foundation Blog Template</a>. At the time of this writing a bare bones version in Statamic has been created.</p>]]></description>
         </item>
      
   </channel>
</rss>

