<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8964532935885306110</id><updated>2012-02-16T20:49:33.581-06:00</updated><category term='linux'/><category term='education'/><category term='bgp'/><category term='tcpdump'/><category term='protocol'/><category term='diy'/><category term='seagull'/><category term='personal'/><category term='digest'/><category term='bgpd'/><category term='programming'/><category term='robot'/><category term='sip'/><category term='f5'/><category term='mower'/><category term='wireshark'/><category term='compile'/><category term='house projects'/><category term='remote control'/><category term='tcp'/><category term='iproute2'/><category term='lawn'/><category term='python'/><category term='freediameter'/><category term='routing'/><category term='ubuntu'/><category term='testing'/><category term='md5'/><category term='traffic generator'/><category term='radius'/><category term='diameter'/><category term='aaa'/><title type='text'>learn more stuff</title><subtitle type='html'>an occasionally updated reading list by daniel epperson</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.d33z.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default'/><link rel='alternate' type='text/html' href='http://www.d33z.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default?start-index=26&amp;max-results=25'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>37</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-5928718055825730893</id><published>2011-12-22T16:45:00.001-06:00</published><updated>2012-01-10T14:32:11.792-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='aaa'/><category scheme='http://www.blogger.com/atom/ns#' term='sip'/><category scheme='http://www.blogger.com/atom/ns#' term='traffic generator'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='diameter'/><category scheme='http://www.blogger.com/atom/ns#' term='compile'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='seagull'/><title type='text'>compiling seagull on ubuntu 10.10</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://gull.sourceforge.net/images/seagull_logo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="95" src="http://gull.sourceforge.net/images/seagull_logo.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;&lt;a href="http://gull.sourceforge.net/index.html" target="_blank"&gt;Seagull&lt;/a&gt; is a free, Open Source (GPL) multi-protocol traffic generator test tool. I will be using Seagull to generate some Diameter traffic for testing. After trying for hours to get this software to compile under Ubuntu, I finally gave up and used the windows cygwin binarys, which worked like a charm.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small;"&gt;Seagull is a handy tool for generating very specific traffic types, and provides many scenarios already configured. To get going on Windows, all that I had to do was edit the IP addresses in some XML config files and I was up and running. Nice.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;---&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;I'll document some of the pains that I went through here during compilation under Ubuntu 10.10 for Seagull in case someone else happens to try this out.&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;There has been some time since Seagull was updated, and compilers have changed a bit since then. Fortunately I ran into this &lt;/span&gt;&lt;a href="http://mateusz.loskot.net/tag/memcpy/" style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: small; text-align: left;" target="_blank"&gt;blog post&lt;/a&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;&amp;nbsp;that helped me to understand some of the problems that I was running into.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;At first, KSH and GCC are missing from Ubuntu, so you have to install them.&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;# apt-get install ksh build-essential bison flex&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small;"&gt;libntl-dev&amp;nbsp;libsctp-dev&lt;/span&gt;&lt;/div&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;Source files that generate the error "&lt;/span&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;error: memset was not declared in this scope" need to have this include line added.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;#include &amp;lt;cstring&amp;gt;&lt;cstring&gt;&lt;/cstring&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small;"&gt;Source files that generate the error "X" need to have this include line added.&lt;/span&gt;&lt;/div&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;#include &amp;lt;cstdlib&amp;gt;&lt;cstdlib&gt;&lt;/cstdlib&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;Source files that generate the error "Y"&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small; text-align: left;"&gt;need to have = changed to == in some if statements.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small;"&gt;Source files that generate the error "&lt;/span&gt;&lt;span style="font-family: Verdana, Helvetica, Arial, sans-serif; font-size: x-small;"&gt;fatal error: asm/page.h: No such file or directory" need to have a specific include line to point at the actual page.h file. From&amp;nbsp;&lt;/span&gt;&lt;a href="http://forums.fedoraforum.org/showthread.php?t=190186"&gt;http://forums.fedoraforum.org/showthread.php?t=190186&lt;/a&gt;.&lt;br /&gt;#include "/usr/src/linux-headers-2.6.35-22/arch/x86/include/asm/page.h"&lt;br /&gt;&lt;br /&gt;Source files that generate the error "/usr/bin/ld: cannot find -lTTL" can be fixed by&amp;nbsp;commenting a line and uncommenting a line in TCAP section of build.conf.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And lastly, I have not yet solved this one. Error message is "library-trans-extsctp/socketSCTP_t.hpp:23: fatal error: ext_socket.h: No such file or directory". I&amp;nbsp;cant seem to find a library that provides&amp;nbsp;sctp_initLibrary() as &amp;nbsp;ext_socket.h used to, also cant find ext_socket.h on my system or in an available package.&lt;br /&gt;&lt;br /&gt;So, use the windows version, because it works.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-5928718055825730893?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/5928718055825730893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2011/12/compiling-seagull-on-ubuntu-1010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/5928718055825730893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/5928718055825730893'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2011/12/compiling-seagull-on-ubuntu-1010.html' title='compiling seagull on ubuntu 10.10'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-8855901728784693732</id><published>2011-12-20T15:20:00.003-06:00</published><updated>2011-12-20T15:21:26.718-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='aaa'/><category scheme='http://www.blogger.com/atom/ns#' term='radius'/><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='protocol'/><category scheme='http://www.blogger.com/atom/ns#' term='diameter'/><category scheme='http://www.blogger.com/atom/ns#' term='tcpdump'/><category scheme='http://www.blogger.com/atom/ns#' term='wireshark'/><category scheme='http://www.blogger.com/atom/ns#' term='freediameter'/><title type='text'>the diameter protocol</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/3/38/RFC3588_peer_state_machine_1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="166" src="http://upload.wikimedia.org/wikipedia/commons/3/38/RFC3588_peer_state_machine_1.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Diameter is an authentication, authorization and accounting protocol for computer networks, and an alternative to RADIUS.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anyway, here are some links.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Diameter_(protocol)"&gt;http://en.wikipedia.org/wiki/Diameter_(protocol)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tools.ietf.org/html/rfc3588"&gt;http://tools.ietf.org/html/rfc3588&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.freediameter.net/trac/wiki/Configuration"&gt;http://www.freediameter.net/trac/wiki/Configuration&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://aaa.koganei.wide.ad.jp/documentation/fD_tuto_2e%20-%20Quickstart%20a%20testbed.pdf"&gt;http://aaa.koganei.wide.ad.jp/documentation/fD_tuto_2e%20-%20Quickstart%20a%20testbed.pdf&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For troubleshooting diameter, I have mostly been using tcpdump and wireshark since wireshark has dissectors for the Diameter protocol. Next I will be working on tcpdump filters.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-8855901728784693732?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/8855901728784693732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2011/12/diameter-protocol.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/8855901728784693732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/8855901728784693732'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2011/12/diameter-protocol.html' title='the diameter protocol'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-5877426942385593809</id><published>2011-12-11T19:21:00.001-06:00</published><updated>2011-12-11T20:22:30.684-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='robot'/><category scheme='http://www.blogger.com/atom/ns#' term='mower'/><category scheme='http://www.blogger.com/atom/ns#' term='house projects'/><category scheme='http://www.blogger.com/atom/ns#' term='diy'/><category scheme='http://www.blogger.com/atom/ns#' term='remote control'/><category scheme='http://www.blogger.com/atom/ns#' term='lawn'/><title type='text'>Robot mower roundup</title><content type='html'>I am not the only person on YouTube with a remote controlled lawn mower. It seems like more and more show up every day, so I decided to document a few of my favorites.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.instructables.com/files/deriv/F2P/WM49/G79DORLE/F2PWM49G79DORLE.MEDIUM.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://www.instructables.com/files/deriv/F2P/WM49/G79DORLE/F2PWM49G79DORLE.MEDIUM.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://www.instructables.com/id/Arduino-RC-Lawnmower/" target="_blank"&gt;Lawnbot 400&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is the project that inspired me to create my own remote controlled mower. His website is &lt;a href="http://rediculouslygoodlooking.com/" target="_blank"&gt;here&lt;/a&gt;. What I liked about this mower is that it appears to have adjustable cutting deck height, and the dirt carrier on top.&lt;br /&gt;&lt;br /&gt;One thing that I don't like about this design is how bulky the frame is compared to the size of the cutting deck. I took this design into consideration when building my mower, and it still comes to mind when I'm thinking about how to solve my rigid cutting height problems. The fit and finish on this project is top notch, and that is probably why it is listed in Make Magazine. Good work, Sir.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="240" src="http://www.youtube.com/embed/4Dbcr6zj168" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" width="320"&gt;&lt;/iframe&gt;&lt;a href="http://www.youtube.com/watch?v=4Dbcr6zj168&amp;amp;feature=related" target="_blank"&gt;Lawnrover m3736&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Right away I saw "Can I get this in﻿ Blue?" from the YouTube comments. This tells me that someone out there wouldn't change a thing and would enjoy this mower as is.&lt;br /&gt;&lt;br /&gt;Based on the number of features on this mower, I suspect that this is not the first revision of this project. I'm just guessing here but the balance looks to be as such that if you sat on it, you might be able to pull wheelies! Imagine!&amp;nbsp;I like the toolbox on this one as it is a great way to keep electronics safe from grass and dust and it is easy to open and get at the components if you need to.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="247" src="http://www.youtube.com/embed/MampBr30syE" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" width="320"&gt;&lt;/iframe&gt;&lt;a href="http://www.youtube.com/watch?v=MampBr30syE&amp;amp;feature=related" target="_blank"&gt;thekruck2009 radio control lawn mower&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This one deserves a name. I really like the compact size of everything on here. The little caster wheels might prove problematic when transitioning between different surfaces, but they look to be working just fine here.&lt;br /&gt;&lt;br /&gt;There are not a lot of details posted about this project, and the viewer comments on YouTube appear to go unanswered.&lt;br /&gt;&lt;br /&gt;I posted a question about the electrical system, but I may not get an answer. I was interested in whether the system is 12 or 24 volts. It seems like it must be a single battery at 12 volts, as I'm not sure where you would fit another battery on there. It also appears to be in the same situation as my project regarding height adjustability. I have to say it again, though, I just love how compact this one is.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="247" src="http://www.youtube.com/embed/zuXqg4q3cQ8" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" width="320"&gt;&lt;/iframe&gt;&lt;a href="http://www.youtube.com/watch?v=zuXqg4q3cQ8" target="_blank"&gt;DIY Robot Lawn Mower&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This one is 100% custom and it represents an entire genre of custom mowers that are otherwise missing from this post. The guy combined a barbie jeep, razor blades, batteries, and an electric dog fence to create a completely autonomous mowing platform.&lt;br /&gt;&lt;br /&gt;This device is not remote controlled, it works entirely on its own by bumping into things and turning itself a little bit each time. I think it would take ages to mow the yard based on how it moves and the fact that it is going to mow over the same tracks multiple times. I think this is a great device, though, as it is so totally different from the other projects in this category. I can really appreciate the effort that was put forth to make this, especially the custom logic board parts. Good work, Sir.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-5877426942385593809?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/5877426942385593809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2011/12/remote-controlled-mower-roundup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/5877426942385593809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/5877426942385593809'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2011/12/remote-controlled-mower-roundup.html' title='Robot mower roundup'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/4Dbcr6zj168/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-1788367769528832975</id><published>2011-11-08T18:44:00.004-06:00</published><updated>2011-12-20T15:21:52.428-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tcp'/><category scheme='http://www.blogger.com/atom/ns#' term='routing'/><category scheme='http://www.blogger.com/atom/ns#' term='bgpd'/><category scheme='http://www.blogger.com/atom/ns#' term='md5'/><category scheme='http://www.blogger.com/atom/ns#' term='digest'/><category scheme='http://www.blogger.com/atom/ns#' term='bgp'/><category scheme='http://www.blogger.com/atom/ns#' term='tcpdump'/><category scheme='http://www.blogger.com/atom/ns#' term='wireshark'/><category scheme='http://www.blogger.com/atom/ns#' term='f5'/><title type='text'>November already?</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.f5.com/f5world/images/f5-logo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.f5.com/f5world/images/f5-logo.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;So, its November already and I haven't posted much. Well, I changed jobs. Now I work for F5 Networks, Inc. My new employer is awesome.&lt;br /&gt;&lt;br /&gt;Anyway, back to the books. Here is what I have been reading lately.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;MD5 Authentication Between BGP Peers Configuration Example&lt;br /&gt;&lt;a href="http://www.cisco.com/en/US/tech/tk365/technologies_configuration_example09186a0080b52107.shtml"&gt;http://www.cisco.com/en/US/tech/tk365/technologies_configuration_example09186a0080b52107.shtml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Protection of BGP Sessions via the TCP MD5 Signature Option&lt;br /&gt;&lt;a href="http://www.ietf.org/rfc/rfc2385.txt"&gt;http://www.ietf.org/rfc/rfc2385.txt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;During my BGP and TCP MD5 digest searching, I found an awesome website called PacketLife. This website provides packet captures for just about everything. I can tell that this is going to be a good "known working example" resource. Check them out at the link below.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://packetlife.net/captures/protocol/bgp/"&gt;http://packetlife.net/captures/protocol/bgp/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Later.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-1788367769528832975?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/1788367769528832975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2011/11/november-already.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/1788367769528832975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/1788367769528832975'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2011/11/november-already.html' title='November already?'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-849116966048385549</id><published>2011-08-18T13:34:00.002-05:00</published><updated>2011-08-18T16:16:38.558-05:00</updated><title type='text'>august reading materials</title><content type='html'>TCP Misc&lt;br /&gt;&lt;a href="http://www.texample.net/tikz/examples/tcp-state-machine/"&gt;http://www.texample.net/tikz/examples/tcp-state-machine/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure"&gt;http://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ietf.org/rfc/rfc793.txt"&gt;http://www.ietf.org/rfc/rfc793.txt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ICMP Messages&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#List_of_permitted_control_messages_.28incomplete_list.29"&gt;http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#List_of_permitted_control_messages_.28incomplete_list.29&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;OpenSSL CSR/CRL&lt;br /&gt;&lt;a href="http://gagravarr.org/writing/openssl-certs/ca.shtml"&gt;http://gagravarr.org/writing/openssl-certs/ca.shtml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;SSL Handshake&lt;br /&gt;&lt;a href="http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/index.jsp?topic=%2Fcom.ibm.itame2.doc_5.1%2Fss7aumst18.htm"&gt;http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/index.jsp?topic=%2Fcom.ibm.itame2.doc_5.1%2Fss7aumst18.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;SSL Certificate verification&lt;br /&gt;&lt;a href="http://www.madboa.com/geek/openssl/"&gt;http://www.madboa.com/geek/openssl/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;HTTP&lt;br /&gt;&lt;a href="http://www.ietf.org/rfc/rfc2616.txt"&gt;http://www.ietf.org/rfc/rfc2616.txt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Other Misc&lt;br /&gt;&lt;a href="http://wiki.wireshark.org/Gratuitous_ARP"&gt;http://wiki.wireshark.org/Gratuitous_ARP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-849116966048385549?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/849116966048385549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2011/08/august-reading-materials.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/849116966048385549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/849116966048385549'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2011/08/august-reading-materials.html' title='august reading materials'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-4787786646803641207</id><published>2011-07-12T21:35:00.001-05:00</published><updated>2011-07-26T18:05:06.857-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Python Exercises - Count the Words</title><content type='html'>My Python solution to the problem "count the frequency of words from a given input stream" is &lt;a href="http://ideone.com/p2ybM"&gt;here&lt;/a&gt; at &lt;a href="http://ideone.com/"&gt;ideone.com&lt;/a&gt;.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I started out by using a For loop to send each word from a single line to the dictionary mapping function. Once this was working and proved that the dictionary mapping function worked, I&amp;nbsp;re-factored&amp;nbsp;the code to use the map() function instead of the For loop. Perhaps I could save some time in the mapping function (named wordcounter) by using the .setdefault method of the Dictionary object instead of explicitly checking for a key's existence in the Dictionary every time the function is called.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Reading materials:&lt;br /&gt;&lt;a href="http://docs.python.org/library/stdtypes.html#dict"&gt;http://docs.python.org/library/stdtypes.html#dict&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://docs.python.org/library/functions.html#map"&gt;http://docs.python.org/library/functions.html#map&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-4787786646803641207?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/4787786646803641207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2011/07/map-and-dictionary.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/4787786646803641207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/4787786646803641207'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2011/07/map-and-dictionary.html' title='Python Exercises - Count the Words'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-4282252642287434423</id><published>2011-07-12T12:25:00.001-05:00</published><updated>2011-07-29T11:20:21.855-05:00</updated><title type='text'>Reducing fragility in test automation</title><content type='html'>I would like to learn more about this subject. Here are some reading materials for now.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://marlenacompton.com/?p=424"&gt;http://marlenacompton.com/?p=424&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.satisfice.com/articles/test_automation_snake_oil.pdf"&gt;http://www.satisfice.com/articles/test_automation_snake_oil.pdf&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.kaner.com/pdfs/autosqa.pdf"&gt;http://www.kaner.com/pdfs/autosqa.pdf&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-4282252642287434423?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/4282252642287434423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2011/07/reducing-fragility-in-test-automation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/4282252642287434423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/4282252642287434423'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2011/07/reducing-fragility-in-test-automation.html' title='Reducing fragility in test automation'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-3178137288401948863</id><published>2011-06-17T15:32:00.002-05:00</published><updated>2011-06-17T15:32:46.581-05:00</updated><title type='text'>Check out my robot mower!</title><content type='html'>My robot lawn mower project is alive! See&amp;nbsp;&lt;a href="http://www.d33z.com/p/robot-mower.html"&gt;http://www.d33z.com/p/robot-mower.html&lt;/a&gt;&amp;nbsp;for build details, videos, etc. Yay!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-3178137288401948863?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/3178137288401948863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2011/06/check-out-my-robot-mower.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/3178137288401948863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/3178137288401948863'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2011/06/check-out-my-robot-mower.html' title='Check out my robot mower!'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-5151854683964042031</id><published>2011-05-06T22:51:00.000-05:00</published><updated>2011-05-11T19:04:13.805-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python Exercises - Reverse a String</title><content type='html'>As an exercise to gain more experience with&amp;nbsp;&lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;, I wrote a function to reverse a string. Playing with &lt;a href="http://ideone.com/"&gt;ideone.com&lt;/a&gt;'s online Python IDE was also a bonus. You can run the following code &lt;a href="http://ideone.com/ixeJx"&gt;here&lt;/a&gt;. This is probably not the best way to solve this problem, but it works.&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Helvetica; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="source" id="source" style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;table class="python" style="background-color: #f0f0f0; border-bottom-color: rgb(208, 208, 208); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(208, 208, 208); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(208, 208, 208); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(208, 208, 208); border-top-style: solid; border-top-width: 1px; color: #000066; font-family: monospace; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; width: 430px;"&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr class="li1"&gt;&lt;td class="ln" style="border-right-color: rgb(192, 192, 192); border-right-style: dotted; border-right-width: 2px; padding-left: 5px; vertical-align: top; width: 20px;"&gt;&lt;pre class="de1" style="color: #707070; margin-bottom: 0px; margin-top: 0px; padding-bottom: 5px; padding-right: 8px; padding-top: 5px; text-align: right;"&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;5&lt;br /&gt;6&lt;br /&gt;7&lt;br /&gt;8&lt;br /&gt;9&lt;br /&gt;10&lt;br /&gt;11&lt;br /&gt;12&lt;br /&gt;13&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class="de1" style="vertical-align: top;"&gt;&lt;pre class="de1" style="margin-bottom: 0px; margin-top: 0px; padding-bottom: 5px; padding-left: 10px; padding-top: 3px;"&gt;&lt;span class="co1" style="color: grey; font-style: italic; line-height: 13px !important;"&gt;# implement a function that reverses a string&lt;/span&gt;&lt;br /&gt;&lt;span class="kw1" style="color: #ff7700; font-weight: bold; line-height: 13px !important;"&gt;def&lt;/span&gt; reverse_string&lt;span class="br0" style="color: black; line-height: 13px !important;"&gt;(&lt;/span&gt;in_string&lt;span class="br0" style="color: black; line-height: 13px !important;"&gt;)&lt;/span&gt;:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1" style="color: grey; font-style: italic; line-height: 13px !important;"&gt;# reverse string using brute force&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1" style="color: #ff7700; font-weight: bold; line-height: 13px !important;"&gt;print&lt;/span&gt; &lt;span class="st0" style="color: darkslateblue; line-height: 13px !important;"&gt;" input is %s"&lt;/span&gt; &lt;span class="sy0" style="color: #66cc66; line-height: 13px !important;"&gt;%&lt;/span&gt; in_string&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; length = &lt;span class="kw2" style="color: green; line-height: 13px !important;"&gt;len&lt;/span&gt;&lt;span class="br0" style="color: black; line-height: 13px !important;"&gt;(&lt;/span&gt;in_string&lt;span class="br0" style="color: black; line-height: 13px !important;"&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; out_string = &lt;span class="st0" style="color: darkslateblue; line-height: 13px !important;"&gt;""&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1" style="color: #ff7700; font-weight: bold; line-height: 13px !important;"&gt;for&lt;/span&gt; position &lt;span class="kw1" style="color: #ff7700; font-weight: bold; line-height: 13px !important;"&gt;in&lt;/span&gt; &lt;span class="kw2" style="color: green; line-height: 13px !important;"&gt;range&lt;/span&gt;&lt;span class="br0" style="color: black; line-height: 13px !important;"&gt;(&lt;/span&gt;length, &lt;span class="nu0" style="color: orangered; line-height: 13px !important;"&gt;0&lt;/span&gt;, -&lt;span class="nu0" style="color: orangered; line-height: 13px !important;"&gt;1&lt;/span&gt;&lt;span class="br0" style="color: black; line-height: 13px !important;"&gt;)&lt;/span&gt;:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; out_string += in_string&lt;span class="br0" style="color: black; line-height: 13px !important;"&gt;[&lt;/span&gt;position-&lt;span class="nu0" style="color: orangered; line-height: 13px !important;"&gt;1&lt;/span&gt;&lt;span class="br0" style="color: black; line-height: 13px !important;"&gt;]&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1" style="color: #ff7700; font-weight: bold; line-height: 13px !important;"&gt;print&lt;/span&gt; &lt;span class="st0" style="color: darkslateblue; line-height: 13px !important;"&gt;"output is %s"&lt;/span&gt; &lt;span class="sy0" style="color: #66cc66; line-height: 13px !important;"&gt;%&lt;/span&gt; out_string&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1" style="color: #ff7700; font-weight: bold; line-height: 13px !important;"&gt;return&lt;/span&gt; out_string&lt;br /&gt;&amp;nbsp;&lt;br /&gt;a = reverse_string&lt;span class="br0" style="color: black; line-height: 13px !important;"&gt;(&lt;/span&gt;&lt;span class="st0" style="color: darkslateblue; line-height: 13px !important;"&gt;"1234"&lt;/span&gt;&lt;span class="br0" style="color: black; line-height: 13px !important;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="kw1" style="color: #ff7700; font-weight: bold; line-height: 13px !important;"&gt;print&lt;/span&gt; a&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/pre&gt;&lt;label class="bottom_label" style="display: block; margin-bottom: 3px; margin-left: 0px; margin-top: 3px;"&gt;While I am aware that Python already provides a&amp;nbsp;&lt;a href="http://docs.python.org/tutorial/datastructures.html"&gt;reversed()&lt;/a&gt;&amp;nbsp;function as well as a .reverse() method for List objects, I wanted to gain the experience of having written a function to perform the task myself, so I wrote one. In retrospect, reading&amp;nbsp;&lt;a href="http://docs.python.org/library/stdtypes.html#typesseq"&gt;this&lt;/a&gt;&amp;nbsp;sooner might have helped me write this code in far fewer lines.&amp;nbsp; &lt;/label&gt;&lt;label class="bottom_label" style="display: block; margin-bottom: 3px; margin-left: 0px; margin-top: 3px;"&gt;&lt;br /&gt;&lt;/label&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-5151854683964042031?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/5151854683964042031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2011/05/python-exercises.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/5151854683964042031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/5151854683964042031'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2011/05/python-exercises.html' title='Python Exercises - Reverse a String'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-1152657643905286787</id><published>2011-05-05T13:57:00.000-05:00</published><updated>2011-05-05T18:05:00.363-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>Robot Framework</title><content type='html'>A great blog post by &lt;a href="http://www.virtuousprogrammer.com/?p=264"&gt;Frank Berthold&lt;/a&gt; helped me learn to use &lt;a href="http://code.google.com/p/robotframework/"&gt;Robot Framework&lt;/a&gt;. Some questions remained for me after reading Robot Framework's &lt;a href="http://robotframework.googlecode.com/hg/doc/quickstart/quickstart.html"&gt;Quick Start Guide&lt;/a&gt;, and Frank's blog post answered them. My application was a content management system, and for historical purposes is available online &lt;a href="http://learn-more-stuff.appspot.com/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here is one of the test suites that I came up with for testing the application:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: x-small;"&gt;*** Testcases ***&lt;br /&gt;Homepage allows Admin Login&lt;br /&gt;&amp;nbsp;&amp;nbsp; Sign in as Admin&lt;br /&gt;&lt;br /&gt;Homepage allows Admin to Add an Entry&lt;br /&gt;&amp;nbsp;&amp;nbsp; Click Link&amp;nbsp; Add&lt;br /&gt;&amp;nbsp;&amp;nbsp; Page Should Contain&amp;nbsp; Add a blog entry&lt;br /&gt;&lt;br /&gt;Add an Entry page allows adding a test Entry&lt;br /&gt;&amp;nbsp;&amp;nbsp; Input Text&amp;nbsp; title&amp;nbsp; Testing Entry Title&lt;br /&gt;&amp;nbsp;&amp;nbsp; Input Text&amp;nbsp; subtitle&amp;nbsp; Subtitle for Testing Entry&lt;br /&gt;&amp;nbsp;&amp;nbsp; Input Text&amp;nbsp; content&amp;nbsp; This is a test Entry. &lt;br /&gt;&amp;nbsp;&amp;nbsp; Click Button&amp;nbsp; Save&lt;br /&gt;&amp;nbsp;&amp;nbsp; Page Should Not Contain&amp;nbsp; Error&lt;br /&gt;&lt;br /&gt;Homepage shows test Entry&lt;br /&gt;&amp;nbsp;&amp;nbsp; Page Should Contain&amp;nbsp;&amp;nbsp; Testing Entry Title&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-1152657643905286787?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/1152657643905286787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2011/05/robot-framework.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/1152657643905286787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/1152657643905286787'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2011/05/robot-framework.html' title='Robot Framework'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-8844882602081088621</id><published>2011-04-21T09:53:00.001-05:00</published><updated>2011-04-26T12:33:41.537-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iproute2'/><category scheme='http://www.blogger.com/atom/ns#' term='routing'/><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>fwmark + iproute2</title><content type='html'>&lt;a href="http://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.netfilter.html"&gt;http://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.netfilter.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can set up policy routes using fwmarks in Linux using iproute2. Awesome!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-8844882602081088621?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/8844882602081088621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2011/04/fwmark-iproute2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/8844882602081088621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/8844882602081088621'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2011/04/fwmark-iproute2.html' title='fwmark + iproute2'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-3253848283698401117</id><published>2011-04-13T20:23:00.000-05:00</published><updated>2011-04-13T20:23:38.890-05:00</updated><title type='text'>Matt's Fault Isolation Model</title><content type='html'>An ex-colleague of mine introduced me to a new way to look at problems, and I thought I would share it. The person that explained this to me was Matt Brace.&lt;br /&gt;&lt;br /&gt;All problems are either in software, hardware, or configuration. I'll elaborate later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-3253848283698401117?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/3253848283698401117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2011/04/matts-fault-isolation-model.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/3253848283698401117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/3253848283698401117'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2011/04/matts-fault-isolation-model.html' title='Matt&apos;s Fault Isolation Model'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-7035242219269392672</id><published>2011-04-07T20:20:00.000-05:00</published><updated>2011-04-26T12:34:24.734-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iproute2'/><category scheme='http://www.blogger.com/atom/ns#' term='routing'/><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Multiple routing tables for Linux</title><content type='html'>Here are some reading materials related to policy routing and multiple routing tables in Linux. You may find this useful for tunneling, IPv4 NAT, routing, and wan load balancing.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lartc.org/howto/lartc.rpdb.html"&gt;http://lartc.org/howto/lartc.rpdb.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://linux-ip.net/html/routing-rpdb.html"&gt;http://linux-ip.net/html/routing-rpdb.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.policyrouting.org/iproute2.doc.html"&gt;http://www.policyrouting.org/iproute2.doc.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mailman.ds9a.nl/pipermail/lartc/2003q3/010086.html"&gt;http://mailman.ds9a.nl/pipermail/lartc/2003q3/010086.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-7035242219269392672?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/7035242219269392672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2011/04/multiple-routing-tables-for-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/7035242219269392672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/7035242219269392672'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2011/04/multiple-routing-tables-for-linux.html' title='Multiple routing tables for Linux'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-6902381169173930624</id><published>2011-04-03T16:40:00.000-05:00</published><updated>2011-04-11T21:00:59.823-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>Musical Chairs with Websites</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--eVMhkbxrPg/TaOyIdmCBWI/AAAAAAAADKo/z1n-sd9lP1Y/s1600/blogger_logo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="198" src="http://4.bp.blogspot.com/--eVMhkbxrPg/TaOyIdmCBWI/AAAAAAAADKo/z1n-sd9lP1Y/s200/blogger_logo.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;I've been trying to decide where to host my blog.&lt;br /&gt;&lt;br /&gt;In the beginning, there was blogger. I used blogger and flickr together for sharing pictures from my mobile phone. The picture quality was terrible, due to the device, and I never had any time to fill in descriptions for the pictures. The blogger side of things just became a list of pictures that were also available on flickr, which didn't make a lot of sense.&lt;br /&gt;&lt;br /&gt;Once I needed more than just a blog, I hosted my own LAMP web server and used Wordpress. That worked for some time but ended up slowing to a halt until I just stopped updating anything. I later transitioned the site to a friends shared hosting server where it could live with other websites and not cost me a thing. &lt;br /&gt;&lt;br /&gt;Now, I have come back full-circle to blogger. I am no longer hosting or managing a web server. I just need to decide between picasa and flickr.&lt;br /&gt;&lt;br /&gt;Thoughts? Leave a comment...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-6902381169173930624?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/6902381169173930624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2011/04/musical-chairs-with-websites.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/6902381169173930624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/6902381169173930624'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2011/04/musical-chairs-with-websites.html' title='Musical Chairs with Websites'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/--eVMhkbxrPg/TaOyIdmCBWI/AAAAAAAADKo/z1n-sd9lP1Y/s72-c/blogger_logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-6044797320281032612</id><published>2011-03-23T03:24:00.000-05:00</published><updated>2011-04-03T16:55:09.111-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><title type='text'>http byte range request</title><content type='html'>&lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2"&gt;http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://en.wikipedia.org/wiki/List_of_HTTP_header_fields"&gt;http://en.wikipedia.org/wiki/List_of_HTTP_header_fields&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.web-polygraph.org/docs/userman/ranges.html"&gt;http://www.web-polygraph.org/docs/userman/ranges.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://labs.apache.org/webarch/http/draft-fielding-http/p5-range.html"&gt;http://labs.apache.org/webarch/http/draft-fielding-http/p5-range.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html"&gt;http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-6044797320281032612?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/6044797320281032612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2011/03/http-byte-range-request.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/6044797320281032612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/6044797320281032612'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2011/03/http-byte-range-request.html' title='http byte range request'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-6258628915385399522</id><published>2010-04-09T05:51:00.000-05:00</published><updated>2011-04-03T16:55:09.113-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='house projects'/><title type='text'>saving money on the electric bill</title><content type='html'>After receiving a fairly large (&amp;gt;$200) electric bill for a month in which we did not use heat or a/c, I was convinced that I needed to audit my power usage habits. Here are a few things that I've done to try and reduce my electric bill:&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;Moved d33z.com to shared hosting. Now I don't have to run a server 24x7 at home.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Replaced ancient Cisco switch for Green D-Link. The Cisco cost $20/mo to run, the D-Link costs about $1.50/mo.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Add power strips to entertainment systems, and turn them off when not in use.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Reduce fish tank light timer to only light after sunset.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;Bleh. I'm hoping just the above will cut out about $50 on my monthly bill.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-6258628915385399522?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/6258628915385399522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2010/04/saving-money-on-electric-bill.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/6258628915385399522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/6258628915385399522'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2010/04/saving-money-on-electric-bill.html' title='saving money on the electric bill'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-8011107383133915653</id><published>2010-03-04T06:25:00.000-06:00</published><updated>2011-04-03T16:55:09.116-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><title type='text'>opie keys: One-time Passwords In Everything</title><content type='html'>&lt;strong&gt;OPIE&lt;/strong&gt; is the initialism of "One time Passwords In Everything". Opie is a &lt;a title="Capability Maturity Model" href="http://en.wikipedia.org/wiki/Capability_Maturity_Model"&gt;mature&lt;/a&gt;, &lt;a title="Unix-like" href="http://en.wikipedia.org/wiki/Unix-like"&gt;Unix-like&lt;/a&gt; login and &lt;a title="Password" href="http://en.wikipedia.org/wiki/Password"&gt;password&lt;/a&gt; package installed on the server and the client which makes untrusted networks safer against password-sniffing &lt;a title="Packet analyzer" href="http://en.wikipedia.org/wiki/Packet_analyzer"&gt;packet-analysis&lt;/a&gt; software like &lt;a title="DSniff" href="http://en.wikipedia.org/wiki/DSniff"&gt;dSniff&lt;/a&gt; and safe against &lt;a title="Shoulder surfing (computer security)" href="http://en.wikipedia.org/wiki/Shoulder_surfing_%28computer_security%29"&gt;Shoulder surfing&lt;/a&gt;. It works by circumventing the delayed attack method because the same password is never used twice after installing Opie. OPIE implements a &lt;a title="One-time password" href="http://en.wikipedia.org/wiki/One-time_password"&gt;one-time password&lt;/a&gt; (OTP) scheme based on &lt;a title="S/key" href="http://en.wikipedia.org/wiki/S/key"&gt;S/key&lt;/a&gt;, which will require a secret &lt;a title="Passphrase" href="http://en.wikipedia.org/wiki/Passphrase"&gt;passphrase&lt;/a&gt; (not echoed) to generate a password for the current session, or a list of passwords you can print and carry on your person.&lt;br/&gt;&lt;br/&gt;OPIE uses an MD4 or MD5 &lt;a title="Hash function" href="http://en.wikipedia.org/wiki/Hash_function"&gt;hash function&lt;/a&gt; to generate passwords.&lt;br/&gt;&lt;br/&gt;OPIE can restrict its logins based on IP address. It uses its own &lt;a title="Passwd" href="http://en.wikipedia.org/wiki/Passwd"&gt;passwd&lt;/a&gt; and login modules.&lt;br/&gt;&lt;br/&gt;Sources:&lt;br/&gt;&lt;br/&gt;&lt;a href="http://en.wikipedia.org/wiki/OPIE_Authentication_System" target="_blank"&gt;http://en.wikipedia.org/wiki/OPIE_Authentication_System&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.freebsd.org/doc/handbook/one-time-passwords.html" target="_blank"&gt;http://www.freebsd.org/doc/handbook/one-time-passwords.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-8011107383133915653?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/8011107383133915653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2010/03/opie-keys-one-time-passwords-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/8011107383133915653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/8011107383133915653'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2010/03/opie-keys-one-time-passwords-in.html' title='opie keys: One-time Passwords In Everything'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-4600098809031940306</id><published>2010-02-02T12:49:00.000-06:00</published><updated>2011-04-03T16:55:09.118-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><title type='text'>ipsec: Authentication Header (AH) and Encapsulating Security Payload
(ESP)</title><content type='html'>The IPsec suite is a framework of &lt;a title="Open standard" href="http://en.wikipedia.org/wiki/Open_standard"&gt;open standards&lt;/a&gt;. IPsec uses the following &lt;a title="Protocol (computing)" href="http://en.wikipedia.org/wiki/Protocol_%28computing%29"&gt;protocols&lt;/a&gt; to perform various functions:&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;&lt;a title="Internet key exchange" href="http://en.wikipedia.org/wiki/Internet_key_exchange"&gt;Internet key exchange&lt;/a&gt; (IKE and IKEv2) to set up a &lt;a title="Security association" href="http://en.wikipedia.org/wiki/Security_association"&gt;security association&lt;/a&gt; (SA) by handling negotiation of protocols and algorithms and to generate the encryption and authentication keys to be used by IPsec.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;&lt;a title="IPsec" href="http://en.wikipedia.org/wiki/IPsec#Authentication_Header"&gt;Authentication Header (AH)&lt;/a&gt; to provide connectionless &lt;a title="Integrity" href="http://en.wikipedia.org/wiki/Integrity"&gt;integrity&lt;/a&gt; and data origin &lt;a title="Authentication" href="http://en.wikipedia.org/wiki/Authentication"&gt;authentication&lt;/a&gt; for IP &lt;a title="Datagrams" href="http://en.wikipedia.org/wiki/Datagrams"&gt;datagrams&lt;/a&gt; and to provide protection against &lt;a title="Replay attack" href="http://en.wikipedia.org/wiki/Replay_attack"&gt;replay attacks&lt;/a&gt;.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;&lt;a title="IPsec" href="http://en.wikipedia.org/wiki/IPsec#Encapsulating_Security_Payload"&gt;Encapsulating Security Payload (ESP)&lt;/a&gt; to provide &lt;a title="Confidentiality" href="http://en.wikipedia.org/wiki/Confidentiality"&gt;confidentiality&lt;/a&gt;, data origin &lt;a title="Authentication" href="http://en.wikipedia.org/wiki/Authentication"&gt;authentication&lt;/a&gt;, connectionless &lt;a title="Integrity" href="http://en.wikipedia.org/wiki/Integrity"&gt;integrity&lt;/a&gt;, an anti-replay service (a form of partial sequence integrity), and limited traffic flow confidentiality.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;The IPSec headers (AH and ESP) can be used in transport mode or tunnel mode. In transport mode, the original IP header is followed by the AH or ESP header. If ESP is used in transport mode, only the upper-layer (e.g., TCP, UDP, IGMP) is encrypted. The IP header is not encrypted.&lt;br/&gt;&lt;br/&gt;Additional Reading:&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.networksorcery.com/enp/protocol/esp.htm" target="_blank"&gt;http://www.networksorcery.com/enp/protocol/esp.htm&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.networksorcery.com/enp/protocol/ah.htm"&gt;http://www.networksorcery.com/enp/protocol/ah.htm&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://docs.hp.com/en/J4255-90011/ch04s03.html" target="_blank"&gt;http://docs.hp.com/en/J4255-90011/ch04s03.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://en.wikipedia.org/wiki/IPsec" target="_blank"&gt;http://en.wikipedia.org/wiki/IPsec&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-4600098809031940306?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/4600098809031940306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2010/02/ipsec-authentication-header-ah-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/4600098809031940306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/4600098809031940306'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2010/02/ipsec-authentication-header-ah-and.html' title='ipsec: Authentication Header (AH) and Encapsulating Security Payload&#xA;(ESP)'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-8942137461908508443</id><published>2010-01-22T09:43:00.000-06:00</published><updated>2011-04-03T16:55:09.121-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><title type='text'>Virtual Private Dialup Network (VPDN)</title><content type='html'>A VPDN is a network that extends remote access to a private network using a shared infrastructure. VPDNs use Layer 2 tunnel technologies (L2F, L2TP, and PPTP) to extend the Layer 2 and higher parts of the network connection from a remote user across an ISP network to a private network. VPDNs are a cost effective method of establishing a long distance, point-to-point connection between remote dial users and a private network.&lt;br/&gt;&lt;br/&gt;Reading:&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.cisco.com/en/US/tech/tk801/tk703/tsd_technology_support_protocol_home.html" target="_blank"&gt;http://www.cisco.com/en/US/tech/tk801/tk703/tsd_technology_support_protocol_home.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.cisco.com/en/US/tech/tk801/tk703/tech_configuration_examples_list.html" target="_blank"&gt;Cisco VPDN Configuration Examples and TechNotes&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-8942137461908508443?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/8942137461908508443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2010/01/virtual-private-dialup-network-vpdn.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/8942137461908508443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/8942137461908508443'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2010/01/virtual-private-dialup-network-vpdn.html' title='Virtual Private Dialup Network (VPDN)'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-5050794800144336463</id><published>2009-12-29T07:15:00.000-06:00</published><updated>2011-04-03T16:55:09.123-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><title type='text'>l2tp: layer 2 tunneling protocol</title><content type='html'>In computer networking, Layer 2 Tunneling Protocol (L2TP) is a tunneling protocol used to support virtual private networks (VPNs). It does not provide any encryption or confidentiality by itself; it relies on an encryption protocol that it passes within the tunnel to provide privacy.[1]&lt;br/&gt;&lt;br/&gt;Although L2TP acts like a Data Link Layer protocol in the OSI model, L2TP is in fact a Session Layer protocol,[2] and uses the registered UDP port 1701. (see List of TCP and UDP port numbers).&lt;br/&gt;&lt;br/&gt;(shamelessly copied from wikipedia)&lt;br/&gt;&lt;br/&gt;Additional Reading:&lt;br/&gt;&lt;br/&gt;&lt;a href="http://en.wikipedia.org/wiki/Layer_2_Tunneling_Protocol" target="_blank"&gt;http://en.wikipedia.org/wiki/Layer_2_Tunneling_Protocol&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.cisco.com/en/US/docs/ios/12_0t/12_0t1/feature/guide/l2tpT.html" target="_blank"&gt;http://www.cisco.com/en/US/docs/ios/12_0t/12_0t1/feature/guide/l2tpT.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.cisco.com/en/US/tech/tk801/tk703/technologies_tech_note09186a0080094c4f.shtml" target="_blank"&gt;http://www.cisco.com/en/US/tech/tk801/tk703/technologies_tech_note09186a0080094c4f.shtml&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.iana.org/assignments/l2tp-parameters" target="_blank"&gt;http://www.iana.org/assignments/l2tp-parameters&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-5050794800144336463?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/5050794800144336463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2009/12/l2tp-layer-2-tunneling-protocol.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/5050794800144336463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/5050794800144336463'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2009/12/l2tp-layer-2-tunneling-protocol.html' title='l2tp: layer 2 tunneling protocol'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-6025582245975366379</id><published>2009-12-18T09:47:00.000-06:00</published><updated>2011-04-03T16:55:09.124-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><title type='text'>protocol overhead</title><content type='html'>Additional Reading:&lt;br/&gt;&lt;br/&gt;&lt;a href="http://sd.wareonearth.com/~phil/net/overhead/"&gt;http://sd.wareonearth.com/~phil/net/overhead/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://en.wikipedia.org/wiki/Protocol_overhead"&gt;http://en.wikipedia.org/wiki/Protocol_overhead&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-6025582245975366379?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/6025582245975366379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2009/12/protocol-overhead.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/6025582245975366379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/6025582245975366379'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2009/12/protocol-overhead.html' title='protocol overhead'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-5545239158946124912</id><published>2009-11-17T07:30:00.000-06:00</published><updated>2011-04-03T16:55:09.126-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><title type='text'>Iptables : Remove an entry</title><content type='html'>Sorry it's been a while.&lt;br/&gt;&lt;pre&gt;You can either delete by number or by recreating the rule. "iptables -D&lt;br/&gt;INPUT 3" will remove the 3rd (counting from 1) rule. Or "iptables -D&lt;br/&gt;INPUT -s 65.75.152.40 -j DROP" will remove the corresponding entry&lt;br/&gt;independent of location. The rules must match exactly though or you'll&lt;br/&gt;get a "Bad rule" error.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.plug.org/pipermail/plug/2004-November/010606.html"&gt;http://www.plug.org/pipermail/plug/2004-November/010606.html&lt;/a&gt;&lt;br/&gt;&lt;a href="http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/ref-guide/s1-iptables-options.html"&gt;http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/ref-guide/s1-iptables-options.html&lt;/a&gt;&lt;br/&gt;&lt;a href="http://netfilter.org/documentation/HOWTO/packet-filtering-HOWTO-7.html"&gt;http://netfilter.org/documentation/HOWTO/packet-filtering-HOWTO-7.html&lt;/a&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-5545239158946124912?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/5545239158946124912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2009/11/iptables-remove-entry.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/5545239158946124912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/5545239158946124912'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2009/11/iptables-remove-entry.html' title='Iptables : Remove an entry'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-9213940590866471387</id><published>2009-11-16T08:16:00.000-06:00</published><updated>2011-04-03T16:55:09.128-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><title type='text'>xargs and find</title><content type='html'>&lt;strong&gt;xargs&lt;/strong&gt; is a command on &lt;a title="Unix" href="http://en.wikipedia.org/wiki/Unix"&gt;Unix&lt;/a&gt; and most &lt;a title="Unix-like" href="http://en.wikipedia.org/wiki/Unix-like"&gt;Unix-like&lt;/a&gt; &lt;a title="Operating system" href="http://en.wikipedia.org/wiki/Operating_system"&gt;operating systems&lt;/a&gt;. It is useful when one wants to pass a large number of arguments to a command. Until &lt;a title="Linux kernel" href="http://en.wikipedia.org/wiki/Linux_kernel"&gt;Linux kernel&lt;/a&gt; 2.6.23, arbitrarily long lists of parameters could not be passed to a command &lt;sup id="cite_ref-0"&gt;&lt;a href="http://en.wikipedia.org/wiki/Xargs#cite_note-0"&gt;&lt;span&gt;[&lt;/span&gt;1&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;, so xargs will break the list of arguments into sublists small enough to be acceptable.&lt;br/&gt;&lt;br/&gt;Additional Reading:&lt;br/&gt;&lt;br/&gt;&lt;a href="http://en.wikipedia.org/wiki/Xargs"&gt;http://en.wikipedia.org/wiki/Xargs&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.softpanorama.org/Tools/xargs.shtml"&gt;http://www.softpanorama.org/Tools/xargs.shtml&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.linuxplanet.com/linuxplanet/tutorials/6522/1/"&gt;http://www.linuxplanet.com/linuxplanet/tutorials/6522/1/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-9213940590866471387?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/9213940590866471387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2009/11/xargs-and-find.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/9213940590866471387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/9213940590866471387'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2009/11/xargs-and-find.html' title='xargs and find'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-4202026940518579174</id><published>2009-11-03T07:58:00.000-06:00</published><updated>2011-04-03T16:55:09.130-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><title type='text'>tail -f multiple files</title><content type='html'>Pass more than one filename to tail -f and it will follow each file and let you know when one changes.&lt;br/&gt;&lt;br/&gt;daniel@mycomputer:~$ tail -f /var/log/dmesg /var/log/kern.log&lt;br/&gt;==&amp;gt; /var/log/dmesg &amp;lt;==&lt;br/&gt;[   14.951256] type=1505 audit(1256945274.318:9): operation="profile_load" name="/usr/sbin/tcpdump" name2="default" pid=2001&lt;br/&gt;[   16.052417] e1000e 0000:00:19.0: irq 2300 for MSI/MSI-X&lt;br/&gt;[   16.108300] e1000e 0000:00:19.0: irq 2300 for MSI/MSI-X&lt;br/&gt;[   16.108533] ADDRCONF(NETDEV_UP): eth0: link is not ready&lt;br/&gt;[   17.572692] Bluetooth: BNEP (Ethernet Emulation) ver 1.3&lt;br/&gt;[   17.572694] Bluetooth: BNEP filters: protocol multicast&lt;br/&gt;[   17.578508] Bridge firewalling registered&lt;br/&gt;[   18.272754] 0000:00:19.0: eth0: Link is Up 100 Mbps Full Duplex, Flow Control: None&lt;br/&gt;[   18.272757] 0000:00:19.0: eth0: 10/100 speed: disabling TSO&lt;br/&gt;[   18.272906] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready&lt;br/&gt;&lt;br/&gt;==&amp;gt; /var/log/kern.log &amp;lt;==&lt;br/&gt;Nov  2 09:39:21 mycomputer kernel: [231116.479553] [drm] Resetting GPU&lt;br/&gt;Nov  2 09:39:21 mycomputer kernel: [231116.479608] [drm] writeback test succeeded in 1 usecs&lt;br/&gt;Nov  2 09:39:25 mycomputer kernel: [231120.406627] CPU0 attaching NULL sched-domain.&lt;br/&gt;Nov  2 09:39:25 mycomputer kernel: [231120.406630] CPU1 attaching NULL sched-domain.&lt;br/&gt;Nov  2 09:39:25 mycomputer kernel: [231120.407377] CPU0 attaching sched-domain:&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-4202026940518579174?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/4202026940518579174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2009/11/tail-f-multiple-files.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/4202026940518579174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/4202026940518579174'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2009/11/tail-f-multiple-files.html' title='tail -f multiple files'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8964532935885306110.post-3830424615048363379</id><published>2009-11-02T08:40:00.000-06:00</published><updated>2011-04-03T16:55:09.132-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><title type='text'>Bash Numeric Comparison</title><content type='html'>Do not use &amp;gt; or &amp;lt; when comparing numbers in BASH. It doesn't work. It tries to redirect output instead of performing the comparison. Use -lt or -gt instead.&lt;br/&gt;&lt;br/&gt;Additional Reading:&lt;br/&gt;&lt;br/&gt;&lt;a href="http://fvue.nl/wiki/Bash:_Numeric_comparison"&gt;http://fvue.nl/wiki/Bash:_Numeric_comparison&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://tldp.org/LDP/abs/html/"&gt;http://tldp.org/LDP/abs/html/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8964532935885306110-3830424615048363379?l=www.d33z.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.d33z.com/feeds/3830424615048363379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.d33z.com/2009/11/bash-numeric-comparison.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/3830424615048363379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8964532935885306110/posts/default/3830424615048363379'/><link rel='alternate' type='text/html' href='http://www.d33z.com/2009/11/bash-numeric-comparison.html' title='Bash Numeric Comparison'/><author><name>Daniel Epperson</name><uri>http://www.blogger.com/profile/01503365837418448865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
