Working For a Client – Building a Computer System

At one point in time, those people with a rough to well formed knowledge of a computer have been asked to help out a family member or friend with an ‘silicon’ based issue. It is usually a case of having clicked on a suspect link or open a attachment from a phishing email and more often than not there is either a quick fix or no fix(other than a clean OS install). Sometimes though, very occasionally, you might get asked to setup an entire home computer system.

This is what I intend on being a series of posts, not so much on the nitty gritties of setting up individual components of a system, but creating the entire workable system. At the conclusion of the series I will be releasing my backup program written for the system in a form that everyone can use.

A point that should be made is that this is the first time I have done this is at a non personal level. The resources that I have used range from manuals to forums and wiki’s to websites and is by no means a complete body of knowledge, and it should never be expected to be complete. The point is that what I have done is not necessarily the quickest, most efficient way of doing things (although it might be). Hopefully if nothing else it leads to a thorough discussion and a greater understanding if computer systems as a whole.

Project Outline

This project is centered around a small photography hobby as well as general data storage. There where a number of considerations when taking into account the clients needs.

  1. How much data storage would be needed in the long and short term.
  2. How often would files need to be moved around and accessed
  3. What peripherals would be used now and in the future and what would the level of difficulty be to add them at creation date or later.
  4. What would the future needs of the client be in 1 year, 5 years, 10 years time

Concern 1

The first concern is how much data storage is needed. This usually isn’t the first question I would ask when discussing the needs of a client, however, I soon found that depending on the size of the system the physical needs vary greatly. If only a small volume of storage is needed then a centralized server may not be needed. If a large system is needed for working with large files then working over a network is preferable to a adding a USB HDD to a pre-existing computer.

The client is a hobby photographer and works with often large photo’s (>20 Mb) and in large collections. They need to be able to have fast access to the images as well know that they can not lose any data by accident. I calculated from the information that I was able to gather, that a file space of approximately 4Tb (Terabytes) would be sufficient.

Concern 2

The second concern, following directly from the first, is how often will the files need to be accessed and used. This is relatively straight forward, In this case, the files need to be both backed up and stored on a local server and will be accessed many times a day. This helps us determine the way that we will arrange the HDD arrays and define the backup scripts.

Concern 3

The third concern is what peripherals will be needed now and in the future and hard difficult they will be to setup. The first and foremost is the camera’s themselves, then any portable devices such as tablet PC’s and smart phones. There is also guest computers for collaborative work and visitors, A potential Home theater PC and lastly printers.

Most of these are relatively straight forward. Most just require the setup and regular rotation of a password, The camera’s come with software and The media based computer can be built on a UPnP system. The only difficult setup would be the network computers.

Concern 4

The forth, final and most important concern is, what are the FUTURE needs. This is a difficult question, and one that i was not able to answer due to a lack of foresight of the technology industry. Who knows what level of technology will be accessible in 1-5 years time (at the time of writing only ADSL internet at 1500 kbps is accessible and afford-ability of wireless devices is very low).


This now leaves us at the starting point in our build. We have a general overview of the needs of our client, and roughly an outline of the types of services that will be integrated.

In the next part of the series, I will be going through the basis of the network topology and the hardware that was purchased prior to and during the build.

If there is any questions or comments please leave a note, I would love to start some discussion on this topic as it seems to becoming more and more requested by the community.

Installing Ruby RVM on Ubuntu and Fedora

Installing ruby on Linux is easy, just run sudo apt-get install ruby or yum install ruby. However, version control can be difficult to manage. That is, scripts that run on a version on your computer may not run as well on another. So wouldn’t it be great if you could have 2 or more versions or the ruby interpreter on your computer.

To do this we will use the RVM – Ruby Version Manager. This is a great program, Allowing you to have complete environments for running ruby. This includes the interpreter and gems. And besides the few intricacies of setting it up, It is relatively easy to do.

My instructions are fairly similar to the official RVM instructions. You can find them at and more about RVM at there index page.

OK. Lets go..

Firstly make sure that you have a version ruby installed and curl for downloading the script (most distributions come standard with this, although minimal setups will not.

sudo apt-get install ruby curl

yum install ruby curl

Now make sure that you are logged in as the user that you want to install ruby for. This may be a no brainier however, if you have more than one user you may wish to install ruby for everyone or for a specific person. I would very much suggest NOT install RVM for everybody, because different users may choose to run different ruby interpreters which may cause problems latter on down the track.

Time to get dirty with the command line.

Open up a terminal session and cd to your home directory. The first thing is to download the install script and run it in bash

bash < <(curl -s

Once the script has run issue the following command to load RVM every time you login.

echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile

Now you need to close all your open terminal windows and then launch another. When the new one is open execute the following.

source .bash_profile

Now, to test that we have done all the previous correctly you need to use the following command and compare the results.

type rvm | head -l

The should output 'rvm is a function'

Thats it. Ruby Version Manager has been installed. Unfortunately, just having it installed is not much good, we need to look at gemsets and ruby versions, but that is for another post.

%d bloggers like this: