<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:wfw="http://wellformedweb.org/CommentAPI/"
     >
  <channel>
    <title>Personal.X-Istence.com</title>
    <link>http://personal.x-istence.com/</link>
    <description>This web log is meant to be both technical and personal, generally detailing my exploits and adventures as well as providing notes and ideas.</description>
    <pubDate>Wed, 30 Apr 2014 18:04:35 GMT</pubDate>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Printer Setup</title>
      <link>http://personal.x-istence.com/2014/04/30/printer-setup</link>
      <pubDate>Wed, 30 Apr 2014 12:03:21 MDT</pubDate>
      <category><![CDATA[printers]]></category>
      <guid isPermaLink="true">http://personal.x-istence.com/2014/04/30/printer-setup</guid>
      <description>Printer Setup</description>
      <content:encoded><![CDATA[<p>So, I set up a printer I had gotten from my dad today, I was expecting a fight,
I had prepared for a fight...</p>
<p>I had received this printer after Thanksgiving since my dad wanted it no more.
He gave me a D-Link DP-301U and a HP LaserJet 3200, a USB printer, and a  USB
network print server. Now, as almost any sane person knows printers are some of
the most fickle beasts on this planet, and taming them is a task that no mere
man is prepared for. </p>
<p>How many hours did you waste trying to stop a printer from printing some
document, only to have to go to the emergency room because you needed stitches
for the gash on your forehead?</p>
<p>I am fairly sure that with the amount of time and productivity lost to dealing
with printers we could have solved world hunger, or at least cured cancer.</p>
<p>So after putting off this printer installation for many a month, for fear that
I would end up losing all my hair as I pulled my hairs out one by one, I needed
to print something, I had to finally cave.</p>
<p>I plugged in the printer, and I heard it whirl to life, the sounds instantly
causing PTSD flashbacks to the many printers I have had the displeasure of
turning on. I plugged the printer into the print server, plugged the print
server in, and found myself silently praying, not merely praying but also
slowly and surely rocking myself back and forth as if trying to calm myself.</p>
<p>After opening System Preferences, and adding the printer, selecting that it is
a LaserJet, it said it had successfully added the printer. It has always seemed
so deceptively simple, a couple of clicks and bam it should work. Surprisingly
no drivers needed to be downloaded, no hundreds of megs worth of extra crappy
software installed, could it be this simple?</p>
<p>I opened the file I wanted to print and started preparing for the worst. I had
my hand on the paper tray, knowing that if it goes wrong this printer will go
through 500 pages attempting to print pages of garbage, I hit print and
immediately moved my hand to the power button, as an even better last resort. I
tried to push the memory of older printers and how they had wronged me out of
my mind as I got another flashback as the printer started spooling up, readying
itself to print.</p>
<p>What happens next is somewhat of a miracle, the printer spat out my document, a
perfect reproduction on paper. It didn't attempt print hundreds of pages of
random characters and garbage, it didn't eat the pages and jam, it didn't start
beeping at me because of the wrong printer drivers, my fears were unfounded.</p>
<p>Today is a great day, it is the day that I can start rebuilding my faith in
printers, no longer afraid, no longer needing to worry about stitches, or that
it really hurts to rip hair from my head. Today the printer gods smiled on me,
and I smiled back.</p>]]></content:encoded>
    </item>
    <item>
      <title>An engineers technical notebook (a.k.a new blog)</title>
      <link>http://personal.x-istence.com/2012/04/21/an-engineers-technical-notebook-(a.k.a-new-blog)</link>
      <pubDate>Sat, 21 Apr 2012 00:24:42 MDT</pubDate>
      <category><![CDATA[personal]]></category>
      <category><![CDATA[technical]]></category>
      <category><![CDATA[wordsandthings]]></category>
      <guid isPermaLink="true">http://personal.x-istence.com/2012/04/21/an-engineers-technical-notebook-(a.k.a-new-blog)</guid>
      <description>An engineers technical notebook (a.k.a new blog)</description>
      <content:encoded><![CDATA[<p>If you are still reading this blog (all 5 of you out there according to Google
Webmaster<sup id="fnref:20120421webmaster"><a href="#fn:20120421webmaster" rel="footnote">1</a></sup>), then you may have noticed that most of the content has been
technical in nature, at least, that is what most of it has been lately. The
idea is to save notes about setups I have done so that I can refer back to them
at a later time, for a long time I've been wanting to do that on a domain
called usingnamespace.com, but I just never really like the name for just a
blog, I have other ideas for it.</p>
<p>Recently I was going through domain registration again and I was looking at a
list of domains that I wanted, but couldn't get because at the time I looked
they were already taken. I got lucky, I finally got <a
href="http://funcptr.net">funcptr.net/com</a> and immediately purchased the
two.</p>
<p>So without further ado, I introduce my new technical notebook named <a
href="http://funcptr.net/">funcptr</a> which is where I will be writing longer
length, well thought out (hopefully) articles. The whole idea is for me to
start writing down the solutions to technical problems I have encountered in
both software engineering as well as system administration and various other
technical tasks. It won't be strictly limited to software but will also include
hardware projects, and electronics. </p>
<p>I hope you go over and take a look. I am slowly but surely migrating technical
content from this blog to funcptr such as my <a
href="http://funcptr.net/2011/09/08/nat-with-pf-on-an-interface-with-multiple-ip-addresses">NAT
with pf on an interface with multiple IP addresses</a> article that describes a
problem I ran into with PF automatically enabling round-robin causing issues
because the secondary IP address was not on the same network as the default
gateway and thus NAT didn't function as you'd expect. I am setting up 301
redirects so if you have linked to a post here before, don't worry, it will
transparently send you to the correct location!</p>
<p>Let me know if you have any suggestions, you can find my contact information on
my portfolio site: <a href="http://bertjwregeer.com/Contact.html">contact
Bert</a>.</p>
<div class="footnote">
<hr />
<ol>
<li id="fn:20120421webmaster">
<p>I think Google Webmaster shows me the amount of people
that have my RSS feed added to Google Reader... not entirely sure how else they
are getting that statistic.&#160;<a href="#fnref:20120421webmaster" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
</li>
</ol>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Bug in Boost 1.4.7 when compiling with clang and c++0x support</title>
      <link>http://personal.x-istence.com/2011/11/11/bug-in-boost-1.4.7-when-compiling-with-clang-and-c++0x-support</link>
      <pubDate>Fri, 11 Nov 2011 00:03:26 MST</pubDate>
      <category><![CDATA[c++0x]]></category>
      <category><![CDATA[Boost.Thread]]></category>
      <category><![CDATA[clang++]]></category>
      <category><![CDATA[Boost]]></category>
      <guid isPermaLink="true">http://personal.x-istence.com/2011/11/11/bug-in-boost-1.4.7-when-compiling-with-clang-and-c++0x-support</guid>
      <description>Bug in Boost 1.4.7 when compiling with clang and c++0x support</description>
      <content:encoded><![CDATA[<p>This bug:</p>
<p><a href="http://comments.gmane.org/gmane.comp.compilers.clang.devel/15926">http://comments.gmane.org/gmane.comp.compilers.clang.devel/15926</a></p>
<p>still exists in 1.4.7.</p>
<p>Here is a small example:</p>
<div class="codehilite"><pre><span class="cp">#include &lt;boost/thread/thread.hpp&gt;</span>

<span class="kt">int</span> <span class="n">main</span><span class="p">()</span>
<span class="p">{</span>
    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>


<p>And compile it:</p>
<div class="codehilite"><pre>clang++ test.cc
clang++ -std=c++0x test.cc

In file included from test.cc:1:
In file included from /usr/local/include/boost/thread/thread.hpp:17:
/usr/local/include/boost/thread/pthread/thread_data.hpp:36:17: error: call to deleted constructor of 
&#39;boost::shared_ptr&lt;boost::detail::tss_cleanup_function&gt;&#39;
                func(func_),value(value_)
                ^    ~~~~~
/usr/local/include/boost/smart_ptr/shared_ptr.hpp:164:25: 
               note: function has been explicitly marked deleted here
template&lt;class T&gt; class shared_ptr
                        ^
In file included from test.cc:1:
In file included from /usr/local/include/boost/thread/thread.hpp:22:
/usr/local/include/boost/thread/detail/thread.hpp:395:13: error: 
            call to deleted constructor of &#39;detail::thread_data_ptr&#39; (aka &#39;shared_ptr&lt;boost::detail::thread_data_base&gt;&#39;)
            thread_data(thread_data_)
            ^           ~~~~~~~~~~~~
/usr/local/include/boost/smart_ptr/shared_ptr.hpp:464:36: 
            note: function has been explicitly marked deleted here
    template&lt;class Y&gt; friend class shared_ptr;
                                   ^
/usr/local/include/boost/smart_ptr/shared_ptr.hpp:301:9: error: functional-style cast from 
&#39;const boost::shared_ptr&lt;boost::detail::thread_data_base&gt;&#39; to &#39;this_type&#39; (aka &#39;shared_ptr&lt;boost::detail::thread_data_base&gt;&#39;) 
uses deleted function
        this_type(r).swap(*this);
        ^~~~~~~~~~~
/usr/local/include/boost/thread/detail/thread.hpp:181:24: note: in instantiation of member function 
&#39;boost::shared_ptr&lt;boost::detail::thread_data_base&gt;::operator=&#39; requested here
            thread_info=other.thread_info;
                       ^
/usr/local/include/boost/smart_ptr/shared_ptr.hpp:464:36: note: candidate constructor (the implicit copy constructor) has 
            been explicitly deleted
    template&lt;class Y&gt; friend class shared_ptr;
                                   ^
/usr/local/include/boost/smart_ptr/shared_ptr.hpp:227:5: note: candidate constructor [with Y = boost::detail::thread_data_base]
    shared_ptr( shared_ptr&lt;Y&gt; const &amp; r, typename boost::detail::sp_enable_if_convertible&lt;Y,T&gt;::type = boost::detail::sp_empty() )
    ^
3 errors generated.
</pre></div>]]></content:encoded>
    </item>
    <item>
      <title>Steve Jobs - 1955 - 2011</title>
      <link>http://personal.x-istence.com/2011/10/06/steve-jobs---1955---2011</link>
      <pubDate>Thu, 06 Oct 2011 02:17:32 MDT</pubDate>
      <category><![CDATA[death]]></category>
      <category><![CDATA[Apple]]></category>
      <category><![CDATA[Steve Jobs]]></category>
      <guid isPermaLink="true">http://personal.x-istence.com/2011/10/06/steve-jobs---1955---2011</guid>
      <description>Steve Jobs - 1955 - 2011</description>
      <content:encoded><![CDATA[<p>Yesterday the world lost a great visionary and leader. Whether you hated the
guy or are an admirer you can't deny the fact that <a
href="http://www.apple/com/stevejobs/">Steve Jobs</a> had a great amount of
influence in shaping the world of technology as it exists today.</p>
<p>He was always a step ahead of everyone else, knew what people wanted before
they wanted it and was able to give it to them in beautiful product that people
fell in love with; and still do fall in love with.</p>
<p>You may disagree with his business practices, you may dislike him, but he lived
the American dream. He started from nothing in a garage and ended up as the CEO
of one of the biggest and richest corporations of our time. We may not be able
to follow in his footsteps, we are at least able to gain wisdom and knowledge
from his experiences and missteps so that we too may one day be as great of a
man as he was.</p>
<p>He did what he loved, he ran Apple until his last breath. I hope that one day I
may be so lucky as to say that I too did what I loved until the day I died. May
we all be so lucky as to die doing what we love surrounded by loved ones and
friends.</p>
<p>At the end of Stanfords Commencement address in 2005, Steve Jobs quoted a
magazine he used to read called the "Whole Earth Catalog", and they said on the
back of their last issue "Stay Hungry. Stay Foolish".</p>
<p>It is one of the quotes that has stuck with me from that address, it is
something that I truly believe in. It is something I attempt to follow every
day. Every person interprets it differently, and that is the beauty of it. I
find it apt then to end this article by thanking Steve Jobs for bringing my
attention to these four words and how they have changed me.</p>
<p>Thanks for everything Steve. You made a huge dent in the universe, I can only
hope to scratch the surface compared to what you accomplished. May you rest in
peace.</p>
<p>Stay Hungry. Stay Foolish.</p>]]></content:encoded>
    </item>
    <item>
      <title>Setting up jails with multiple IPs and providing it with internet access</title>
      <link>http://personal.x-istence.com/2011/08/15/setting-up-jails-with-multiple-ips-and-providing-it-with-internet-access</link>
      <pubDate>Mon, 15 Aug 2011 15:40:04 MDT</pubDate>
      <category><![CDATA[jail]]></category>
      <category><![CDATA[NAT]]></category>
      <category><![CDATA[FreeBSD]]></category>
      <guid isPermaLink="true">http://personal.x-istence.com/2011/08/15/setting-up-jails-with-multiple-ips-and-providing-it-with-internet-access</guid>
      <description>Setting up jails with multiple IPs and providing it with internet access</description>
      <content:encoded><![CDATA[<p>I have multiple VMs up and running and generally I have an internal to the VMs
only network set up, in the current project I am working on I have three
completely different networks set up.</p>
<ol>
<li>DHCP assigned network that routes to the outside network on the host (192.168.0.1/24)</li>
<li>An internal to the VM's network interface (10.99.12.1/24)</li>
<li>A network that is tied to the hosts wireless network (setup to be an AP) (10.99.11.1/24)</li>
</ol>
<p>So within my FreeBSD VM I have the following: em0, em1, em2 as "network cards".
In my FreeBSD VM, I am creating two jails that are going to contain different
pieces of server software. The jails need ip's in the following ranges,
10.99.12.1/24 (to connect to another VM), 10.99.11.1/24 (Wifi network) and then
it needs to have an IP address that is considered "local" and we can NAT on, so
in addition to the above networks we also needed to add another network. The
easiest way to create new interface with IP address' is using a bridge. They
can be assigned IP addresses, which is all we need.</p>
<p>At this point inside of a jail it kinda looks like this:</p>
<div class="codehilite"><pre><span class="n">em0</span><span class="o">:</span> <span class="n">flags</span><span class="o">=</span><span class="mi">8843</span><span class="o">&lt;</span><span class="n">UP</span><span class="o">,</span><span class="n">BROADCAST</span><span class="o">,</span><span class="n">RUNNING</span><span class="o">,</span><span class="n">SIMPLEX</span><span class="o">,</span><span class="n">MULTICAST</span><span class="o">&gt;</span> <span class="n">metric</span> <span class="mi">0</span> <span class="n">mtu</span> <span class="mi">1500</span>
    <span class="n">options</span><span class="o">=</span><span class="mi">209</span><span class="n">b</span><span class="o">&lt;</span><span class="n">RXCSUM</span><span class="o">,</span><span class="n">TXCSUM</span><span class="o">,</span><span class="n">VLAN_MTU</span><span class="o">,</span><span class="n">VLAN_HWTAGGING</span><span class="o">,</span><span class="n">VLAN_HWCSUM</span><span class="o">,</span><span class="n">WOL_MAGIC</span><span class="o">&gt;</span>
    <span class="n">ether</span> <span class="mi">52</span><span class="o">:</span><span class="mi">54</span><span class="o">:</span><span class="mi">00</span><span class="o">:</span><span class="mi">6</span><span class="n">b</span><span class="o">:</span><span class="mi">6</span><span class="n">a</span><span class="o">:</span><span class="mi">49</span>
    <span class="n">media</span><span class="o">:</span> <span class="n">Ethernet</span> <span class="n">autoselect</span> <span class="o">(</span><span class="mi">1000</span><span class="n">baseT</span> <span class="o">&lt;</span><span class="n">full</span><span class="o">-</span><span class="n">duplex</span><span class="o">&gt;)</span>
    <span class="n">status</span><span class="o">:</span> <span class="n">active</span>
<span class="n">em1</span><span class="o">:</span> <span class="n">flags</span><span class="o">=</span><span class="mi">8843</span><span class="o">&lt;</span><span class="n">UP</span><span class="o">,</span><span class="n">BROADCAST</span><span class="o">,</span><span class="n">RUNNING</span><span class="o">,</span><span class="n">SIMPLEX</span><span class="o">,</span><span class="n">MULTICAST</span><span class="o">&gt;</span> <span class="n">metric</span> <span class="mi">0</span> <span class="n">mtu</span> <span class="mi">1500</span>
    <span class="n">options</span><span class="o">=</span><span class="mi">209</span><span class="n">b</span><span class="o">&lt;</span><span class="n">RXCSUM</span><span class="o">,</span><span class="n">TXCSUM</span><span class="o">,</span><span class="n">VLAN_MTU</span><span class="o">,</span><span class="n">VLAN_HWTAGGING</span><span class="o">,</span><span class="n">VLAN_HWCSUM</span><span class="o">,</span><span class="n">WOL_MAGIC</span><span class="o">&gt;</span>
    <span class="n">ether</span> <span class="mi">52</span><span class="o">:</span><span class="mi">54</span><span class="o">:</span><span class="mi">00</span><span class="o">:</span><span class="mi">2</span><span class="n">f</span><span class="o">:</span><span class="n">a5</span><span class="o">:</span><span class="mi">55</span>
    <span class="n">inet</span> <span class="mf">10.99</span><span class="o">.</span><span class="mf">12.4</span> <span class="n">netmask</span> <span class="mh">0xffffffff</span> <span class="n">broadcast</span> <span class="mf">10.99</span><span class="o">.</span><span class="mf">12.4</span>
    <span class="n">media</span><span class="o">:</span> <span class="n">Ethernet</span> <span class="n">autoselect</span> <span class="o">(</span><span class="mi">1000</span><span class="n">baseT</span> <span class="o">&lt;</span><span class="n">full</span><span class="o">-</span><span class="n">duplex</span><span class="o">&gt;)</span>
    <span class="n">status</span><span class="o">:</span> <span class="n">active</span>
<span class="n">em2</span><span class="o">:</span> <span class="n">flags</span><span class="o">=</span><span class="mi">8843</span><span class="o">&lt;</span><span class="n">UP</span><span class="o">,</span><span class="n">BROADCAST</span><span class="o">,</span><span class="n">RUNNING</span><span class="o">,</span><span class="n">SIMPLEX</span><span class="o">,</span><span class="n">MULTICAST</span><span class="o">&gt;</span> <span class="n">metric</span> <span class="mi">0</span> <span class="n">mtu</span> <span class="mi">1500</span>
    <span class="n">options</span><span class="o">=</span><span class="mi">209</span><span class="n">b</span><span class="o">&lt;</span><span class="n">RXCSUM</span><span class="o">,</span><span class="n">TXCSUM</span><span class="o">,</span><span class="n">VLAN_MTU</span><span class="o">,</span><span class="n">VLAN_HWTAGGING</span><span class="o">,</span><span class="n">VLAN_HWCSUM</span><span class="o">,</span><span class="n">WOL_MAGIC</span><span class="o">&gt;</span>
    <span class="n">ether</span> <span class="mi">52</span><span class="o">:</span><span class="mi">54</span><span class="o">:</span><span class="mi">00</span><span class="o">:</span><span class="n">bb</span><span class="o">:</span><span class="n">b6</span><span class="o">:</span><span class="mi">43</span>
    <span class="n">inet</span> <span class="mf">10.99</span><span class="o">.</span><span class="mf">11.14</span> <span class="n">netmask</span> <span class="mh">0xffffffff</span> <span class="n">broadcast</span> <span class="mf">10.99</span><span class="o">.</span><span class="mf">11.14</span>
    <span class="n">media</span><span class="o">:</span> <span class="n">Ethernet</span> <span class="n">autoselect</span> <span class="o">(</span><span class="mi">1000</span><span class="n">baseT</span> <span class="o">&lt;</span><span class="n">full</span><span class="o">-</span><span class="n">duplex</span><span class="o">&gt;)</span>
    <span class="n">status</span><span class="o">:</span> <span class="n">active</span>
<span class="n">lo0</span><span class="o">:</span> <span class="n">flags</span><span class="o">=</span><span class="mi">8049</span><span class="o">&lt;</span><span class="n">UP</span><span class="o">,</span><span class="n">LOOPBACK</span><span class="o">,</span><span class="n">RUNNING</span><span class="o">,</span><span class="n">MULTICAST</span><span class="o">&gt;</span> <span class="n">metric</span> <span class="mi">0</span> <span class="n">mtu</span> <span class="mi">16384</span>
    <span class="n">options</span><span class="o">=</span><span class="mi">3</span><span class="o">&lt;</span><span class="n">RXCSUM</span><span class="o">,</span><span class="n">TXCSUM</span><span class="o">&gt;</span>
<span class="n">bridge0</span><span class="o">:</span> <span class="n">flags</span><span class="o">=</span><span class="mi">8843</span><span class="o">&lt;</span><span class="n">UP</span><span class="o">,</span><span class="n">BROADCAST</span><span class="o">,</span><span class="n">RUNNING</span><span class="o">,</span><span class="n">SIMPLEX</span><span class="o">,</span><span class="n">MULTICAST</span><span class="o">&gt;</span> <span class="n">metric</span> <span class="mi">0</span> <span class="n">mtu</span> <span class="mi">1500</span>
    <span class="n">ether</span> <span class="n">da</span><span class="o">:</span><span class="n">de</span><span class="o">:</span><span class="mi">63</span><span class="o">:</span><span class="n">c9</span><span class="o">:</span><span class="mi">55</span><span class="o">:</span><span class="mi">6</span><span class="n">c</span>
    <span class="n">inet</span> <span class="mf">10.0</span><span class="o">.</span><span class="mf">1.4</span> <span class="n">netmask</span> <span class="mh">0xffffffff</span> <span class="n">broadcast</span> <span class="mf">10.0</span><span class="o">.</span><span class="mf">1.4</span>
    <span class="n">id</span> <span class="mi">00</span><span class="o">:</span><span class="mi">00</span><span class="o">:</span><span class="mi">00</span><span class="o">:</span><span class="mi">00</span><span class="o">:</span><span class="mi">00</span><span class="o">:</span><span class="mi">00</span> <span class="n">priority</span> <span class="mi">32768</span> <span class="n">hellotime</span> <span class="mi">2</span> <span class="n">fwddelay</span> <span class="mi">15</span>
    <span class="n">maxage</span> <span class="mi">20</span> <span class="n">holdcnt</span> <span class="mi">6</span> <span class="n">proto</span> <span class="n">rstp</span> <span class="n">maxaddr</span> <span class="mi">100</span> <span class="n">timeout</span> <span class="mi">1200</span>
    <span class="n">root</span> <span class="n">id</span> <span class="mi">00</span><span class="o">:</span><span class="mi">00</span><span class="o">:</span><span class="mi">00</span><span class="o">:</span><span class="mi">00</span><span class="o">:</span><span class="mi">00</span><span class="o">:</span><span class="mi">00</span> <span class="n">priority</span> <span class="mi">32768</span> <span class="n">ifcost</span> <span class="mi">0</span> <span class="n">port</span> <span class="mi">0</span>
</pre></div>


<p>em0 doesn't have an address since that is our DHCP address, em1, em2 and
bridge0 all have IP addresses, in the jail configuration the bridge0 IP address
is listed first, and thus when something binds or sends it sends from that IP
address. The thing is that at this point the jail does not have internet
access.</p>
<p>Jail's inherit the routing table from their host environment (yes, you can
compile in more routing tables ... but I don't want to modify stock), any
traffic that goes to the outside is going to go out over the default route,
thing is you'd expect that traffic to show up on bridge0 where the IP address
exists, instead using tcpdump you see it show up on em0, which is where the
default route is. I would have expected having to do NAT on the bridge, not
just the external interface.</p>
<p>Here is the pf configuration.</p>
<div class="codehilite"><pre><span class="n">ext_if</span><span class="p">=</span>&quot;<span class="n">em0</span>&quot;
<span class="n">jail_if</span><span class="p">=</span>&quot;<span class="n">bridge0</span>&quot;

<span class="n">set</span> <span class="n">optimization</span> <span class="n">aggressive</span>
<span class="n">set</span> <span class="n">block</span><span class="o">-</span><span class="n">policy</span> <span class="n">drop</span>
<span class="n">set</span> <span class="n">skip</span> <span class="n">on</span> <span class="n">lo</span>

<span class="n">nat</span> <span class="n">on</span> $<span class="n">ext_if</span> <span class="n">from</span> $<span class="n">jail_if</span><span class="p">:</span><span class="n">network</span><span class="p">:</span>0 <span class="n">to</span> <span class="n">any</span> <span class="o">-&gt;</span> <span class="p">(</span>$<span class="n">ext_if</span><span class="p">)</span>

<span class="n">pass</span> <span class="n">quick</span> <span class="n">all</span>
</pre></div>


<p>And we've got internet within our jail. I am looking forward to setting this
all up when the new VIMAGE stuff lands in 9.0-RELEASE so that I can have
virtual network cards that are not tied to a physical network card!</p>]]></content:encoded>
    </item>
    <item>
      <title>StackOverflow and other StackExchange websites</title>
      <link>http://personal.x-istence.com/2011/01/05/stackoverflow-and-other-stackexchange-websites</link>
      <pubDate>Wed, 05 Jan 2011 21:46:20 MST</pubDate>
      <category><![CDATA[stackexchange]]></category>
      <category><![CDATA[stackoverflow]]></category>
      <guid isPermaLink="true">http://personal.x-istence.com/2011/01/05/stackoverflow-and-other-stackexchange-websites</guid>
      <description>StackOverflow and other StackExchange websites</description>
      <content:encoded><![CDATA[<p><a href="http://stackoverflow.com/">StackOverflow</a> and friends are question
and answer sites, StackOverflow specifically was created to edge out
Experts-Exchange (not linked on purpose) in <a
href="http://google.com/">Google</a> rankings for programmer questions,
specifically because Experts-Exchange likes to make their answer sites are
confusion as possible, with many different ads and hiding parts of questions
until you cough up a membership fee.</p>
<p>Overall StackOverflow has done an outstanding job in doing what their core
mission statement was when they started it, and recently has begun branching
out into various other territories using the brand name StackExchange. I am
very happy that these sites exist, and that they provide much better results
for the same questions.</p>
<p>Today I was reading a blog post created by <a
href="http://www.joelonsoftware.com/">Joel Spolsky</a>, titled "<a
href="http://blog.stackoverflow.com/2011/01/the-wikipedia-of-long-tail-programming-questions/">The
Wikipedia of Long Tail Programming Questions</a>", in it he brings up some core
features that StackOverflow supports, such as everyone editing community
questions at 100 rep, and editing any questions or answers at 2000 rep. Rep in
this case can be compared to karma on <a href="http://reddit.com/">Reddit</a>
or <a href="http://slashdot.org/">Slashdot</a>. Rep is earned by answering
questions accurately and having other users "upvote" your posts. Rep may also
be lost, but that is outside the scope of this discussion.</p>
<ul>
<li>Some of the suggestions that Joel makes are as follows: </li>
<li>Don't answer questions that have already been answered elsewhere.</li>
<li>If you're going to close a user's question as a duplicate, it has to be a real duplicate.</li>
<li>It is OK to edit a question to make it more general.</li>
<li>Help us build a great library of canonical answers.</li>
</ul>
<p>I agree with all of them except the first. Now, if you quickly take an
interlude from this blog and go check out my <a
href="http://stackoverflow.com/users/13986?tab=reputation">StackOverflow
profile page</a> you'd see that sometime in March (only for two days actually)
I suddenly became very active on StackOverflow answering a lot of questions and
helping many people, and gaining reputation rapidly. It was shortly thereafter
that I slowed down, mainly because the rate at which I was going was only
possible because I was on school break, and because I started working on some
new projects. Since then every so often when I stumble across a question I will
attempt to answer it.</p>
<p>In attempting to adhere to number one as outlined above I tend to do some
searches to see if maybe the question has already been answered elsewhere, and
also to adhere to number two it takes me at least a minute or two per question. </p>
<p>Then scenario one is as follows: During that time others are doing the same, or
maybe already know it is a duplicate and close the question (hopefully linking
to another question that it duplicates), those are two minutes I just spent
doing some research to provide a better answer that is then not necessarily
wasted, as generally I will learn a thing or two, but at the same time I wish
the submitter had searched for himself.</p>
<p>Scenario two is as follows: However if the topic is not closed, and is a fairly
simple question during the time that I am doing my duplicate search others will
have posted a one or two sentence reply that will somewhat help the author of
the question. Those will then get upvoted rapidly as people consider those easy
questions answered. At that point I will type out a full thoughtful reply that
will get ignored and will stick around at 0 upvotes as people don't tend to
come back into questions after it has already been answered a couple of times.</p>
<p>This has made me apprehensive of answering questions as they come up on
StackOverflow as generally those that I feel qualified to answer will get
glossed over and there is really no incentive for me to continue doing so
unless I go for the long tail (hope that within the next coming years people
find the reply through Google and upvote it then). I feel that the quality of
responses on StackOverflow has gone down mostly because you can get one or two
upvotes before scenario one plays out and the thread is closed. This means that
on duplicates it becomes who can quickly answer and post (hence the one or two
sentences) before the mods get around to it. While I really enjoy responding
and that should be enough to entice me to respond more, I feel like I am being
alienated by lesser quality posts that don't provide nearly the quality that I
have come to expect of StackOverflow.</p>
<p>The answers are starting to look more and more like those on Experts-Exchange,
the barrier to entry is very low on StackOverflow, mostly on purpose but I also
feel that it detracts from the quality the website is required to have to stay
useful in the foreseeable future.</p>
<p>One way I can see this being "fixed" is Slashdot style (for people who want to
"moderate"). On Slashdot before you get mod points you have to do a couple of
different tests to see if you are in-line with the majority, you get to see
comments and context and you have to decide what you'd moderate the comment. On
StackOverflow a newer user before being given the ability to upvote/downvote
answers would then have to first do a small test to see if they are able to
decide what is a good comment and what is a bad comment. Then when they start
posting other users will judge their replies, and if they are short and don't
contain a very good answer they are limited from posting replies in threads
that are newer than X minutes. This would give the power users that have earned
it the time to do the proper research, write out a good reply, or close the
thread as a duplicate without people being able to farm for karma by posting
two sentence replies that are completely useless.</p>
<p>Is this feasible to implement? I don't know. Would it provide a higher barrier
for entry, absolutely. I think that is a good thing. In closing, I would like
to state that I absolutely love the various StackExchange websites, and the
ease at which knowledge is now spread, but I have been becoming more and more
distanced from the website since the quality of answers went down tremendously,
and I am much less likely to spend time answering a question when it is already
saturated with one or two sentence answers thus having my quality answer sit at
the bottom of the list at 0 upvote points.</p>]]></content:encoded>
    </item>
    <item>
      <title>CSS 3 needs to be adopted now</title>
      <link>http://personal.x-istence.com/2010/04/25/css-3-needs-to-be-adopted-now</link>
      <pubDate>Sun, 25 Apr 2010 02:21:04 MDT</pubDate>
      <category><![CDATA[CSS3]]></category>
      <category><![CDATA[CSS]]></category>
      <guid isPermaLink="true">http://personal.x-istence.com/2010/04/25/css-3-needs-to-be-adopted-now</guid>
      <description>CSS 3 needs to be adopted now</description>
      <content:encoded><![CDATA[<p>This is a simple error that I ran into the past couple of days. I was not aware
that the width of an item was calculated as follows:</p>
<p>left border width + left margin + left padding + width + right padding + right
margin + right border width.</p>
<p>Well, that off course does not work well when you want to float two items next
to each other with the following:</p>
<div class="codehilite"><pre><span class="nf">#cont1</span> <span class="p">{</span> <span class="k">float</span><span class="o">:</span> <span class="k">left</span><span class="p">;</span> <span class="k">width</span><span class="o">:</span> <span class="m">75</span><span class="o">%</span><span class="p">;</span> <span class="k">border</span><span class="o">:</span> <span class="m">1px</span> <span class="k">solid</span> <span class="nb">black</span><span class="p">;</span> <span class="p">}</span>
<span class="nf">#cont2</span> <span class="p">{</span> <span class="k">float</span><span class="o">:</span> <span class="k">right</span><span class="p">;</span> <span class="k">width</span><span class="o">:</span> <span class="m">25</span><span class="o">%</span><span class="p">;</span> <span class="k">border</span><span class="o">:</span> <span class="m">0</span><span class="p">;</span> <span class="p">}</span>
</pre></div>


<p>These will not float next to each other since #cont1 is bigger than 75% meaning
that the other one being 25% gets pushed beneath it.</p>
<p>CSS3 fixes this with the <code>box-sizing: border-box;</code>, this property will make it
so that all of the padding, margins and borders are calculated within the
allocated width, that means a width of 75% means the entire element will be 75%
and everything else will be calculated within it.</p>
<p>You can use it now with the following snippet:</p>
<div class="codehilite"><pre><span class="nt">box-sizing</span><span class="o">:</span> <span class="nt">border-box</span><span class="o">;</span>

<span class="nt">-moz-box-sizing</span><span class="o">:</span> <span class="nt">border-box</span><span class="o">;</span>
<span class="nt">-webkit-box-sizing</span><span class="o">:</span> <span class="nt">border-box</span><span class="o">;</span>
</pre></div>


<p>However IE won't render the boxes correctly, nor will older versions of Safari,
Chrome, or FireFox. Until CSS3 is ratified and starts being accepted by all
major browsers without the browsers specific keywords it is not really that
useful. In my case I have reverted to the alternate version of using a wrapper
element that wraps around the element, and doesn't have margin, padding and a
border.</p>
<div class="codehilite"><pre><span class="nf">#cont1wrap</span> <span class="p">{</span> <span class="k">float</span><span class="o">:</span> <span class="k">left</span><span class="p">;</span> <span class="k">width</span><span class="o">:</span> <span class="m">75</span><span class="o">%</span><span class="p">;</span> <span class="k">border</span><span class="o">:</span> <span class="m">0</span><span class="p">;</span> <span class="k">margin</span><span class="o">:</span> <span class="m">0</span><span class="p">;</span> <span class="k">padding</span><span class="o">:</span> <span class="m">0</span><span class="p">;</span> <span class="p">}</span>
<span class="nf">#cont1</span> <span class="p">{</span> <span class="k">border</span><span class="o">:</span> <span class="m">1px</span> <span class="k">solid</span> <span class="nb">black</span><span class="p">;</span> <span class="p">}</span>
<span class="nf">#cont2wrap</span> <span class="p">{</span> <span class="k">float</span><span class="o">:</span> <span class="k">right</span><span class="p">;</span> <span class="k">width</span><span class="o">:</span> <span class="m">25</span><span class="o">%</span><span class="p">;</span> <span class="k">border</span><span class="o">:</span> <span class="m">0</span><span class="p">;</span> <span class="k">margin</span><span class="o">:</span> <span class="m">0</span><span class="p">;</span> <span class="k">padding</span><span class="o">:</span> <span class="m">0</span><span class="p">;</span> <span class="p">}</span>
<span class="nf">#cont2</span> <span class="p">{</span> <span class="k">padding</span><span class="o">:</span> <span class="m">10px</span><span class="p">;</span> <span class="k">border</span><span class="o">:</span> <span class="m">0</span><span class="p">;</span> <span class="p">}</span>
</pre></div>


<p>It does mean that you need twice the amount of tags in HTML, one with an id of
<code>#cont1wrap</code> and another inside of that with an id of <code>#cont1</code>, same with
<code>#cont2</code>.  Not an ideal solution but until CSS3 is made the new king of layout
it is the only choice we have that is mostly compliant with most browsers.</p>]]></content:encoded>
    </item>
    <item>
      <title>Jamie Oliver's Food Revolution</title>
      <link>http://personal.x-istence.com/2010/03/27/jamie-olivers-food-revolution</link>
      <pubDate>Sat, 27 Mar 2010 09:22:48 MDT</pubDate>
      <category><![CDATA[personal]]></category>
      <category><![CDATA[ideas]]></category>
      <guid isPermaLink="true">http://personal.x-istence.com/2010/03/27/jamie-olivers-food-revolution</guid>
      <description>Jamie Oliver's Food Revolution</description>
      <content:encoded><![CDATA[<p>Jamie Oliver, also known as the Naked Chef is a well known british chef that
has done several different TV programs as well as written some excellent
cookbooks. He was able to start a revolution in his home country to get the
school menu changed so that kids are eating healthier food, and thus grow up to
be healthier kids.</p>
<p>He has taken this message to Huntington, West Virginia where he was met with
resistance and close minded people who did not want to make a change because of
how it had been done for years. Jamie kept going even with the amount of
resistance, he persevered and after just two episodes of his new TV show  "<a
href="http://www.hulu.com/jamie-olivers-food-revolution">Jamie Oliver's Food
Revolution</a>" available on <a
href="http://www.hulu.com/jamie-olivers-food-revolution">Hulu (watch the
episodes)</a>.</p>
<p>He was also recently awarded a <a
href="http://www.ted.com/talks/jamie_oliver.html">TED prize wish</a>, to teach
every child about food, where he discusses some of the things he encountered in
his first episode of the TV show.</p>
<p>Jamie has a <a
href="http://www.jamieoliver.com/campaigns/jamies-food-revolution/petition">petition</a>
available on his website, and I urge you to go sign it to show support for not
just a healthier United States, but World in general. Teaching people how to
cook for themselves is an absolute must, having people learn how to take care
of themselves, what goes into their food, and what goes into their bodies.</p>
<p>I'll be the first to admit that I am not the healthiest person, and yes the
first two episodes of the show hit close to home, I don't always eat the
healthiest food I can find, especially since I don't always like cooking for
myself, and fast food is so much, faster and easier.</p>
<p>My wish is for Jamie to succeed in helping change the way the United States
looks at food and what is acceptable for people to put into their bodies.
Getting rid of even 10% of all processed food will make the United States a
healthier place to live and eat, and will lower healthcare costs in the long
run as less people will need medicine and medical procedures to help them stay
alive because of the amount of grease in their arteries.</p>
<p>Once again, I urge you to please <a
href="http://www.jamieoliver.com/campaigns/jamies-food-revolution/petition">go
sign the petition</a>, watch the <a
href="http://www.ted.com/talks/jamie_oliver.html">TED prize wish</a>, and watch
the <a href="http://www.hulu.com/jamie-olivers-food-revolution">TV show</a>.
And if you too, are in the same boat I am in, start making a positive change in
your life.</p>]]></content:encoded>
    </item>
    <item>
      <title>NetBeans why do you disable Save?</title>
      <link>http://personal.x-istence.com/2010/03/27/netbeans-why-do-you-disable-save-</link>
      <pubDate>Sat, 27 Mar 2010 06:40:23 MDT</pubDate>
      <category><![CDATA[PHP]]></category>
      <category><![CDATA[issues]]></category>
      <category><![CDATA[NetBeans]]></category>
      <guid isPermaLink="true">http://personal.x-istence.com/2010/03/27/netbeans-why-do-you-disable-save-</guid>
      <description>NetBeans why do you disable Save?</description>
      <content:encoded><![CDATA[<p>I've started programming in PHP again for a new project I've taken up, and I've
found that NetBeans upon noticing that the file has already been saved will
disable the Save function. This is also disables the ?+S to save the file,
which means when I am sitting there thinking, and I mindlessly tap the
key-combo it makes my computer "ding" which is the default system beep sound.</p>
<p>It is my hope that eventually they fix it and just leave the save function
enabled and if the file doesn't need saving they don't save it. That way my I
don't have to listen to "ding" thereby breaking my concentration.</p>]]></content:encoded>
    </item>
    <item>
      <title>IE 6 and 7</title>
      <link>http://personal.x-istence.com/2010/03/08/ie-6-and-7</link>
      <pubDate>Mon, 08 Mar 2010 01:31:23 MST</pubDate>
      <category><![CDATA[Internet Explorer]]></category>
      <category><![CDATA[programming]]></category>
      <category><![CDATA[CSS]]></category>
      <category><![CDATA[web design]]></category>
      <guid isPermaLink="true">http://personal.x-istence.com/2010/03/08/ie-6-and-7</guid>
      <description>IE 6 and 7</description>
      <content:encoded><![CDATA[<p>I made a quick and simple decision which has already helped lift a weight off
my shoulders. I have decided from this day on forward I will refuse to make my
websites look and function right in IE 6 and IE 7. <a
href="http://dean.edwards.name/weblog/">Dean Edwards</a> has created a
JavaScript that will attempt to fix IE 6 as much as humanly possible, forcing
it to render everything correctly. It used to be known as IE 7, but he has
recently released his latest version IE9.js which attempts to fix even some
flaws that IE 8 has, while I am not yet ready to drop support for IE 8, I have
enabled the latest and greatest version of this JavaScript so on any IE less
than 9 the JavaScript will run.</p>
<p>To see everything that IE9.js supports visit the <a
href="http://ie7-js.googlecode.com/svn/test/index.html">IE7.js Test Pages</a>
list and take your pick. The work that Dean has done is absolutely amazing and
I am very happy that because of him I don't really have to worry about my
websites in older versions of non-standards compliant browsers.</p>
<p>Even <a href="http://microsoft.com/">Microsoft</a> sent <a
href="http://blog.seattlepi.com/microsoft/archives/196608.asp">flowers to the
fake IE6 funeral</a> with a note saying that we should stay tuned till this
years upcoming MIX conference. I hope they say they are support HTML 5 and CSS
3 as that would be simply amazing. Maybe, just maybe they are switching from
the old Trident based rendering engine to something more modern.</p>
<p>While I may dislike IE 6 and 7, I won't yet go so far as to put up a message
just yet stating that people should get a better browser, I am removing a lot
of stress and work in that I no longer have to support the old ageing browser.</p>]]></content:encoded>
    </item>
  </channel>
</rss>
