<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>Fsk141.com</title>
 
 <link href="http://fsk141.com.com/" />
 <updated>2013-03-13T01:31:57-07:00</updated>
 <id>http://fsk141.com</id>
 <author>
   <name>Fsk141.com</name>
   <email>jonny@fsk141.com</email>
 </author>

 
 <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Fsk141" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="fsk141" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
   <title>Conky Templates (Do more, Write Less)</title>
   <link href="http://fsk141.com/conky-templates-do-more-write-less" />
   <updated>2012-09-05T00:00:00-07:00</updated>
   <id>http://fsk141.com/conky-templates-do-more-write-less</id>
   <content type="html">
&lt;h2 id="introduction"&gt;Introduction:&lt;/h2&gt;
&lt;p&gt;Conky is a powerful tool that gives you information and statistics about your PC. With all of the possible variables that you can choose from, and multiple things you can monitor it becomes easy to have a bloated config. Repeated content, color associations, naming conventions, etc. Repetitive information such as network interfaces, cpu monitoring, and hdd info can easily be templated. Not only to make your config easier to read, but will save you a caboodle of keystrokes from not having to type repetitive content.&lt;/p&gt;

&lt;p&gt;&lt;a href="/a/2012-09-05-conky/conky_code.png"&gt;&lt;img src="/a/2012-09-05-conky/conky_code_600x600.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="diving-in"&gt;Diving in:&lt;/h2&gt;
&lt;p&gt;Moving right along, I assume that you know the basics to conky. This isn&amp;#8217;t a primer for conky, rather just a primer on conky templates.	Conky templates are one of the more powerful features to conky, and I&amp;#8217;m always suprised to see so many people using repetitive code in their ~/.conkyrc. I aim to convert you :)&lt;/p&gt;

&lt;p&gt;The conky man page describes templates as such:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;templateN
Define a template for later use inside TEXT  segments.  Substitute N  by  a digit between 0 and 9, inclusively. The value of the variable is being inserted into the stuff below TEXT at the corresponding  position,  but before some substitutions are applied:
'\n' -&amp;gt; newline
'\\' -&amp;gt; backslash
'\ ' -&amp;gt; space
'\N' -&amp;gt; template argument N
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Simply put, you have the ability to create functions that you can call from within your ~/.conkyrc. To get started lets draft a sample template &amp;amp;.&lt;/p&gt;

&lt;h3 id="declaring-the-template"&gt;Declaring the template:&lt;/h3&gt;
&lt;p&gt;Open your ~/.conkyrc with your favorite text editor, and start by declaring a template:&lt;/p&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;#template0 (cpu) 1:name 2:number
template0 ${color0}\1) ${color}${freq_g \2}Ghz | ${cpu \2}% ${alignr}${cpubar \2 5,70}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;The following code is what I use for CPU monitoring in my .conkyrc. The first line is a comment defining the template:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#template0 -- name of the template (must be in the form of templateN (where N is a number 1-10)
(cpu) -- friendly name
1:name -- name to display on conky output
2:number -- number of cpu to pull stats from
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To specify a new variable, you just need a backslash followed by a number. As you can see in my example I have \1 &amp;amp; \2.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;template0 -- template number
${color0}\1) -- name of cpu -- 1)
${color} -- everything after this be std color (defined at top of config)
${freq_g \2}Ghz | -- get frequency of cpu -- 1.60Ghz |
${cpu \2}% -- get % cpu utilization -- 10%
$alignr}${cpubar \2 5,70} -- show graph of current utilization
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="calling-the-template-in-your-conkyrc"&gt;Calling the template in your ~/.conkyrc&lt;/h3&gt;
&lt;p&gt;Now that you have the building blocks setup, let&amp;#8217;s call the template, and put it to use:&lt;/p&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;TEXT
${color0}UpTime: ${color}$uptime
${color0}Kernel: ${color}$kernel
 ${template0 1 cpu0}
 ${template0 2 cpu1}
 ${template0 3 cpu2}
 ${template0 4 cpu3}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This is the first few lines of my TEXT portion of ~/.conkyrc (the parsable section of conky) I&amp;#8217;m displaying the uptime, kernel version, and then using the cpu template (template0) to display my processor stats. To call the template use the template name, and provide the variables. (first variable is name, second is cpu identifier)&lt;/p&gt;

&lt;p&gt;You will end up with something like the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="/a/2012-09-05-conky/conky_cpu-template.png"&gt;&lt;img src="/a/2012-09-05-conky/conky_cpu-template_600x600.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imagine if you wanted to display the same thing without templates, as you can see, templates rock!:&lt;/p&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;${color0}1) ${color}${freq_g cpu0}Ghz | ${cpu cpu0}% ${alignr}${cpubar cpu0 5,70}
${color0}2) ${color}${freq_g cpu1}Ghz | ${cpu cpu1}% ${alignr}${cpubar cpu1 5,70}
${color0}3) ${color}${freq_g cpu2}Ghz | ${cpu cpu2}% ${alignr}${cpubar cpu2 5,70}
${color0}4) ${color}${freq_g cpu3}Ghz | ${cpu cpu3}% ${alignr}${cpubar cpu3 5,70}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;I have included my current ~/.conkyrc for a few examples relating to templates (I template everything!)&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;background no
update_interval 2.0
total_run_times 0
own_window yes
own_window_transparent yes
own_window_type override
double_buffer yes
maximum_width 300 
draw_shades no
draw_outline yes
draw_borders no
stippled_borders 0
border_width 1
color0 ffffff
default_color d9d9d9
default_shade_color c80000
default_outline_color 383838
alignment middle_right
gap_x 25
gap_y 15
no_buffers yes
cpu_avg_samples 2
net_avg_samples 2
text_buffer_size 2048

#template0 (cpu) 1:name 2:number
template0 ${color0}\1) ${color}${freq_g \2}Ghz | ${cpu \2}% ${alignr}${cpubar \2 5,70}

#template1 (memory) 1:name 2:type
template1 ${color0}\1   ${color}${\2perc}%/${\2max} ${alignr}${\2bar 5,70}

#template2 (hdd) 1:name 2:mountpoint
template2 ${color0}\1   ${color}${fs_used \2}/${fs_size \2} ${alignr}${fs_bar 5,70 \2}

#template3 (network - wired) 1:name 2:interface
template3 ${if_up \2}${color0}\1 ${color}${addr \2}\n ${color0}Down: ${color}${downspeed \2} \n   ${color0}Total Down: ${color}${totaldown \2} ${alignr}${voffset -8}${downspeedgraph \2 10,70}\n\n  ${color0}Up: ${color}${upspeed \2}\n   ${color0}Total Up: ${color}${totalup \2} ${alignr}${voffset -8}${upspeedgraph \2 10,70}${endif}

#template4 (network - wireless) 1:name 2:interface
template4 ${if_up \2}${color0}\1 ${color}${addr \2}@${wireless_essid \2} | ${wireless_link_qual_perc \2}%\n  ${color0}Down: ${color}${downspeed \2} \n   ${color0}Total Down: ${color}${totaldown \2} ${alignr}${voffset -8}${downspeedgraph \2 10,70}\n\n  ${color0}Up: ${color}${upspeed \2}\n   ${color0}Total Up: ${color}${totalup \2} ${alignr}${voffset -8}${upspeedgraph \2 10,70}${endif}


TEXT
${color0}UpTime: ${color}$uptime
${color0}Kernel: ${color}$kernel
 ${template0 1 cpu0}
 ${template0 2 cpu1}
 ${template0 3 cpu2}
 ${template0 4 cpu3}

${color0}Memory:
 ${template1 Mem mem}
 ${template1 Swap swap}

${color0}Disks:
 ${template2 /root /}
 ${template2 /home /home}

${color0}Network:
 ${template3 eth0 eth0}${template3 usb0 usb0}${template4 wlan0 wlan0}

${color0}Tasks:
${execi 5 for i in `/usr/bin/todo.sh -n -d ~/Dropbox/Public/todo.txt/todo.cfg lsprj`;
do echo -e &amp;quot;\n$i:\n`/usr/bin/todo.sh -n -d ~/Dropbox/Public/todo.txt/todo.cfg ls | grep $i | sed 's/^[0-9][0-9]//'`&amp;quot;
done}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Which ends up looking like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="/a/2012-09-05-conky/conky_config-display.png"&gt;&lt;img src="/a/2012-09-05-conky/conky_config-display_600x600.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Templates have been around for quite some time, yet a lot of ~/.conkyrc&amp;#8217;s floating on the internet don&amp;#8217;t take advantage of templating power. Spend a few minutes and update your config, not only will your config become smaller, but will instantly gain attractiveness &amp;amp; readibility.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>The playful side of ls</title>
   <link href="http://fsk141.com/the-playful-side-of-ls" />
   <updated>2012-05-17T23:42:02-07:00</updated>
   <id>http://fsk141.com/the-playful-side-of-ls</id>
   <content type="html">&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2012/05/man_ls.png"&gt;&lt;img src="http://fsk141.com/uploads/2012/05/man_ls.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1 id="introduction"&gt;Introduction&lt;/h1&gt;

&lt;p&gt;I use ls way to many times to count (2215 times in my 10k line ~/.histfile). And while I use this amazing application daily, I didn’t know the power lying in the depths of ls. A short visit to the manfile showed me the beautiful side behind ls. The little things that matter, but didn’t use because it was faster to whip up a quick awk script instead of reading the manpage.&lt;/p&gt;

&lt;h2 id="ls--ls--la"&gt;ls &amp;amp;&amp;amp; ls -la&lt;/h2&gt;

&lt;p&gt;– &lt;strong&gt;First things first, lets show the side of ls that most of us use most:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2012/05/ls.png"&gt;&lt;img src="http://fsk141.com/uploads/2012/05/ls.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2012/05/ls-la.png"&gt;&lt;img src="http://fsk141.com/uploads/2012/05/ls-la.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I would say that ls and ls -la are the most commonly used variations of ls. One shows a simple directory structure, while the other shows executable permissions, ownership, filesize, modification date; all the necessary useful bits that you need to see.&lt;/p&gt;

&lt;p&gt;Lets start with some visuals. If you didn’t notice, my listings are in color (I have ls –color as an alias to ls). But say I wanted to have directories stand out a little more, or symlinks:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2012/05/ls-F.png"&gt;&lt;img src="http://fsk141.com/uploads/2012/05/ls-F.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;According to the manpage there are many indicators &lt;code&gt;(one of */=&amp;gt;@|)&lt;/code&gt;, yet I’m unsure what the other indicators are? If I knew I would have included a few more examples.&lt;/p&gt;

&lt;p&gt;Other than displaying little symbols to specify what the file is, there are a couple formatting options:&lt;/p&gt;

&lt;h2 id="ls--m"&gt;ls -m&lt;/h2&gt;

&lt;p&gt;– &lt;strong&gt;commas (and a similar example with tr):&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2012/05/ls-m_tr.png"&gt;&lt;img src="http://fsk141.com/uploads/2012/05/ls-m_tr.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="ls--1"&gt;ls -1&lt;/h2&gt;

&lt;p&gt;– &lt;strong&gt;single-column (and example with sed – since sed is a stream editor, no options will output results on a new line):&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2012/05/ls-1_sed1.png"&gt;&lt;img src="http://fsk141.com/uploads/2012/05/ls-1_sed1.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="ls---group-directories-first"&gt;ls –group-directories-first&lt;/h2&gt;

&lt;p&gt;– &lt;strong&gt;list folders first &amp;amp; combo list folders first with single-column layout:&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2012/05/ls-group-1.png"&gt;&lt;img src="http://fsk141.com/uploads/2012/05/ls-group-1.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="ls--i"&gt;ls -I&lt;/h2&gt;

&lt;p&gt;– &lt;strong&gt;hide items while listing (–hide is ignored with -a|-A , yet -I|–ignore isn,t):&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2012/05/ls-hide-I.png"&gt;&lt;img src="http://fsk141.com/uploads/2012/05/ls-hide-I.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="ls--lh"&gt;ls -lh&lt;/h2&gt;

&lt;p&gt;– &lt;strong&gt;display with file sizes (will not size folders, only files):&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2012/05/ls-lh.png"&gt;&lt;img src="http://fsk141.com/uploads/2012/05/ls-lh.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="ls--og"&gt;ls -og&lt;/h2&gt;

&lt;p&gt;– &lt;strong&gt;don’t show owner/user | both&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2012/05/ls-og.png"&gt;&lt;img src="http://fsk141.com/uploads/2012/05/ls-og.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="ls--q"&gt;ls -q&lt;/h2&gt;

&lt;p&gt;– &lt;strong&gt;wrap names in quotes (great for scripts that need to follow directories)&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2012/05/ls-q.png"&gt;&lt;img src="http://fsk141.com/uploads/2012/05/ls-q.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="ls--r"&gt;ls -R&lt;/h2&gt;

&lt;p&gt;– &lt;em&gt;*list recursively (prints prettier than ls **&lt;/em&gt;
&lt;a href="http://fsk141.com/uploads/2012/05/ls-R.png"&gt;&lt;img src="http://fsk141.com/uploads/2012/05/ls-R-750x230.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="ls--t"&gt;ls -t&lt;/h2&gt;

&lt;p&gt;– &lt;strong&gt;sort by time (and formatting how time is shown (–time-style=+)&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2012/05/ls-t.png"&gt;&lt;img src="http://fsk141.com/uploads/2012/05/ls-t.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="ls--v"&gt;ls -v&lt;/h2&gt;

&lt;p&gt;– &lt;strong&gt;sort by version (this is my favorite, no need for sort -V; this will sort by version syntax&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2012/05/ls-v.png"&gt;&lt;img src="http://fsk141.com/uploads/2012/05/ls-v.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="ls--x"&gt;ls -X&lt;/h2&gt;

&lt;p&gt;– &lt;strong&gt;sort by extension (alpha order – great for grouping extensions)&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2012/05/ls-X.png"&gt;&lt;img src="http://fsk141.com/uploads/2012/05/ls-X.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1 id="conclusion"&gt;Conclusion:&lt;/h1&gt;

&lt;p&gt;I hope that something new sprouted into your brain pertaining to ls. It seems that the program was written and rewritten to provide a full featured directory listing utility without the need to break out any stream editors like sed or awk. In fact a lot of the simple flags that encompass what is ls I would emulate with piping commands together just because I didn’t think that ls had useful options. Well now I know the power of ls, and learned that I should check out the flags pertaining to even the simplest of programs to find gems of programming prowess.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>/me learns dvorak</title>
   <link href="http://fsk141.com/me-learns-dvorak" />
   <updated>2012-03-17T00:53:13-07:00</updated>
   <id>http://fsk141.com/me-learns-dvorak</id>
   <content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/fsk141/3347936935/"&gt;&lt;img src="https://farm4.staticflickr.com/3599/3347936935_9283eb4126.jpg" alt="AOEU" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I got a little bored and decided to learn dvorak this week. I can type at a slow as molasses speed of about 11 WPM :( I’m painfully typing this whilst I justify learning dvorak not only to preoccupy my time, but also to become more efficient at typing.&lt;/p&gt;

&lt;p&gt;How does this relate to linux you might ask? Well I have a nice tie in to help you switch keyboard layouts fast and easily. Also tell you about a great typing tutorial program.&lt;/p&gt;

&lt;h1 id="setxkbmap"&gt;setxkbmap&lt;/h1&gt;

&lt;p&gt;setxkbmap is a simple yet very useful program. It’s used to change keyboard layouts, and works like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;setxkbmap us # set us layout
setxkbmap dvorak# set dvorak layout
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I also like having a shortcut alias in my ~/.zshrc&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;alias us='setxkbmap us'
alias dvorak='setxkbmap dvorak'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To view all of the layouts that you have take a look at &lt;code&gt;/usr/share/kbd/keymaps/i386/&amp;lt;layout&amp;gt;/*.gz&lt;/code&gt; ; where layout like dvorak:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;├── dvorak
│   ├── ANSI-dvorak.map.gz
│   ├── dvorak-fr.map.gz
│   ├── dvorak-l.map.gz
│   ├── dvorak.map.gz
│   ├── dvorak-r.map.gz
│   ├── dvorak-ru.map.gz
│   └── no-dvorak.map.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;h1 id="dvorak7min"&gt;dvorak7min&lt;/h1&gt;

&lt;p&gt;This program is an excellent typing tutorial for those of you looking to learn dvorak. Simply start up the program, and pick a lesson:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2012/03/2012-03-17-004651_624x392_scrot.png"&gt;&lt;img src="http://fsk141.com/uploads/2012/03/2012-03-17-004651_624x392_scrot.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The interface has a toggleable osd keyboard that can be shown to encourage touch typing.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2012/03/2012-03-17-004411_623x390_scrot.png"&gt;&lt;img src="http://fsk141.com/uploads/2012/03/2012-03-17-004411_623x390_scrot.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>rTorrent -- The complete guide</title>
   <link href="http://fsk141.com/rtorrent-the-complete-guide" />
   <updated>2011-12-31T00:44:28-08:00</updated>
   <id>http://fsk141.com/rtorrent-the-complete-guide</id>
   <content type="html">&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/12/2011-12-24-161350_1280x800_scrot.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/12/2011-12-24-161350_1280x800_scrot-750x468.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;!--
History
Installation
Configuration (.rtorrent.rc)
First Startup
Keybindings
Advanced Setup
Resources Unused (comparison with transmission)
--&gt;

&lt;h2 id="intro"&gt;Intro&lt;/h2&gt;

&lt;p&gt;Get ready for an adventure! This is one of the most comprehensive articles (or mini-tomes) I’ve written, covering rTorrent. I try to touch everything from just starting out, to some advanced tidbits to make torrenting easy, breazy and beautifully simple. I plan to make this into a distributable pdf or other portable format soon, so check back, I’ll post the links near the top of the post. Please comment if you find any errors, have questions, or would like me to expand on anything. I would hope there aren’t any glaring errors/typos, but at around 3000 words, this covers a lot, and I wouldn’t be surprised if I oops’ed somewhere(s).&lt;/p&gt;

&lt;h2 id="history"&gt;History&lt;/h2&gt;

&lt;p&gt;Lets start with a wee bit of history… The project was started up around 2004 (I know it was previous, but I can’t find an exact date).&lt;/p&gt;

&lt;p&gt;I base this off of Jari Sundell’s (Rakshasa) [creator of lib/rTorrent] note on the newly created mailing list testing its functionality:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;Hello, anyone there?

Rakshasa

*meowrrr*
&amp;gt;&amp;gt; http://rakshasa.no/pipermail/libtorrent-devel/2004-July/000000.html&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;At this time &lt;strong&gt;(Julyish - 2004) libtorrent (0.5.5)/rTorrent (0.1.5)&lt;/strong&gt; was “working,” but still had a long way to go from where it is today.&lt;/p&gt;

&lt;p&gt;It’s subsequent &lt;strong&gt;0.6/0.2&lt;/strong&gt; branch had a ton of bug fixes, an addition of a throttle’ing system, and separation of openssl due to ill-licensing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;0.7/0.3&lt;/strong&gt; added in udp support, torrent preallocation, min_peers, code optimization, and the almighty fast resume.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;0.8/0.4&lt;/strong&gt; added new throttle implementation, global limits, proxy support, interface improvements, load, load_run, untied options (killer features), scheduling, session locking. So many wonderful things were added!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;0.9/0.5&lt;/strong&gt; was chock full of bugfixes / minor improvements, but also ipv6 support (this was in 2006 – eary adoption)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;0.10/0.6 - current (0.12/0.8)&lt;/strong&gt; had so many wonderful bug fixes &amp;amp; additions, it’s not even worth going over them since they were all so useful to today’s end result of fantastic.&lt;/p&gt;

&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# you can compile from source (but I wouldn't suggest it
## you can grab the stock rTorrent (Arch Linux)
pacman -S rtorrent

## or you can get rtorrent-extended (much better, supports colors &amp;amp; all kinds of awesome)
yaourt -S rtorrent-extended&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h2 id="configuration-rtorrentrc"&gt;Configuration (.rtorrent.rc)&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;Lets start by taking a look at my configuration:
– I’ll reference bits of this throughout the article –
– You can simply copypasta this into your ~/.rtorrent.rc &amp;amp; edit to your liking –
&lt;a href="https://github.com/fsk141/dotfiles/blob/master/Hot/.rtorrent.rc"&gt;https://github.com/fsk141/dotfiles/blob/master/Hot/.rtorrent.rc&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;#
# ~/.rtorrentrc
#

# Global upload and download rate in KiB. &amp;quot;0&amp;quot; for unlimited.
download_rate = 1000
upload_rate = 50

min_peers = 50 ; look for more peers if limit doesn't reach 50
max_peers = 500 ; if there are 500 peers, don't allow any more

# Same as above but for seeding completed torrents (-1 = same as downloading)
min_peers_seed = 10
max_peers_seed = 100

# Maximum number of simultanious uploads per torrent.
max_uploads = 25

port_range = 6881-6999 ; ports to use for listening

# Start opening ports at a random position within the port range.
port_random = yes 

check_hash = yes ; check hash on finished torrents

# encryption settings
encryption = allow_incoming,enable_retry,prefer_plaintext

use_udp_trackers = yes ; setup client to use udp (stateless) trackers

# DHT clientless tracker
dht = auto
dht_port = 6881
peer_exchange = yes

# Session tmp file (relative dir is good, absolute is bad)
session = ./Downloads/.session

# Default directory to save the downloaded torrents.
directory = ./Downloads/

# Close torrents when diskspace is low.
schedule = low_diskspace,5,60,close_low_diskspace=2048M

# Watch a directory for new torrents, and stop those that have been deleted (^d)
schedule = watch_directory,5,5,&amp;quot;load_start=./Downloads/watch/*.torrent&amp;quot;
schedule = watch_directory_2,5,5,&amp;quot;load_start=~/Downloads/watch/music/*.torrent,d.set_directory=~/Downloads/music/&amp;quot;
schedule = watch_directory_3,5,5,&amp;quot;load_start=~/Downloads/watch/television/*.torrent,d.set_directory=~/Downloads/television/&amp;quot;
schedule = watch_directory_4,5,5,&amp;quot;load_start=~/Downloads/watch/books/*.torrent,d.set_directory=~/Downloads/books/&amp;quot;
schedule = untied_directory,5,5,stop_untied= ; stop torrents once removed from the client

# Colors # only in rtorrent extended
## Colors: 0 = black 1 = red 2 = green 3 = yellow 4 = blue 5 = magenta 6 = cyan 7 = white

done_fg_color = 6
#done_bg_color
active_fg_color = 7
#active_bg_color&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Configuring rTorrent, and any torrent client, can make or break your experience with torrenting. It’s very important to set throttleing, port forwarding, and peer settings specific to your network. I would start by navigating to &lt;a href="http://speedtest.net"&gt;http://speedtest.net&lt;/a&gt; and running a test to figure out your network speeds.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/12/speedtest.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/12/speedtest.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;

  &lt;h3 id="throttleing"&gt;Throttleing&lt;/h3&gt;

  &lt;p&gt;After sizing up your network connection, you need to do a little math (or googleing). Speedtest.net gives you your networking potential in network terms (Mbps – Mega bits per second), yet you want to know KBps (Kilo Bytes per second)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;
&lt;p&gt;Quick lesson on bits vs Bytes:
* There are 8 bits in a byte
– &lt;strong&gt;networking (per second):&lt;/strong&gt; bit/ps (1) &amp;gt; kilobit/ps (1000) &amp;gt; megabit/ps (1000000) &amp;gt; gigabit &amp;gt; terabit
– &lt;strong&gt;filesystems:&lt;/strong&gt; bit (1) &amp;gt; Byte (8) &amp;gt; kiloByte (1024) &amp;gt; megaByte (1048576)&amp;gt; gigaByte &amp;gt; teraByte
* Converting bits to Bytes:
– 100kbps (100 kilo bits per second) = 100/8 (bits to Bytes) = 12.5 KBps (12.5 kilo bytes per second)
– 1Mbps (1 Mega bit per second) = 1*1024/8 (converting Mbit &amp;gt; KByte)
——&lt;/p&gt;

&lt;p&gt;Easiest way to convert is to just use google calculator (16.35Mbps in KBps):
&lt;a href="http://fsk141.com/uploads/2011/12/google.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/12/google-750x164.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that you have your rate of bits in Bytes; we need to do a little more math.&lt;/p&gt;

&lt;p&gt;My general rule of thumb is to allocate a maximum of 75% network potential to torrenting, and to leave the other 25% for general web traffic (web browsing, youtubing, netflix). So if I have 2092KBps download bandwith I would like to give rTorrent about 1569 (2092&lt;em&gt;.75). And for upload potential 267.84 (357.12&lt;/em&gt;.75).&lt;/p&gt;

&lt;p&gt;I scale back since there’s a lot of netflix going on, and set my max download rate to 1000KBps and my upload rate to 50KBps.&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# Global upload and download rate in KiB. &amp;quot;0&amp;quot; for unlimited.
download_rate = 1000
upload_rate = 50&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Other that setting a proper throttleing speed, it’s also necessary to set proper min/max_peer settings. According to the bittorrent spec, you should never have more than 5-10 torrents open at one time (unless you have a multi-Mbit connection). The reasoning behind this is that it hurts the network to have torrent clients taking up peer slots, and not being able to download/upload anything due to all your bandwith being used up. Setting min/max_peers allows rTorrent to scale based on your personal network&lt;/p&gt;

&lt;blockquote&gt;

  &lt;h3 id="minpeersmaxpeers"&gt;min_peers/max_peers&lt;/h3&gt;

  &lt;p&gt;There is probably a formula to associate min/max_peers with your network, but I just took a guess, and it works very well for me, and should scale well for big/small networks&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you want to know more about min/max_peers please check out one of my other posts:
&lt;a href="http://fsk141.com/what-is-min_peers-for-and-why-should-i-uncomment-it"&gt;http://fsk141.com/what-is-min_peers-for-and-why-should-i-uncomment-it&lt;/a&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;min_peers = 50 ; look for more peers if limit doesn't reach 50
max_peers = 500 ; if there are 500 peers, don't allow any more

# Same as above but for seeding completed torrents (-1 = same as downloading)
min_peers_seed = 10
max_peers_seed = 100&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;blockquote&gt;

  &lt;h3 id="sidenote---"&gt; – Sidenote –&lt;/h3&gt;

  &lt;p&gt;Basic format of .rtorrent.rc config variables are&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;config_name = value&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;You can add comments with &lt;strong&gt;#&lt;/strong&gt; or inline with &lt;strong&gt;;&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;#comment
config_name = value

config_name = value ; inline comment (haven't seen this documented, but it works)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;blockquote&gt;

  &lt;h3 id="max-uploads"&gt;Max uploads&lt;/h3&gt;

  &lt;p&gt;I have my rate set a bit high at 25 max uploads; but I have a big network to support it. I would suggest setting this to around 8-10 for lesser networks. Like I touched on earlier, it’s not helpful to have a bunch of open connections if your bandwith can’t support them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# Maximum number of simultanious uploads per torrent.
max_uploads = 25&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;blockquote&gt;

  &lt;h3 id="port-forwarding"&gt;Port forwarding&lt;/h3&gt;

  &lt;p&gt;It’s unholy to start any torrent client without opening ports. Most clients have gotten smarter with udp, and dht (trackerless) where you can get away downloading files, and uploading a little. Yet the preferred clients are the ones that have open ports, and are connectable by others.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Google around for port forwarding, or just login to your router (192.168.1.1), and look for port forwarding, virtual servers, or something similar. I opened a port range 6881-6999 (default torrent port range) on my router and allow rTorrent to access the entire port space randomly.&lt;/p&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;port_range = 6881-6999 ; ports to use for listening

# Start opening ports at a random position within the port range.
port_random = yes&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;blockquote&gt;

  &lt;h3 id="the-rest"&gt;The rest&lt;/h3&gt;

  &lt;p&gt;I commented my .rtorrent.rc pretty well, so you can understand what things do. Things like session_dir &amp;amp; directory are important for basic functionality to work:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# Session tmp file (relative dir is good, absolute is bad)
session = ./Downloads/.session

# Default directory to save the downloaded torrents.
directory = ./Downloads/&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Everything else in my configuration file is to make things simplier, but are optional, a little complicated, and I will go over them below in the Advanced Setup section.&lt;/p&gt;

&lt;h2 id="first-startup"&gt;First Startup&lt;/h2&gt;

&lt;h3 id="initiate-countdown"&gt;Initiate Countdown&lt;/h3&gt;

&lt;p&gt;Now that you have a smashing .rtorrent.rc you’re ready to fire up rTorrent &amp;amp; get torrenting.&lt;/p&gt;

&lt;p&gt;Oh, wait! How about a super tip!&lt;/p&gt;

&lt;p&gt;Instead of running rTorrent in the foreground, I suggest initiating a screen session previous to starting rTorrent. This is just in case you close your terminal.&lt;/p&gt;

&lt;p&gt;Simple screen primer (&lt;code&gt;man screen&lt;/code&gt; to get more info):&lt;/p&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;screen #starts a new screen session
rtorrent #starts rTorrent in new screen session
------
^a d # disconnects from screen session
screen -x # reconnects to screen session&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;So now that you have a new screen session, and started up rTorrent, lets take a look around, and see what we have. You can arrow around, and try to figure things out, but I would highly suggest running a &lt;code&gt;man rtorrent&lt;/code&gt;&lt;/p&gt;

&lt;h3 id="annotated-rtorrent"&gt;Annotated rTorrent&lt;/h3&gt;

&lt;p&gt;Let’s start with a blank slate so we can go over the basics:
&lt;a href="http://fsk141.com/uploads/2011/12/annotated_blank.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/12/annotated_blank-750x468.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This should make sense to even the dumbest among us. The annotated version of the rTorrent gui shows everything you need to know. The important things are on the bottom left, and everything else is secondary to that ;)&lt;/p&gt;

&lt;h3 id="load-your-first-torrent"&gt;Load Your First Torrent&lt;/h3&gt;

&lt;p&gt;If I were you, I would grab a torrent and load it up so that you can follow along with the rest of the tutorial. The easiest way to do this is to download a torrent &amp;lt; How about &lt;a href="http://www.archlinux.org/iso/2011.08.19/archlinux-2011.08.19-core-dual.iso.torrent"&gt;arch_core-dual&lt;/a&gt; &amp;gt;&lt;/p&gt;

&lt;p&gt;After you have the .torrent file, head into rTorrent. &lt;/p&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;click &amp;lt;enter&amp;gt;

# you'll receive a load&amp;gt; prompt
## enter the path to the .torrent file
### for me it's in:
### ~/Downloads/archlinux-2011.08.19-core-dual.iso.torrent

load&amp;gt; ~/Downloads/archlinux-2011.08.19-core-dual.iso.torrent

#### tab completion works:
#### ~/Downloads/arch&amp;lt;tab&amp;gt; would do the trick!&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This will add the torrent into rTorrent in a stopped state. If you would like the torrent to start automatically, then use  instead of  to load your torrent.&lt;/p&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# hover over the torrent (arrow keys)

^s # ctrl-s -- to start the torrent

## unless you used &amp;lt;backspace&amp;gt; in which case it should auto start&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Now that we have something started, you should see your bottom status bar light up. Numbers should fly by… Telling you the speed of download/upload, connected peers, and everything you need to know.&lt;/p&gt;

&lt;h3 id="get-torrent-details"&gt;Get Torrent Details&lt;/h3&gt;

&lt;p&gt;At this time start poking your keyboard &amp;gt;&lt;/p&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# hover over a torrent

&amp;lt;right arrow&amp;gt;

## you'll now be in torrent view mode
## hover over the right fields to view contents

&amp;lt;up arrow&amp;gt; &amp;amp; &amp;lt;down arrow&amp;gt; #to navigate sub fields
&amp;lt;right arrow&amp;gt; &amp;amp; &amp;lt;left arrow&amp;gt; to view properties

### Choices
#### Peer List
#### Info
#### File List
#### Tracker List
#### Chunks Seen
#### Transfer List&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h3 id="some-other-things"&gt;Some Other Things&lt;/h3&gt;

&lt;p&gt;I would try hitting your number keys (from 1 to 0). This will give you your different views (active, seeding, inactive, etc.)&lt;/p&gt;

&lt;p&gt;asd zxc ASD ZXC (play around with these keys for modifying throttle on the fly.&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;^s (start)
^d (stop) -- hit twice to remove
^r (hash check)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h2 id="keybindings"&gt;Keybindings&lt;/h2&gt;

&lt;p&gt;How about a full rundown on all the special keys for rTorrent. I know it’s a little tedious to look at tables of information, but try your hand at most of the keybindings that are outlined below, and it’ll become second nature in a matter of minutes.&lt;/p&gt;

&lt;h3 id="lets-start-with-the-basics"&gt;Lets Start With The Basics&lt;/h3&gt;

&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;backspace&lt;/td&gt;
&lt;td&gt;Add torrent using an URL or file path. Use tab to view directory content and do auto-complete. Also, wildcards can be used. For example: ~/torrent/*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;return&lt;/td&gt;
&lt;td&gt;Same as backspace, except the torrent remains inactive. (Use ^s to activate)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^o&lt;/td&gt;
&lt;td&gt;Set new download directory for selected torrent. Only works if torrent has not yet been activated.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^s&lt;/td&gt;
&lt;td&gt;Start download. Runs hash first unless already done.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^d&lt;/td&gt;
&lt;td&gt;Stop an active download, or remove a stopped download.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^k&lt;/td&gt;
&lt;td&gt;Stop and close the files of an active download.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^r&lt;/td&gt;
&lt;td&gt;Initiate hash check of torrent. Without starting to download/upload.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id="throttle-control"&gt;Throttle Control&lt;/h3&gt;

&lt;p&gt;This is for global throttleing, and changes can be viewed in the bottom left.&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;a/s/d&lt;/td&gt;
&lt;td&gt;Increase the upload throttle by 1/5/50 KB.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;z/x/c&lt;/td&gt;
&lt;td&gt;Decrease the upload throttle by 1/5/50 KB.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A/S/D&lt;/td&gt;
&lt;td&gt;Increase the download throttle by 1/5/50 KB.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Z/X/C&lt;/td&gt;
&lt;td&gt;Decrease the download throttle by 1/5/50 KB.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id="main-view-navigation"&gt;Main View Navigation&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/12/2011-12-26-001502_1280x800_scrot.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/12/2011-12-26-001502_1280x800_scrot-750x468.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;^q&lt;/td&gt;
&lt;td&gt;Initiate shutdown, press again to force the shutdown and skip sending the stop signal to trackers.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;up arrow/down arrow&lt;/td&gt;
&lt;td&gt;Select item.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;left&lt;/td&gt;
&lt;td&gt;Go back to the previous screen.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id="download-view"&gt;Download View&lt;/h3&gt;

&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;right&lt;/td&gt;
&lt;td&gt;Switch to selected view&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;left&lt;/td&gt;
&lt;td&gt;Switch to view selection or back to main view&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1/2&lt;/td&gt;
&lt;td&gt;Adjust max uploads.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3/4&lt;/td&gt;
&lt;td&gt;Adjust min peers.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5/6&lt;/td&gt;
&lt;td&gt;Adjust max peers.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;p&lt;/td&gt;
&lt;td&gt;Display peer list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;o&lt;/td&gt;
&lt;td&gt;Display torrent info&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;i&lt;/td&gt;
&lt;td&gt;Display file list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;u&lt;/td&gt;
&lt;td&gt;Display tracker list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;t/T&lt;/td&gt;
&lt;td&gt;Initiate tracker request. Use capital T to force the request, ignoring the "min interval" set by the tracker.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id="peer-list"&gt;Peer List&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/12/peer_list.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/12/peer_list-750x468.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;left&lt;/td&gt;
&lt;td&gt;Switch to view selection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;right&lt;/td&gt;
&lt;td&gt;Show peer details&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\*&lt;/td&gt;
&lt;td&gt;Snub peer (stop uploading to this peer)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;k&lt;/td&gt;
&lt;td&gt;Kick peer (disconnect from peer)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Ban peer (No unbanning is possible.) 0.8.4+&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id="file-list"&gt;File List&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/12/file_list.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/12/file_list-750x468.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;left&lt;/td&gt;
&lt;td&gt;Switch to view selection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;right&lt;/td&gt;
&lt;td&gt;Show file details&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;space&lt;/td&gt;
&lt;td&gt;Change the file priority; applies recursively when done on a directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\*&lt;/td&gt;
&lt;td&gt;Change the priority of all files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/&lt;/td&gt;
&lt;td&gt;Collapse directories. While collapsed, press right to expand the selected directory.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id="tracker-list"&gt;Tracker List&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/12/tracker_list.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/12/tracker_list-750x468.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;left&lt;/td&gt;
&lt;td&gt;Switch to view selection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\*&lt;/td&gt;
&lt;td&gt;Enable/disable tracker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;space&lt;/td&gt;
&lt;td&gt;Rotate trackers in a group&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id="advanced-setup"&gt;Advanced Setup&lt;/h2&gt;

&lt;p&gt;dive into watch directories &amp;amp; some more powerful things (scgi &amp;amp; external clients)&lt;/p&gt;

&lt;p&gt;I hope that you’ve learned at lest one tidbit of awesomeness by now. If you have, great, if not, hopefully this section will tickle your fancy.&lt;/p&gt;

&lt;h3 id="scheduling"&gt;Scheduling&lt;/h3&gt;

&lt;p&gt;Starting out with rTorrent is rough. You’re given almost a blank slate, a config file with some complex things that are foreign (coming from a nice gui client that does everything for you). But once you learn the power behind having a solid .rtorrent.rc, you realize why you’ve switched, and why you’ll never go back. Scheduling is one such feature that is unbelievably powerful.&lt;/p&gt;

&lt;p&gt;We’ll start with the simplest of schedule scripts. It’s purpose is to make sure you don’t overfill your system with bits &amp;amp; bytes.&lt;/p&gt;

&lt;h4 id="excerpt-from-rtorrent-man-page-on-scheduling"&gt;Excerpt from rtorrent man page on scheduling&lt;/h4&gt;

&lt;blockquote&gt;
  &lt;blockquote&gt;
    &lt;p&gt;schedule = id,start,interval,command
    Call  command  every  interval  seconds, starting from start. An interval of zero calls the task once, while a start of zero calls it immediately. Currently command is forwarded to the option handler.  start and interval may optionally use a time format, dd:hh:mm:ss. F.ex to start a task every day at 18:00, use 18:00:00,24:00:00.&lt;/p&gt;
  &lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;The following task will prevent rTorrent from downloading too much, and entirely filling your hard drive up with data.&lt;/p&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# Close torrents when diskspace is low.
##
## schedule (initiate a new schedule script)
## low_diskspace (scheduler name)
## 5,60 (start 5 seconds after rtorrent starts; run every 60 seconds)
schedule = low_diskspace,5,60,close_low_diskspace=2048M&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;My most favorite of configurations are the following. It simplifies my flow of downloading, and makes it a breeze to add an infinite number of torrents all at once (your computer/network permitting). The following schedulers are for watch directories. A watch directory watches for new *.torrent files, and loads them into rtorrent. You can simply add a watch folder, and you will have a bunch of torrents start up in your default download_dir. Or you can add a watch folder with a d.set_directory set to the folder in which you would like the torrent stored (golden awesome rainbow sauce)&lt;/p&gt;

&lt;p&gt;It looks something like this:&lt;/p&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# download to default directory (download_dir)
## start after 5; run every 5 seconds
## load all \*.torrent files in ./Downloads/watch
schedule = watch_directory,5,5,&amp;quot;load_start=./Downloads/watch/*.torrent&amp;quot;

# download to ~/Downloads/music/
## schedule (initiate a new schedule script)
## watch_directory_2 (names watch_directory script)
### you must have a different name for every watch_directory
## 5,5 (start after 5; run every 5 seconds)
## load_start=~/Downloads/watch/music/*.torrent (load all \*.torrent files in ~/Downloads/watch/music)
## d.set_directory=~/Downloads/music/ (download files to ~/Downloads/music)

schedule = watch_directory_2,5,5,&amp;quot;load_start=~/Downloads/watch/music/*.torrent,d.set_directory=~/Downloads/music/&amp;quot;

# and here are all my watch_directory scripts together
# Watch a directory for new torrents, and stop those that have been deleted (^d)

schedule = watch_directory,5,5,&amp;quot;load_start=./Downloads/watch/*.torrent&amp;quot;
schedule = watch_directory_2,5,5,&amp;quot;load_start=~/Downloads/watch/music/*.torrent,d.set_directory=~/Downloads/music/&amp;quot;
schedule = watch_directory_3,5,5,&amp;quot;load_start=~/Downloads/watch/television/*.torrent,d.set_directory=~/Downloads/television/&amp;quot;
schedule = watch_directory_4,5,5,&amp;quot;load_start=~/Downloads/watch/books/*.torrent,d.set_directory=~/Downloads/books/&amp;quot;
schedule = untied_directory,5,5,stop_untied= ; stop torrents once removed from the client&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h4 id="stop-torrents-at-certain-ratio"&gt;Stop torrents at certain ratio&lt;/h4&gt;

&lt;p&gt;Say you’re generous, but not too generous. You would like to seed back the torrents you have downloaded, yet you don’t want to give away your bandwith indefinitely. Then this is the solution for you:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# stop_on_ratio = min_ratio,min_upload,max_ratio
## schedule (initiate a new schedule script)
## ratio (uses ratio scheduler)
## 60,60 (start after 60, run every 60 seconds)
## stop_on_ratio=200,50M,300 (200% [min_ratio], 50M [min_upload], 300% [max_ratio])

schedule = ratio,60,60,&amp;quot;stop_on_ratio=200,50M,300&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h4 id="setting-scheduled-throttle-times"&gt;Setting scheduled throttle times&lt;/h4&gt;

&lt;p&gt;So you want ALL of your bandwith, uninterrupted, during the whole day. Most likely you want to heavily throttle durring the day, and open up the floodgates at night. I’ve outlined a simple scheduler to have unlimited upload/download from 22:00 - 06:00, and throttle during everything else:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;#set daily download/upload rates
#
# Apply 25KB/s down &amp;amp; 5KB/s up at 06:00

schedule = throttle_1,06:00:00,24:00:00,download_rate=25
schedule = throttle_2,06:00:00,24:00:00,upload_rate=5

# Apply unlimited upload/download at 22:00
schedule = throttle_3,22:00:00,24:00:00,download_rate=0
schedule = throttle_4,22:00:00,24:00:00,upload_rate=0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h4 id="using-another-config-file-other-than-rtorrentrc"&gt;Using another config file (other than ~/.rtorrent.rc)&lt;/h4&gt;

&lt;p&gt;Once upon a time I wanted to run rTorrent as root, I wanted to run torrenting over port 443 (https) or 80 (http) so that I could torrent in a blocked network. I needed to execute rTorrent with root since all ports under 1000 aren’t allowed to be allocated to regular users. Instead of setting everything up for the root user, just use sudo and specify the configuration file manually:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;rtorrent -n -o import=~/my_other_rtorrent.rc&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;I have more things to add to this section, but I need a better way to organize them. You’ll just have to wait for future updates.&lt;/p&gt;

&lt;h2 id="resources-unused-comparison-with-transmission"&gt;Resources Unused (comparison with transmission)&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/12/resources.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/12/resources-750x468.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This was quite shocking to say the least. I didn’t really think there would be a literal ton of difference between rTorrent and Transmission. I’ve always known rTorrent to be the best contender in minimalist, low resource torrent clients. Yet Transmission is also touted as lightweight. Yet as you can see above rTorrent never really swayed from 1-3% cpu usage, whereas Transmission spawned a gazillion processes and had about 25-50% cpu usage.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/12/transmission.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/12/transmission-750x468.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I should really need to go into more detail, since well everyone knows that rTorrent is the almost resourceless client. It has almost no overhead, uses minimal resources, is programmed well, with performance in mind, and has a large community of users behind to support it’s overall success.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;
  1. &lt;code&gt;man rtorrent&lt;/code&gt;
  2. &lt;a href="http://libtorrent.rakshasa.no/wiki/RTorrentUserGuide"&gt;http://libtorrent.rakshasa.no/wiki/RTorrentUserGuide&lt;/a&gt;
  3. &lt;a href="http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks"&gt;http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks&lt;/a&gt;
  4. &lt;a href="https://wiki.archlinux.org/index.php/RTorrent"&gt;https://wiki.archlinux.org/index.php/RTorrent&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>[rTorrent] What is min_peers for, and why Should I Uncomment it?</title>
   <link href="http://fsk141.com/what-is-min_peers-for-and-why-should-i-uncomment-it" />
   <updated>2011-12-25T00:27:59-08:00</updated>
   <id>http://fsk141.com/what-is-min_peers-for-and-why-should-i-uncomment-it</id>
   <content type="html">&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/12/2011-12-24-161910_1280x800_scrot.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/12/2011-12-24-161910_1280x800_scrot-750x468.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After using rTorrent, and always having min_peers commented out in my .rtorrent.rc. I figured that I would try and figure out what it does, and why I should uncomment it. Simply put, it’s one of the simplest uncommentable things in your config that drastically improves performance.&lt;/p&gt;

&lt;p&gt;Here is a snippet from my current config, and a generalization of what min/max peers does.&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;min_peers = 50 ; look for more peers if limit doesn't reach 50
max_peers = 500 ; if there are 500 peers, don't allow any more

# Same as above for seeding completed torrents (-1 = same as downloading)
min_peers_seed = 10
max_peers_seed = 100&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;max_peers&lt;/strong&gt; should make sense (if your client has more than the alloted peers, don’t let anyone else connect)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;min_peers&lt;/strong&gt; is the exact opposite, if you have a min_peers count set, rTorrent will keep branching out to find more peers until the condition is met.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;”* When the download has less than min_peers connections, it will after 30 seconds request more from the trackers. This will only happen maximum 5 times and only if more peers have been connected to in the mean time. It supports multiple trackers by trying the other groups, though not other trackers within a group, if the first does not provide more peers.” &lt;br /&gt;
–libtorrent mailing list&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When you connect to a bt-tracker, your client will automatically initiate connections with happy peers, and once you start downloading, it will check for new peers every once in a while. But if you are connected to a few good peers, and you don’t have min_peers set, rTorrent expects you’re happy, and just continues with those. If you’re leeching &amp;amp; need to download at a better rate, or are seeding and want your torrent to be seeded to as many peers as possible, then it’s to your advantage to set min_peers to a higher number.&lt;/p&gt;

&lt;p&gt;The higher you set the number (min_peers), the more inclined you are to share/seed your torrents.&lt;/p&gt;

&lt;p&gt;The lower the number (min_peers), the less inclined you are to share your torrents with others.&lt;/p&gt;

&lt;p&gt;It’s awesome that the architects of rTorrent allow an overall (min/max_peers) and a seeding specific (min/max_peers_seed).&lt;/p&gt;

&lt;p&gt;Now you can happily set min_peers and get more happy customers connecting to your torrents, Enjoy!&lt;/p&gt;

&lt;p&gt;Resources:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href="http://rakshasa.no/pipermail/libtorrent-devel/2005-August/000305.html"&gt;http://rakshasa.no/pipermail/libtorrent-devel/2005-August/000305.html&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</content>
 </entry>
 
 <entry>
   <title>[Review] Yubikey - Let's get obscure with otp</title>
   <link href="http://fsk141.com/review-yubikey-lets-get-obscure-with-otp" />
   <updated>2011-12-22T17:43:02-08:00</updated>
   <id>http://fsk141.com/review-yubikey-lets-get-obscure-with-otp</id>
   <content type="html">&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/12/package_inside.jpg"&gt;&lt;img src="http://fsk141.com/uploads/2011/12/package_inside-750x617.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was happy to receive my &lt;a href="https://www.yubico.com/personal-use"&gt;Yubikey&lt;/a&gt; by &lt;a href="https://www.yubico.com"&gt;Yubico&lt;/a&gt; the other day; and have been happily including it into my computer life. For those of you that aren’t familiar with Yubico, or OTP (one time password) devices; it’s basically a stateless, timeless keyfob that generates a text string based off an AES encrypted key. To verify your identity, all you need to do is authenticate with the Yubico server (they have the private AES key that will verify your public key) You can use your yubikey for a multitude of two phase authentication choices, from logging into your wordpress to your ssh servers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before we dive into the uses, let’s gawk at the beautiful simplicity of the device, and it’s accompanying software.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The key comes packaged in a neat little plastic sleeve:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/12/package_front.jpg"&gt;&lt;img src="http://fsk141.com/uploads/2011/12/package_front-750x827.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are two flavors of yubikey, black &amp;amp; white. I choose the beautiful black. It’s about as large as two quarters put next to one another.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/12/key_size.jpg"&gt;&lt;img src="http://fsk141.com/uploads/2011/12/key_size-750x636.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The top (shown above) has an activator pad; in which you press to receive your otp; or if you hold for longer than 2 seconds; you’ll receive a text string of your choosing (YKPersonalization software required)&lt;/p&gt;

&lt;p&gt;The bottom of the device has a simple identifier (Powered by Yubico), and small qrcode near the inserting end of the key.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/12/key_front.jpg"&gt;&lt;img src="http://fsk141.com/uploads/2011/12/key_front-750x591.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upon plugging in the device I loved how it matched my laptop.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/12/key_laptop.jpg"&gt;&lt;img src="http://fsk141.com/uploads/2011/12/key_laptop-750x580.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One thing that I thought of soon after plugging it in is how wonderful it would be if it were just a tiny nub sticking out of the usb with the contact surface almost flush with the usb port (I can dream :) But the usb flash drive form factor is nice, recognizable, and very thin. Overall the design is very neat. The device is sturdy, yet very thin and light at the same time.&lt;/p&gt;

&lt;p&gt;The companion software for the Yubikey is FANTASTIC. For arch linux I was wonderfully excited to simply run &lt;code&gt;yaourt -S yubikey-personalization-gui&lt;/code&gt; &amp;amp; executing sudo YKPersonalization&lt;/p&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/12/yubikey_software.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/12/yubikey_software-750x593.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This wonderful gui is simple to use, and provides an enormous functionality to your Yubikey.&lt;/p&gt;

&lt;p&gt;Out of the box, the Yubikey is ready to go. There are two configurable slots available, and slot 1 is configured to use the Yubico OTP. Once plugged into the software you can reprogram slot 2 to have a static password; secret message, or anything you so desire. You can reprogram slot 1 if you would like, but it will prohibit use with Yubico OTP, until reconfigured &amp;amp; reauthenticated with the Yubico servers.&lt;/p&gt;

&lt;p&gt;The first thing I tried once getting my Yubikey was to navigate to &lt;a href="http://demo.yubico.com/php-yubico/one_factor.php"&gt;http://demo.yubico.com/php-yubico/one_factor.php&lt;/a&gt; and test out my device. Once inserted into your computer (Linux, Mac, Windows) the key is automatically recognized as a simple keyboard, and works as if you were just typing. You can test out otp, password/otp, otp/username/password on the demo server. It’s a wonderful place to start playing with your device.&lt;/p&gt;

&lt;p&gt;After spending about 5 minutes playing around with the demo server, installing the software, and adding funny messages to my slot 2 of the device, and hitting the keypad a bunch of times to see a bunch of seemingly random character sets fly by; I decided to dive into actually making the Yubikey work with my day-to-day life. I started by adding &amp;amp; configuring this wordpress site to use otp. It’s a simple 3 step process.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Sign up for an api key (&lt;a href="https://upgrade.yubico.com/getapikey"&gt;https://upgrade.yubico.com/getapikey&lt;/a&gt;)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Download &amp;amp; install the wordpress plugin (&lt;a href="https://wordpress.org/extend/plugins/yubikey-plugin"&gt;https://wordpress.org/extend/plugins/yubikey-plugin&lt;/a&gt;)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Wait about 5 minutes (for api key to propagate), and login with your newly added otp field on your wordpress login page.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Other than just add otp to wordpress I read up on using it with gmail (not quite sure how to do it with linux just yet, but I plan to write a script that will allow me to use my Yubikey with 2 phase auth for gmail/google apps. I have a lot more to do with my yubikey, and love having a 2’nd phase of authentication to add some needed complexity to my life. I feel more secure, and enjoy the metallic tactile interface to access my websites &amp;amp; servers. I have a lot more that I need to write about for this wonderful device, just think of this as a teaser review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some great reads about the Yubikey &amp;amp; implementations:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.yubico.com/documentation"&gt;https://www.yubico.com/documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.yubico.com/openid-server"&gt;https://www.yubico.com/openid-server&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wiki.archlinux.org/index.php/Yubikey"&gt;https://wiki.archlinux.org/index.php/Yubikey&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Dwm Colors</title>
   <link href="http://fsk141.com/dwm-colors" />
   <updated>2011-11-14T01:20:17-08:00</updated>
   <id>http://fsk141.com/dwm-colors</id>
   <content type="html">&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/11/firedwm.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/firedwm-750x562.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Who says that dwm (&lt;a href="http://dwm.suckless.org"&gt;dwm.suckless.org&lt;/a&gt;) has to be boring, default, and drab? I don’t, and unless you’re too lazy to edit a couple color lines, you shouldn’t agree either. I’ve spent a lot of my life tweaking and playing with dwm. Not out of hassle, or unhappiness, but to make a great thing better, and more suited to my needs. Coloring dwm is one of the simplest, yet most satisfying things. I have a few color schemes that I made, but please feel free to provide me with your color schemes, and I would be happy to include them in the post (in future updates).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;01-Default:&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2011/11/0-Default.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/0-Default-750x562.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;0-Default
static const char normbordercolor[] = &amp;quot;#cccccc&amp;quot;;
static const char normbgcolor[]     = &amp;quot;#cccccc&amp;quot;;
static const char normfgcolor[]     = &amp;quot;#000000&amp;quot;;
static const char selbordercolor[]  = &amp;quot;#0066ff&amp;quot;;
static const char selbgcolor[]      = &amp;quot;#0066ff&amp;quot;;
static const char selfgcolor[]      = &amp;quot;#ffffff&amp;quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;1-WoB (White on Black):&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2011/11/1-WoB.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/1-WoB-750x562.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;1-WoB
static const char normbordercolor[] = &amp;quot;#3E3E3E&amp;quot;;
static const char normbgcolor[]     = &amp;quot;#000000&amp;quot;;
static const char normfgcolor[]     = &amp;quot;#FFFFFF&amp;quot;;
static const char selbordercolor[]  = &amp;quot;#000000&amp;quot;;
static const char selbgcolor[]      = &amp;quot;#FFFFFF&amp;quot;;
static const char selfgcolor[]      = &amp;quot;#000000&amp;quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;2-BoW (Black on White):&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2011/11/2-BoW.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/2-BoW-750x562.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;2-BoW
static const char normbordercolor[] = &amp;quot;#3E3E3E&amp;quot;;
static const char normbgcolor[]     = &amp;quot;#FFFFFF&amp;quot;;
static const char normfgcolor[]     = &amp;quot;#000000&amp;quot;;
static const char selbordercolor[]  = &amp;quot;#FFFFFF&amp;quot;;
static const char selbgcolor[]      = &amp;quot;#000000&amp;quot;;
static const char selfgcolor[]      = &amp;quot;#FFFFFF&amp;quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;3-GoogleGrey (New Top Bar):&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2011/11/3-GoogleGrey.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/3-GoogleGrey-750x562.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;3-GoogleGrey
static const char normbordercolor[] = &amp;quot;#2D2D2D&amp;quot;;
static const char normbgcolor[]     = &amp;quot;#2D2D2D&amp;quot;;
static const char normfgcolor[]     = &amp;quot;#CCCCCC&amp;quot;;
static const char selbordercolor[]  = &amp;quot;#CCCCCC&amp;quot;;
static const char selbgcolor[]      = &amp;quot;#4C4C4C&amp;quot;;
static const char selfgcolor[]      = &amp;quot;#CCCCCC&amp;quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;4-LightGrey:&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2011/11/4-LightGrey.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/4-LightGrey-750x562.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;4-LightGrey
static const char normbordercolor[] = &amp;quot;#3E3E3E&amp;quot;;
static const char normbgcolor[]     = &amp;quot;#FFFFFF&amp;quot;;
static const char normfgcolor[]     = &amp;quot;#000000&amp;quot;;
static const char selbordercolor[]  = &amp;quot;#999999&amp;quot;;
static const char selbgcolor[]      = &amp;quot;#999999&amp;quot;;
static const char selfgcolor[]      = &amp;quot;#FFFFFF&amp;quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;5-SkyBlue:&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2011/11/5-SkyBlue.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/5-SkyBlue-750x562.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;5-SkyBlue
static const char normbordercolor[] = &amp;quot;#3E3E3E&amp;quot;;
static const char normbgcolor[]     = &amp;quot;#B2D5EE&amp;quot;;
static const char normfgcolor[]     = &amp;quot;#000000&amp;quot;;
static const char selbordercolor[]  = &amp;quot;#B2D5EE&amp;quot;;
static const char selbgcolor[]      = &amp;quot;#EAEFF2&amp;quot;;
static const char selfgcolor[]      = &amp;quot;#000000&amp;quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;6-BlackBlue:&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2011/11/6-BlackBlue.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/6-BlackBlue-750x562.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;6-BlackBlue
static const char normbordercolor[] = &amp;quot;#2D2D2D&amp;quot;;
static const char normbgcolor[]     = &amp;quot;#101010&amp;quot;;
static const char normfgcolor[]     = &amp;quot;#868686&amp;quot;;
static const char selbordercolor[]  = &amp;quot;#CCCCCC&amp;quot;;
static const char selbgcolor[]      = &amp;quot;#224488&amp;quot;;
static const char selfgcolor[]      = &amp;quot;#F1F3F8&amp;quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;7-ClassicTerm:&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2011/11/7-ClassicTerm.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/7-ClassicTerm-750x562.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;7-ClassicTerm
static const char normbordercolor[] = &amp;quot;#2D2D2D&amp;quot;;
static const char normbgcolor[]     = &amp;quot;#000000&amp;quot;;
static const char normfgcolor[]     = &amp;quot;#54F93A&amp;quot;;
static const char selbordercolor[]  = &amp;quot;#CCCCCC&amp;quot;;
static const char selbgcolor[]      = &amp;quot;#202020&amp;quot;;
static const char selfgcolor[]      = &amp;quot;#54F93A&amp;quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;8-BlueHue:&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2011/11/8-BlueHue.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/8-BlueHue-750x562.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;8-BlueHue
static const char normbordercolor[] = &amp;quot;#2D2D2D&amp;quot;;
static const char normbgcolor[]     = &amp;quot;#2B4E69&amp;quot;;
static const char normfgcolor[]     = &amp;quot;#799AA5&amp;quot;;
static const char selbordercolor[]  = &amp;quot;#CCCCCC&amp;quot;;
static const char selbgcolor[]      = &amp;quot;#799AA5&amp;quot;;
static const char selfgcolor[]      = &amp;quot;#FFFFFF&amp;quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;9-Win3.1:&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2011/11/9-Win3.1.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/9-Win3.1-750x562.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;9-Win3.1
static const char normbordercolor[] = &amp;quot;#2D2D2D&amp;quot;;
static const char normbgcolor[]     = &amp;quot;#0000AA&amp;quot;;
static const char normfgcolor[]     = &amp;quot;#F0F0F0&amp;quot;;
static const char selbordercolor[]  = &amp;quot;#CCCCCC&amp;quot;;
static const char selbgcolor[]      = &amp;quot;#009696&amp;quot;;
static const char selfgcolor[]      = &amp;quot;#F0F0F0&amp;quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;10-Purple:&lt;/strong&gt;
&lt;a href="http://fsk141.com/uploads/2011/11/10-Purple.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/10-Purple-750x562.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;10-Purple
static const char normbordercolor[] = &amp;quot;#2D2D2D&amp;quot;;
static const char normbgcolor[]     = &amp;quot;#662066&amp;quot;;
static const char normfgcolor[]     = &amp;quot;#6A99C7&amp;quot;;
static const char selbordercolor[]  = &amp;quot;#CCCCCC&amp;quot;;
static const char selbgcolor[]      = &amp;quot;#7B277C&amp;quot;;
static const char selfgcolor[]      = &amp;quot;#FFF8FF&amp;quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Muttdate (aka Mutt Update)</title>
   <link href="http://fsk141.com/muttdate-aka-mutt-update" />
   <updated>2011-11-13T22:13:20-08:00</updated>
   <id>http://fsk141.com/muttdate-aka-mutt-update</id>
   <content type="html">&lt;p&gt;After using mutt for a couple weeks, and tweaking the config here and there for random fixes or tweaks I’ve come across “the perfect muttrc” (well for me anyway). I’ve added a lot of tweaks from my last post, and removed the passwords entirely from the file. Along with header &amp;amp; message caching. To make everything work hunky dory store the file in either ~/.muttrc; or where I prefer ~/.mutt/muttrc ; you also need to create cache dirs.&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;mkdir -p ~/.mutt/cache/{bodies,headers}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Extra features I added:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;A – Archive message&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;ga – Goto All Mail&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;gi – Goto Inbox&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;gs – Goto Sent Mail&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;gd – Goto Drafts&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Recommended Reading:&lt;/strong&gt; &lt;a href="http://www.mutt.org/doc/manual/manual-2.html"&gt;http://www.mutt.org/doc/manual/manual-2.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Download here:&lt;/strong&gt; &lt;a href="https://raw.github.com/fsk141/dotfiles/master/Hot/.mutt/muttrc"&gt;https://raw.github.com/fsk141/dotfiles/master/Hot/.mutt/muttrc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;View Here:&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;#
# ~/.mutt/muttrc -- Mutt configuration
#

# Name Info
set realname = &amp;quot;Jonny Gerold&amp;quot;
set from = &amp;quot;fsk141@gmail.com&amp;quot;

# IMAP Settings
set imap_user = fsk141@gmail.com
set imap_pass = `grep 'Gmail' ~/Private/passwords.txt | awk '{print $2}'`
set folder = imaps://imap.gmail.com
set imap_check_subscribed

# SMTP Settings
set smtp_url=smtps://$imap_user@smtp.gmail.com
set smtp_pass = `grep 'Gmail' ~/Private/passwords.txt | awk '{print $2}'`

# keep imap connection alive by polling intermittently (time in seconds)
set imap_keepalive = 120

# set timeout (time in seconds)
set timeout = 120

# how often to check for new mail (time in seconds)
set mail_check = 60

# Folders
mailboxes     = &amp;quot;+INBOX&amp;quot;
set spoolfile = &amp;quot;+INBOX&amp;quot;
set postponed = &amp;quot;+[Gmail]/Drafts&amp;quot;
set record 	  = /dev/null

# Need trash patch for this to work
set trash = &amp;quot;+[Gmail]/Trash&amp;quot;

# store message headers locally to speed things up
set header_cache = ~/.mutt/cache/headers

# how about store messages too
set message_cachedir =~/.mutt/cache/bodies

# Mailcap (autoexecute program declarations)
set mailcap_path 	= ~/.mutt/mailcap

# Auto display html
auto_view text/html

# Archive Messages (A) and some other nifty commands
bind editor  noop #fix for spaces in names of folders
macro index,pager A &amp;quot;unset trash\n &amp;quot; &amp;quot;Gmail archive message&amp;quot;
macro index,pager gi &amp;quot;=INBOX&amp;quot; &amp;quot;Go to inbox&amp;quot;
macro index,pager ga &amp;quot;=[Gmail]/All Mail&amp;quot; &amp;quot;Go to all mail&amp;quot;
macro index,pager gs &amp;quot;=[Gmail]/Sent Mail&amp;quot; &amp;quot;Go to starred messages&amp;quot;
macro index,pager gd &amp;quot;=[Gmail]/Drafts&amp;quot; &amp;quot;Go to drafts&amp;quot;

# Goobook query (google contacts)
set query_command=&amp;quot;goobook query '%s'&amp;quot;
bind editor \t complete-query

# Add contacts to google
macro index,pager a &amp;quot;goobook add&amp;quot; &amp;quot;add the sender address to Google contacts&amp;quot;

# Reload goobook db
macro index,pager gr &amp;quot;!goobook reload\n&amp;quot; &amp;quot;Goobook reload&amp;quot;

# Dont request to move messages
set move = no

# Auto include copy of original message when you reply
set include = yes

# Thread Sort (Top = newest messages)
set sort = threads
set sort_aux = 'reverse-last-date-received'

# Unset Markers (don't add + signs if message wraps)
unset markers

# allow mutt to open new imap connection automatically
unset imap_passive

# Colors (transparent background)
color error brightred white
color indicator brightyellow red
color status brightgreen blue
color search white black&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;~/.mutt/mailcap&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;text/html; links -html-numbered-links 1 -dump %s; copiousoutput;
image/*; feh -F %s;
application/pdf; evince %s;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Other posts in my mutt adventure:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;&lt;a href="http://fsk141.com/my-fear-of-mutt-and-why-it-was-all-for-null"&gt;http://fsk141.com/my-fear-of-mutt-and-why-it-was-all-for-null
&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;&lt;a href="http://fsk141.com/gooey-google-contact-goodness-with-mutt"&gt;http://fsk141.com/gooey-google-contact-goodness-with-mutt
&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;**&lt;a href="http://fsk141.com/simply-check-if-you-have-new-gmails"&gt;http://fsk141.com/simply-check-if-you-have-new-gmails&lt;/a&gt;
**&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Alsaequal for When you Need Tailored Audio Response</title>
   <link href="http://fsk141.com/alsaequal-for-when-you-need-tailored-audio-response" />
   <updated>2011-11-09T18:44:12-08:00</updated>
   <id>http://fsk141.com/alsaequal-for-when-you-need-tailored-audio-response</id>
   <content type="html">&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/11/alsaequal.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/alsaequal.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Music producers have a tremendously hard process of making an album; then optimizing it to sound good on other peoples sound equipment. Whether it be a 10k setup, or a dinky pair of earbuds you picked up for pennies at a swap meet. The problem lies in the endless possibilities of end user. When you have a precision setup that has been configured, and adjusted properly, you should be happily listening to just about anything you pump out of the system. Yet when you have a lesser setup; you need to compensate for losses (whether it be low end, mid, or highs)&lt;/p&gt;

&lt;p&gt;I’m an avid collector of FLAC songs; and take a very anal approach to the music that touches my ears. I would rather take up more space on my hard drive, then lose quality. I also use decent earbuds, that are attached to a high definition output. Still, even with a good input; I get degradation along the line. I listen to a large spectrum of music, and while some music sounds great, some doesn’t. I might be enjoying some classical, then some melodic metal jumps in, and sounds like it was recorded in a carpet lined room that absorbed all the healthy mids… I was unhappily content with no easy solution being found for alsa, until recently!&lt;/p&gt;

&lt;p&gt;My current settings are pictured above, and are the “perfect equalizer” settings for my dynamically changing musical tastes.&lt;/p&gt;

&lt;p&gt;If you would like to also enjoy alsaequal, please follow the following steps:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Install alasequal (yaourt -S alsaequal)&lt;/strong&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Create .asoundrc with the following (this will allow multiple audio output [eg mpd &amp;amp; firefox] via dmix)&lt;/strong&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;ctl.equal {
        type equal;
}

pcm.plugequal {
        type equal;
        # Modify the line below if you don't
        # want to use sound card 0.
        slave.pcm &amp;quot;plug:dmix&amp;quot;;
}

###

# Comment out the 'default' version for 'optional' equal, visa versa

#pcm.equal {
pcm.!default {

###
        type plug;
        slave.pcm plugequal;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Configure mpd (if you use it) – this is my sound output device in /etc/mpd.conf:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;audio_output {
	type		&amp;quot;alsa&amp;quot;
	name		&amp;quot;My ALSA EQ&amp;quot;
	device		&amp;quot;plug:plugequal&amp;quot;
	mixer_type      &amp;quot;software&amp;quot;	# optional
	mixer_device	&amp;quot;default&amp;quot;	# optional
	mixer_control	&amp;quot;PCM&amp;quot;		# optional
	mixer_index	&amp;quot;0&amp;quot;		# optional
	use_mmap	&amp;quot;yes&amp;quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Set equalizations:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;alsamixer -D equal
# or
alsamixergui -D equal&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Enjoy alsa &amp;amp; all the sounds coming out of your computer!&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href="http://doc.slitaz.org/en:guides:alsaequal"&gt;http://doc.slitaz.org/en:guides:alsaequal&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href="http://www.thedigitalmachine.net/alsaequal.html"&gt;http://www.thedigitalmachine.net/alsaequal.html&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>`Punch` a Useful Feature Into todo.txt </title>
   <link href="http://fsk141.com/punch-a-useful-feature-into-todo-txt" />
   <updated>2011-11-05T14:25:05-07:00</updated>
   <id>http://fsk141.com/punch-a-useful-feature-into-todo-txt</id>
   <content type="html">&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/11/todopunch.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/todopunch.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After using &lt;a href="http://todotxt.com"&gt;todo.txt&lt;/a&gt; for years, I’ve realized that a crucial feature has been missing. I’ve been doing tasks, completing them; and then wondering curiously how much time I spent on something after the fact. Well after a quick googling; I found &lt;a href="https://code.google.com/p/punch-time-tracking"&gt;punch-time-manager&lt;/a&gt;, and was rewarded with a punch card style time tracking utility. It has a simple punch in/out feature with a reporting function similar to todo.txt. After using punch-time-management for the past couple weeks, I love it; and hope you’ll come to love it too.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Setup todo.txt &amp;amp; punch-time-tracking&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# Archlinux &amp;amp;&amp;amp; yaourt (automagic)
yaourt -S todotxt punch-time-tracking

# Manual way
wget http://cloud.github.com/downloads/ginatrapani/todo.txt-cli/todo.txt_cli-2.8.tar.gz
wget https://punch-time-tracking.googlecode.com/files/punch-time-tracking-1.3.zip

tar xf todo.txt_cli-2.8.tar.gz
unzip punch-time-tracking-1.3.zip

# read the readme for todo.txt &amp;amp;&amp;amp; setup

# You can add the executables (Punch.py &amp;amp; todo.sh) into a PATH dir or add to .bashrc || .zshrc
# This is what I have in my .zshrc
alias todo='/usr/bin/todo.sh -n -d ~/Dropbox/Public/todo.txt/todo.cfg'&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;Modify Punch.py with todo.cfg location&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# edit /usr/bin/punch (or Punch.py if you manually setup)

# locate the following &amp;amp;&amp;amp; add your config location...
files = [ &amp;quot;todo.cfg&amp;quot;, &amp;quot;.todo.cfg&amp;quot; ]

## add your specific location if it's different from the predefined defaults
files = [ &amp;quot;todo.cfg&amp;quot;, &amp;quot;.todo.cfg&amp;quot;, &amp;quot;Dropbox/Public/todo.txt/todo.cfg&amp;quot; ]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;After setup, add a task to your todo &amp;amp; punch it:&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;$ punch in 21
Start timer on: todo/punch post

$ punch what
Active task: todo/punch post (0 minutes)

$ punch out
Stop timer on: todo/punch post

$ punch report
2011-10-28 (1 hours 43 minutes):
	do some domain moving... (12 minutes)
	mutt (1 hours 31 minutes)
	zfs (0 minutes)
2011-10-29 (0 minutes):
	Transdroid (0 minutes)
2011-11-05 (0 minutes):
	todo/punch post (0 minutes)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Boot USB Drives in VirtualBox</title>
   <link href="http://fsk141.com/boot-usb-drives-in-virtualbox" />
   <updated>2011-11-04T23:37:17-07:00</updated>
   <id>http://fsk141.com/boot-usb-drives-in-virtualbox</id>
   <content type="html">&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/11/vboxusb.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/vboxusb.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just another one to add to the list of things that VirtualBox can’t do out of the box. (Seems like it should be a little more full featured for being around so long.)
Anywho, VirtualBox can’t load USB’s out of the box, but with a little faux emulation you can boot a USB, and do some testing on your bootable USB sticks. It’s elementary my dear watson, just execute the following, and be rewarded with a selectable USB device.&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;mkdir -p ~/.VirtualBox/HardDisks

## Replace /dev/sdb with your device (fdisk -l) if you aren't sure

VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/HardDisks/usbdisk.vmdk -rawdisk /dev/sdb&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;That’s it; not just start up a copy of VirtualBox &amp;amp; make a new virtual machine; add your usbdisk.vmdk &amp;amp; enjoy the pictorial below if you have any confusion:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/11/vbox1.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/vbox1.png" alt="" /&gt;&lt;/a&gt;&lt;a href="http://fsk141.com/uploads/2011/11/vbox2.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/vbox2.png" alt="" /&gt;&lt;/a&gt;&lt;a href="http://fsk141.com/uploads/2011/11/vbox3.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/vbox3.png" alt="" /&gt;&lt;/a&gt;&lt;a href="http://fsk141.com/uploads/2011/11/vbox4.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/vbox4.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Simply Check if you Have new Gmails</title>
   <link href="http://fsk141.com/simply-check-if-you-have-new-gmails" />
   <updated>2011-11-02T21:34:48-07:00</updated>
   <id>http://fsk141.com/simply-check-if-you-have-new-gmails</id>
   <content type="html">&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/11/gmailstatus.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/11/gmailstatus.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After setting up mutt; I figured I’d go the extra mile; and add a notification system so that I know when I have some new emails. Well come to find out; it was easy as pie. And I learned a few new little things in the process.
First of all; gmail has a nifty url that serves a feed for your emails:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mail.google.com/mail/feed/atom"&gt;https://mail.google.com/mail/feed/atom&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The feed will tell you about new emails, unread emails, and stuff like that. But what makes the feed so awesome, is that it’ s well labeled, and easy to parse. So for my script I just need to call the url, pass a username and password, and enjoy the output:&lt;/p&gt;

&lt;p&gt;Download Script: &lt;a href="https://raw.github.com/fsk141/scripts/master/checkgmail"&gt;https://raw.github.com/fsk141/scripts/master/checkgmail&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or view it below:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;#!/bin/sh

## Simple Check Gmail ##
## Jonny Gerold  ##

# User &amp;amp; Password should look like the following:
## set imap_user = me@domain.tld
## set imap_pass = my_pass
### You can hardset USER &amp;amp; PASS here if you would like; I just
### didn't want my user/pass all over the place in conf files

USER=$(grep 'set imap_user' ~/.mutt/muttrc | awk '{ print $4 }')
PASS=$(grep 'set imap_pass' ~/.mutt/muttrc | awk '{ print $4 }')

# Check mail status...
function check () {
curl -s -u $USER:$PASS https://mail.google.com/mail/feed/atom
}

# Find number of messages unread
function fullcount () {
check |  grep '&amp;lt;fullcount&amp;gt;' | sed -e 's/&amp;lt;fullcount&amp;gt;//' -e 's/&amp;lt;\/fullcount&amp;gt;//'
}

# Print result
function print () {
if [[ -n $(fullcount) ]] &amp;amp;&amp;amp; [[ $(fullcount) == '1' ]]; then
echo &amp;quot;You have $(fullcount) new email!&amp;quot;
else
echo &amp;quot;You have $(fullcount) new emails!&amp;quot;
fi
}

# notify-send that message!
#notify-send &amp;quot;$(print)&amp;quot;

# output number of new emails
fullcount

# static print 'You have $(fullcount) new email(s)
#print&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;How to make the script work for you?&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Add it to your crontab&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;10 * * * * * ~/checkgmail&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;If you use statnot; add it to your ~/.statusline&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# I have the script set to just output the number of new emails
function nEmail () {
if [[ $(~/.scripts/checkgmail) &amp;gt; 0 ]]; then
echo &amp;quot;&amp;gt;&amp;gt; $(~/.scripts/checkgmail) NEW EMAIL | &amp;quot;
fi
}
# my actual output looks something like this:
echo &amp;quot;$(nEmail)$(mpd)V: $volume | B: $(bat) | $datetime&amp;quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;Add it to conky&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;exec ~/checkgmail&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>sudo (brief history -- &amp; installation) -- Part one of multipart series</title>
   <link href="http://fsk141.com/how-to-properly-use-sudo" />
   <updated>2011-10-25T22:46:22-07:00</updated>
   <id>http://fsk141.com/how-to-properly-use-sudo</id>
   <content type="html">&lt;p&gt;&lt;img src="http://imgs.xkcd.com/comics/sandwich.png" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;There was a time in all of our lives when we needed to login to a root account to install packages, or for the smarter amongst linux noobs were the people that used su - ;) I don’t actually recall when I started using sudo (&lt;strong&gt;S&lt;/strong&gt;uper &lt;strong&gt;U&lt;/strong&gt;ser &lt;strong&gt;D&lt;/strong&gt;o – Pronounced soo-doo), but I know I’ve been using it long enough to forget when I started using it :0 The powers of sudo with multi-user environments are endless. Being able to restrict programs to categorical execution rights is fantastic. Especially when you only want to allow a user to view logs; and do nothing else with the system (dev team); or allow someone to add users so you don’t have to, yet not worry about them dicking anything else up.&lt;/p&gt;

&lt;p&gt;This tutorial is short, sweet, and simple, and based primarily on using sudo with scripts in a single user environment. Yet I’ll go into a short detail on how to expand for multi-user machines (it’s fairly straightforward)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lets start with a little intro to sudo:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Sudo was first conceived and implemented by Bob Coggeshall and Cliff Spencer around 1980 at the Department of Computer Science at SUNY/Buffalo. It ran on a VAX-11/750 running 4.1BSD. An updated version, credited to Phil Betchel, Cliff Spencer, Gretchen Phillips, John LoVerso and Don Gworek, was posted to the net.sources Usenet newsgroup in December of 1985.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;– &lt;a href="http://www.sudo.ws/sudo/history.html"&gt;http://www.sudo.ws/sudo/history.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sudo has been around for a long time, maintained by a lot of different people, and taken gradual changes until Todd C. Miller took hold of the project. A constant stream of updates is provided by Quest Software, and their sponsorship of sudo by paying Todd to manage sudo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sudo Setup:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before starting anything, lets start by setting sudo up.&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;pacman -S sudo

## this will add your username to group wheel

## We'll use this group assignment later

gpasswd -a &amp;lt;your_username&amp;gt; wheel&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Sudo Configuration:&lt;/strong&gt;
Now that everything’s all setup, we need to dive into /etc/sudoers (carefully), and edit some things.
&lt;strong&gt;DO NOT EDIT /etc/sudoers DIRECTLY…&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;su -
visudo&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Instead of showing you the default /etc/sudoers file, I’ll instead show you what you could easily replace it with:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;#
# /etc/sudoers -- visudo
#

Cmnd_Alias    SUSPEND = /usr/sbin/pm-suspend
Cmnd_Alias    INTERNET = /usr/bin/netcfg, /sbin/ifconfig, /usr/sbin/iwconfig, /usr/sbin/iwlist, /usr/sbin/dhcpcd
Cmnd_Alias    SAVEPOWER = /home/fsk141/.scripts/autopower

root ALL=(ALL) ALL

%wheel ALL=(ALL) ALL, NOPASSWD: SUSPEND, NOPASSWD: INTERNET, NOPASSWD: SAVEPOWER&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Lets break this down into simple little bits. I’m using Cmnd_Alias’ for a simple purpose, and I have a very stripped down visudo. I have all of my necessary programs that live in my misc scripts in Cmnd_Alias’ and then call them from the wheel group selector (%wheel)&lt;/p&gt;

&lt;p&gt;The simplest solution would to have just two lines in your /etc/sudoers file:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;#root can login &amp;amp;amp; has all permissions

root ALL=(ALL) All

#Users of group wheel can login &amp;amp;amp; has all permissions

%wheel ALL=(ALL) ALL&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This will allow you to say ‘sudo su -‘, from your standard prompt, and be dropped into a nice root prompt. Or easily run ‘sudo rc.d start nginx’ to start your webserver without having to login to root first…&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;This is just a starter in a multi-part series for sudo, I plan on writing a more complicated write up for multi-user applications, and multi-system applications (restricting users to certain apps, certain servers, etc) I also have an interview lined up with Todd C. Miller, and hope to get some insightful comments out of him.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Gooey Google Contact Goodness (with mutt)</title>
   <link href="http://fsk141.com/gooey-google-contact-goodness-with-mutt" />
   <updated>2011-10-24T23:23:16-07:00</updated>
   <id>http://fsk141.com/gooey-google-contact-goodness-with-mutt</id>
   <content type="html">&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/10/goobook_entries.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/10/goobook_entries.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After just being acquainted with mutt (&lt;a href="http://fsk141.com/my-fear-of-mutt-and-why-it-was-all-for-null"&gt;My fear of mutt, and why it was all for NULL&lt;/a&gt;) I forgot that I hate remembering things. I have too many things to remember already by using linux; why would I want to start having to remembering people’s names and email addresses on top of all that unix/linux sysadmin knowledge?&lt;/p&gt;

&lt;p&gt;Well instead of hacking together some halfassed solution by exporting a csv of my google contacts, and parsing, and gobblygook; I did a quick search and found that there’s a program called goobook (&lt;a href="http://pypi.python.org/pypi/goobook/1.4alpha4"&gt;Homepage&lt;/a&gt;) Also, and a little down the page is a neato description on how to use it with mutt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After installing goobook (yaourt -S goobook-git) I configured it by making a new file ~/.netrc&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;machine google.com
login me@gmail.com
password my_password_here&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;I then tested it out to make sure it’s working:&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# Enjoy all your contacts being dumped to stdout
goobook dump_contacts&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;As long as something outputted then you should be golden, otherwise enjoy troubleshooting; there’s not that much you could have done wrong up until this point :P&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now that you have goobook working, lets integrate it into mutt:&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# Add the following to your ~/.mutt/muttrc

# Goobook query (google contacts)
set query_command=&amp;quot;goobook query '%s'&amp;quot;
bind editor \t complete-query ## tab completion for contacts :)

# Add contacts to google
macro index,pager a &amp;quot;goobook add&amp;quot; &amp;quot;add the sender address to Google contacts&amp;quot;

# Reload goobook db
macro index,pager gr &amp;quot;!goobook reload\n&amp;quot; &amp;quot;Goobook reload&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Now all you have to do is reload mutt, and enjoy your spoils:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;To search just start an email; and hit your tab key to query the contact database&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;To add a new contact for an email you’re reading/have selected just press the letter a&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;To reload the goobook database (say you added a contact with your phone, or online); just hit gr in sequence; and enjoy a fresh and up to date goobook database.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On a side note, I seem to be migrating deeper into cli apps, and ditching the gui counterparts. Even though I have a killer computer with a bunch of ram;  I figure the cpu cycles can be better spent on something else. And at best case scenario, it might save some of my precious battery life. Expect some more posts I guess about all the new cli things that I’ve setup.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>My fear of mutt, and why it was all for NULL</title>
   <link href="http://fsk141.com/my-fear-of-mutt-and-why-it-was-all-for-null" />
   <updated>2011-10-24T16:34:24-07:00</updated>
   <id>http://fsk141.com/my-fear-of-mutt-and-why-it-was-all-for-null</id>
   <content type="html">&lt;p&gt;mutt… For those of us that have been using linux for a long time, we’ve probably heard of mutt at least once or twice throughout our lives. And most of the things that go along with mutt are negatively centered around how much of a pain in the ass it is to configure. The awfully dreadful ~/.muttrc and all the confusion that is encompassed within. Well I fell woe to the same gossip of mutt for all the years, and have mostly stayed in my browser bubble; by using gmail in firefox, and being content.&lt;/p&gt;

&lt;p&gt;After having some time to tinker with my current solution, I setup alpine. I was thrilled it took all of 2 minutes to setup, and have a working cli email solution. This wonderful setup experience was all that I liked about alpine. The Nano-esque feel and all the random buttons I had to press were painful. Coming from a vim background, using ‘w’ to search for something is unholy to the standard of ‘/’ that I’m so familiar with. So after using alpine for a few minutes, I was fed up, and did a pacman -Rs re-alpine… I was content for a little while, until the next day I figured I’d try out mutt, and if it took me more than 20 minutes I would call it quits, and just live with firefox &amp;amp; gmail.&lt;/p&gt;

&lt;p&gt;To my surprise, mutt only took me about 5 minutes to fetch email, and about another 5 minutes to send mail, and about 15 to tweak to my liking. I was flabbergasted that I came away from the setup unscathed, and happy with what I achieved.&lt;/p&gt;

&lt;p&gt;I started by pointing my browser at the ever helpful Arch Linux Wiki =&amp;gt;   &lt;a href="https://wiki.archlinux.org/index.php/Mutt"&gt;https://wiki.archlinux.org/index.php/Mutt&lt;/a&gt; and gandering at the setup procedure.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;I started by adding my login information and name to ~/.mutt/muttrc&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;#
# ~/.mutt/muttrc -- Mutt configuration
#

# Name Info
set realname = &amp;quot;Jonny Gerold&amp;quot;
set from = &amp;quot;me@gmail.com&amp;quot;

# IMAP Settings
set imap_user=me@gmail.com
set imap_pass=my_password_here
set folder=imaps://imap.gmail.com
set imap_check_subscribed

# SMTP Settings
set smtp_url=smtps://$imap_user@smtp.gmail.com
set smtp_pass=my_password_here&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;I then proceeded to re-install mutt with mutt-trash which enabled trash folder support:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;yaourt -Sy mutt-trash&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Then I found some sweet settings by searching the internet:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# Folders
mailboxes     = &amp;quot;+INBOX&amp;quot;
set spoolfile = &amp;quot;+INBOX&amp;quot;
set postponed = &amp;quot;+[Gmail]/Drafts&amp;quot;

# Archive Messages (A)
macro index,pager A &amp;quot;unset trash\n &amp;quot; &amp;quot;Gmail archive message&amp;quot;

# Thread Sort
set sort=threads

# Need trash patch for this to work
set trash = &amp;quot;+[Gmail]/Trash&amp;quot;

# store message headers locally to speed things up
set header_cache = ~/.mutt/hcache

# allow mutt to open new imap connection automatically
unset imap_passive

# keep imap connection alive by polling intermittently (time in seconds)
set imap_keepalive = 300

# how often to check for new mail (time in seconds)
set mail_check = 120

# Auto display html
set mailcap_path 	= ~/.mutt/mailcap
auto_view text/html&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;I topped the sunday with some pretty colors:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;cat /usr/share/doc/mutt/samples/colors.linux &amp;gt;&amp;gt; ~/.mutt/muttrc&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;After that I cleaned everything up a little and was left with this (removed lots of color declarations to support transparency):&lt;/strong&gt;&lt;a href="https://raw.github.com/fsk141/dotfiles/master/Hot/.mutt/muttrc"&gt;https://raw.github.com/fsk141/dotfiles/master/Hot/.mutt/muttrc&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;#
# ~/.mutt/muttrc -- Mutt configuration
#

# Name Info
set realname = &amp;quot;Jonny Gerold&amp;quot;
set from = &amp;quot;fsk141@gmail.com&amp;quot;

# IMAP Settings
set imap_user=fsk141@gmail.com
set imap_pass=mypass
set folder=imaps://imap.gmail.com
set imap_check_subscribed

# SMTP Settings
set smtp_url=smtps://$imap_user@smtp.gmail.com
set smtp_pass=mypass

# Folders
mailboxes     = &amp;quot;+INBOX&amp;quot;
set spoolfile = &amp;quot;+INBOX&amp;quot;
set postponed = &amp;quot;+[Gmail]/Drafts&amp;quot;

# Archive Messages (A)
macro index,pager A &amp;quot;unset trash\n &amp;quot; &amp;quot;Gmail archive message&amp;quot;

# Thread Sort
set sort=threads

# Need trash patch for this to work
set trash = &amp;quot;+[Gmail]/Trash&amp;quot;

# store message headers locally to speed things up
set header_cache = ~/.mutt/hcache

# allow mutt to open new imap connection automatically
unset imap_passive

# keep imap connection alive by polling intermittently (time in seconds)
set imap_keepalive = 300

# how often to check for new mail (time in seconds)
set mail_check = 120

# Auto display html
set mailcap_path 	= ~/.mutt/mailcap
auto_view text/html

# Colors

color error brightred white
color indicator brightyellow red
color status brightgreen blue
color search white black&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# Contents of ~/.mutt/mailcap
text/html; w3m -I %{charset} -T text/html; copiousoutput; #make sure you have w3m installed&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;This is what I’m left with:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The learning curve for mutt is very simple (well for me anyways); all the basic applicable commands are available at the top of the page, and anything else can easily be found by hitting ‘?’ and just hitting spacebar a few times till you find what you need. The one custom thing that you should pay attention to is how to Archive / Delete messages. I added a little scriptlet so that if you are reading / selecting a message you can hit ‘A’ (capital A) &amp;amp; your message will be marked to be archived. Otherwise hit ‘d’, and your message will be sent to trash (unless you don’t have the trash patch, in which case you should comment out the set trash variable)&lt;/p&gt;

&lt;p&gt;Another nifty inclusion in my muttrc is the ability to automatically parse html (so you don’t get a bunch of garbled html, that makes the emails hard to read. This inclusion is with the set mailcap &amp;amp; ~/.mutt/mailcap additions.&lt;/p&gt;

&lt;p&gt;Other than that the configuration above is simple, commented, and straightforward. Nothing complicated, and if you just copy the config and go, it’s less than 5 minutes to have a wonderfully beautiful email client setup, and ready to use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; &lt;a href="http://fsk141.com/gooey-google-contact-goodness-with-mutt"&gt;http://fsk141.com/gooey-google-contact-goodness-with-mutt&lt;/a&gt; « Add Google Contacts to mutt&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>[tutorial] Disable ssh password login; Enable ssh key auth</title>
   <link href="http://fsk141.com/tutorial-disable-ssh-password-login-enable-ssh-key-auth" />
   <updated>2011-10-23T11:00:05-07:00</updated>
   <id>http://fsk141.com/tutorial-disable-ssh-password-login-enable-ssh-key-auth</id>
   <content type="html">&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/10/2011-10-23-102506_235x164_scrot.png"&gt;&lt;img src="http://fsk141.com/uploads/2011/10/2011-10-23-102506_235x164_scrot.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So you have a Linux server accessible to the outside network? Oh, have you checked your auth logs lately? Bet not… Well go ahead and check; if you have a server publicly accessible your auth log should be full with potential login attempts. Hopefully all of them failed attempts; I would recommend going ahead and checking your Accepted logins, make sure it’s not at 3 in the morning on a Saturday; or sometime you’d never login :)&lt;/p&gt;

&lt;p&gt;Anywho; You could spend a whole lot of time and effort setting up a software or hardware mitigation solution. While this can be efficient in finding users that shouldn’t have access to your servers, and can help you with overall blacklists, you can still get leaks through. Say someone happens to guess your password in less than 3 times and you limit is set to 3? What a bummer, server compromised. Anywho, this solution should prevent EVERYONE (except you of course) from accessing your server. Well via password auth anyways…&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Lets start on the local machine that plans on connecting to the ssh server:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;###Result (this isn't my key; or hostname :):
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/fsk141/.ssh/id_rsa): .meh
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in .ssh/id_rsa.
Your public key has been saved in .ssh/id_rsa.pub.
The key fingerprint is:
a4:fb:92:4b:33:a5:f6:5b:b8:ce:f7:a1:78:73:4a:f0 fsk141@oHai
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|        .        |
|       o         |
|      . S        |
|       + +       |
|      B.. E .    |
|     oo* =+...   |
|      .+O+o=.    |
+-----------------+&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Now that we have our ssh public key available, lets copy it to the server:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;## if you have ssh-copy-id ##
ssh-copy-id myserver.com

## if you don't have ssh-copy-id ##
## you can run the ssh &amp;quot;commands&amp;quot; on you server
## I just made it so everything
## could be done from connecting localhost
ssh me@myserver.com 'if [ ! -d ~/.ssh ]; then mkdir ~/.ssh; fi'
scp .ssh/id_rsa.pub me@myserver.com:.ssh/authorized_keys
ssh me@myserver.com 'chmod 600 ~/.ssh/authorized_keys'&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Now that we’re all ready, test things out; make sure you can login w/o password auth&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;ssh me@myserver.com&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Onto disabling password auth&lt;/strong&gt; (&lt;strong&gt;WARNING:&lt;/strong&gt; make sure you can login first, otherwise you’ll lock yourself out!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Edit /etc/ssh/sshd_config &amp;amp; add the following:&lt;/p&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;PermitRootLogin no ##(optional) enable this if you don't want root login (strongly advised)
PasswordAuthentication no&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Restart sshd server&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;sudo /etc/rc.d/sshd restart&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Test everything on another terminal, before closing your session:&lt;/strong&gt;  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If everything works, hooray, enjoy a secure system.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>[tutorial] Squid Proxy [with digest authentication]</title>
   <link href="http://fsk141.com/tutorial-squid-proxy-with-digest-authentication" />
   <updated>2011-10-07T18:37:17-07:00</updated>
   <id>http://fsk141.com/tutorial-squid-proxy-with-digest-authentication</id>
   <content type="html">&lt;p&gt;After posting a simple method of setting up squid proxy with basic authentication, I figured I’d post a little more secure method. The digest authentication procedure is simple, instead of transmitting your username/password in plaintext, you use an md5summed answer that protects your credentials. While some traffic could be sniffed (will address that with another post about ssl encrypting your squid proxy), your credentials will be safe. Anywho lets dive right in&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Install squid &amp;amp; continue to step 2&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Configure a new /etc/squid/squid.conf&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# Digest Squid Auth -- better method
# /etc/squid/squid.conf
#

http_port 3129

auth_param digest program /usr/lib/squid/digest_pw_auth -c /etc/squid/digest_passwd

# Make /etc/squid/digest_password this way:
## First get a script...
## wget http://dl.dropbox.com/u/52078/digest_passwd.sh
## Execute something similar to the following
### sh ./digest_passwd.sh your_username_here your_password_here 'Squid proxy-caching web server' &amp;gt; /etc/squid/digest_passwd # need to execute as root/sudo
## This will give you a happy digest_passwd file

auth_param digest children 5
auth_param digest realm Squid proxy-caching web server
auth_param digest nonce_garbage_interval 5 minutes
auth_param digest nonce_max_duration 30 minutes
auth_param digest nonce_max_count 50

acl authenticated proxy_auth REQUIRED
http_access allow authenticated&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;Save the file, don’t forget to create /etc/squid/digest_passwd&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# Make /etc/squid/digest_password this way:
## First get a script...
## wget http://dl.dropbox.com/u/52078/digest_passwd.sh (contents below)
------
#!/bin/sh

user=$1
pass=$2
realm=$3

if [ -z &amp;quot;$1&amp;quot; -o -z &amp;quot;$2&amp;quot; -o -z &amp;quot;$3&amp;quot; ] ; then
        echo &amp;quot;Usage: $0 user password 'realm'&amp;quot;;
        exit 1
fi

ha1=$(echo -n &amp;quot;$user:$realm:$pass&amp;quot;|md5sum |cut -f1 -d' ')
echo &amp;quot;$user:$realm:$ha1&amp;quot;
------
## Execute something similar to the following
### sh ./digest_passwd.sh your_username_here your_password_here 'Squid proxy-caching web server' &amp;gt; /etc/squid/digest_passwd # need to execute as root/sudo
## This will give you a happy digest_passwd file&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;Startup squid, and enjoy a slightly more protected experience…&lt;/li&gt;
&lt;/ol&gt;

</content>
 </entry>
 
 <entry>
   <title>[tutorial] Setup your very own squid proxy [with basic authentication]</title>
   <link href="http://fsk141.com/tutorial-setup-your-very-own-squid-proxy-with-basic-authentication" />
   <updated>2011-10-07T18:20:48-07:00</updated>
   <id>http://fsk141.com/tutorial-setup-your-very-own-squid-proxy-with-basic-authentication</id>
   <content type="html">&lt;p&gt;So, after being trained in the dark arts of pentesting, hacking, and other nefarious computer skills; I suppose I should secure my webtraffic when out and about.  I know there are many ways to do this (ssh being one:&lt;a href="http://fsk141.com/simple-socks-5-proxy-ssh-tunnel"&gt; http://fsk141.com/simple-socks-5-proxy-ssh-tunnel&lt;/a&gt;, but I figure setting up a proxy is one of the easiest things to access &amp;amp; use.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Lets start by installing squid&amp;lt;div&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class="bash"&gt;pacman -Sy squid #for Arch Linux -- use apt or whatever for other distros&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Then lets do a little configuration additions (make a new file /etc/squid/squid.conf):&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# Plaintext Authentication Squid Setup
# /etc/squid/squid.conf
#
http_port 3129 #default port to connect with

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd # might need to change paths dependant on distro

#make /etc/squid/passwd with the following:
## htpasswd /etc/squid/passwd your_username_here # execute as root/sudo

auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

# acl allow rules
acl authenticated proxy_auth REQUIRED
http_access allow authenticated&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;Save the file, and don’t forget to create /etc/squid/passwd&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;htpasswd /etc/squid/passwd your_username_here # execute as root/sudo&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;If everything is happy and giggly, then you can startup squid and have a ball browsing (sudo rc.d start squid)&lt;/li&gt;
&lt;/ol&gt;

</content>
 </entry>
 
 <entry>
   <title>[fix] PTY allocation request failed on channel 0 (Arch Linux VPS)</title>
   <link href="http://fsk141.com/fix-pty-allocation-request-failed-on-channel-0" />
   <updated>2011-10-07T17:40:01-07:00</updated>
   <id>http://fsk141.com/fix-pty-allocation-request-failed-on-channel-0</id>
   <content type="html">&lt;p&gt;Another problem with the new glibc &amp;amp; old kernel pair, anywho; this is an easy fix, just remember to do it before you logout, or it’s a little painful (unless you have root privs)&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Start with adding the correct entries to /etc/fstab:&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;#
# /etc/fstab: static file system information
#
# &amp;lt;file system&amp;gt;    &amp;lt;dir&amp;gt;    &amp;lt;type&amp;gt;    &amp;lt;options&amp;gt;    &amp;lt;dump&amp;gt;    &amp;lt;pass&amp;gt;
devpts                 /dev/pts      devpts    defaults            0      0
shm                    /dev/shm      tmpfs     nodev,nosuid        0      0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;Then add the following to /etc/rc.local&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;rm -rf /dev/ptmx
mknod /dev/ptmx c 5 2
chmod 666 /dev/ptmx
umount /dev/pts
rm -rf /dev/pts
mkdir /dev/pts
mount /dev/pts&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;Reboot, and cross your fingers for success; hopefully everything will be okay :)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;WAIT, I rebooted, and can’t access my vps, how do I fix this?&lt;/p&gt;

&lt;p&gt;Well a couple solutions include you logging into a serial console and running the commands.&lt;/p&gt;

&lt;p&gt;Or if you have root access availiable you can login with:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;ssh yourserver.com '/bin/bash -i' #Run all the same procedures as above, reboot&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Otherwise you’re kinda screwed, and just have to reinstall your VPS, and fix the issue before you reboot…&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>[fix] FATAL: kernel too old (Arch Linux VPS)</title>
   <link href="http://fsk141.com/fix-fatal-kernel-too-old-arch-linux-vps" />
   <updated>2011-10-03T19:50:31-07:00</updated>
   <id>http://fsk141.com/fix-fatal-kernel-too-old-arch-linux-vps</id>
   <content type="html">&lt;p&gt;Just got a shiny new vps with &lt;a href="http://alienvps.com"&gt;AlienVPS&lt;/a&gt; after waiting way to long for &lt;a href="http://buyvm.net"&gt;BuyVM&lt;/a&gt; to get in some stock. Anywho, I booted it up, installed Arch Linux, went to update, and BLAM! got a little broken VPS with the error: &lt;em&gt;FATAL: kernel too old&lt;/em&gt;. Well I’ve come across this before, and it normally has to do with the Host Node being less than 2.6.18 kernel &amp;amp; the VPS not being happy when you try to update glibc.&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;#old kernel support needs to be compiled into glibc
 --enable-kernel=2.6.18 --disable-profile&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Anywho, the after trying to get the package &amp;amp; update with a pacman -Su; Ignoring glibc &amp;amp; toolchain in pacman.conf, and some other tomfoolery, I remembered that I can just add a nice friend of the VPS world, and get everything golden.&lt;/p&gt;

&lt;p&gt;The Fix:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Open up /etc/pacman.conf with a text editor (vi/vim/nano)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Add the following &lt;strong&gt;ABOVE CORE REPO!&lt;/strong&gt;:&amp;lt;div&amp;gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class="bash"&gt;[glibc-vps]
Server = http://dev.archlinux.org/~ibiru/openvz/glibc-vps/$arch # where arch == i686 or x86_64&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Run pacman -Syu&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Do the following outlined here: &lt;a href="http://fsk141.com/fix-pty-allocation-request-failed-on-channel-0"&gt;http://fsk141.com/fix-pty-allocation-request-failed-on-channel-0&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Sit back and enjoy your success…&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Source (had to remember repo link): &lt;a href="https://wiki.archlinux.org/index.php/VPS_Repo"&gt;https://wiki.archlinux.org/index.php/VPS_Repo&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Entering Walled Garden's</title>
   <link href="http://fsk141.com/entering-walled-gardens" />
   <updated>2011-09-16T23:56:29-07:00</updated>
   <id>http://fsk141.com/entering-walled-gardens</id>
   <content type="html">&lt;p&gt;After visiting Alaska &amp;amp; Canada I have been wishing I was in the core USA more and more. Considering that in between Vancouver and Alaska internet is days apart, and that you have to pay for everything (and it’s not cheap). Well I’m way to cheap to pay for internet, and would rather just go without, but when in a pinch, and from boredom I figured out a simple way to get some free interwebs. Most of the Walled Garden’s (Open wireless connections that require you to login to use internet) are access controlled with MAC addresses, and as long as you can find an active (or recently active) user that paid for a connection, you’re in business. Depending on where you are, and how smart the network guru is it might be a little tricky to collect some MAC addresses. Here is what I tried, and have been very successfully sucking the teet of the internet and all it’s glorious power:   First I thought I would try a simple wireless scan, and find associated clients. Seems like a foolproof undetectable plan…&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;#Using my favorite tools part of the aircrack suite!

sudo airmon-ng start wlan0 #(wlan0 being your wireless interface)

sudo airodump-ng wlan0 #&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This is an expected result. You’ll only get computers that are close to you, and aren’t necessary guaranteed reliable clients/MAC addresses.&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;CH  6 ][ BAT: 1 hour 55 mins ][ Elapsed: 0 s ][ 2011-09-16 23:40

BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID

00:22:6B:64:76:66  -82        3        1    0  11  54e  WPA  TKIP   PSK  SBW
00:25:9C:4D:4B:E8  -81        2        0    0  11  54e  OPN              linksys
00:1F:41:0F:C9:09  -76        2        1    0  11  54e. OPN              Connect_Here
00:1F:41:0F:EA:F9  -55        5        1    0  11  54e. OPN              Connect_Here
00:1F:41:0F:EB:09  -72        4        3    1   6  54e. OPN              Connect_Here

BSSID              STATION            PWR   Rate    Lost  Packets  Probes

00:1F:41:0F:C9:09  90:4C:E5:38:7C:6E   -1   12e- 0      0        1
00:1F:41:0F:EA:F9  90:84:0D:B3:D9:4A   -1   54e- 0      0        1
00:1F:41:10:C3:39  78:D6:F0:6C:A1:B3  -75    0 -24      0        1
(not associated)   00:1F:41:0F:EB:09  -70    0 - 2      0        3  Connect_Here&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Well I didn’t really get any gold with the wireless approach, so I decided to do something a little more despicable, and invasive. Come to find out the network I was exploiting had a good network guru, and all internal port traffic was blocked. No matter, I was still able to scan &amp;amp; find some clients. (with a little tomfoolery)&lt;/p&gt;

&lt;p&gt;I started with my most common nmap scan:&lt;/p&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;sudo nmap -A -T4 192.168.99.100-200 # (-A -T4 and the network I'm scanning)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;That didn’t provide any results, so I had to get a little more creative. The network blocked ICMP pings, and a plethora of other nefarious traffic. So I started reading the man page on nmap, and found a line that gave me what I needed:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;sudo nmap -A -T4 -Pn -S 192.168.99.4 192.168.99-102.100-200 -e wlan0 |grep MAC # (-A -T4 -Pn (ignore pings) -S 192.168.99.4 (spoof the source address -- I used the router as the spoof address) -- addresses I want to scan (their network wasn't separated via vlans, so I could scan internetwork) -e wlan0 (use wlan0 as scanning interface) | grep MAC (only give me the MAC addresses, I don't care about the rest)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This worked like a charm, and I was able to collect a wonderful bounty:&lt;/p&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;MAC Address: A4:67:06:71:37:60 (Unknown)
MAC Address: D8:9E:3F:34:A2:2F (Unknown)
MAC Address: 28:E7:CF:D2:C3:D5 (Unknown)
MAC Address: E8:06:88:48:58:CE (Apple )
MAC Address: B8:AC:6F:79:B5:8E (Dell)
MAC Address: 00:1E:4C:8E:AB:A6 (Hon Hai Precision Ind.Co.)
MAC Address: 18:F4:6A:B4:89:68 (Unknown)
MAC Address: 00:1C:23:A6:B0:AD (Dell)
MAC Address: 00:18:DE:98:60:AE (Intel)
MAC Address: 00:0E:35:4C:B4:4E (Intel)
MAC Address: 90:4C:E5:60:35:8A (Hon Hai Precision Ind. Co.)
MAC Address: 40:A6:D9:48:BF:71 (Unknown)
MAC Address: 00:1A:80:D6:61:6B (Sony)
MAC Address: 88:C6:63:52:CD:24 (Unknown)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Depending on how active the user was/is I’m easily able to change my mac address:&lt;/p&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;sudo macchanger -m A4:67:06:71:37:60 wlan0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;And as long as it matched an authenticated user, hello internet, goodbye to $15 a day internet charges…&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Things to consider are:
- If there is an active user, they might get warnings about a duplicate IP, since you are going to bind to their current IP address. &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Depending on the smartness/stupidness of the network professional that setup/maintains the network; you might be prone blocked from duplicate IP’s on a single MAC address.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The network police could track you down, and make you pay (highly unlikely, but possible :)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enjoy, and let me know if you have any success with my method, or if you have some tricks up your sleeves. I’ve yet to try NSTX or ICMPTX (IP over DNS, ICMP over DNS) but mean to eventually…&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Shannon Starrs - Demo I</title>
   <link href="http://fsk141.com/acoustics" />
   <updated>2011-06-28T17:19:15-07:00</updated>
   <id>http://fsk141.com/acoustics</id>
   <content type="html">&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2011/06/shannon1.jpg"&gt;&lt;img src="http://fsk141.com/uploads/2011/06/shannon1.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I just finished up an EP for my buddy Shannon Starrs. She has a beautiful voice, and is a great listen. I’m self releasing it under “Fsk141 Acoustics”, and all donations will go toward making more music ;) If you would like to contact Shannon or donate to her please use the forms &amp;amp; buttons below. Otherwise follow the other links to listen to her music, or download in an array of wonderful formats!&lt;/p&gt;

&lt;p&gt;Listen Now: &lt;a href="http://www.last.fm/music/Shannon+Starrs/Demo+I"&gt;http://www.last.fm/music/Shannon+Starrs/Demo+I&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Flac: &lt;a href="http://dl.dropbox.com/u/52078/Shannon/Shannon_Starrs-Demo_I-Flac.zip"&gt;http://dl.dropbox.com/u/52078/Shannon/Shannon_Starrs-Demo_I-Flac.zip&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MP3-320kbps: &lt;a href="http://dl.dropbox.com/u/52078/Shannon/Shannon_Starrs-Demo_I-320.zip"&gt;http://dl.dropbox.com/u/52078/Shannon/Shannon_Starrs-Demo_I-320.zip&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MP3-Vo: &lt;a href="http://dl.dropbox.com/u/52078/Shannon/Shannon_Starrs-Demo_I-V0.zip"&gt;http://dl.dropbox.com/u/52078/Shannon/Shannon_Starrs-Demo_I-V0.zip&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://creativecommons.org/licenses/by-sa/3.0/"&gt;&lt;img src="http://i.creativecommons.org/l/by-sa/3.0/88x31.png" alt="Creative Commons License" /&gt;&lt;/a&gt;
Demo I by Shannon Starrs is licensed under a &lt;a href="http://creativecommons.org/licenses/by-sa/3.0/"&gt;Creative Commons Attribution-ShareAlike 3.0 Unported License&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" alt="" /&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Standardy CSS</title>
   <link href="http://fsk141.com/standardy-css" />
   <updated>2011-06-26T01:46:57-07:00</updated>
   <id>http://fsk141.com/standardy-css</id>
   <content type="html">&lt;p&gt;In the general spirit of reset.css (&lt;a href="http://meyerweb.com/eric/tools/css/reset"&gt;http://meyerweb.com/eric/tools/css/reset&lt;/a&gt;), and to help out with some styling for the &lt;a href="http://fsk141.com/fsk141-framework"&gt;Fsk141 Framework&lt;/a&gt; I’ve pulled together what I call Standardy.css. What it is should help make a standard look across all browsers (well a starting point anyway) For everything that reset.css takes away, this puts it back in a cross browser compliant css method. I just whipped this up last night, and have started testing; everything seems to be alright thus far.
You can view standardy.css below; or download from here: &lt;a href="http://fsk141.com/uploads/2011/06/standardy.css"&gt;standardy.css&lt;/a&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="css"&gt;/* Standardy CSS (to use in conjunction with reset.css)
 *
 * License: none (public domain)
 *
 * Pulled together from around the internet &amp;amp;amp; optimized by Jonny Gerold &amp;amp;lt;jonny@fsk141.com&amp;amp;gt;
 *
 */

address,blockquote,body,dd,div,dl,dt,fieldset,form,frame,frameset,h1,h2,h3,h4,h5,h6,iframe,noframes,object,ol,p,ul,applet,center,dir,hr,menu,pre { display:block; }
li { display:list-item; }
head { display:none; }
table { display:table; }
tr { display:table-row; }
thead { display:table-header-group; }
tbody { display:table-row-group; }
tfoot { display:table-footer-group; }
col { display:table-column; }
colgroup { display:table-column-group; }
td,th { display:table-cell; }
caption { display:table-caption; text-align:center; }
th { font-weight:bolder; text-align:center; }
body { line-height:1.33; padding:8px; }
h1 { font-size:2em; margin:.67em 0; }
h2 { font-size:1.5em; margin:.83em 0; }
h3 { font-size:1.17em; margin:1em 0; }
h4,p,blockquote,ul,fieldset,form,ol,dl,dir,menu { margin:1.33em 0; }
h5 { font-size:.83em; line-height:1.17em; margin:1.67em 0; }
h6 { font-size:.67em; margin:2.33em 0; }
h1,h2,h3,h4,h5,h6,b,strong { font-weight:bolder; }
blockquote { margin-left:40px; margin-right:40px; }
i,cite,em,var,address { font-style:italic; }
pre,tt,code,kbd,samp { font-family:monospace; }
pre { white-space:pre; }
big { font-size:1.17em; }
small,sub,sup { font-size:.83em; }
sub { vertical-align:sub; }
sup { vertical-align:super; }
s,strike,del { text-decoration:line-through; }
hr { border:1px inset; }
ol,ul,dir,menu,dd { margin-left:40px; }
ol { list-style-type:decimal; }
ol ul,ul ol,ul ul,ol ol { margin-bottom:0; margin-top:0; }
u,ins { text-decoration:underline; }
center { text-align:center; }
br:before { content:&amp;quot;\A&amp;quot;; }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Framework Architecture</title>
   <link href="http://fsk141.com/framework-architecture" />
   <updated>2011-06-24T03:02:11-07:00</updated>
   <id>http://fsk141.com/framework-architecture</id>
   <content type="html">&lt;p&gt;Lot’s of ideas have been buzzing around in my head, but I figured that I should make the framework a little more robust by adding a general architecture. At this moment in time there is a loose structure with #top, #left, #middle, #right, #footer elements. Yet the sidebars aren’t styled at all. I figure a basic padding stylesheet will help better visualize for future projects. Anywho, my general idea is as follows (see image below). I also plan to have a stylesheet dedicated to default (as per wordpress standards) image alignment/disalignment styles. Also on the drawing board is an update to include reset.css &amp;amp; and administration section for admins…&lt;/p&gt;

&lt;p&gt;&lt;a href="http://fsk141.com/framework-architecture/wireframe-layout"&gt;&lt;img src="http://fsk141.com/uploads/2011/06/wireframe-layout.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Fsk141 Framework</title>
   <link href="http://fsk141.com/fsk141-framework" />
   <updated>2011-04-27T18:23:07-07:00</updated>
   <id>http://fsk141.com/fsk141-framework</id>
   <content type="html">&lt;p&gt;Just testing it out, might keep the site like this for a while. The idea of Fsk141 framework is to give site developers something very simple with NO EXISTING styling.&lt;/p&gt;

&lt;p&gt;I know that if you’re a smart developer like me you want to write everything yourself, and don’t want to have to track down styling’s of others just to make something look how you want.&lt;/p&gt;

&lt;p&gt;Why would I make something so… blank? Well I wanted something that I could easily start with to build more themes (mind you this is no where near complete, there is a lot to add, and probably stuff to remove). I played with a few of the existing frameworks, and to be honest they seemed a tad bit bloated, or not well commented, or just not what I was looking for. So when you cant find something that suits your needs, build it yourself!
I hope to add html5 doctype / functions to the framework next. The framework needs a lot of ids &amp;amp; classes added for ease of styling; I just added the basics for now.&lt;/p&gt;

&lt;p&gt;Enjoy,&lt;/p&gt;

&lt;p&gt;Fsk141&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Remove KDE from Backtrack</title>
   <link href="http://fsk141.com/remove-kde-from-backtrack" />
   <updated>2011-04-18T04:42:14-07:00</updated>
   <id>http://fsk141.com/remove-kde-from-backtrack</id>
   <content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5631126420/"&gt;&lt;img src="http://farm6.static.flickr.com/5105/5631126420_7c682f52c3.jpg" alt="Remove KDE" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I just setup an awesome chroot on my arch box for bt4 (instructions to follow, this is just a quickie. Anywho, I’m getting rid of the flac. KDE is clearly the first flac to be pruned. I couldn’t find anything on the internets explaining how to go about it, but this seems to work well; something I whipped up real quick…&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;apt-get remove `dpkg --get-selections | grep kde | sed -e '/deinstall/d' | awk ' { print $1 } '`
&lt;/code&gt;&lt;/pre&gt;
</content>
 </entry>
 
 <entry>
   <title>Boot iso's with grub 2</title>
   <link href="http://fsk141.com/boot-isos-with-grub-2" />
   <updated>2011-01-17T13:01:41-08:00</updated>
   <id>http://fsk141.com/boot-isos-with-grub-2</id>
   <content type="html">&lt;p&gt;Okay; to prefix this post I just want to say this is AWESOME! I’ve wanted &amp;amp; tried to find a way to do this for years, and guess I didn’t try hard enough; or google very well? I found this the other day, and thought I would share it with the internets…
Firstly install grub2 on your medium you would like to use. Since I’m using this featurette for booting iso’s off of my portable toolkit I’ll show you how to install grub2 on your usb drive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) Install grub2 (if you don’t already have it), dosfstools, cfdisk (or just use fdisk or gparted for those gui peoples)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;This should do the trick if you are on Arch Linux&lt;/li&gt;
&lt;/ul&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;pacman -S dosfstools grub2&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;Check your repos, or manually compile &amp;amp;&amp;amp; make sure you don’t do any nasty grub1 conflicts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2) Format disk with one FAT32 partition&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I used fdisk &amp;amp; had no problems&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;sudo fdisk /dev/sdd&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;(sdd == the disk I would like to format) &amp;amp;&amp;amp; make one partition that’s bootable &amp;amp; FAT32 flagged&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Delete all the partitions first &amp;amp; then create a new one with defaults &amp;amp;&amp;amp; DONT FORGET TO SET THE BOOT FLAG TO ON ( a )&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;[~]$ sudo fdisk /dev/sdd

Command (m for help): d
Selected partition 1

Command (m for help): d
No partition is defined yet!

Command (m for help): n
Command action
 e   extended
 p   primary partition (1-4)
p
Partition number (1-4, default 1): 1
First sector (2048-126959615, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-126959615, default 126959615):
Using default value 126959615

Command (m for help): a
Partition number (1-4): 1

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): b
Changed system type of partition 1 to b (W95 FAT32)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;d == delete partitions (delete until there aren’t any left)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;n == create new partition&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;p == primary&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;1 == partition number&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;First sector (just hit enter; it’s fine how it is)&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Last sector (just hit enter to use entire disk)&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;a == set partition 1 to bootable (this is important)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;w == write all the changes to disk &amp;amp; quit&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;t == set partition type &amp;amp;&amp;amp; b == FAT32&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3) Add a filesystem&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;sudo mkfs.vfat -F 32 /dev/sdd1&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;-F 32 == FAT32 &amp;amp;&amp;amp; /dev/sdd1 == the partition you created with cfdisk&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4) Install grub2&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;sudo mkdir /mnt/flash

sudo mount /dev/sdd1 /mnt/flash

sudo grub-install --force --no-floppy --root-directory=/mnt/flash /dev/sdd&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;make a folder to mount your disk into &amp;amp;&amp;amp; mount it (need this to install grub boot files)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;–force isn’t necessary, but helps for any un-necessary glitches that don’t matter&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;–no-floppy explicitely prevents floppy emulation (you don’t need it)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;–root-directory is where you mounted your disk (if you put it somewhere other than /mnt/flash)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;/dev/sdd is the device node of your device&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you hit enter you should be greeted with a sweet little message of success:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;Installation finished. No error reported.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;5) Install a test iso to try out booting from iso&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Just an FYI; not all linux iso’s have iso compatibility compiled in, so it’s a hit/miss if this works. You just have to try it, and google around until you find something that works.&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;cd /mnt/flash

mkdir isos

cd isos

wget http://exo.enarel.eu/mirror/partedmagic/pmagic-5.9.iso

sudo vim /mnt/flash/boot/grub/grub.cfg&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;Now all we need to do is add our parted magic iso features into grub.cfg&lt;/li&gt;
&lt;/ul&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;set timeout=10
set default=0

menuentry &amp;quot;Parted Magic&amp;quot; {
 set isofile=&amp;quot;/isos/pmagic-5.9.iso&amp;quot;

 loopback loop $isofile
 linux (loop)/pmagic/bzImage iso_filename=$isofile edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rwnomce sleep=10 loglevel=0
 initrd (loop)/pmagic/initramfs
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;6) ENJOY!&lt;/strong&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>[Review] Noctua NF-P14 FLX</title>
   <link href="http://fsk141.com/review-noctua-nf-p14-flx" />
   <updated>2010-12-21T23:58:38-08:00</updated>
   <id>http://fsk141.com/review-noctua-nf-p14-flx</id>
   <content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5280365289/"&gt;&lt;img src="http://farm6.static.flickr.com/5282/5280365289_4f1fb7b1d3_m.jpg" alt="fan-logo" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Product:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NF-P14&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manufacturer:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Noctua&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;~$20 USD&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Product Link:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://noctua.at/main.php?show=productview&amp;amp;products_id=33&amp;amp;lng=en"&gt;http://noctua.at/main.php?show=productview&amp;amp;products_id=33&amp;amp;lng=en&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manual:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://noctua.at/pdf/infosheets/noctua_nf_p14_flx_datasheet_en.pdf"&gt;http://noctua.at/pdf/infosheets/noctua_nf_p14_flx_datasheet_en.pdf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So you’re a performance hog, and would love to have water cooling, but can’t bring yourself to the hassle. Everyone knows that water cooling is the best of both worlds when it comes to performance &amp;amp; silent’ness. And on the other side there are in-efficient fans, that are loud, push dust all over the place, and nick you in your fingertips when you’re tinkering. Noctua fans are an entirely different experience than the norm (minus the nicking your fingertips bit [that’s just your own fault for tinkering]) The NF-P14 FLX is an amazing blend of craftsmanship &amp;amp; performance that I would dare to say is one of the finest fans you can buy. Noctua specializes in mainly fans &amp;amp; heat sinks which speaks loudly on the quality of their product due to a niche market. They have a small range of products, and make them very well. In contrast with water cooling, I’ve always gone the straight and narrow route of air cooling, and love the money I save, and the performance I can get out of a good set of fans, in a proper configuration&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specs:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Size:&lt;/strong&gt; 140x140x25 mm&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Bearing:&lt;/strong&gt; SSO-Bearing&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Blade Geometry:&lt;/strong&gt; NF-P14 Blade Design with VCN&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Rotational Speed (+/- 10%):&lt;/strong&gt; 1200 RPM&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Rotational Speed with L.N.A. (+/- 10%):&lt;/strong&gt; 900 RPM&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Rotational Speed with U.L.N.A. (+/- 10%):&lt;/strong&gt; 750 RPM&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Airflow:&lt;/strong&gt; 110.3 m³/h&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Airflow with L.N.A.:&lt;/strong&gt; 83.7 m³/h&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Airflow with U.L.N.A.:&lt;/strong&gt; 71.2 m³/h&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Acoustical Noise:&lt;/strong&gt; 19.6 dB(A)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Acoustical Noise with L.N.A.:&lt;/strong&gt; 13.2 dB(A)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Acoustical Noise with U.L.N.A.:&lt;/strong&gt; 10.1 dB(A)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Static Pressure:&lt;/strong&gt; 1.29 mm H2O&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Static Pressure with L.N.A.:&lt;/strong&gt; 0.77 mm H2O&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Static Pressure with U.L.N.A.:&lt;/strong&gt; 0.53 mm H2O&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Input Power:&lt;/strong&gt; 1.2 W&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Input Current:&lt;/strong&gt; 0.1 A&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Voltage Range:&lt;/strong&gt; 12 V&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;MTBF&lt;/strong&gt; &amp;gt; 150.000 h&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Warranty:&lt;/strong&gt; 6 years&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Includes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Ultra-Low-Noise Adaptor (U.L.N.A.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Low-Noise Adaptor (L.N.A.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Adaptors for 140mm mounting&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;4 Vibration Compensators&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;3:4-Pin Adaptor&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;4 Fan Screws&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Design:&lt;/strong&gt;
Lets start with one of the most obscure, yet most important parts of this fan; the cabling, and how awesome it is. This first element shows the immense amount of detail that is put into one of this art pieces. First we see the common set of three wires (ground, hot, and speed), then; a splendid item that is rarely seen on fans. A device that prevents the cable from ripping out of the motor… I might be going a little overboard on just a little piece of plastic, but I’ve played with a lot of fans from a lot of different manufactures &amp;amp; for multiple applications, and little things like these make all the difference in a fan that lasts for a lifetime. Even if the fan is never moved from its installed location, proper routing in the case of the fan allows you to easily tuck wires every which way and tidy things up. To finish up the package the main of the wire is covered in expandable loom &amp;amp; capped at either end with heat shrink tubing.
[](http://www.flickr.com/photos/68444690@N00/5280969700/)&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5280969700/"&gt;&lt;img src="http://farm6.static.flickr.com/5161/5280969700_9ea090bbd2.jpg" alt="cabletie-heatshrink" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The cable is about 15” long, and is capped off with a standard 3 pin molex connector.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5280366625/"&gt;&lt;img src="http://farm6.static.flickr.com/5049/5280366625_f4f9ea59dd.jpg" alt="cable" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[](http://www.flickr.com/photos/68444690@N00/5280366625/)&lt;a href="http://www.flickr.com/photos/68444690@N00/5280970660/"&gt;&lt;img src="http://farm6.static.flickr.com/5204/5280970660_dbeaafb7d2.jpg" alt="cable-end" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One thing that is easily overlooked about the fan is even though it’s a 140mm fan, you can mount it in a 120mm slot. The fan blade is 140mm standard, yet the outer mountpoints are 120mm sized. In fact I was a little dumbfounded when I went to mount the fan into a 140mm hole &amp;amp; couldn’t because it was too small. I realize now that I need a mounting kit, that was not included in the review sample that I received:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://noctua.at/images/feature_graphs/nf_p14_120_140.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;The branding on Noctua fans are unmistakable. From the color, logo, and  sexy curves, everything is suave, and harnesses the Noctua look. The  outer body of the fan is an eggshell color, and seems very strong for  how light the entire fan is. The fan blade construction is fantastic, and the nine blade fan cuts through the air like a hot knife through butter. It might be hard to spot in the picture, but the notches are staggered. This isn’t just for looks, but has an acoustic benefit to make the fan more quiet, and easier to blend into ambient noise. I would definitely read through Noctua’s guide on fan blade design, it’s quite exquisite: &lt;a href="http://noctua.at/main.php?show=nf_p14_blade_design&amp;amp;lng=en"&gt;http://noctua.at/main.php?show=nf_p14_blade_design&amp;amp;lng=en&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5280969502/"&gt;&lt;img src="http://farm6.static.flickr.com/5006/5280969502_bf7aa39cb1.jpg" alt="front" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One sub-thought is how the motor is constructed. Most of the time you just have to guess that there is a decent motor assembly, and hope for the best. Well Noctua gives a little outline of the “Metal Reinforced SSO-Bearing Shell &amp;amp; Magnet” claim on the front of the fan. The shaft is reinforced on the center inside &amp;amp; outside of the shaft. There are also reinforcements on the outside of the shell where the magnets go for the coil. It’s a brilliant idea when most motors use an all plastic design, and all it takes is a little misalignment to totally screw up your fan.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://noctua.at/images/feature_graphs/nf_p14_design_metal.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;The back of the fan complements the front, and to be honest isn’t anything special &amp;amp; what I would expect from the back of a fan :)&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5280970142/"&gt;&lt;img src="http://farm6.static.flickr.com/5168/5280970142_09c74896e7.jpg" alt="fan-blades" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This fan screams pure awesome, in a quiet whisper. The funny thing is that even though this fan is almost dead silent, there are two more ways to make it even quieter per your application. The L.N.A &amp;amp;&amp;amp; U.L.N.A (Low Noise Adapter &amp;amp; Ultra Low Noise Adapter respectively) which underclock your fan. The stock RPM of the fan is 1200 RPM, and you can clock it down to 900 RPM with L.N.A &amp;amp; 750 RPM with U.L.N.A. The only complaint that I have to Noctua is how they deal with RPM step downs. I dislike that to step down the RPM you have to add in a separate little coupler that adds a resistor. It would be ideal to have a switch on the fan that just had a variable resistor in the casing that would allow you to modify the speed on the fly. This really isn’t that big of a deal considering the Antec fans that have this feature (3 pole switch for high, medium, and low), and it’s nice, but useless for some applications. Plus I’m the kinda tinkerer that want’s to have the switch mounted somewhere flush &amp;amp; accessible ;)&lt;/p&gt;

&lt;p&gt;The actual airflow that comes out of this fan feels surprisingly low, yet it pushes a lot of air. According to Noctua about 110.3 meters^3/h. I wish I had some way to test this, but racked my brain, and couldn’t think of a way to measure the airflow correctly. All I know is that with the fan mounted in an Antec Sonata II it decreases the internal temperature of the case about 4 degrees celsius as opposed to the case without an exit fan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt;
This fan absolutely rocks. I’ve used Noctua fans in many of my projects &amp;amp; PC builds, and have always been happy with the money I spent for them. Mind you Noctua fans aren’t cheap, but you get what you pay for. When you buy a cheapo fan from China-R-US &amp;amp; end up noticing that it’s fried or making funny noises 6 months later, you end up shooting yourself in the foot. The Noctua fans perform great, and last forever (even with a thick coating of dust ;) The extra goodies like loomed wire, and reinforced motors end up being worth it when you go to build a new computer, and decide that your Noctua fans are still in perfect working condition. Just move them to your next build, and save money. I’ve had a paid of 120mm/80mm Noctua fans I’ve had for about three years or more, and I keep moving them between builds when I put one PC out of commission &amp;amp; build out a new PC.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>A lotto C</title>
   <link href="http://fsk141.com/a-lotto-c" />
   <updated>2010-12-16T11:26:33-08:00</updated>
   <id>http://fsk141.com/a-lotto-c</id>
   <content type="html">&lt;p&gt;&lt;em&gt;Download Here:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://dl.dropbox.com/u/52078/Development/C/lotto/lotto.c"&gt;http://dl.dropbox.com/u/52078/Development/C/lotto/lotto.c&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I’ve been going though K&amp;amp;R [C Programming Language](http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628) lately &amp;amp; brushing up on my programming skills. All the while talking to a buddy of mine that programs frequently. He gave me a challenge to give him some lotto numbers for standard lotto &amp;amp; pick5. The final version is a pseudo random variation, but I don’t know enough programming know how yet to get it to be absolute, or even close to true random. Anywho about 30 minutes later I had a simple alteration whipped up like the following:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="c"&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;time.h&amp;gt;

#define NUMBERS 6 /* How many numbers do you want? */
#define MAX 46 /* Max random value */

int main (void) {
 int num;

 /* get 6 random numbers */
 srand ( time (NULL) ); /* make a random number based on unix time */

 printf (&amp;quot;Your lotto numbers are: n&amp;quot;);
for ( num = 0; num &amp;lt; NUMBERS; num++ ) { /* repeat for how many numbers you want */
 if ( ( random = rand () % MAX ) == 0 ) /* prevents 0 from being outputted */
 printf ( &amp;quot;t%d&amp;quot;, rand () % MAX );
  else
   printf ( &amp;quot;t%d&amp;quot;, random );
 }

 printf (&amp;quot;n&amp;quot;);
 return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;It will output something like the following:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;Your lotto numbers are:
23    33    4    35    14    1&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This will output 6 random numbers. The actual randomness is happening based on srand &amp;amp;&amp;amp; it makes it random based on unix time. &lt;a href="http://linux.die.net/man/3/srand"&gt;http://linux.die.net/man/3/srand&lt;/a&gt; has a nice little description of srand &amp;amp; rand, or if you’re at a terminal you can type ‘man srand’ and get some info.&lt;/p&gt;

&lt;p&gt;After I finished this, low and behold he wanted pick5 too. (which is 5 sets of 6 numbers), well I added this &amp;amp; made a little prompt for ease of use. The following program is the complete solution. You can view it below or download it from my public dropbox link ^^ look at the top ^^:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="c"&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;time.h&amp;gt;

#define NUMBERS 6 /* How many numbers do you want? */
#define MAX 46 /* Max random value */

int main (void) {
 int num, pick5, type, random;

 printf ( &amp;quot;Hey Chris, what would you like to do today?nn&amp;gt;&amp;gt; Type number you wish to execute:n&amp;quot; );
 printf ( &amp;quot;(1) Standard Lotton&amp;quot; );
 printf ( &amp;quot;(2) Pick5 Lotton&amp;quot; );

 scanf ( &amp;quot;%d&amp;quot;, &amp;amp;type );

 switch ( type ) {
 case 1: /* get 6 random numbers */
 srand ( time (NULL) ); /* make a random number based on unix time */

 printf (&amp;quot;Your lotto numbers are: n&amp;quot;);

 for ( num = 0; num &amp;lt; NUMBERS; num++ ) { /* repeat for how many numbers you want */
 if ( ( random = rand () % MAX ) == 0 )
 printf ( &amp;quot;t%d&amp;quot;, rand () % MAX );
 else
 printf ( &amp;quot;t%d&amp;quot;, random );
 }
 printf (&amp;quot;n&amp;quot;);
 break;

 case 2: /* get 5 sets of 6 random numbers */
 srand ( time (NULL) ); /* make a random number based on unix time */

 printf (&amp;quot;Here's five sets of lotto pics for ya: n&amp;quot;);

 for ( pick5 = 0; pick5 &amp;lt; 5; pick5++ ) {
 printf (&amp;quot;Set %d:n&amp;quot;, pick5);
 for ( num = 0; num &amp;lt; NUMBERS; num++ ) {
 if ( ( random = rand () % MAX ) == 0 )
 printf ( &amp;quot;t%d&amp;quot;, rand () %MAX );
 else
 printf ( &amp;quot;t%d&amp;quot;, random );
 }
 printf (&amp;quot;n&amp;quot;);
 }
 break;

 default:
 printf (&amp;quot;You messed up stupid. Try againn&amp;quot;);
 }

 return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This will output something like the following:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;$ ./lotto
Hey Chris, what would you like to do today?

&amp;gt;&amp;gt; Type number you wish to execute:
(1) Standard Lotto
(2) Pick5 Lotto
1
Your lotto numbers are:
23    33    4    35    14    1
$ ./lotto
Hey Chris, what would you like to do today?

&amp;gt;&amp;gt; Type number you wish to execute:
(1) Standard Lotto
(2) Pick5 Lotto
2
Here's five sets of lotto pics for ya:
Set 0:
 14    40    1    1    28    36
Set 1:
 15    45    17    11    44    45
Set 2:
 6    2    37    43    19    25
Set 3:
 37    4    31    16    11    9
Set 4:
 38    37    25    17    1    44&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>[Review] PC-Engines alix6e1</title>
   <link href="http://fsk141.com/review-pc-engines-alix6e1" />
   <updated>2010-11-07T16:17:40-08:00</updated>
   <id>http://fsk141.com/review-pc-engines-alix6e1</id>
   <content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5155732266/"&gt;&lt;img src="http://farm2.static.flickr.com/1134/5155732266_444fe1461a.jpg" alt="set_logo" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Product:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;alix6e1&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manufacturer:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;PC Engines&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;$85.00 USD&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Product Link:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.pcengines.ch/alix6e1.htm"&gt;http://www.pcengines.ch/alix6e1.htm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manual:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.pcengines.ch/pdf/alix2.pdf"&gt;http://www.pcengines.ch/pdf/alix2.pdf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I can’t speak for everyone, but I’m very picky when it comes to hardware. I will normally research a new mainboard for quite some time, until I find just the right one. Then it comes, and I’m let down by some chipset issue, socket placement issue, or other nitpicks. These little issues end up swaying my “perfect” board into something sub-par by the time I go to use it in my projects. I think that too many manufacturers today try to please everyone &amp;amp; end up adding too much flac to their boards, until the hardcore enthuiasts are stuck with a bunch of crap that they don’t want/need. (Onboard video, extra pci-express slots, hdmi, onboard wifi???)&lt;/p&gt;

&lt;p&gt;I’ve had the pleasure of using Alix boards in a few of my projects so far, and haven’t had the slightest regret to spending a little extra money to get something that is perfect. Pascal (main dude [and I think only dude] at PC engines) is a genius. He holds his place in a niche market, and does an amazing job at designing these boards. Just taking a visual look at the board you can see that everything is very well thought out. I dislike boards with large chunks of PCB that are left virtually untouched; due to poor overall design. The alix6e1 is no exception to all of the Alix boards in that they are very concentrated, and the components are splendidly placed. What makes the alix6e1 spectacular is that in the same form-factor of PC Engines other boards, so much is placed to fit in the board. You get a Wan/Lan port (2x 10/100), miniPCI card, miniPCI Express card, usb, cf card slot, 500 Mhz cpu, ram, and all the extra bits to make it work. This along with a great BIOS built from the ground up, makes this board difficult to pass up, especially since they are only $85.00 USD at the moment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specs:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;CPU: 500 MHz AMD Geode LX800&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;DRAM: 256 MB DDR DRAM&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Storage: CompactFlash socket&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Power: DC jack or passive POE, min. 7V to max. 20V&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Three front panel LEDs, pushbutton&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Expansion: 1 miniPCI slot, 1 miniPCI Express slot (USB only), LPC bus&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Connectivity: 2 Ethernet channels (Via VT6105M 10/100)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I/O: DB9 serial port, dual USB port&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Board size: 6 x 6” (152.4 x 152.4 mm)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Firmware: tinyBIOS&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Hardware:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Case (case1c1blku):&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5155829664/"&gt;&lt;img src="http://farm5.static.flickr.com/4153/5155829664_0110027d08.jpg" alt="case_front-tilt" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The case is absolutely splendid. Mind you it has a few “features” that some people might find unfavorable for their situation, yet everything is just perfect for me… I’d like to start with the most awesome part of this case; it’s utmost care to simplicity. I have dealt with a LOT of router cases in my time here on earth, and all of them seem to be overcomplicated (mostly plastic) pieces of crap. The case1c1blku is a no-hinge clam-shell design.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5155832816/"&gt;&lt;img src="http://farm5.static.flickr.com/4091/5155832816_155a83a909.jpg" alt="case_open" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s takes 4 screws to mount the board, and another 4 to close the case up tight. The mounting anchor points are integrated in the case (soldered in), and seem very sturdy. I would have no regrets to throwing this router around in my bag as a mobile router due to the case ruggedness.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5155224905/"&gt;&lt;img src="http://farm5.static.flickr.com/4061/5155224905_a5958850fd_m.jpg" alt="case_mount" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The punch-outs on the back for the i/o ports are cleanly punched, and there are no barbs left behind (prolly laser cut).&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5155830544/"&gt;&lt;img src="http://farm2.static.flickr.com/1098/5155830544_3f337c33b4.jpg" alt="case_back" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To assemble:&lt;/p&gt;

&lt;p&gt;0) Add CF card now, unless you don’t plan on using one&lt;/p&gt;

&lt;p&gt;1) Remove the com port anchor screws&lt;/p&gt;

&lt;p&gt;2) Tilt board into case with i/o ports in their holes&lt;/p&gt;

&lt;p&gt;3) Bend the front a little till the board snugly fits in place&lt;/p&gt;

&lt;p&gt;4) Screw down &amp;amp; enjoy&lt;/p&gt;

&lt;p&gt;One of the “features” that some people might dislike is the non-removable CF card. I see this as a security feature, just in case you don’t want someone live-tampering with your device (if in a secure environment). Another “feature” of this is that the CF card doesn’t have the ability to move around (it’s stuck next to the front of the case). So if you’re especially rough with your alix6e1 you don’t have to worry about the card falling out.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5155223003/"&gt;&lt;img src="http://farm2.static.flickr.com/1374/5155223003_aa51114524.jpg" alt="case_cf-card" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Layout:&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The overall use of space on this board is astounding. The CPU is butts up next to the memory, which allows for shorter traces. The Ethernet controllers are squished underneath the dead space for the miniPCI card. Even more space is saved with the heavy use of SMC’s (surface mounted components). Even the tolerances between components seem extreme (ceramic resistors next to clock chip (to the right of sim card slot)). It’s hard to find mistakes on this board, since everything is so well though out. The only pressing issue that I could find was a missing centimeter between the miniPCI &amp;amp; miniPCI Express card. If the miniPCI Express card was pushed to the left a little bit, or re-positioned; a normal sized pci card would fit more easily. I’ve been informed that this is planned for the next generation of this board, so at least it’s been noted and will be fixed.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5156219166/"&gt;&lt;img src="http://farm2.static.flickr.com/1310/5156219166_28b66af491.jpg" alt="layout_top" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The bottom is just as pretty as the top. Many resistors, and a few smc’s are on the bottom, which makes me happy. It shows that a 2 layer design was implemented well. And based on how everything is neatly jammed into the board, the bottom compliments the top very well. It’s great to see a nice fat ground strip flowing throughout the core of the board (not a lot of backwards tracing to find a ground). And one last thing that I almost forgot to mention is a wonderful silkscreen that coincides with schematics on the site. If you are the tinkering type, and something happens to go horribly wrong; the ability to dive in, and find the problem yourself is simplified with technical documentation. The fact that Pascal releases his schematics is fantastic, and allows you to work on your hardware long after your warranty is up.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5155604797/"&gt;&lt;img src="http://farm5.static.flickr.com/4086/5155604797_4ff53dc705.jpg" alt="layout_bottom" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The back of the board (the side with all the goodies) is fairly well thought out. I love that there are 2 usb ports, but a lot of dongles aren’t compatible with stacking that close. It would be great if there were two single usb ports (such as on either side of the wan port) But far enough so that if you have wide usb dongles it won’t interfere. I have a large collection of usb flash drives, and a bunch of them cut it close to interfering with the Ethernet port in the current configuration. Another awesome thing to have would be and integrated PSU (or an optional module). Where all you plugin is a short 2 prong cable. That would be a dream :)&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5156215672/"&gt;&lt;img src="http://farm5.static.flickr.com/4021/5156215672_188f7344b1.jpg" alt="layout_ports" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Input/Output:&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lets start with the basics: 10/100 Ethernet, Serial Port, miniPCI &amp;amp; miniPCI Express &amp;amp; sim card slot. Two Ethernet ports are more than enough for a 10/100 router. One WAN (who has 100Mb internet anyway ;) &amp;amp;&amp;amp; one LAN (going to hook it up to a Gb switch anyway). The great thing about the 10/100 ports is that each has it’s own Via VT6105M chips. Instead of using a cludge multiplex hack, the time and effort was put in the use two individual chips. I’m glad that there is an external serial port (I don’t know how you could get away without having one), and it’s spaced far enough from the other i/o ports that makes it easy to plug in a larger serial adapter and still have room for an Ethernet jack. The biggest mistake of some boards is that serial jacks are put to close to other component jacks which disables you plugging in chunky cables. The miniPCI slot bummed me out. It’s just a little too close (about .5mm) to the miniPCI Express card slot which disables you from using full size miniPCI cards. You &lt;strong&gt;can&lt;/strong&gt; still use full size miniPCI cards, but they will bow a little bit from hitting the top of the miniPCI Express connector. I tried to get a good picture, but couldn’t get a good angle, sorry. I never like to bend boards, or force anything, but it is a very minor bend. In the long run if you ran a full sized miniPCI card; you wouldn’t have any issues, it’s just not perfect. The miniPCI Express slot is a minor letdown; in that it only supports usb miniPCI Express cards. (kinda hit/miss if your card is usb or native minipci express). You would have to look very closely at the documentation of the card you are planning to purchase to make sure that it’s a usb card &amp;amp; not native. And most of the time there isn’t sufficient documentation :( I didn’t have a sim card to test the sim card slot with (since I use verizon (cdma)), but I can’t see it being hard to recognize/setup.&lt;/p&gt;

&lt;p&gt;Lets finish off I/O with usb, power, cf card, and optional ports… I kinda wish that the usb were oriented a little differently to accommodate more usb options. In the current configuration you are allowed two thin usb devices. It would be nice if the usb ports were oriented differently to allow more variation with usb dongles. The cf card slot is perfectly placed &amp;amp; it’s horribly placed (depending how you look at things) For one it’s secure. To access the card you have to open the case, pull up the mainboard &amp;amp; only then can you remove/replace the cf card. On the other hand if your a hacker that wants to constantly change/hack &amp;amp; break your router OS &amp;amp; swap out cf cards; you’ll have no luck with the current configuration. The one last dream of this board would be to have the included optional components well &lt;strong&gt;not optional&lt;/strong&gt;. The internal mini-ide port would be killer for a little extra storage, and internal usb would be spectacular for a nice little flash drive that doesn’t stick out the back of the device. I know they are optional for a reason, but I wish the reason was NULL &amp;amp; they were included ;)&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Power Consumption:&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m using a 12V 1A PSU brick &amp;amp; am consuming on average 6watts. I could probably optimize OpenWRT to save a half or maybe even a full watt, but for now I’m fine with 6 watts.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Benchmarks:&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ve been working on true benchmarks for a while now, and am going to outline everything in another post with OpenWRT due to so much entanglement with the OS. The quick benchmark is what you would expect from a 10/100 Ethernet connection (not any faster or slower) &amp;amp;&amp;amp; the processor is quick &amp;amp; performs VERY well for the application. Everything is robust, yet power efficient &amp;amp; cool. No fans are needed whatsoever even with full load; since the CPU &amp;amp; accompanying chips are cool to touch &amp;amp; don’t overheat.
&lt;strong&gt;Software:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;BIOS:&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The BIOS is streamlined, and non-cluttered. It’s a perfect fit to the overall design of the board. It was built from the ground up for the alix board series. A quick attachment via usb serial converter &amp;amp;&amp;amp; a &lt;code&gt;screen /dev/cu.usbserial 38400&lt;/code&gt; (default baud rate) gave me the goods I was looking for.&lt;/p&gt;

&lt;p&gt;A little run down on what’s shown on bootup:&lt;/p&gt;

&lt;p&gt;1) BIOS version (this is the newest for the board)&lt;/p&gt;

&lt;p&gt;2) Base Memory&lt;/p&gt;

&lt;p&gt;3) Extended Memory (aka. usable memory)&lt;/p&gt;

&lt;p&gt;All the rest is initiated by hitting the letter ‘s’ on your keyboard (to startup the config menu)&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;CF card mode modification&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;MFGPT workaround (timer hack)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;late PCI init (fix for lousy pci cards)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;enable/disable serial console&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;PXE (pixie boot is so 1337)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;xmodem (upload binary [usually used to flash bios])&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;– More information can be found in the manual (&lt;a href="http://www.pcengines.ch/pdf/alix2.pdf"&gt;http://www.pcengines.ch/pdf/alix2.pdf&lt;/a&gt;)&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;&amp;amp;lt;br /&amp;amp;gt;
PC Engines ALIX.2 v0.99h&amp;amp;lt;br /&amp;amp;gt;
640 KB Base Memory&amp;amp;lt;br /&amp;amp;gt;
261120 KB Extended Memory&amp;amp;lt;/p&amp;amp;gt;
&amp;amp;lt;p&amp;amp;gt;01F0 Master 848A SAMSUNG CF/ATA&amp;amp;lt;br /&amp;amp;gt;
Phys C/H/S 4065/16/63 Log C/H/S 1016/64/63&amp;amp;lt;/p&amp;amp;gt;
&amp;amp;lt;p&amp;amp;gt;BIOS setup:&amp;amp;lt;/p&amp;amp;gt;
&amp;amp;lt;p&amp;amp;gt;(9) 9600 baud (2) 19200 baud *3* 38400 baud (5) 57600 baud (1) 115200 baud&amp;amp;lt;br /&amp;amp;gt;
*C* CHS mode (L) LBA mode (W) HDD wait (V) HDD slave (U) UDMA enable&amp;amp;lt;br /&amp;amp;gt;
(M) MFGPT workaround&amp;amp;lt;br /&amp;amp;gt;
(P) late PCI init&amp;amp;lt;br /&amp;amp;gt;
*R* Serial console enable&amp;amp;lt;br /&amp;amp;gt;
(E) PXE boot enable&amp;amp;lt;br /&amp;amp;gt;
(X) Xmodem upload&amp;amp;lt;br /&amp;amp;gt;
(Q) Quit&amp;amp;lt;br /&amp;amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Choice of Router OS:&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I choose &lt;a href="http://openwrt.org"&gt;OpenWrt&lt;/a&gt; for now. I’ve been using dd-wrt on my wrt-350n for the longest time, and would like a change of scenery. Especially since there are a few really stupid quirks to dd-wrt that bug me. (Like why the hell isn’t IPv6 support compiled in :() The installation went flawlessly. I just &lt;code&gt;dd if=openwrt-x86-generic-combined-ext2.img of =/dev/disk3&lt;/code&gt; (something like that on my mac), and started up the board, and bingo, everything was ready to go. The BIOS had no issues with my CF card, and OpenWrt has amazing support for the alix boards (x86 version of OpenWrt). I’ve been running it for a while, and it’s been chugging along with no issues. I plan to have an OpenWrt tutorial in the future, so I won’t go into much detail about OpenWrt, but expect more in the future.
&lt;strong&gt;Summary:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Other than a couple little quirks (usb only miniPCI Express ; miniPCI -&amp;gt; miniPCI Express gap &amp;amp; cf card spacing) this board is fantastic. It draws very little power, is powerful, and runs cool &amp;amp; quiet (well silent). The case is a simple clamshell that is easy to assemble, and feels very sturdy. The BIOS rocks with a perfect amount of features. The overall potential for this board is amazing (diy mifi device); I’m sad that I won’t be taking full advantage of the mini-pci express slot; since I use my Droid Incredible for a mobile hotspot. I guess the one and only big letdown for me is limited support for mini pci-express slot. Since it only allows usb cards (a couple gobi devices, novatel, and some others) you are forced to purchase a mini-pci card for wireless. It would be wonderful to be able to choose between mini-pci &amp;amp;&amp;amp; mini pci-express in the future since mini pci-express cards are more widely available &amp;amp; cheaper. I would &amp;amp; do recommend this board to any diy hobbyist that want’s a great board, for cheap, with plenty of features to chew on.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>NoFailNAS teaser</title>
   <link href="http://fsk141.com/nofailnas-teaser" />
   <updated>2010-10-27T20:28:19-07:00</updated>
   <id>http://fsk141.com/nofailnas-teaser</id>
   <content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5126503977/"&gt;&lt;img src="http://farm5.static.flickr.com/4061/5126503977_d7b4da73bb.jpg" alt="IMAG0327" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is one of a few WIPP’s I have (Work in Progress Projects) It’s supposed to be a replacement to my previous NAS, and is mostly complete. I’m just missing the case… :( Anywho I have a whole write up in progress also, that will document what I got (hardware, software, experience). This is just a mini-teaser with some raw hardware goodness&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>[PotW] bwm-hg</title>
   <link href="http://fsk141.com/potw-bwm-hg" />
   <updated>2010-10-26T22:08:55-07:00</updated>
   <id>http://fsk141.com/potw-bwm-hg</id>
   <content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5126378313/"&gt;&lt;img src="http://farm2.static.flickr.com/1311/5126378313_1a9ff96454.jpg" alt="little-throughput" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was pressed to figure out how much throughput was going over an interface for my laptop; a few minutes later I found this gem! It has one purpose, and it does it exceptionally well! Well I lie, it has a few purposes, but it’s main goal (and title) is to monitor bandwith [&lt;em&gt;B&lt;/em&gt;and &lt;em&gt;W&lt;/em&gt;ith &lt;em&gt;M&lt;/em&gt;onitor - &lt;em&gt;N&lt;/em&gt;ext &lt;em&gt;G&lt;/em&gt;eneration]. Why would I want to monitor my bandwidth? Well for this usage case I wanted a simple method to view what kind of nfs throughput I was getting on my laptop. Bingo, I spent a little over a millisecond installing bwm-ng &amp;amp;&amp;amp; was very happy to see exactly what I was looking for without having to do any special flags, or configuring the program, or anything. I quickly hit the &lt;em&gt;h&lt;/em&gt; to get a few little tidbits of greatness; like how to change the probe timeout, and other magical things. I love this little program and use it on all my machines now for quick throughput monitoring on my network/disks (ya, it does disks too)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Program:&lt;/strong&gt; bwm-ng&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Site Link:&lt;/strong&gt; &lt;a href="http://www.gropp.org/?id=projects&amp;amp;sub=bwm-ng"&gt;http://www.gropp.org/?id=projects&amp;amp;sub=bwm-ng&lt;/a&gt;[](http://tmux.sourceforge.net)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Download:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Download direct: &lt;a href="http://www.gropp.org/bwm-ng/bwm-ng-0.6.tar.gz"&gt;http://www.gropp.org/bwm-ng/bwm-ng-0.6.tar.gz&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Use CVS &amp;amp; get the newest version: svn co https://svn.sourceforge.net/svnroot/bwmng/trunk bwm-ng&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Installation:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Use your package manager (pacman -S bwm-ng for archlinux)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Mac (download &lt;a href="http://github.com/mxcl/homebrew"&gt;homebrew&lt;/a&gt; &amp;amp;&amp;amp; &lt;strong&gt;sudo  brew install tmux&lt;/strong&gt;)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Compile manually »&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Compile:&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;./configure

make -j8 (make with 8 jobs at once [compile faster on a core duo])

sudo make install&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;How to use:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First off execute &lt;code&gt;bwm-ng&lt;/code&gt;, you will be greeted with your active interfaces. Shown will be TX (Transmit), RX (Receive) &amp;amp; Total &amp;amp;&amp;amp; Total (of everything).&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5126980974/"&gt;&lt;img src="http://farm2.static.flickr.com/1063/5126980974_c5fe5103de.jpg" alt="mac-ethernet" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Right from the get go I hit the ‘h’ key for help, and quickly got acquainted with some powerful letters. ‘d’, ‘u’, ‘n’, ‘t’ are my favs; they are the heart of the application. I started out by changing the default value shown to “auto” with ‘d’, then I changed the type of output to “average” with the letter ‘t’. I was tickled pink that in less than 5 minutes I had what I needed, with no hassle what-so-ever. Some other glorious things that this program does is allow you to select how you would like to output the data (ncurses, ncurses2 (colors &amp;amp; stuff), plain (text), and html).&lt;/p&gt;

&lt;p&gt;All of these features also apply to monitoring disks as well. Just punch the ‘n’ key a few times until disks show up…&lt;/p&gt;

&lt;p&gt;If I haven’t expressed it already, I really like this program, and it’s one of the ones that I’ll be using regularly from now on (Until I find something better :)
&lt;strong&gt;Keybindings:&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;'h'  show this help
 'q'  exit
 '+'  increases timeout by 100ms
 '-'  decreases timeout by 100ms
 'd'  switch KB and auto assign Byte/KB/MB/GB
 'a'  cycle: show all interfaces, only those which are up,
only up and not hidden
 's'  sum hidden ifaces to total aswell or not
 'n'  cycle: input methods
'u'  cycle: bytes,bits,packets,errors
 't'  cycle: current rate, max, sum since start, average for last 30s&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;**–help:
**&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;bwm-ng --help
Bandwidth Monitor NG (bwm-ng) v0.6
Copyright (C) 2004-2007 Volker Gropp &amp;lt;bwmng@gropp.org&amp;gt;
USAGE: bwm-ng [OPTION] ... [CONFIGFILE]
displays current ethernet interfaces stats

Options:
 -t, --timeout &amp;lt;msec&amp;gt;    displays stats every &amp;lt;msec&amp;gt; (1msec = 1/1000sec)
 default: 500
 -d, --dynamic [value]   show values dynamicly (Byte KB or MB)
 -a, --allif [mode]      where mode is one of:
 0=show only up (and selected) interfaces
 1=show all up interfaces (default)
 2=show all and down interfaces
 -I, --interfaces &amp;lt;list&amp;gt; show only interfaces in &amp;lt;list&amp;gt; (comma seperated), or
 if list is prefaced with % show all but interfaces
 in list
 -S, --sumhidden [value] count hidden interfaces for total
 -A, --avglength &amp;lt;sec&amp;gt;   sets the span of average stats (Default 30s)
 -D, --daemon [value]    fork into background and daemonize
 -h, --help              displays this help
 -V, --version           print version info

Input:
 -i, --input &amp;lt;method&amp;gt;    input method, one of: getifaddrs sysctl netstat ioservice

Output:
 -o, --output &amp;lt;method&amp;gt;   output method, one of:
 plain, curses, curses2, csv, html
 -u, --unit &amp;lt;value&amp;gt;      unit to show. one of bytes, bits, packets, errors
 -T, --type &amp;lt;value&amp;gt;      type of stats. one of rate, max, sum, avg
 -C, --csvchar &amp;lt;char&amp;gt;    delimiter for csv
 -F, --outfile &amp;lt;file&amp;gt;    output file for csv and html (default stdout)
 -R, --htmlrefresh &amp;lt;num&amp;gt; meta refresh for html output
 -H, --htmlheader        show &amp;lt;html&amp;gt; and &amp;lt;meta&amp;gt; frame for html output
 -c, --count &amp;lt;num&amp;gt;       number of query/output for plain &amp;amp; csv
 -N, --ansiout           disable ansi codes for plain output
 (ie 1 for one single output)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>[PotW] tmux</title>
   <link href="http://fsk141.com/potw-tmux" />
   <updated>2010-10-13T22:11:04-07:00</updated>
   <id>http://fsk141.com/potw-tmux</id>
   <content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5079825187/"&gt;&lt;img src="http://farm5.static.flickr.com/4148/5079825187_d919ba6661.jpg" alt="Tmux-Fire" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s another Tuesday (errm almost tuesday – I got a little busy), and that means another PotW! This program is a little more useful than the last program. And makes living a mac more bearable (or any non tiling window manager for that matter) Tmux is the bees knees when it comes to console multi-tasking. It allows you to do a faux-tiling window manager with all your console apps, and the best part is that it’s cross platform. Just a little info about tmux: It stands for terminal multiplexer (cool name for multiplier), tmux is like screen’s pretty cousin, tmux is highly configurable, and a lot more stuff that I’ll have to split up in a few more posts. (this is just a primer, and yes I will talk about tmux more ;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Program:&lt;/strong&gt; tmux&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Site Link:&lt;/strong&gt; &lt;a href="http://tmux.sourceforge.net"&gt;http://tmux.sourceforge.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Download:&lt;/strong&gt;
  1. Download direct: &lt;a href="http://downloads.sourceforge.net/tmux/tmux-1.3.tar.gz"&gt;http://downloads.sourceforge.net/tmux/tmux-1.3.tar.gz&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Use CVS &amp;amp; get the newest version: &lt;a href="http://sourceforge.net/projects/tmux/develop"&gt;CVS instructions for tmux&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Installation:&lt;/strong&gt;
  1. Use your package manager (pacman -S tmux for archlinux)&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Mac (download &lt;a href="http://github.com/mxcl/homebrew"&gt;homebrew&lt;/a&gt; &amp;amp;&amp;amp; &lt;strong&gt;sudo brew install tmux&lt;/strong&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Compile:&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;./configure

make -j8 (make with 8 jobs at once [compile faster on a core duo])

sudo make install&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;How to use:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lets start with the basics. Fire up tmux, and lets learn how to get some, errrm, &lt;strong&gt;help!&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;man tmux&lt;/strong&gt; (best resource, and well documented)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;^b ? (Ctrl-?) [Press Ctrl-b, then ?] (will show commands with short descriptions)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Lets start with some basics:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;make a new vertical pane: ^b % (Carat &lt;strong&gt;’^’&lt;/strong&gt; means Ctrl)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;make a new horizontal pane: ^b “&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;make a new window: ^b c&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;rename window: ^b ,&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;move around: ^b (use arrow keys)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Now that you know your way around, lets have some fun:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Find test in an open window: ^b f (this one tickles me pink, it’s so kewl that you can search for &lt;em&gt;anything&lt;/em&gt;, and it will auto-move to the terminal your thinking of)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;enter copy mode to copy text in buffer: ^b [&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;paste the text you’ve copied: ^b ]&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;what time is it?: ^b t&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;swap panes around: ^b { (previous pane) and } (next pane)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Screenshots:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5079888455/"&gt;&lt;img src="http://farm5.static.flickr.com/4086/5079888455_01587f0ece.jpg" alt="Layout 1" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5079888499/"&gt;&lt;img src="http://farm5.static.flickr.com/4151/5079888499_00af64fd44.jpg" alt="Layout 2" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5080483798/"&gt;&lt;img src="http://farm5.static.flickr.com/4024/5080483798_1db5595e95.jpg" alt="Layout 3" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5079888587/"&gt;&lt;img src="http://farm5.static.flickr.com/4057/5079888587_fa64ed87c5.jpg" alt="Layout 4" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5080483908/"&gt;&lt;img src="http://farm5.static.flickr.com/4037/5080483908_081502bc96.jpg" alt="Layout 5" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5080485996/"&gt;&lt;img src="http://farm5.static.flickr.com/4083/5080485996_fa273c2951.jpg" alt="window-naming" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Default Bindings (all the things you can do):&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;The default command key bindings are:

C-b         Send the prefix key (C-b) through to the application.
C-o         Rotate the panes in the current window forwards.
C-z         Suspend the tmux client.
!           Break the current pane out of the window.
&amp;quot;           Split the current pane into two, top and bottom.
#           List all paste buffers.
%           Split the current pane into two, left and right.
&amp;amp;           Kill the current window.
'           Prompt for a window index to select.
,           Rename the current window.
-           Delete the most recently copied buffer of text.
.           Prompt for an index to move the current window.
0 to 9      Select windows 0 to 9.
:           Enter the tmux command prompt.
=           Choose which buffer to paste interactively from a list.
?           List all key bindings.
D           Choose a client to detach.
[           Enter copy mode to copy text or view the history.
]           Paste the most recently copied buffer of text.
c           Create a new window.
d           Detach the current client.
f           Prompt to search for text in open windows.
i           Display some information about the current window.
l           Move to the previously selected window.
n           Change to the next window.
o           Select the next pane in the current window.
p           Change to the previous window.
q           Briefly display pane indexes.
r           Force redraw of the attached client.
s           Select a new session for the attached client interactively.
t           Show the time.
w           Choose the current window interactively.
x           Kill the current pane.
{           Swap the current pane with the previous pane.
}           Swap the current pane with the next pane.
~           Show previous messages from tmux, if any.
Page Up     Enter copy mode and scroll one page up.
Up, Down
Left, Right
Change to the pane above, below, to the left, or to the right of the current pane.
M-1 to M-5  Arrange panes in one of the five preset layouts: even-horizontal, even-vertical, main-horizontal, main-vertical, or tiled.
M-n         Move to the next window with a bell or activity marker.
M-o         Rotate the panes in the current window backwards.
M-p         Move to the previous window with a bell or activity marker.
C-Up, C-Down
C-Left, C-Right
Resize the current pane in steps of one cell.
M-Up, M-Down
M-Left, M-Right
Resize the current pane in steps of five cells.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Jailbreak your Kindle 3 (2 &amp; 1 also)</title>
   <link href="http://fsk141.com/jailbreak-your-kindle-3-2-1-also" />
   <updated>2010-10-10T15:13:19-07:00</updated>
   <id>http://fsk141.com/jailbreak-your-kindle-3-2-1-also</id>
   <content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5068693389/"&gt;&lt;img src="http://farm5.static.flickr.com/4086/5068693389_4c51a86efd.jpg" alt="Header" /&gt;&lt;/a&gt;
Since the kindle dropped so drastically in price I couldn’t resist buying one for my wife &amp;amp; I. I love the little machine, and do a lot more with it than just read books. I’ve had it for a couple weeks now, and rooted it the first night. I just haven’t documented it till today! Lucky for you this is one of the simplest processes ever, and only takes a few minutes. After you jailbreak the kindle it only takes a minute to root the kindle over usb. The process should be the same for Kindle 3,2, and 1.&lt;/p&gt;

&lt;p&gt;Well lets begin by jailbreaking the kindle:
&lt;strong&gt;1) Start by downloading the following zip&lt;/strong&gt; (&lt;a href="http://dl.dropbox.com/u/52078/kindle-jailbreak-0.3.N.zip"&gt;kindle-jailbreak-0.3.N.zip&lt;/a&gt;), and unzip it somewhere you can remember
&lt;strong&gt;2) Locate the file associated with your kindle:&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;&amp;lt;pre&amp;gt;&amp;quot;*_k2_install.bin&amp;quot; - K2 U.S.
&amp;quot;*_k2i_install.bin&amp;quot; - K2 International
&amp;quot;*_dx_install.bin&amp;quot; - Kindle DX U.S
&amp;quot;*_dxi_install.bin&amp;quot; - Kindle DX International
&amp;quot;*_dxg_install.bin&amp;quot; - Kindle DX Graphite
&amp;quot;*_k3g_install.bin&amp;quot; - Kindle 3 3G US
&amp;quot;*_install.bin&amp;quot; - Kindle 3 WiFi
&amp;quot;*_k3gb_install.bin&amp;quot; - Kindle 3 3G UK&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5068582529/"&gt;&lt;img src="http://farm5.static.flickr.com/4151/5068582529_8a3c0120aa_o.png" alt="File_Listing" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) Upload to your Kindle&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5068582593/"&gt;&lt;img src="http://farm5.static.flickr.com/4104/5068582593_0bde1b1909_o.png" alt="On_The_Root" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4) Unmount kindle &amp;amp; press the [Home] button&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5) Press [Menu] &amp;gt; Settings &amp;gt; [Menu] &amp;gt; Update your Kindle (It will fail, but this is okay)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5069328818/"&gt;&lt;img src="http://farm5.static.flickr.com/4125/5069328818_8cf306154a.jpg" alt="Menu-Settings" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5068755143/"&gt;&lt;img src="http://farm5.static.flickr.com/4153/5068755143_a24eef7a8b.jpg" alt="Menu-Update_your_kindle" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5068876967/"&gt;&lt;img src="http://farm5.static.flickr.com/4112/5068876967_6ee62a9972.jpg" alt="software-update" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5069509178/"&gt;&lt;img src="http://farm5.static.flickr.com/4124/5069509178_32e702ff3c.jpg" alt="update-fail" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;**6) You’re finished! Now your kindle can accept the other hacks released by the mobiread forums! (I’ll upload tutorials to the screensaver hack / usb network / and fonts hack)
**&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.mobileread.com/forums/showthread.php?t=88004"&gt;http://www.mobileread.com/forums/showthread.php?t=88004&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>[Tutorial] How to unencrypt kindle books</title>
   <link href="http://fsk141.com/tutorial-how-to-unencrypt-kindle-books" />
   <updated>2010-10-09T12:33:30-07:00</updated>
   <id>http://fsk141.com/tutorial-how-to-unencrypt-kindle-books</id>
   <content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5065126211/"&gt;&lt;img src="http://farm5.static.flickr.com/4103/5065126211_d5366759d7.jpg" alt="IMAG0082" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So you want a brand new kindle book &amp;amp; you can’t find it on your favorite torrent/rapidshare/ftp? ;) Well that’s too bad, but there is a giantious amazon store that sell books… But I have two kindles, and when I buy a book, I want to be able to share it without restrictions between my kindles. The &lt;a href="http://nyquil.org/archives/1128-Converting-Kindle-Books-a-painful-process-that-works-for-reading-Kindle-books-without-a-Kindle.html"&gt;old version&lt;/a&gt; of the unencrypt hack was a little complicated and required you to find your PID, enter it in a program, and then a program would spit out a decrypted book for you. Well the new Kindle4Pc method is fantastic. It’s easy, and gives you what you’re looking for with the least effort necessary.&lt;/p&gt;

&lt;p&gt;First off download the file that I packaged up with all the pieces that you need:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://dl.dropbox.com/u/52078/unencrypt.zip"&gt;unencrypt.zip&lt;/a&gt;
Included in the zip file is:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Python 2.6.6 (version that will work)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;KindleForPC-installer(beta) [you NEED this version of kindle4PC for this hack to work]&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;unswindle.pyw (initiator for the whole process)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;mobidedrm.py (magic file)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The process is painfully simple:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Install python&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Install Kindle4PC if you don’t have it installed &amp;amp; download your book(s) to be undrm’d&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Uninstall Kindle4PC&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;DISCONNECT FROM THE INTERNET (if you don’t then when you install Kindle4PC(beta) it will upgrade &amp;amp; you DONT want the newest version)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Install Kindle4PC(beta) from the zip file&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Execute unswindle.pyw (either by double clicking or dragging to cmd prompt)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;This will startup Kindle4PC &amp;amp; all you need to do now is open the book that you would like to decrypt&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Now exit Kindle4PC and wait for the magic to happen&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Magic will show up in the form of a “save as” window. Just select where you would like to save the decrypted .mobi &amp;amp;&amp;amp; enjoy.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;To finish everything up just drop it on your kindle with all your other books, and happy reading&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

</content>
 </entry>
 
 <entry>
   <title>[Tutorial] OpenVZ - Debian - Zenoss (monitor your world)</title>
   <link href="http://fsk141.com/tutorial-openvz-debian-zenoss-monitor-your-world" />
   <updated>2010-10-08T14:02:55-07:00</updated>
   <id>http://fsk141.com/tutorial-openvz-debian-zenoss-monitor-your-world</id>
   <content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5063551922/"&gt;&lt;img src="http://farm5.static.flickr.com/4105/5063551922_209885c7ce_o.png" alt="openvz-debian-zenoss" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do you have an OpenVZ HN (Host Node) &amp;amp; have no idea what’s happening with your nodes? Well get out of the dark ages &amp;amp; add a &lt;a href="http://community.zenoss.org"&gt;Zenoss&lt;/a&gt; installation to monitor your VE’s (Virtual Environments). Why did I choose debian when zenoss supports a bunch of distros? Well there are repos for debian/ubuntu (which will auto-setup for the most part), and I’m not a fan of ubuntu. Thus we’ll use debian. The whole setup only takes a few minutes, so lets jump right in…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1)&lt;/strong&gt; &lt;em&gt;Make a new VE with Debian 5:&lt;/em&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# On your HN run:

# Download the debian 5 template
sudo wget -c http://download.openvz.org/template/precreated/debian-5.0-x86_64.tar.gz -o /vz/template/cache/debian-5.0-x86_64.tar.gz

# Create debian VE
sudo vzctl create 1 --ostemplate debian-5.0-x86_64

# Hooray your VE is setup, now move onto configuration &amp;gt;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;2)&lt;/strong&gt; &lt;em&gt;Set VE options:&lt;/em&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# Configure debian VE (naibed-zen is debian backwards with a lil zen added)
# You can enter this all on one line, I just spread it out to make it easier to read
sudo vzctl set 1 
--hostname naibed-zen 
--ipadd &amp;lt;ipaddress&amp;gt; 
--searchdomain &amp;lt;yoursearchdomain&amp;gt; 
--nameserver &amp;quot;&amp;lt;your nameserver/nameservers (separated by spaces)&amp;gt; 
--vmguarpages $((256 * 4096)) 
--privvmpages $((256 * 6144)) 
--swappages $((256 * 1024)) 
--meminfo none 
--onboot yes 
--save

#--vmguarpages $((256 * 4096)) # guaranteed memory (4GB)
#--privvmpages $((256 * 6144)) # burst memory (6GB)
#--swappages $((256 * 1024)) # swap memory
#--meminfo none # I was having memory listing issues, and this fixed it&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This will configure the empty shell of a VE that we setup &amp;amp; make is more usable:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;VEID:&lt;/strong&gt; (Virtual Environment ID) == 1 in our case, but you can set it to whatever you want
&lt;strong&gt;Hostname:&lt;/strong&gt; naibed-zen
&lt;strong&gt;IP Address:&lt;/strong&gt; (eg. 192.168.1.2)
&lt;strong&gt;Search Domain&lt;/strong&gt; (/etc/resolv.conf): (eg. google.com *this is optional)
&lt;strong&gt;Nameserver(s)&lt;/strong&gt; (/etc/resolv.conf): (eg. 192.168.1.1)
&lt;strong&gt;Guaranteed Memory:&lt;/strong&gt; (change the last number, 4096 == 4GB)
&lt;strong&gt;Burst Memory:&lt;/strong&gt; (change the last number, 6144 == 6GB)
&lt;strong&gt;Turn on at boot:&lt;/strong&gt; yes
&lt;strong&gt;Don’t forget to save:&lt;/strong&gt; if you don’t –save then your HN won’t remember the settings when rebooted&lt;/p&gt;

&lt;p&gt;If I were you I would enter the VE (sudo vzctl enter 1) &amp;amp;&amp;amp; test to make sure networking is working… ping google or something, if not, then make sure your HN is setup correctly &amp;amp; that your dns servers are correct&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3)&lt;/strong&gt; &lt;em&gt;Setup Zenoss:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now that we have our VE all ready to go, lets setup zenoss…&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# Enter the VE
sudo vzctl enter 1
echo &amp;quot;deb http://dev.zenoss.org/deb main stable&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list
apt-get update
apt-get install zenoss-stack
/etc/init.d/zenoss-stack start&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;It should look something like this:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;$ sudo vzctl enter 2
entered into CT 2
naibed:/# echo &amp;quot;deb http://dev.zenoss.org/deb main stable&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list
naibed:/# apt-get update
... updating pkg-database ...

naibed:/# apt-cache search zenoss-stack # just verifying that the repo is correct
zenoss-stack - Zenoss Stack with all requirements.

naibed:/# apt-get install zenoss-stack
Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed:
  zenoss-stack
0 upgraded, 1 newly installed, 0 to remove and 14 not upgraded.
Need to get 110MB of archives.
After this operation, 386MB of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
  zenoss-stack
Install these packages without verification [y/N]? Y
Get:1 http://dev.zenoss.org main/stable zenoss-stack 3.0.2-0 [110MB]
Fetched 110MB in 11s (9756kB/s)
Selecting previously deselected package zenoss-stack.
(Reading database ... 23039 files and directories currently installed.)
Unpacking zenoss-stack (from .../zenoss-stack_3.0.2-0_amd64.deb) ...
Setting up zenoss-stack (3.0.2-0) ...

naibed:/# /etc/init.d/zenoss-stack start
nohup: redirecting stderr to stdout
Starting mysqld.bin daemon with databases from /usr/local/zenoss/mysql/data
/usr/local/zenoss/mysql/scripts/ctl.sh : mysql  started at port 3307
Daemon: zeoctl .
daemon process started, pid=2050
Daemon: zopectl .
daemon process started, pid=2061
Daemon: zenhub starting...
Daemon: zenjobs starting...
Daemon: zenping starting...
Daemon: zensyslog starting...
Daemon: zenstatus starting...
Daemon: zenactions starting...
Daemon: zentrap starting...
Daemon: zenmodeler starting...
Daemon: zenperfsnmp starting...
Daemon: zencommand starting...
Daemon: zenprocess starting...
Daemon: zenwin starting...
Daemon: zeneventlog starting...
naibed:/#

# You're done, move onto testing &amp;amp; pat yourself on the back&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;4)&lt;/strong&gt; &lt;em&gt;Test &amp;amp; Enjoy:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To test just go to a web browser &amp;amp; enter the IP that you choose for the machine followed by &lt;strong&gt;:8080&lt;/strong&gt; (eg. 192.168.1.2:8080) If everything went as expected you should be greeted with a zenoss setup page
&lt;a href="http://www.flickr.com/photos/68444690@N00/5063595990/"&gt;&lt;img src="http://farm5.static.flickr.com/4090/5063595990_07aa576991.jpg" alt="Success" /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>[Tutorial] Add more RAM to an OpenVZ container</title>
   <link href="http://fsk141.com/tutorial-add-more-ram-to-an-openvz-container" />
   <updated>2010-10-07T15:45:35-07:00</updated>
   <id>http://fsk141.com/tutorial-add-more-ram-to-an-openvz-container</id>
   <content type="html">&lt;p&gt;&lt;img src="http://imgur.com/MtiLa.jpg" alt="extra ram" /&gt;&lt;/p&gt;

&lt;p&gt;It seems like a simple idea, but adding ram to an OpenVZ container is a little bit tricky.&lt;/p&gt;

&lt;p&gt;Lets say we would like to have 512MB dedicated &amp;amp; 1024MB Burst&lt;/p&gt;

&lt;p&gt;In OpenVZ l33t Sp3ak it would look something like this:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;vzctl set &amp;lt;vpsid&amp;gt; --vmguarpages 131072 --save # 512MB Dedicated (Guaranteed)

vzctl set &amp;lt;vpsid&amp;gt; --privvmpages 262144 --save # 1024 Burst (Granted)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;For the longest time it was a pain in the ass to grasp this concept, and I would use someone else’s config file &amp;amp; just copy those properties when I knew they allocated 512MB ram, or the like. Anywho I don’t know why the OpenVZ wiki can’t be simpler, or their ‘vzctl’ program for that matter. Why can’t you just specify the KB/MB/GB value that you want??? Well they don’t make it easy, and here’s “The Easy Way”&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;vzctl set &amp;lt;vpsid&amp;gt; --vmguarpages $((256 * 512)) --save #  512MB Dedicated (Guaranteed)
// 512MB * &amp;lt;whatever_MB_you_want&amp;gt;

vzctl set &amp;lt;vpsid&amp;gt; --privvmpages $((256 * 1024)) --save # 1024 Burst (Granted)
// 1024MB * &amp;lt;whatever_MB_you_want&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Q:
&amp;gt; Why &amp;amp; how does this sorcery work?&lt;/p&gt;

&lt;p&gt;A:
&amp;gt; Lets pick apart the commands declaration (&lt;code&gt;--vmguarpages 131072)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;131072 (number of pages)*4096(how big a page is)/1024 (knock up to KB)/1024 (knock up to MB)&lt;/code&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;((131072*4096)/1024)/1024&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;blockquote&gt;
  &lt;p&gt;Oh, ok great, that really explains things? (you might say)? Well lemme go a little deeper &amp;amp; give you a little example to execute on your Host Node (HN)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="c"&gt;// Find the pagesize of your machine (x86/x86_64 should be 4096)

#include &amp;lt;unistd.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;

int main(int argc, char* argv[])
{
long sz = sysconf(_SC_PAGESIZE);
printf(&amp;quot;Memory pagesize on this box : %i Bytesn&amp;quot;, sz);
return 0;
}

// compile &amp;amp; execute
// copy to a file (pages.cpp) g++ -o pages pages.cpp ; chmod +x ./pages ; ./pages
// you &amp;quot;should&amp;quot; get 4096 Bytes (unless you're on ia64 hardware)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Now that you’ve verified your page size, lets move onto how 512MB computes to 131072 pages:&lt;/p&gt;

&lt;p&gt;4096 Bytes = 1 page = 4 Kilobytes
Since there are 1024 KB in a MB lets calculate for pages which is 1024/4 (where 1024 is a MB we are calculating for one page (4 part groups of 1024) == 256&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is 256?&lt;/strong&gt; 256 is the number of pages in a MB, so if we multiply 256 *  (number of MB’s RAM we want) that will give us the number of pages to correctly give OpenVZ the amount of pages it needs.&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;// some examples
1GB (1024 * 256) = 262144
vzctl set &amp;lt;vpsid&amp;gt; --vmguarpages 262144 --save // if you pre-calculate
vzctl set &amp;lt;vpsid&amp;gt; --vmguarpages $((256 * 1024)) --save // this just calculates with bash

16GB (18432 * 256) = 4718592
vzctl set &amp;lt;vpsid&amp;gt; --vmguarpages 4718592 --save
vzctl set &amp;lt;vpsid&amp;gt; --vmguarpages $((256 * 18432)) --save&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Well I hope this helped someone like me that couldn’t for the life of me understand what the hell they were talking about on the OpenVZ wiki. It wasn’t until I hit a tiny tidbit of happiness from the linux.com article (where they did 256 * 256), then it took me a little longer reading the Setting_UBC_parameters to figure out page size, and after I knew pages were 4KB, I thought it would be nice to outline my findings. Enjoy :)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://wiki.openvz.org/Setting_UBC_parameters"&gt;http://wiki.openvz.org/Setting_UBC_parameters&lt;/a&gt;
&lt;a href="http://wiki.openvz.org/UBC_primary_parameters"&gt;http://wiki.openvz.org/UBC_primary_parameters&lt;/a&gt;
&lt;a href="http://wiki.openvz.org/UBC_secondary_parameters"&gt;http://wiki.openvz.org/UBC_secondary_parameters&lt;/a&gt;
&lt;a href="http://www.linux.com/archive/articles/114214"&gt;http://www.linux.com/archive/articles/114214&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Slow ZFS zpool?</title>
   <link href="http://fsk141.com/slow-zfs-zpool" />
   <updated>2010-10-06T18:45:17-07:00</updated>
   <id>http://fsk141.com/slow-zfs-zpool</id>
   <content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5058827436/"&gt;&lt;img src="http://farm5.static.flickr.com/4103/5058827436_54ff6bc68a.jpg" alt="IMAG0122" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Is a slow zfs pool giving you the blue’s? Well it sure was for me, and it took me forever to figure out the problem. I scoured the internet for many solutions, many of which didn’t work, and it wasn’t until I used my brain did I figure out what was happening ;) Hopefully this post can reduce your frustrations, and help you resolve your slow zfs pool easily.
I checked so many things, and in the end it was something very simple. But lets start with all the things that I tried &amp;amp; didn’t work. These are common problems with zfs when you use cheap consumer hardware. I’m using Western Digital Green Drives, and this is the price that I have to pay.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wrong Direction:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;**TLER - **First I thought that &lt;a href="http://en.wikipedia.org/wiki/Time-Limited_Error_Recovery"&gt;Time-Limited Error Recovery (TLER)&lt;/a&gt; was dramatically slowing the drives down. I had heard of this happening &amp;amp; went off to google to find some solutions. The wikipedia page « explains that WDTLER.EXE can help, so I tried that on my warrior boot usb (I’ll post this later), and it didn’t work for me, it just hung. So I started up another thing on my boot usb (&lt;a href="http://partedmagic.com"&gt;PartedMagic&lt;/a&gt;) &amp;amp; went the trusty ol’ Open Source route with smartmontools. You need to download from svn &amp;amp; compile manually to get the new features. Then run the following:&lt;/li&gt;
&lt;/ul&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;smartctl -l scterc /dev/sda # Query the drive for TLER status
smartctl -l scterc,70,70 /dev/sda # This will set TLER to 7 seconds (default)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# You get this if your drive can't do TLER (bummer)
Warning: device does not support SCT Error Recovery Control command

# This is what you will get if your drive has TLER enabled (hooray)
SCT Error Recovery Control:
           Read:     70 (7.0 seconds)
          Write:     70 (7.0 seconds)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Then I thought “You have 100% blocking”:&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# iostat -xnz
&amp;lt;pre&amp;gt;
&amp;lt;pre&amp;gt;                    extended device statistics
    r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device
    0.0   87.0    0.0 2878.1  0.0  0.0    0.0    0.4   0 100 c4t0d0
    0.0   83.0    0.0 2878.1  0.0  0.1    0.2    0.7   1  50 c4t1d0
    1.0    0.0   28.0    0.0  0.0  0.0    0.0    5.4   0   1 c4t2d0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;See disk c4t0d0 is at 100% blocking :( Anywho here is a fix for that:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;su - # enter password
echo zfs_vdev_max_pending/W0t1 | mdb -kw
echo &amp;quot;set zfs:zfs_vdev_max_pending=1&amp;quot; &amp;gt;&amp;gt; /etc/system&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This is normally the case of ZFS using incorrect scheduling &amp;amp; sending your cheap sata disks too many tasks &amp;amp; overloading them. Thankfully I didn’t have blocking, but I made the patch anyways since I’m using WD Green drives.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;“Your drives are idling too much? (clicking sound)”&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fire up smartctl again &amp;amp; run the following:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;smartctl -a /dev/rdisk1 | grep ID ; smartctl -a /dev/rdisk1 | grep Start

# This is what I got on my macbook pro - 320GB caviar black drive (it's my secondary)

[jgerold@jgerold-13mbp.oc.cox.net ~]$ smartctl -a /dev/rdisk1 | grep ID ; smartctl -a /dev/rdisk1 | grep Start
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
 4 Start_Stop_Count        0x0032   099   099   000    Old_age   Always       -       1770&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Should think about maybe replacing this soon?&lt;/p&gt;

&lt;p&gt;Not necessarily, upon looking at the PDF from Western Digital I have 600,000 spin up/down to look forward to on this disk. I’m not sure if RAW_VALUE equates to actual spin up/down &amp;amp; that smartctl is just being funky?&lt;/p&gt;

&lt;p&gt;But if you have a lower value, then I wouldn’t worry; yet if your count is high &amp;amp; ever growing then I would recommend you boot into a windows instance (use bartpe of some sort), and grab a copy of WDIDLE.EXE (&lt;a href="http://webdiary.com/i/?p=515"&gt;http://webdiary.com/i/?p=515&lt;/a&gt;) and turn off idleing wdiddle /d or something like that? I’m not sure I haven’t tried it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Right Direction (This is what fixed it for me):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I removed a horrible disk from my pool!&lt;/p&gt;
&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;zpool offline ambry c0d4&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;I wish I had the readout for my ‘iostat -mX’ but my forth drive had a 3285ms timeout and was making the whole pool slow down to a crawl because it was failing (but not dead). I was noticing full disk usage with I would do an ls on a small dir, or copy data, or anything that required disk use. The crazy thing is that it took about 3 days for the array to recover once I removed the bad disk from the pool. Me being ever curious would run the following to monitor how fast the drives were:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;while true; iostat -mX /dev/{ct01,ct02,ct03}; sleep 1; done&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;I joyfully watched my disks go from about .5 MB/s to now over 120MB/s (per disk)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Afterthoughts:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wish I would have ran an iostat before trying all the things that I did :( But everything looks better in hindsight. I’m just glad that this is fixed and I was able to make a secondary backup, just in case anything else goes wrong before I get my new server up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources:&lt;/strong&gt;
- &lt;a href="http://en.wikipedia.org/wiki/Time-Limited_Error_Recovery"&gt;http://en.wikipedia.org/wiki/Time-Limited_Error_Recovery&lt;/a&gt;
- &lt;a href="http://letsgetdugg.com/2009/10/21/zfs-slow-performance-fix"&gt;http://letsgetdugg.com/2009/10/21/zfs-slow-performance-fix&lt;/a&gt;
- &lt;a href="http://www.csc.liv.ac.uk/~greg/projects/erc"&gt;http://www.csc.liv.ac.uk/~greg/projects/erc&lt;/a&gt;
- &lt;a href="http://webdiary.com/i/?p=515"&gt;http://webdiary.com/i/?p=515&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>A little find magic</title>
   <link href="http://fsk141.com/a-little-find-magic" />
   <updated>2010-10-05T23:01:46-07:00</updated>
   <id>http://fsk141.com/a-little-find-magic</id>
   <content type="html">&lt;p&gt;I was chillen in irc.freenode.net #archlinux, when an interesting question came up:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;21:59 &amp;lt; treah&amp;gt; i need to find every mp3 file in all the sub directories of a folder and move them to the root directory of that folder that contains the sub directories&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Well after a few jokes passed:&lt;/p&gt;

&lt;p&gt;mv -r *.mp3 ., and a few others I spent a few minutes and came up with this:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;find . -name &amp;quot;*.mp3&amp;quot; | sed -e 's/.//./&amp;quot;/g' | sed -e 's/.mp3/.mp3&amp;quot;/g' &amp;gt; mp3list $$ mv `cat mp3list` .&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;A little cludge hack I know, but it “works” Then I optimized it a little more:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;find . -name &amp;quot;*.mp3&amp;quot; -print0 -exec mv {} . ;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Then I just was having fun (and learned about xargs):&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;find . -name &amp;quot;*.mp3&amp;quot; -print0 | xargs -0 -I'{}' mv {} .&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Thanks treah, it was my fun little learning experience of the night ;)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>[PotW] tty-clock</title>
   <link href="http://fsk141.com/potw-tty-clock" />
   <updated>2010-10-05T20:19:23-07:00</updated>
   <id>http://fsk141.com/potw-tty-clock</id>
   <content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5056275792/"&gt;&lt;img src="http://farm5.static.flickr.com/4112/5056275792_53c5a1e325.jpg" alt="tty-clock_small" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Program:&lt;/strong&gt; tty-clock&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Site Link:&lt;/strong&gt; &lt;a href="http://github.com/xorg62/tty-clock"&gt;http://github.com/xorg62/tty-clock&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Download:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;‘git clone http://github.com/xorg62/tty-clock.git’&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;download the &lt;a href="http://github.com/xorg62/tty-clock/archives/master"&gt;branch master&lt;/a&gt; tarball/zip&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Installation:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;use your package manager (yaourt -S tty-clock for archlinux)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;download ^^ &amp;amp; compile from source »&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Compile:&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;make
sudo make install
tty-clock&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Use it!:&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;usage : tty-clock [-sctrvih] [-C [0-7]] [-f format]
&amp;lt;pre&amp;gt;    -s            Show seconds
    -c            Set the clock at the center of the terminal
    -C [0-7]      Set the clock color
    -t            Set the hour in 12h format
    -r            Do rebound the clock
    -f format     Set the date format
    -v            Show tty-clock version
    -i            Show some info about tty-clock
    -h            Show this page&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Screenshots:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;**&lt;a href="http://www.flickr.com/photos/68444690@N00/5055588265/"&gt;&lt;img src="http://farm5.static.flickr.com/4083/5055588265_bd9b8471de.jpg" alt="tty-clock" /&gt;&lt;/a&gt;
**&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Picasa vs. Flickr (And why I’m moving back to Flickr)</title>
   <link href="http://fsk141.com/picasa-vs-flickr-and-why-im-moving-back-to-flickr" />
   <updated>2010-10-05T01:00:13-07:00</updated>
   <id>http://fsk141.com/picasa-vs-flickr-and-why-im-moving-back-to-flickr</id>
   <content type="html">&lt;p&gt;Hands down Flicker takes the cake when it comes to ease of use, features, api integration, and overall awesomeness. I used flickr for quite some time, and changed over to picasa to see how things were on the other side.&lt;/p&gt;

&lt;p&gt;To put it lightly it’s been a big pain in the ass:&lt;/p&gt;

&lt;p&gt;1) Wordpress integration:[](http://tgardner.net/wordpress-flickr-manager/)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flickr&lt;/strong&gt; - &lt;a href="http://tgardner.net/wordpress-flickr-manager/"&gt;Wordpress Flickr  Manager&lt;/a&gt; - Spectacular (This has ease of use written all over it,  while also allowing for advanced configuration &amp;amp; integration  options)&lt;/p&gt;

&lt;p&gt;**Picasa - **&lt;a href="http://www.toppa.com/shashin-wordpress-plugin/"&gt;Shashin&lt;/a&gt; -  Literal definition = poo (It’s a pain to update albums (prolly google  api crapola), it’s laggy, it doesn’t play well with thumbnails, it’s a  slight pain to configure… Must I go on?)&lt;/p&gt;

&lt;p&gt;2) Overall summary of use:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flickr&lt;/strong&gt; - Has an excellent webapp (much better than picasaweb), has some great user-developed applications, has an amazing api to develop programs yourself, and is all around user friendly, handles pictures &amp;amp; video (++) VERY well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Picasa&lt;/strong&gt; - Has a halfway decent webapp focused around “lets make this ui so easy a caveman could use it” ;), Only one desktop app (Picasa), has really cool face recognition app (also kinda creepy), another creepy thing is how google’s picasa updater runs in the background… And while picasa does photos pretty well, it sucks hard when it comes to video.&lt;/p&gt;

&lt;p&gt;3) Reasons I’m switching back to flickr:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;I’m a a big-time script kiddie, and flickr is my best friend in this regard, whereas picasa leaves me in the dark.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Picasa’s wordpress integration is destructive to productivity, whereas flickr’s (wordpress flickr manager) integration makes things so easy, and straightforward.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Video quality for picasa is disappointing. I love flickr’s video player and quality.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is just a quick post to vent, but I hope it might help someone from resisting the urge to go to picasa since it’s integrated with google/picasa &amp;amp; just stick with the sure bet Flickr!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Arch Linux on iMac [Arch Only]</title>
   <link href="http://fsk141.com/arch-linux-on-imac-arch-only" />
   <updated>2010-09-21T15:08:50-07:00</updated>
   <id>http://fsk141.com/arch-linux-on-imac-arch-only</id>
   <content type="html">&lt;p&gt;So I just got an iMac for work, and decided to put linux on it. I could have stuck with Mac, but meh, I need linux! It makes me all warm and fuzzy inside. I wrote down a log of what I did to get everything working, enjoy.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/5054457761/"&gt;&lt;img src="http://farm5.static.flickr.com/4111/5054457761_6cc63cddd5.jpg" alt="New-Desk" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1) Boot up Mac &amp;amp; install rEFIt (&lt;a href="http://refit.sourceforge.net"&gt;http://refit.sourceforge.net&lt;/a&gt;) &amp;amp;&amp;amp; reboot twice (second reboot should show rEFIt menu.&lt;/p&gt;

&lt;p&gt;2) Boot Archlinux CD ( I choose the x86_64 netinstall image) &amp;amp; append “nomodeset” &lt;em&gt;without quotes&lt;/em&gt; to the end of the boot line&lt;/p&gt;

&lt;p&gt;3) Convert disk from GUID to MBR
- &lt;strong&gt;login (root)&lt;/strong&gt;
- &lt;strong&gt;dhcpcd eth0&lt;/strong&gt;
- &lt;strong&gt;pacman -Sy &amp;amp;&amp;amp; pacman -Su&lt;/strong&gt;
- &lt;strong&gt;pacman -S gdisk&lt;/strong&gt;
- [root@archiso ~]# fdisk -l | grep /dev #(this will give you your disk)&lt;/p&gt;

&lt;p&gt;Disk /dev/sda: 500.1 GB, 500107862016 bytes « this is the disk I want (I only have one disk in the system)&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;[root@archiso ~]# gdisk /dev/sda&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GPT fdisk (gdisk) version 0.6.10&lt;/p&gt;

&lt;p&gt;Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: present&lt;/p&gt;

&lt;p&gt;Found valid MBR and GPT. Which do you want to use?
1 - MBR
2 - GPT
3 - Create blank GPT&lt;/p&gt;

&lt;p&gt;Your answer:
1&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;1  - MBR (This really doesn’t matter since we are going to wipe GPT, but select it anyway)&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Command (? for help): x&lt;/p&gt;

&lt;p&gt;Expert command (? for help): z
About to wipe out GPT on /dev/sdc. Proceed? (Y/N): y
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
Blank out MBR? (Y/N): y&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;This will wipe out GPT &amp;amp; MBR for a brand new HDD, now you are ready to continue with your arch install as if it was a beige box.&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;4) Continue With Install (/arch/setup)
- Select Source (kernel.org)
- Set clock
- Prepare Hard Drive(s)
- You can autoprepare if you wish, this is what I did on my 500GB drive:
- Manually Partition
100GB /
398GB /home
2GB   /swap
- Manually configure block devices
- UUID is king
- /dev/sda1 - xfs - /
- /dev/sda2 - xfs - /home
- /dev/sda3 = swap
- Ignore /boot missing error
- Select Packages
- asterisk base &amp;amp; base-devel
- openssh
- sudo
- Configure (change hostname &amp;amp; stuff)
- Install bootloader
- Configure menu.lst &amp;amp; add “nomodeset”  to the end of the kernel lines
- Something like this: &lt;code&gt;kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/15734824-7189-44e5-ac82-81b4215144f6 ro nomodeset&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Reboot&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;5) Insert MAC OS X disk (hold alt &amp;amp; boot)
- Utilities &amp;gt; Terminal:
- &lt;em&gt;bless –device /dev/disk0 –setBoot –legacy –verbose&lt;/em&gt; (where /dev/disk0 is where I installed grub [I’ve heard there can be issues with installing grub on the root of the disk, but I’ve had no problems so far])&lt;/p&gt;

&lt;p&gt;6) boot &amp;amp; do some configging:
- pacman -S xorg
- lspci | grep VGA (http://wiki.archlinux.org/index.php/MacBook#Xorg)
- I have ATI drivers:
- I chose catalyst drivers over xf86-video-ati/radeonhd since they worked well, and were a breeze to install through yaourt:
- &lt;em&gt;yaourt -S catalyst&lt;/em&gt; (or you can manually do everything &lt;a href="http://aur.archlinux.org/packages.php?K=catalyst"&gt;start here&lt;/a&gt;
- I got hung up with my ~/.xinitrc &amp;amp; it was causing problems, yet after removing it I was able to start twm with no issues&lt;/p&gt;

&lt;p&gt;Here is my xorg.conf just in case anyone is interested:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;Section &amp;quot;ServerLayout&amp;quot;
 Identifier     &amp;quot;Xorg Configured&amp;quot;
 Screen      0  &amp;quot;aticonfig-Screen[0]-0&amp;quot; 0 0
 InputDevice    &amp;quot;Keyboard0&amp;quot; &amp;quot;CoreKeyboard&amp;quot;
 InputDevice    &amp;quot;USB Mouse&amp;quot; &amp;quot;CorePointer&amp;quot;
EndSection

Section &amp;quot;Files&amp;quot;

# Additional fonts: Locale, Gimp, TTF...
#    FontPath     &amp;quot;/usr/share/lib/X11/fonts/latin2/75dpi&amp;quot;
#    FontPath     &amp;quot;/usr/share/lib/X11/fonts/latin2/100dpi&amp;quot;
# True type and type1 fonts are also handled via xftlib, see /etc/X11/XftConfig!
 ModulePath   &amp;quot;/usr/lib/xorg/modules&amp;quot;
 FontPath     &amp;quot;/usr/share/fonts/misc:unscaled&amp;quot;
 FontPath     &amp;quot;/usr/share/fonts/misc&amp;quot;
 FontPath     &amp;quot;/usr/share/fonts/75dpi:unscaled&amp;quot;
 FontPath     &amp;quot;/usr/share/fonts/75dpi&amp;quot;
 FontPath     &amp;quot;/usr/share/fonts/100dpi:unscaled&amp;quot;
 FontPath     &amp;quot;/usr/share/fonts/100dpi&amp;quot;
 FontPath     &amp;quot;/usr/share/fonts/PEX&amp;quot;
 FontPath     &amp;quot;/usr/share/fonts/cyrillic&amp;quot;
 FontPath     &amp;quot;/usr/share/fonts/Type1&amp;quot;
 FontPath     &amp;quot;/usr/share/fonts/ttf/western&amp;quot;
 FontPath     &amp;quot;/usr/share/fonts/ttf/decoratives&amp;quot;
 FontPath     &amp;quot;/usr/share/fonts/truetype&amp;quot;
 FontPath     &amp;quot;/usr/share/fonts/truetype/openoffice&amp;quot;
 FontPath     &amp;quot;/usr/share/fonts/truetype/ttf-bitstream-vera&amp;quot;
 FontPath     &amp;quot;/usr/share/fonts/latex-ttf-fonts&amp;quot;
 FontPath     &amp;quot;/usr/share/fonts/defoma/CID&amp;quot;
 FontPath     &amp;quot;/usr/share/fonts/defoma/TrueType&amp;quot;
EndSection

Section &amp;quot;Module&amp;quot;
 Load  &amp;quot;ddc&amp;quot;  # ddc probing of monitor
 Load  &amp;quot;dbe&amp;quot;
 Load  &amp;quot;dri&amp;quot;
 Load  &amp;quot;extmod&amp;quot;
 Load  &amp;quot;glx&amp;quot;
 Load  &amp;quot;bitmap&amp;quot; # bitmap-fonts
 Load  &amp;quot;type1&amp;quot;
 Load  &amp;quot;freetype&amp;quot;
 Load  &amp;quot;record&amp;quot;
EndSection

Section &amp;quot;ServerFlags&amp;quot;
 Option        &amp;quot;AllowMouseOpenFail&amp;quot; &amp;quot;true&amp;quot;
 Option        &amp;quot;AutoAddDevices&amp;quot; &amp;quot;False&amp;quot;
EndSection

Section &amp;quot;InputDevice&amp;quot;
 Identifier  &amp;quot;Keyboard0&amp;quot;
 Driver      &amp;quot;keyboard&amp;quot;
 Option        &amp;quot;CoreKeyboard&amp;quot;
 Option        &amp;quot;XkbRules&amp;quot; &amp;quot;xorg&amp;quot;
 Option        &amp;quot;XkbModel&amp;quot; &amp;quot;pc105&amp;quot;
 Option        &amp;quot;XkbLayout&amp;quot; &amp;quot;us&amp;quot;
 Option        &amp;quot;XkbVariant&amp;quot; &amp;quot;&amp;quot;
EndSection

Section &amp;quot;InputDevice&amp;quot;
 Identifier  &amp;quot;USB Mouse&amp;quot;
 Driver      &amp;quot;mouse&amp;quot;
 Option        &amp;quot;Device&amp;quot; &amp;quot;/dev/input/mice&amp;quot;
 Option        &amp;quot;SendCoreEvents&amp;quot; &amp;quot;true&amp;quot;
 Option        &amp;quot;Protocol&amp;quot; &amp;quot;IMPS/2&amp;quot;
 Option        &amp;quot;ZAxisMapping&amp;quot; &amp;quot;4 5&amp;quot;
 Option        &amp;quot;Buttons&amp;quot; &amp;quot;5&amp;quot;
EndSection

Section &amp;quot;Monitor&amp;quot;
 Identifier   &amp;quot;aticonfig-Monitor[0]-0&amp;quot;
 Option        &amp;quot;VendorName&amp;quot; &amp;quot;ATI Proprietary Driver&amp;quot;
 Option        &amp;quot;ModelName&amp;quot; &amp;quot;Generic Autodetecting Monitor&amp;quot;
 Option        &amp;quot;DPMS&amp;quot; &amp;quot;true&amp;quot;
EndSection

Section &amp;quot;Device&amp;quot;
 Identifier  &amp;quot;aticonfig-Device[0]-0&amp;quot;
 Driver      &amp;quot;fglrx&amp;quot;
 BusID       &amp;quot;PCI:1:0:0&amp;quot;
EndSection

Section &amp;quot;Screen&amp;quot;
 Identifier &amp;quot;aticonfig-Screen[0]-0&amp;quot;
 Device     &amp;quot;aticonfig-Device[0]-0&amp;quot;
 Monitor    &amp;quot;aticonfig-Monitor[0]-0&amp;quot;
 DefaultDepth     24
 SubSection &amp;quot;Display&amp;quot;
 Viewport   0 0
 Depth     24
 Modes    &amp;quot;1920x1200&amp;quot;
 EndSubSection
EndSection

Section &amp;quot;DRI&amp;quot;
 Mode         0666
EndSection&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;After I got X installed I went on to install dwm (my window manager of choice), and synergy so that I don’t have to use another keyboard/mouse. This is a minimalistic rundown of what I had to do to get things working, and well things work. Please let me know if you’re having problems, since I hit a few hitches along the way, most were very easy to solve, otherwise I would have added them in.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Sources:
- &lt;a href="http://www.rodsbooks.com/gdisk/wipegpt.html"&gt;http://www.rodsbooks.com/gdisk/wipegpt.html&lt;/a&gt;
- &lt;a href="http://mac.linux.be/content/single-boot-linux-without-delay"&gt;http://mac.linux.be/content/single-boot-linux-without-delay&lt;/a&gt;
- &lt;a href="http://wiki.archlinux.org/index.php/ATI"&gt;http://wiki.archlinux.org/index.php/ATI&lt;/a&gt;
- &lt;a href="http://wiki.archlinux.org/index.php/MacBook"&gt;http://wiki.archlinux.org/index.php/MacBook&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Upgrade OpenSolaris to OpenIndiana</title>
   <link href="http://fsk141.com/upgrade-opensolaris-to-openindiana" />
   <updated>2010-09-17T10:35:10-07:00</updated>
   <id>http://fsk141.com/upgrade-opensolaris-to-openindiana</id>
   <content type="html">&lt;p&gt;OpenIndiana was just released a few days ago (I just figured out today) &amp;gt; Anywho who wants to be up to the most bleeding up to dateness? Well I certainly do, so here’s how:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;Last login: Wed Sep 15 23:15:07 2010 from jgerold-13mbp.o
Sun Microsystems Inc.   SunOS 5.11      snv_129 November 2008

# Add the new repository

&amp;lt;strong&amp;gt;pfexec pkg set-publisher --non-sticky opensolaris.org
pfexec pkg set-publisher -O http://pkg.openindiana.org/dev openindiana.org
pfexec pkg set-publisher -P openindiana.org&amp;lt;/strong&amp;gt;

# Unset the previous publisher

$ &amp;lt;strong&amp;gt;pkg publisher&amp;lt;/strong&amp;gt; # List the current Publishers

PUBLISHER                             TYPE     STATUS   URI
openindiana.org          (preferred)  origin   online   http://pkg.openindiana.org/dev/
opensolaris.org          (non-sticky) origin   online   http://pkg.opensolaris.org/dev/

# Remove the old publisher
&amp;lt;strong&amp;gt;pfexec pkg unset-publisher opensolaris.org&amp;lt;/strong&amp;gt;

# Checking to make sure everything went smoothly

$ &amp;lt;strong&amp;gt;pkg publisher&amp;lt;/strong&amp;gt;
PUBLISHER                             TYPE     STATUS   URI
openindiana.org          (preferred)  origin   online   http://pkg.openindiana.org/dev/

# Run your update, and enjoy your new repository:

$ &amp;lt;strong&amp;gt;pfexec pkg image-update&amp;lt;/strong&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Set Mac OS X background (wallpaper) via cli</title>
   <link href="http://fsk141.com/set-mac-os-x-background-wallpaper-via-cli" />
   <updated>2010-09-06T22:41:21-07:00</updated>
   <id>http://fsk141.com/set-mac-os-x-background-wallpaper-via-cli</id>
   <content type="html">&lt;p&gt;This was a hard one to figure out. I first tried a method outlined here &lt;a href="http://thingsthatwork.net/index.php/2008/02/07/fun-with-os-x-defaults-and-launchd"&gt;http://thingsthatwork.net/index.php/2008/02/07/fun-with-os-x-defaults-and-launchd&lt;/a&gt;, and that didn’t work to well &amp;amp; you had to kill the Dock every time you set a background.&lt;/p&gt;

&lt;p&gt;Well after much digging through google I found out that you can use osascript to set your background. I wrote a little osascript, and low and behold a way to change my background via cli:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;osascript -e &amp;quot;tell application &amp;quot;System Events&amp;quot; to set picture of every desktop to &amp;quot;&amp;lt;path&amp;gt;/image.jpg&amp;quot;&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Chapod (Calvin &amp; Hobbes Apod)</title>
   <link href="http://fsk141.com/chapod-calvin-hobbes-apod" />
   <updated>2010-09-06T17:07:13-07:00</updated>
   <id>http://fsk141.com/chapod-calvin-hobbes-apod</id>
   <content type="html">&lt;p&gt;&lt;a href="http://fsk141.com/uploads/2010/09/chapod.jpg"&gt;&lt;img src="http://fsk141.com/uploads/2010/09/chapod-800x500.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Idea:&lt;/strong&gt; &lt;a href="http://www.reddit.com/r/pics/comments/d9zfg/i_used_to_change_my_desktop_background_every_day"&gt;http://www.reddit.com/r/pics/comments/d9zfg/i_used_to_change_my_desktop_background_every_day&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;APOD:&lt;/strong&gt; &lt;a href="http://apod.nasa.gov/apod/"&gt;http://apod.nasa.gov/apod/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implementation:&lt;/strong&gt; &lt;a href="https://github.com/fsk141/scripts/blob/master/chapod"&gt;https://github.com/fsk141/scripts/blob/master/chapod&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Download:&lt;/strong&gt; &lt;a href="https://raw.github.com/fsk141/scripts/master/chapod"&gt;https://raw.github.com/fsk141/scripts/master/chapod&lt;/a&gt; (wget, or right click &amp;amp; save as)&lt;/p&gt;

&lt;p&gt;I made this a while ago, and thought some people would like to know that it’s working awesome.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Setup:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Change the RESOLUTION variable to fit your screen size&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usage: (Works on Mac &amp;amp; Linux)&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;chapod ## without any options will download everything &amp;amp; set your desktop bg

chapod  ## will set to any apod you want!

eg: chapod http://apod.nasa.gov/apod/ap110628.html&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;don’t forget to chmod +x if thing’s aren’t working out well.&lt;/p&gt;

&lt;p&gt;If you would like it to auto-run every day:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;crontab -e # and add the following:
 5 12 * * *	$HOME/.scripts/scripts/chapod&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Imagemagick&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Mac/Linux&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Curl&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;feh (if on linux)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;**Program below: **&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;#!/bin/bash

#################################################
# Calvin &amp;amp; Hobbes APOD #
# Version 1.2 (stupid convert) #
#################################################

#///////////////////////////////////////////////#
# Author: Jonny Gerold &amp;lt;jonny@fsk141.com&amp;gt; #
#///////////////////////////////////////////////#

#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.
#

# Storage Directory
SDIR=&amp;quot;$HOME/.chapod&amp;quot;

# Screen Resolution
RESOLUTION=&amp;quot;1280x800&amp;quot;

# Raw Calvin &amp;amp; Hobbes foreground
RAWCH=&amp;quot;http://dl.dropbox.com/u/52078/chblank.png&amp;quot;

# Base URL for apod
BURL=&amp;quot;http://apod.nasa.gov/apod/&amp;quot;

# OS Check
OS=`uname -s`

# Where is convert
if [[ &amp;quot;$OS&amp;quot; == &amp;quot;Darwin&amp;quot; ]]; then
if [[ -x /usr/local/bin/brew ]]; then
IM=&amp;quot;/usr/local/bin/convert&amp;quot;
## prolly should put in an else for macports
fi
else
IM=&amp;quot;/usr/bin/convert&amp;quot;
fi

# If a url is specified use that, otherwise use apod
if [[ -n &amp;quot;$1&amp;quot; ]]; then

# Entered URL
EURL=&amp;quot;$1&amp;quot;
IMAGEPATH=`curl $EURL 2&amp;gt;/dev/null | grep 'href=&amp;quot;image' | cut -d\&amp;quot; -f2`
APOD=&amp;quot;$BURL$IMAGEPATH&amp;quot;
else
IMAGEPATH=`curl $BURL 2&amp;gt;/dev/null | grep 'href=&amp;quot;image' | cut -d\&amp;quot; -f2`
APOD=&amp;quot;$BURL$IMAGEPATH&amp;quot;
fi

# Make SDIR
if [[ ! -d $SDIR ]]; then
mkdir $SDIR
fi

# Get the raw Calvin &amp;amp; Hobbes image
if [[ ! -e $SDIR/chblank.png ]]; then
curl $RAWCH -o $SDIR/chblank.png 2&amp;gt;/dev/null
fi

# Get the apod
if [[ -e $SDIR/apod.jpg ]]; then
rm $SDIR/apod.jpg
fi
curl $APOD -o $SDIR/apod.jpg 2&amp;gt;/dev/null

# Resize raw C&amp;amp;H image &amp;amp; apod
for image in apod.jpg chblank.png
do $IM $SDIR/$image -background transparent -resize $RESOLUTION^ -gravity south -extent $RESOLUTION $SDIR/tmp.$image
done

# Lets join them together
$IM $SDIR/{tmp.apod.jpg,tmp.chblank.png} -mosaic $SDIR/chapod.jpg

rm $SDIR/tmp.*

# Now lets set the background
if [[ $OS == &amp;quot;Darwin&amp;quot; ]]; then
osascript -e &amp;quot;tell application \&amp;quot;System Events\&amp;quot; to set picture of every desktop to \&amp;quot;$SDIR/$CHA\&amp;quot;&amp;quot;
else
feh --bg-scale $SDIR/chapod.jpg &amp;amp;
fi&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>[Tutorial] SSL IIS &gt; Apache (Export Windows Server SSL Cert to Apache)</title>
   <link href="http://fsk141.com/ssl-iis-apache-export-windows-server-ssl-cert-to-apache" />
   <updated>2010-07-15T09:59:08-07:00</updated>
   <id>http://fsk141.com/ssl-iis-apache-export-windows-server-ssl-cert-to-apache</id>
   <content type="html">&lt;p&gt;Export Keys from a windows server to apache server:&lt;/p&gt;

&lt;p&gt;1) Startup mmc  &lt;/p&gt;

&lt;p&gt;a File &amp;gt; Add/Remove Snap in &amp;gt; Certificates:&lt;br /&gt;
a1 Computer Account &amp;gt; Local Computer (Finish with “OK”  &lt;/p&gt;

&lt;p&gt;b Select Certificates » Personal » Certificates  &lt;/p&gt;

&lt;p&gt;c Select Certificate (*.domainname.com)  &lt;/p&gt;

&lt;p&gt;b1 Right click &amp;gt; All Tasks &amp;gt; Export&lt;br /&gt;
b2 “Yes, Export the private Key”&lt;br /&gt;
b3 next (use defaults [PKCS #12 no boxes checked})&lt;br /&gt;
b4 password (enter anything) « you are setting this password&lt;br /&gt;
b5 Name your export &amp;amp;&amp;amp; Finish&lt;/p&gt;

&lt;p&gt;2) Extract the Key &amp;amp; Certificate from the pkcs file &amp;amp; enjoy  &lt;/p&gt;

&lt;p&gt;a Export the Private key:  &lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;openssl pkcs12 -in filename.pfx -nocerts -out key.pem&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;b Export the certificate file:  &lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;c Remove the passphrase from the key so apache won’t prompt for passphrase:  &lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;openssl rsa -in key.pem -out server.key&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Floating in numbers [IPv6] | Moved to FreeDNS</title>
   <link href="http://fsk141.com/floating-in-numbers-ipv6-moved-to-freedns" />
   <updated>2010-02-26T11:01:16-08:00</updated>
   <id>http://fsk141.com/floating-in-numbers-ipv6-moved-to-freedns</id>
   <content type="html">&lt;p&gt;I went to SCaLE last weekend, and was very happy to talk to the people at the IPv6 booth. I also jacked one of their “getipv6.info” stickers cause it looked neato &amp;amp; unixy. A day later I stuck it on my laptop (along with some other nice linux/gnu/openvz buddies); and a day after that I started on my journey to IPv6.
I’ve been working through &lt;a href="http://www.amazon.com/IPv6-Essentials-Silvia-Hagen/dp/0596100582/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1267172912&amp;amp;sr=8-1"&gt;IPv6 Essentials&lt;/a&gt; in my free time, and actually implementing it at home! I started out by bricking my router (earlier post), followed by epic failure when trying to configure IPv6 on my router. I was rewarded with a little success before I had to call it quits late at night. I manually assigned my IPv6 address to my mac and everything worked wonderfully (&lt;a href="http://ipv6.google.com"&gt;ipv6.google.com&lt;/a&gt; for example)&lt;/p&gt;

&lt;p&gt;Well I was dis-satisfied, and spent the better part of my day at home (Thursday 25, 2010) getting it to work on my router. Now everything works &amp;amp; I can reboot my router &amp;amp; expect everything to come back when it’s back up. I will post how I got everything working ASAP since the current IPv6 articles are dated &amp;amp; chock full of mis-information.
In the process of moving to IPv6 at home I needed to make my dyndns IPv6 compatible. Well dyndns isn’t IPv6 compatible (for free anyways), so I decided to switch to FreeDNS. It provides AAAA record support (IPv6), and allowed me to pass onto the next level of the HE.net certification:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://ipv6.he.net/certification/create_badge.php?pass_name=fsk141&amp;amp;badge=3" alt="" /&gt;
Yay! I’m an IPv6 Enthusiast…
After reading through IPv6 Essentials I can see the real plusses to IPv6, and can’t wait to take advantage of all it’s neat features.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Unbrick WRT350N</title>
   <link href="http://fsk141.com/unbrick-wrt350n" />
   <updated>2010-02-24T14:42:38-08:00</updated>
   <id>http://fsk141.com/unbrick-wrt350n</id>
   <content type="html">&lt;p&gt;Wow, so last night I tried to flash an unsupported ddwrt image on my WRT350N &amp;amp; I bricked it :(. I would have been golden, except for some reason boot-wait wasn’t working. I spent about 30 minutes looking what new router I should purchase, when I thought, ah there are no good routers out that will accept DD-WRT; I’ll just unbrick my current router…&lt;/p&gt;

&lt;p&gt;Well to start I had to figure out how to open the darn thing. I ended up ripping off the top &amp;amp; bottom plastic where some nice torx security screws greeted me… Well a few came out with some nice twists of my torx driver. Yet a couple actually had the center pin proper height. Easy way to get around this, is to find a small phillips screwdriver. I was able to easily unscrew them with a phillips.
&lt;a href="http://www.flickr.com/photos/68444690@N00/4384891503/"&gt;&lt;img src="http://farm3.static.flickr.com/2758/4384891503_6abeb02900.jpg" alt="Security Torx" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After removing the screws I was now able to access the board; most importantly the serial header:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/4385664594/"&gt;&lt;img src="http://farm5.static.flickr.com/4017/4385664594_0e8677b9c8.jpg" alt="091" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From Left to Right (Yellow = 3.3V; White = Tx; Red = Rx; Black = GND)&lt;/p&gt;

&lt;p&gt;I used my handy dandy CA-42 Serial to USB adapter:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/4384881609/"&gt;&lt;img src="http://farm5.static.flickr.com/4061/4384881609_396cdd4377.jpg" alt="CA-42" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It also has colored wires, and I should have matched them up, but I  kinda just plugged some alligator clips in &amp;amp; plugged them into the  right wires for the CA-42. The CA-42 layout is like this (Black = GND ; White = Rx ; Green = Tx ; Red = +V)&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/4384910083/"&gt;&lt;img src="http://farm3.static.flickr.com/2756/4384910083_043afc1e7b.jpg" alt="CA-42 &amp;gt; Router" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After connecting everything up, you should be able to see “output” &amp;amp; be able to hit Ctrl-C to be dropped into CFE&amp;gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;nvram set boot_wait=on

nvram commit

reboot&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Now prepare to copy the image over. I had three windows open. A window with the serial output, a window pinging 192.168.1.1, and a window to execute my push command. I would also recommend that you set (IP Address = 192.168.1.10 ; Subnet = 255.255.255.0; Gateway = 192.168.1.1) Once you receive a ping after rebooting run the following command:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;echo -e &amp;quot;nmode binarynrexmt 1ntimeout 60ntracenput dd-wrt.v24_mini_generic.binn&amp;quot; | tftp 192.168.1.1&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;where ‘dd-wrt.v24_mini_generic.bin’ is the image you would like to flash (it took me about 6 different images until this one worked [ this is the web flash image on the wrt350n page])
After running the following you should get something that looks like this:&lt;/p&gt;

&lt;p&gt;If everything went as planned, then you should end up with a working router :) Yay!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/4385674150/"&gt;&lt;img src="http://farm3.static.flickr.com/2694/4385674150_dee99ae264.jpg" alt="Success" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/4385674284/"&gt;&lt;img src="http://farm3.static.flickr.com/2775/4385674284_4a954e139d.jpg" alt="Success_Final" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are plenty of resources on the internets. I found this wonderful link: &lt;a href="http://dg.cascade.dyndns.org/wrt350n.html"&gt;http://dg.cascade.dyndns.org/wrt350n.html&lt;/a&gt; which perfectly outlines EVERYTHING I needed to do. It was very helpful in this process.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Convert .bin/.cue to .iso [Mac/Linux]</title>
   <link href="http://fsk141.com/convert-bin-cue-to-iso-maclinux" />
   <updated>2010-02-01T17:58:06-08:00</updated>
   <id>http://fsk141.com/convert-bin-cue-to-iso-maclinux</id>
   <content type="html">&lt;p&gt;I dislike .bin/.cue combinations for a few reasons. But the biggest is that Mac doesn’t natively support mounting them. Good thing I have macports to install linux programs.&lt;/p&gt;

&lt;p&gt;Firstly lets install bchunk (use your favorite package manager, or &lt;a href="http://www.macports.org/"&gt;macports&lt;/a&gt; on the mac)&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# Mac Installation
sudo port install bchunk&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Then locate your .bin/.cue combinations and CONVERT!&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;jg_mbp:CBT NUGGETS CISCO CCNA CCENT EXAM-PACK 640-822 ICND1 jgerold$ bchunk agcnccci.{bin,cue} CCENT
binchunker for Unix, version 1.2.0 by Heikki Hannikainen &amp;lt;hessu@hes.iki.fi&amp;gt;
 Created with the kind help of Bob Marietta &amp;lt;marietrg@SLU.EDU&amp;gt;,
 partly based on his Pascal (Delphi) implementation.
 Support for MODE2/2352 ISO tracks thanks to input from
 Godmar Back &amp;lt;gback@cs.utah.edu&amp;gt;, Colas Nahaboo &amp;lt;Colas@Nahaboo.com&amp;gt;
 and Matthew Green &amp;lt;mrg@eterna.com.au&amp;gt;.
 Released under the GNU GPL, version 2 or later (at your option).

Reading the CUE file:

Track  1: MODE1/2352    01 00:00:00

Writing tracks:

 1: CCENT01.iso  338/338  MB  [********************] 100 %
jg_mbp:CBT NUGGETS CISCO CCNA CCENT EXAM-PACK 640-822 ICND1 jgerold$ ls
CCENT01.iso     agcnccci.bin    agcnccci.cue
# ^Yay a new .iso&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;bchunk makes .bin/.cue &amp;gt; .iso conversion EASY!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Pogoplug</title>
   <link href="http://fsk141.com/pogoplug" />
   <updated>2010-01-28T21:45:46-08:00</updated>
   <id>http://fsk141.com/pogoplug</id>
   <content type="html">&lt;p&gt;Well I took all the pictures for the pogoplug, and took a ton of screenshots of the web interface. Well about an hour into my unboxing I’ve rooted the device, changed the password, checked out the CPU spec, and am planning on oh so much more. I’ve been looking for a new hub to access my home network from far far away. Pogoplug you have been chosen for this task, do you accept? hehe. Anywho it’s a basic linux distro based off ARM9:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;-bash-3.2# cat /proc/cpuinfo 
Processor       : ARM926EJ-S rev 1 (v5l)
BogoMIPS        : 1192.75
Features        : swp half thumb fastmult edsp 
CPU implementer : 0x56
CPU architecture: 5TE
CPU variant     : 0x2
CPU part        : 0x131
CPU revision    : 1
Cache type      : write-back
Cache clean     : cp15 c7 ops
Cache lockdown  : format C
Cache format    : Harvard
I size          : 16384
I assoc         : 4
I line length   : 32
I sets          : 128
D size          : 16384
D assoc         : 4
D line length   : 32
D sets          : 128

Hardware        : Feroceon-KW
Revision        : 0000
Serial          : 0000000000000000&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Man I love this device so much already. The throughput seems a little sluggish in comparison to my FailNAS (long story) But that is a X86_64 PC with opensolaris (ZFS) and it does an amazing job at storing all my files.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;For a preview the install was the simplest install of a network device that I’ve ever experienced. Followed by automatic encoding of my media files to allow for streaming via web/my motorola droid.&lt;/p&gt;

&lt;p&gt;I’ll post the review after having some time to play with the device. Hopefully I don’t brick it :)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>OpenVZ with Archlinux (back in business)</title>
   <link href="http://fsk141.com/openvz-with-archlinux-back-in-business" />
   <updated>2010-01-28T16:50:56-08:00</updated>
   <id>http://fsk141.com/openvz-with-archlinux-back-in-business</id>
   <content type="html">&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;Linux smsitraining 2.6.26.8-OVZ26-gogol.1 #1 SMP Thu Jan 28 15:49:59 PST 2010 x86_64 Intel(R) Xeon(R) CPU E5520 @ 2.27GHz GenuineIntel GNU/Linux&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Success! I&amp;#8217;ve been working all day on a working OpenVZ kernel on my dev machine. 2.6.18, 2.6.24, 2.6.18rhel5; all borked out on the machine (either mid compile, or crapped out at boot) Anywho I setup a PKGBUILD for 2.6.26 Gogol &amp;amp; made a few modifications, and BAM everything is golden.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve updated git &amp;amp; uploaded the package to AUR: &lt;a href="http://aur.archlinux.org/packages.php?ID=34116"&gt;http://aur.archlinux.org/packages.php?ID=34116&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;BTW, I just found out that an online friend of mine (Wonder) that is heavily involved in ArchLinux has created an Arch template for OpenVZ. Previous to this wonderful contribution OpenVZ has been without an Arch Linux template (that is updated), and it&amp;#8217;s been a real drag. You can find the template on the standard templates page:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://wiki.openvz.org/Download/template/precreated"&gt;http://wiki.openvz.org/Download/template/precreated&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>CLI Arduino | Recover from epic failure</title>
   <link href="http://fsk141.com/cli-arduino-recover-from-epic-failure" />
   <updated>2009-11-25T22:10:00-08:00</updated>
   <id>http://fsk141.com/cli-arduino-recover-from-epic-failure</id>
   <content type="html">&lt;p&gt;I finally got the command line arduino interface working, and just need to think of a way to package it up… It’s a program by Kimmo Kulovesi (&lt;a href="http://www.cs.helsinki.fi/u/kkuloves/"&gt;http://www.cs.helsinki.fi/u/kkuloves/&lt;/a&gt;). The thing is that it works, but it seems like a big hack :). It’s a giant shell script.&lt;/p&gt;

&lt;p&gt;If your interested in a pre-packaged release then take a look at the two files below. It should be a pretty straightforward drop in. I put both files in ~/.scripts &amp;amp; “alias ardmake=’~/.scripts/ardmake’ I also extracted Arduino 0017 into ~/ . I plan to refine the program (basically make my own program), and package everything up into a nifty little package. More to come soon.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://github.com/fsk141/scripts/blob/master/ardmake"&gt;http://github.com/fsk141/scripts/blob/master/ardmake&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://github.com/fsk141/scripts/blob/master/dtr"&gt;http://github.com/fsk141/scripts/blob/master/dtr&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I was editing my /etc/rc.sysinit recently and epically borked it. Good thing I made a backup :) Anyway it’s almost too easy to recover from epic non-boot failure.&lt;/p&gt;

&lt;p&gt;1) Boot grub &amp;amp; hit ‘e’ (to edit)&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Add S (or the full word Single) to the end of your kernel line&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Hit enter then ‘b’ (to boot your edited entry&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2) You will be dropped into single user mode (after you type your root password)&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;‘mount -o remount,rw /’ (to mount / with read/write permissions)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;fix what you broke, and reboot…&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Allow Normal Users to Use Serial Port (USB Serial)</title>
   <link href="http://fsk141.com/allow-normal-users-to-use-serial-port-usb-serial" />
   <updated>2009-11-24T15:40:13-08:00</updated>
   <id>http://fsk141.com/allow-normal-users-to-use-serial-port-usb-serial</id>
   <content type="html">&lt;p&gt;OMG: &lt;a href="http://www.sparkfun.com/commerce/news.php?id=305"&gt;http://www.sparkfun.com/commerce/news.php?id=305&lt;/a&gt; « Can’t wait for Free Day, it’s going to be epic.
Anywho, that’s gotten me excited, and I pulled out my Arduino, to continue reading ‘Getting Started With Arduino’ I’m working along, and went to start up the ‘Arduino 0017’, and my serial port didn’t work. Well I tried it via sudo, and it worked. So at first I added sudo to the ‘/usr/bin/arduino’ executable. Yet this was very hackish, so I went looking for the solution.&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;gpasswd -a fsk141 uucp&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Where ‘fsk141’ == your username… This will add you to the uucp group, where you can enjoy serial access. Woot!&lt;/p&gt;

&lt;p&gt;Now I’m looking at how to ditch the Arduino IDE, and compile manually. It has something to do with a makefile, but I haven’t gotten it to work yet… Updates to follow one I get CLI upload to the Arduino&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://wiki.archlinux.org/index.php/Arduino"&gt;http://wiki.archlinux.org/index.php/Arduino&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Static IP OpenSolaris</title>
   <link href="http://fsk141.com/static-ip-opensolaris" />
   <updated>2009-11-23T21:16:41-08:00</updated>
   <id>http://fsk141.com/static-ip-opensolaris</id>
   <content type="html">&lt;p&gt;Setting a static IP in OpenSolaris is similar to Linux, but yet again; differences arise…&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;vi /etc/resolve.conf (make sure dns is correct [nameserver 10.0.0.1]
vi /etc/nwam/llp [change 'gani0 dhcp' to 'gani0 static 10.0.0.100' where gani0 is your interface, and 10.0.0.100 is the ip address you would like to assign]
# restart network
vi /etc/defaultrouter (add your router '10.0.0.1')
svcadm enable svc:/network/physical:default
svcadm restart svc:/network/physical:nwam&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This is a quickie but a goodie…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;_Resources: _&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;[http://briancline.org/read/file_server&lt;em&gt;3_tweaking_opensolaris](http://briancline.org/read/file_server&lt;/em&gt;3_tweaking_opensolaris)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Install VirtualBox in OpenSolaris</title>
   <link href="http://fsk141.com/install-virtualbox-in-opensolaris" />
   <updated>2009-11-23T11:03:47-08:00</updated>
   <id>http://fsk141.com/install-virtualbox-in-opensolaris</id>
   <content type="html">&lt;p&gt;Virtualbox is awesome, and I think I might go with an all inclusive OpenSolaris server in the future. One that runs zfs, and all my NFS storage needs, but also has virtual machines for the other servers that I would like to run.&lt;/p&gt;

&lt;p&gt;Here is how to install VirtualBox on Opensolaris:&lt;/p&gt;

&lt;p&gt;Get the latest version from here: &lt;a href="http://www.virtualbox.org/wiki/Downloads"&gt;http://www.virtualbox.org/wiki/Downloads&lt;/a&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;wget http://download.virtualbox.org/virtualbox/3.0.12/VirtualBox-3.0.12-54655-SunOS.tar.gz
tar -xzf VirtualBox-3.0.12-54655-SunOS.tar.gz
pkgadd -d VirtualBoxKern-3.0.12-54655.pkg&amp;lt;/pre&amp;gt;
pkgadd -d VirtualBox-3.0.12-54655.pkg&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Gani Network Driver</title>
   <link href="http://fsk141.com/gani-network-driver" />
   <updated>2009-11-22T02:57:36-08:00</updated>
   <id>http://fsk141.com/gani-network-driver</id>
   <content type="html">&lt;p&gt;Earlier today I came across a giant snag with my new NAS. After about 3GB of network throughput (under high load), the network stack would quit, and meh…
So I went to my trusty friend Google (how did people ever live without this), and ended up finding out that Masayuki Murayama’s ‘gani’ driver works great, and have had my network at heavy load for the past 6 or so hours with no problems what-so-ever… &lt;/p&gt;

&lt;p&gt;You can get all his drivers here: &lt;a href="http://homepage2.nifty.com/mrym3/taiyodo/eng/"&gt;http://homepage2.nifty.com/mrym3/taiyodo/eng/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a valuable link, I have used his drivers before for my first board in this ever stressful NAS setup. Anywho the install was very straightforward (make, make install, reboot), and everything is working wonderfully ever since.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>ZFS Dedup | OpenSolaris repos | beadm</title>
   <link href="http://fsk141.com/zfs-dedup-opensolaris-repos-beadm" />
   <updated>2009-11-22T02:48:12-08:00</updated>
   <id>http://fsk141.com/zfs-dedup-opensolaris-repos-beadm</id>
   <content type="html">&lt;p&gt;DEDUP IS AMAZING. Can’t wait to try it out, but I’m waiting for my system to upgrade from the dev repository, err, I might just hold off cause it’s taking forever. Maybe I’ll play with it in a VM, instead of my Home NAS :*
Anywho please read up on it here: &lt;a href="http://blogs.sun.com/bonwick/entry/zfs_dedup"&gt;http://blogs.sun.com/bonwick/entry/zfs_dedup&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s an amazing technology, and I’m super happy that it’s finally out.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Just in case you want to upgrade 111b to 127, or just have the most up to date packages try the following:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;pkg set-publisher -O http://pkg.opensolaris.org/dev &amp;quot;opensolaris.dev&amp;quot;
pkg set-publisher -P opensolaris.dev&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Now when you look at your repos, dev is default or ‘preferred’&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;fsk141@TrayNAS:/mnt$ pkg publisher
PUBLISHER                             TYPE     STATUS   URI
opensolaris.dev          (preferred)  origin   online   http://pkg.opensolaris.org/dev/
opensolaris.org                       origin   online   http://pkg.opensolaris.org/release/&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;hr /&gt;

&lt;h2 id="as-i-work-with-opensolaris-i-am-continually-amazed-and-pissed-off-at-the-same-time-where-some-things-are-insanely-simple-and-straightforward-other-things-are-tedious-and-hard-because-of-my-linux-background-another-thing-that-i-am-letdown-is-the-lack-of-community-like-arch-linux-there-is-a-very-large-opensolaris-community-but-not-in-the-sense-of-packages-and-a-lot-is-left-to-you-as-in-manually-compile"&gt;As I work with OpenSolaris I am continually amazed, and pissed off at the same time. Where some things are insanely simple and straightforward. Other things are tedious, and hard because of my Linux background. Another thing that I am letdown is the lack of community like Arch Linux. There is a very large OpenSolaris community, but not in the sense of packages, and a lot is left to you (as in manually compile)&lt;/h2&gt;

&lt;p&gt;One of the difficult concepts to grasp is the boot environment concept. It’s kinda like a snapshot of sorts for your boot environment. Since OpenSolaris isn’t a rolling distro like Arch Linux, there are different revisions. Well instead of forcing some difficult reinstall you can simply ‘pkg image-update’ and upon your next reboot you have your new environment. You also have the ability to easily revert.&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;fsk141@TrayNAS:/mnt$ beadm list
BE             Active Mountpoint Space   Policy Created
--             ------ ---------- -----   ------ -------
TrayNAS_Nov_21 -      -          304.15M static 2009-11-21 15:53
opensolaris    -      -          7.57M   static 2009-10-16 08:19
opensolaris-1  NR     /          3.62G   static 2009-11-22 01:44

fsk141@TrayNAS:/mnt$ beadm destroy TrayNAS_Nov_21
Are you sure you want to destroy TrayNAS_Nov_21? This action cannot be undone(y/[n]): y&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;beadm is a great tool to modify your BE, and I love the simplicity in the BE scheme.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Speed up Open Solaris Boot (Fix Slow Boot)</title>
   <link href="http://fsk141.com/speed-up-open-solaris-boot-fix-slow-boot" />
   <updated>2009-11-22T02:00:30-08:00</updated>
   <id>http://fsk141.com/speed-up-open-solaris-boot-fix-slow-boot</id>
   <content type="html">&lt;p&gt;It’s so annoying to wait 5+ minutes for Open Solaris to boot. Come to find out it’s because of the stupid graphical boot on startup. Damn gui’ness&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) Fix Grub menu.lst&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Edit /rpool/boot/grub/menu.lst&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Comment the following&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;splashimage
foreground
background&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;Remove ‘console=graphics’ from the ‘kernel’ line&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You should end up with something like this:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;splashimage /boot/grub/splash.xpm.gz
background 215ECA
timeout 30
default 2
#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title OpenSolaris 2009.06
findroot (pool_rpool,0,a)
bootfs rpool/ROOT/opensolaris
#splashimage /boot/solaris.xpm
#foreground d25f00
#background 115d93
#kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS,console=graphics
kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS
module$ /platform/i86pc/$ISADIR/boot_archive
#---------------------END BOOTADM--------------------
title TrayNAS_Nov_21
findroot (pool_rpool,0,a)
bootfs rpool/ROOT/TrayNAS_Nov_21
kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS
module$ /platform/i86pc/$ISADIR/boot_archive
#============ End of LIBBE entry =============
title opensolaris-1
findroot (pool_rpool,0,a)
bootfs rpool/ROOT/opensolaris-1
#splashimage /boot/solaris.xpm
#foreground d25f00
#background 115d93
#kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS,console=graphics
kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS
module$ /platform/i86pc/$ISADIR/boot_archive
#============ End of LIBBE entry =============&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Resources:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.codestrom.com/wandering/2009/02/opensolaris-slow.html"&gt;http://www.codestrom.com/wandering/2009/02/opensolaris-slow.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>ZFS Pool (Setup &amp; Configure)</title>
   <link href="http://fsk141.com/zfs-pool-setup-configure" />
   <updated>2009-11-21T16:04:11-08:00</updated>
   <id>http://fsk141.com/zfs-pool-setup-configure</id>
   <content type="html">&lt;p&gt;ZFS is the best option for a NAS system. It makes for a super simple home NAS, and does away with a lot of config hassles. This is due to the fact that a lot of core services are built into zfs, or into the zfs stack rather. To setup any “extra” of zfs, all you need is a one line zfs command. &lt;code&gt;(zfs set sharenfs=on &amp;lt;pool&amp;gt; == instant nfs share)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;1) Create the Pool&lt;/p&gt;

&lt;p&gt;We need to fetch the disk ID’s (the number after the disk number)&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;format &amp;lt; /dev/null&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;So if we run that command I can pull out (c8d0 c8d1 c9d0 c9d1) as shown below:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;root@TrayNAS:~# format &amp;lt; /dev/null

Searching for disks...done

AVAILABLE DISK SELECTIONS:
0. c7d0 &amp;amp;amp;lt;DEFAULT cyl 3904 alt 2 hd 128 sec 32&amp;amp;amp;gt;
/pci@0,0/pci-ide@1f,1/ide@0/cmdk@0,0
1. c8d0 &amp;amp;amp;lt;DEFAULT cyl 60797 alt 2 hd 255 sec 252&amp;amp;amp;gt;
/pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0
2. c8d1 &amp;amp;amp;lt;DEFAULT cyl 60798 alt 2 hd 255 sec 189&amp;amp;amp;gt;
/pci@0,0/pci-ide@1f,2/ide@0/cmdk@1,0
3. c9d0 &amp;amp;amp;lt;DEFAULT cyl 60798 alt 2 hd 255 sec 189&amp;amp;amp;gt;
/pci@0,0/pci-ide@1f,2/ide@1/cmdk@0,0
4. c9d1 &amp;amp;amp;lt;DEFAULT cyl 60798 alt 2 hd 255 sec 189&amp;amp;amp;gt;
/pci@0,0/pci-ide@1f,2/ide@1/cmdk@1,0
Specify disk (enter its number):&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Take the extracted disk ID’s (c8d0 c8d1 c9d0 c9d1) and apply them to the next command. Edit accordingly depending on what pool type you would like. (mirror, raidz1, raidz2)&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;zpool create -f ambry raidz1 c8d0 c8d1 c9d0 c9d1&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;I had to use -f because I have 3x 1.5TB drives, and one 2TB drive…&lt;/p&gt;

&lt;p&gt;Now that we have the pool created, lets marvel at what we accomplished:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;root@TrayNAS:~# zpool list ambry
NAME    SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
ambry  5.44T   137K  5.44T     0%  ONLINE  -
root@TrayNAS:~# zfs list ambry
NAME    USED  AVAIL  REFER  MOUNTPOINT
ambry  95.8K  4.00T  28.4K  /ambry&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;The difference in size is just one of those little quirks (zpool == raw disks, zfs == real space)&lt;/p&gt;

&lt;p&gt;Another check just to make sure were all good, and using raidz1 (1 parity disk)&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;root@TrayNAS:~# zpool status ambry
  pool: ambry
 state: ONLINE
 scrub: none requested
config:

	NAME        STATE     READ WRITE CKSUM
	ambry       ONLINE       0     0     0
	  raidz1    ONLINE       0     0     0
	    c8d0    ONLINE       0     0     0
	    c8d1    ONLINE       0     0     0
	    c9d0    ONLINE       0     0     0
	    c9d1    ONLINE       0     0     0

errors: No known data errors&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Everything looks good, lets setup some filesystems, sharing, compression, and copy over our data…&lt;/p&gt;

&lt;p&gt;For the rest of the write up, I’ll just output the commands I used to create my environment:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;root@TrayNAS:~# zfs create ambry/Media
root@TrayNAS:~# zfs create ambry/Downloads
root@TrayNAS:~# zfs list | grep ambry
ambry                       176K  4.00T  31.4K  /ambry
ambry/Downloads            28.4K  4.00T  28.4K  /ambry/Downloads
ambry/Media                28.4K  4.00T  28.4K  /ambry/Media
root@TrayNAS:~# zfs get all ambry
NAME   PROPERTY              VALUE                  SOURCE
ambry  type                  filesystem             -
ambry  creation              Sat Nov 21 12:48 2009  -
ambry  used                  176K                   -
ambry  available             4.00T                  -
ambry  referenced            31.4K                  -
ambry  compressratio         1.00x                  -
ambry  mounted               yes                    -
ambry  quota                 none                   default
ambry  reservation           none                   default
ambry  recordsize            128K                   default
ambry  mountpoint            /ambry                 default
ambry  sharenfs              off                    default
ambry  checksum              on                     default
ambry  compression           off                    default
ambry  atime                 on                     default
ambry  devices               on                     default
ambry  exec                  on                     default
ambry  setuid                on                     default
ambry  readonly              off                    default
ambry  zoned                 off                    default
ambry  snapdir               hidden                 default
ambry  aclmode               groupmask              default
ambry  aclinherit            restricted             default
ambry  canmount              on                     default
ambry  shareiscsi            off                    default
ambry  xattr                 on                     default
ambry  copies                1                      default
ambry  version               3                      -
ambry  utf8only              off                    -
ambry  normalization         none                   -
ambry  casesensitivity       sensitive              -
ambry  vscan                 off                    default
ambry  nbmand                off                    default
ambry  sharesmb              off                    default
ambry  refquota              none                   default
ambry  refreservation        none                   default
ambry  primarycache          all                    default
ambry  secondarycache        all                    default
ambry  usedbysnapshots       0                      -
ambry  usedbydataset         31.4K                  -
ambry  usedbychildren        144K                   -
ambry  usedbyrefreservation  0                      -&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;I just created two filesystems to store my data, and then listed the zfs attributes available to me. I would like to take advantage of a few attributes, namely (compression, nfs, snapshots)&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;root@TrayNAS:~# zfs set sharenfs=rw,anon=0 ambry #allows root access from all hosts
root@TrayNAS:/# zfs set compression=on ambry/Media
root@TrayNAS:/# zfs set compression=on ambry/Downloads
^^^ I could set compression on for the whole ambry device, but want a little more fine grained control. ^^^
mkdir -p /old_ambry/Media
mkdir /old_ambry/Downloads
mount 10.0.0.100:/ambry/Media /old_ambry/Media
mount 10.0.0.100:/ambry/Downloads /old_ambry/Downloads
--- copied all my date over ---&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;I set compression on before moving data since it doesn’t activate recursively. Also I could have used zfs cloning, yet I have no need for my previous snapshots, so it’s not necessary…&lt;/p&gt;

&lt;p&gt;More to come soon, but at this point you should be able to have a fully functioning NAS, with nfs. Enjoy&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>NTP Open Solaris (Setup &amp; Configure)</title>
   <link href="http://fsk141.com/ntp-open-solaris-setup-configure" />
   <updated>2009-11-21T12:31:57-08:00</updated>
   <id>http://fsk141.com/ntp-open-solaris-setup-configure</id>
   <content type="html">&lt;p&gt;NTP is awesome, it’s been around forever, and it’s one of the first things I setup on any new machine. This is an especially important service for a NAS device, since sync times are crucial, and there are many important services that are time dependent (snapshots for example).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) Set the Time&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;ntpdate 0.pool.ntp.org&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;— Output —&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;root@TrayNAS:/etc/inet# ntpdate 0.pool.ntp.org
21 Nov 12:21:19 ntpdate[1296]: adjust time server 66.96.96.29 offset -0.000521 sec&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;2) Configure&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;cp /etc/inet/ntp.server /etc/inet/ntp.conf
echo &amp;quot;server 0.pool.ntp.orgnserver 1.pool.ntp.orgnserver 2.pool.ntp.org&amp;quot; &amp;gt;&amp;gt; /etc/inet/ntp.conf
svcadm enable ntp
svcs ntp&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;— Output —&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;root@TrayNAS:/etc/inet# svcs ntp
STATE          STIME    FMRI
online         12:12:57 svc:/network/ntp:default&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Woot, time is setup. Enjoy synchronized time…&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.itwiki.se/OpenSolaris/ntpd"&gt;http://www.itwiki.se/OpenSolaris/ntpd&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Project Euler Problem 1</title>
   <link href="http://fsk141.com/project-euler-problem-1" />
   <updated>2009-10-24T18:15:57-07:00</updated>
   <id>http://fsk141.com/project-euler-problem-1</id>
   <content type="html">&lt;p&gt;Just found a wonderful place to help me grow in programming, and learn some sweet math problems at the same time. That place is called Project Euler (&lt;a href="http://http://www.projecteuler.net"&gt;http://www.projecteuler.net&lt;/a&gt;) named after &lt;a href="http://en.wikipedia.org/wiki/Leonhard_Euler"&gt;Leonhard Paul Euler&lt;/a&gt;. There is more information on the &lt;a href="http://http://projecteuler.net/index.php?section=about"&gt;about&lt;/a&gt; page of the website.&lt;/p&gt;

&lt;p&gt;After much struggle with GNU Octave I got the problem working, and also wrote a c++ version. I tried for about 2 hours to get the octave version working. mod() != % for modulo :(. This tripped me up, but everything works, and the solution program is below.&lt;/p&gt;

&lt;p&gt;C++ Solution:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="c"&gt;// Project Euler - P1

#include &amp;lt;iostream&amp;gt;

using namespace std;

int main () {

int i=0;
int t=0;

for ( i=0; i &amp;lt; 1000; i++ ) {
	if ( i % 3 == 0 || i % 5 == 0 )
		t += i;
}

cout &amp;lt;&amp;lt; t;

}

// 233168&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Octave Solution:&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;# Project Euler - P1

i=0;
t=0;

for i=1:999
	if ( mod(i, 3) == 0 || mod(i, 5) == 0 )
		t += i
	endif
endfor

#233168&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Octave is an awesome language to program in for math specific operations. It will take a little getting used to, but I believe it’s fully compatible with matlab, so it will be a nice addition to my repertoire.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>flickr manager 2.8</title>
   <link href="http://fsk141.com/flickr-manager-2-8" />
   <updated>2009-10-15T02:45:59-07:00</updated>
   <id>http://fsk141.com/flickr-manager-2-8</id>
   <content type="html">&lt;p&gt;&lt;strong&gt;Download here:&lt;/strong&gt; &lt;a href="http://http://www.fwaggle.org/downloads/wordpress-flickr-manager.zip"&gt;http://www.fwaggle.org/downloads/wordpress-flickr-manager.zip&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;http://www.seoishard.com/seo-tool/flickr+manager+2.8 « this is a piece of crap…&lt;/p&gt;

&lt;p&gt;At the end of my post I mentioned that I thought seo is hard’s flickr manager fix was inserting links into my posts, well I was right. So I started tracking down the little “fixes” they did. I found them, and then went looking for other people with the problem. Well I found a post in the wordpress forums:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://wordpress.org/support/topic/281990"&gt;http://wordpress.org/support/topic/281990&lt;/a&gt; (go down to fwaggle)&lt;/p&gt;

&lt;p&gt;Then I went to his site: &lt;a href="http://www.fwaggle.org/blog/internet/update-wordpress-plugins-profit"&gt;http://www.fwaggle.org/blog/internet/update-wordpress-plugins-profit&lt;/a&gt; and grabbed the clean version.
I’m going to try my SEO skills and try and knock seoishard people out of the top spot on google, so that people can get the clean version, and not their dirty piece of garbage.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Thanks to fwaggle for the uber clean/fixed version!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Flickr with Linux</title>
   <link href="http://fsk141.com/flickr-in-linux" />
   <updated>2009-10-15T02:23:01-07:00</updated>
   <id>http://fsk141.com/flickr-in-linux</id>
   <content type="html">&lt;p&gt;&lt;img src="http://l.yimg.com/g/images/en-us/flickr-yahoo-logo.png" alt="flickr" /&gt;&lt;/p&gt;

&lt;p&gt;Flickr is the best. All it takes is $24 a year, and you can back up all the images you want, and you get a nifty web interface too. The wonderful thing about flickr is that they provide an API so that a bunch of talented programmers can make interfaces that work well with flickr. Many people have taken advantage of the API, and have made some excellent programs. The problem being is that it’s difficult to find great programs. Ones that aren’t glitch prone, out-dated, or just plain useless. I’ve gone on a gigantus search for the creme-de-le-creme, and here are my results.&lt;/p&gt;

&lt;p&gt;Lets start out with the &lt;em&gt;&lt;strong&gt;Flickr Web Uploader&lt;/strong&gt;&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;Access the uploader here: &lt;a href="http://www.flickr.com/photos/upload"&gt;http://www.flickr.com/photos/upload&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To upload photos it’s a simple 2 - 3 step process depending if you would like to add a description/tags to your uploaded photos.&lt;/p&gt;

&lt;p&gt;**Step 1 (Select photos): **&lt;/p&gt;

&lt;p&gt;My image capture program kinda crapped out, but you get the idea. Click the large black box, and multi-select the files you would like to upload.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/4013735212/"&gt;&lt;img src="http://farm3.static.flickr.com/2428/4013735212_911da539f1.jpg" alt="Flickr_Upload" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2 (Verify files &amp;amp; upload):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s pleasant that there is a verification page so you can add/remove files at your leisure.&lt;/p&gt;

&lt;p&gt;[&lt;img src="http://www.flickr.com/photos/68444690@N00/4012968853/" alt="Flickr_Upload_2](http://farm4.static.flickr.com/3496/4012968853_391bdf004d.jpg)" /&gt;&lt;/p&gt;

&lt;p&gt;**Step 3 Finished (Add more info by clicking “add a description”):
**&lt;/p&gt;

&lt;p&gt;[&lt;img src="http://www.flickr.com/photos/68444690@N00/4013736984/" alt="Flickr_Upload_3](http://farm3.static.flickr.com/2518/4013736984_3a092c04bb.jpg)" /&gt;&lt;/p&gt;

&lt;p&gt;Pros:
*	It’s very simple, and works as advertised.
*	Multi-Select is a bonus
*	Has nice looking effects
Cons:
*	Bogs down web browser substantially when uploading
*	Couple minor visual glitches on my system&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Flickr web uploader features a hassle free approach to uploading your photos, and requires no setup, or install of anything. I use the web uploader all the time, and just hate that it pretty much prevents me from browsing the web when I’m uploading files. The uploaded definitely cripples my web browsing experience, and that’s annoying…&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Lets move onto something more dedicated… &lt;a href="http://code.google.com/p/dfo/"&gt;Desktop-Flickr-Organizer&lt;/a&gt; (aka dfo)&lt;/p&gt;

&lt;p&gt;If you are an Arch Linux user, then go and grab my &lt;a href="http://aur.archlinux.org/packages.php?ID=12069"&gt;PKGBUILD&lt;/a&gt; in the &lt;a href="http://aur.archlinux.org/"&gt;AUR&lt;/a&gt; here: &lt;a href="http://aur.archlinux.org/packages.php?ID=12069"&gt;http://aur.archlinux.org/packages.php?ID=12069&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If not, then look into your local package repositories for dfo.&lt;/p&gt;

&lt;p&gt;After you install go ahead and click Flickr &amp;gt; Connect&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/4013766386/"&gt;&lt;img src="http://farm3.static.flickr.com/2500/4013766386_df9584f437_o.jpg" alt="Flickr-Connect" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will go and grab all your photos, and import them into dfo. Once everything is imported, your sets will show up. At this point it’s a snap to add new sets, upload photos, and download photos. It’s just a matter of clicking the right buttons. And there aren’t that many buttons, so it is difficult to screw up.&lt;/p&gt;

&lt;p&gt;I would upload some pictures, but the program is uber buggy, and all I can do right now is build my image database. Hopefully I can do other things when that’s done.&lt;/p&gt;

&lt;p&gt;Pros:
*	Clean UI
*	Speedily Grabs Pictures&lt;/p&gt;

&lt;p&gt;Cons:
*	Uber buggy
*	No longer Maintained (or at least it seems that way)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DFO would be a great app if it wasn’t one of the buggier programs in my selection. The developer of &lt;a href="http://http://manishrjain.googlepages.com/flickrfs"&gt;flickrfs&lt;/a&gt; built &amp;amp; maintains dfo, and it seems like both projects had a wonderful start, and then they both dropped off the deep end. No longer to be updated, or work without epic bugs.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Another wonderful program called &lt;em&gt;&lt;strong&gt;flickrtouchr&lt;/strong&gt;&lt;/em&gt; written by &lt;a href="http://www.stdlib.net/~colmmacc/"&gt;Colm MacCárthaigh&lt;/a&gt; is dedicated to downloading your flickr photos/sets/everything. His version was made to sync with an ipod touch. Yet I found a version that downloads the whole images, and was pretty close to what I needed out of the box. I found it &lt;a href="http://hivelogic.com/articles/backing-up-flickr/"&gt;here&lt;/a&gt; on &lt;a href="http://hivelogic.com/about"&gt;Dan Benjamin’s&lt;/a&gt; site and modified a couple things so that it works better :)&lt;/p&gt;

&lt;p&gt;You can download my version via github here: &lt;a href="http://github.com/fsk141/fsk141-flickrtouchr"&gt;http://github.com/fsk141/fsk141-flickrtouchr&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[fsk141@Scribbly ~/fsk141-flickrtouchr]$ ls
README  bak  flickrtouchr.py
[fsk141@Scribbly ~/fsk141-flickrtouchr]$ ./flickrtouchr.py bak
./flickrtouchr.py:27: DeprecationWarning: the md5 module is deprecated; use hashlib instead
import md5
Download Mode (1=Collection, 2=Set, 3=All): 3
Flickr_Upload ... in set ... 2009-Flickr_Linux
Flickr_Upload_2 ... in set ... 2009-Flickr_Linux
Flickr_Upload_3 ... in set ... 2009-Flickr_Linux
Flickr-Connect ... in set ... 2009-Flickr_Linux
...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Pros:
*	Simple CLI
*	Fast
*	No frills awesomeness
Cons:
*	Not perfect code, but pretty darn close (could use improvements)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I love this program for downloading off flickr. It’s one of the simplest programs to use. Other than the couple of modification I made, it suits my needs very well for downloading.&lt;/p&gt;

&lt;p&gt;I’m still on the lookout for programs that aren’t as buggy as dfo, and do what I need. I’m planning on trying flickcurl, frupple, and frogr. I’ll write up any interesting features that I find when I find them.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;On a side note, I think http://www.seoishard.com/seo-tool/flickr+manager+2.8 « is a scam. I believe that it’s entering hidden links in my website when I add flickr images. I’m going to look for little bugs in the code. It epically blows, cause I know a lot of people prolly use this plugin because it “works.” Well not only does it work, but it’s scamming all over the internet. eh&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>In-N-Out NAS update</title>
   <link href="http://fsk141.com/in-n-out-nas-update" />
   <updated>2009-10-14T13:15:42-07:00</updated>
   <id>http://fsk141.com/in-n-out-nas-update</id>
   <content type="html">&lt;p&gt;So I’m ditching the Via board that I purchased for the In-N-Out NAS, and opting for a nice 64 bit board (&lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16813121373"&gt;Intel DG41RQ&lt;/a&gt;). This sucks since I have to dump another couple hundred into the new board/cpu/ram/psu. Eh… Anywho this is kinda cool, cause now I have an extra board that I think I’ll use to mod a few speakers I have into a media center for when I go out to the desert. Well I’m going to go buy the new hardware, and hopefully whip the working system up within the next couple days.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>The quest for the perfect panel</title>
   <link href="http://fsk141.com/the-quest-for-the-perfect-panel" />
   <updated>2009-10-09T01:14:26-07:00</updated>
   <id>http://fsk141.com/the-quest-for-the-perfect-panel</id>
   <content type="html">&lt;p&gt;Pics to follow on the next post (this is a quickie).  I’m in search for a panel for my openbox desktop. I’m used to the dwm top bar, and wish I could have something simple like that, but haven’t found anything yet. As of now I’ve tried all the popular panels (xfce4-panel, gnome-panel, tint2, pypanel, fspanel, bmpanel) and I’ve liked tint2 (what I’m using now), and xfce4-panel was alright. I think I might try bmpanel again. This is all foreign to me, since dwm has been my only WM for a long time. The only reason I’m moving to something else is because I have a tablet PC, and I need a little mouse support. Also it’s a major bummer that &lt;a href="http://risujin.org/cellwriter/"&gt;Cell Writer&lt;/a&gt; doesn’t work with dwm. Meh…&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3994445977/"&gt;&lt;img src="http://farm3.static.flickr.com/2430/3994445977_f5d0b35db9.jpg" alt="tint2 panel" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;^ tint2 panel ^&lt;/p&gt;

&lt;p&gt;On a side note openbox sucks, well unless you configure it. And I’ve configured it a little, but I would like it to emulate dwm, with Ctrl-Alt-Shift (Move Windows), and a few other dwm specific things.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I’m using pytyle to get the whole tiling wm’ish feel, but it’s not anything like the real thing. I really miss dwm, and am pissed that I bought this Lenovo X200 Tablet, and am having issues finding a good WM for it :(&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Teach mpd a lesson about stealing your CPU cycles</title>
   <link href="http://fsk141.com/teach-mpd-a-lesson-about-stealing-your-cpu-cycles" />
   <updated>2009-10-07T03:03:15-07:00</updated>
   <id>http://fsk141.com/teach-mpd-a-lesson-about-stealing-your-cpu-cycles</id>
   <content type="html">&lt;p&gt;MPD by default is setup to use whatever it can output to (audio wise), even though such sources might be very inefficient. I was noticing that mpd was using upwards of 30% of my dual core CPU, and it got me to googling for an answer. Well after reading up on mpd configuration tweaks: &lt;a href="http://mpd.wikia.com/wiki/Tuning"&gt;http://mpd.wikia.com/wiki/Tuning&lt;/a&gt; I got my configuration file to use alsa, and now I’m seeing 1-3% cpu usage from mpd most the time it’s off the radar completely.&lt;/p&gt;

&lt;p&gt;I’ve posted my whole mpd.conf below, yet the information I modified was the ‘audio_output bit.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# See the mpd.conf man page for a more detailed description of each parameter.

music_directory         "~/music"
#playlist_directory "/var/lib/mpd/playlists"
db_file "~/.mpd/mpd.db"
log_file "~/.mpd/mpd.log"
pid_file "~/.mpd/mpd.pid"
state_file "~/.mpd/mpdstate"
#
user "fsk141"
#
audio_output {
type            "alsa"
name            "My ALSA Device"
#       auto_resampler "no"
#       format          "44100:16:2"    # optional
mixer_device    "default"       # optional
mixer_control   "Master"        # optional
#       mixer_index     "0"             # optional
options         "dev=dmixer"
device          "plug:dmix"

}
&lt;/code&gt;&lt;/pre&gt;

</content>
 </entry>
 
 <entry>
   <title>Image Organization | In-N-Out NAS</title>
   <link href="http://fsk141.com/image-organization-in-n-out-nas" />
   <updated>2009-10-06T03:14:41-07:00</updated>
   <id>http://fsk141.com/image-organization-in-n-out-nas</id>
   <content type="html">&lt;p&gt;It’s painful, but I’ve been meaning to get my images in good order for a long time now. Well I made a little script to rename all the JPG &amp;amp; AVI extensions to lower case, and remove the IMG_0 crap.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/bin/bash

mmv "*.JPG" "#1.jpg"
mmv "IMG_0*" "#1"

mmv "*.AVI" "#1.avi"
mmv "MVI_0*" "#1"

chmod 755 *
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;mmv is a powerful tool, and I’m using a very simple implementation of it. I’ve gotten all my images in order at the moment, and right now I’m pushing everything into Picasa 3.5 to get all the faces recognized. This is an excellent selling point of Picasa 3.5. It works pretty well, and my overall experience with Picasa has been excellent. Well I’m off to sleep for now, but an update is soon to come with my overall experience of Picasa.&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;The In-N-Out NAS is at a major standstill at the moment. I didn’t think a 32 bit system would be a problem when I purchased the VIA board. Yet I forgot about the “performance benefit” with ZFS &amp;amp; 64 bit. Well come to find out, 32 bit is restricted to 1TB or less. Anything higher is rejected with a nice little ‘f you for using 32 bit’ message in ‘/var/adm/messages’ In the mean time I’m trying to get a new motherboard, prolly core duo mini-itx intel board. The overall experience of this homebrew NAS has been an unsavory experience, yet it looks great, and once everything is worked out, I should have a wonderful NAS setup.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Dissapointments | In-N-Out NAS</title>
   <link href="http://fsk141.com/dissapointments-in-n-out-nas" />
   <updated>2009-10-05T01:47:43-07:00</updated>
   <id>http://fsk141.com/dissapointments-in-n-out-nas</id>
   <content type="html">&lt;p&gt;I was very letdown with the latest &lt;a href="http://www.freenas.org"&gt;FreeNAS&lt;/a&gt; RC1 &amp;amp; RC2. I was hoping the ZFS would be usable, and all the services (ssh, ftp, nfs) would happily work. Well that wasn’t the case. I was planning on using FreeNAS for my latest project the In-N-Out NAS. More on that after my FreeNAS rant… So before all this started I tested out FreeNAS a few months ago to figure out if it was a viable alternative to my current OpenSolaris headless machine. Well it didn’t quite cut it because FreeNAS is has an uber old version of ZFS, and they don’t plan to upgrade until they migrate to 8.0 release of FreeBSD. Well I don’t feel like waiting that long, and everything is pretty sketchy so I’ll stay with the sure thing (OpenSolaris).&lt;/p&gt;

&lt;p&gt;Onto more pressing issues. I have been working hard on a new NAS box for my network, and came up with a few designs, most of which were too complicated for me to build. So I came up with a simple box design made out of metal (pics once I finish). Well I’ve been busy, and haven’t gotten the metal bent yet, so I spent a few hours working on a working NAS setup so that I can move my data onto the new hardware. I decided to build the system from an In-N-Out tray that I “borrowed,” indefinitely. It turned out very awesome, yet I have ran into problem after problem with this little beast. First the Pico PSU that I purchased was borked, so I need to get another one of those. Then the standin PSU started overheating cause the fan wouldn’t go on. I threw that out, and replaced it with yet another PSU. Eh, then I was having FreeNAS install issues, and finally once it was installed, it works horribly. Plus I think I might have a sata cable problem, but I’m unsure as of now. I kinda just replaced all my nice 6” cables with “reliable” 12” standard red ones.&lt;/p&gt;

&lt;p&gt;My predicament at the moment is to go with a sure bet, and stick with OpenSolaris. Since ZFS reins supreme on Solaris, and it’s a solid OS. I had a power surge a few months back, and it reset all my wonderful uptimes, but my current OpenSolaris setup has been up for around 80 days, with no problems whatsoever. I’m downloading a new disk image as I type, and will prolly install it before I rest for the night.&lt;/p&gt;

&lt;p&gt;Anywho the software is always the most time consuming of any project, and I will expand on my final decision in the full writeup for the In-N-Out NAS.  Just to tease I’ve uploaded an image of a semi-finished In-N-Out NAS. I have a few more tweaks, and I have to get the Pico PSU all fixed up…&lt;/p&gt;

&lt;p&gt;&lt;img src="http://fsk141.com/uploads/2009/10/in_n_out_nas_preview-300x233.jpg" alt="in_n_out_nas_preview" /&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Habari on Lighttpd</title>
   <link href="http://fsk141.com/habari-on-lighttpd-setting-up-web-environment-new-laptop" />
   <updated>2009-09-09T00:46:46-07:00</updated>
   <id>http://fsk141.com/habari-on-lighttpd-setting-up-web-environment-new-laptop</id>
   <content type="html">&lt;p&gt;I’ve used apache for the longest time, and it has served me very well. I still use apache to host this site, and many other sites. Yet I’ve grown an itch to try something new, and have ventured to lighttpd. It’s painless to setup, and the config file is one of the simplest around. Anywho after I switched over I tried to setup habari and hit a little snag. Habari uses a .htaccess file with apache to take advantage of mod_rewrite. Well lighttpd doesn’t support .htaccess, or any other directory independent configs :). Anywho it’s simple enough to setup a rewrite in /etc/lighttpd/lighttpd.conf. Yet if you set the rewrite for the localhost, you are left with the habari site, and then anything else you want to develop has to mangle together. I wanted a simple solution that would allow me to run habari, yet not in the root of my web directory. Also I wanted ‘http://localhost’ to display my webroot contents (who needs an index file?)&lt;/p&gt;

&lt;p&gt;Step 1) Edit your /etc/hosts, and add another faux host besides localhost:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#
# /etc/hosts: static lookup table for host names
#

#      
127.0.0.1       localhost.localdomain   localhost Minifsk
127.0.0.1       fsk141.localdomain      localhost Minifsk
# End of file
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Step 2) Fire up your editor, and open /etc/lighttpd/lighttpd.conf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#uncomment "mod_rewrite" module

#add index.php to index file names
index-file.names = ( "index.php", "index.html",
                                "index.htm", "default.htm" )

#add a vhost
$HTTP["host"] =~ "^fsk141.localdomain$" {
  server.document-root = "/srv/http/Web/fsk141"
  url.rewrite-once =  (
        "^/(?!scripts/|3rdparty/|system/|doc/)(.*)$" =&amp;gt;  "/index.php"
  )
  server.errorlog = "/var/log/lighttpd/fsk141/error.log"
  accesslog.filename = "/var/log/lighttpd/fsk141/access.log"
}

#enable dir listing
dir-listing.activate       = "enable"

#uncomment fast-cgi stuf:
fastcgi.server             = ( ".php" =&amp;gt;
                               ( "localhost" =&amp;gt;
                                 (
                                   "socket" =&amp;gt; "/var/run/lighttpd/php-fastcgi.socket",
                                   "bin-path" =&amp;gt; "/usr/bin/php-cgi"
                                 )
                               )
                            )
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Save and Close!&lt;/p&gt;

&lt;p&gt;Now all you have to do is go through the standard habari install steps. As per the directory you setup as your vhost. for the example above I must put my habari files in ‘/srv/http/Web/fsk141’, and to start the install process I open ‘http://fsk141.localdomain’ Oh and btw the vhost includes the rewrite!!! Don’t forget about the rewrite rules otherwise habari will bork…&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>LISP (again), More links</title>
   <link href="http://fsk141.com/lisp-again-more-links-typing" />
   <updated>2009-07-28T09:03:59-07:00</updated>
   <id>http://fsk141.com/lisp-again-more-links-typing</id>
   <content type="html">&lt;p&gt;I’ve started up learning LISP once again. I’m going to start from the beginning of SICP (Structure and Interpretation of Computer Programming) I’ve gotten the introduction knocked out. If you would like to follow along check out my notes &lt;a href="http://files.getdropbox.com/u/52078/Notes/Notes.html#%5B%5BChapter%201%3A%20Building%20abstractions%20with%20Procedures%5D%5D"&gt;here&lt;/a&gt;. ATM I’m using &lt;a href="http://www.plt-scheme.org"&gt;DrScheme&lt;/a&gt;, but am looking for a simpler way of going about things…&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I’ve added more static links to my array. Over the past couple days I’ve been trying to get my computerspace organized, and in the process I’ve added a lot of content to my blog. I hope it wasn’t all for nothing, and that at least someone reads it :)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Take controll of your keyboard with xbindkeys</title>
   <link href="http://fsk141.com/take-controll-of-your-keyboard-with-xbindkeys" />
   <updated>2009-07-26T21:47:20-07:00</updated>
   <id>http://fsk141.com/take-controll-of-your-keyboard-with-xbindkeys</id>
   <content type="html">&lt;p&gt;For avid linux enthusiasts xbindkeys is the ideal program to master your keyboard and assign commands to key combinations. Desktops and laptops alike; xbindkeys helps you use those unmapped keys, and put them to good use. For example, when you install a fresh distro on your shiny new laptop… A lot of new laptops have a bunch of extra keys that don’t always work out of the box. Some Desktop environments such as kde and gnome have gui configuration utilities to help you out. But if your like me and use &lt;a href="http://dwm.suckless.org"&gt;dwm&lt;/a&gt; then gui tools aren’t really for you.&lt;/p&gt;

&lt;p&gt;To better understand Xbindkeys I’ll plot up my laptop scenario… I have an IBM X61 that has a few keys that don’t work quite how I would like them to work. These include my volume up &amp;amp; down, menu, page left &amp;amp; right.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3760101501"&gt;&lt;img src="http://farm3.static.flickr.com/2669/3760101501_10417216e1.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3760902270"&gt;&lt;img src="http://farm3.static.flickr.com/2528/3760902270_9aea90d87d.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There a couple ways that one can create an ~/.xbindkeysrc file. The manual and automatic way…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automatic: (Creates lot of comment flac :()&lt;/strong&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Download xbindkeys &amp;amp; xbindkeys_config for your distro (included in most distros these days)
2.&lt;/p&gt;

    &lt;p&gt;$touch ~/.xbindkeysrc&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;Click new at the bottom, add a name, get the key combo, and set the command.&lt;/li&gt;
  &lt;li&gt;Either hit File &amp;gt; Save, or Edit &amp;gt; View generated rc &amp;amp; copy to .xbindkeysrc
&lt;a href="http://www.flickr.com/photos/68444690@N00/3760233491"&gt;&lt;img src="http://farm3.static.flickr.com/2676/3760233491_6421669186.jpg" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Manual: (My choice)&lt;/strong&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;ol&gt;
  &lt;li&gt;Download xbindkeys&lt;/li&gt;
  &lt;li&gt;Fire up your editor of choice and make a new file in your /home/ directory named &lt;strong&gt;.xbindkeysrc&lt;/strong&gt; (Don’t forget the ‘.’ at the beginning)&lt;/li&gt;
  &lt;li&gt;Fire up a terminal and execute ‘xev’
&lt;a href="http://www.flickr.com/photos/68444690@N00/3760192351"&gt;&lt;img src="http://farm3.static.flickr.com/2438/3760192351_64d9a1786b.jpg" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;hr /&gt;

&lt;p&gt;xev is the only tool that I know that gives you all the information you need easily. Lets start with the Volume Down key, and add it to the ~/.xbindkeysrc file:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;KeyPress event, serial 27, synthetic NO, window 0xa00001,
root 0x10b, subw 0xa00002, time 192787373, (40,35), root:(41,51),
state 0x0, keycode 122 (keysym 0x1008ff11, XF86AudioLowerVolume), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This might look just like a jumble of letters and numbers, but it’s easy to find what we need and adapt it to a simple template for the config.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# Template

# Key/Action Label
"command"
m: state (aka modifier key) + keycode # (in our case m: 0x0)
keycode_name (optional in some cases, sometimes won't work without)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So if we add everything up we get something like the following:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#~/.xbindkeysrc

#Volume Down
"amixer set PCM 1+"
m:0x0 + c:122
XF86AudioRaiseVolume
&lt;/code&gt;&lt;/pre&gt;

&lt;ol&gt;
  &lt;li&gt;Finish by typing the other keys into xev, and add them to your ~/.xbindkeysrc&lt;/li&gt;
&lt;/ol&gt;

&lt;hr /&gt;

&lt;p&gt;If you would like to take a look at my X61 xbindkeysrc please check it out in my git backup &lt;a href="http://github.com/fsk141/dotfiles/blob/5b1e77b48983bd510a17fdc9b7002373ca6163cc/MiniFSK/.xbindkeysrc"&gt;On Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy Launching…&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Dotfiles, sort, for, idea!</title>
   <link href="http://fsk141.com/dotfiles-sort-for-idea" />
   <updated>2009-07-25T22:03:17-07:00</updated>
   <id>http://fsk141.com/dotfiles-sort-for-idea</id>
   <content type="html">&lt;p&gt;First, I would like to introduce a new link to the right (the hard links) labeled “Dotfiles” This will include all the dot configuration files for my misc computers.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I messed up a little bit with renaming some files and renamed some .avi files to .jpg. To sort the problem out I needed to figure out what the bigger files were to easily determine which were movies, and which were not. An easy way to achieve a size sort is this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;du -h * ## basic size of files in a directory
---
du -h * | sort -n  ## Size Ascending (Smallest to Largest)
---
du -h * | sort -n -r ## Size Descending (Largest to Smallest)

[fsk141@Minifsk ~/2009-Black_Mountain]$ du -h *
---
1.9M	210.jpg
6.2M	211.avi
16M	212.avi
15M	213.avi
3.4M	214.jpg
50M	215.avi
14M	216.avi
3.4M	217.jpg
2.2M	218.jpg
36M	219.avi
5.3M	220.avi

[fsk141@Minifsk ~/2009-Black_Mountain]$ du -h * | sort -n
---
5.0M	029.jpg
5.3M	220.avi
5.7M	209.avi
6.2M	211.avi
13M	208.avi
14M	216.avi
15M	213.avi
16M	212.avi
36M	219.avi
50M	215.avi
&lt;/code&gt;&lt;/pre&gt;

&lt;hr /&gt;

&lt;p&gt;I’ve been using for statements recently, and got some help from: &lt;a href="http://www.freeos.com/guides/lsst/ch03sec06.html"&gt;http://www.freeos.com/guides/lsst/ch03sec06.html&lt;/a&gt;. I might write a little statement writeup (for, while, if, etc) But in the meantime I would like to share a couple that came in handy with some renames &amp;amp; fixes.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;for i in 1 2 3 4
do mv $i.jpg $.avi
done
---
for ((  i = 0 ;  i &amp;lt; 20;  i++  ))
do mv $i.JPG $i.jpg
done
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I love ‘for’ and ‘if’ statements, and need to get more into my “programming” mindset, and not waste so much time typing repetitive tasks.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;IDEA!!!&lt;/p&gt;

&lt;p&gt;So I love flickr, and backup all my images to my flickr account. (I need to make more public, but most are private) And I’ve printed pictures from snapfish in the past, but it’s a little pain to upload to flickr and snapfish. So I’m thinking up a way to upload to both at the same time. I believe that both flickr and snapfish allow you to upload .zip files, yet I’m unsure if you can email them .zip archives and they will extract and everything for you? If that’s possible then I will probably write up a script that zips up a directory and sends it to the respectable services. I’ll post once I get something up.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>The Outdoorist | Angeles National Forest</title>
   <link href="http://fsk141.com/test" />
   <updated>2009-07-12T02:18:04-07:00</updated>
   <id>http://fsk141.com/test</id>
   <content type="html">&lt;p&gt;&lt;a href="http://www.theoutdoorist.com"&gt;The Outdoorist&lt;/a&gt; was born a couple days ago. My friend Christian and I went camping to Black Mountain and talked about how we have enough outdoor gear to review for a while. So we thought of a name on the drive back, and we’ve started up the site… I’m working on a review for Black Diamond Orbit. I will post here when it’s completed.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I plan on posting some pictures soon from my adventure. One thing I really wish I really had was a working GPS while I was hiking :(. I brought my car gps, and it started working once I got up really high. This is where I stopped (In the shade). I took a brake, noticed I ran out of water, and then marched right down the mountain. I didn’t want to get stuck without water. Check out where I ended up here:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://maps.google.com/maps?hl=en&amp;amp;q=n+34.62547+w118.76715&amp;amp;ie=UTF8&amp;amp;split=0&amp;amp;gl=us&amp;amp;ei=UqhZSr6zM6euiwPquY2zAg&amp;amp;t=h&amp;amp;source=embed&amp;amp;sll=34.633561,-118.762980&amp;amp;sspn=0.019953,0.027509&amp;amp;ll=34.633561,-118.76298&amp;amp;spn=0.024718,0.036478&amp;amp;z=14&amp;amp;iwloc=near"&gt;View Larger Map&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Featured on Arch Linux Newsletter :)</title>
   <link href="http://fsk141.com/featured-on-arch-linux-newsletter" />
   <updated>2009-05-11T02:38:13-07:00</updated>
   <id>http://fsk141.com/featured-on-arch-linux-newsletter</id>
   <content type="html">&lt;p&gt;Well this was unexpected, and quite entertaining… I ended up in the comedy section of the Newsletter:
&lt;a href="http://www.archlinux.org/static/newsletters/newsletter-2009-may.html"&gt;http://www.archlinux.org/static/newsletters/newsletter-2009-may.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anywho, I got a kick out of it, and just thought I should share.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;
louipc&amp;gt; tiddly eh?
fsk141&amp;gt; ya
fsk141&amp;gt; it seems like the best solution
fsk141&amp;gt; I compiled zim for os x, but it's a piece of crap
louipc&amp;gt; the website almost made me crap myself
fsk141&amp;gt; what site?
fsk141&amp;gt; tiddlywiki?
fsk141&amp;gt; good or bad way?
louipc&amp;gt; crapping pants is always bad isn't it?
fsk141&amp;gt; hehe
louipc&amp;gt; unless you're into that kind of thing haha
&lt;/code&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Tiddlywiki Syntax Highlighter</title>
   <link href="http://fsk141.com/tiddlywiki-syntax-highlighter" />
   <updated>2009-04-14T10:40:13-07:00</updated>
   <id>http://fsk141.com/tiddlywiki-syntax-highlighter</id>
   <content type="html">&lt;p&gt;Ohhh! Awww!
&lt;img src="http://syntaxhighlighter.googlecode.com/files/Overview01.png" alt="sh" /&gt;
The &lt;a href="http://www.tiddlywiki.com"&gt;tiddlywiki&lt;/a&gt; implementation of &lt;a href="http://code.google.com/p/syntaxhighlighter"&gt;syntaxhighlighter&lt;/a&gt; is crucial part of my note taking experience. I do a lot of note taking pertaining to code, and this makes it nice and pretty. I had some trouble finding the correct link to the plugin. The link on &lt;a href="http://tiddlywiki.org/wiki/Syntax_Highlighting"&gt;tiddlywiki.org/wiki/Syntax_Highlighting&lt;/a&gt; was broken, and since it was in japanese, I had difficulty searching the site for the section I needed. Anywho I stumbled across the &lt;a href="http://www.coolcode.cn/?action=show&amp;amp;id=310"&gt;correct link&lt;/a&gt; and fixed it in the tiddlywiki post on syntax highlighting. Well then why am I making this post? Well first off to give a little better install instruction, and a link to the plugin for easy of use ++ link back to original site.&lt;/p&gt;

&lt;h2 id="how-to-install"&gt;How to install&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Simple Way:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Navigate to your TiddlyWiki &amp;amp; click the backstage link at the upper right, followed by the import button. Paste the URL of my Notes into the URL box: “http://dl.getdropbox.com/u/52078/Notes/Notes.html” followed by the open button.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3441519793"&gt;&lt;img src="http://farm4.static.flickr.com/3413/3441519793_7561c8646e.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will be presented with a long list of tiddlers. You can proceed to scroll down to the bottom and check ‘StyleSheet’, ‘StyleSheetSyntaxHighlighter’ and ‘SyntaxHighlighterPlugin’ followed by the import button.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3441519823"&gt;&lt;img src="http://farm4.static.flickr.com/3364/3441519823_eeb002df61.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That should be it, enjoy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manual Way:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Download ‘syntaxhighlighterplugin.zip’ from:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.coolcode.cn/?action=show&amp;amp;id=310"&gt;http://www.coolcode.cn/?action=show&amp;amp;id=310&lt;/a&gt; (look for the link near the top of the page)&lt;/p&gt;

&lt;p&gt;or my mirror:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://dl.getdropbox.com/u/52078/syntaxhighlighterplugin.zip"&gt;http://dl.getdropbox.com/u/52078/syntaxhighlighterplugin.zip&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and extract…&lt;/p&gt;

&lt;p&gt;Click the New Tiddler link to the left, and Name the tiddler ‘StyleSheetSyntaxHighlighter’ Navigate to your unzipped archive and cut and paste the contents of ‘SyntaxHighlighter.css’ into your new tiddler.&lt;/p&gt;

&lt;p&gt;Navigate to the Shadow tiddler ‘StyleSheet’ and add [[StyleSheetSyntaxHighlighter]]&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3441569431"&gt;&lt;img src="http://farm4.static.flickr.com/3646/3441569431_e09d4b4100.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add another ‘New Tiddler’ named ‘SyntaxHighlighterPlugin’ and paste the contents of ‘shPlugin.js’ into this tiddler, then tag the tiddler with ‘systemConfig’&lt;/p&gt;

&lt;p&gt;Finish everything up by copying ‘clipboard.swf’ to the directory of your TiddlyWiki…&lt;/p&gt;

&lt;p&gt;Enjoy ;)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>My Wonderful Workspace</title>
   <link href="http://fsk141.com/my-wonderful-workspace" />
   <updated>2009-04-13T08:16:08-07:00</updated>
   <id>http://fsk141.com/my-wonderful-workspace</id>
   <content type="html">&lt;p&gt;I just wanted to post the amazing workspace that I built for myself a year and a half back or so in my closet. I started out with two boards of hard pine that I picked up at Home Depot. I fit the large 1 1/4 inch chunk of wood into the closet itself held up by wood tracers around the edges. Then I added a couple keyboard rails, and a spacious keyboard tray. Now that I think back, I wish I would have done a build log :(. Anywho, I fitted everything a few times, then stained the wood, and finished it off with a clear-coat. I proceeded to cut a wire hole in each corner, and screw in a PSU to the bottom right (seen in some of the pictures above my awesome laser printer [ML 2851 ND]). I added all the pictures on my &lt;a href="http://www.flickr.com/photos/68444690@N00/sets/72157616519709295/"&gt;flickr&lt;/a&gt;, so you can check out a few different angles… But here are my favorites:&lt;/p&gt;

&lt;p&gt;I keep a lot of stuff on my desk. I took the large mousepad (I’ll show you later in the thread) to take some pictures of the great wood. &lt;/p&gt;

&lt;p&gt;From left to right desktop: (left tweeter, tea cups, zarafina tea maker, tea, 22” Viewsonic mounted on the wall, Make Daisy MP3 player [need to fix a contact], Surefire L7, center tweeter, knik-naks [whittled knife I made], potassium nitrate [smoke bombs :)],cd’s, right tweeter)&lt;/p&gt;

&lt;p&gt;From left to right keyboard tray: (Compaq 11800 [amazing], Red and Black workbook, guitar tuner, metronome, nokia n810 [atop an xtracpads hybrid])&lt;/p&gt;

&lt;p&gt;From left to right underneath: (Black Box [4TB ZFS NAS server (2.7TB usable, 1 parity disk)], mini asus [videos, desktop, home server], power strip, clump of goodies [large sub, laser printer, sub controller, WRT 350N, DSL modem]) &lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3430168561"&gt;&lt;img src="http://farm4.static.flickr.com/3381/3430168561_547103bbb2.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3430981264"&gt;&lt;img src="http://farm4.static.flickr.com/3624/3430981264_f49a5f2a59.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3430988418"&gt;&lt;img src="http://farm4.static.flickr.com/3553/3430988418_2af682d44d.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3431000892"&gt;&lt;img src="http://farm4.static.flickr.com/3356/3431000892_040f29bb52.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is what my desk normally looks like. If if doesn’t look neat and clean like this, it’s overtaken by stuff that I’ve been working on, and too lazy to put away…&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3431006490"&gt;&lt;img src="http://farm4.static.flickr.com/3556/3431006490_19969e31ca.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>What's new?</title>
   <link href="http://fsk141.com/what-s-new" />
   <updated>2009-04-08T00:00:00-07:00</updated>
   <id>http://fsk141.com/what-s-new</id>
   <content type="html">&lt;p&gt;I would love to post some pictures of my new little toy (nokia n810) , but I’m too busy using it to type type this entry :) I’ve reprogrammed the darn thing over twenty times, and I’ve had it less than a week. I’ve flashed it with mer, poky, android, and of corse diablo. I’m probably not making much sense, but Im too lazy to post links atm. I plan on posting some pictures/videos of the device and how to flash. I just realized that I have a lot of new posts that I need to… um. post :)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Installing applications in eyeOS</title>
   <link href="http://fsk141.com/installing-applications-in-eyeos" />
   <updated>2009-04-02T00:00:00-07:00</updated>
   <id>http://fsk141.com/installing-applications-in-eyeos</id>
   <content type="html">&lt;p&gt;Installing apps in eyeOS is as simple as logging in as root, and selecting the applications manager, and hitting install apps.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3406809547"&gt;&lt;img src="http://farm4.static.flickr.com/3415/3406809547_d7852dee83.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3407617322"&gt;&lt;img src="http://farm4.static.flickr.com/3372/3407617322_bc3d4cae59.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pretty simple…&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>eyeOS impressions &amp; PKGBUILD</title>
   <link href="http://fsk141.com/eyeos-impressions-pkgbuild" />
   <updated>2009-04-02T00:00:00-07:00</updated>
   <id>http://fsk141.com/eyeos-impressions-pkgbuild</id>
   <content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3407516440"&gt;&lt;img src="http://farm4.static.flickr.com/3356/3407516440_a70d03a146.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ve followed the cloud os craze for a while now. I’ve tried a couple different implementations, and really haven’t come across anything worth while. Well besides that I decided to try out eyeOS again. The last time I tried it out, it was a little difficult to install (multiple steps), the documentation wasn’t the greatist, and it was a dysfunctional OS solution. My recent exploration into eyeOS start with a trip to my local &lt;a href="http://aur.archlinux.org"&gt;AUR&lt;/a&gt; to see if there was a PKGBUILD for eyeOS? There was, yet it hadn’t been updated in a long time, and it was abandoned. Well I jumped right on it and made a new &lt;a href="http://aur.archlinux.org/packages.php?ID=7330"&gt;PKGBUILD&lt;/a&gt;. I added a little instruction for install in the eyeos.install (called after pkg is installed). I proceeded to go to http://localhost/eyeos I was introduced to three fields: root password, repeat root password, and hostname. I entered the information and was greeted with a nifty login screen :)&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3406713475"&gt;&lt;img src="http://farm4.static.flickr.com/3324/3406713475_005f1b1d12.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I created a new account, logged in, and started to enjoy the new eyeOS (compared to the crap that I used a while ago)&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3406610713"&gt;&lt;img src="http://farm4.static.flickr.com/3553/3406610713_e11612ace5.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3407419760"&gt;&lt;img src="http://farm4.static.flickr.com/3538/3407419760_e95dda911b.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I uploaded my &lt;a href="http://aur.archlinux.org/packages.php?ID=7330"&gt;PKGBUILD&lt;/a&gt; files via the upload utility, and was giddy to be able to select multiple files to upload. I opened it in a text editor and messed around with it. I tried the web browser, rss reader, and a couple other things.&lt;/p&gt;

&lt;p&gt;I’m working on getting eyeSync working on my mac, yet have had no luck as of yet…&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Kernel Compilation &amp; Arch Linux</title>
   <link href="http://fsk141.com/kernel-compilation-arch-linux" />
   <updated>2009-03-31T00:00:00-07:00</updated>
   <id>http://fsk141.com/kernel-compilation-arch-linux</id>
   <content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3401383387"&gt;&lt;img src="http://farm4.static.flickr.com/3462/3401383387_1764c8e018.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A brief history of the infamous kernel. Followed by an in depth evaluation on the Arch Linux PKGBUILD of the stock kernel26. In that I’ll delve into the new outline of the PKGBUILD along with ways to customize (.config options, patches, how to prune for performance)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;– What is a kernel? –&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The kernel is the magical gateway that allows your hardware to communicate with applications. The kernel allows ‘User space’ to call system calls to the ‘Kernel space.’ Such as manipulating a file on a disk (open/close/read/write), or registering CPU commands. This being said the kernel is one of the lowest points of abstraction. It’s the crutch in which the whole of your computer is held up. The kernel manages resources such as CPU, memory, and I/O (disks, peripherals, displays, etc.). The kernel also allows for synchronization and communication between processes. (Inter-Process Communication). It also allows such processes a method to access the aforementioned hardware resources.&lt;/p&gt;

&lt;p&gt;The linux kernel is monolithic in nature, yet can be optimized with modules. Modules allow your kernel to be as small as you want, or easily expanded to include everything and the kitchen sink. It also allows you update modules; remove, update, reinsert, and be on your way again. More on modules to follow…&lt;/p&gt;

&lt;p&gt;&lt;em&gt;– kernel26-2.6.28 (PKGBUILD) –&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Please usher in the all powerful PKGBUILD! (/me welcomes)&lt;/p&gt;

&lt;p&gt;Check out the the PKGBUILD in it’s entirety here:&lt;/p&gt;

&lt;p&gt;[http://repos.archlinux.org/wsvn/packages/kernel26/repos/core-x86&lt;em&gt;64/PKGBUILD](http:http://repos.archlinux.org/wsvn/packages/kernel26/repos/core-x86&lt;/em&gt;64/PKGBUILD//)&lt;/p&gt;

&lt;p&gt;And for all the other files hit them up on the svn:
[http://repos.archlinux.org/wsvn/packages/kernel26/repos/core-x86&lt;em&gt;64/](http://repos.archlinux.org/wsvn/packages/kernel26/repos/core-x86&lt;/em&gt;64/http://)&lt;/p&gt;

&lt;p&gt;For the article, the PKGBUILD will be broken into it’s multiple pieces, and given a little description.&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;1) Common Head
——&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  1 # $Id$
  2 # Maintainer: Tobias Powalowski 
  3 # Maintainer: Thomas Baechler

  4 pkgname=kernel26                # Build stock -ARCH kernel
  5 # pkgname=kernel26-custom       # Build kernel with a different name
  6 _kernelname=${pkgname#kernel26}
  7 _basekernel=2.6.28
  8 pkgver=${_basekernel}.7
  9 pkgrel=2
 10 _patchname="patch-${pkgver}-${pkgrel}-ARCH"
 11 pkgdesc="The Linux Kernel and modules"
 12 arch=(i686 x86_64)
 13 license=('GPL2')
 14 groups=('base')
 15 url="http://www.kernel.org"
 16 backup=(etc/mkinitcpio.d/${pkgname}.preset)
 17 depends=('coreutils' 'kernel26-firmware&amp;gt;=2.6.28' 'module-init-tools' 'mkinitcpio&amp;gt;=0.5.20')
 18 # pwc, ieee80211 and hostap-driver26 modules are included in kernel26 now
 19 # nforce package support was abandoned by nvidia, kernel modules should cover everything now.
 20 # kernel24 support is dropped since glibc24
 21 replaces=('kernel24' 'kernel24-scsi' 'kernel26-scsi'
 22           'alsa-driver' 'ieee80211' 'hostap-driver26'
 23           'pwc' 'nforce' 'squashfs' 'unionfs' 'ivtv'
 24           'zd1211' 'kvm-modules' 'iwlwifi' 'rt2x00-cvs'
 25           'gspcav1' 'atl2' 'wlan-ng26')
 26 install=kernel26.install
 27 source=(ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_basekernel.tar.bz2
 28         ftp://ftp.archlinux.org/other/kernel26/${_patchname}.bz2
 29         # the main kernel config files
 30         config config.x86_64
 31         # standard config files for mkinitcpio ramdisk
 32         kernel26.preset)
 33 optdepends=('crda: to set the correct wireless channels of your country')
 34 md5sums=('d351e44709c9810b85e29b877f50968a'
 35          'e535d668afb04a590f03a47356794579'
 36          '3c47674afeae26616acd9dfc4060bd02'
 37          '1f0005febea457f47f26af1726dbf1b2'
 38          '25584700a0a679542929c4bed31433b6')
&lt;/code&gt;&lt;/pre&gt;

&lt;hr /&gt;

&lt;p&gt;Lets break this down into it’s relative pieces:
4) pkgname (ie. pacman -S kernel26)&lt;/p&gt;

&lt;p&gt;6) _kernelname (uname -r)&lt;/p&gt;

&lt;p&gt;7) _basekernel (well kernel w/o patches [2.6.28])&lt;/p&gt;

&lt;p&gt;8) pkgver (kernel path version [2.6.28.7])&lt;/p&gt;

&lt;p&gt;17) depends (coreutils, module-init-tools, and mkinitcpio are necessary. More on kernel26-firmware later)&lt;/p&gt;

&lt;p&gt;26) install* (install file is crucial for mkinitcpio to execute correctly after your kernel has been properly compiled)&lt;/p&gt;

&lt;p&gt;Everything else should make sense in this part of the PKGBUILD. If you’re unfamiliar with any of the other variables I would peruse around the arch wiki, and read up on PKGBUILDS&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;2) Make Chunk
——&lt;/p&gt;

&lt;p&gt;The next section is where the magic happens. Lines 40-75 start out with a variable to choose the correct .config. Pretend you are your computer (metaphysically) and imagine what you would do if given the following commands. Realize that makepkg does a little magic in the background, yet most everything else is very straightforward.&lt;/p&gt;

&lt;p&gt;43) We dive into the extracted kernel directory extracted automagically by makepkg.&lt;/p&gt;

&lt;p&gt;46) This is a great place to put patches. More on patches in the next section of the article. After the patches have been applied (or discounted) we move onto configuring the kernel.&lt;/p&gt;

&lt;p&gt;Tobias/Thomas are nice and provide a preset .config for x86 &amp;amp; x86_64 (how nice of them).&lt;/p&gt;

&lt;p&gt;48-52) determine the machine type and output the correct .config accordingly.&lt;/p&gt;

&lt;p&gt;53-55) Check to see if you have ‘_kernelname’ set, and if you do it will change the variable in your .config to match your custom name. ‘2.6.28-ARCH’ is the default for this field.&lt;/p&gt;

&lt;p&gt;57-75) Finishes the make. It grabs the correct name of the kernel and pops it into a nifty variable for use later (_kernver). What follows it is a nice block of commented code. The line that follows through just states that whatever the kernel has as defaults will be taken, and the build will commence. Later in the article we will take a look at how to make our own config, and strip out some on the un-necessary things in the kernel. After the config is taken care of, makepkg procedes to build the bzImage (boot image), and the rest of the kernel (modules and stuff)&lt;/p&gt;

&lt;hr /&gt;

&lt;pre&gt;&lt;code&gt; 40 build() {
 41   KARCH=x86
 42
 43   cd ${srcdir}/linux-$_basekernel
 44   # Add -ARCH patches
 45   # See http://projects.archlinux.org/git/?p=linux-2.6-ARCH.git;a=summary
 46   patch -Np1 -i ${srcdir}/${_patchname} || return 1
 47
 48   if [ "$CARCH" = "x86_64" ]; then
 49     cat ../config.x86_64 &amp;gt;./.config
 50   else
 51     cat ../config &amp;gt;./.config
 52   fi
 53   if [ "${_kernelname}" != "" ]; then
 54     sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION="${_kernelname}"|g" ./.config
 55   fi
 56   # get kernel version
 57   make prepare
 58   _kernver="$(make kernelrelease)"
 59   # load configuration
 60   # Configure the kernel. Replace the line below with one of your choice.
 61   #make menuconfig # CLI menu for configuration
 62   #make xconfig # X-based configuration
 63   #make oldconfig # using old config from previous kernel version
 64   # ... or manually edit .config
 65   ####################
 66   # stop here
 67   # this is useful to configure the kernel
 68   #msg "Stopping build"
 69   #return 1
 70   ####################
 71   yes "" | make config
 72   # build!
 73   make bzImage modules || return 1
 74   mkdir -p ${pkgdir}/{lib/modules,boot}
 75   make INSTALL_MOD_PATH=${pkgdir} modules_install || return 1
&lt;/code&gt;&lt;/pre&gt;

&lt;hr /&gt;
&lt;p&gt;3) The rest
——&lt;/p&gt;

&lt;p&gt;76-153) I will refrain from pasting this part of the PKGBUILD. A brief summary of what happens is this:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Files are copied from working directory to installdir ($pkgdir)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Miscellaneous files are copied from working dir to install dir.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;161-179) This is where we continue:&lt;/p&gt;

&lt;hr /&gt;

&lt;pre&gt;&lt;code&gt;161   # install fallback mkinitcpio.conf file and preset file for kernel
162   install -m644 -D ${srcdir}/kernel26.preset ${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset || return 1
163   # set correct depmod command for install
164   sed 
165     -e  "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/g" 
166     -e  "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" 
167     -i $startdir/kernel26.install
168   sed 
169     -e "s|source .*|source /etc/mkinitcpio.d/kernel26${_kernelname}.kver|g" 
170     -e "s|default_image=.*|default_image="/boot/${pkgname}.img"|g" 
171     -e
"s|fallback_image=.*|fallback_image="/boot/${pkgname}-fallback.img"|g" 
172     -i ${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset
173
174   echo -e "# DO NOT EDIT THIS FILEnALL_kver='${_kernver}'" &amp;gt; ${startdir}/pkg/etc/mkinitcpio.d/${pkgname}.kver
175   # remove unneeded architectures
176   rm -rf ${pkgdir}/usr/src/linux-${_kernver}/arch/{alpha,arm,arm26,avr32,blackfin,cris,frv,h8300,ia64,m32r,m68k,m68knommu,mips,mn10300,parisc,powerpc,ppc,s
390,sh,sh64,sparc,sparc64,um,v850,xtensa}
177   # remove the firmware
178   rm -rf ${pkgdir}/lib/firmware
179 }
&lt;/code&gt;&lt;/pre&gt;

&lt;hr /&gt;

&lt;p&gt;162) Copies *.preset file (mkinitcpio vars) into install dir. To backstep a little, just in case your unsure what I mean by installdir. Makepkg works with two directories: pkg &amp;amp; src. src is where the package is extracted and compiled. Durring the compile you can specify to compile to the pkg dir, or copy the files over after you have finished your compile (ie. binaries)&lt;/p&gt;

&lt;p&gt;164-167) Posts correct variables into your *.install file (uses a simple sed find and replace)&lt;/p&gt;

&lt;p&gt;168-172) Pops correct vars into *.preset&lt;/p&gt;

&lt;p&gt;174) This is the one line not to screw around with. It creates a .kver file to let mkinitcpio what kernel it’s compiling.&lt;/p&gt;

&lt;p&gt;176) Removes erroneous directories&lt;/p&gt;

&lt;p&gt;178) I would remove this like if you plan to compile your own kernel. Just leave the firmware in place…&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;– Patches –&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Definitely take a peek at:
&lt;a href="http://wiki.archlinux.org/index.php/Kernel_Patches_and_Patchsets"&gt;http://wiki.archlinux.org/index.php/Kernel_Patches_and_Patchsets&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This gives a great rundown on patches &amp;amp; patchsets ;)&lt;/p&gt;

&lt;p&gt;Other than that, patches are for the tweakers at heart. If you would like to get a fraction more performance benefit then run with patches as opposed to attaching modules. Depending on what you want you might want to patch in the newest version of ext4. Or the latest version of OpenVZ. Or if you would really like to explore, dive into DRBD…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;– Modules –&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hooray, Modules! Modules are the easiest way to add functionality to a kernel. Not only do modules reduce the bloat of a once monolithic kernel. They also make it simple to upgrade seperate pieces of the kernel without restarting, or reloading a new kernel. There are certain limits, but they are far and wide, and when you run into one, it’s simple to restart with a new kernel :)&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;/etc/rc.conf
——&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;MODULES=(!pcspkr r8169 slhc snd-mixer-oss snd-pcm-oss snd-hwdep
snd-page-alloc snd-pcm snd-timer snd snd-hda-intel soundcore nfs)
&lt;/code&gt;&lt;/pre&gt;

&lt;hr /&gt;

&lt;p&gt;This is my modules line on my desktop. It’s very simple. The pcsprk is disabled (!), and for the most part the rest of the things loaded are sound drivers.&lt;/p&gt;

&lt;p&gt;That’s not to say that I don’t have more modules running. To check the currently running modules on your system run the ‘lsmod’ command. The output will look something similar to this:&lt;/p&gt;

&lt;hr /&gt;

&lt;pre&gt;&lt;code&gt;[fsk141@FSK-Main ~]$ lsmod | more
Module                  Size  Used by
battery                14600  0
nls_cp437               8960  1
vfat                   14464  1
fat                    56760  1 vfat
usb_storage           112832  1
ipv6                  309952  32
&lt;/code&gt;&lt;/pre&gt;

&lt;hr /&gt;

&lt;p&gt;Hum, battery on a desktop? How absurd, well let’s make sure that it’s not a cmos battery, or anything else important with ‘modinfo’:&lt;/p&gt;

&lt;hr /&gt;

&lt;pre&gt;&lt;code&gt;[fsk141@FSK-Main ~]$ modinfo battery
filename:       /lib/modules/2.6.28-ARCH/kernel/drivers/acpi/battery.ko
license:        GPL
description:    ACPI Battery Driver
author:         Alexey Starikovskiy 
author:         Paul Diefenbaugh
alias:          acpi*:PNP0C0A:*
depends:
vermagic:       2.6.28-ARCH SMP preempt mod_unload
parm:           cache_time:cache time in milliseconds (uint)
&lt;/code&gt;&lt;/pre&gt;

&lt;hr /&gt;

&lt;p&gt;Well, I don’t need ACPI on my desktop, so lets remove it with ‘modprobe -r battery’ You need to run this as root or under sudo… By “removing it” it will remove it from the kernel. Likewise if you were to execute ‘modprobe battery’ it would insert the module.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;– Compiling &amp;amp; Tweaking–&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To wrap things up lets go through a hypothetical scenario.&lt;/p&gt;

&lt;p&gt;1) You edit your PKGBUILD and add the Viper Patchset (Best wishes to the late Vipercinus)&lt;/p&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;2) You replace ‘yes “”&lt;/td&gt;
      &lt;td&gt;makeconfig’ with ‘make menuconfig’ (Remove erroneous options, and modules) If you are unsure what something is, then pull up a trusty google page and look it up. For example if you use ext3 as your primary filesystem, then consider removing EXT2, EXT4, XFS, Reiser FS, etc. You might be suprised on how you can cut some time off boot by simply removing pieces from your kernel. (Leave the important stuff, otherwise you’ll just end up with a useless pile of compiled junk)&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;3) ‘makepkg’ finishes, and you proceded to ‘ls /boot/’ and make sure that your mkinitcpio images were successfully created&lt;/p&gt;

&lt;p&gt;4) Add a Grub entry:&lt;/p&gt;

&lt;hr /&gt;

&lt;pre&gt;&lt;code&gt;title  Arch Linux
root   (hd0,0)
kernel /boot/vmlinuz26-custom
root=/dev/sda1 ro
initrd /boot/kernel26-custom.img
&lt;/code&gt;&lt;/pre&gt;

&lt;hr /&gt;

&lt;p&gt;5) Reboot and cross your fingers. If it reboots, and spits you back into a prompt then you’re golden. Otherwise you will need to troubleshoot what you did wrong, or how you mucked things up.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wish you the best of luck with your kernel adventures, and Arch Linux in general. The process of building a kernel takes a lot of time to master, and is a very complicated affair. It’s wonderful that the PKGBUILD is able to structure the process so nicely, and allow you create a package with a full kernel, and the instructions to run mkinitcpio, and create the correct boot images. I recommend trying out a couple different patchsets, and trying your hand at making a PKGBUILD of your own kernel. At the very least grab the default kernel, and compile it yourself to see what happens. I can recall the first time I compiled a program, and how confused yet joyous I was. I knew I did something, but I had no idea what that something amounted to. Now after compiling too many programs/kernels to count I look back, and recall the time I had learning. It was troublesome, and there weren’t many resources that were able to help/step you through the whole process. I know that this isn’t an all telling guide for kernel compiling. At the very least, I hope this peaks you interest to learn more.&lt;/p&gt;

&lt;p&gt;Enjoy, Jonny Gerold (jonny@fsk141.com)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>I just love ramdisks</title>
   <link href="http://fsk141.com/i-just-love-ramdisks" />
   <updated>2009-03-21T00:00:00-07:00</updated>
   <id>http://fsk141.com/i-just-love-ramdisks</id>
   <content type="html">&lt;p&gt;Lately with all this kernel work I have taken full advantage of the wonderful ramdisk. Since the kernels are compressed and that takes a bunch of disk I/O’s it’s great to shave off minutes in uncompressing by using a ramdisk.&lt;/p&gt;

&lt;p&gt;Here is a simple way to setup a ramdisk:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs none /mnt/ramdisk
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The possibilities are endless, and it helps a ton when you need a bunch of disk I/O, and have the memory to spare.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Last Compile?</title>
   <link href="http://fsk141.com/last-compile" />
   <updated>2009-03-20T00:00:00-07:00</updated>
   <id>http://fsk141.com/last-compile</id>
   <content type="html">&lt;p&gt;I sure hope so… Here is the latest from my &lt;a href="http://www.archlinux.org"&gt;Arch Linux&lt;/a&gt; PKGBUILD for the OpenVZ 2.6.24 ovz008.1 kernel build. I found what I hope is the last bug, and am just waiting for it to finish (takes 21 minutes total on my 2.0 Ghz Core Duo).&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3371221517"&gt;&lt;img src="http://farm4.static.flickr.com/3601/3371221517_2a7b6267dd.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope to release 2.6.18, 2.6.24 (WIP), 2.6.26 bulgakov.1/chekhov.1, and 2.6.27 aivazovsky.1 in the future. I’ll let you know when it’s finished.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>First Arch Linux Post &amp; some other little tidbits</title>
   <link href="http://fsk141.com/first-arch-linux-post-some-other-little-tidbits" />
   <updated>2009-03-18T00:00:00-07:00</updated>
   <id>http://fsk141.com/first-arch-linux-post-some-other-little-tidbits</id>
   <content type="html">&lt;p&gt;&lt;img src="http://www.archlinux.org/media/titlelogo.png" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;Well, as you probably don’t know (since I have yet to advertise on my &lt;em&gt;new&lt;/em&gt; blog) I’m an avid Arch Linux User. I just love it to pieces. I use it on my personal servers &amp;amp; clients. I recently have been dumping some time into updating my packages: &lt;a href="http://aur.archlinux.org/packages.php?SeB=m&amp;amp;K=fsk141"&gt;Link to my AUR Packages&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I recently acquired the rtorrent-svn / libtorrent-svn / xmlrpc-c-svn packages. I deleted the *-wt packages and merged them with the standard -svn packages. Hooray!&lt;/p&gt;

&lt;p&gt;I have also been working on the OpenVZ package (updating the hell out of it). I updated it using the theory behind this wiki link : &lt;a href="http://wiki.archlinux.org/index.php/Kernel_Compilation_with_ABS"&gt;Kernel_Compilation_with_ABS&lt;/a&gt; I have compiled the darn thing about 10 times as of now, and atm I’m hoping that I’m on the last compile (crossing my fingers that it will work) :)&lt;/p&gt;

&lt;p&gt;I have started using subversion a little more in depth, and have been trying out branches:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://atonie.org/2008/02/git-wiki"&gt;git-wiki&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ll make sure to post my results…&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>First Dvorak Post</title>
   <link href="http://fsk141.com/first-dvorak-post" />
   <updated>2009-03-12T00:00:00-07:00</updated>
   <id>http://fsk141.com/first-dvorak-post</id>
   <content type="html">&lt;p&gt;So I have been using dvorak on and off for a month now. It’s been interesting to say the least. I have been struggling to keep with it because it slows me down. So at work I use QWERTY, and at home I use Dvorak.&lt;/p&gt;

&lt;p&gt;Links:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard"&gt;Dvorak Simplified Keyboard&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://aur.archlinux.org/packages.php?ID=12590"&gt;AUR dvorakng&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Transformation:
…Starting…&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3348766890"&gt;&lt;img src="http://farm4.static.flickr.com/3427/3348766890_990fc033d2.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3347932803"&gt;&lt;img src="http://farm4.static.flickr.com/3442/3347932803_365ee22540.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;…Broken &amp;amp; Fixen…&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3347934543"&gt;&lt;img src="http://farm4.static.flickr.com/3580/3347934543_e703b58910.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3347935359"&gt;&lt;img src="http://farm4.static.flickr.com/3420/3347935359_2721e9421c.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3347936201"&gt;&lt;img src="http://farm4.static.flickr.com/3568/3347936201_a751ec08aa.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;…Done…&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3347936935"&gt;&lt;img src="http://farm4.static.flickr.com/3599/3347936935_9283eb4126.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3347937797"&gt;&lt;img src="http://farm4.static.flickr.com/3560/3347937797_876bf4eebe.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope you enjoy the pics.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Free year of Linux Journal (Digital Version)</title>
   <link href="http://fsk141.com/free-year-of-linux-journal-digital-version" />
   <updated>2009-03-10T00:00:00-07:00</updated>
   <id>http://fsk141.com/free-year-of-linux-journal-digital-version</id>
   <content type="html">&lt;p&gt;I’m not a fan of gimmicks, yet &lt;a href="http://www.linuxjournal.com"&gt;Linux Journal&lt;/a&gt; is giving away a free digital subscription to &lt;em&gt;everyone&lt;/em&gt; that sends in the correct letters from the short tip videos. I watched the first video here:
&lt;a href="http://www.linuxjournal.com/video/upgrading-ubuntu-cutting-edge"&gt;http://www.linuxjournal.com/video/upgrading-ubuntu-cutting-edge&lt;/a&gt; and realized it’s not much of a task to watch the short tip to get the three letter tidbit you need from the video (‘AWK’).&lt;/p&gt;

&lt;p&gt;Here are the &lt;a href="http://www.linuxjournal.com/content/linux-journal-announces-contest-prizes-begin-march-9"&gt;Rules&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are a couple links to make it easier:
&lt;a href="http://www.linuxjournal.com/video"&gt;HTTP Video Page&lt;/a&gt;
&lt;a href="http://www.linuxjournal.com/video/feed"&gt;Video RSS Feed&lt;/a&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Vim Tabs</title>
   <link href="http://fsk141.com/vim-tabs" />
   <updated>2009-02-27T00:00:00-08:00</updated>
   <id>http://fsk141.com/vim-tabs</id>
   <content type="html">&lt;p&gt;I just found out something really neat via one of my new favorite sites: &lt;a href="http://www.commandlinefu.com"&gt;Command-line-fu&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;http://www.commandlinefu.com/commands/view/1256/vim-edit-in-tabs&lt;/p&gt;

&lt;p&gt;I made a little video to show off vim tabs in action^^
Basic things to remember :tabn &amp;amp; :tabp&lt;/p&gt;

&lt;p&gt;Also check out linux.com entry for vimtabs:
&lt;a href="http://www.linux.com/feature/59533"&gt;http://www.linux.com/feature/59533&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>How to setup NTP on OpenSolaris</title>
   <link href="http://fsk141.com/how-to-setup-ntp-on-opensolaris" />
   <updated>2009-02-17T00:00:00-08:00</updated>
   <id>http://fsk141.com/how-to-setup-ntp-on-opensolaris</id>
   <content type="html">&lt;p&gt;NTP is one of the best utilities for any system. It automagically corrects your time according to the ntp time servers. Here’s how to enable it on OpenSolaris:&lt;/p&gt;

&lt;p&gt;I would recommend doing the following commands logged in via root (sudo su -):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;cp /etc/inet/ntp.client /etc/ntp.conf
vi /etc/ntp.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Append the following to ntp.conf:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then run the following commands:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;svcadm enable svc:/network/ntp:default
svcadm restart svc:/network/ntp:default
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The ‘restart’ might not be absolutely necessary, but it’s done to check everything is in order.&lt;/p&gt;

&lt;p&gt;If you would like to check that everything is up and running:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;svcs -a | grep ntp
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It should give you something similar to the following:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;online         Feb_03   svc:/network/ntp:default
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Enjoy your auto-updated time :)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>2.6.18 {i686 - PAE} [OpenVZ *newest* | DRBD 8.3.0</title>
   <link href="http://fsk141.com/2-6-18-i686-pae-openvz-newest-drbd-8-3-0" />
   <updated>2009-02-09T00:00:00-08:00</updated>
   <id>http://fsk141.com/2-6-18-i686-pae-openvz-newest-drbd-8-3-0</id>
   <content type="html">&lt;p&gt;How to compile 2.6.18 with newest DRBD.&lt;/p&gt;

&lt;p&gt;It’s kinda a joke that OpenVZ just released a new RHEL5 kernel and it has DRBD 8.2.6 (meh) So I’m doing a short write up on the commands to semi-automatically build a 2.6.18 kernel with OpenVZ &amp;amp; DRBD 8.3.0. I’m choosing to do i686, but if you want to change it to x86_64 or remove PAE then just edit .config &amp;amp; download the correct OpenVZ patch.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mkdir -p /usr/src/kernels/2.6.18_vz_drbd_ibcs/src
cd /usr/src/kernels/2.6.18_vz_drbd_ibcs/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.gz
wget http://oss.linbit.com/drbd/8.3/drbd-8.3.0.tar.gz
wget http://voxel.dl.sourceforge.net/sourceforge/linux-abi/ibcs-3_7.tgz
wget http://download.openvz.org/kernel/branches/rhel5-2.6.18/028stab060.2/patches/patch-92.1.18.el5.028stab060.2-combined.gz
wget http://download.openvz.org/kernel/branches/rhel5-2.6.18/028stab060.2/configs/kernel-2.6.18-i686-PAE.config.ovz

tar xzf linux-2.6.18.tar.gz -C ..
tar xzf drbd-8.3.0.tar.gz -C ..
mkdir ../ibcs
tar xzf ibcs-3_7.tgz -C ../ibcs
cp patch-92.1.18.el5.028stab060.2-combined.gz ..
cd ..

gunzip -c patch-92.1.18.el5.028stab060.2-combined.gz | patch -p0 patch-92.1.18.el5.028stab060.2-combined.gz

cd drbd-8.3.0
make KDIR=/usr/src/kernels/2.6.18_vz_drbd_ibcs/linux-2.6.18 kernel-patch
cp patch-linux-2.6.18-drbd-8.3.0 ..
cd ..
patch -p0 &amp;lt; patch-linux-2.6.18-drbd-8.3.0

cd linux-2.6.18
cp ../src/kernel-2.6.18-i686-PAE.config.ovz ./.config
make menuconfig
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;After you run: make menuconfig, this is the one important thing that you need to change…&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Device Drivers &amp;gt; Block devices &amp;gt;     DRBD Distributed Replicated Block Device support
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then build the kernel:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;time make -j7 rpm
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now install, and enjoy ;)&lt;/p&gt;

&lt;p&gt;Make the initrd image:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mkinitrd /boot/initrd-2.6.18-PAE.img 2.6.18-prep
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Add this to /boot/grub/menu.lst&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;title CentOS (2.6.18 OPENVZ|DRBD)
        root(hd0,0)
        kernel /vmlinuz-2.6.18-prep ro root=LABEL=/
        initrd /initrd-2.6.18-PAE.img
&lt;/code&gt;&lt;/pre&gt;
</content>
 </entry>
 
 <entry>
   <title>OpenSolaris bugs/new things I learned</title>
   <link href="http://fsk141.com/opensolaris-bugs-new-things-i-learned" />
   <updated>2009-02-03T00:00:00-08:00</updated>
   <id>http://fsk141.com/opensolaris-bugs-new-things-i-learned</id>
   <content type="html">&lt;p&gt;root@FSK-Backup:~# beadm
    Traceback (most recent call last):
      File “/usr/sbin/beadm”, line 41, in ?
        from osol_install.beadm.BootEnvironment import *
    ImportError: No module named osol_install.beadm.BootEnvironment&lt;/p&gt;

&lt;p&gt;To fix this run the following:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;cp /usr/lib/python2.4/vendor-packages/osol_install/beadm/__init__.py /usr/lib/python2.4/vendor-packages/osol_install/__init__.py
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;New comands I learned:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;pkg search 'string'
beadm list
zfs list -t snapshot
svcs
svcadm
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I’ve been using OpenSolaris more and more while I tweak my NAS server, and I’m quite happy with how it’s setup. I wish the package manager was a little more. I’m an avid user of pacman (Arch Linux) and it’s the king of all package managers, so there is a lot to be missed in pkg.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Container enter failed [OpenVZ]</title>
   <link href="http://fsk141.com/container-enter-failed-openvz" />
   <updated>2009-01-26T00:00:00-08:00</updated>
   <id>http://fsk141.com/container-enter-failed-openvz</id>
   <content type="html">&lt;p&gt;The VE will start, but you are unable to ‘vzctl enter VE#’ right?&lt;/p&gt;

&lt;p&gt;You get something like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;container enter failed(?)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To get past this you need to manually create the pty/tty devices:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;vzctl exec  101 /sbin/MAKEDEV tty
vzctl exec 101 /sbin/MAKEDEV pty
vzctl enter 101
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Where 101 = VE# in question…&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Simple Socks 5 proxy [SSH tunnel]</title>
   <link href="http://fsk141.com/simple-socks-5-proxy-ssh-tunnel" />
   <updated>2009-01-21T00:00:00-08:00</updated>
   <id>http://fsk141.com/simple-socks-5-proxy-ssh-tunnel</id>
   <content type="html">&lt;p&gt;Need a simple haxie to tunnel your computer traffic? Use an SSH tunnel; it’s simple and painless.&lt;/p&gt;

&lt;p&gt;What you need:
Server
-SSH&lt;/p&gt;

&lt;p&gt;Client
-SSH
-Web Browser (Firefox + FoxyProxy [What I use])
-Any other application that allows Socks 5 proxy&lt;/p&gt;

&lt;p&gt;Procedure:&lt;/p&gt;

&lt;p&gt;Open up a terminal and type the following:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;~ ssh fsk141@fsk.tld -ND 1337
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Description:
Use SSH to tunnel all of your traffic through port 1337&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ssh (Secure Shell)&lt;/li&gt;
  &lt;li&gt;fsk141@fsk141.tld (user:host)&lt;/li&gt;
  &lt;li&gt;-ND (look below for man page)&lt;/li&gt;
  &lt;li&gt;1337 (port number)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Man page entries for -N -D&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;       -D [bind_address:] port
              Specifies a local ‘‘dynamic'' application-level port forwarding.  This works by allocating a socket to listen to port on the local side, optionally
              bound  to  the  specified  bind_address.   Whenever a connection is made to this port, the connection is forwarded over the secure channel, and the
              application protocol is then used to determine where to connect to from the remote machine.  Currently the SOCKS4 and  SOCKS5  protocols  are  sup?
              ported, and ssh will act as a SOCKS server.  Only root can forward privileged ports.  Dynamic port forwardings can also be specified in the config?
              uration file.

              IPv6 addresses can be specified with an alternative syntax:
               [bind_address/] port or by enclosing the address in square brackets.  Only the superuser can forward privileged ports.  By default, the local port
              is  bound in accordance with the GatewayPorts setting.  However, an explicit bind_address may be used to bind the connection to a specific address.
              The bind_address of ‘‘localhost'' indicates that the listening port be bound for local use only, while an empty address or ‘*' indicates  that  the
              port should be available from all interfaces.

        -N     Do not execute a remote command.  This is useful for just forwarding ports (protocol version 2 only).
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now that you’re connected you can jump over to firefox:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Preferences &amp;gt; Advanced &amp;gt; Settings
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/68444690@N00/3215016569"&gt;&lt;img src="http://farm4.static.flickr.com/3529/3215016569_63bc44e0dd.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just input the pertinent information (localhost:1337) and make sure socks5 is bubbled… That’s it… It’s a very simple process, and is very handy when you need to access a blocked site, or protect valuable information.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Manual NFS pains</title>
   <link href="http://fsk141.com/manual-nfs-pains" />
   <updated>2009-01-13T00:00:00-08:00</updated>
   <id>http://fsk141.com/manual-nfs-pains</id>
   <content type="html">&lt;p&gt;I’ve been privileged; in that I haven’t had to deal with the complexities of NFS. Instead ZFS has managed all my NFS stuffs. Recently I’ve been testing NFS on OpenVZ containers, and have had to learn some of the oddities to NFS3/4 and came across this problem:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[root@cos47i686 mnt]# mount -t nfs4 box1:/demo /mnt/box1
Warning: rpc.idmapd appears not to be running.
         All uids will be mapped to the nobody uid.
mount: fs type nfs4 not supported by kernel
[root@cos47i686 mnt]# /etc/init.d/rpcidmapd start
Starting RPC idmapd: Error: RPC MTAB does not exist.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The solution is this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mount -t rpc_pipefs sunrpc /var/lib/nfs/rpc_pipefs/
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then you just need to start ‘rpcidmapd’ and mount your nfs share.&lt;/p&gt;

&lt;p&gt;Resources:
&lt;a href="http://linux.derkeiler.com/Mailing-Lists/Fedora/2004-06/4558.html"&gt;Re: NFS4 startup error - RPC MTAB not found ??&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>One time GRUB entry</title>
   <link href="http://fsk141.com/one-time-grub-entry" />
   <updated>2008-12-23T00:00:00-08:00</updated>
   <id>http://fsk141.com/one-time-grub-entry</id>
   <content type="html">&lt;p&gt;So you have a remote server that you need to test a new kernel on, and you dont have a remote kvm/console. What to do???&lt;/p&gt;

&lt;p&gt;Use a nice little grub haxie of course.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;echo "savedefault --default=1 --once" | grub --batch
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The number 1 being the grub entry that you would like to try out. This command will boot the selected entry, in this case 1, for one boot cycle, and then return to the default kernel.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;timeout   5
default   0
color light-blue/black light-cyan/blue

title  Arch Linux
root   (hd0,0)
kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/3e2569bd-3c65-408b-bafa-bab760741faf ro
initrd /boot/kernel26.img

title  Arch Linux Fallback
root   (hd0,0)
kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/3e2569bd-3c65-408b-bafa-bab760741faf ro
initrd /boot/kernel26-fallback.img
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Here is my current menu.lst. So if I ran the command above, it would boot “Arch Linux Fallback” once, and then return to the default kernel. If you have a power management device then you can completely avoid failure.&lt;/p&gt;

&lt;p&gt;Resources:
&lt;a href="http://sidvind.com/wiki/GRUB:_Boot_another_OS_once"&gt;GRUB: Boot another OS once&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Remove Open Solaris GUI</title>
   <link href="http://fsk141.com/remove-open-solaris-gui" />
   <updated>2008-12-13T00:00:00-08:00</updated>
   <id>http://fsk141.com/remove-open-solaris-gui</id>
   <content type="html">&lt;p&gt;Since I never plan to use Open Solaris as a desktop, and only as a server I grepped around for a way to remove Gnome/Xorg, and all the other little complexities that I didn’t want. It’s kinda a pain that the install CD doesn’t allow you to choose not to install the GUI. Here’s the code that I found to achieve the task of removing the GUI.&lt;/p&gt;

&lt;div&gt;
  &lt;pre&gt;&lt;code class="bash"&gt;pkg uninstall -vr `pkg list | egrep '(aac|acc|atheros|audio|avahi|compiz|evolution|firefox|flac|gamin|gnome|ipp|ipw|iwi|iwk|musicbrainz|ogg|pkg-gui|print|thunderbird|tnetd|wlan|wlan|wpa|wpi|xcursor|xorg|xscreensaver)' | awk '{print $1}'`&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>CentOS 2.6.24 (i686PAE) | OpenVZ ovz006.5 | DRBD 8.3.0 | IBCS 3.7</title>
   <link href="http://fsk141.com/centos-2-6-24-i686pae-openvz-ovz006-5-ibcs-3-7-drbd-8-3-0-rc2" />
   <updated>2008-12-11T00:00:00-08:00</updated>
   <id>http://fsk141.com/centos-2-6-24-i686pae-openvz-ovz006-5-ibcs-3-7-drbd-8-3-0-rc2</id>
   <content type="html">&lt;p&gt;The goal is to have an i686 kernel with 4GB+ memory support (PAE) with OpenVZ, IBCS, and DRBD.&lt;/p&gt;

&lt;p&gt;Environment:
&lt;a href="http://www.dell.com/content/products/productdetails.aspx/pedge_2900_3"&gt;Dell 2900&lt;/a&gt;
-8 Cores (1.60Ghz)
-24GB RAM&lt;/p&gt;

&lt;p&gt;Operating System:
CentOS 5&lt;/p&gt;

&lt;p&gt;Lets start by making ourselves a working directory:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mkdir -p /usr/src/kernels/2.6.24_vz_drbd_ibcs/src
cd /usr/src/kernels/2.6.24_vz_drbd_ibcs/src
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then we need to collect all the parts to build the patched kernel/modules:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.tar.gz
wget http://oss.linbit.com/drbd/8.3/drbd-8.3.0.tar.gz
wget http://voxel.dl.sourceforge.net/sourceforge/linux-abi/ibcs-3_7.tgz
wget http://download.openvz.org/kernel/branches/2.6.24/2.6.24-ovz006.5/patches/patch-ovz006.5-combined.gz
wget http://download.openvz.org/kernel/branches/2.6.24/2.6.24-ovz006.5/configs/kernel-2.6.24-i686-PAE.config.ovz
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now that we have all the pieces we need lets start extractin &amp;amp; patchin. BTW, I’ll start all the command blocks with a pwd to show you where I am…:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;pwd
/usr/src/kernels/2.6.24_vz_drbd_ibcs/src
tar xzf linux-2.6.24.tar.gz -C ..
tar xzf drbd-8.3.0.tar.gz -C ..
mkdir ../ibcs
tar xzf ibcs-3_7.tgz -C ../ibcs
cp patch-ovz006.5-combined.gz ..
cd ..
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ok stay calm, I just put all the source files in /src, and will build the kernel in 2.6.24_vz_drbd_ibcs.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;pwd
/usr/src/kernels/2.6.24_vz_drbd_ibcs
gunzip -c patch-ovz006.5-combined.gz | patch -p0 patch-ovz006.5-combined.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Lets continue by patching in drbd. You have to actually patch this in as opposed to building it as a module since that doesn’t work.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;pwd
/usr/src/kernels/2.6.24_vz_drbd_ibcs
cd drbd-8.3.0
make KDIR=/usr/src/kernels/2.6.24_vz_drbd_ibcs/linux-2.6.24 kernel-patch
cp patch-linux-2.6.24-drbd-8.3.0 ..
cd ..
patch -p0 &amp;lt; patch-linux-2.6.24-drbd-8.3.0




pwd
/usr/src/kernels/2.6.24_vz_drbd_ibcs
cd linux-2.6.24
cp ../src/kernel-2.6.24-i686-PAE.config.ovz ./.config
make menuconfig
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;After you’re dropped into menuconfig you need to set drbd to(to compile drbd into the kernel)&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Device Drivers &amp;gt; Block devices &amp;gt;     DRBD Distributed Replicated Block Device support
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;At the moment you have a vanilla 2.6.24 kernel with OpenVZ ovz006.5 (patched) and DRBD 8.3.0 RC2 (patched). The only thing left is IBCS which we will install as a module after we have compiled and booted into the OS. As for now lets go ahead and compile, install, and boot.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;time make -j7 rpm
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The build command ‘time make -j7 rpm’ will tell you how long it took to build at the end, the -j is how many jobs it can run at once (8 cores - 1 core for OS = 7 cores) and ‘rpm’ will do package it up for you in and store it at /usr/src/redhat/RPMS{*}&lt;/p&gt;

&lt;p&gt;If it compiles correctly you should get no errors, and see something like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;--output from compile--

real	6m27.445s
user	37m59.198s
sys	6m18.564s
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then navigate to /usr/src/redhat/{athlon, i386, i486, i586, i686, noarch} depending on your archetecture. Mine was in i386.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ls
kernel-2.6.24-2.i386.rpm
pwd
/usr/src/redhat/RPMS/i386
rpm -i kernel-2.6.24-2.i386.rpm
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You should get something like the above…&lt;/p&gt;

&lt;p&gt;Then you need to make the ramdisk:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mkinitrd /boot/initrd-2.6.24.img 2.6.24
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;After that add an entry to grub to test your new kernel with OpenVZ and DRBD.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;title CentOS (2.6.24 VZ_DRBD_IBCS)
        root(hd0,0)
        kernel /vmlinuz-2.6.24 ro root=LABEL=/
        initrd /initrd-2.6.24.img
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If everything goes as expected, then you should boot up. If it doesn’t boot, or boots into the wrong kernel then you should check that you did everything correctly… Anywho, you should now be booted into your new kernel.&lt;/p&gt;

&lt;p&gt;Lets continue by installing IBCS, and finishing up…&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;pwd
/usr/src/kernels/2.6.24_vz_drbd_ibcs/ibcs
time make
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you received no errors, then continue edit /etc/rc.local to startup icbs on startup. Add the following to the end of your /etc/rc.local:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/usr/src/kernels/2.6.24_vz_drbd_ibcs/ibcs/abi_ldr
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You could move abi_ldr to /usr/bin if you would like, and just make sure to have the path above correspond where you decide to put abi_ldr.&lt;/p&gt;

&lt;p&gt;You’re Finished!&lt;/p&gt;

&lt;p&gt;Resources:
&lt;a href="http://www.drbd.org/users-guide/s-build-from-source.html"&gt;http://www.drbd.org/users-guide/s-build-from-source.html&lt;/a&gt;
&lt;a href="http://wiki.openvz.org/Download/kernel/2.6.24/2.6.24-ovz006.5"&gt;http://wiki.openvz.org/Download/kernel/2.6.24/2.6.24-ovz006.5&lt;/a&gt;
&lt;a href="http://www.howtoforge.com/kernel_compilation_centos"&gt;http://www.howtoforge.com/kernel_compilation_centos&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>How to create zfs stripe (pool) [NAS]</title>
   <link href="http://fsk141.com/how-to-create-zfs-stripe-pool" />
   <updated>2008-12-10T00:00:00-08:00</updated>
   <id>http://fsk141.com/how-to-create-zfs-stripe-pool</id>
   <content type="html">&lt;p&gt;I recently (Last night to be exact) I installed Open Solaris as my NAS/Backup Server. Why you may ask? Well I love &lt;a href="http://www.archlinux.org"&gt;Arch Linux&lt;/a&gt; yet see the &lt;em&gt;need&lt;/em&gt; to start using &lt;a href="http://en.wikipedia.org/wiki/ZFS"&gt;ZFS&lt;/a&gt;. ZFS is freakin-fan-tastic. It’s puts the S in simple, and allows you to have a filesystem that does much more than a common file system. Such as NFS, SMB, and Compression (did I mention that this is all built in :) I’m going to go through the simple process to setup a zfs striped pool, and setup a few datasets, and apple compression.&lt;/p&gt;

&lt;p&gt;OpenSolaris tools I’ll cover:
&lt;a href="http://docs.sun.com/app/docs/doc/816-5166/format-1m"&gt;format&lt;/a&gt;
&lt;a href="http://docs.sun.com/app/docs/doc/816-5166/zfs-1m"&gt;zfs(1M)&lt;/a&gt;
&lt;a href="http://docs.sun.com/app/docs/doc/816-5166/zpool-1m"&gt;zpool(1M)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lets start out by finding the disks that we would like to add to the pool:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;root@Nom:~# format &amp;lt; /dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Which will look like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;root@Nom:~# format &amp;lt; /dev/null
Searching for disks...done

AVAILABLE DISK SELECTIONS:
       0. c3d0 
          /pci@0,0/pci-ide@1f,1/ide@0/cmdk@0,0
       1. c4d1 
          /pci@0,0/pci-ide@1f,2/ide@0/cmdk@1,0
       2. c5d0 
          /pci@0,0/pci-ide@1f,2/ide@1/cmdk@0,0
Specify disk (enter its number):
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This shows the three disks that are present in my system. I’ll break it down a little. The number you see at the beginning is the number as per the format command. Then the information in the &amp;lt;&amp;gt;’s displays a disk ID, size of the disk, and some other little tidbits for the people that care.&lt;/p&gt;

&lt;p&gt;What you’re looking for is “c4d1” &amp;amp; “c5d0” which are the two Western Digital 1TB disks that I’m going to make my pool with.&lt;/p&gt;

&lt;p&gt;To create the pool use the zpool command:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;root@Nom:~# zpool create nom c4d1 c5d0
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That’s it, you’ve now created your first zfs pool. Just to sum up what I just did, I formatted the disks, set the mountpoints, mounted the device, and now have an active zfs pool.&lt;/p&gt;

&lt;p&gt;If you would like to see the zpools that you currently have do the following command:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;root@Nom:/nom# zpool list
NAME    SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
nom    1.81T  82.5K  1.81T     0%  ONLINE  -
rpool   149G  3.36G   146G     2%  ONLINE  -
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I could go ahead and add a NFS share and Compression yet, why not stay organized :) I would rather create individual file systems to store the different data that I have.&lt;/p&gt;

&lt;p&gt;To show what I mean I’ll show you what a zfs file system is:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;root@Nom:/nom# zfs list
NAME                       USED  AVAIL  REFER  MOUNTPOINT
nom                       70.5K  1.78T    18K  /nom
rpool                     4.36G   142G    72K  /rpool
rpool/ROOT                2.37G   142G    18K  legacy
rpool/ROOT/opensolaris    2.37G   142G  2.24G  /
rpool/dump                1019M   142G  1019M  -
rpool/export                59K   142G    19K  /export
rpool/export/home           40K   142G    19K  /export/home
rpool/export/home/fsk141    21K   142G    21K  /export/home/fsk141
rpool/swap                1019M   143G    16K  -
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This command shows pools/file systems. If you look you can see my two pools (nom, rpool) and the filesystems underneath the pools (ROOT, dump, export, swap)&lt;/p&gt;

&lt;p&gt;I would like to create subsets like the above (File Systems)&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;root@Nom:/nom# zfs create nom/backup
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So now if I do a zfs list I get the following:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;root@Nom:/nom# zfs list
NAME                       USED  AVAIL  REFER  MOUNTPOINT
nom                       97.5K  1.78T    18K  /nom
nom/backup                  18K  1.78T    18K  /nom/backup
rpool                     4.36G   142G    72K  /rpool
rpool/ROOT                2.37G   142G    18K  legacy
rpool/ROOT/opensolaris    2.37G   142G  2.24G  /
rpool/dump                1019M   142G  1019M  -
rpool/export                59K   142G    19K  /export
rpool/export/home           40K   142G    19K  /export/home
rpool/export/home/fsk141    21K   142G    21K  /export/home/fsk141
rpool/swap
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Since I’m going to be backing up to this file system I would like to turn on a couple little things… To get a listing of what zfs set can set then just type ‘zfs set’&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;root@Nom:/nom# zfs set compression=on nom/backup
root@Nom:/nom# zfs set sharenfs=rw nom/backup
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I’ve just setup automagical compression, along with a read/write nfs share for ‘/nom/backup’ Now all I need to do is setup nfs on my client machine to connect to the nfs server.&lt;/p&gt;

&lt;p&gt;Links:
&lt;a href="http://www.sun.com/bigadmin/features/articles/zfs_overview.jsp"&gt;http://www.sun.com/bigadmin/features/articles/zfs_overview.jsp&lt;/a&gt;
&lt;a href="http://blogs.sun.com/timthomas/entry/creating_zfs_file_systems_from"&gt;http://blogs.sun.com/timthomas/entry/creating_zfs_file_systems_from&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Guile History</title>
   <link href="http://fsk141.com/guile-arrow-fix" />
   <updated>2008-12-01T00:00:00-08:00</updated>
   <id>http://fsk141.com/guile-arrow-fix</id>
   <content type="html">&lt;p&gt;I got to liking guile right off the bat as a lisp working environment. Yet it bugged me that you couldn’t use the up and down arrows to see your previous entries. Well here is the fix:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;(use-modules (ice-9 readline)) (activate-readline)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you would like it to automagically be applied on startup then edit ~/.guile:
Add the following line:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;(use-modules (ice-9 readline)) (activate-readline)
&lt;/code&gt;&lt;/pre&gt;
</content>
 </entry>
 
 <entry>
   <title>OpenSolaris | Synergy</title>
   <link href="http://fsk141.com/solaris-synergy" />
   <updated>2008-11-24T00:00:00-08:00</updated>
   <id>http://fsk141.com/solaris-synergy</id>
   <content type="html">&lt;p&gt;Recently I’ve started using OpenSolaris 2008.11 for work and play. It’s kinda a pain to get used to cause I’m so used to the linux way of doing things.&lt;/p&gt;

&lt;p&gt;Such as:
Basic list all with ps:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Linux  |  OpenSolaris
---------------------
ps ax  |  ps -Af
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Services in OpenSolaris:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Linux     |  OpenSolaris
------------------------
service   |  svcs -a (list all services running)
init.d    |  svcadm (to start, stop, and restart)
rc.d      |
&lt;/code&gt;&lt;/pre&gt;

&lt;hr /&gt;

&lt;p&gt;/etc/synergy.conf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;section: screens
        Osol:
        Macarch:
end

section: links
        Osol:
                left = Macarch
        Macarch:
                right = Osol
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then all I have to do is run ‘synergys’ on the host computer (the one with the keyboard &amp;amp; mouse), and synergyc 10.200.2.10 (the ip address of the host)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>SICP, LISP, Clisp, GCL, Guile, LISP is kewl...</title>
   <link href="http://fsk141.com/sicp-lisp-clisp-gcl-guile-lisp-is-kewl" />
   <updated>2008-11-24T00:00:00-08:00</updated>
   <id>http://fsk141.com/sicp-lisp-clisp-gcl-guile-lisp-is-kewl</id>
   <content type="html">&lt;p&gt;So I’ve gone back to the stoneage, and am learning &lt;a href="http://en.wikipedia.org/wiki/Lisp_(programming_language)"&gt;LISP&lt;/a&gt; (circa 1958). I’m doing this not only to get a grasp on programming, but to learn the logic of programming. I’m going by the book and am using &lt;a href="http://mitpress.mit.edu/sicp"&gt;Structure and Interpretation of Computer Programs&lt;/a&gt; (SICP). It’s avaliable for free online, and is an awesome book. This sums up the book (it’s the first page):&lt;/p&gt;

&lt;p&gt;This book is dedicated, in respect and admiration, to the spirit that lives in the computer.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I think that it’s extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don’t think we are. I think we’re
responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all, I hope we don’t become missionaries. Don’t feel as if you’re Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don’t feel as if the key to successful computing is only in your hands. What’s in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Alan J. Perlis (April 1, 1922-February 7, 1990)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Onto the environment. I’ve found three LISP environments.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://clisp.cons.org"&gt;Clisp&lt;/a&gt; (General LISP)&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.gnu.org/software/gcl"&gt;GCL&lt;/a&gt; (General LISP)&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.gnu.org/software/guile/guile.html"&gt;Guile&lt;/a&gt; (Scheme)&lt;/p&gt;

&lt;p&gt;Since the book deals with scheme as opposed to general lisp, I’m probably going to use guile. I’ve just been introduced to the world of lisp, so my pick might change as time goes on.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Back into the strum of things</title>
   <link href="http://fsk141.com/back-into-the-strum-of-things" />
   <updated>2008-11-23T00:00:00-08:00</updated>
   <id>http://fsk141.com/back-into-the-strum-of-things</id>
   <content type="html">&lt;p&gt;I have happilly put my guitar back to good use. Along with my girlfriends Jasmine S35 by Takamine (I’ll prolly purchase soon). Anywho since I cant lead astray from computers very long I’ve found some neat little programs to help me out. &lt;/p&gt;

&lt;p&gt;First off is &lt;a href="http://www.tuxguitar.com.ar"&gt;TuxGuitar&lt;/a&gt;. TuxGuitar is awesome, it has tabs, notes, and uses midi to give you a wonderful nintendo experience of your favorite songs. It also accepts Guitar Pro files which makes it invaluable in learning with tabs.&lt;/p&gt;

&lt;p&gt;Second piece of goodness is &lt;a href="http://sourceforge.net/projects/gnuitar"&gt;GNUitar&lt;/a&gt;. GNUitar is a simple effects processor. It was easy to install, and works wonderfully.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Along with that I’m currently learning:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.ultimate-guitar.com/tabs/e/ensiferum/eternal_wait_ver2_guitar_pro.htm"&gt;Eternal Wait (link to GP tablature)&lt;/a&gt; by &lt;a href="http://www.ensiferum.com"&gt;Ensiferum&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;amp;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.ultimate-guitar.com/tabs/l/led_zeppelin/moby_dick_guitar_pro.htm"&gt;Moby Dick (link to GP tablature)&lt;/a&gt; by &lt;a href="http://www.ledzeppelin.com"&gt;Led Zeppelin&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 
</feed>
