<?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>Clockfort&#039;s Tech Blog</title>
	<atom:link href="http://www.clockfort.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.clockfort.com/blog</link>
	<description>… updated whenever a new project comes along</description>
	<lastBuildDate>Tue, 15 Jun 2010 21:24:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>If you&#8217;re trying to use Teensy-Loader on recent Fedora builds (12 &amp; 13)</title>
		<link>http://www.clockfort.com/blog/?p=247</link>
		<comments>http://www.clockfort.com/blog/?p=247#comments</comments>
		<pubDate>Tue, 15 Jun 2010 21:22:31 +0000</pubDate>
		<dc:creator>Chris Lockfort</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[atmega32]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[fyi]]></category>
		<category><![CDATA[microcontroller]]></category>
		<category><![CDATA[teensy]]></category>

		<guid isPermaLink="false">http://www.clockfort.com/blog/?p=247</guid>
		<description><![CDATA[If you&#8217;re trying to use Teensy-Loader on recent Fedora builds (12 &#038; 13)
You&#8217;ll need to get:
gtk2.i686
gtk2-engines.i686
(Solves &#8220;Gtk-WARNING **: Unable to locate theme engine in module_path: &#8220;clearlooks&#8221;")
PackageKit-gtk-module.i686
(Solves Gtk-Message: Failed to load module &#8220;pk-gtk-module&#8221;: libpk-gtk-module.so: cannot open shared object file: No such file or directory)
libcanberra.i686
libcanberra-gtk2.i686 (Solves Gtk-Message: Failed to load module &#8220;canberra-gtk-module&#8221;: libcanberra-gtk-module.so: cannot open shared object [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re trying to use Teensy-Loader on recent Fedora builds (12 &#038; 13)<br />
You&#8217;ll need to get:</p>
<p>gtk2.i686</p>
<p>gtk2-engines.i686<br />
(Solves &#8220;Gtk-WARNING **: Unable to locate theme engine in module_path: &#8220;clearlooks&#8221;")</p>
<p>PackageKit-gtk-module.i686<br />
(Solves Gtk-Message: Failed to load module &#8220;pk-gtk-module&#8221;: libpk-gtk-module.so: cannot open shared object file: No such file or directory)</p>
<p>libcanberra.i686<br />
libcanberra-gtk2.i686 (Solves Gtk-Message: Failed to load module &#8220;canberra-gtk-module&#8221;: libcanberra-gtk-module.so: cannot open shared object file: No such file or directory)</p>
<p>Except for canberra, most all of these packages are in the default install of i686 Fedora builds, just not in the x86_64 ones.</p>
<p>You&#8217;ll also want:<br />
sudo yum -y install avr-binutils avr-gcc avr-libc avr-libc-docs avr-gdb avra<br />
in order to actually compile C code for the Teeny board itself.<br />
(GDB is optional, but nice to have, frankly)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clockfort.com/blog/?feed=rss2&amp;p=247</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backup Software Cache Management</title>
		<link>http://www.clockfort.com/blog/?p=245</link>
		<comments>http://www.clockfort.com/blog/?p=245#comments</comments>
		<pubDate>Mon, 24 May 2010 18:21:53 +0000</pubDate>
		<dc:creator>Chris Lockfort</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[backups]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[filesystem]]></category>
		<category><![CDATA[kernel]]></category>

		<guid isPermaLink="false">http://www.clockfort.com/blog/?p=245</guid>
		<description><![CDATA[So, normally, backup software is going to read 90+% of your machine&#8217;s hard drive, and push that data over the network to someplace else.
However, in the process of doing this, it is going to steamroll your operating system&#8217;s filesystem cache.
There are two improvements that can be had here, in my reckoning, and I&#8217;ve seen neither [...]]]></description>
			<content:encoded><![CDATA[<p>So, normally, backup software is going to read 90+% of your machine&#8217;s hard drive, and push that data over the network to someplace else.</p>
<p>However, in the process of doing this, it is going to steamroll your operating system&#8217;s filesystem cache.</p>
<p>There are two improvements that can be had here, in my reckoning, and I&#8217;ve seen neither in implementation.</p>
<p>1) Have the backup software back up the files that are in the operating system&#8217;s cache FIRST. Not only does this mean that important, often-changed files get priority, it means that backups will be slightly faster, as this data will come from memory, rather than from the disk.<br />
    This would probably require some way of getting at a list of what files the kernel/caching-daemon/whatever has in memory, which I&#8217;m not sure exists at the moment.</p>
<p>2) Have the backup software use a different way of accessing the disk such that the file caching daemon does not cache the files that the backup software is reading. This way, rather than steamrolling over the carefully-laid out filesystem cache of the system&#8217;s most often and/or most recently used files, the uncommon never-accessed-normally files don&#8217;t suddenly get pushed into filesystem cache when the backup software accesses them. This would lead to general system speedup, as &#8220;better&#8221; files from disk would be cached, rather than rarely-used junk.<br />
    This could be as simple as adding an oflag option to the kernel (i.e. fcntl.h in linux) that says &#8220;don&#8217;t cache this please&#8221;, and then using this when calling the open function in the backup application.</p>
<p>&#8230; Just some musings I had while talking to Russ on our way driving to California.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clockfort.com/blog/?feed=rss2&amp;p=245</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book Review: Security Warrior</title>
		<link>http://www.clockfort.com/blog/?p=232</link>
		<comments>http://www.clockfort.com/blog/?p=232#comments</comments>
		<pubDate>Fri, 26 Feb 2010 01:32:47 +0000</pubDate>
		<dc:creator>Chris Lockfort</dc:creator>
				<category><![CDATA[Book Reviews]]></category>
		<category><![CDATA[book review]]></category>
		<category><![CDATA[disassembly]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.clockfort.com/blog/?p=232</guid>
		<description><![CDATA[
Security Warrior by Cyrus Peikari and Anton Chuvakin
ISBN: 9780596005450
This book is an excellent introduction into the world of computer security. I was a bit surprised at the contents; the book features many more offensive techniques, like reverse engineering binaries, performing successful stack/heap overflows, attacks on a variety of server/network platforms, and defeating IDS/forensic technologies. I [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.clockfort.com/blog/wp-content/uploads/2010/02/security_warrior_cover.gif"><img src="http://www.clockfort.com/blog/wp-content/uploads/2010/02/security_warrior_cover.gif" alt="Cover of Security Warrior book" title="security_warrior_cover" width="180" height="236" class="alignright size-full wp-image-234" /></a></p>
<p>Security Warrior by Cyrus Peikari and Anton Chuvakin<br />
ISBN: 9780596005450</p>
<p>This book is an excellent introduction into the world of computer security. I was a bit surprised at the contents; the book features many more offensive techniques, like reverse engineering binaries, performing successful stack/heap overflows, attacks on a variety of server/network platforms, and defeating IDS/forensic technologies. I had initially expected the book to be more focused on security defense, which is covered, but certainly not in a typical ratio. I wouldn&#8217;t complain though, because as is stated in this book several times, a good offense is a good defense. For instance, upon introducing stack overflows, the authors wisely quip how a company could save a great deal of money and embarrassment if its employees found such vulnerabilities before they leak into the wild.</p>
<p>If I did have one bad thing to say about Security Warrior, it&#8217;s that I happen to know quite a bit about its entire first section already, so I found parts quite tiresome. Having already read such texts as Chris Eagle&#8217;s &#8220;The Ida Pro Book&#8221;, this book&#8217;s section on disassembly seemed a paltry introduction in comparison; however, it seems this amount would be about right to gently introduce someone to the subject, were they not already aware of this field of computer security knowledge.</p>
<p>All in all, Security Warrior is a good introductory text to a wide variety of computer security related topics, and hopefully the reader will leave interested in implementing at least a few of the defensive strategies listed, or want to become more familiar with some of the more interesting attack vectors. Further reading/knowledge will be needed other than the information found here in order to do useful security work, but, Security Warrior certainly at least gets the ball rolling and the interest piqued. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.clockfort.com/blog/?feed=rss2&amp;p=232</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book Review: The Book of Xen</title>
		<link>http://www.clockfort.com/blog/?p=207</link>
		<comments>http://www.clockfort.com/blog/?p=207#comments</comments>
		<pubDate>Tue, 19 Jan 2010 16:12:44 +0000</pubDate>
		<dc:creator>Chris Lockfort</dc:creator>
				<category><![CDATA[Book Reviews]]></category>
		<category><![CDATA[book review]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://www.clockfort.com/blog/?p=207</guid>
		<description><![CDATA[
ISBN: 9781593271862
The Book of Xen: A Practical Guide for the System Administrator
Most Xen documentation on the Internet can be a tad focused on the single-computer, single-admin personal-use Xen administration case. This book, thankfully, is not. This is definitely the book to keep on your shelf if you require tips and tricks for setting up your [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="The Book of Xen cover" src="http://nostarch.com/images/xen_cov.png" alt="" width="154" height="204" /></p>
<p>ISBN: 9781593271862<br />
The Book of Xen: A Practical Guide for the System Administrator</p>
<p>Most Xen documentation on the Internet can be a tad focused on the single-computer, single-admin personal-use Xen administration case. This book, thankfully, is not. This is definitely the book to keep on your shelf if you require tips and tricks for setting up your own VPS hosting service, with its world full of  malevolent users needing to be kept in their place, quotas for bandwidth, disk I/O, CPU time, and memory usage, and allowing your users to configure their own instances without you having to step in every time they blow out their /boot partitions.</p>
<p>There are plenty of concepts covered in here for other use-cases (besides just hosting your own VPS provider) as well, including remote-mounting disks over NFS/iSCSI/AoE, migrating live Xen instances across a cluster of servers, and backing up disk images and machine states.</p>
<p>The Book of Xen provides a fair and balanced view of Xen management; that is to say, while it it does talk often about the many distro-specific ways of easily bootstrapping and configuring a new virtual server (like Debian&#8217;s <em>debootstrap</em>, Red Hat&#8217;s <em>virt-install</em>, or even creating images in Citrix XenServer) it also covers vendor and distro-neutral ways of performing all the required installation and management tasks. The Book of Xen is also fair in that it also goes on to describe the use and configuration of Microsoft, BSD, and Solaris Xen dom0 and domUs as well, with the caveat that support for Xen is weak and upcoming on such platforms as FreeBSD, and that HVM is required for many of these more exotic operating systems like &#8220;Microsoft Windows&#8221;, as there are no Xen hooks in the Windows kernel.</p>
<p>I particularly liked the Book of Xen&#8217;s first chapter, which, unrelated to the rest of the book&#8217;s sysadmin-oriented content, was a good overview of the technical underpinnings of the Xen hypervisor platform, and how it interacts with the hardware and virtualized machines from a very low-level perspective. As it is stated later in the book, and something that I agree with, the authors believe that one must know a technology, how it works, and its more basic manual and command line tools, before ever trusting a GUI or web interface to do the same. It will also surely aid debugging later when something goes wrong, as the administrator will have a good idea as to where the problem might lie.</p>
<p>All in all, I liked the book and would recommend it to anyone setting up their own Xen servers, however, I wished it would have had more information about Xen on the Intel Itanium (which is touched upon in the book as being a supported platform, but not talked about further) and I wish it had talked more about some of the topics they covered, like giving users access to their own Xen management consoles, in the common situation where there are many physical machines that a user&#8217;s instance could be on, a situation which completely broke their offered solutions for this situation and others.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clockfort.com/blog/?feed=rss2&amp;p=207</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Installing a Gentoo VServer Guest on a Debian VServer Host on IA64/Itanium2 Platform</title>
		<link>http://www.clockfort.com/blog/?p=156</link>
		<comments>http://www.clockfort.com/blog/?p=156#comments</comments>
		<pubDate>Fri, 15 Jan 2010 06:58:38 +0000</pubDate>
		<dc:creator>Chris Lockfort</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[ia64]]></category>
		<category><![CDATA[itanium]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[vserver]]></category>

		<guid isPermaLink="false">http://www.csh.rit.edu/~devnull/blog/?p=156</guid>
		<description><![CDATA[There is like, zero documentation for doing this on the Internet. No one else wants to install Gentoo in a VServer guest on a Debian Itanium2 host? Lame.
This quick overview contains many things specific to my personal setup; therefore:

You will want to check your local gentoo mirror to see what the current ia64 tarball is.
You [...]]]></description>
			<content:encoded><![CDATA[<p>There is like, zero documentation for doing this on the Internet. No one else wants to install Gentoo in a VServer guest on a Debian Itanium2 host? Lame.</p>
<p>This quick overview contains many things specific to my personal setup; therefore:</p>
<ul>
<li>You will want to check your local gentoo mirror to see what the current ia64 tarball is.</li>
<li>You will want to change the name, hostname, and network address of your vserver</li>
<li>You can use whatever directories you want; the actual files will go in /var/lib/vservers/&lt;hostname&gt;/ , (and /etc/vservers/&lt;hostname&gt;/ ) and you can delete the stage3 tarball after you&#8217;re done.</li>
<li>So you don&#8217;t get confused, &#8220;jolt&#8221; is the name of my debian host machine, and &#8220;coffee&#8221; is the vserver guest I am creating.</li>
</ul>
<p><span style="color: #ff0000;">#Install the Vserver kernel and utilities if you already have not.<br />
</span><br />
<span style="color: #ff6600;">jolt:/space/vserver#</span> aptitude install linux-image-vserver-mckinley util-vserver vserver-debiantools</p>
<p><span style="color: #ff0000;">#Reboot to boot into new kernel.</span></p>
<p><span style="color: #ff6600;">jolt:/space/vserver#</span> reboot<br />
<span style="color: #ff0000;"><br />
#Are you running the new kernel? It should say &#8220;vserver&#8221; in there somewhere.</span></p>
<p><span style="color: #ff6600;">jolt:/space/vserver#</span> uname -a<br />
Linux jolt 2.6.26-2-vserver-mckinley #1 SMP Thu Nov 5 07:44:36 UTC 2009 ia64 GNU/Linux</p>
<p><span style="color: #ff0000;">#Get the latest Stage3 tarball from a mirror close to you.</span></p>
<p><span style="color: #ff6600;">jolt:/space/vserver/base-images/#</span> wget http://mirrors.rit.edu/gentoo/releases/ia64/current-stage3/stage3-ia64-20091229.tar.bz2</p>
<p><span style="color: #ff0000;">#Build the vserver.  &#8211;context is just a unique number you set from 1-49152, non-inclusive. Everything else is relatively self explanatory.</span></p>
<p><span style="color: #ff6600;">jolt:/space/vserver/base-images/#</span> vserver coffee build &#8211;context 1253 &#8211;hostname coffee &#8211;interface eth2:129.21.50.66/24 &#8211;initstyle gentoo -m template &#8212; -d gentoo -t /space/vserver/base-images/stage3-ia64-20091229.tar.bz2</p>
<p><span style="color: #ff6600;">jolt:/space/vserver/base-images/#</span> cd /var/lib/vservers/coffee<br />
<span style="color: #ff6600;">jolt:/var/lib/vservers/coffee#</span> cp -L /etc/resolv.conf ./etc/resolv.conf<br />
<span style="color: #ff6600;">jolt:/var/lib/vservers/coffee#</span> chroot ./ /bin/bash<br />
<span style="color: #ff6600;">jolt / # </span>env-update<br />
&gt;&gt;&gt; Regenerating /etc/ld.so.cache&#8230;<br />
<span style="color: #ff6600;">jolt / # </span>source /etc/profile<br />
<span style="color: #ff6600;">jolt / # </span>export PS1=&#8221;(chroot) $PS1&#8243;<br />
<span style="color: #ff6600;">(chroot) jolt / #</span> emerge &#8211;sync<br />
<span style="color: #ff6600;">(chroot) jolt / #</span> eselect profile list<br />
Available profile symlink targets:<br />
  [1]   default/linux/ia64/10.0 *<br />
  [2]   default/linux/ia64/10.0/desktop<br />
  [3]   default/linux/ia64/10.0/developer<br />
  [4]   default/linux/ia64/10.0/server<br />
  [5]   hardened/linux/ia64/10.0<br />
<span style="color: #ff6600;">(chroot) jolt / #</span> eselect profile set 4<br />
<span style="color: #ff6600;">(chroot) jolt / # </span>cp /usr/share/zoneinfo/US/Eastern /etc/localtime<br />
<span style="color: #ff6600;">(chroot) jolt / #</span> nano /etc/make.conf<br />
<span style="color: #ff6600;">(chroot) jolt / # </span>cat /etc/make.conf<br />
<span style="color: #ff9900;"><span style="color: #003300;">#Gentoo Itanium VServer make.conf Created: 2010-01-14 by Clockfort (devnull@remove_this_part_for_spam_reasons.csh.rit.edu)<br />
CFLAGS=&#8221;-O2 -mtune=mckinley -pipe&#8221;<br />
CXXFLAGS=&#8221;-O2 -pipe&#8221;<br />
# WARNING: Changing your CHOST is not something that should be done lightly.<br />
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.<br />
CHOST=&#8221;ia64-unknown-linux-gnu&#8221;<br />
MAKEOPTS=&#8221;-j5&#8243;</p>
<p># Portage Options<br />
EMERGE_DEFAULT_OPTS=&#8221;&#8211;ask &#8211;verbose &#8211;tree &#8211;jobs=5&#8243;<br />
PORTAGE_ELOG_CLASSES=&#8221;info warn error log&#8221;<br />
PORTAGE_ELOG_SYSTEM=&#8221;save&#8221;<br />
AUTOCLEAN=&#8221;yes&#8221;<br />
FEATURES=&#8221;parallel-fetch userfetch collision-protect buildpkg&#8221;<br />
PORT_LOGDIR=/var/log/portage</p>
<p># Portage Sync/Download Locations<br />
GENTOO_MIRRORS=&#8221;http://mirrors.rit.edu/gentoo http://www.gtlib.gatech.edu/pub/gentoo ftp://ftp.wallawalla.edu/pub/mirrors/ftp.gentoo.org http://lug.mtu.edu/gentoo/&#8221;<br />
SYNC=&#8221;rsync://rsync.namerica.gentoo.org/gentoo-portage&#8221;</p>
<p># Use Flags<br />
USE=&#8221;$USE symlink&#8221; # Kernel<br />
USE=&#8221;$USE mmx sse sse2&#8243; # CPU<br />
USE=&#8221;$USE pam ssl&#8221; # Authentication<br />
USE=&#8221;$USE bash-completion&#8221; # Completion<br />
USE=&#8221;$USE X gtk svg qt3support&#8221; # X support<br />
USE=&#8221;$USE xulrunner&#8221; # native browser integration<br />
USE=&#8221;$USE jpeg png&#8221; #image support<br />
#FEATURES=&#8221;${FEATURES} candy&#8221;</span><br />
</span><br />
<span style="color: #ff6600;">(chroot) jolt / #</span> passwd<br />
<span style="color: #ff0000;">#Ignore the scanelf &#8220;unaligned access&#8221; error you get, it won&#8217;t hurt anyone, just slow things down a bit.</span><br />
<span style="color: #ff6600;">(chroot) jolt / # </span>emerge syslog-ng<br />
<span style="color: #ff6600;">(chroot) jolt / #</span> rc-update add syslog-ng default<br />
<span style="color: #ff0000;">#Remove reference to /proc/kmsg</span><br />
<span style="color: #ff6600;">(chroot) jolt / #</span> nano /etc/syslog-ng/syslog-ng.conf<br />
<span style="color: #ff6600;">(chroot) jolt / # </span>emerge vixie-cron<br />
<span style="color: #ff6600;">(chroot) jolt / #</span> rc-update add vixie-cron default<br />
<span style="color: #ff6600;">(chroot) jolt / # </span>exit<br />
<span style="color: #ff6600;">jolt:/var/lib/vservers/coffee#</span> vserver coffee start<br />
<span style="color: #ff6600;">jolt:/var/lib/vservers/coffee#</span> vserver coffee enter<br />
See also:<br />
<a href="http://linux-vserver.org/Installation_on_Debian">http://linux-vserver.org/Installation_on_Debian</a><br />
<a href="http://www.gentoo.org/proj/en/vps/vserver-howto.xml">http://www.gentoo.org/proj/en/vps/vserver-howto.xml</a><br />
<a href="http://linux-vserver.org/Frequently_Asked_Questions">http://linux-vserver.org/Frequently_Asked_Questions</a><br />
<a href="http://www.gentoo.org/doc/en/handbook/">http://www.gentoo.org/doc/en/handbook/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.clockfort.com/blog/?feed=rss2&amp;p=156</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book Review: How Not to Program in C++</title>
		<link>http://www.clockfort.com/blog/?p=139</link>
		<comments>http://www.clockfort.com/blog/?p=139#comments</comments>
		<pubDate>Tue, 12 Jan 2010 01:07:10 +0000</pubDate>
		<dc:creator>Chris Lockfort</dc:creator>
				<category><![CDATA[Book Reviews]]></category>
		<category><![CDATA[book review]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[puzzles]]></category>

		<guid isPermaLink="false">http://www.csh.rit.edu/~devnull/blog/?p=139</guid>
		<description><![CDATA[ISBN: 9781886411951
How Not to Program in C++: 111 Broken Programs and 3 Working Ones, or Why Does 2+2=5986
Do you enjoy puzzles? Do you enjoy debugging other people&#8217;s code? If so, you&#8217;ll enjoy this book.
If reference materials or traditional educational coding books were like newspapers, then this book would be the crossword puzzle page. Just like [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="How Not to Program in C++ Cover" src="http://www.nostarch.com/images/hownotc_cov.gif" alt="How Not to Program in C++ Cover" width="165" height="207" />ISBN: 9781886411951<br />
How Not to Program in C++: 111 Broken Programs and 3 Working Ones, or Why Does 2+2=5986</p>
<p>Do you enjoy puzzles? Do you enjoy debugging other people&#8217;s code? If so, you&#8217;ll enjoy this book.</p>
<p>If reference materials or traditional educational coding books were like newspapers, then this book would be the crossword puzzle page. Just like any crossword puzzle, some sections are harder than others, and the puzzles in this book are no exception.  If you can&#8217;t quite figure out the subtle differences between pointers, addresses, double pointers, etc, then this listing of the plethora of ways that you can get yourself into trouble while programming in C++ will likely prove too difficult to solve at parts. Without a doubt though, anyone who fully knows C++ (and C, which is also covered in this book) and all its intricacies will not find most of the puzzles exceptionally difficult.</p>
<p>That being said, the book still proves a good read for anyone of higher programming skill; any reader will be scratching his or her head to find the truly subtle ways that the all-too-simple-looking sample programs have been broken. Luckily, there are helpful, very optional hints and answers in the back of the book one can read in order to get thinking on the right track without spoiling too much of the fun. Additionally, throughout the book&#8217;s puzzles, there are amusing programmer-related debugging horror stories and funny programming quips that provide a brief smile, even when one is wracking one&#8217;s brains out to find the misplaced comma, subtly misspelled keyword, missing semicolon, or devious memory misallocation that is keeping the answer of the problem elusive.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clockfort.com/blog/?feed=rss2&amp;p=139</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Book Review: Network Warrior</title>
		<link>http://www.clockfort.com/blog/?p=112</link>
		<comments>http://www.clockfort.com/blog/?p=112#comments</comments>
		<pubDate>Mon, 11 Jan 2010 22:00:51 +0000</pubDate>
		<dc:creator>Chris Lockfort</dc:creator>
				<category><![CDATA[Book Reviews]]></category>
		<category><![CDATA[book review]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[o'reilly]]></category>

		<guid isPermaLink="false">http://www.csh.rit.edu/~devnull/blog/?p=112</guid>
		<description><![CDATA[
ISBN: 9780596101510
This epically-titled O&#8217;Reilly book is a well-organized collection of network configuration tips, stories, and common &#8220;gotchas&#8221;, as told by a self-admitted grouchy old network admin to younger, wet-behind-the-ears network administrators.
The author, in a move uncommon to most networking manuals, just cuts to the chase and says what needs to be said. Everything is told [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://www.csh.rit.edu/files/reviews/network_warrior.gif" alt="Network Warrior Book Cover" width="180" height="236" /></p>
<p>ISBN: 9780596101510</p>
<p>This epically-titled O&#8217;Reilly book is a well-organized collection of network configuration tips, stories, and common &#8220;gotchas&#8221;, as told by a self-admitted grouchy old network admin to younger, wet-behind-the-ears network administrators.</p>
<p>The author, in a move uncommon to most networking manuals, just cuts to the chase and says what needs to be said. Everything is told from a Cisco perspective, with Cisco terminology, and the only hint of variation allowed for is the occasional explanation when something is radically (or subtly, in some way that would ruin everything when you least expect it) different between CatOS and IOS. This is undeniably a good thing; it keeps the book short, and realistically, Cisco is one of the forefront leaders in the enterprise network market.</p>
<p>A wide range of topics are talked about – possible problems that you could run into with auto-negotiation on your fast-ethernet network, how to configure spanning tree or etherchannel, getting QoS to work properly, and a whole host of topics one should know when creating one&#8217;s own medium-to-large sized network. Even for those that already know how to implement these features, the author explains exactly when someone would want to use these features and how they evolved, and how they ought to be properly used.</p>
<p>I would recommend this book to anyone interested in enterprise networking – ranging from the relatively professionally uninitiated like myself (I only do networking administration for Computer Science House at the Rochester Institute of Technology) to those who are just transitioning from networking classes to actual jobs, who will benefit perhaps the most from the book&#8217;s tips and tricks from a person in industry, or even the average middle-aged network administrator, who may find a large portion of the book a snooze, but likely still pick up a trick or two that was previously unknown.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clockfort.com/blog/?feed=rss2&amp;p=112</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Undocumented Feature in IOS 11.2</title>
		<link>http://www.clockfort.com/blog/?p=109</link>
		<comments>http://www.clockfort.com/blog/?p=109#comments</comments>
		<pubDate>Sun, 15 Nov 2009 22:02:19 +0000</pubDate>
		<dc:creator>Chris Lockfort</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.csh.rit.edu/~devnull/blog/?p=109</guid>
		<description><![CDATA[I found an undocumented feature in Cisco IOS 11.2.
The command &#8220;show interface description&#8221; exists in newer versions, so I typed it in out of habit. Even though it doesn&#8217;t tab-complete it, or know what that option to the sh int command is, it still works&#8230; Albeit badly, and it gives terribly formatted output (All on [...]]]></description>
			<content:encoded><![CDATA[<p>I found an undocumented feature in Cisco IOS 11.2.<br />
The command &#8220;show interface description&#8221; exists in newer versions, so I typed it in out of habit. Even though it doesn&#8217;t tab-complete it, or know what that option to the sh int command is, it still works&#8230; Albeit badly, and it gives terribly formatted output (All on one line, no spaces between names, no blank spaces where unlabeled ports are, etc)</p>
<p>It still works though! :-) </p>
<p>Makes me wonder how many undocumented features exist in versions of IOS earlier than they are supposedly &#8220;released&#8221;.  </p>
<p><code><br />
drpepper#sh ver<br />
Cisco Internetwork Operating System Software<br />
IOS (tm) C2900XL Software (C2900XL-HS-M), Version 11.2(8.10)SA6,<br />
MAINTENANCE INTERIM SOFTWARE<br />
Copyright (c) 1986-1902 by cisco Systems, Inc.<br />
Compiled Fri 15-Feb-02 09:47 by devgoyal<br />
Image text-base: 0x00003000, data-base: 0x0020E278<br />
<em>...(rest of output truncated for brevity)</em><br />
drpepper#sh int ?<br />
 FastEthernet  FastEthernet IEEE 802.3<br />
 Null          Null interface<br />
 VLAN          Switch VLAN Virtual Interface<br />
 accounting    Show interface accounting<br />
 crb           Show interface routing/bridging info<br />
 irb           Show interface routing/bridging info<br />
 link-trap     Show interface traps on no link<br />
 <cr></p>
<p>drpepper#sh int desc<br />
Blacktea LinkCSH UplinkJolt ManagementRESNETRESNETRESNETRESNET<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.clockfort.com/blog/?feed=rss2&amp;p=109</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Game of Life</title>
		<link>http://www.clockfort.com/blog/?p=106</link>
		<comments>http://www.clockfort.com/blog/?p=106#comments</comments>
		<pubDate>Thu, 05 Nov 2009 10:40:30 +0000</pubDate>
		<dc:creator>Chris Lockfort</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bored]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[conway]]></category>
		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.csh.rit.edu/~devnull/blog/?p=106</guid>
		<description><![CDATA[I got very bored in a far-too-easy networking class and ended up coding a very memory efficient version of Conway&#8217;s Game of Life.
Of note, it uses bit-twiddling/bit-packing to access individual bits on byte-accessible memory for the gameboard, and it uses a sort of buffer-thing to further reduce memory usage, rather than push temporary changes into [...]]]></description>
			<content:encoded><![CDATA[<p>I got very bored in a far-too-easy networking class and ended up coding a very memory efficient version of Conway&#8217;s Game of Life.<br />
Of note, it uses bit-twiddling/bit-packing to access individual bits on byte-accessible memory for the gameboard, and it uses a sort of buffer-thing to further reduce memory usage, rather than push temporary changes into an entire other temporary game board. I just made it up as I went along. The idea behind being this memory efficient is so that I can plop this on a microcontroller (possibly CSH&#8217;s Big Infosys?) and just let &#8216;er rip on a LED matrix :-)</p>
<p>Source is up at <a href="http://github.com/clockfort/Life/">http://github.com/clockfort/Life/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.clockfort.com/blog/?feed=rss2&amp;p=106</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>NFS Blocksize Optimizations</title>
		<link>http://www.clockfort.com/blog/?p=100</link>
		<comments>http://www.clockfort.com/blog/?p=100#comments</comments>
		<pubDate>Thu, 22 Oct 2009 14:16:40 +0000</pubDate>
		<dc:creator>Chris Lockfort</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ia64]]></category>
		<category><![CDATA[itanium]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nfs]]></category>

		<guid isPermaLink="false">http://www.csh.rit.edu/~devnull/blog/?p=100</guid>
		<description><![CDATA[I decided to redo the NFS setup I previously had on my ol&#8217; Itanium2 machine.
How to test to see which NFS block size is right for your setup:

#Testing write speeds:
mount hostname:/remote_folder/ /mnt/local_folder/ -o rw,wsize=1024
time dd if=/dev/zero of=/mnt/local_folder/write_test bs=16k count=16k
umount /mnt/local_folder/
#Testing read speeds:
mount hostname:/remote_folder/ /mnt/local_folder/ -o ro,rsize=1024
time dd if=/mnt/local_folder/write_test of=/dev/null bs=16k
umount /mnt/local_folder/

Go through and change wsize [...]]]></description>
			<content:encoded><![CDATA[<p>I decided to redo the NFS setup I previously had on my ol&#8217; Itanium2 machine.</p>
<p><strong>How to test to see which NFS block size is right for your setup:</strong></p>
<pre class="brush: bash; light: true;">
#Testing write speeds:
mount hostname:/remote_folder/ /mnt/local_folder/ -o rw,wsize=1024
time dd if=/dev/zero of=/mnt/local_folder/write_test bs=16k count=16k
umount /mnt/local_folder/
#Testing read speeds:
mount hostname:/remote_folder/ /mnt/local_folder/ -o ro,rsize=1024
time dd if=/mnt/local_folder/write_test of=/dev/null bs=16k
umount /mnt/local_folder/
</pre>
<p>Go through and change wsize and rsize to 1024, 2048, 4096, 8192, 16384, 32768. MAKE SURE to unmount after every test, as otherwise caching may cause you to see erroneously high speeds for subsequent tests. </p>
<p><strong>Additional performance boosters:</strong><br />
Use &#8220;async&#8221; and &#8220;noatime&#8221; options when mounting your remote NFS directory. Async can be a little dangerous, as the data is not immediately flushed to disk on the server, but if the server is rather reliable, it shouldn&#8217;t be a problem. &#8220;noatime&#8221; prevents the access time for the files accessed over NFS from being updated. POSIX says you should update the access time every time you read a file, but doing a write operation to a disk every time you need to read from a file is time-costly and, frankly, rather silly from a performance perspective.</p>
<p>If you can, allow jumbo packets between the two machines you are using NFS between. Beware, however, that these oversized packets must be supported by the server, the client, and every network switch and router in-between in order for that to function properly. If you know for sure that is the case, then go for it, and you&#8217;ll probably see an increase in throughput, as the nfs packets (especially the larger ones) will be fragmented into far fewer IP packets. Also beware that other vendors implementations of NFS differ than Linux&#8217;s slightly, for instance Apple OS X clients seem to only be able to connect to NFS servers with &#8220;insecure&#8221; as an /etc/export option for that particular NFS directory.</p>
<p>Test Machine Specs:<br />
2x 1.5GHz Itanium2 processors<br />
10GB ECC DDR<br />
3x 74GB 15k RPM U320 SCSI drives in RAID5<br />
Gigabit ethernet</p>
<p>I am somewhat confused as to why my own NFS write performance is so appalling, while the read performance approaches the theoretical maximums of a gigabit ethernet connection.<br />
Any advice on improving write performance over NFS would be <strong>much</strong> appreciated.<br />
<img src="http://www.csh.rit.edu/~devnull/images/nfs_tests.png" alt="Graph of NFS throughput vs blocksize" /></p>
<p>(<a href="http://www.csh.rit.edu/~devnull/images/nfs_tests.png">Graph is here if you&#8217;re reading this post without images</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clockfort.com/blog/?feed=rss2&amp;p=100</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
