<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The life and times of Jeffrey Forman. &#187; General</title>
	<atom:link href="http://blog.jeffreyforman.net/category/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jeffreyforman.net</link>
	<description>That&#039;s my story, and I&#039;m sticking to it.</description>
	<lastBuildDate>Sat, 23 Apr 2011 20:13:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Remind Me: Adding SNMP mibs for querying</title>
		<link>http://blog.jeffreyforman.net/2011/03/06/remind-me-adding-snmp-mibs-for-querying/</link>
		<comments>http://blog.jeffreyforman.net/2011/03/06/remind-me-adding-snmp-mibs-for-querying/#comments</comments>
		<pubDate>Sun, 06 Mar 2011 18:18:20 +0000</pubDate>
		<dc:creator>Jeff Forman</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[apc]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[snmp]]></category>
		<category><![CDATA[ups]]></category>

		<guid isPermaLink="false">http://blog.jeffreyforman.net/?p=570</guid>
		<description><![CDATA[I was having issues trying to get Nagios to more easily query my APC UPS with the APC-provided MIB. It took me a while to figure out the right bits both on the file system and in my query to &#8230; <a href="http://blog.jeffreyforman.net/2011/03/06/remind-me-adding-snmp-mibs-for-querying/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was having issues trying to get Nagios to more easily query my APC UPS with the APC-provided MIB. It took me a while to figure out the right bits both on the file system and in my query to have the MIB &#8216;processed.&#8217; I still don&#8217;t know how to add that MIB to the &#8220;automatically process me too if snmpwalk is run&#8221; piece of the puzzle.</p>
<p>But for what I have running a home, some notes for myself and others who ripped out enough hair already.</p>
<pre class="brush: bash; title: ; notranslate">
jforman@monitor:/usr/share/snmp/mibs$ ls
powernet401.mib

jforman@monitor:~$ cat /etc/snmp/snmp.conf
mibs +PowerNet-MIB

jforman@monitor:/usr/share/snmp/mibs$ snmpwalk -v1 -c snmpcommunity ups1 apc
PowerNet-MIB::upsBasicIdentModel.0 = STRING: &quot;SMART-UPS 700&quot;
PowerNet-MIB::upsBasicIdentName.0 = STRING: &quot;ups1&quot;
PowerNet-MIB::upsAdvIdentFirmwareRevision.0 = STRING: &quot;50.14.D&quot;
.....
</pre>
<p>Relevant Nagios configs:</p>
<pre class="brush: plain; title: ; notranslate">
define service {
       use                              generic-service
       check_command                    snmp_apcups_batterystatus!snmpcommunity
       service_description              UPS Battery Status
       host_name                        ups1
}

define command {
       # OID corresponds to: PowerNet-MIB::upsBasicBatteryStatus.0
       command_name      snmp_apcups_batterystatus
       command_line      /usr/lib/nagios/plugins/check_snmp -H '$HOSTADDRESS$' -C '$ARG1$' -o upsBasicBatteryStatus.0 -s &quot;batteryNormal(2)&quot;
}
</pre>
<p>Help and inspiration courtesy of <a href="http://www.cuddletech.com/articles/snmp/node13.html">http://www.cuddletech.com/articles/snmp/node13.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jeffreyforman.net/2011/03/06/remind-me-adding-snmp-mibs-for-querying/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Howto: Git, hooks, Nagios, oh my.</title>
		<link>http://blog.jeffreyforman.net/2010/11/16/howto-git-hooks-nagios-oh-my/</link>
		<comments>http://blog.jeffreyforman.net/2010/11/16/howto-git-hooks-nagios-oh-my/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 03:35:11 +0000</pubDate>
		<dc:creator>Jeff Forman</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Open Source/Internet]]></category>

		<guid isPermaLink="false">http://blog.jeffreyforman.net/?p=424</guid>
		<description><![CDATA[At work we have a monitoring configuration workflow where our Nagios config files are parsed and generated before they are allowed to be &#8216;svn commit&#8217;ed. I know this verification has saved me many times when trying to add new hosts &#8230; <a href="http://blog.jeffreyforman.net/2010/11/16/howto-git-hooks-nagios-oh-my/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>At work we have a monitoring configuration workflow where our Nagios config files are parsed and generated before they are allowed to be &#8216;svn commit&#8217;ed. I know this verification has saved me many times when trying to add new hosts or services, since everything might not be ready for prime time. I wanted to see if I could recreate this scenario at home using Git hooks, if only for my own interest and curiosity.</p>
<p>My proposed workflow: Start with a local clone of the Nagios configs. Add a host,  service, or contact to a local nagios Config file. Git commit locally. Git push to the remote repo on the monitoring box. The Nagios config parser would run remotely verifying the syntactic-correctness of the proposed-check in. If these checks fail, reject the push. If parsing succeeds, accept the push, and restart Nagios (hence reloading the new configs). I wanted to alleviate the need for an admin to log into the monitoring machine at all. This would eliminate the need to add sudo permissions to a group of users to allow them to restart the Nagios service.</p>
<p>Without further delay, on to the code. The first piece, was the pre-receive hook with Git. I used this hook specifically because it has the power to accept or reject a push.</p>
<p>Behold, $git_repo/.hooks/pre-receive:</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash
while read OLD_SHA1 NEW_SHA1 REFNAME; do
 export GIT_WORK_TREE=/tmp/nagiosworkdir
 /usr/bin/git checkout -f $NEW_SHA1
 sed -i &quot;s|cfg_dir=CHANGEWITHGIT|cfg_dir=${GIT_WORK_TREE}\/config|g&quot; $GIT_WORK_TREE/nagios.cfg
 sudo -u root /bin/chgrp -R nagios $GIT_WORK_TREE
 sudo -u root /usr/sbin/nagios3 -v $GIT_WORK_TREE/nagios.cfg &gt; $GIT_WORK_TREE/check.out
 NAGIOS_CHECK_STATUS=$?
 echo &quot;Nagios Config Check Exit Status:&quot; $NAGIOS_CHECK_STATUS
 if [ &quot;$NAGIOS_CHECK_STATUS&quot; -ne 0 ]
   then
   echo &quot;Your configs did not parse correctly, there was an error. Output follows.&quot;
   cat $GIT_WORK_TREE/check.out
   exit 1
 else
   echo &quot;Your configs look good and parsed correctly.&quot;
   exit 0
 fi
done
</pre>
<p>The operations here flow from checking out the pending push to a &#8216;temporary directory&#8217; (explained below), and then making a slight modification to the nagios.cfg to handle our temp configs being somewhere other than the Nagios install directory. This is needed since we want to parse our configs, and not the ones currently in-use on the machine. After this is done, we parse the output of that check, and based upon that output, either accept or reject the push. In the case of a rejection, the output of the verification is printed for the user to see. This output is pretty clear when explaining where the error is.</p>
<p>And now the post-receive:</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash
cd /etc/nagios3/testing
/usr/bin/env -i /usr/bin/git pull
echo &quot;Restarting Nagios now&quot;
sudo -u root /usr/sbin/service nagios3 restart
</pre>
<p>The post-receive happens after the entire process is done [1]. We change into the directory of the Git clone of your monitoring config repository. which itself is inside /etc/nagios3, and execute a &#8216;git pull.&#8217; The need to wrap it around &#8216;env&#8217; is because of an issue I also learned in this process. [2] The GIT_DIR directory is set to the directory of your repository. In this case, we must change to another directory on this machine, which is outside of our initial Git repo. Therefore we must &#8216;unset&#8217; this variable, which is what the &#8216;env&#8217; execution does.</p>
<p>This is pretty straightforward for the most part. The part of the process new to me was the GIT_WORK_TREE. I received a a pretty simple explanation from the <a href="https://github.com/sitaramc/gitolite">author of Gitolite</a>. He explained that the work tree directory is a directory where the potential new commit can be checked out before it is actually allowed to be pushed into the remote repository. Essentially, the opposite of a bare repository. The reason I do this is because I want to do the parsing check before I actually allow the push. I can&#8217;t &#8216;git pull&#8217; the new repository directly into the Nagios configuration directory before it is actually committed. GIT_WORK_TREE allows this intermediary functionality.</p>
<p>The reasoning for the &#8216;sed&#8217; modification in that file is that since I will be checking-out the intermediary files into a new directory, I need a Nagios config file that references this intermediary directory. How did I get around this? I copied the nagios.cfg file I would run my install with into the repo, and changed the cfg_dir directory to something I can easily modify during the check in (cfg_dir=CHANGEWITHGIT). This file is not expected to be used on the actual server, so do not copy this one over your actual Nagios.cfg file.</p>
<p>The chgrp magic is because the user who runs the Nagios application must have read access to the configuration files.</p>
<p>Relevant sudoers lines needed:</p>
<pre class="brush: plain; title: ; notranslate">
git ALL=(ALL) NOPASSWD: /bin/chgrp -R nagios /tmp/nagiosworkdir
git ALL=(ALL) NOPASSWD: /usr/sbin/nagios3 -v /tmp/nagiosworkdir/nagios.cfg
git ALL=(ALL) NOPASSWD: /usr/sbin/service nagios3 restart
</pre>
<p>The three lines above are as such. (1) Allow the git user to, without a password, change the group of the temporary Nagios work dir. (2) Allow the git user to, without password, run the verification of the to-be-committed files. (3) Actually restart the Nagios service.</p>
<p>A successful commit, including a restart of Nagios looks like the following:</p>
<pre class="brush: plain; title: ; notranslate">
jforman@merlot:~/devel/testing/config$ git commit . &amp;&amp; git push
[master 2f796e3] testing for the blog post
 1 files changed, 1 insertions(+), 1 deletions(-)
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 394 bytes, done.
Total 4 (delta 2), reused 0 (delta 0)
remote: Previous HEAD position was ca6dd74... fix now
remote: HEAD is now at 2f796e3... testing for the blog post
remote: Nagios Config Check Exit Status: 0
remote: Your configs look good and parsed correctly.
remote: From /home/git/repositories/testing
remote:    ca6dd74..2f796e3  master     -&gt; origin/master
remote: Updating ca6dd74..2f796e3
remote: Fast-forward
remote:  config/contacts_nagios2.cfg |    2 +-
remote:  1 files changed, 1 insertions(+), 1 deletions(-)
remote: Restarting Nagios now
remote:  * Restarting nagios3 monitoring daemon nagios3
remote:
remote:    ...done.
To git@monitor:testing.git
   ca6dd74..2f796e3  master -&gt; master
</pre>
<p>This was definitely an eye-opening learning process for me into all the moving parts of Git. I hope this Howto helps those out there looking for a solution like this. Enjoy!</p>
<p>Addendum:</p>
<p>For those wondering about the various permissions of the git_work_tree directory and also the repo checkout inside /etc/Nagios3:</p>
<p>monitor:/tmp/nagiosworkdir</p>
<pre class="brush: plain; title: ; notranslate">
drwxrwxr-x  3 git  nagios  4096 2010-11-16 16:13 nagiosworkdir
</pre>
<p>monitor:/etc/nagios3/testing</p>
<pre class="brush: plain; title: ; notranslate">
drwxr-xr-x  4 git  nagios  4096 2010-11-15 08:36 testing
</pre>
<p>[1] <a href="http://progit.org/book/ch7-3.html">http://progit.org/book/ch7-3.html</a></p>
<p>[2] <a href="http://debuggable.com/posts/git-tip-auto-update-working-tree-via-post-receive-hook:49551efe-6414-4e86-aec6-544f4834cda3">http://debuggable.com/posts/git-tip-auto-update-working-tree-via-post-receive-hook:49551efe-6414-4e86-aec6-544f4834cda3</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jeffreyforman.net/2010/11/16/howto-git-hooks-nagios-oh-my/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Network printing at home, over-engineered.</title>
		<link>http://blog.jeffreyforman.net/2010/09/26/network-printing-at-home-over-engineered/</link>
		<comments>http://blog.jeffreyforman.net/2010/09/26/network-printing-at-home-over-engineered/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 00:52:11 +0000</pubDate>
		<dc:creator>Jeff Forman</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Open Source/Internet]]></category>

		<guid isPermaLink="false">http://blog.jeffreyforman.net/?p=393</guid>
		<description><![CDATA[Compared to most other home networks, mine is a bit more complicated. I admit networking has always been an interest of mine, so I run my own OpenBSD firewall/router/vpn-endpoint, which itself runs the ISC Dhcpd v3 and BIND. With these &#8230; <a href="http://blog.jeffreyforman.net/2010/09/26/network-printing-at-home-over-engineered/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Compared to most other home networks, mine is a bit more complicated. I admit networking has always been an interest of mine, so I run my own OpenBSD firewall/router/vpn-endpoint, which itself runs the ISC Dhcpd v3 and BIND. With these together, I am able to run dynamic DNS. But some background first.</p>
<p>Insert my 11-year old <a href="http://h10010.www1.hp.com/wwpc/us/en/sm/WF10a/18972-18972-3328059-14638-3328069-25469.html?jumpid=reg_R1002_USEN">HP2100m</a> printer that I have outfitted with an <a href="http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=bpj06555&amp;locale=en_US&amp;taskId=115&amp;prodSeriesId=27347&amp;prodTypeId=18972">HP Jetdirect 610N 10/100 internal print server</a>. This allows me to stick this printer on my network and print away, no intermediary required. What does this save? The printer is not tied to one computer&#8217;s parallel/USB port. I can shut off my main desktop, and still print over the network.</p>
<p>The next problem: Who wants to print to 10.10.0.205? Hard coding an IP address into the printer config is just asking for bad news, especially with DHCP involved. Better yet, if I shut off the printer for a week, its DHCP lease could expire, and upon restarting the printer, it could grab 10.10.0.215. Now I have to go around and fix my printer config, my wife&#8217;s, and all the other devices.</p>
<p>Enter dynamic DNS:</p>
<p>Snippet from /etc/dhcpd.conf:</p>
<pre class="brush: bash; title: ; notranslate">
# Dynamic Updates
ddns-updates on;
ddns-update-style interim;

host hp2100m {
    hardware ethernet 00:01:e6:23:df:4f;
    ddns-hostname &quot;hp2100m&quot;;
}
</pre>
<p>Here we see I have specified the MAC address of the print server and the dynamic dns host name. According to <a href="http://www.semicomplete.com/articles/dynamic-dns-with-dhcp/">the page which I stole most of the information from</a>, you can specify a ddns-domain-name as well. When trying to do that, I recieved the following error:</p>
<pre class="brush: bash; title: ; notranslate">
/etc/dhcpd.conf line 60: semicolon expected.
ddns-domain-name &quot;home.jeffreyforman.net&quot;
</pre>
<p>Even with the semicolons present, I still need to tinker around with that line and figure out why I can&#8217;t set the domain name explicitly. I can only assume the domain name is deduced according to the layer 3 subnet which the printer is on.</p>
<p>Now you need the BIND configuration from <em>named.conf</em></p>
<pre class="brush: plain; title: ; notranslate">
zone &quot;home.jeffreyforman.net&quot; IN {
 type master;
 file &quot;master/db.home.jeffreyforman.net&quot;;
 allow-update { key &quot;ddns-key&quot;; };
};

zone &quot;0.10.10.in-addr.arpa&quot; IN {
 type master;
 file &quot;master/db.10.10.0&quot;;
 allow-update { key &quot;ddns-key&quot;; };
};
</pre>
<p>These are the forward and reverse DNS respectively. Using a shared key, this enables only the allowed DHCPd to enable DNS records on this particular BIND server.</p>
<p>Snippet from daemon log:</p>
<pre class="brush: plain; title: ; notranslate">
Sep 24 08:29:12 formangate dhcpd: DHCPDISCOVER from 00:01:e6:23:df:4f via vr1
Sep 24 08:29:13 formangate dhcpd: DHCPOFFER on 10.10.0.205 to 00:01:e6:23:df:4f (hp2100m) via vr1
Sep 24 08:29:18 formangate dhcpd: Added new forward map from hp2100m.home.jeffreyforman.net to 10.10.0.205
Sep 24 08:29:18 formangate dhcpd: added reverse map from 205.0.10.10.in-addr.arpa to hp2100m.home.jeffreyforman.net
Sep 24 08:29:18 formangate dhcpd: DHCPREQUEST for 10.10.0.205 (10.10.0.1) from 00:01:e6:23:df:4f (hp2100m) via vr1
Sep 24 08:29:18 formangate dhcpd: DHCPACK on 10.10.0.205 to 00:01:e6:23:df:4f (hp2100m) via vr1
</pre>
<p>This shows the DHCP server interacting with the printer, and then sending the new forward and reverse DNS mappings to the DNS server.</p>
<p>I can now ping hp2100m from machines at home, and configure all printing to use that hostname, no matter what IP address it points to.</p>
<pre class="brush: plain; title: ; notranslate">
jforman@server1f:~$ ping hp2100m
PING hp2100m.home.jeffreyforman.net (10.10.0.205) 56(84) bytes of data.
64 bytes from hp2100m.home.jeffreyforman.net (10.10.0.205): icmp_seq=1 ttl=64 time=5.69 ms
</pre>
<p><em>*Note: The configuration snippets above are not complete, and will require other information to complete this roll out and enable Dynamic DNS.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jeffreyforman.net/2010/09/26/network-printing-at-home-over-engineered/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing wp-&gt;twitter oath</title>
		<link>http://blog.jeffreyforman.net/2010/09/24/testing-wp-twitter-oath/</link>
		<comments>http://blog.jeffreyforman.net/2010/09/24/testing-wp-twitter-oath/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 12:46:30 +0000</pubDate>
		<dc:creator>Jeff Forman</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.jeffreyforman.net/?p=390</guid>
		<description><![CDATA[Is this new oAuth thing the apocalypse we all predicted?]]></description>
			<content:encoded><![CDATA[<p>Is this new oAuth thing the apocalypse we all predicted?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jeffreyforman.net/2010/09/24/testing-wp-twitter-oath/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New and Shiny &#8211; Comcast IPv6</title>
		<link>http://blog.jeffreyforman.net/2010/07/25/new-and-shiny-comcast-ipv6/</link>
		<comments>http://blog.jeffreyforman.net/2010/07/25/new-and-shiny-comcast-ipv6/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 02:13:52 +0000</pubDate>
		<dc:creator>Jeff Forman</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Open Source/Internet]]></category>

		<guid isPermaLink="false">http://blog.jeffreyforman.net/?p=373</guid>
		<description><![CDATA[A few months ago Comcast began publicizing their IPv6 trials for their customers. For those who don&#8217;t have a lot of spare time, IPv6 is the next addressing system for the Internet. Currently IPv4 is the predominant addressing system, akin &#8230; <a href="http://blog.jeffreyforman.net/2010/07/25/new-and-shiny-comcast-ipv6/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A few months ago <a href="http://www.comcast.net">Comcast</a> began publicizing their <a href="http://www.comcast6.net">IPv6 trials</a> for their customers. For those who don&#8217;t have a lot of spare time, <a href="http://en.wikipedia.org/wiki/IPv6">IPv6</a> is the next addressing system for the Internet. Currently <a href="http://en.wikipedia.org/wiki/IPv4">IPv4</a> is the predominant addressing system, akin to a phone number. With the growing number of people using the global Internet, these numbers are bound to run out. Various predictions have put this exhaustion anywhere from tomorrow to a hundred years from now for that Internet-apocalypse to arrive. IPv6 among other things, offers a near limit-less number of addresses (2^128 for the curious).</p>
<p>Comcast, loved or hated, started IPv6 trials on their own network, turning up customers on their (trial?) IPv6 network. Since IPv6 is not in widespread use today, and not all destinations on the Internet can handle v6 requests, there are several stop-gap solutions. One of them is IPv6 6RD, where RD stands for &#8220;Rapid deployment.&#8221; From my little understanding, this allows Comcast customers to encapsulate v6 traffic inside v4 packets through Comcast&#8217;s network to the IPv6-enabled destinations.</p>
<p>Without further wait, this is how I did it (save the several weeks of headbanging frustration that ensued):</p>
<p>Comcast provides their customers with some network addressing information:</p>
<pre class="brush: plain; title: ; notranslate">
IPv6 prefix = 2001:55c::/32
6rd BR FQDN = 6rd.comcast.net
IPv4 prefix length = 0&lt;/pre&gt;
</pre>
<p>Having only a very cursory knowledge of IPv6 addressing, I stumbled my way through the configuration. The IPv6 prefix is used to determine the breadth of Comcast&#8217;s v6 network, which octets are network bits, and what bits are host bits. The BR FQDN (border router, fully qualified domain name) is the IPv4 hostname for the gateway in which my firewall will connect to reach the &#8220;v6 Internet.&#8221; IPv6 packets are encapsulated inside v4 packets, and passed through this border router for further transit.</p>
<p>On to the configuration. First off, I use <a href="http://www.openbsd.org">OpenBSD</a> 4.7 on my firewall/router. It runs on a <a href="http://www.netgate.com/product_info.php?cPath=60_88&amp;products_id=650">little embedded box</a>, using <a href="http://openbsd.org/faq/pf/index.html">pf</a> as the firewall packet filter.</p>
<p>First we must set some system variables via sysctl (via command line and commit to /etc/sysctl.conf):</p>
<pre class="brush: plain; title: ; notranslate">
net.inet6.ip6.accept_rtadv=0
net.inet6.ip6.forwarding=0
</pre>
<p>These two variables tell your machine not to accept router advertisements (don&#8217;t act like a DHCP client accepting network configuration), and the second one tells your machine not to forward IPv6 packets. v6 unlike v4, for the most part, obviates the need for NAT. Therefore if this value were &#8217;1&#8242;, you would be forwarding v6 traffic from the external Internet to all v6-enabled devices on your home network. Unless you really intend to open up your home network to the entire Internet, keep this value as 0 for now.</p>
<p>I created a little shell script that creates the tunnel interface (gif0), and then configures the interface and default routes.</p>
<pre class="brush: plain; title: ; notranslate">
#!/bin/sh -x
WANIP=`ifconfig vr0 | grep -v inet6 | grep inet | awk '{print $2}'`
HOSTRD=`host 6rd.comcast.net | awk '{print $4}'`
V6PREFIX=`printf '%02x%02x:%02x%02x' $(echo $WANIP | tr . ' ')`
ifconfig gif0 destroy
ifconfig gif0 create
ifconfig gif0 tunnel ${WANIP} ${HOSTRD}
ifconfig gif0 inet6 2001:55c:${V6PREFIX}::1 prefixlen 32
ifconfig gif0 up
route -n add -inet6 default ::1 -ifp gif0
</pre>
<p>The nasty bits are mostly in the first three variables.<br />
<em>WANIP</em> is the external IPv4 IP of my firewall<br />
<em>HOSTRD</em> is the IPv4 IP of Comcast&#8217;s IPv6 border router<br />
<em>V6PREFIX</em>: This takes WANIP and converts the IP into its hexadecimal equivalent. This is the format used in IPv6 addresses, and will make up the rest of my personal IPv6 prefix.</p>
<p>Most of the script is self explanatory, and large chunks are stolen from others on the Comcast IPv6 message boards. I have set my external IPv6 tunnel interface to $prefix::1, and set the route for all IPv6 traffic to go out over the gif0 tunnel interface.</p>
<p>At this point, if pf is disabled (therefore allowing all packets through to your machine), you should be able to ping6/traceroute6 to various IPv6-enabled Internet sites. These include ipv6.google.com, www.kame.net and ipv6.comcast.net.</p>
<pre class="brush: plain; title: ; notranslate">
# traceroute6 ipv6.google.com
traceroute6: Warning: ipv6.l.google.com has multiple addresses; using 2001:4860:800f::63
traceroute6 to ipv6.l.google.com (2001:4860:800f::63) from 2001:55c:MY:PREFIX::1, 64 hops max, 12 byte packets
1  2001:55c:MY:PREFIX::1  21.491 ms  19.103 ms  22.759 ms
2  2001:558:e0:52::1  20.734 ms  19.227 ms  16.623 ms
3  2001:558:e0:24::1  17.903 ms  18.821 ms  19.193 ms
4  te-0-3-0-4-cr01.newyork.ny.ibone.comcast.net  21.704 ms  23.512 ms  24.715 ms
5  pos-1-12-0-0-cr01.mclean.va.ibone.comcast.net  27.821 ms  41.616 ms  31.4 ms
6  pos-0-3-0-0-pe01.ashburn.va.ibone.comcast.net  25.451 ms  34.823 ms  25.43 ms
7  2001:558:0:f749::2  29.801 ms  39.119 ms  33.211 ms
8  Vlan22.icore1.AEQ-Ashburn.ipv6.as6453.net  34.592 ms  36.29 ms  33.039 ms
9  pr61.iad07.net.google.com  34.766 ms  34.493 ms  39.389 ms
10  2001:4860::1:0:9ff  34.941 ms  35.911 ms  32.12 ms
11  2001:4860:0:1::149  37.298 ms 2001:4860:0:1::14b  48.993 ms 2001:4860:0:1::149  37.446 ms
12  iad04s01-in-x63.1e100.net  36.593 ms  31.367 ms  33.089 ms&lt;/pre&gt;
</pre>
<p>This post only involves getting your gateway machine speaking IPv6. I have been able to wire up the rest of my internal LAN using <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=rtadvd&amp;sektion=8">rtadvd</a>, and allow them IPv6 access. There are a lot more pieces here, including rtadvd and packet filtering that I don&#8217;t quite fully understand yet how they all interact, and will require another post.</p>
<p><strong>Added update</strong><br />
To use tcpdump to watch IPv6 traffic: <code>tcpdump -i $interface ip6 </code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jeffreyforman.net/2010/07/25/new-and-shiny-comcast-ipv6/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Find, you are a dirty mistress</title>
		<link>http://blog.jeffreyforman.net/2010/05/14/find-you-are-a-dirty-mistress/</link>
		<comments>http://blog.jeffreyforman.net/2010/05/14/find-you-are-a-dirty-mistress/#comments</comments>
		<pubDate>Fri, 14 May 2010 17:42:30 +0000</pubDate>
		<dc:creator>Jeff Forman</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://blog.jeffreyforman.net/2010/05/14/find-you-are-a-dirty-mistress/</guid>
		<description><![CDATA[In my latest task at work, I have to write a script to take the most recent file from a particular directory changed within the last 240 minutes and copy it to a particular dated directory, in YYYYMMDDHHMM style. After &#8230; <a href="http://blog.jeffreyforman.net/2010/05/14/find-you-are-a-dirty-mistress/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In my latest task at work, I have to write a script to take the most recent file from a particular directory changed within the last 240 minutes and copy it to a particular dated directory, in YYYYMMDDHHMM style.</p>
<p>After some digging in the &#8216;find&#8217; manual page and bothering a co-worker I present:</p>
<p>find $directory -mmin -240 -name &#8216;foobarstring&#8217; -printf &#8220;%p\n%CY%Cm%Cd%CH%CM\n&#8221;</p>
<p>This prints out on two successive lines:<br />
$(filename)<br />
$(dated string in the date format above)</p>
<p>The hardest part was getting the printf syntax right. When it works, it just works.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jeffreyforman.net/2010/05/14/find-you-are-a-dirty-mistress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wine Riot 2010</title>
		<link>http://blog.jeffreyforman.net/2010/04/26/wine-riot-2010/</link>
		<comments>http://blog.jeffreyforman.net/2010/04/26/wine-riot-2010/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 17:26:39 +0000</pubDate>
		<dc:creator>Jeff Forman</dc:creator>
				<category><![CDATA[Boston]]></category>
		<category><![CDATA[Food]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.jeffreyforman.net/?p=351</guid>
		<description><![CDATA[I have been meaning to write this post for a few weeks, both as a recap of the event, and as a reminder to myself of the wine I want to keep a lookout for. For those not familiar with &#8230; <a href="http://blog.jeffreyforman.net/2010/04/26/wine-riot-2010/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have been meaning to write this post for a few weeks, both as a recap of the event, and as a reminder to myself of the wine I want to keep a lookout for.</p>
<p>For those not familiar with <a href="http://www.thewineriot.com/" target="_blank">Wine Riot</a>, it&#8217;s basically a beer festival/tasting, but with wine. A bunch of retailers, distributors and vineyards themselves come to the event and give samples of their product to attendees. This happened to be the biggest surprise for me. Having been to several beerfests previously, I am used to the brewer themselves being there. This gives patrons the ability to speak to the people behind the product. You can really learn a lot from those people, all the nuances and thought behind a new series of brews, and upcoming products. Wine Riot had a much higher percentage of distributors and wine purveyors on-hand, as opposed to winemakers themselves. To the best of my memory, I don&#8217;t remmeber speaking to more than a handful of actual winemakers or people from the actual vineyard. In total, there were about 50 booths set up in the Cyclorama in Boston&#8217;s South End.</p>
<p>Below is the list of wine I vaguely scribbled as myself, M, and some friends made our way &#8216;around the world of wine.&#8217; In no particular order.</p>
<ul>
<li>Oyster Bay Marlborough Pinot Noir 2008 (New Zealand)</li>
<li>Esporao Reserva White 2008 (Portugal)</li>
<li>Sequana Vineyards Dutton Ranch Pinot Noir 2007 (California, Russian River Valley)</li>
<li>Corvidae Wine Co Wise Guy Sauvignon Blanc 2009  (Washington, Columbia Valley)</li>
<li>Corvidae Wine Co &#8220;Lenore&#8221; Syrah 2007 (Washington, Columbia Valley)</li>
<li>Charles Smith Wines Kung Fu Girl Riesling 2009 (Washington, Columbia Valley)</li>
<li>K Milbrandt Syrah 2007 (Washigton, Wahluke Slope)</li>
<li>K Viognier 2009 (Washington, Columbia Valley)</li>
<li>Terra Rosa Old Vine Malbec 2007 (Argentina)</li>
<li>Porta Wines Syrah WInemaker Reserva 2008 (Chile, Acongagua Valley)</li>
<li>Terra Andina Reserva Cabernet Sauvignon 2007 (Chile)</li>
<li>Yellow+Blue Torrontes 2009</li>
<li>Herdade do Esporao Touriga Nacional 2007 (Portugal, Alentejo)</li>
<li>Podere San Lorenzo Rosso di Montalcino DOC 2007 (Italy, Toscana)</li>
<li>NV Mionetto Moscato Dolce (Italy)</li>
<li>Corelli 34&#8242; Malbec 2008 (Argentina, Mendoza)</li>
<li>Cahteau Lacombe Noaillac 2006 (France, Bordeaux)</li>
<li>Domain La Croix Belle Champ du Coq 2007 (France, Languedoc)</li>
</ul>
<p>My biggest surprise was the Yellow+Blue Torrontes, a wine served from a plastic container, almost like Franzia&#8217;s popular low cost wine in the square box. It was surprisingly good for the connotation that boxed-wine has.  Overall the event was worth going, especially because I was able to use a Groupon I purchased, saving me $10/ticket from the normally $30/ticket price. Local restaurants Upper Crust Pizza, Legal Seafood, and Redbones BBQ were among others selling food at the event. Given a Groupon being offered for next year, I highly recommend the event for those interested in wine, and will return myself.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jeffreyforman.net/2010/04/26/wine-riot-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Review: Ergotron LX Dual/Triple Display Lift Stand</title>
		<link>http://blog.jeffreyforman.net/2010/02/23/review-ergotron-lx-dualtriple-display-lift-stand/</link>
		<comments>http://blog.jeffreyforman.net/2010/02/23/review-ergotron-lx-dualtriple-display-lift-stand/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 13:58:54 +0000</pubDate>
		<dc:creator>Jeff Forman</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[CES]]></category>
		<category><![CDATA[Ergotron]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://blog.jeffreyforman.net/?p=297</guid>
		<description><![CDATA[During my annual trip to CES in Las Vegas this past year, I entered myself in the Tweet2Win contest hosted by Ergotron. They are a company from St. Paul, Minnesota, who make ergonomic products for work environments, from monitor stands, &#8230; <a href="http://blog.jeffreyforman.net/2010/02/23/review-ergotron-lx-dualtriple-display-lift-stand/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>During my annual trip to CES in Las Vegas this past year, I entered myself in the Tweet2Win contest hosted by <a href="http://www.ergotron.com/" target="_blank">Ergotron</a>. They are a company from St. Paul, Minnesota, who make ergonomic products for work environments, from monitor stands, to portable desks, laptop stands, and everything in between. Turns out,  I was one of the winners. Through a series of conversations, I was able to receive an <a href="http://www.ergotron.com/Products/tabid/65/PRDID/128/Language/en-US/Default.aspx" target="_blank">LX Dual/Triple Display Lift Stand</a> as my winnings. Here are my thoughts:</p>
<p>A before picture. At home I am lucky enough to have two <a href="http://www.samsung.com/me/products/monitor/tftlcddigital/213t.asp" target="_blank">Samsung Syncmaster 213T LCDs</a>. Each with a 21.3&#8243; viewable area, running at a resolution of 1600&#215;1200.</p>
<p style="text-align: center;"><img class="size-medium wp-image-304   aligncenter" style="border: 1px solid black;" title="P1000328" src="http://blog.jeffreyforman.net/wp-content/uploads/2010/02/P1000328-300x225.jpg" alt="" width="300" height="225" /></p>
<p>I lugged the sufficiently heavy box home from the office and began the unpacking. The hardware came in several small plastic bags, each large piece wrapped in bubble wrap. Instructions included are in at least half a dozen languages.</p>
<p style="text-align: center;"><a href="http://blog.jeffreyforman.net/wp-content/uploads/2010/02/P1000333.jpg" rel="lightbox[297]" title="P1000333"><img class="aligncenter size-medium wp-image-310" style="border: 1px solid black;" title="P1000333" src="http://blog.jeffreyforman.net/wp-content/uploads/2010/02/P1000333-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>The first thing I noticed was that on the tripod base, the rubber coasters to protect the base from your desk are awfully small. For someone who has a polished wood desk, the thought of having a 40 pound stand potentially scratch my desk is horrifying. I wish those rubber circles were a bit bigger, if only to ease my scratch concern.</p>
<p style="text-align: center;"><a href="http://blog.jeffreyforman.net/wp-content/uploads/2010/02/P1000331.jpg" rel="lightbox[297]" title="P1000331"><img class="aligncenter size-medium wp-image-311" style="border: 1px solid black;" title="P1000331" src="http://blog.jeffreyforman.net/wp-content/uploads/2010/02/P1000331-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>The instruction for assembly are clear, and pictures are explanatory. Put this part into here, take X-many screws and tighten there, etc. There were a couple pieces whose connections made me scratch my head, where there was a little bit of wiggle room and I wasn&#8217;t sure if things should be aligned to the top of the hole where the screw goes, or the bottom. Considering the unit is supporting my two monitors now, I assume I did it right. The piece I refer to here is the horizontal bar which the monitors connect to. This bar rests on top of a &#8216;lip&#8217; on the vertical support. I was unsure, given the instructions, whether it should &#8216;click in&#8217; or just hang on the lip and be secured with the screws. Turns out, it should just hang on the lip, and be secured with the two provided screws.</p>
<p style="text-align: center;"><a href="http://blog.jeffreyforman.net/wp-content/uploads/2010/02/P1000336.jpg" rel="lightbox[297]" title="P1000336"><img class="aligncenter size-medium wp-image-312" style="border: 1px solid black;" title="P1000336" src="http://blog.jeffreyforman.net/wp-content/uploads/2010/02/P1000336-225x300.jpg" alt="" width="225" height="300" /></a></p>
<p>Once I got the bar secured to the vertical support, the rest was easy. Disconnect the current stands from my monitors, attach the Ergotron square mounting bracket to the back of each monitor, and attach the alligator clip-like brackets to the bar. Be warned, as the instructions say, not to hang the first monitor all the way out on the edge of the arm. This will, which it did for a split second in my case, make the stand tip over. Position the first monitor closer to the center until you can attach the second monitor to balance the weight out.</p>
<p style="text-align: center;"><a href="http://blog.jeffreyforman.net/wp-content/uploads/2010/02/P1000340.jpg" rel="lightbox[297]" title="P1000340"><img class="aligncenter size-medium wp-image-313" style="border: 1px solid black;" title="P1000340" src="http://blog.jeffreyforman.net/wp-content/uploads/2010/02/P1000340-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Two plastic clips meant for cable management are included. They clip onto the back of the horizontal monitor arm, and are meant for you to feed cables behind. These are handy, but I only wish a few more were provided. I am only running two monitors now, but if I expand to a third, which this stand supports, I&#8217;m not sure those two clips will be enough to handle several thick DVI and power cables.</p>
<p style="text-align: center;"><a href="http://blog.jeffreyforman.net/wp-content/uploads/2010/02/P1000349.jpg" rel="lightbox[297]" title="P1000349"><img class="aligncenter size-medium wp-image-314" style="border: 1px solid black;" title="P1000349" src="http://blog.jeffreyforman.net/wp-content/uploads/2010/02/P1000349-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>I finally connected the cables and basked in the glory of my construction effort. There was one thing wrong though, the monitors were at least 4-5&#8243; above my eye level. The provided Allen-wrench tool is used to loosen the spring inside the vertical support, allowing the bar to stay at a lower height. This became an exercise in curiosity. Should I push down on the bar, and while holding it, decrease the tension? Or do I keep turning the wrench counter-clockwise until the bar lowers and &#8216;hovers&#8217; at your preferred height? Turns out, it is the latter. After what felt like at least 100 turns of the wrench, the bar lowered and stayed at a proper height.</p>
<p style="text-align: center;">
<p style="text-align: center;"><a href="http://blog.jeffreyforman.net/wp-content/uploads/2010/02/P10003601.jpg" rel="lightbox[297]" title="P1000360"><img class="aligncenter size-medium wp-image-337" title="P1000360" src="http://blog.jeffreyforman.net/wp-content/uploads/2010/02/P10003601-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>All told, from un-boxing to both monitors being mounted, I spent about 45 minutes getting the stand put together and installed. While installation was fairly easy, I wish Ergotron had put some more construction tips in English writing, rather than just graphics, to answer my confusion. I&#8217;ve been using the stand now for the past few days, and I really appreciate how it has helped clean up my desk. Having the monitors at eye height is a lot more comfortable. With the addition of a third monitor down the road, this stand will really pay dividends in saving me a ton of desk space rather than each monitor having its own base. Now I just have to convince myself to buy a third monitor.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jeffreyforman.net/2010/02/23/review-ergotron-lx-dualtriple-display-lift-stand/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CES 2010</title>
		<link>http://blog.jeffreyforman.net/2010/01/21/ces-2010/</link>
		<comments>http://blog.jeffreyforman.net/2010/01/21/ces-2010/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 16:14:10 +0000</pubDate>
		<dc:creator>Jeff Forman</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.jeffreyforman.net/?p=270</guid>
		<description><![CDATA[Finally got around to posting this&#8230;. CES 2010 Day One CES 2010 began pretty well today. Arrived in Vegas around 11pm on Thursday night, and went to the hotel. While I expected the down economy to keep a lot of &#8230; <a href="http://blog.jeffreyforman.net/2010/01/21/ces-2010/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Finally got around to posting this&#8230;.</p>
<p>CES 2010<br />
Day One</p>
<p>CES 2010 began pretty well today. Arrived in Vegas around 11pm on Thursday night, and went to the hotel. While I expected the down economy to keep a lot of people home, along with big companies, I didn&#8217;t expect the strip to be this quiet.</p>
<p>Got to the show and headed towards the home theater/media area. I&#8217;ve been contemplating picking up a home media server for a while to hook up to our big 46&#8243; LCD at home. Between Hulu, Youtube, Netflix (if I sign up for it), and downloaded TV shows and movies, it seems like a great addition to cable service where we don&#8217;t subscribe to the premium movie channels. From speaking to friends about the various offers out there, Boxee came up frequently.</p>
<p>The most memorable products I saw:<a href="http://blog.jeffreyforman.net/wp-content/uploads/2010/01/IMG_04535.jpg" rel="lightbox[270]" title="IMG_0453"><img class="alignright size-medium wp-image-278" title="IMG_0453" src="http://blog.jeffreyforman.net/wp-content/uploads/2010/01/IMG_04535-225x300.jpg" alt="" width="225" height="300" /></a></p>
<p>The iTam tam. This is the most visually appealing iPod dock/speaker i&#8217;ve seen. One problem, you need to let guests know that it isn&#8217;t a seat.</p>
<p>The neatest product that I can&#8217;t find more than one segment to market to:</p>
<p>The Entourage Edge. It&#8217;s a clamshell design product, with an e-book reader on one side, and an Android PC on the other. I can see how this could be handy to students whose teachers send out class notes, where they can annotate and mark-up the e-book pages and transfer those back to the computer for sharing. But, I would find that without an actual keyboard t<a href="http://blog.jeffreyforman.net/wp-content/uploads/2010/01/IMG_0447.jpg" rel="lightbox[270]" title="IMG_0447"><img class="alignright size-medium wp-image-279" title="IMG_0447" src="http://blog.jeffreyforman.net/wp-content/uploads/2010/01/IMG_0447-300x225.jpg" alt="" width="300" height="225" /></a>he Android PC side of the product is woefully underpowered for things you&#8217;d want to do. Go over to a website? Start typing on the virtual keyboard (you can plug in a USB keyboard). Still, a very cool mashup of two popular technologies.</p>
<p>Sony&#8217;s booth was packed, where my father and I took a break on the Gran Torismo 5 video games. We both left thinking neither of us will get in the car with the other again.</p>
<p><a href="http://blog.jeffreyforman.net/wp-content/uploads/2010/01/IMG_04501.jpg" rel="lightbox[270]" title="IMG_0450"><img class="size-medium wp-image-282 alignleft" title="IMG_0450" src="http://blog.jeffreyforman.net/wp-content/uploads/2010/01/IMG_04501-225x300.jpg" alt="" width="225" height="300" /></a></p>
<p>The biggest &#8216;gee whiz&#8217; product I saw were the Samsung LED and OLED TV&#8217;s. The worlds slimmiest TV was there, at 6.9mm.  I haven&#8217;t done much research on the current prices of LED TV&#8217;s, but I can&#8217;t imagine they are in the sweet spot for most customers currently. Once prices come down, these incredibly flat and incredibly gorgeous TV&#8217;s will replace today&#8217;s flat screen LCD&#8217;s and Plasmas</p>
<p><a href="http://blog.jeffreyforman.net/wp-content/uploads/2010/01/IMG_0449.jpg" rel="lightbox[270]" title="IMG_0449"><img class="aligncenter size-medium wp-image-284" title="IMG_0449" src="http://blog.jeffreyforman.net/wp-content/uploads/2010/01/IMG_0449-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Also swung by the Ergotron booth. While not sexy, they make a lot of ergonomically-correct desks and computer monitor stands. They were having a contest that if you tweet a photo of you and one of their products, you&#8217;ll be entered into win one of them. Check.</p>
<p><a href="http://blog.jeffreyforman.net/wp-content/uploads/2010/01/IMG_0446.jpg" rel="lightbox[270]" title="IMG_0446"><img class="aligncenter size-medium wp-image-285" title="IMG_0446" src="http://blog.jeffreyforman.net/wp-content/uploads/2010/01/IMG_0446-225x300.jpg" alt="" width="225" height="300" /></a></p>
<p>Day Two:</p>
<p>This was mostly a day to go back over some products that we wanted to hear more about. I went back towards Intel and played around with some of the netbooks there. If I get one, it would be one of the MSI Wind&#8217;s or Lenovo Ideapad. Both had keyboards that didn&#8217;t make my hands feel cramped.</p>
<p>I went back over towards Boxee and played with the interface a bit more. Pretty slick, although from what I saw, it handles network files only via CIFS (Samba), so if I ended up picking one of these up, I&#8217;d have to setup Samba along side NFS at home. No big deal, but something to add to the to-do list.</p>
<p>Saw on my Twitter feed, that I was one of the winners of the Ergotron contest. (Several days later&#8230;.) I&#8217;ve been exchanging emails with a person in their marketing department. Since the contest was for a single monitor stand, and I have two at home, they are donating the single-monitor stand to a local school, and sending me a dual/triple monitor stand to review (and keep). The power of the Internets&#8230;</p>
<p>As part of our annual trip, our group rents a room at a local sports bar or tavern to watch the first Saturday of NFL Games. In years past, we have rented out a room at the ESPN Sports Zone. Big room, bunch of big flat screen TV&#8217;s, some comfortable leather chairs, and a minimum of food/drink we have to order. This year, we booked a &#8216;Luxury Skybox&#8217; at Lagasse&#8217;s Stadium Sports Bar at the Palazzo Hotel. This is now the benchmark for places we rent out. We had about 30-35 guys, and room for more. Three huge couches with ottoman&#8217;s to relax, a pool table, and a terrace with two more couches and TV&#8217;s to match. This terrace by the way, overlooked Las Vegas Blvd. This is the way to watch the games, I highly recommend it.</p>
<p>Had a great time overall, it&#8217;s always neat to see the new products out there. I don&#8217;t know if anything hit me as a &#8216;must have&#8217; for the coming year. Some evolutionary improvements to the home theater space with Boxee and the other products. TV&#8217;s will continue to get brighter, thinner and lighter with better resolution. Intel had its new stable of CPUs to show off, typical enhancements on power and battery-usage.</p>
<p>Until next year.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jeffreyforman.net/2010/01/21/ces-2010/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>2010, a goal sheet.</title>
		<link>http://blog.jeffreyforman.net/2010/01/01/2010-a-goal-sheet/</link>
		<comments>http://blog.jeffreyforman.net/2010/01/01/2010-a-goal-sheet/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 22:24:05 +0000</pubDate>
		<dc:creator>Jeff Forman</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[goals]]></category>

		<guid isPermaLink="false">http://blog.jeffreyforman.net/?p=267</guid>
		<description><![CDATA[Since everyone is blogging about how they want to make 2010 the best year ever, this is my list of resolutions/goals for the year. Most importantly, is to get married. August 7th seems far away now, but I am sure &#8230; <a href="http://blog.jeffreyforman.net/2010/01/01/2010-a-goal-sheet/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Since everyone is blogging about how they want to make 2010 the best year ever, this is my list of resolutions/goals for the year.</p>
<ul>
<li>Most importantly, is to get married. August 7th seems far away now, but I am sure once things pick up, surviving my wedding will be a great goal to have completed.</li>
<li>Improve my programming skills. I&#8217;m an operational programmer at heart, coding to get the job done. But with all the cool API&#8217;s floating around the Internet, from Google Maps, to Foursquare, and Linode to name a few, I&#8217;d love to get more involved in hacking code and sharing it.</li>
<li>Use the $100 REI gift certificate I have to get a tent, to get back into camping. Given that I got a great new digital camera over the fall, I&#8217;d love to get outdoors more often and use it. Our new condo has a lot of empty walls that I think would look great with some photography up on them.</li>
<li>Get on top of my finances more. While I&#8217;m lucky enough to have the disposable income to not have to worry about it, I&#8217;d love to make my money work for me more, instead of just sitting there.</li>
<li>And last but not least, to feed my vice for great food and wine even more. Exploring, tasting, and learning.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jeffreyforman.net/2010/01/01/2010-a-goal-sheet/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

