<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>[:: JBL DATA ::]</title>
	<link>http://www.jbldata.com</link>
	<description>I'm J. Bobby Lopez.  Welcome to my home (and my data) on the web.</description>
	<pubDate>Tue, 24 Aug 2010 16:37:44 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.2</generator>
	<language>en</language>
			<item>
		<title>Jolicloud is of the Awesome</title>
		<link>http://www.jbldata.com/?p=90</link>
		<comments>http://www.jbldata.com/?p=90#comments</comments>
		<pubDate>Thu, 22 Jul 2010 16:29:18 +0000</pubDate>
		<dc:creator>J. Bobby Lopez</dc:creator>
		
		<category><![CDATA[Computing]]></category>

		<category><![CDATA[Fun Stuff]]></category>

		<category><![CDATA[Insightful Insights]]></category>

		<category><![CDATA[Cloud]]></category>

		<category><![CDATA[Jolicloud]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Media Center]]></category>

		<category><![CDATA[Netbook]]></category>

		<category><![CDATA[Nettop]]></category>

		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.jbldata.com/?p=90</guid>
		<description><![CDATA[
So if you haven&#8217;t heard of Jolicloud http://www.jolicloud.com/, then you need to download and install it now.  It&#8217;s an Ubuntu based OS (a self-proclaimed &#8220;Cloud OS&#8221;) specifically designed for Netbooks, and it rocks.  I have Jolicloud installed on my Samsung N110 Netbook, and I use it for everything from e-mail to games (snes9x) [...]]]></description>
			<content:encoded><![CDATA[<p><center><img width="500" src="http://www.windracer.net/blog/wp-content/uploads/2009/08/jolicloud-nbr.png" border="0" align="center"></center></p>
<p>So if you haven&#8217;t heard of Jolicloud <a href="http://www.jolicloud.com/">http://www.jolicloud.com/</a>, then you need to download and install it now.  It&#8217;s an Ubuntu based OS (a self-proclaimed &#8220;Cloud OS&#8221;) specifically designed for Netbooks, and it rocks.  I have Jolicloud installed on my Samsung N110 Netbook, and I use it for everything from e-mail to games (snes9x) to work (Perl/Vim/Screen).  Now what makes Jolicloud super-awesome is that it treats web applications no differently from desktop applications.  Each application gets it&#8217;s own icon on the &#8220;Home screen&#8221;.  It&#8217;s also socially aware - it can connect to facebook and allow you to search for applications and/or people who&#8217;ve used those applications, so that you can ask them questions and get guidance on the tools you&#8217;re trying to use.</p>
<p>The interface is very slick - big icons and a clean method of navigation to the lesser used functions of a standard Gnome/Ubuntu desktop.  The most-awesomest part is that once you load up a terminal, you have full access to the command-line and all Ubuntu apt repositories.</p>
<p>Jolicloud isn&#8217;t just for netbooks!  I&#8217;ve also installed it on my Acer Veriton (similar to the Acer Revo), and am using it as a media center OS.  Jolicloud also comes in an &#8220;express&#8221; edition, which allows you to install it under windows, where it will come up as a secondary OS option under the windows boot-loader.</p>
<p>If you have a netbook, nettop, or any light-weight PC, then install Jolicloud.  Highly recommended.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jbldata.com/?feed=rss2&amp;p=90</wfw:commentRss>
		</item>
		<item>
		<title>Diving in with Arch Linux</title>
		<link>http://www.jbldata.com/?p=89</link>
		<comments>http://www.jbldata.com/?p=89#comments</comments>
		<pubDate>Wed, 28 Apr 2010 04:47:55 +0000</pubDate>
		<dc:creator>J. Bobby Lopez</dc:creator>
		
		<category><![CDATA[Computing]]></category>

		<category><![CDATA[Acer Aspire Revo]]></category>

		<category><![CDATA[Arch Linux]]></category>

		<category><![CDATA[Debian]]></category>

		<category><![CDATA[Ubuntu CUPS]]></category>

		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://www.jbldata.com/?p=89</guid>
		<description><![CDATA[ The Problem

The time had come for me to &#8220;invest&#8221; in getting some new equipment.  The only workstation that I had up until recently was a company laptop which I had toted back and forth between VMware and my home office.  I keep my personal documents on removable storage, but that doesn&#8217;t really [...]]]></description>
			<content:encoded><![CDATA[<p><B> The Problem</B></p>
<p/>
<p>The time had come for me to &#8220;invest&#8221; in getting some new equipment.  The only workstation that I had up until recently was a company laptop which I had toted back and forth between VMware and my home office.  I keep my personal documents on removable storage, but that doesn&#8217;t really help when you don&#8217;t have a workstation at home, so lugging the laptop around with me was a must.</p>
<p>Don&#8217;t get me wrong, I have systems, but their mostly systems running as file servers or VM servers doing various little things automagically, and they&#8217;re not sitting in or around my actual desk at home.  Also, my printers/scanner at home relied on my laptop to be of any use.  It was time to fix all of these unecessary grievences.</p>
<p><B>The Dilemma</B></p>
<p/>
<p>For the past couple of weeks I had been thinking hard about what kind of system I should buy - should it be a powerful / modern desktop system with lots of RAM and screaming CPU/Video?  Or would it be a powerful laptop/notebook which would serve as a desktop replacement?  Should I go for the i3, i5, or i7 processor?  ATI or Nvidia?  What kind of budget was I looking at?</p>
<p>All of these questions plagued me for quite some time (okay, not that long.. I admit I&#8217;m a bit of an impulse buyer).  I&#8217;ve spent long enough thinking about this that I realized a lot about myself.  For one, I&#8217;m not a gamer.   I was once one of those people who would have been ecstatic about getting next-gen hardware to play the lastest power-hungry games.  Not any more.. and not for quite some time.  The last time I seriously played a PC game was about 3 years ago.  When I say &#8220;seriously&#8221;, I mean played it regulary, at least once a week.  The last game I played was a game that I was really into; it was X2 of the X-Series space combat simulators.</p>
<p>Since then, I&#8217;ve touched a game or two, on and off, but the has fascination is no longer there.  i&#8217;m more interested in hacking around with open source programs and becoming a better developer.</p>
<p><B>The Solution</B></p>
<p/>
Since I wasn&#8217;t going to focus on gaming and media for my new system purchase, this opened the door for a lot of possibilities that I haven&#8217;t considered, and some unexpected disappointments.  First off, since I wasn&#8217;t going to plop $1,000.00 on a single system, I could, theoretically buy two lower-powered systems.  And that&#8217;s exactly what I did.  Instead of going with a full-fledged desktop or power-house laptop, I ended up buying an Acer Aspire Revo net-top unit as my primary workstation, and a Samsung N110 Netbook as my portable.  This Revo is awesome! It has 2GB of RAM (upgradable to 4), an Nvidia ION chipset, and an Intel Atom processor (dual-core).  I didn&#8217;t need much more than this for my purposes, this was perfect.  The Samsung N110 was also a nice little beauty.  It was a Atom processor with integrated graphics, but was light, pretty, and had a 6-cell battery, which meant that it would last about 8 hours during heavy use.  I quickly installed JoliCloud Express on the Netbook, and have been very happy with it ever since.</p>
<p><B>The Disappointment (In myself)</B></p>
<p/>
The disappointment that I experienced was not in the purchase or the hardware, but it was in the fact that I hesitated for a long time to wipe away the Revo&#8217;s bundled OS to install Linux.  The OS that the Revo came with was Windows 7 Home edition (the Samsung netbook had Windows XP).  I haven&#8217;t used windows as my primary OS in years, and have always been proud to say so.  For the last four years or so, I&#8217;ve been using Ubuntu (severely customized), and before that I was using Debian.  When I initially started up the Revo, I was impressed by the windows 7 user interface, the nice colors, the clean lines, and the fact that it picked up all my hardware.  It was pretty simple, and I have to admit somewhat luring.  I&#8217;m definately not the little hacker I was 10 years ago.  I don&#8217;t have time to spend hours hacking away into the wee morning just on my OS configuration.  At least that&#8217;s what I keep telling myself :)  But then it dawned on me - that&#8217;s how I got where I am today, by embracing curiousity, and defying conformity. That&#8217;s where life becomes interesting and liberating, and that&#8217;s where I feel at home.  All these thoughts of nostalgia hit me shortly after I hard-reset the Revo, and windows 7 came up saying &#8220;system wasn&#8217;t shut down correctly - use safe mode&#8221; or something to that effect.  There was no way for me to tell it to disregard the unclean boot-up, it persisted to ask me to go into safe mode, with no specific explanation.  That&#8217;s when I wish I had a grub prompt or command line handy.</p>
<p/>
<p><B>Diving in with Arch Linux</B></p>
<p/>
After coming to my senses, I realized that I definately didn&#8217;t want to go back to using Ubuntu for my primary workstation.  For a while I&#8217;ve been feeling like Ubuntu has lost much of it&#8217;s luster, especially for someone like me who loves simplicity and minimalism over fancy GUIs and extra features.  I wanted a distribution that tried to stay at the cutting edge with it&#8217;s packages, but didn&#8217;t screw with the basics of linux so much that you&#8217;re forced to use GUIs to configure your OS.  Debian didn&#8217;t fit the bill here - it&#8217;s great for servers - rock solid, but it&#8217;s not that great if you want a cutting edge workstation without having to compile things from source.</p>
<p/>
<p>After a little bit of reading and browsing distrowatch.com, I came across Arch Linux (which I&#8217;ve known of only in passing before), and decided that this was the OS for me.  The Arch Linux community is small enough that I could make some significant contributions without much effort.  The distribution itself is awesome, very clean, and very minimal.  And most importantly, all of the system configurations are done by editing text files!</p>
<p/>
<p><B>The Arch Way</B></p>
<p/>
Installing Arch was relatively straight-forward (IMO).  It wasn&#8217;t as easy as installing, say, Linux Mint, but it also wasn&#8217;t as hard as installing Debian 3.0 either.  The installation dialogs were ncurses based, but they were descriptive, linear, and logical.   When it came time to supply arguments for the initial configuration of the packages I selected, they were all text files (very well documented) which I could edit with vim!  I think at that point I knew that was about to embrace a distribution that was very special indeed.  This distro was going back to basics, and not flooding it&#8217;s users with fancy splash screens and progress meters, it was doing the needful, and it was doing it well.</p>
<p/>
<p>I still have a lot more to learn about Arch, as I&#8217;ve only scratched the surface so far.  I&#8217;ve been able to set up sound (with alsa) and video using the latest Nvidia drivers.  I&#8217;ve configured Xmonad as my window manager, and have gotten a handle of how to query and install packages with &#8220;pacman&#8221;, the Arch package installer.  The only real problem that I&#8217;ve run into is setting up CUPS for my printers.  After some research, it seems that the version of CUPS (1.4.3-2) available in the Arch packages is the latest version available from the CUPS source repository, and that I may have to downgrade (to 1.3.9) it in order to get my printers working.</p>
<p/>
<p>Overall, I like what I see so far with Arch.  I expect to post more on my experiences with it as I learn.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jbldata.com/?feed=rss2&amp;p=89</wfw:commentRss>
		</item>
		<item>
		<title>Syncronizing Xymon&#8217;s &#8216;bb-hosts&#8217; Configurations</title>
		<link>http://www.jbldata.com/?p=88</link>
		<comments>http://www.jbldata.com/?p=88#comments</comments>
		<pubDate>Thu, 28 Jan 2010 20:12:05 +0000</pubDate>
		<dc:creator>J. Bobby Lopez</dc:creator>
		
		<category><![CDATA[Computing]]></category>

		<category><![CDATA[Alerting]]></category>

		<category><![CDATA[bb-hosts]]></category>

		<category><![CDATA[Hobbit]]></category>

		<category><![CDATA[Monitoring]]></category>

		<category><![CDATA[synchronization]]></category>

		<category><![CDATA[Xymon]]></category>

		<guid isPermaLink="false">http://www.jbldata.com/?p=88</guid>
		<description><![CDATA[I&#8217;ve been using Xymon (formerly known as &#8220;Hobbit&#8221;) for a long time.  In most situations, I have Xymon running in a redundant configuration, with two or more instances of Xymon working together to monitor a network.
Even though Xymon works very well, a single change to the primary server&#8217;s configuration file (the &#8220;bb-hosts&#8221; file) means that [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://www.xymon.com/" title="www.xymon.com">Xymon</a> (formerly known as &#8220;Hobbit&#8221;) for a long time.  In most situations, I have Xymon running in a redundant configuration, with two or more instances of Xymon working together to monitor a network.</p>
<p>Even though Xymon works very well, a single change to the primary server&#8217;s configuration file (the &#8220;bb-hosts&#8221; file) means that you have to make the same change to all other &#8216;bb-hosts&#8217; files in all other Xymon instances.</p>
<p>There are some creative ways to eliminate the drudgery of updating all these files any time a change to the primary file is necessary.  One method, for example would be to have the master file exported via NFS to all the other Xymon server instances, and each of those instances would sym-link to that primary &#8216;bb-hosts&#8217; file from their local mount of that NFS export.</p>
<p>I don&#8217;t like the NFS export idea, because if the primary server has a problem, and the NFS export is no longer available, all instances of Xymon would break - badly.</p>
<p>Instead, I&#8217;ve opted for automatically synchronizing the &#8216;bb-hosts&#8217; file across all Xymon instances via the use of apache, cron, a sym-link, and a simple bash script.</p>
<p>Here&#8217;s  how it works:</p>
<ul>
<li>On the primary Xymon instance, sym-link &#8216;/home/xymon/server/etc/bb-hosts&#8217; to &#8216;/var/www/bb-hosts&#8217;.</li>
<li>On the other instances of Xymon, run a bash script which grabs the primary server&#8217;s &#8216;bb-hosts&#8217; via HTTP, which does some simple comparisons, and over-writes the local Xymon &#8216;bb-hosts&#8217; if changes are detected.</li>
<li>Automat this script with cron.</li>
</ul>
<p>Perhaps the trickiest part of doing this is the actual script used to grab, compare, and over-write the &#8216;bb-hosts&#8217; file for the other instances of Xymon.  The script I&#8217;ve written below grabs the primary &#8216;bb-hosts&#8217; file, and does a simple MD5 comparison with md5sum, and if it detects a change in the &#8216;bb-hosts&#8217; file, it will send an e-mail to notify me that this change has occurred, along with details on what has changed.</p>
<p>Here&#8217;s the script:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="bash"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #007800;">REMOTE_BB_HOSTS=</span><span style="color: #ff0000;">&quot;/tmp/bb-hosts&quot;</span>
<span style="color: #007800;">LOCAL_BB_HOSTS=</span><span style="color: #ff0000;">&quot;/home/xymon/server/etc/bb-hosts&quot;</span>
<span style="color: #007800;">BB_HOSTS_DIFFS=</span><span style="color: #ff0000;">&quot;/tmp/bb-hosts-diffs&quot;</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>somewebhost.domain.com<span style="color: #000000; font-weight: bold;">/</span>bb-hosts -qO <span style="color: #ff0000;">&quot;$REMOTE_BB_HOSTS&quot;</span>
&nbsp;
<span style="color: #007800;">LOCAL_MD5=</span><span style="color: #000000; font-weight: bold;">`</span>md5sum <span style="color: #007800;">$LOCAL_BB_HOSTS</span>  <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cut</span> -d <span style="color: #ff0000;">&quot; &quot;</span> -f <span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #007800;">REMOTE_MD5=</span><span style="color: #000000; font-weight: bold;">`</span>md5sum  <span style="color: #007800;">$REMOTE_BB_HOSTS</span>  <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cut</span> -d <span style="color: #ff0000;">&quot; &quot;</span> -f <span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">`</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#echo &quot;$LOCAL_MD5&quot;</span>
<span style="color: #666666; font-style: italic;">#echo &quot;$REMOTE_MD5&quot;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$LOCAL_MD5&quot;</span> <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #ff0000;">&quot;$REMOTE_MD5&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Generated by $0&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$BB_HOSTS_DIFFS</span>;
        <span style="color: #c20cb9; font-weight: bold;">diff</span> <span style="color: #007800;">$LOCAL_BB_HOSTS</span> <span style="color: #007800;">$REMOTE_BB_HOSTS</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$BB_HOSTS_DIFFS</span>;
        <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #007800;">$REMOTE_BB_HOSTS</span> <span style="color: #007800;">$LOCAL_BB_HOSTS</span>;
        mail -s <span style="color: #ff0000;">&quot;Xymon: monitor-02 bb-hosts updated&quot;</span> alertme<span style="color: #000000; font-weight: bold;">@</span>email.com <span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #007800;">$BB_HOSTS_DIFFS</span>;
<span style="color: #000000; font-weight: bold;">fi</span></pre></td></tr></table></div>

<p>If you need a way to keep your Xymon &#8216;bb-hosts&#8217; files in sync, something along the lines of the above script just may be what you&#8217;re looking for.  If you&#8217;re currently accomplishing the same thing in an interesting way, please post a comment and let me know!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jbldata.com/?feed=rss2&amp;p=88</wfw:commentRss>
		</item>
		<item>
		<title>Using DZEN with Xmonad to view Currently Active Network Shares</title>
		<link>http://www.jbldata.com/?p=87</link>
		<comments>http://www.jbldata.com/?p=87#comments</comments>
		<pubDate>Wed, 27 Jan 2010 10:22:26 +0000</pubDate>
		<dc:creator>J. Bobby Lopez</dc:creator>
		
		<category><![CDATA[Computing]]></category>

		<category><![CDATA[Fun Stuff]]></category>

		<category><![CDATA[Dzen]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Notification Desktop Alerts]]></category>

		<category><![CDATA[Tiling Window Manager]]></category>

		<category><![CDATA[Xmonad]]></category>

		<guid isPermaLink="false">http://www.jbldata.com/?p=87</guid>
		<description><![CDATA[Currently Xmonad is my window manager of choice, because it&#8217;s clean, functional, and removes all the unnecessary crap that most modern desktops usually come with by default.
Although Xmonad is very cool, there are still some things that it&#8217;s lacking as far as functionality.  Much of this is made up for by the use of [...]]]></description>
			<content:encoded><![CDATA[<p>Currently <a href="http://xmonad.org/">Xmonad</a> is my window manager of choice, because it&#8217;s clean, functional, and removes all the unnecessary crap that most modern desktops usually come with by default.</p>
<p>Although Xmonad is very cool, there are still some things that it&#8217;s lacking as far as functionality.  Much of this is made up for by the use of <a href="http://code.haskell.org/~arossato/xmobar/">Xmobar</a>, <a href="http://www.kfsoft.com/trayer/intro.htm">Trayer</a>, and other Xmonad compatible plugins and applications.  I recently came across another one of these applications, and found it to be an exciting find.  The tool is called <a href="http://dzen.geekmode.org/">Dzen</a>.</p>
<p>Dzen is a desktop messaging tool which allows you to easily write some useful scripts, and have the output of those scripts become part of your desktop interface.  Many examples of how this works are available on the Dzen webite, but some examples are as follows:</p>
<ul>
<li>CPU Monitoring graphs</li>
<li>dmesg log monitoring</li>
<li>Notification of system events which are commonly found in syslog</li>
<li>E-mail or twitter alerts shown on your desktop as they come in</li>
<li>Custom calendar alerts</li>
<li>and much more..</li>
</ul>
<p>Now this idea is not new - I remember there being a project called &#8220;OSD&#8221; (on-screen display) which essentially allows you to do the same thing.  However, I think OSD was meant as more of an single message notification system, rather than the way that Dzen works, with master and slave windows, and the ability to implement menus, etc.</p>
<p>In any case, I decided to give Dzen a try, and am happy with the tool that I&#8217;ve been able to whip up.  For the longest while, I wanted the ability for my xmonad environment to tell me, at a quick glance, what network mounts and removable devices I currently have mounted.  I&#8217;m sure that this kind of information is easily available on many bloated desktops, including GNOME and KDE, but I was looking for something simple, small and configurable.  Didn&#8217;t find it, so I ended up writing my own - with the help of Dzen.</p>
<p>Here are a couple of screenshots of how it looks:</p>
<p align="center">Dzen &#8220;Active Mounts&#8221; widget (mouse out):<br />
<a href="http://www.flickr.com/photos/28669980@N05/4308886522/" class="flickr-image" title="dzen-1"><img src="http://farm5.static.flickr.com/4049/4308886522_d7004f94e2.jpg" alt="dzen-1" /></a></p>
<p align="center">&nbsp;</p>
<p align="center">Dzen &#8220;Active Mounts&#8221; widget (mouse over):<br />
<a href="http://www.flickr.com/photos/28669980@N05/4308886524/" class="flickr-image" title="dzen-2"><img src="http://farm3.static.flickr.com/2763/4308886524_edd63e8a9f.jpg" alt="dzen-2" /></a></p>
<p align="center">&nbsp;</p>
<p>I wrote the scripts fairly quickly, so I&#8217;m sure they could be written better, but I think they will provide those of you who are interested, a good example of how to implement a regularly updated notification widget with Dzen.</p>
<p>The scripts are written to check for changes in the mount list, and only update Dzen when a change is detected.  It is written in two components:</p>
<p>1) A perl script which captures the mount information in the exact format that I want, and<br />
2) a bash script which handles loading Dzen</p>
<p>Here&#8217;s the source code (perl script):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
</pre></td><td class="code"><pre class="perl"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Written by J. Bobby Lopez &lt;jbl@jbldata.com&gt; - 27 Jan 2010</span>
<span style="color: #666666; font-style: italic;"># Script to -be loaded- by the 'dzen-mounts.bash' script</span>
<span style="color: #666666; font-style: italic;"># This script can also be run by itself, if you want to dump a</span>
<span style="color: #666666; font-style: italic;"># custom plain-text table of your network shares or removable</span>
<span style="color: #666666; font-style: italic;"># devices.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># This script is meant to be utilized the Dzen notification system</span>
<span style="color: #666666; font-style: italic;"># Information on Dzen can be found at http://dzen.geekmode.org/</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> warnings<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> Data<span style="color: #339933;">::</span><span style="color: #006600;">Dumper</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> Text<span style="color: #339933;">::</span><span style="color: #006600;">Table</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@types</span> <span style="color: #339933;">=</span> <span style="color: #000066;">qw</span><span style="color: #009900;">&#40;</span> cifs ntfs davfs sshfs smbfs vfat <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> getmounts
<span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@valid_mounts</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;"># to hold mounts we want</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@all_mounts</span> <span style="color: #339933;">=</span> <span style="color: #000066;">split</span> <span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/\n/</span><span style="color: #339933;">,</span> `mount`<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$mount</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@all_mounts</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$type</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@types</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">$mount</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">m/$type/</span> <span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                <span style="color: #000066;">push</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@valid_mounts</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$mount</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000066;">return</span> <span style="color: #0000ff;">@valid_mounts</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> getsizes
<span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@mounts</span> <span style="color: #339933;">=</span> getmounts<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@list</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$mount</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@mounts</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@cols</span> <span style="color: #339933;">=</span> <span style="color: #000066;">split</span> <span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/\ /</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$mount</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@df_out</span> <span style="color: #339933;">=</span> <span style="color: #000066;">split</span> <span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/\n/</span><span style="color: #339933;">,</span> `df <span style="color: #339933;">-</span>h <span style="color: #0000ff;">$cols</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span>`<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #0000ff;">$df_out</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> .<span style="color: #339933;">=</span> <span style="color: #0000ff;">$df_out</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #b1b100;">if</span> <span style="color: #000066;">defined</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$df_out</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #0000ff;">$df_out</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">s/[[:space:]]+/\ /</span><span style="color: #339933;">;</span>
	    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@df_cols</span> <span style="color: #339933;">=</span> <span style="color: #000066;">split</span> <span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/[[:space:]]+/</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$df_out</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066;">push</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@list</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">@df_cols</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000066;">return</span> <span style="color: #0000ff;">@list</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$tb</span> <span style="color: #339933;">=</span> Text<span style="color: #339933;">::</span><span style="color: #006600;">Table</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span>
	<span style="color: #ff0000;">&quot;Filesystem&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Size&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Used&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Avail&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Use%&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Mounted on&quot;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$tb</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">load</span><span style="color: #009900;">&#40;</span>getsizes<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Active Mounts<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">print</span> <span style="color: #0000ff;">$tb</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>And the bash script:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
</pre></td><td class="code"><pre class="bash"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Script to load Dzen with output from 'dzen-mounts.pl' script</span>
<span style="color: #666666; font-style: italic;"># Written by J. Bobby Lopez &lt;jbl@jbldata.com&gt; - 27 Jan 2010</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># This script utilizes the Dzen notification system</span>
<span style="color: #666666; font-style: italic;"># Information on Dzen can be found at http://dzen.geekmode.org/</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> mountlines
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        <span style="color: #007800;">LINES=</span><span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">perl</span> dzen-mounts.pl<span style="color: #000000; font-weight: bold;">|</span>wc -l<span style="color: #000000; font-weight: bold;">`</span>;
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;$LINES&quot;</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> freshmounts
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        <span style="color: #007800;">OUTPUT=</span><span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">perl</span> dzen-mounts.pl<span style="color: #000000; font-weight: bold;">`</span>;
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;$OUTPUT&quot;</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> rundzen
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        <span style="color: #007800;">OUTPUT=</span><span style="color: #000000; font-weight: bold;">`</span>freshmounts<span style="color: #000000; font-weight: bold;">`</span>;
        <span style="color: #007800;">MOUNTLINES=</span><span style="color: #000000; font-weight: bold;">`</span>mountlines<span style="color: #000000; font-weight: bold;">`</span>;
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;$OUTPUT&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> dzen2 -p -l <span style="color: #ff0000;">&quot;$MOUNTLINES&quot;</span> -u -x <span style="color: #000000;">500</span> -y <span style="color: #000000;">0</span> -w <span style="color: #000000;">600</span> -h <span style="color: #000000;">12</span> -tw <span style="color: #000000;">120</span> -ta l <span style="color: #000000; font-weight: bold;">&amp;</span>
        <span style="color: #007800;">PID=</span><span style="color: #000000; font-weight: bold;">`</span>pgrep -f <span style="color: #ff0000;">&quot;dzen2 -p -l $MOUNTLINES -u -x 500 -y 0 -w 600 -h 12 -tw 120 -ta l&quot;</span><span style="color: #000000; font-weight: bold;">`</span>;
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;$PID&quot;</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> killdzen
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        <span style="color: #007800;">PID=</span><span style="color: #ff0000;">&quot;$1&quot;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #ff0000;">&quot;$PID&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
            <span style="color: #007800;">MOUNTLINES=</span><span style="color: #000000; font-weight: bold;">`</span>mountlines<span style="color: #000000; font-weight: bold;">`</span>;
            <span style="color: #007800;">PID=</span><span style="color: #000000; font-weight: bold;">`</span>pgrep -f <span style="color: #ff0000;">&quot;dzen2 -p -l $MOUNTLINES -u -x 500 -y 0 -w 600 -h 12 -tw 120 -ta l&quot;</span><span style="color: #000000; font-weight: bold;">`</span>;
        <span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$PID&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
            <span style="color: #666666; font-style: italic;">#echo &quot;Killing $PID..&quot;;  # DEBUG STATEMENT</span>
            <span style="color: #c20cb9; font-weight: bold;">kill</span> <span style="color: #ff0000;">&quot;$PID&quot;</span>;
        <span style="color: #000000; font-weight: bold;">fi</span>;
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> checkchanges
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #c20cb9; font-weight: bold;">true</span>; <span style="color: #000000; font-weight: bold;">do</span>
        <span style="color: #007800;">NEW=</span><span style="color: #000000; font-weight: bold;">`</span>freshmounts<span style="color: #000000; font-weight: bold;">`</span>;
        <span style="color: #666666; font-style: italic;">#echo &quot;$NEW - new&quot;;  # DEBUG STATEMENT</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$OLD&quot;</span> <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #ff0000;">&quot;$NEW&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
            killdzen <span style="color: #ff0000;">&quot;$PID&quot;</span>;
            rundzen;
            <span style="color: #666666; font-style: italic;">#echo &quot;$PID started&quot;;  # DEBUG STATEMENT</span>
            <span style="color: #007800;">OLD=</span><span style="color: #ff0000;">&quot;$NEW&quot;</span>;
            <span style="color: #666666; font-style: italic;">#echo &quot;$OLD - old updated&quot;  # DEBUG STATEMENT</span>
        <span style="color: #000000; font-weight: bold;">fi</span>
        <span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">1</span>;
    <span style="color: #000000; font-weight: bold;">done</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
checkchanges</pre></td></tr></table></div>

<p>You can also download the scripts in a tgz archive <a href="http://www.jbldata.com/files/dzen-mount-scripts.tgz">here</a>.  Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jbldata.com/?feed=rss2&amp;p=87</wfw:commentRss>
		</item>
		<item>
		<title>Nationwide Blackberry Outage - 22/23 December 2009</title>
		<link>http://www.jbldata.com/?p=86</link>
		<comments>http://www.jbldata.com/?p=86#comments</comments>
		<pubDate>Wed, 23 Dec 2009 07:44:19 +0000</pubDate>
		<dc:creator>J. Bobby Lopez</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Alerts]]></category>

		<category><![CDATA[Blackberry]]></category>

		<category><![CDATA[Blackberry Outage]]></category>

		<category><![CDATA[EVIL]]></category>

		<category><![CDATA[FAIL]]></category>

		<category><![CDATA[Monitoring]]></category>

		<category><![CDATA[Network Issues]]></category>

		<category><![CDATA[Rogers]]></category>

		<guid isPermaLink="false">http://www.jbldata.com/?p=86</guid>
		<description><![CDATA[Well, my Blackberry is officially offline because of a nationwide blackberry outage currently taking place.  I use my Blackberry to receive messages from monitoring systems at VMware, so I&#8217;m severely pissed.  I haven&#8217;t received any e-mails for several hours! The only way I knew that something was wrong, is that I have a [...]]]></description>
			<content:encoded><![CDATA[<p>Well, my Blackberry is officially offline because of a <a href="http://news.cnet.com/8301-17938_105-10420894-1.html">nationwide blackberry outage</a> currently taking place.  I use my Blackberry to receive messages from monitoring systems at VMware, so I&#8217;m severely pissed.  I haven&#8217;t received any e-mails for several hours! The only way I knew that something was wrong, is that I have a sanity e-mail sent to myself every 2 hours.  When I don&#8217;t see that e-mail, something evil is happening.</p>
<p>For a brief moment, I thought I was going to have to call and bitch at Rogers, but they&#8217;re not at fault this time.</p>
<p>Real time updates on the situation via Twitter is nice, but a working Blackberry would be nicer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jbldata.com/?feed=rss2&amp;p=86</wfw:commentRss>
		</item>
		<item>
		<title>Xmonad: For Hardcore Desktop User Interface Efficiency</title>
		<link>http://www.jbldata.com/?p=85</link>
		<comments>http://www.jbldata.com/?p=85#comments</comments>
		<pubDate>Fri, 13 Nov 2009 20:23:01 +0000</pubDate>
		<dc:creator>J. Bobby Lopez</dc:creator>
		
		<category><![CDATA[Computing]]></category>

		<category><![CDATA[Fun Stuff]]></category>

		<category><![CDATA[Getting Organized]]></category>

		<category><![CDATA[Desktop]]></category>

		<category><![CDATA[Efficiency]]></category>

		<category><![CDATA[GNU Screen]]></category>

		<category><![CDATA[Haskell]]></category>

		<category><![CDATA[Ratpoison]]></category>

		<category><![CDATA[Stumpwm]]></category>

		<category><![CDATA[UI]]></category>

		<category><![CDATA[Window Manager]]></category>

		<category><![CDATA[Xmonad]]></category>

		<guid isPermaLink="false">http://www.jbldata.com/?p=85</guid>
		<description><![CDATA[Long time linux/unix hackers know of the plethora of window managers and user interfaces that have been and currently are available for Linux and BSD operating systems.  I&#8217;ve had great times in the past trying out different window managers such as Elightenment, Sawfish, Black Box, IceWM, xfwm, KDE, Gnome,  and others.  These days the two [...]]]></description>
			<content:encoded><![CDATA[<p>Long time linux/unix hackers know of the plethora of window managers and user interfaces that have been and currently are available for Linux and BSD operating systems.  I&#8217;ve had great times in the past trying out different window managers such as Elightenment, Sawfish, Black Box, IceWM, xfwm, KDE, Gnome,  and others.  These days the two most popular which are shipped with the more popular distributions (Fedora, Ubuntu) are KDE and Gnome.</p>
<p>However, I remember back in the day when I was using a Enlightenment, or Ratpoison, doing strange and cool things (at the time) like applying transparencies to your windows and modifying the the window borders to be anything but normal and square.</p>
<p>I used to share screenshots of my desktop with others who are also into &#8220;desktop eyecandy&#8221;, where I&#8217;d have floating or docked window maker panels, and monitoring applets anchored to the desktop as if they were part of the background wallpaper.. and this was around 1999.  It was fun times.</p>
<p>One of the more interesting things that I was into at the time was increasing the efficiency and usability of my desktop by trying to reduce the need to reach for my mouse.  I&#8217;ve been very accustomed to this already being user of vi and the GNU Screen terminal multiplexor, but the window managers never seemed to try to attain the same level &#8220;hacker cool&#8221;.  That is, of course until I came across <a href="http://en.wikipedia.org/wiki/Ratpoison" title="Ratpoison Window Manager">Ratpoision</a>. Ratpoison was exactly what the name implied, a window manager that killed your dependency on the mouse (or rat).  It was awesome, but it wasn&#8217;t scalable and didn&#8217;t evolve much to keep up with modern technological advancements and requirements such as multi-monitor support.</p>
<p>I recently thought that those days were long lost, until I recently had the urge to streamline my desktop environment.  I now have a 28&#8243; Monitor, and was certain there was a better way to interact with the desktop than the standard Ubuntu/Gnome environment.  So I went looking.  I started looking of course at things I was already familiar with - I looked up Ratpoision to see if there were any major improvements over the years.</p>
<p>I took a look at a Ratpoison again, but it was showing it&#8217;s age.  I looked at it&#8217;s successor, <a href="http://en.wikipedia.org/wiki/Stumpwm" title="Stumpwm Window Manager">Stumpwm</a>, but I didn&#8217;t feel the love.  Then I tried out <a href="http://en.wikipedia.org/wiki/Xmonad" title="Xmonad Window Manager">Xmonad,</a> created by Spencer Janssen, Don Stewart, and Jason Creighton - and written in <a href="http://en.wikipedia.org/wiki/Haskell_(programming_language)" title="Haskell Programming Language">Haskell</a>.  I immediately fell in love.</p>
<p>If you haven&#8217;t used GNU Screen, Gnome Multi-Terminal, Ratpoision, or any minimalist Window Manager before, then it will be hard to explain why Xmonad is worth your time.  Instead, visit the Xmonad website here: <a href="http://www.xmonad.org/" title="Xmonad">http://www.xmonad.org/</a></p>
<p>Here are some suggestions on how get Xmonad working on Ubuntu 8.10:</p>
<p>Install Xmonad:</p>

<div class="wp_syntax"><div class="code"><pre class="perl">apt<span style="color: #339933;">-</span>get install xmonad</pre></div></div>

<p>We&#8217;re going to create another X window session, so that we don&#8217;t mess with your existing one.  That way, if you don&#8217;t like Xmonad, you can go back to using your existing window manager without worrying about breaking your configuration.</p>
<p>Set up your second X window session.  Press &#8220;ctrl + alt + f2&#8243; - this will take you to the command-line terminal where you will start your second X session.  Start the session using following command:</p>

<div class="wp_syntax"><div class="code"><pre class="perl">xinit <span style="color: #339933;">--</span> <span style="color: #339933;">:</span><span style="color: #cc66cc;">1</span> vt12</pre></div></div>

<p>This will start up another X session which will sit at virtual terminal 12 - meaning that you have to press &#8216;ctrl-alt-F12&#8242; to get to it.</p>
<p>Once at your new X session, you should see nothing more than an plain old xterm window.  Type &#8220;xmonad&#8217;, and the terminal window should now be maximized.  Xmonad is now running.</p>
<p>Type &#8216;man xmonad&#8217; to view the help documentation on how to use it.  It&#8217;s pretty straight forward, and a joy to use!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jbldata.com/?feed=rss2&amp;p=85</wfw:commentRss>
		</item>
		<item>
		<title>Recession, War, Politics, Poverty&#8230;. Software Development?</title>
		<link>http://www.jbldata.com/?p=84</link>
		<comments>http://www.jbldata.com/?p=84#comments</comments>
		<pubDate>Fri, 17 Jul 2009 05:04:04 +0000</pubDate>
		<dc:creator>J. Bobby Lopez</dc:creator>
		
		<category><![CDATA[Computing]]></category>

		<category><![CDATA[Insightful Insights]]></category>

		<category><![CDATA[Personal]]></category>

		<category><![CDATA[Objectivism]]></category>

		<category><![CDATA[Politics]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Rational Self-interest]]></category>

		<category><![CDATA[Selfishness]]></category>

		<category><![CDATA[Software Development Ayn Rand]]></category>

		<category><![CDATA[Strengths and Weaknesses]]></category>

		<category><![CDATA[War]]></category>

		<guid isPermaLink="false">http://jbldata.com/?p=84</guid>
		<description><![CDATA[The way things are these days, you&#8217;d think that I, like I would imagine many other people in the world, would be thinking about money, the recession, the potential for war between countries who have been flirting with the bomb, my mother and the sale of her house, poverty in Africa, and the general suckage [...]]]></description>
			<content:encoded><![CDATA[<p>The way things are these days, you&#8217;d think that I, like I would imagine many other people in the world, would be thinking about money, the recession, the potential for war between countries who have been flirting with the bomb, my mother and the sale of her house, poverty in Africa, and the general suckage (is that a word?) in the world.</p>
<p>But no, I&#8217;m not thinking about those things.  What&#8217;s on my most most of the time is software development and programming.  I&#8217;m constantly thinking about what I&#8217;m good at, what I suck at, and what I need to do to get better.  Is that selfish?  Let me answer that - yes it is very selfish, but I don&#8217;t necessarily believe that selfishness is always a bad thing (part of me can relate to <a href="http://en.wikipedia.org/wiki/Ayn_Rand"> Ayn Rand&#8217;s</a> philosophy of <a href="http://en.wikipedia.org/wiki/Objectivism_(Ayn_Rand)">Rational Self-interest</a>).</p>
<p>The question though is not &#8220;is this selfish?&#8221;  Rather, the question I&#8217;m putting out there is &#8220;is this normal?&#8221;  There are enough things going on right now in my life, dealing with situations and people that I find simply unreasonable, that I&#8217;m finding it hard to identify what is &#8220;reasonable&#8221; any more, because what I see as unreasonable seems to be the norm for the majority.</p>
<p>So is it wrong to think about my career and personal development during times of stress?   I feel it to be instinctive to focus on your strengths during times of uncertainty, but what do others out there think?  Do you feel that in times of stress, you should cut away from what you&#8217;re used to and try something new, or go on vacation?  Or do you believe that it&#8217;s the perfect time to share with others, give back to your community or family and try to increase your karma (if you believe in such things)?  These courses of action are not mutually exclusive, but it helps to identify what needs focus if they&#8217;re not jumbled together.</p>
<p>If this post seems a little incoherent, it&#8217;s 1am, and my eye-lids have been drooping constantly since I started typing.<br />
Have a good night all :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jbldata.com/?feed=rss2&amp;p=84</wfw:commentRss>
		</item>
		<item>
		<title>Converting Freemind Mind-maps Directly to Perl Hash Trees</title>
		<link>http://www.jbldata.com/?p=83</link>
		<comments>http://www.jbldata.com/?p=83#comments</comments>
		<pubDate>Sat, 30 May 2009 01:48:45 +0000</pubDate>
		<dc:creator>J. Bobby Lopez</dc:creator>
		
		<category><![CDATA[Computing]]></category>

		<category><![CDATA[Freemind]]></category>

		<category><![CDATA[Hash Trees]]></category>

		<category><![CDATA[Perl]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://jbldata.com/?p=83</guid>
		<description><![CDATA[I use Freemind quite a bit for brainstorming and as an outliner.  One of it&#8217;s better uses for me is to hammer out an idea for a perl hash tree very quickly.  The problem is that once I have the hash tree exactly the way I want it in Freemind, I have to manually re-create [...]]]></description>
			<content:encoded><![CDATA[<p>I use Freemind quite a bit for brainstorming and as an outliner.  One of it&#8217;s better uses for me is to hammer out an idea for a perl hash tree very quickly.  The problem is that once I have the hash tree exactly the way I want it in Freemind, I have to manually re-create the hash tree in perl source, with all the required formatting.</p>
<p>This is no longer the case, as I&#8217;ve written a quick and dirty &#8220;freemind2perl&#8221; script (below) which takes a Freemind mind-map file, and converts it into a perl hash tree automagically.  I&#8217;m not sure if it will work with all versions of Freemind, but mind-map files (.mm files) are XML based, and the format really hasn&#8217;t changed across versions.</p>
<p>Just save the script below as &#8216;freemind2perl.pl&#8217; and run it with &#8216;perl freemind2perl.pl yourmap.mm&#8217;.  It requires the &#8220;XML::Simple&#8221; perl module to be installed.</p>
<p>Here&#8217;s the script (<a href="http://jbldata.com/files/freemind2perl.pl">click here to download</a>):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
</pre></td><td class="code"><pre class="perl"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl -w</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> XML<span style="color: #339933;">::</span><span style="color: #006600;">Simple</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> Data<span style="color: #339933;">::</span><span style="color: #006600;">Dumper</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$xml</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> XML<span style="color: #339933;">::</span><span style="color: #006600;">Simple</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$mm_file</span> <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$data</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$xml</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">XMLin</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;$mm_file&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$clean</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> prep_clean
<span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$data</span> <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$clean</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$key</span> <span style="color: #009900;">&#40;</span> <span style="color: #000066;">keys</span> <span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span> <span style="color: #0000ff;">$data</span> <span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">$key</span> eq <span style="color: #ff0000;">&quot;TEXT&quot;</span> <span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #0000ff;">$clean</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$key</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">$key</span> eq <span style="color: #ff0000;">&quot;node&quot;</span> <span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000066;">ref</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$key</span><span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span> eq <span style="color: #ff0000;">&quot;HASH&quot;</span> <span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                <span style="color: #0000ff;">$clean</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'TEXT'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> prep_clean<span style="color: #009900;">&#40;</span>\<span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$key</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
&nbsp;
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000066;">ref</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$key</span><span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span> eq <span style="color: #ff0000;">&quot;ARRAY&quot;</span> <span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$sub_hashes</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">$i</span> <span style="color: #339933;">&lt;=</span> $<span style="color: #666666; font-style: italic;">#{$data-&gt;{$key}}; $i++)</span>
                <span style="color: #009900;">&#123;</span>
                    <span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$sub_hash</span> <span style="color: #009900;">&#40;</span> \<span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span> <span style="color: #0000ff;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$key</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">$i</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span>
                    <span style="color: #009900;">&#123;</span>
                        <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$subout</span> <span style="color: #339933;">=</span> prep_clean<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">$sub_hash</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                        <span style="color: #0000ff;">$sub_hashes</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span> <span style="color: #0000ff;">%$sub_hashes</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">%$subout</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
                    <span style="color: #009900;">&#125;</span>
                <span style="color: #009900;">&#125;</span>
                <span style="color: #0000ff;">$clean</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'TEXT'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$sub_hashes</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000066;">return</span> <span style="color: #0000ff;">$clean</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">$clean</span> <span style="color: #339933;">=</span> prep_clean<span style="color: #009900;">&#40;</span> \<span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span> <span style="color: #0000ff;">$data</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'node'</span><span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066;">print</span> Dumper<span style="color: #009900;">&#40;</span>\<span style="color: #0000ff;">$clean</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066;">exit</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.jbldata.com/?feed=rss2&amp;p=83</wfw:commentRss>
		</item>
		<item>
		<title>VMware vSphere 4 Announced!</title>
		<link>http://www.jbldata.com/?p=82</link>
		<comments>http://www.jbldata.com/?p=82#comments</comments>
		<pubDate>Wed, 22 Apr 2009 04:49:54 +0000</pubDate>
		<dc:creator>J. Bobby Lopez</dc:creator>
		
		<category><![CDATA[Computing]]></category>

		<category><![CDATA[Cloud Computing]]></category>

		<category><![CDATA[Disaster Avoidance]]></category>

		<category><![CDATA[Disaster Recovery]]></category>

		<category><![CDATA[Virtualization]]></category>

		<category><![CDATA[VMware]]></category>

		<category><![CDATA[vSphere]]></category>

		<guid isPermaLink="false">http://jbldata.com/?p=82</guid>
		<description><![CDATA[Working at VMware, I (virtually) had a front-row seat to the VMware vSphere simulcast on April 21.  It was an exciting event - everyone was anxious to hear what our industry partners (Cisco, Intel, Dell, etc) had to say about the new product.  The overall excitement and energy shown by these companies was impressive.
I think [...]]]></description>
			<content:encoded><![CDATA[<p>Working at VMware, I (virtually) had a front-row seat to the <a href="http://www.vmware.com/company/mediaresource/vsphere-press-kit.html">VMware vSphere</a> simulcast on April 21.  It was an exciting event - everyone was anxious to hear what our industry partners (Cisco, Intel, Dell, etc) had to say about the new product.  The overall excitement and energy shown by these companies was impressive.</p>
<p>I think what I liked most was Steve Herrod&#8217;s &#8220;Blackberry Demo&#8221; which showed how resilient the platform was even to extreme hardware failure.  I don&#8217;t think many people truly understand what this technology means for disaster recovery and disaster avoidance - it essentially eliminates the risk.  I know it&#8217;s a big claim, but if your company does it&#8217;s due diligence, and has an appropriate and active back-up strategy for all critical systems; if you have proper 2&#215;2 redundancy of systems in place to make sure that there are no single points of failure, you can essentially have 99.999% uptime at a fraction of the cost of doing all of this on physical systems.  Small businesses can now experience the stability of software and services which were previously enjoyed only by large corporations which could afford it.  And these same small businesses now have a new arsenal of tools which can help them compete against their larger, more established counterparts.  It is an exciting time in the industry.</p>
<p>If anyone has an interest in virtualization, but doesn&#8217;t know where to start, the best thing to do would be to download a copy of <a href="http://www.vmware.com/products/server/">VMware Server</a>, or <a href="http://www.vmware.com/products/esxi/">VMware ESXi</a>.  Both are free to download and use, and include the latest features and capabilities built into the enterprise (ESX/vSphere) hypervisors.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jbldata.com/?feed=rss2&amp;p=82</wfw:commentRss>
		</item>
		<item>
		<title>Double Shot of Tequila</title>
		<link>http://www.jbldata.com/?p=81</link>
		<comments>http://www.jbldata.com/?p=81#comments</comments>
		<pubDate>Sun, 19 Apr 2009 03:51:33 +0000</pubDate>
		<dc:creator>J. Bobby Lopez</dc:creator>
		
		<category><![CDATA[Computing]]></category>

		<category><![CDATA[Getting Organized]]></category>

		<category><![CDATA[Personal]]></category>

		<category><![CDATA[Projects]]></category>

		<category><![CDATA[Accomplishments and Frustrations]]></category>

		<category><![CDATA[Computers]]></category>

		<category><![CDATA[Hardware Problems]]></category>

		<category><![CDATA[Tequila]]></category>

		<guid isPermaLink="false">http://jbldata.com/?p=81</guid>
		<description><![CDATA[I woke up early this morning with a mission on my mind, to finally organize my server rack the way I&#8217;ve always been meaning to, but for some reason (*cough*laziness*cough*) , I never got around to it.  I had recently bought some new hardware to re-build a system which I thought was dead, but which [...]]]></description>
			<content:encoded><![CDATA[<p>I woke up early this morning with a mission on my mind, to finally organize my server rack the way I&#8217;ve always been meaning to, but for some reason (*cough*laziness*cough*) , I never got around to it.  I had recently bought some new hardware to re-build a system which I thought was dead, but which turned out not to be.  I didn&#8217;t really feel like returning the hardware, because this was the chance to build an up-to-date server to migrate all my VMs over to, which is something else I&#8217;ve been meaning to do for quite some time.</p>
<p>In any case, I finally got around to re-organizing my server rack today, and I&#8217;m proud of how it turned out.  With that accomplishment in hand, I decided to install our living room air conditioner (starting to get a tad warm, especially for computer systems).  I headed out to Home Depot and purchased some wire mesh, or &#8220;screen&#8221; as one of their reps called it.  Last year we found that we had a lot of mosquitoes and small flies coming in through the air conditioner.  Considering it was a fairly inexpensive one, I figured that I got what I paid for.  I decided to turn my $100 air conditioner into a $300 air conditioner, but adding on some custom filters in order to block any debris which it may collect through it&#8217;s many open vents.  The roll of mesh cost around $15, and was easy enough to cut and shape.  The end result turned out better than I had expected, and so this year I expect we will have a lot fewer bugs getting in.</p>
<p>And so the air conditioner was installed - this too had been completed.  I was on a roll and feeling good.  I decided then to try my hand at building my new server from scratch.</p>
<p>I had an old rack-mount server case<sup>1</sup> which I gutted, and started building the new server in there.  The new components included a new motherboard - the <a href="http://www.tigerdirect.ca/applications/SearchTools/item-details.asp?EdpNo=4360042&amp;CatId=2320">Asus M3N78-VM</a>, an <a href="http://www.tigerdirect.ca/applications/SearchTools/item-details.asp?EdpNo=3776582">AMD Athlon 1640</a> CPU, and 4GB of <a href="http://www.tigerdirect.ca/applications/SearchTools/item-details.asp?EdpNo=3404049&amp;CatId=3412">OCZ Dual Channel SLI Ready</a> RAM.  The Micro-ATX form factor of the motherboard made it super easy to fit into the monster rack-mount case.  With a few simple connections, I was ready to test boot-up, and things should have been smooth from there.  It wasn&#8217;t.</p>
<p>The system wouldn&#8217;t power on - at all.  My first mistake was that I plugged the front panel connectors into the wrong pins on the motherboard.  No sweat, figured that out, and moved forward.  Switched it on again, saw the motherboards &#8220;SB Power&#8221; LED come on (which was a good sign), fans started spinning, thought I was getting close, but nothing.  I couldn&#8217;t get it to POST anything, no errors, warnings, or beeps at all.  I decided to rip out all the peripherals and go bare-bones in order to isolate the problem.  Still nothing!!  Removed RAM, nothing.. Removed the CPU, nothing.  So at this point, aside from being frustrated, I&#8217;ve been able to narrow it down to one of two things, it&#8217;s either the motherboard, or the power supply.  The power supply should be fine, because it worked with the old hardware that I had in the case originally.  However, there is a chance that the power supply isn&#8217;t compatible with this motherboard in some way.</p>
<p>If it&#8217;s not the power supply, then I&#8217;ve received a motherboard that was DOA.  I&#8217;m hoping this is the case!  I&#8217;d hate to take this thing back to Tiger Direct tomorrow, have them test it out, and find out that it&#8217;s just fine.  That would be both embarrassing and frustrating.</p>
<p>Anyway, after all these triumphs and frustrations, I decided to finish off the night with a double shot of Tequila, and damn did it go down smooth :)</p>
<p>If this blog post seems at all incoherent, it probably has to do with the fact that its late, and I&#8217;m tired.  Oh, and maybe just a little to do with that double shot of Tequila.</p>
<ol class="footnotes"><li id="footnote_0_81" class="footnote">solid steel, heavy beast</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.jbldata.com/?feed=rss2&amp;p=81</wfw:commentRss>
		</item>
	</channel>
</rss>
